Skip to main content
SlideDrift
Integrations

Send SlideDrift events to Zapier, Make and n8n

Get a signed HTTPS request when a post publishes, fails or needs attention, and connect SlideDrift to Zapier, Make, n8n or your own server.

Webhooks send a signed HTTPS request to a URL you choose when something happens in SlideDrift. Use them to post a Slack message when a carousel goes live, log published posts in a spreadsheet, or alert your team when a post fails.

Webhooks are included in the Pro plan (5 endpoints) and the Agency plan (20 endpoints). A trial includes 5 endpoints.

Add an endpoint

  1. Open Webhooks in the sidebar.
  2. Choose Add endpoint and paste the URL your tool gives you. It must be a public HTTPS address.
  3. Choose the events to send, then Add endpoint.
  4. Copy the signing secret. SlideDrift shows it once. You need it only if you check signatures yourself.
  5. Choose Send test and pick an event. SlideDrift sends a sample right away and shows whether it arrived.

Each endpoint has a Delivery log with the status and time of its 50 newest deliveries from the last 30 days. Pause stops deliveries to an endpoint; deliveries already waiting are not sent.

Events

EventWhen SlideDrift sends it
post.publishedA scheduled or Publish now post went live on LinkedIn.
post.failedA post couldn't be published and needs your attention.
post.first_comment_failedThe post went live, but its first comment didn't.
account.reconnect_neededA LinkedIn connection expires within 14 days (sent at 14 and 3 days), or LinkedIn stopped accepting it.
carousel.exportedA carousel was exported as a PDF or PNG. Off by default.

Use with Zapier

  1. Create a Zap that starts with Webhooks by Zapier and choose the Catch Hook trigger. Webhooks by Zapier needs a paid Zapier plan.
  2. Copy the webhook URL Zapier shows you and add it as an endpoint in SlideDrift.
  3. Choose Send test in SlideDrift, then test the trigger in Zapier to load the sample and map its fields.

Use with Make

  1. Start a scenario with the Webhooks app and its Custom webhook trigger.
  2. Add a webhook, copy its address and add it as an endpoint in SlideDrift.
  3. While Make is waiting to determine the data structure, choose Send test in SlideDrift.

Use with n8n

  1. Add a Webhook trigger node and set the HTTP method to POST.
  2. Add its Production URL as an endpoint in SlideDrift. It receives events once the workflow is published.
  3. To try the Test URL instead, choose Listen for test event in n8n, then Send test in SlideDrift.

A self-hosted n8n needs a public HTTPS address on the standard port (443).

What SlideDrift sends

Each event is a POST with a JSON body:

{
  "id": "9b1f4c2e-6a7d-4e3b-8c55-2f0a9d61e7b4",
  "type": "post.published",
  "timestamp": "2026-10-06T20:53:00.000Z",
  "test": false,
  "data": {
    "post": {
      "id": "4f0c8a52-1d3e-4b6a-9f27-8e5d2c1b7a90",
      "type": "carousel",
      "status": "published",
      "caption": "Three things we learned launching our first product…",
      "scheduled_for": "2026-10-06T20:50:00.000Z",
      "published_at": "2026-10-06T20:53:00.000Z",
      "linkedin_post_urn": "urn:li:share:7381234567890123456",
      "linkedin_post_url": null,
      "carousel_id": "c2a7e9d4-5b1f-4e8c-a6d3-7f9b0e2c4a18",
      "carousel_title": "Launch lessons",
      "schedule_url": "https://slidedrift.com/schedule"
    },
    "account": {
      "id": "e81d6b3a-2c4f-4a9e-b7d5-0f3c9a1e6b24",
      "type": "person",
      "name": "Your LinkedIn profile"
    }
  }
}
  • id identifies the event. It stays the same when a delivery is retried.
  • timestamp is when the event happened.
  • test is true for requests sent with Send test. Their data is sample data.
  • linkedin_post_url is a link when LinkedIn gives one; otherwise use linkedin_post_urn.
  • account.type is person for a profile and organization for a Company Page.

post.failed adds the number of attempts to post and an error with a code and a plain-language message:

"error": {
  "code": "account_unusable",
  "message": "SlideDrift could not access your LinkedIn account. Please reconnect LinkedIn, then reschedule the post."
}

account.reconnect_needed carries the account, a reason (expires_soon or rejected), expires_at, days_left and a reconnect_url. carousel.exported carries the carousel (id, title) and the export (format, slide_count, delivery, and a share_url for a share link). post.first_comment_failed carries the post, the account and the first_comment with its text and error.

Headers and signatures

HeaderValue
webhook-idThe event id. The same on every retry.
webhook-timestampWhen this attempt was sent, in Unix seconds.
webhook-signaturev1, followed by the signature.
Idempotency-KeyThe event id again, for tools that look for this header.
SlideDrift-EventThe event type, for example post.published.

Requests follow the Standard Webhooks specification, so its libraries can verify them. To check a signature yourself:

  1. Take your signing secret, remove whsec_ and decode the rest from base64. That is the key.
  2. Compute HMAC-SHA256 of webhook-id, ., webhook-timestamp, . and the raw request body, then base64-encode it.
  3. Compare it with the value after v1, in webhook-signature, and reject requests whose timestamp is more than 5 minutes old.
import { createHmac, timingSafeEqual } from "node:crypto";

export function isFromSlideDrift(headers, rawBody, secret) {
  const id = headers["webhook-id"];
  const timestamp = headers["webhook-timestamp"];
  const key = Buffer.from(secret.replace(/^whsec_/, ""), "base64");
  const expected = createHmac("sha256", key).update(`${id}.${timestamp}.${rawBody}`).digest("base64");
  const received = String(headers["webhook-signature"] ?? "").replace(/^v1,/, "");
  const fresh = Math.abs(Date.now() / 1000 - Number(timestamp)) < 300;
  return fresh && received.length === expected.length && timingSafeEqual(Buffer.from(received), Buffer.from(expected));
}

Create new signing secret in the endpoint's menu replaces the secret straight away. Update your receiver with the new one.

Retries

An endpoint should answer with a 2xx status within 10 seconds. Otherwise SlideDrift tries again after 5 minutes, 30 minutes, 2 hours, 6 hours and 12 hours, then marks the delivery as failed. A retry has the same webhook-id, so you can ignore repeats. A test is sent once and not retried.

SlideDrift doesn't follow redirects. If your endpoint redirects, add the final URL instead.

Limits

  • Public HTTPS addresses on port 443 only. Local and private network addresses are refused.
  • 5 tests a minute for each endpoint.
  • Webhooks are included in Pro and Agency. On other plans your endpoints stay listed, but nothing is sent. You can still pause or delete them.
Last updated

On this page