Forms
Collect signups, their details and their email preferences in one place. A published form creates or updates a contact; that contact can then join an audience or start a workflow.
For example, a newsletter form can collect a name and email, add a newsletter-signup tag, and subscribe people to your product updates when they opt in. Your welcome workflow responds to the resulting contact change.
The path is form submission → contact saved → matching audience or workflow. With double opt-in, an opted-in submission waits for confirmation before the contact is saved. Follow Create a signup form for a first setup.
Choose what it collects
Open Forms → Create form. In the Builder, choose a Contact Schema, then add the attributes you want to collect. Mark essential fields Required. Changing the schema removes custom fields that do not exist in the new one.
Email is always required. Collect either full name or first and last name, not both. A field's type and validation come from its attribute. Edit that attribute to change what it accepts.
Set a title, optional message and Submit Button Label under Form Content. The adjacent preview lets you switch between the form, teaser and success screen before publishing.
What a submission changes
The form accepts only its configured writable fields. Unknown fields are ignored; evaluated attributes, whether On demand or Scheduled, cannot be submitted. Required values are validated against the contact schema.
Forms match email-only contacts within the selected schema. A contact identified by a product user ID can exist at the same address; sharing an email does not automatically merge those identities. See contact identity.
The form adds its tags and preserves existing ones. When optional consent is declined, a new contact remains unsubscribed and an existing contact keeps their prior subscriptions and topics. Declining is not an unsubscribe action.
Configured AI auto-fill can use credits. The contact write can trigger workflows and outgoing webhooks, so test the complete signup before sharing the form widely.
Ask for marketing consent
Choose one Email Marketing Consent option:
- On form submission: submitting subscribes the person. Explain that subscription in your form copy.
- On form submission if the box is checked: subscribe only when the visitor ticks the checkbox. Set its Consent Checkbox Label.
- Don't collect marketing consent: collect the record without adding an email subscription.
Communication Topics adds your selected public topics only when the visitor opts in. Visitors do not select these topics themselves, so describe what they will receive. Consent Disclaimer adds a notice below the button. Recorded consent appears in the contact's audit trail.
Confirm the address before subscribing
Turn on Enable Double Opt-In to require a confirmation link for opted-in submissions:
- The submitted details wait for confirmation.
- maxclicks sends a confirmation email.
- The person opens its single-use link within 24 hours. The contact is saved and the confirmed consent is recorded.
The confirmation uses a maxclicks sending address and works before you verify your domain. A welcome email or workflow sent from your workspace still needs a verified domain.
Double opt-in uses fixed Please, check your email and Subscription confirmed screens. Custom thank-you content and redirects do not apply.
If a visitor leaves an optional consent checkbox unchecked, no confirmation email is sent and their details are saved immediately. The hosted form still displays its check-email screen in this case. Test both consent choices so you understand the experience.
Confirmation emails are limited to two per address per form per hour, and 200 per form per hour.
Choose how it appears
Display Mode offers an Inline form inside your page or a Popup form over it.
For a popup, configure:
- Teaser: the invitation to open the form, shown before opening, after closing, both or never.
- Popup Triggers: delay, exit intent or scroll percentage, with a frequency of always, once, once per session or once per day.
- Close Behavior: the close button, overlay click and Escape key.
Choose a floating position or a centered overlay, then its background color and opacity. Image places artwork above, beside or behind the form.
Popup timing and frequency
Choose triggers for when the invitation appears. A positive delay waits that many seconds. Exit intent responds when the mouse leaves the top of the page; do not rely on it as a mobile gesture. Scroll opens the invitation when the configured percentage is reached. Multiple triggers are alternatives: the first qualifying one opens the invitation, rather than waiting for all of them.
When a teaser is configured to appear first, a trigger displays the teaser. The visitor then opens the form from it. Show first and if the customer closes the form brings the teaser back after closing; Show if the customer closes the form without subscribing starts with the form and shows a teaser afterwards. Disabling the close button is separate from disabling Escape and overlay-click dismissal.
| Frequency | What it measures |
|---|---|
| Always | Each eligible page display can open the invitation |
| Once | A previous display recorded in the browser prevents another |
| Once per session | A display recorded for the browser session prevents another |
| Once per day | At least 24 hours must pass since the stored display time |
Frequency is browser-based, not a customer identity rule. Another browser or cleared storage can show the popup again. The current popup display history is shared across forms rendered on the same origin, so testing a second form can encounter a frequency limit from an earlier form. The builder preview bypasses frequency; verify the published embed in a fresh browser session when testing timing.
Say thanks, or send them somewhere
With double opt-in off, After Submission: Thank You Page lets you show a title, message and optional coupon code, or redirect to a URL. With double opt-in on, its fixed confirmation screens take over.
Keep out the bots
Every form has built-in rate limiting. Form Protection adds Cloudflare Turnstile, Google reCAPTCHA v3 or hCaptcha.
Save the provider keys in Settings → Forms Protection, then select it in the form. Configuring keys requires an Admin with editing access. Selecting a provider without valid keys prevents submissions.
A custom form must integrate the configured provider and submit a valid captchaToken. The hosted form and embed handle this for you. Keep the provider's secret key on the server.
Brand it
Under Branding, choose your brand, brand kit, palette and style pack. Check the preview after choosing fields and consent text.
Publish and share it
Click Publish. Until publication, the hosted link, embed and submission endpoint return 404 and accept no submissions.
Share offers three options:
- Hosted link: share a ready-to-use page.
- Embed it on your website: copy both the iframe and generated script. A popup needs the script to open and respond to scroll or exit intent.
- Build your own form against the API: use the generated example with your configured field names.
Edit unpublishes the form and returns to the Builder. The live form is unavailable until you publish again; plan changes around that interruption.
See how it is doing
Analytics shows views, submissions, conversion rate and a daily trend. Successful repeat submissions count too, so the submission total is not a count of unique new contacts or new marketing subscribers. Opted-in submissions awaiting double opt-in are counted after confirmation.
Conversion Rate divides submissions by unique views when that count is available, otherwise by total views. It rounds to a whole percentage and caps the displayed result at 100%. For example, 12 submissions and 100 unique views show 12%, even if some submissions update existing contacts. Confirm subscription status on the contact before treating submissions as new subscribers.
The trend compares the latest seven days of recorded submissions with the preceding seven. It needs at least 14 daily entries and a nonzero previous total. A missing comparison is not evidence of zero growth. The viewed-only chart uses total views, so its denominator can differ from the conversion-rate card.
Test a new address, an existing contact, and both consent choices. Inspect the saved fields, tags and subscriptions on each contact. The builder preview alone does not test submission or downstream automation.
Diagnose a form that does not complete
| What you see | What to inspect |
|---|---|
| The hosted form returns 404 | Confirm the form is published; clicking Edit takes it offline until the next Publish |
| A popup does not appear | Check the generated embed script, triggers, teaser mode and browser frequency history |
| A submission rejects a field | Check required fields and the selected schema's stored attribute definitions |
| CAPTCHA blocks the submission | Check the selected provider and its saved credentials; a custom form must supply a valid token |
| The visitor cannot find their contact | Check the selected schema, email-only identity matching and pending double opt-in |
| A contact exists but no welcome email arrives | Inspect consent, sender verification and the actual workflow trigger/run |
Test on the site where you deploy the form, using the exact embed from Share. A builder preview establishes appearance; a completed signup establishes the saved contact and any downstream work.
Start a workflow from a submission
Use Record Created or Updated on the form's contact schema. There is no separate form-submission trigger.
For the newsletter example, narrow the condition to the form's newsletter-signup tag and the required subscription. An unfiltered trigger responds to other contact updates too. A contact already matching the condition may not start another run on a repeat submission; this is not a trigger for every form submission.
With double opt-in, an opted-in contact is written after confirmation. Inspect the resulting workflow run before relying on the welcome email. See workflows.