splitforms.com
CARRD · CONTACT FORM

Contact form for Carrd websites

Carrd's native form widget needs a Pro Standard plan AND a Mailchimp/SendGrid/Basin integration to actually email you. Skip both. Set the form Type to "Custom" and point it at the splitforms endpoint — 60 seconds, 1,000 free submissions per month.

1,000 free submissions every month.·No credit card.
contact.htmlhtml20 lines
01<!--
02 Carrd's form widget supports a custom backend URL.
03 In the form's settings:
04 - Type: Custom
05 - Method: POST
06 - Action: https://splitforms.com/api/submit
07 - Add a hidden field "access_key" = YOUR_ACCESS_KEY
08-->
09
10<!-- Or paste this Embed element into a section -->
11<form action="https://splitforms.com/api/submit" method="POST">
12 <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
13
14 <input name="name" type="text" placeholder="Name" required />
15 <input name="email" type="email" placeholder="Email" required />
16 <textarea name="message" placeholder="Message" required></textarea>
17 <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" />
18
19 <button type="submit">Submit</button>
20</form>
1,000
submissions / mo, free
14ms
median latency, edge
0
lines of backend code
17+
frameworks supported
✶ Live preview

What your Carrd contact form actually looks like.

Drop-in form backend with spam filtering, signed webhooks, and a real submissions dashboard. The same code in this preview is what you copy into your Carrd project — no SDK, no plugin, no PHP.

  • 1,000 submissions per month, free forever
  • Honeypot + AI spam classifier on every plan
  • Signed webhooks to Slack, Discord, your server
Carrd contact form on Splitforms — drop-in form backend with spam filtering and webhooks
§ 01Setup3 steps · 60 seconds · zero config

Ship a Carrd contact form without a backend.

No SDK, no PHP, no plugin. Your form posts standard FormData to one URL — submissions land in your inbox.

STEP 01GENERATE

Get your free access key

Verify your email and your access key is generated instantly. Free for 1,000 submissions per month, forever.

Create your form

By signing up, you agree to our terms and privacy policy.

STEP 02EMBED

Drop in the Carrd code

Copy the Carrd snippet on the right and paste it into your project. Replace YOUR_ACCESS_KEY with the key from step 1.

snippethtml
<!--
…
STEP 03RECEIVE

Submissions land in your inbox

Hits your dashboard and email in seconds. Forward to Slack, Discord, Sheets, Notion, or any signed webhook URL.

inbox · 1 newjust now
FROM contact@yoursite.com
New Carrd form submission
Maya Iyer maya@studio71.co
Loved the new pricing page — quick question about the 4-year plan. Are usage limits per project or account-wide?
§ 02Live demosandboxed · no key required · no submission sent

Try it now — no signup, no key.

This is a styled HTML preview of what your Carrd form will look like. Submitting opens a confirmation, no real request is sent.

preview · carrdlocalhost:3000
✦ what just happened

Your Carrd form posts FormData to /api/submit. Splitforms validates the access key, runs the spam classifier, and forwards the parsed submission to your inbox plus the dashboard.

  • 14ms median round-trip from the edge.
  • Honeypot + classifier, no CAPTCHA.
  • Per-domain key locking out of the box.
REQUEST · POST /api/submit
{
  "access_key": "sk_live_4f9a_••••",
  "name":       "Maya Iyer",
  "email":      "maya@studio71.co",
  "message":    "…"
}
← 200 OK · { "success": true } · 14ms
§ 03Best practices5 rules · production-tested

How to ship this without regrets.

Five rules that make the difference between a form that works in the demo and a form that survives launch traffic.

  1. 01

    Use the native Form widget, not an Embed. The widget styles automatically and gives you Carrd's mobile-optimized layout for free.

  2. 02

    Set every field's Custom name explicitly: `name`, `email`, `message`. Otherwise Carrd auto-generates `name-1`, `name-2` and your inbox shows submissions with mystery field labels.

  3. 03

    Lock the splitforms access key to BOTH your `*.carrd.co` URL and your custom domain. Carrd serves both, and a key locked to one will reject submissions from the other.

  4. 04

    Use Carrd's built-in success message for confirmation — skip the redirect field. One-pagers don't need a separate /thanks page; a success blip is friendlier.

  5. 05

    Use the hidden honeypot `botcheck` field. Carrd one-pagers attract bots because they're easy to scrape — splitforms' built-in spam classifier handles them.

