Forms

Lead capture, feedback, and custom forms. Hosted at /f/<slug>, embeddable, or via API.

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_submissions table.
  • 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.).