Someone invited the account to connect, usually within a minute or two (LinkedIn's My Network badge is the cue; a check every few hours is the fallback). Once per invitation. Invitations already there when Swarmhit first looked are not sent. Accept it with POST /api/v1/users/invite/received/{invitation_id}.
Header Parameters
base64url(HMAC-SHA256(raw body, your webhook's signing secret)), the secret being the whsec_… shown in the console. Verify it over the raw bytes before parsing, and refuse the event when it does not match.
The event id, also event_id in the body: the same on every retry of the event. Deduplicate on it.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
Example Requests
/InvitationReceivedEmail: mail sent Webhook
A mail sent through `POST /emails` has left: `mail_sent`, `origin: api`, `tracking_id` as the send answered. The engine knows only the envelope: the body and subject are empty. `gateway.provider_message_id` is the server's own Message-ID when it rewrote it (Gmail API, Graph).
LinkedIn: message received Webhook
A new message in a LinkedIn conversation, usually within seconds, including the account's own (`is_sender`), typed on LinkedIn or sent through the API. One missed then arrives at the next inbox check; a message seen twice is still one event. `message_id` and `chat_id` match the ids of `GET /api/v1/chats/{id}/messages`. Sales Navigator InMail replies come as this event too, with `subject`, for a seat that sent an InMail through the API in the last 60 days.