May 2, 2026

New webhook event: CAMPAIGN.STATUS

Subscribe to per-campaign status changes — including per-carrier launch state (AT&T, T-Mobile, Verizon, other carriers) and verification state for AEGIS and Google.

What’s new?

  • New 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.
  • Each payload includes the agent reference (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.
Have questions? Reach out — founders@pinnacle.sh

April 24, 2026

Hosted Forms

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.

What’s new?

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.

New webhook event: FORM.SUBMISSION

When 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.

1{
2 "type": "FORM.SUBMISSION",
3 "sender": "agent_iM9wQcyBBjYn",
4 "conversation": { "id": "convo_…", "from": "agent_…", "to": "+14155551234" },
5 "form": { "id": "form_…", "url": "https://forms.pinnacle.sh/form_…", "name": "Contact request" },
6 "submission": {
7 "id": "fsub_…",
8 "from": "agent_iM9wQcyBBjYn",
9 "to": "+14155551234",
10 "data": { "full_name": "Ada Lovelace", "email": "ada@example.com" },
11 "fields": [
12 { "key": "full_name", "label": "Full name", "type": "text", "value": "Ada Lovelace" },
13 { "key": "email", "label": "Email", "type": "email", "value": "ada@example.com" }
14 ],
15 "ip_address": "203.0.113.45",
16 "user_agent": "Mozilla/5.0 …",
17 "submitted_at": "2026-04-24T00:35:04.406Z"
18 }
19}

See the Receiving Messages and User Events guide for full routing details.


April 15, 2026

Custom Webhook Headers

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.

What’s new?

Custom headers on webhooks

  • Pass a headers object on POST /webhooks/attach when creating a new webhook or when attaching an existing webhookId
  • Supplying headers with an existing webhookId overwrites the stored headers — omit the field to leave existing headers unchanged
  • Headers are returned on every webhook response (list_webhooks, get_webhooks, attach_webhook) so you always see what will be sent
  • Every webhook delivery includes the headers you configured alongside the standard PINNACLE-SIGNING-SECRET

Header rules

  • Header names must match ^[A-Za-z0-9][A-Za-z0-9_-]*$ — start with a letter or digit, contain only letters, digits, -, or _
  • Names are case-insensitive (per RFC 9110) and normalized to uppercase before storage
  • Values must be strings
  • The reserved PINNACLE-SIGNING-SECRET header is silently stripped and cannot be overridden — Pinnacle always sets it with your signing secret for request verification

Use cases

  • Add an AUTHORIZATION: Bearer … header so your webhook endpoint can sit behind the same auth as the rest of your API
  • Include a tenant identifier (X-TENANT-ID) to route multi-tenant deliveries without parsing the payload
  • Pass an X-API-KEY for legacy systems that require pre-shared keys

View API reference →

Have questions? Reach out to us - founders@pinnacle.sh

April 5, 2026

Usage Analytics, New Guides & Blog Launch

Track your real message spend in the dashboard, explore rewritten guides, and check out 20+ new blog posts on pinnacle.sh/blog.

What’s new?

Live usage analytics

The analytics dashboard now shows your real-time messaging volume and spend.

  • RCS, SMS, and MMS usage charts with a default 30-day window
  • Combined credit balance showing purchased and subscription credits side-by-side
  • Improved validation feedback when creating test agents — errors now tell you exactly which fields need attention

Updated documentation

  • Sending messages — expanded with coverage on broadcasting to audiences, typing indicators, and message reactions
  • Receiving messages — expanded with a step-by-step webhook setup walkthrough and structured event-type reference
  • Test agents — updated to reflect that test agents support the full RCS feature set (rich cards, carousels, buttons, media), limited only to your whitelisted numbers
  • Ruby quickstarts — updated to use the SDK’s process() method for webhook verification and idiomatic snake_case, now on SDK v2.0.15

Better 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:

Have questions? Reach out to us - founders@pinnacle.sh

March 29, 2026

Bulk Webhook Management

Webhook management just got simpler — attach and detach webhooks to multiple senders in a single API call.

What’s new?

Bulk webhook attach/detach

  • Attach webhooks to multiple senders at once via POST /webhooks/attach — pass an array of phone numbers and/or RCS agent IDs
  • Detach webhooks from multiple senders via POST /webhooks/detach — remove webhook routing in bulk
  • Simplified senders field replaces the previous per-number configuration
  • Detach now works regardless of webhook status

No more looping through numbers one at a time — configure all your webhook routing in a single request.

View API reference →

Have questions? Reach out to us - founders@pinnacle.sh

March 27, 2026

Simplified RCS Campaigns

RCS campaign submissions just got easier — we’ve streamlined the required fields so you can get approved faster with less friction.

What’s new?

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.

  • Removed legacy profile fields that are no longer needed
  • Added cta_media for attaching compliance media (e.g., opt-in screenshots)
  • Added opt_in_method to clearly describe how users consent to receive messages
  • Updated use_case_description for clearer campaign intent

These 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.

Have questions? Reach out to us - founders@pinnacle.sh

March 25, 2026

Conversations, Reactions & More

New conversation threading, message reactions, validation endpoints, URL shortening, and an expanded MCP server.

What’s new?

Conversations API

Messages between a sender and recipient are now grouped into conversation threads — the backbone of inbox-style experiences.

  • List conversations filtered by brand, campaign, sender, or receiver
  • Get a conversation by ID or phone number pair
  • List messages within a conversation with pagination
  • Update conversation notes for internal tracking

View API reference →

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.

Have questions? Reach out to us - founders@pinnacle.sh

March 16, 2026

Feedback, Support & SOC 2

New in-app feedback tools and SOC 2 compliance infrastructure to keep your data secure and your voice heard.

What’s new?

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.

Have questions? Reach out to us - founders@pinnacle.sh

March 13, 2026

RCS Test Agents & Carrier Status

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.

What’s new?

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:

  • Create a test agent via POST /rcs/test/agents — set up branding, contact info, and colors in a single call
  • Whitelist your number via POST /rcs/test/agents/{agentId}/whitelist — register your device to receive test messages
  • Send your first RCS message — once whitelisted, you can immediately send rich messages with cards, buttons, and media through your test agent

You 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.

Have questions? Reach out to us - founders@pinnacle.sh

March 8, 2026

Inbox Embed

The embedded components library now includes an Inbox, allowing you to add a full-featured messaging inbox directly into your website.

Inbox

What’s new?

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.

  • Token-based authentication with scoped permissions
  • Filter conversations by brand, sender, or simply show everything for a team
  • Customizable colors with primaryColor
  • Real-time message and conversation updates

Send 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.

Have questions? Reach out to us - founders@pinnacle.sh