WEBHOOKS

20+ LinkedIn event types.
Zero polling.

When something happens on LinkedIn, your systems hear about it: a message arrives, a connection request is accepted, an account needs attention. Curviate delivers HMAC-signed events to any HTTPS endpoint you register: your backend, an n8n flow, a serverless function.

20+ event typesHMAC-SHA256 signedAutomatic retriesDelivery log in the dashboard
POST → https://your-endpoint.example/hooks
09:41:02message.received200
09:41:27connection.accepted200
09:44:10message.read200
10:02:55account.reconnect_needed200
10:03:41message.reaction200
10:11:08account.reconnected200
01DELIVERY

How do Curviate webhooks work?

Register an endpoint URL, choose the events, and bind the webhook to the accounts it should watch; a webhook is always scoped to explicit accounts you own. From then on, each event is an HTTPS POST to your endpoint, signed with your webhook's secret. Verification is one function call. If your endpoint is down or returns a server error, delivery retries with exponential backoff. Every attempt is logged: the dashboard shows each webhook's health, its last delivery and a rolling success rate, so a silently failing endpoint has nowhere to hide.

Sensible defaults, deliberate opt-ins: the high-value events arrive out of the box, and the noisy or backfill-prone ones (chat updates, full connection sync, initial-sync progress) are subscribed explicitly, so your first webhook is quiet by default.

02EVENT TYPES

Every event type

All 26 events, grouped by source. Default means a new webhook for that source receives it without further configuration; Opt-in means you subscribe to it explicitly.

Messaging (7)

EventFires whenSubscription
message.receiveda new message arrives in a chatDefault
message.reada message you sent is readDefault
message.reactionsomeone reacts to a messageDefault
message.editeda message in a watched chat is editedDefault
message.deleteda message in a watched chat is deletedDefault
chat.updateda chat's metadata changesOpt-in
chat.deleteda chat is deletedOpt-in

Connections (2)

EventFires whenSubscription
connection.accepteda connection request you sent is acceptedDefault
connection.newa new first-degree connection is detected; sourced from periodic sync rather than real time, and the first subscription can deliver a backfill burstOpt-in

Account lifecycle (15)

EventFires whenSubscription
account.createda LinkedIn account is first linkedDefault
account.connectedthe account comes onlineDefault
account.synceda sync cycle completes; catalogued but not currently delivered, read account state insteadNOT DELIVERED
account.reconnecteda reconnect succeedsDefault
account.reconnect_neededcredentials or cookies need refreshingDefault
account.restrictedthe account is connected but some actions fail (a LinkedIn restriction, or one LinkedIn product failing); a restriction usually arrives via a daily poll, a product failure immediatelyDefault
account.creation_failedlinking an account fails; catalogued but not currently delivered, read account state insteadNOT DELIVERED
account.disconnectedthe account is disconnectedDefault
account.errorthe account enters an error stateDefault
account.pausedoperations on the account are paused; catalogued but not currently delivered, read account state insteadNOT DELIVERED
account.connectinga connect attempt is in progress; catalogued but not currently deliveredNOT DELIVERED
account.permission_revokedLinkedIn-side permissions are withdrawn; catalogued but not currently delivered, read account state insteadNOT DELIVERED
account.initial_sync.runningthe first full sync startsOpt-in
account.initial_sync.completedthe first full sync finishesOpt-in
account.initial_sync.failedthe first full sync failsOpt-in

Five account events are catalogued and subscribable but not delivered by the current platform; account state reads cover the same ground. They are not counted toward the 20+ claim.

Scheduled posts (2)

EventFires whenSubscription
post.publisheda scheduled post goes liveDefault
post.publish_faileda scheduled post could not be publishedDefault
03VERIFICATION

How do I verify a webhook signature?

Every delivery carries a Curviate-Signature header: a timestamp plus an HMAC-SHA256 of the raw body under your webhook's secret, with a five-minute replay tolerance. The SDK collapses verification, replay-window enforcement and parsing into one call:

verify.ts
import { constructEvent } from "@curviate/sdk";

const event = await constructEvent(
  rawBody,
  req.headers["curviate-signature"],
  process.env.CURVIATE_WEBHOOK_SECRET!,
);
// event is typed; branch on event.event

Verifying by hand instead is a documented, standard HMAC comparison; the docs walk through it line by line.

04FAQ

Questions, answered

Are there webhooks for LinkedIn events?

Yes. Curviate fires 20+ HMAC-signed event types covering messaging, connections and account lifecycle, delivered to any HTTPS endpoint you register and scoped to the LinkedIn accounts you choose. Failed deliveries retry with exponential backoff, and the dashboard logs every attempt.

How do I get notified when someone accepts my connection request?

Subscribe to connection.accepted. It is a default event: register a webhook for the connections source and the acceptance arrives as a signed POST with the account and connection identified in the payload. Delivery rides a periodic sync rather than a live push, so expect minutes to hours, not seconds.

What happens when my endpoint is down?

Delivery retries on server errors with exponential backoff. Every attempt is recorded; the dashboard shows each webhook's health, its last delivery and a rolling success rate, so you spot a failing endpoint in days, not weeks.

Can webhooks feed n8n, Make or Zapier?

Yes; a webhook is just a signed HTTPS POST, which every workflow tool ingests natively. Point the webhook at the tool's inbound-webhook trigger and branch on the event field. This is how LinkedIn events start automations in the rest of your stack today, ahead of the packaged integrations.

Webhooks are registered through the API or the dashboard; they are the outbound half of every integration. See also the actions catalogue and use cases.