Documentation

    Troubleshooting Submissions and Deliveries

    What to check when a submission, email, webhook or chat message does not arrive, a real message is marked spam, or the redirect lands on the wrong page.

    Most problems come down to one of five things: the request never reached Formboost, the form does not exist or is off, the submission was stored but not delivered, a destination refused it, or it was screened as spam. Work through the section that matches what you see.

    The Form Submits, but Nothing Appears in the Dashboard

    Check the endpoint ID. The action must be exactly https://formboost.app/f/YOUR_ENDPOINT_ID, copied from the form's page in the dashboard. A wrong ID is deliberately answered the same way as a right one — 202 Accepted — so that the endpoint cannot be used to guess valid IDs; the submission is then dropped. Copy the ID again and submit a test.

    Check the form is enabled. A disabled form also answers 202 and drops the submission. Open the form in the dashboard and check its status.

    Check the response. A plain HTML post is answered with a 302 redirect; a fetch() call gets 202 with a JSON body. Anything else is an error with a machine-readable name:

    StatusnameWhat it means
    400EMPTY_SUBMISSIONEvery field was empty, or the only fields were _honey and _redirect
    400MALFORMED_BODYThe body could not be parsed as JSON or form data
    404ROUTE_NOT_FOUNDThe URL is not /f/<id> — check for a typo or a trailing path
    413PAYLOAD_TOO_LARGEThe body is over 256 KB; file uploads are not accepted
    415UNSUPPORTED_CONTENT_TYPESend application/json or application/x-www-form-urlencoded
    429RATE_LIMITEDMore than 10 submissions a minute from one IP — wait for RateLimit-Reset

    Check the browser console. fetch() works from any origin — the endpoint answers preflight requests — so a CORS error usually means the URL is wrong (a typo produces a 404 that carries no CORS headers) rather than a policy problem.

    Look under Spam. A submission that was stored but scored as spam is listed in the form's spam view, not the inbox. See marked as spam below.

    Values Show "Limit exceeded — upgrade your plan to view"

    The form owner's monthly submission allowance was used up when this submission arrived. It was accepted and stored so nothing is lost, but its field values are masked and nothing was delivered for it — no email, chat message, webhook or auto-reply. Upgrading reveals the values. The allowance resets monthly on the day your plan started; the dashboard shows the count. Spam submissions count toward it, so a form under bot attack can reach the limit early.

    No Email Notification Arrived

    1. Is email notification on for this form, and is the recipient address right? Both are per-form settings.
    2. Was the submission delivered at all? Spam and over-limit submissions are stored but not delivered. Check the spam view and the usage counter.
    3. Is it the only destination on a Free-plan form? Free allows one destination per form. If you added Slack, email may have been turned off to make room.
    4. Check the spam folder for mail from notifications@formboost.app, and add it to your contacts. If your form sends a _subject field, the notification uses that subject.
    5. Replying goes nowhere? Replies go to an unmonitored address unless the form sends a _replyto field with the submitter's email.

    A Webhook, Zapier or n8n Delivery Shows a Failure

    Open Integrations → Delivery Logs on the form. Every attempt is recorded with the status code your endpoint returned, or the error if it never answered.

    What the log showsCauseFix
    401 / 403Your endpoint rejected the requestAdd the header it expects (an Authorization value, an API key) as a custom header on the integration
    404Nothing is listening at the URLFor n8n, the workflow is not Active, or you pasted the Test URL instead of the Production URL. For Zapier, the Zap is off
    405Your endpoint does not accept POSTChange the method on the integration, or accept POST
    4xx from a validation errorYour endpoint expected a different bodyThe payload is documented on the HTTP Webhook page: your fields are under submission, not at the top level
    5xxYour endpoint crashedCheck its logs; the eventId in the payload identifies the submission
    Timeout / no responseThe endpoint took more than 15 seconds, or is not publicly reachableAnswer 2xx quickly and do slow work afterwards. localhost, private IPs and non-HTTPS URLs are refused

    Formboost delivers each submission once and does not retry. Fix the endpoint, then press Send test to confirm before the next real submission. The test carries event: "form.submission.test" and does not create a submission.

    A Slack, Discord or Telegram Message Did Not Arrive

    • Slack: the URL must begin with https://hooks.slack.com/. The channel is fixed when the webhook is created; to post somewhere else, create a new webhook.
    • Discord: the channel webhook URL comes from Server Settings → Integrations → Webhooks. If the webhook was deleted in Discord, deliveries fail with 404 — create a new one.
    • Telegram: the bot must be a member of the group or channel, and the chat ID must be the numeric ID (negative for groups) or the @username of a public channel. A bot in a privacy-mode group must be allowed to post.
    • All three appear in Delivery Logs with a status code, like a webhook.

    A Real Message Was Marked as Spam

    Every submission gets a score from 0 to 100 and a reason; at 50 or above it is stored as spam and not delivered. The reason is shown on the submission. The common ones:

    • Honeypot field populated. Your _honey input is not hidden from people — it must be visually hidden and have autocomplete="off", or browsers autofill it.
    • High link density, Excessive uppercase, Repeated-character run, Blocklisted term. The message itself looked like a bot's. These are weighted, so one alone rarely reaches 50.
    • Disposable email domain. The address is from a throwaway provider.
    • Scripted user agent or No origin or referer. The request did not look like it came from a browser on a web page — typical of a curl test. Real visitors send both headers.

    If a form receives many legitimate submissions that trip these signals, turn spam filtering off for that form; it is a per-form switch, and there are no rules to edit. On Starter and above an AI model reads the borderline cases with your form's description as context — a clear description ("Support form for a Python library; messages often contain code and links") improves its judgement.

    The Redirect Lands on Formboost's Thank-You Page, Not Mine

    The _redirect value must be an absolute https:// URL on the same host as the page the form was submitted from. Anything else — http://, a relative path, another domain — falls back to the default page rather than failing the submission. This is what prevents someone submitting to your endpoint from their site and redirecting your visitors elsewhere. A fetch() submission is never redirected; it gets 202 and your script decides what to show.

    Still Stuck

    Write to support@formboost.app with the endpoint ID, the time of the submission and what the delivery log shows, or ask in the support page. Include the requestId from the 202 response if you have it — it identifies the submission end to end.

    Written by · Last updated