Forms
Waveform forms are first-party: created in conversation, rendered as part of your site's code, and collected into your dashboard. No external form service, no third-party scripts, no iframe embeds.
Creating a form
Ask for what you need:
"Add a contact form with name, email, and message."
"The cake request form needs a date picker and a budget dropdown."
Waveform generates the form component in your site's design language, wires the submission endpoint, and adds validation.
Reading submissions (Results)
Open the Forms / Results tab in your workspace to see submissions for
each form — filter by status (new / contacted / closed), update lead
state, and export CSV. Ask in chat: "any new form submissions this week?"
Spam protection
Forms ship with honeypot fields, per-IP rate limiting, and optional
Cloudflare Turnstile (when TURNSTILE_SECRET_KEY is configured). Submissions
that fail validation never reach your inbox.
Notifications & destinations
Set a notify email and optional autoresponder (subject/body) from Results → Settings. Changing the notify address sends a verification email; submissions are only emailed to a verified address (pending addresses show an Unverified badge — use Resend verification if you need a new link).
With lead routing enabled, each submission is delivered via the
leads/deliver job to email and signed webhook destinations (HMAC
X-Waveform-Signature), with retries and dead-letter visibility after
repeated failures.
Conversion tracking
Form submissions can be counted as conversion goals in analytics, and used as the success metric for A/B experiments — "which headline gets more inquiries?" is a question Waveform can answer with data.