> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.pinnacle.sh/v-2/webhooks/campaign-events/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` > One API for RCS, iMessage, MMS, and SMS. Build, test, and scale every channel — send your first message in minutes, not weeks.