> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mailchannels.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Debug a sent message

> Use API responses, webhook events, and application logs to answer what happened to a MailChannels message.

Use this workflow when a recipient reports a missing message, a webhook event is unexpected, or your application needs to reconcile delivery state.

## Capture the identifiers

Store these values when you send a message:

| Identifier           | Where it comes from               | Why it matters                                           |
| -------------------- | --------------------------------- | -------------------------------------------------------- |
| `request_id`         | API response and webhook payloads | Connects the send request to later delivery events.      |
| `smtp_id`            | Webhook payloads when present     | Helps correlate SMTP and API delivery records.           |
| Sender and recipient | Request payload                   | Narrows the investigation to a domain, mailbox, or user. |

## Follow the event sequence

1. Confirm the API returned a successful response for `send` or `send-async`.
2. Search your stored webhook events by `request_id`.
3. Confirm a `processed` event exists.
4. Look for an event such as `delivered`, `hard-bounced`, `soft-bounced`, `dropped`, or `complained`.
5. If the recipient says the message is missing after a `delivered` event, ask them to check spam, quarantine, forwarding
   rules, and mailbox-level filters.

<Note>
  `delivered` means the receiving mail system accepted the message. It does not guarantee inbox placement or that the
  recipient saw the message.
</Note>

## Missing webhook events

If the API returned a successful response for `send` or `send-async`, but your system did not record a webhook event:

* Confirm the webhook endpoint is still enrolled.
* Run webhook validation from the Console or the API.
* Check whether your endpoint returned a non-2xx response, timed out, or rejected the request before storing the raw payload.
* Query webhook batches for recent failed delivery attempts.
* Use [batch resend](/email-api/webhook-retries) after you fix the receiver.

## Recipient says the message was not received

Collect this information before escalating:

* Sender address and recipient address.
* Approximate send time with time zone.
* API `request_id`.
* Last webhook event and timestamp.
* Whether the recipient checked spam, junk, quarantine, forwarding, and mailbox rules.
* Any bounce or complaint event.

Review [errors](/email-api/errors) for more request troubleshooting.