§ 04Common gotchas in Carrd6 edge cases worth knowing

What bites people who skip the docs.

Worth a 60-second skim before you ship to production. Each one has caused a Carrd support ticket at least once.

⚠ gotcha

Pro Standard plan still required for Custom form Type

Carrd's free plan and Pro Lite don't expose the Form widget at all. Pro Standard ($19/yr) unlocks the Form widget with Type → Custom. Splitforms doesn't change Carrd's plan requirements — it just fills in the backend that Carrd doesn't ship.

⚠ gotcha

Embed element forms don't inherit Carrd's site styles

If you paste raw HTML via an Embed element, your form will look like browser-default — no Carrd typography, no site colors. Use the native Form widget for styling, then add a hidden access_key field via Custom fields.

⚠ gotcha

Carrd's success message + splitforms redirect can fight each other

Carrd's Form widget has a built-in success message that shows on 2xx response. If you also set a redirect field in the form, the user sees the success blip then redirects mid-message. Pick one: redirect via splitforms OR Carrd's success text.

⚠ gotcha

The form widget's Field labels don't match input names by default

Carrd uses friendly labels like 'Your name', but the actual input name attribute is name-1 or similar unless you set Custom in the field settings. Set the Custom name to name, email, message — splitforms uses the input names as keys in your inbox.

⚠ gotcha

Mobile preview shows the form, but submission requires publish

Carrd's Designer preview never actually POSTs the form. To test, publish the site (Carrd publishes free to a *.carrd.co subdomain) and submit from the live URL. Lock the splitforms access key to that subdomain in the dashboard.

⚠ gotcha

Carrd's Pro Plus password protection blocks the splitforms POST silently

If your one-pager sits behind Carrd's Pro Plus password gate, the page itself loads only after a session cookie is set — but Carrd's password layer also adds a Referer-Policy: no-referrer header to outbound form posts. Splitforms's domain-locked access keys verify the Origin header, which becomes null under that policy, so legitimate submissions get rejected as off-domain. Either disable password protection on the contact page specifically, or set the access key to allow null origins (NOT recommended for production — anyone can replay the key from any page).

§ 04bNative Carrd forms…and where they break down

How Carrd handles forms without splitforms.

The shape of the problem before splitforms enters the picture — and the gap it fills for Carrd specifically.

Carrd's Form widget requires Pro Standard ($19/year) just to exist on the page, and even then it doesn't deliver email itself — the form 'works' by posting to an external integration: Mailchimp, SendGrid, Basin, Formspree, etc. So the question isn't 'native vs splitforms' but 'which third-party backend do you wire up?'. Mailchimp is overkill (and surprisingly expensive once your list grows); Basin and Formspree limit free submissions; SendGrid requires DNS verification. Splitforms is the same shape of integration (Type: Custom, Method: POST, Action: a URL) at a better free tier and with built-in spam filtering. Carrd's Form widget settings don't change.

§ 04cAlternative integration patterns2 ways to wire it

Two ways to ship splitforms on Carrd.

Pick the pattern that matches your constraints — JS budget, key-exposure tolerance, server-side opacity. Both produce the same result.

PATTERN A

Pattern A — native Form widget set to Custom type

In the Form widget's settings, set Type to Custom, Method to POST, Action to the splitforms URL. Add a hidden field access_key via the Custom Fields tab. Carrd handles the styling and mobile layout; splitforms handles delivery.

pattern-a.htmlhtml8 lines
01<!-- Carrd auto-generates this on publish: -->
02<form action="https://splitforms.com/api/submit" method="POST">
03 <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
04 <input type="text" name="name" placeholder="Name" required />
05 <input type="email" name="email" placeholder="Email" required />
06 <textarea name="message" placeholder="Message" required></textarea>
07 <button type="submit">Submit</button>
08</form>
PATTERN B

