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
- Open Webhooks in the sidebar.
- Choose Add endpoint and paste the URL your tool gives you. It must be a public HTTPS address.
- Choose the events to send, then Add endpoint.
- Copy the signing secret. SlideDrift shows it once. You need it only if you check signatures yourself.
- 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
| Event | When SlideDrift sends it |
|---|---|
post.published | A scheduled or Publish now post went live on LinkedIn. |
post.failed | A post couldn't be published and needs your attention. |
post.first_comment_failed | The post went live, but its first comment didn't. |
account.reconnect_needed | A LinkedIn connection expires within 14 days (sent at 14 and 3 days), or LinkedIn stopped accepting it. |
carousel.exported | A carousel was exported as a PDF or PNG. Off by default. |
Use with Zapier
- Create a Zap that starts with Webhooks by Zapier and choose the Catch Hook trigger. Webhooks by Zapier needs a paid Zapier plan.
- Copy the webhook URL Zapier shows you and add it as an endpoint in SlideDrift.
- Choose Send test in SlideDrift, then test the trigger in Zapier to load the sample and map its fields.
Use with Make
- Start a scenario with the Webhooks app and its Custom webhook trigger.
- Add a webhook, copy its address and add it as an endpoint in SlideDrift.
- While Make is waiting to determine the data structure, choose Send test in SlideDrift.
Use with n8n
- Add a Webhook trigger node and set the HTTP method to POST.
- Add its Production URL as an endpoint in SlideDrift. It receives events once the workflow is published.
- 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"
}
}
}ididentifies the event. It stays the same when a delivery is retried.timestampis when the event happened.testistruefor requests sent with Send test. Their data is sample data.linkedin_post_urlis a link when LinkedIn gives one; otherwise uselinkedin_post_urn.account.typeispersonfor a profile andorganizationfor 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
| Header | Value |
|---|---|
webhook-id | The event id. The same on every retry. |
webhook-timestamp | When this attempt was sent, in Unix seconds. |
webhook-signature | v1, followed by the signature. |
Idempotency-Key | The event id again, for tools that look for this header. |
SlideDrift-Event | The event type, for example post.published. |
Requests follow the Standard Webhooks specification, so its libraries can verify them. To check a signature yourself:
- Take your signing secret, remove
whsec_and decode the rest from base64. That is the key. - Compute HMAC-SHA256 of
webhook-id,.,webhook-timestamp,.and the raw request body, then base64-encode it. - Compare it with the value after
v1,inwebhook-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.