Skip to main content
Every form source takes submissions two ways: a JavaScript snippet that watches the forms already on your site, or a direct HTTP endpoint you post to yourself.
Where
Web FormsInstall
Your role needs
Read access to Web form capture endpoint read-web-forms. Admin, Member and Viewer have it by default.
To create
create-web-forms on top of the permission above.
You can reach this same screen from three places: the Install button on a form source’s own page, the Install shortcut on its card in the Web Forms list, and the last step of creating a source. On that last step, Go to form source closes the wizard and opens the source’s own page, where the Install button brings this screen back.

The two methods

Whichever method you are setting up, the install screen keeps watching while it is open. Its footer names the domain it is listening on, and flips to First form detected! or First submission received! for the first form or submission that arrives while you are looking at it.

JavaScript snippet

1

Copy the snippet

Use the copy button on the code block to copy the tag to your clipboard.
2

Paste it before the closing body tag

Add it just before </body> on every page that has a form.
3

Your forms are discovered automatically

The snippet detects every form on your pages and reports it. There is no per-form setup.
What happens to a form once it’s found, mapping its fields and turning tracking on, is covered on Field mapping and the submissions inbox.

Direct endpoint

Post each submission yourself, as JSON, to this source’s own endpoint. One endpoint URL covers the whole source, carrying the source’s token; form_key is what separates one form from another inside it.
A form the endpoint registers for you starts as Discovered, not Tracking, so those first submissions wait in the review inbox rather than becoming leads. Track the form once and the rest flow through.
The full wire contract, every response code, the domain check, and how a duplicate or a honeypot hit is handled, is on Web Forms: capture script and submissions endpoint.

Platform guides

Open your site’s settings in Webflow, go to the Custom code tab, and paste the snippet into the Footer code box. Save and publish: custom code only runs on the published site, and it needs a paid Webflow site plan.
From your Shopify admin, go to Online Store → Themes, choose Edit code on your live theme, and open layout/theme.liquid. Paste the snippet just before the closing body tag and save: contact and newsletter forms are picked up on their own.
Open your project’s Site settings in Framer, go to Custom Code, and paste the snippet into the End of body tag section. Publish your site.
Create a new Custom HTML tag and paste the full snippet, including the script tag. Set the trigger to All Pages, then submit and publish the container.
This one uses the direct endpoint, not the snippet. Add a Webhooks by Zapier action step to your Zap, choose the POST event, and paste the source’s endpoint URL (the Direct endpoint example above) into the URL field, with Payload Type set to json. Nest your form fields under a fields key, and include an email field.

Context fields

Every submission can carry the same four kinds of context, however it arrives: context also takes submitted_at. The snippet stamps it at the moment of submit; a direct integration can set it itself, to timestamp a submission that didn’t just happen.

Connect the forms on your website

Scan your site, map the fields, choose your settings, and reach this same install screen from the wizard’s last step.

Field mapping and the submissions inbox

Track or ignore a discovered form, map its fields, and work the submissions each method produces.

Web Forms: capture script and submissions endpoint

The endpoint’s full wire contract: every response code, the domain check, and how duplicates and honeypot hits are handled.