> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.pinnacle.sh/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.pinnacle.sh/_mcp/server.

# Campaign Events

POST 

Receive `CAMPAIGN.STATUS` events via webhook whenever an RCS campaign's
per-carrier launch status (AT&T, T-Mobile, Verizon, other carriers) or
verification status (AEGIS, Google) changes.

Subscribe by attaching a webhook to an RCS agent sender — `CAMPAIGN.STATUS`
is only supported for agent senders, not phone numbers. Attempting to attach
this event to a phone number returns `400 Bad Request`.

The payload includes the agent reference, the connected campaign and
brand public ids, and the full `carrierLaunches` object.

**Before trusting the payload, verify the `PINNACLE-SIGNING-SECRET` header matches the signing secret of the webhook this event was delivered to.** Respond with a `200` to acknowledge receipt — any non-2xx response causes Pinnacle to retry with exponential backoff.


Reference: https://docs.pinnacle.sh/webhooks/campaign-events

## Request

### Headers

- `PINNACLE-SIGNING-SECRET` (string, required) — Secret for verifying the authenticity of the request. Starts with `pss-` and is unique for each webhook. Find it at [webhooks](https://app.pinnacle.sh/dashboard/development/webhooks).

### Payload

- `type` (enum, required)
  - Allowed values: `CAMPAIGN.STATUS`
- `agent` (CampaignStatusEventAgent, required) — The RCS agent the campaign-status update is for.
- `campaign` (CampaignStatusEventCampaign, required) — Reference to the connected campaign.
- `brand` (CampaignStatusEventBrand, required) — Reference to the brand owning the agent's connected campaign.
- `carrierLaunches` (CampaignStatusEventCarrierLaunches, required) — Resolved per-key launch status for the campaign's agent. Carrier statuses live under `carriers` and verifier statuses under `verification`.
- `updatedAt` (string, required) — ISO 8601 timestamp of when the change was applied.

## Types

### CampaignStatusEventAgent

The RCS agent the campaign-status update is for.

- `id` (string, required) — RCS agent id (`agent_*`).
- `name` (string, required, nullable) — Display name configured on the agent. Null if unset.

### CampaignStatusEventCampaign

Reference to the connected campaign.

- `publicId` (string, required, nullable) — Campaign public id (`rcs_*` for RCS campaigns). Null if the agent isn't yet linked to a campaign.
- `type` (enum, required) — Campaign protocol — currently always `RCS` for `CAMPAIGN.STATUS` events. Future event variants may carry `TOLL_FREE` or `10DLC`.
  - Allowed values: `RCS`, `TOLL_FREE`, `10DLC`

### CampaignStatusEventBrand

Reference to the brand owning the agent's connected campaign.

- `publicId` (string, required, nullable) — Brand public id (`b_*`). Null if no brand is linked.
- `name` (string, required, nullable) — Brand display name. Null if unset.

### CampaignStatusEventCarrierLaunches

Resolved per-key launch status for the campaign's agent. Carrier statuses live under `carriers` and verifier statuses under `verification`.

- `carriers` (CampaignStatusEventCarrierLaunchesCarriers, required) — Per-carrier launch status. Each carrier moves through `NOT_LAUNCHED` → `PENDING` → `LAUNCHED` as Pinnacle submits the agent for review and the carrier accepts it. The agent is only deliverable on a carrier once that carrier reports `LAUNCHED`.
- `verification` (CampaignStatusEventCarrierLaunchesVerification, required) — External verifier status. AEGIS (the U.S. carrier vetting authority used by AT&T, T-Mobile, and Verizon) and Google each send a verification email to the brand's contact address. Each verifier moves through `NOT_SENT` → `SENT` → `VERIFIED` once the brand replies and the verifier confirms ownership.

### CampaignStatusEventCarrierLaunchesCarriers

Per-carrier launch status. Each carrier moves through `NOT_LAUNCHED` → `PENDING` → `LAUNCHED` as Pinnacle submits the agent for review and the carrier accepts it. The agent is only deliverable on a carrier once that carrier reports `LAUNCHED`.

- `ATT` (enum, required) — Status of an RCS agent's launch on a specific carrier. - `NOT_LAUNCHED` — no launch requested yet - `PENDING` — submitted to the carrier, review in progress - `LAUNCHED` — live on the carrier
  - Allowed values: `NOT_LAUNCHED`, `PENDING`, `LAUNCHED`
- `TMOBILE` (enum, required) — Status of an RCS agent's launch on a specific carrier. - `NOT_LAUNCHED` — no launch requested yet - `PENDING` — submitted to the carrier, review in progress - `LAUNCHED` — live on the carrier
  - Allowed values: `NOT_LAUNCHED`, `PENDING`, `LAUNCHED`
- `VERIZON` (enum, required) — Status of an RCS agent's launch on a specific carrier. - `NOT_LAUNCHED` — no launch requested yet - `PENDING` — submitted to the carrier, review in progress - `LAUNCHED` — live on the carrier
  - Allowed values: `NOT_LAUNCHED`, `PENDING`, `LAUNCHED`
- `OTHERS` (enum, required) — Status of an RCS agent's launch on a specific carrier. - `NOT_LAUNCHED` — no launch requested yet - `PENDING` — submitted to the carrier, review in progress - `LAUNCHED` — live on the carrier
  - Allowed values: `NOT_LAUNCHED`, `PENDING`, `LAUNCHED`

### CampaignStatusEventCarrierLaunchesVerification

External verifier status. AEGIS (the U.S. carrier vetting authority used by AT&T, T-Mobile, and Verizon) and Google each send a verification email to the brand's contact address. Each verifier moves through `NOT_SENT` → `SENT` → `VERIFIED` once the brand replies and the verifier confirms ownership.

- `AEGIS` (enum, required) — Status of an RCS agent's verification with a verifier (AEGIS or Google). - `NOT_SENT` — verification email not sent yet - `SENT` — sent (awaiting reply on the brand contact email) - `VERIFIED` — verified
  - Allowed values: `NOT_SENT`, `SENT`, `VERIFIED`
- `GOOGLE` (enum, required) — Status of an RCS agent's verification with a verifier (AEGIS or Google). - `NOT_SENT` — verification email not sent yet - `SENT` — sent (awaiting reply on the brand contact email) - `VERIFIED` — verified
  - Allowed values: `NOT_SENT`, `SENT`, `VERIFIED`