Framer is strong at layout and motion. Framer form submissions still need somewhere to go: email is the default path on most tools, and a custom backend for one lead form is more ops than the feature is worth. This guide shows how to add a working contact form in Framer and get replies on WhatsApp when you need chat-speed follow-up, using FormsReach as the form API (plugin or HTML embed).
No server of your own. No Zapier required for basic email or WhatsApp delivery.
What you’ll need
- A Framer project you can publish
- The FormsReach Framer plugin (recommended) or a Code / Embed component for HTML
- A free FormsReach API key
Optional: WhatsApp on Pro or Agency after email works.
Framer form options today
| Approach | Trade-off |
|---|---|
| Native / built-in form tools only | Often email-centric; limited multi-channel delivery |
| Custom code + your API | You own auth, spam, and uptime |
| Form API (plugin or HTML) | Browser posts to a managed endpoint; site stays static |
FormsReach is the third path: design in Framer, POST to https://api.formsreach.com/submit, get spam filtering and channel delivery outside Framer. For the product story on chat delivery, see send form submissions to WhatsApp.
Step 1: Create a form and API key
- Open app.formsreach.com.
- Create a form for this Framer site.
- Copy the public form API key.
Free includes 500 credits/month for submissions, email notifications, free webhooks, and workflow rules. Keep the key handy for the plugin or embed.
Step 2: Connect with the FormsReach Framer plugin (recommended)
Prefer the plugin so the canvas form stays linked to your FormsReach form:
- In Framer, open the FormsReach plugin from the plugin panel.
- Sign in if prompted, then create or select a form.
- Paste the API key into the plugin key field and apply it.
- Place or confirm the form on the canvas. Style wrappers and frames in Framer as usual.
- Ensure every field you care about has a clear name (
name,email,messageare the default notification set).
Full screenshot walkthrough: Framer integration.
Step 3: HTML embed alternative
If you skip the plugin, paste a standard form into a Code or Embed component. This is the same FormsReach HTML snippet used on static sites:
<form action="https://api.formsreach.com/submit" method="POST">
<input type="hidden" name="api_key" value="YOUR_API_KEY" />
<input type="text" name="name" required />
<input type="email" name="email" required />
<textarea name="message" required></textarea>
<button type="submit">Submit Form</button>
</form>
Replace YOUR_API_KEY with the dashboard key. Method must stay POST. Style the wrapper in Framer; do not rename the hidden field.
Same pattern works outside Framer: contact form on a static website without a backend.
Step 4: Publish and allow the domain
Canvas preview origins often differ from production. Always:
- Publish the Framer site.
- Copy the live host (
yoursite.framer.websiteor your custom domain). - In FormsReach, open Allowed domains for the form and add that host.
- Submit a real test from the published URL (not only the canvas).
Without the allowlist entry, production posts can return 4xx even when the key is correct.
Step 5: Get notified (email, then WhatsApp)
Credits meter usage. A typical path charges 1 credit for an accepted submission and 1 credit for an email notification. Webhooks are 0 credits on every plan.
WhatsApp via the official Meta WhatsApp Business API is available on Pro and Agency. Verify a phone number with a one-time OTP in the dashboard, enable the channel, and leave the Framer form as-is. Free and Starter stay on email, webhooks, and workflow rules.
For Webflow’s Designer form action path (sibling no-code setup), see Webflow form submissions on WhatsApp.
Step 6: Smoke-test before you share the site
- Submit with a real email you control.
- Confirm the row in the FormsReach dashboard.
- Confirm email (and WhatsApp if enabled).
- Try empty required fields and obvious spam; honeypot and server-side filters should drop junk without a CAPTCHA on the page.
- Confirm a thank-you redirect if you configured one in FormsReach.
Troubleshooting
Plugin key not accepted
Re-copy the public form API key from FormsReach and paste it again. Confirm you are on the form you intend to use.
Domain not allowed
Add the exact published host and any custom domain under Allowed domains, then retry from the live site.
Works on canvas, fails when live
Preview and production origins differ. Always allow the published domain and retest after publish.
Notification missing fields
Field labels are not payload keys. Set input name attributes (name, email, message or your own consistent names).
Want JS submit without full page navigation
Use @formsreach/js with data-formsreach on an embed, or a React export with @formsreach/react: React contact form without a backend.
A Framer contact form without a custom backend
Framer form submissions do not need your own API routes. Point the form at FormsReach (plugin or HTML), allow the published domain, and meter delivery with monthly credits: Free with 500 credits for email and webhooks, WhatsApp on Pro and Agency via Meta’s Business API, spam filtering included. That is enough for most marketing and lead sites without standing up a server.
