> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crunchforms.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webflow forms with your own backend

> Point Webflow forms at Crunchforms to own your submission data — storage, exports, spam filtering, and email notifications independent of your Webflow plan.

Webflow's native forms are convenient, but submissions live inside Webflow, monthly limits depend on your site plan, and exporting your site breaks them entirely. Pointing the form at a Crunchforms endpoint keeps the Webflow designer workflow while you own the data — and the form keeps working if you ever export the site.

## Before you start: create your endpoint

Every guide on this page needs a Crunchforms form ID. Getting one takes about two minutes:

1. [Sign up free](https://crunchforms.com/auth/signup) — 1,000 submissions a month included, no credit card required.
2. In your [dashboard](https://crunchforms.com/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.
3. Your endpoint is `https://crunchforms.com/form/{formID}` — copy it with the **Copy Action URL** button, or use the dashboard's snippet generator.

The [quickstart](/quickstart) covers this in more detail.

## Option 1: set the form's action in the Designer

1. Select your form's **Form Block** in the Webflow Designer.
2. In form **Settings**, set **Action** to `https://crunchforms.com/form/{formID}` and **Method** to `POST`.
3. Publish. Submissions now go to your Crunchforms dashboard (and your email) instead of Webflow.

<Note>
  With a custom action, Webflow's own success/error states don't trigger. Set the Crunchforms form's response type to **Redirect** and use a thank-you page on your Webflow site as the success URL.
</Note>

## Option 2: exported Webflow sites

If you export your Webflow project and host it elsewhere, native Webflow forms stop working entirely — but a form pointed at Crunchforms is just HTML and keeps working unchanged. Set the action as above before exporting, or edit the exported HTML:

```html exported-page.html theme={null}
<form action="https://crunchforms.com/form/{formID}" method="post">
  <!-- your exported Webflow form fields, unchanged -->
</form>
```

## Stop the spam before it starts

Every public form gets found by bots eventually. Crunchforms filters submissions server-side on **every plan, including Free**:

<CardGroup cols={3}>
  <Card title="Honeypot" icon="honey-pot" href="/advanced/honeypot">
    A hidden field humans never see — if it's filled, the submission is rejected. Zero friction for real visitors.
  </Card>

  <Card title="Cloudflare Turnstile" icon="cloudflare" href="/advanced/turnstile">
    Invisible bot detection. Add the widget to your form and Crunchforms validates the token server-side.
  </Card>

  <Card title="reCAPTCHA v3" icon="google" href="/advanced/recaptcha">
    Score-based validation with a threshold you control per form.
  </Card>
</CardGroup>

The honeypot alone stops most drive-by spam and takes one extra line of markup — enable it in your form's settings, then include the hidden field in your form.

## Troubleshooting

<AccordionGroup>
  <Accordion title="The form posts, but nothing shows in my dashboard" icon="magnifying-glass">
    * 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.
  </Accordion>

  <Accordion title="The visitor isn't redirected after submitting" icon="arrow-right">
    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.
  </Accordion>

  <Accordion title="Submitting with fetch/XHR fails" icon="code">
    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.
  </Accordion>

  <Accordion title="I want to test without deploying my site" icon="flask">
    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.
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={2}>
  <Card title="Form configuration" icon="sliders" href="/form-config">
    Response types, notification emails, daily summaries, and more
  </Card>

  <Card title="Free HTML form templates" icon="file-code" href="https://crunchforms.com/templates">
    Contact, feedback, RSVP, job application, and quote-request forms ready to paste
  </Card>
</CardGroup>

## Need help?

<Card title="Get Support" icon="envelope" horizontal href="https://crunchforms.com/support">
  Send us a note — we read everything.
</Card>
