Form types
- Lead capture: email + optional fields. Auto-creates a contact on submit and applies configured tags.
- Feedback: text + rating. Stored as form submissions; no contact created unless you tick "also create contact".
- Custom: 12 field types — text, email, number, select, radio, checkbox, multi-select, textarea, date, url, file (S3 upload), hidden.
Where to put it
- Hosted: share
/f/<slug>— a clean public page with your brand styling. - Inline embed: paste an iframe snippet into your site.
- JS snippet: a
<script>tag that injects the form inline (no iframe). Better for SEO + design fidelity. - API:
POST /api/public/forms/:slug/submit— for custom UIs or backend submission.
What happens on submit
- Submission saved to the form's
form_submissionstable. - If create contact is enabled: contact upserted by email with the form's configured tags.
- If welcome email is wired: a transactional template fires.
- If sequence trigger tag matches: contact auto-enrolls in the corresponding sequence.
Spam protection
- Honeypot field on every form (zero JS).
- Rate limit: 30 submissions/min per IP per form.
- Optional reCAPTCHA v3 (drop your site key in form settings).
Submission inbox
Every form has an inbox at
/forms/:formId/submissions. Filter, search, export. Useful even for non-marketing forms (feedback collection, beta signups, etc.).