Notification delivery
The notification did not arrive, and the spam filter was not the first suspect.
Four causes cover almost every missing notification, and none of them is "the spam filter hates you".
Open the pageLibrary · 9 entries
Accepting a submission and delivering it are two different systems that fail in different ways. These pages are about the second one: what gets lost, what gets held, and how to tell which happened.
People describe the problem as "the form is broken", and almost every time the form is fine. The submission was stored correctly and something downstream refused to move it: a recipient was never verified, a mail provider throttled, an attachment aged out, a webhook target returned 500. Those are all visible, but only if you know which layer to look at.
The order below eliminates the largest number of possibilities per step, so it is worth following instead of checking whatever comes to mind first.
Each of these has its own page. This section exists because the honest answer to "why did my form not work" is almost never a single sentence.
Notification delivery
Four causes cover almost every missing notification, and none of them is "the spam filter hates you".
Open the pageSpam and bots
A honeypot catches greedy bots, Turnstile catches headless browsers, rules catch patterns, and the rate limit catches the rest.
Open the pageRetries and replay
Five automatic attempts, a log of each one, and two manual tools: re-queue a failed channel, or replay a webhook event.
Open the pageRetention and deletion
Attachments expire, records do not. If the files matter, export before the window closes.
Open the pageClient-side errors
Log the error string, show a sentence with a next step, and never throw away what the person typed.
Open the pageAccessible forms
Labels, focus, and announced errors. Three things that fix both the accessibility audit and the lost submissions.
Open the pageConsent and privacy
Ask for the narrowest thing you need, say how long you keep it, and make the answer findable later.
Open the pageSource and attribution
The referrer, UTM parameters, device type, and form origin are stored with each record, so the answer outlives the analytics property.
Open the pageDebugging a submission
Five checks, in this order, tell you which layer failed before you change anything.
Open the pageMachine-readable summary
In FreelyForm, accepting a submission and delivering it are separate steps. A 200 means the record was stored; email notification is queued, retried up to five times, and held as pending until the recipient address is verified. Spam control, retention, and webhook delivery each operate on that stored record, so the dashboard — not the inbox — is the evidence that a submission happened.
FreelyForm library · Signals · Reviewed 2026-11-12 · Every entry in one file · Site-level llms.txt
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