Forms
A form brings a new customer relationship into your workspace. Choose the information to collect, explain the communication they can subscribe to, and connect each field to your contact model. Submissions create or update records for the audiences and journeys that follow.
Press Create form on the Forms page and you land on the Builder tab, which is one long column of settings with a live preview beside it. The preview has a Viewing switch between the form, the teaser and the success screen, none of which needs publishing to see.
Choose how it appears
Display Mode comes first: an Inline form, embedded in the page where you put it, or a Popup form that floats over the page.
Choosing a popup opens three more sections:
- Teaser: a small invitation to open the form, shown first, on close, both, or never, with its own position.
- Popup Triggers: show after a delay in seconds, on exit intent, after a scroll percentage, and how often to show at all (always, once, once per session, once per day).
- Close Behavior: whether there is a close button, and whether clicking the overlay or pressing Escape dismisses it.
A floating popup takes a position on your site (bottom left, bottom center, bottom right, middle left, middle right, and rotated variants of the middle ones). An overlay popup sits in the middle and dims the rest of the page with a color and opacity you choose.
Image adds a picture to the form, placed at the top, on the left, on the right, or behind everything as a background.
Choose what it collects
Form Content holds the title, an optional message, and the fields.
Pick a Contact Schema first. The form can only collect that schema's attributes, and changing it later drops any custom fields that do not exist in the new schema. Then add fields one at a time and toggle Required on the ones you insist on.
Every form has to collect Email, and it has to be required, because that is what ties a submission to a contact. Collect either the full name field or the first and last name fields, not both.
There is no separate field editor. What a field accepts and how it is validated comes from the attribute behind it, so to change what a field will take, change the attribute.
Submit Button Label sets the wording on the button.
What a submission changes
The published form accepts only its configured writable fields and validates required values against the contact schema. Extra fields in a custom request are ignored rather than granting permission to update arbitrary customer data. Computed attributes are not form inputs.
Submitting can create a contact or update a matching contact. Existing tags are preserved and the form's tags are added. If the visitor declines the optional consent checkbox, a new contact stays unsubscribed; an existing contact keeps their prior subscriptions and topics. Declining this form is not an unsubscribe action.
Configured auto-fill may run for missing data and use credits. A contact write can also start matching workflows and outgoing webhooks. Test the complete journey with a real submission before putting the form in front of a large audience.
Ask for marketing consent
Email Marketing Consent decides whether submitting the form subscribes the person to marketing email:
| Option | What it does |
|---|---|
| On form submission | Submitting the form opts them in. |
| On form submission if the box is checked | Shows a checkbox they have to tick to opt in. |
| Don't collect marketing consent | Stores the contact without subscribing them to email. |
With the checkbox option you also set the Consent Checkbox Label, the wording beside it. Consent Disclaimer adds a short notice under the submit button either way.
Communication Topics adds the topics you selected when the visitor opts in to marketing; it does not grant topics when consent is declined. Tags adds the form's tags to the contact's existing tags. Only public topics can be selected in the builder. The visitor does not pick these values, so describe the subscription clearly in the form copy.
Every consent a form records is written to that contact's audit trail, which is what you fall back on if anyone ever asks you to prove someone opted in.
Confirm the address before subscribing
Enable Double Opt-In holds an opted-in submission until the person clicks a confirmation link. It applies when the submission actually requests a marketing subscription. For that submission:
- maxclicks holds their details rather than creating the contact, and notes a pending verification against the address.
- A confirmation email goes to the address they typed.
- When they open the link, the contact is saved and the confirmed consent is recorded. The link is single-use and expires after 24 hours.
That confirmation email goes from a maxclicks address rather than your own domain, so it is the one send that works before a domain is verified. Anything that follows from the submission, a welcome email or a workflow send, still waits on verification.
Your thank-you page never runs on a double opt-in form, at either end. Submitting shows a fixed Please, check your email screen, and the link in the email takes the visitor to a maxclicks page that reads Subscription confirmed. The thank-you title, message and coupon code, and the redirect, apply only when double opt-in is off.
A visitor who submits without opting in, on a form that asks for consent with a checkbox, skips the confirmation email entirely and is stored right away, with no email subscription if they are new, and with whatever consent they already had if they are not. They still see the Please, check your email screen, because the form shows it on every submission once double opt-in is on.
Confirmation emails are throttled: one address can receive at most two per form per hour, and a single form can send at most 200 an hour across everyone. This exists so nobody can use your form to bomb a stranger's inbox, and there is nothing to configure.
Say thanks, or send them somewhere
After Submission: Thank You Page offers two behaviors. Show message displays a thank-you page built from a title, an optional message, and an optional coupon code as an incentive. Redirect to another page sends them to a URL you provide instead.
Both are ignored while Enable Double Opt-In is on, which shows its own fixed screens instead.
Keep out the bots
Form Protection is where you choose a CAPTCHA: Cloudflare Turnstile, Google reCAPTCHA v3, or hCaptcha. Built-in rate limiting protects every form whether or not you pick one, so this is for when a form is being hit hard enough that you want a real challenge in front of it.
The provider keys live in Settings, Forms Protection, once per workspace and provider. Forms select which configured provider to use. That settings page is shown to admins; saving provider credentials also requires editing permission, so use an Admin with both permissions.
Selecting a provider you have not saved keys for stops the form dead: it can no longer accept any submission. Add the keys first, or leave protection off.
Brand it
Branding picks the brand, brand kit, color palette and style pack the form is drawn with, so it looks like the rest of your emails without you restyling anything.
Publish and share it
Press Publish in the header. Until you do, the form's link, embed and endpoint all answer with a 404 and turn submissions away.
Publishing swaps the Builder tab for Overview and Share. The Share tab gives you three ways to put the form in front of people:
- The hosted link, ready to copy or open. Nothing to install.
- Embed it on your website: an iframe plus a small script, generated for the form you actually built. Copy both. For a popup the script is not optional, because without it the popup never opens and its exit-intent and scroll triggers never see the page.
- Build your own form against the API: your own HTML with a submit call, for when you want to design the form yourself. maxclicks writes the example out with your real field names in it.
To edit a published form, press Edit in the header. That unpublishes it and takes you back to the Builder. The live link, embed and submission endpoint become unavailable until you publish again. Plan that interruption before editing a form on a busy page.
A custom form must integrate the configured CAPTCHA provider and include its valid captchaToken in the submission. The hosted form and embed handle that integration for you. A bare JSON POST without the required token is rejected; do not place the provider's secret key in browser code.
See how it is doing
The Analytics tab shows views, total submissions, and the conversion rate between them, plus a funnel showing where you are losing people. A submission waiting on a double opt-in confirmation is only counted once the visitor confirms, so the number reflects people you actually reached rather than attempts.
Start a workflow from a submission
There is no form-specific trigger. A completed submission writes a contact, so begin with Record Created or Updated on the form's contact schema and deliberately narrow the condition. With double opt-in, the write happens after confirmation. A condition based on a form tag can identify customers entering that tagged group, but repeat submissions by someone already matching do not necessarily start another run. An unfiltered trigger responds to ordinary updates too. See workflows.
Related
- Contacts: identity, consent, and suppressions.
- Attributes: what each field will accept.
- API reference: submitting a form from your own code.