# 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](/docs/getting-started/quickstart/) (or equivalent HTML/JSON submit)
- You can open the form in [app.formsreach.com](https://app.formsreach.com)

## Success checklist

After you submit, check these in order:

1. **Browser request** - the browser completed a POST to `https://api.formsreach.com/submit` without a network failure (DevTools → Network).
2. **Dashboard row** - a new row appears under that form's **Submissions** list with your field values.
3. **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

1. Open the form in the dashboard.
2. Open **Submissions**.
3. Open the latest row.
4. 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](/docs/submit-api/redirect/), 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:

```json
{
 "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](/docs/submit-api/json/). Field reference: [Submit API overview](/docs/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](/docs/submit-api/domains/) |
| 402 / credits | Plan credits exhausted - see billing in the app and [pricing](https://formsreach.com/pricing) |
| CORS on `fetch` | Prefer classic form POST or the official SDK; see [Troubleshooting](/docs/help/troubleshooting/) |
| Row exists, no email/WhatsApp | Channel not enabled, destination not verified, or plan gate (WhatsApp is Pro/Agency) |

## Next

- [Test your form](/docs/getting-started/test-your-form/) - repeatable checks before go-live
- [Next steps](/docs/getting-started/next-steps/) - email, domains, spam, WhatsApp
- [Channels overview](/docs/channels/overview/) - turn on delivery
- [Troubleshooting](/docs/help/troubleshooting/) - if the row never appears