Pattern B — Embed element with full HTML control

Drop an Embed element into a Carrd section and paste raw HTML. Loses Carrd's auto-styling but lets you add a honeypot, multi-field validation, or custom redirect. Useful for waitlist or job-application forms that exceed the Form widget's capability.

pattern-b.htmlhtml9 lines
01<form action="https://splitforms.com/api/submit" method="POST" style="display:grid;gap:8px;max-width:380px;">
02 <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
03 <input type="hidden" name="redirect" value="/thanks" />
04 <input name="name" placeholder="Name" required />
05 <input name="email" type="email" placeholder="Email" required />
06 <textarea name="message" placeholder="What's up?" required></textarea>
07 <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" />
08 <button type="submit">Send</button>
09</form>
§ 04dDeployment notes for Carrdhosting · env vars · CSP

Shipping Carrd + splitforms to production.

Host-specific gotchas, env-var conventions, and the boring-but-load-bearing details for putting this on the public internet.

Carrd publishes to a *.carrd.co subdomain on every plan; Pro Standard adds a custom domain. The form posts to splitforms from the browser, so neither subdomain nor custom domain matters for delivery. Lock the splitforms access key to BOTH the *.carrd.co URL and your custom domain — Carrd serves the same content under both, with different Origin headers. Carrd's Designer preview never actually POSTs; you have to publish (free) and submit from the live URL to test. Embed elements bypass Carrd's CSS, so the form will look browser-default unless you inline styles.

§ 05Comparisonvs native carrd

splitforms vs native carrd.

What you get for free vs what you build, pay for, or do without.

FeatureNative Carrdsplitforms
Backend setupMailchimp/SendGrid/Basin integrationCustom form action URL
Plan requiredPro Standard ($19/yr) + Mailchimp FreePro Standard ($19/yr) + splitforms Free
Email deliveryGoes through MailchimpDirect from splitforms
Spam filteringCarrd has none; depends on integrationHoneypot + classifier built-in
Submission dashboardInside MailchimpSplitforms dashboard
WebhooksMailchimp Pro tierFree, signed
§ 07Questions6 answered

Things developers ask before they integrate.

Direct answers, no marketing fluff. Missing one? Email hello@splitforms.com.

01How do I add a contact form to Carrd without Mailchimp?
In Carrd Designer, add a Form widget. Open its settings, change Type to Custom, set Method to POST, set Action to https://splitforms.com/api/submit. Add a hidden field named access_key with your splitforms key. That's it — no Mailchimp account needed.
02Does splitforms work with Carrd Pro Lite or the free plan?
No — but neither does any custom form solution. Carrd's Form widget requires Pro Standard ($19/year). Once you have Pro Standard, splitforms is free on top.
03How do I handle form errors in Carrd?
Carrd's Form widget shows a built-in error message on non-2xx responses. Splitforms returns 4xx with a JSON message for spam/invalid keys — Carrd will display the default error text. Customize it in the form widget's settings.
04Can I use splitforms with multiple Carrd forms on one page?
Yes. Add the access_key hidden field to each form. Use a different form-name hidden field per form (e.g. contact, newsletter) so the splitforms dashboard groups them.
05How do I customize the success / redirect behavior?
Two options. (1) Use Carrd's built-in success message — set the text in the Form widget's settings, splitforms returns 2xx and Carrd shows it. (2) Add a hidden input <input name="redirect" value="https://yoursite.carrd.co/thanks"> — splitforms 302s the browser there.
06Will splitforms work if I export the Carrd HTML and self-host?
Yes. Carrd's exported HTML keeps the form action intact. The form will POST to splitforms from any host — just update the splitforms access-key allowed domains list to match.
✻ ✻ ✻

Ship your Carrd contact form in 60 seconds.

1,000 free submissions per month. No credit card. Lock the access key to your domains, paste the snippet, watch submissions land in your inbox.

Get free access key →Read the docs
v0.1 · founders pricing locked in · early access open