Integrations
Build any workflow with Crispy as your event source.
Crispy is an event-native LinkedIn engine. Every meaningful state change fires a signed webhook with full contact and company context. Subscribe from Make, n8n, Zapier, or any HTTP endpoint, then compose the rest of your stack however you like.
The canonical use case
If an invitation hasn't been accepted in 7 days, fire a webhook into my cold-email sequencer.
No competitor solves this cleanly without locking your workflow inside their UI. Crispy ships invitation.not_accepted_after as a first-class scheduled event with automatic cancellation when the contact accepts inside the window.
Reference automations
Five end-to-end recipes plus a verification reference. Each page includes a sample payload, exact subscription config, and step-by-step setup for the platforms that matter.
Invitation not accepted in 7 days
CanonicalThe canonical use case. When an invitation isn't accepted within 7 days, fire a webhook into Instantly (or any cold-email tool) and start an email sequence. Cancellation is automatic if they accept.
invitation.not_accepted_afterFirst reply to HubSpot deal + Slack
When a contact replies for the first time, create a deal in HubSpot and post the message to a Slack channel so your team can jump on the warm lead.
contact.first_inbound_messageCompany replied: tag in Attio (ABM)
When any contact at a target account replies, tag the company as engaged in your CRM. Warm-the-committee logic for account-based outreach.
company.contact_repliedMigrating from Lemlist
Bring your Lemlist lead IDs across via custom_attrs, then push declined invitations back to a Lemlist email-only sequence.
invitation.declinedDynamic campaign pause via cron
Poll your analytics daily. If the 7-day acceptance rate drops below 10%, pause the campaign automatically. Not webhook-driven, but uses the same surface for cron-style logic.
analytics pollmanage_outreach(pause)HMAC verification (Node, Python, Go)
ReferenceCopy-pasteable code for verifying the v1 Webhook-Signature envelope. Includes timing-safe comparison and two-secret rotation handling.
Webhook-Signature: v1,t=...,s=...How it fits together
- Subscribe to one or more events via
POST /api/v1/subscriptionswith a target webhook URL and an optional filter. - Receive a signed payload at your endpoint. The body input to the HMAC is
v1.<timestamp>.<raw_body>; the header isWebhook-Signature: v1,t=<ts>,s=<hex>. - Verify the signature using your per-webhook signing secret. See the HMAC verification page for Node, Python, and Go snippets.
- Idempotency: every delivery includes a stable
Webhook-Event-Idheader that is identical across retries. Store it for 7 days and reject duplicates. - Filter at the source: subscriptions accept a
filterwithis_first,match, and operators ($contains,$gte,$lte,$in) so you don't fan-out events you'll throw away.