CAMPAIGN.STATUSSubscribe to per-campaign status changes — including per-carrier launch state (AT&T, T-Mobile, Verizon, other carriers) and verification state for AEGIS and Google.
CAMPAIGN.STATUS webhook event type. Subscribe by attaching a
webhook to an RCS agent sender — this event is only supported for agent
senders, not phone numbers. Pin a webhook to this event in the
dashboard, or leave the event filter unset to receive every event your
agent emits.agent.id + agent.name), the
connected campaign (campaign.publicId, campaign.type), the brand
reference, the resolved carrierLaunches snapshot, and the change
timestamp.carrierLaunches is split into two groups with human-readable statuses:
carriers (ATT, TMOBILE, VERIZON, OTHERS) — each
NOT_LAUNCHED / PENDING / LAUNCHED.verification (AEGIS, GOOGLE) — each NOT_SENT / SENT /
VERIFIED.Collect structured responses from your recipients with Pinnacle-hosted forms. Mint a form URL, deliver it over SMS or RCS in the same call, and receive completed submissions as a new FORM.SUBMISSION webhook event.
Browse, build, and theme forms in the Pinnacle Dashboard → Forms.
Form endpoints
POST /forms — create a form without sending it (returns the public https://forms.pinnacle.sh/{form_id} URL).POST /forms/send — create (or reuse) a form and deliver its URL over SMS or RCS in one call. When to is provided, Pinnacle dispatches the message and the recipient is recorded on the response (submission.to plus the outbound message_id). Omit to to mint a standalone submission URL for embedding in your own outreach.GET /forms/{id}, PATCH /forms/{id} — retrieve and partial-update a form.POST /forms/list, POST /forms/{id}/submissions/list — paginated listings of forms and of their completed submissions.16 field types out of the box
Text, textarea, email, url, phone (auto-formats + E.164-normalized on submit), number, range slider, rating stars, date, time, datetime, color picker, select, radio group, checkbox group, and an address input with built-in Google Places autocomplete.
Theme overrides
Per-form theme_override layered on top of your team’s default theme — tweak colors, background (solid / gradient / pattern / image), font family, corner radius, submit button label, success message, and post-submission redirect URL. Configure team-wide defaults from the Pinnacle Dashboard → Forms.
Updatable submissions
Set can_update: true to let a recipient reopen their submission URL and edit their answers. The form rehydrates with their prior values; submission_count reflects distinct recipients and last_submitted_at tracks the latest edit.
FORM.SUBMISSIONWhen a recipient completes a form, every webhook subscribed to the sender receives a FORM.SUBMISSION event. The payload carries the sender, an optional conversation reference, the form summary, and a resolved snapshot of every field paired with the submitted value — ready to render or route on without a separate get_form call. Manage subscribers from the Pinnacle Dashboard → Webhooks.
See the Receiving Messages and User Events guide for full routing details.
Attach custom HTTP headers to any webhook so your endpoint can authenticate incoming events, route them to the right tenant, or integrate with auth-gated infrastructure without a proxy in between.
Custom headers on webhooks
headers object on POST /webhooks/attach when creating a new webhook or when attaching an existing webhookIdheaders with an existing webhookId overwrites the stored headers — omit the field to leave existing headers unchangedlist_webhooks, get_webhooks, attach_webhook) so you always see what will be sentPINNACLE-SIGNING-SECRETHeader rules
^[A-Za-z0-9][A-Za-z0-9_-]*$ — start with a letter or digit, contain only letters, digits, -, or _PINNACLE-SIGNING-SECRET header is silently stripped and cannot be overridden — Pinnacle always sets it with your signing secret for request verificationUse cases
AUTHORIZATION: Bearer … header so your webhook endpoint can sit behind the same auth as the rest of your APIX-TENANT-ID) to route multi-tenant deliveries without parsing the payloadX-API-KEY for legacy systems that require pre-shared keysTrack your real message spend in the dashboard, explore rewritten guides, and check out 20+ new blog posts on pinnacle.sh/blog.
Live usage analytics
The analytics dashboard now shows your real-time messaging volume and spend.
Updated documentation
process() method for webhook verification and idiomatic snake_case, now on SDK v2.0.15Better RCS error messages
When whitelisting testers, you’ll now get clear error messages if the carrier requires your agent to be launched first — instead of a generic rejection.
Blog launch
We published 20+ posts on pinnacle.sh/blog covering everything from getting started to platform deep-dives:
Webhook management just got simpler — attach and detach webhooks to multiple senders in a single API call.
Bulk webhook attach/detach
POST /webhooks/attach — pass an array of phone numbers and/or RCS agent IDsPOST /webhooks/detach — remove webhook routing in bulksenders field replaces the previous per-number configurationNo more looping through numbers one at a time — configure all your webhook routing in a single request.
RCS campaign submissions just got easier — we’ve streamlined the required fields so you can get approved faster with less friction.
Simplified RCS campaign submissions
We’ve removed deprecated and redundant fields from the RCS campaign schema. Submitting a campaign now requires fewer fields while still meeting carrier compliance requirements.
cta_media for attaching compliance media (e.g., opt-in screenshots)opt_in_method to clearly describe how users consent to receive messagesuse_case_description for clearer campaign intentThese changes reduce the back-and-forth during carrier review and help you get your RCS agents approved faster. See our RCS campaign compliance guide for details.
New conversation threading, message reactions, validation endpoints, URL shortening, and an expanded MCP server.
Conversations API
Messages between a sender and recipient are now grouped into conversation threads — the backbone of inbox-style experiences.
Message reactions
React to messages with emoji using POST /messages/react. Messages support multiple reactions.
Message validation
Validate SMS, MMS, and RCS messages before sending — check segment count, encoding, unsupported files, and estimated cost without consuming credits.
URL shortener
Create tracked short links (pncl.to) with click analytics, configurable expiration, and updatable destinations.
MCP Server — 89 tools
The Pinnacle MCP server now exposes 89 tools (up from 71 at launch), covering conversations, webhooks, test agents, and more.
New in-app feedback tools and SOC 2 compliance infrastructure to keep your data secure and your voice heard.
Feedback & support
A new feedback button is now available directly in the dashboard — ask questions about our docs, submit feature requests, report bugs, or reach out to support without leaving your workflow. Help documentation is also accessible from the dashboard header.
SOC 2 compliance
We’ve implemented automated audit log exports and database backup infrastructure to meet SOC 2 requirements. Your messaging data is backed by enterprise-grade security and compliance controls.
Go from zero to your first RCS message in under 2 minutes — no campaign approval required. Create a test agent, whitelist your number, and start sending rich messages right away.
RCS test agent management API
Every Pro account gets up to 5 test agents to experiment with RCS before going through the full campaign approval process. With the new test agent API, you can:
POST /rcs/test/agents — set up branding, contact info, and colors in a single callPOST /rcs/test/agents/{agentId}/whitelist — register your device to receive test messagesYou can also update agents and check whitelist status programmatically, making it easy to integrate into your development workflow.
RCS carrier launch status
You can now see the launch status of your RCS agents across each carrier directly in the dashboard and API. Each agent shows per-carrier status — NOT_LAUNCHED, PENDING, or LAUNCHED — so you know exactly where your agent stands before going live.
The embedded components library now includes an Inbox, allowing you to add a full-featured messaging inbox directly into your website.
Inbox embed
Give your users a complete RCS and SMS messaging experience — conversations, message history, rich media, and real-time updates — all in a single iframe.
primaryColorSend RCS Message updates
Send RCS Message embed has been updated to use the new v2 token-based flow — message configuration is now securely encoded in the signed token on your backend.