Your first submission
Confirm a FormsReach submit succeeded - dashboard row, accepted vs channel delivery, and common first-time errors.
What you will achieve
Know what “success” means after you submit, where to read the data, and how to tell a storage success from a channel delivery issue.
Prerequisites
- You completed the Quickstart (or equivalent HTML/JSON submit)
- You can open the form in app.formsreach.com
Success checklist
After you submit, check these in order:
- Browser request - the browser completed a POST to
https://api.formsreach.com/submitwithout a network failure (DevTools → Network). - Dashboard row - a new row appears under that form’s Submissions list with your field values.
- Channels (optional) - if email, WhatsApp, or other channels are enabled and credits remain, delivery runs after the submission is accepted.
A stored row is enough to prove the form path works. You can enable channels after the first successful store.
Accepted vs delivered
| Stage | Meaning |
|---|---|
| Accepted | FormsReach validated the request, stored the submission, and spent submission credits when applicable |
| Delivered | A channel job succeeded (email sent, WhatsApp message sent, webhook 2xx, and so on) |
You can have an accepted submission with a failed or skipped channel (channel misconfigured, destination not verified, or not enough credits for that channel). Fix channels without changing a working HTML form.
Where to read the submission
- Open the form in the dashboard.
- Open Submissions.
- Open the latest row.
- Confirm
name,email,message(or your custom field names) match what you typed.
Field names come from your input name attributes (HTML) or JSON keys.
What the browser may show
Classic HTML form POST
Depending on Accept headers and redirect settings, the browser may:
- Redirect to your thank-you URL, or
- Show a FormsReach success page
Either outcome can still mean success if the Submissions row exists.
JSON clients
JSON clients receive a unified envelope on success, for example:
{
"data": { "id": "…", "ok": true },
"status": "success",
"meta": { "requestId": "req_…" }
}
Failures use "status": "failure" with a problem object (code, title, detail). Keep meta.requestId if you contact support.
Programmatic clients: JS SDK submit. Field reference: Submit API overview.
Verify
You should be able to answer yes to:
- I submitted test data I recognize
- I see that data on the correct form’s Submissions list
- I know whether channels are enabled yet (if not, missing email/WhatsApp is expected)
Common first-time failures
| Symptom | Check |
|---|---|
| Nothing in dashboard | Wrong api_key; form inactive; viewing a different form; filtering spam-only views |
| 422 / missing API key | Hidden input name="api_key" missing |
| Domain denied | Origin/referrer host not on the allowlist |
| 402 / credits | Plan credits exhausted - see billing in the app and pricing |
CORS on fetch |
Prefer classic form POST or the official SDK; see Troubleshooting |
| Row exists, no email/WhatsApp | Channel not enabled, destination not verified, or plan gate (WhatsApp is Pro/Agency) |
Next
- Test your form - repeatable checks before go-live
- Next steps - email, domains, spam, WhatsApp
- Channels overview - turn on delivery
- Troubleshooting - if the row never appears