# Campaign message send rejected

**Event:** `campaign.send_rejected`

**Event name:** `campaign.send_rejected`

A message could not be sent (insufficient credits, invalid contact, or provider rejection). Scope: location-scoped. Delivered as a signed HTTP POST to your Webhooks URL.

Source: https://developer.synup.com/webhooks/campaign-send-rejected

## Header parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `X-Synup-Signature` | string | required | sha256=base64(HMAC-SHA256(signing_secret, raw_request_body)). Verify with your signing secret before processing; reject on mismatch. |

## Request body

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `event` | string | optional | Dotted event name. |
| `timestamp` | string | optional | ISO-8601 UTC time the event was emitted. |
| `account_id` | integer | optional | Synup account the event belongs to. |
| `location_id` | string | optional | Numeric string for location-scoped events; null for brand-scoped events. |
| `data` | object | optional |  |
| `data.campaign_id` | string | optional | Campaign UUID. |
| `data.customer_id` | string | optional | Intended recipient UUID. |
| `data.message_id` | string | optional | Rejected message UUID. |
| `data.channel` | string | optional | "sms" or "email". |
| `data.message_type` | string | optional | Message subtype (e.g. "SmsMessage", "OpeningEmailMessage"). |
| `data.reason` | string | optional | Rejection reason (omitted if none). |

## Responses

| Status | Description |
| --- | --- |
| `200` | Your endpoint acknowledges receipt with any 2xx. A non-2xx response or a timeout (>10s) is treated as a failed delivery. |
