adapter-static sites don’t have. Pointing your form at a Crunchforms endpoint keeps the whole site static while the form still works.
Before you start: create your endpoint
Every guide on this page needs a Crunchforms form ID. Getting one takes about two minutes:- Sign up free — 1,000 submissions a month included, no credit card required.
- In your dashboard, click New Form, give it a name, and pick a response type: Redirect for classic form posts (the visitor lands on your thank-you page), or JSON if you’ll submit with JavaScript and handle the response yourself.
- Your endpoint is
https://crunchforms.com/form/{formID}— copy it with the Copy Action URL button, or use the dashboard’s snippet generator.
Option 1: plain form post
Set the form’s response type to Redirect and let the browser do the work:+page.svelte
Option 2: fetch with a JSON response
Set the response type to JSON for inline feedback:+page.svelte
$state('idle') with a plain let status = 'idle' and onsubmit with on:submit|preventDefault.)
Stop the spam before it starts
Every public form gets found by bots eventually. Crunchforms filters submissions server-side on every plan, including Free:Honeypot
A hidden field humans never see — if it’s filled, the submission is rejected. Zero friction for real visitors.
Cloudflare Turnstile
Invisible bot detection. Add the widget to your form and Crunchforms validates the token server-side.
reCAPTCHA v3
Score-based validation with a threshold you control per form.
Troubleshooting
The form posts, but nothing shows in my dashboard
The form posts, but nothing shows in my dashboard
- Check the form is set to Active in your dashboard.
- If you’ve enabled Turnstile or reCAPTCHA on the form, submissions without a valid token are rejected — including your own tests.
- Check you haven’t exceeded your plan’s monthly submission quota.
The visitor isn't redirected after submitting
The visitor isn't redirected after submitting
Set the form’s response type to Redirect and provide a success URL (and a failure URL) in the form settings. If you’re submitting with JavaScript, use the JSON response type instead and navigate in your code.
Submitting with fetch/XHR fails
Submitting with fetch/XHR fails
The endpoint accepts cross-origin requests, JSON bodies (
Content-Type: application/json), and classic URL-encoded form bodies. Set the form’s response type to JSON so your code gets { "success": true } back instead of a redirect.I want to test without deploying my site
I want to test without deploying my site
Use the Send Test Submission action next to your form in the dashboard — it posts a sample submission to your live endpoint so you can see the pipeline working end to end.
Next steps
Form configuration
Response types, notification emails, daily summaries, and more
Free HTML form templates
Contact, feedback, RSVP, job application, and quote-request forms ready to paste
Need help?
Get Support
Send us a note — we read everything.