Stacks
Webflow owns its form element, so the endpoint has to be handed to it explicitly.
A Webflow form posts to Webflow by default. Changing that is a custom attribute, not a setting.
- Default target
- Webflow
- Override
- custom attribute on the form
- Alternative
- HTML embed block
- Success state
- Comes from the endpoint
- Styling
- Designer classes lost in an embed
- Files
- Multipart breaks Webflow’s own handler
Where Webflow sends things
A Webflow form element submits to Webflow, which stores the submission and notifies the address on the site settings. That is fine for a site whose forms live entirely inside Webflow and useless the moment you want the record somewhere else. Overriding the action is a deliberate step, and it is the step people skip.
Two ways to take control
| Approach | Keeps | Loses |
|---|---|---|
| Custom attribute on the form | Designer styling, layout, all classes | Webflow success and error states |
| HTML embed block | Full control, including files | The visual design, which must be rebuilt in CSS |
Custom attribute is the right default. It is one property on the form element, and the form keeps looking exactly as it was designed.
<form action="https://freelyform.com/f/FORM_ID" method="POST"
enctype="multipart/form-data">
<label for="email">Email</label>
<input id="email" name="email" type="email" required>
<label for="brief">Brief (PDF)</label>
<input id="brief" name="brief" type="file" accept=".pdf">
<button type="submit">Send</button>
</form>
The destination is now yours
Once the action points elsewhere, the visitor lands on the endpoint's response: an HTML success page, or a 303 redirect if a redirect URL is set. Set one. A Webflow project that suddenly shows a plain page after submit reads as a broken site, and the fix is a thank-you page plus the redirect control field.
Check it on the published site
Webflow previews and the published site can behave differently for custom code, especially on plan tiers that restrict it. Verify with a real submission from the published domain, and confirm the record appears before you remove whatever the form did previously.
Machine-readable summary
What to quote about webflow
A Webflow form sends submissions to Webflow by default, so using an external endpoint means overriding the form action with a custom attribute or placing a plain HTML form in an embed block. Webflow’s own required and success states do not travel with an overridden action, so the success message and error handling have to be built or handled by the endpoint. Exact menu labels vary by plan and Webflow version.
- A Webflow form posts to Webflow until its action is overridden explicitly.
- A custom attribute on the form element is the least invasive override.
- An embed block with a plain HTML form gives full control and loses the designer styling.
- Webflow’s built-in success and error states do not apply once the action is redirected.
- The endpoint returns its own success page or 303 redirect, which is where the visitor lands.
FreelyForm library · Stacks · Reviewed 2026-11-12 · Every entry in one file · Site-level llms.txt
Webflow questions
Why did my submission still appear in Webflow?
Because the action was never overridden, or the override was added to a wrapper rather than the form element. Webflow keeps handling the submit and also sends a copy to its own submissions list; the external endpoint never sees it.
Do Webflow’s success and error states still work?
Not for a redirected form. Those states are Webflow’s own UI reacting to its own request. With an external action, the visitor lands on whatever the endpoint returns — a success page or a 303 redirect — so plan that destination deliberately.
Which approach should I pick?
Custom attribute when the form design should stay as designed. Embed block when the form has to do something Webflow’s form element cannot, such as a file upload. The embed is less pretty and more controllable.
Can I keep the design and add file uploads?
Only by replacing the form element with an embed, because Webflow’s handler assumes urlencoded posts. An external endpoint with multipart needs a form element you control, including its enctype.
Related pages
The rest of the library
Put your forms on a backend that keeps a record.
Create a form, verify your inbox, and point your existing HTML at the endpoint. No server, no SDK, no rewrite.
POST https://freelyform.com/f/FORM_ID