Sequence
Log in

Send Sequence events to your app with webhooks

Set up a webhook so Sequence sends a signed notification to your app when content changes, a review is decided, a post is scheduled or publishes, or a message arrives.

Webhooks tell your own app about changes in Sequence as they happen, so it does not need to keep checking. Each webhook covers the brands and events you choose and sends a signed HTTPS request to your endpoint.

Events you can receive

EventSent when
content.created, content.updatedContent is created or saved
content.deleted, content.restoredContent moves to or from the Bin
review.requested, review.decidedA review is requested, approved or sent back
schedule.accepted, schedule.cancelledA post is scheduled or withdrawn
publish.succeeded, publish.failedPublishing finishes or fails
inbox.message_receivedA new DM or comment arrives

Each notification contains IDs, statuses and the content version, not the caption or message text. Your app can read the details with the Sequence API.

Create a webhook

  1. 01
    Open Settings, select MCP & API, then the Webhooks tab.
  2. 02
    Enter a Name and your Endpoint URL. It must be a public HTTPS address; redirects count as failures.
  3. 03
    Choose the Workspace, tick the Brands and the Events you want, then select Create webhook.
Add webhook dialog with the name CRM sync, an HTTPS endpoint, Demo Workspace and the Form Studio brand selected
Events list in the Add webhook dialog with Content created, Review decided, Published and Publish failed selected
  1. 01
    Copy the signing secret. Sequence shows it once, together with an example that checks the signature.
Copy your signing secret dialog with the secret hidden and a Node.js verification example

Check that a request came from Sequence

Each request has a Sequence-Signature header in the form t=timestamp,v1=signature. The signature is an HMAC-SHA256 of the timestamp, a full stop and the raw request body, made with your secret. Reject requests older than five minutes and respond with a 2xx status quickly:

import { createHmac, timingSafeEqual } from "node:crypto";

export function verifySequenceWebhook(rawBody, signatureHeader, secret) {
  const { t, v1 } = Object.fromEntries(signatureHeader.split(",").map((part) => part.split("=")));
  if (!t || !v1 || Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;
  const expected = createHmac("sha256", secret).update(`${t}.${rawBody}`).digest("hex");
  return expected.length === v1.length && timingSafeEqual(Buffer.from(expected), Buffer.from(v1));
}

Test, retries and delivery history

Select Send test to send a webhook.test event and see the response straight away. Select Deliveries to see recent events with their status, attempts and your endpoint's response, and Redeliver to send one again.

CRM sync webhook page with Send test, its brands, events, masked signing secret, last success and recent deliveries
  • If your endpoint does not answer with 2xx within 10 seconds, Sequence tries again after 1 minute, 5 minutes, 30 minutes, 2 hours, 6 hours and 24 hours.
  • A webhook that fails for three days in a row is paused automatically. Fix the endpoint, then select Resume.
  • Events can arrive more than once or out of order. Use the event id to skip repeats and the content version to keep the newest change.

Pause, rotate or delete

Select Pause to stop new events while you work on your endpoint, Rotate secret to issue a new signing secret (update your endpoint first), or Delete to remove the webhook and its queued deliveries. Each person can have up to 25 webhooks per workspace.

Was this page helpful?

Need more help with this?