From an empty page to a contact form collecting submissions in your inbox — in about ten minutes, without writing a line of code.
Jump straight to a step:
A JoeForm form is a contact form hosted on joeform.com. You design it in your
browser, publish it on any website with a link, an <iframe> or a WordPress
shortcode, and every message is stored in your dashboard and emailed to you. There is nothing to
install on your own server and no PHP or database to maintain.
Colors, fonts, border radius, border thickness and shadow, with a live preview that updates as you type.
Each new submission arrives in your inbox with the name, email, message and any attachments.
Let visitors attach up to 2 files (5 MB each) — CVs, invoices, photos, PDFs.
All submissions stay in your dashboard, searchable and filterable by date, with read/unread tracking.
Direct link, iframe, JS embed (auto-height) or the JoeForm WordPress plugin.
The form labels are translated automatically into the visitor's browser language.
Step 1
You can design a form before having an account — you only register when you are ready to publish it. To do it the other way around, just follow these steps:
If you used the builder on the home page, its design is carried over automatically into your first form when you finish the activation. You do not have to design it twice.
Step 2
Open Form designer in the sidebar. The left panel holds the settings, the right panel shows a Live Preview of your form that updates immediately as you change any option.
| Setting | What it does |
|---|---|
| Form name | Internal name of the form. Only you see it; visitors never do. |
| Send submissions to | The email address that receives the notifications. See step 3. |
| Background | Color of the form container. |
| Button | Color of the Send button and the attach-files button. |
| Text | Color of the labels and the text typed inside the fields. |
| Border | Color of the container border and of the field borders. |
| Input BG | Background color of the input fields and the text area. |
| Button Text | Text color of the Send button. Keep it readable against the Button color. |
| Font | Inter, Roboto, Poppins, Montserrat, Playfair Display, Oswald, JetBrains Mono or Merriweather. |
| Shape | Rounded or Square corners for the container, the fields and the buttons. |
| Border Size | Thickness of the borders, from 0 (none) to 4. |
| Box Shadow | Adds a soft drop shadow under the form. |
| Enable file upload | Adds an attach-files button. Maximum 2 files. See step 5. |
The sidebar has a dropdown that lists all your forms: pick one to edit it. Use + Create new form in the sidebar to add another one — it opens the designer for the new form straight away. Each form has its own design, its own notification address and its own submissions, so you can run a contact page, a support page and a job application form side by side.
You can only delete a form if you have more than one: JoeForm always keeps at least one form per account, so you never end up with an empty workspace.
Step 3
From now on every submission is emailed to that address with the subject New submission from your JoeForm, containing the form name, the visitor's name, their email, their message and any attached files. The visitor sees a Thank you! confirmation page.
Why the verification step?
It proves you really own the destination address, so nobody can use your form to send spam through your account, and your address cannot be typo'd.
While the address is unverified the form keeps working and keeps storing submissions in the dashboard — only the email is on hold. If you change the address later, it must be verified again. Leave the field empty if you prefer to read everything in the dashboard and skip email entirely.
Step 4
At the bottom of the designer there is an Embed Options box with four ready-to-copy snippets. They all point to the same form — pick the one that fits your site.
A standalone page with your form. Use it for a Contact menu item, a link in a confirmation email, or to send the form to someone for testing.
https://joeform.com/form.php?fid=YOUR_FORM_ID
Works in any HTML page, including WordPress, Webflow, Wix, Shopify or a Notion site.
Paste it where you want the form to appear. Adjust the height if the form looks cut off.
<iframe src="https://joeform.com/form.php?fid=YOUR_FORM_ID&embed=1"
style="height:520px;width:100%;border:none;" loading="lazy"></iframe>
Same as the iframe, but the height adjusts itself to the content, so you never have to tune it. Paste both lines together. You can place several forms on the same page.
<div id="joeform-embed" data-fid="YOUR_FORM_ID"></div> <script src="https://joeform.com/embed.js" async></script>
Optional attribute data-lang="es" on the div forces a specific language
(see step 7).
Paste the shortcode in any block, widget or the Custom HTML widget:
[joeform id="YOUR_FORM_ID"]
You can also install the JoeForm Embed plugin, which adds a
JoeForm block to the block editor. In the plugin the shortcode accepts
type="js" for auto-height and height="600" to set a fixed size:
[joeform id="YOUR_FORM_ID" type="js"]
fid= in the direct link. Copy it carefully — it is case sensitive.
Step 5
Tick Enable file upload (max 2 files) in the designer and save. An Upload file button appears on the form, the visitor can see the name of each selected file and remove it before sending.
Limits and accepted formats
Step 6
Click Submissions in the sidebar. Every message ever received is listed in a table with one row per submission — nothing is lost, even if the email could not be delivered.
Unread submissions appear highlighted in blue and with a New badge. Click the badge to mark that row as read (or back to unread) without opening it. Use Mark all as read in the header to clean the list in one go. Opening a submission marks it as read automatically.
Click any row — or View — to open the full submission: name, email, the complete message and the attached files, each one a link that opens or downloads the file. The Reply action opens your email client with the visitor's address already filled in.
Step 7
JoeForm translates the field labels (Name, Email, Message, Upload file, Send and the Thank you! message) automatically, with no extra configuration. Supported languages:
The language is detected from the page that embeds the form, then from the visitor's browser, and English is used as a fallback. To force one language, add it to the URL:
https://joeform.com/form.php?fid=YOUR_FORM_ID&lang=es
With the JS embed, set the attribute on the container instead:
<div id="joeform-embed" data-fid="YOUR_FORM_ID" data-lang="es"></div>.
Views and submissions are unlimited on every plan. The only difference is how many forms you can keep.
| Plan | Price | Forms | Includes |
|---|---|---|---|
| Trial | Free, 14 days | 3 | Everything in Basic, no credit card |
| Basic | $3/mo or $30/yr | 3 | Unlimited views and submissions, email notifications, file uploads |
| Pro | $6/mo or $60/yr | 10 | Everything in Basic, plus priority support |
| Enterprise | Custom | Unlimited | Custom designs, team management, API and integrations |
The badge next to your name in the sidebar always shows your current situation: Trial — N days left, Trial expired, Basic, Pro or Enterprise. Click it to go to the upgrade page.
You do not have to add a captcha, and visitors never have to prove they are human. Every form is protected automatically, and the protection happens behind the scenes:
In practice this means a spammer sees nothing worth attacking, while your visitors see a form with no puzzles, no checkbox and no lost input.
No. The form is hosted on JoeForm; you only paste a link, an iframe or a shortcode.
Open the designer and check the badge next to Send submissions to. If it says Pending verification, click the link we emailed you — without it no notification is sent. Also check the spam folder. The submissions are always visible in Submissions, so nothing is lost in the meantime.
The height of an iframe is fixed by its height attribute. Use the
Embed JS option instead: the height adapts itself to the form.
The three fields (Name, Email, Message) are fixed so that every form behaves consistently and stays protected. What you can customize is the whole design, the notifications and the file upload.
It is shown automatically after a valid submission, translated into the visitor's language and styled with your form's colors. Visitors never see your email address, which is what prevents spam.
Use Modify password in the sidebar. If you are locked out, use Forgot password on the login page to receive a reset code by email.
You can delete any form except your only one, with the Delete button in the designer. If you no longer want the account, contact us and we will close it.
Your submissions are private: only your account can see them, and each form is checked against its owner before showing anything. Attachments are stored with the submission and are only reachable through a signed link from your dashboard.