Events
Each webhook sends only the events you choose.
Events are sent only for things Growth Link actually recorded. A repeated notice from LinkedIn does not send a second event. Messages older than 72 hours when they are first imported (for example, old history from an Inbox sync) do not send
reply.received. A webhook receives only events that happen after it was added.
Connect Zapier
- In Zapier, create a Zap and choose Webhooks by Zapier as the trigger, with the Catch Hook event.
- Copy the webhook URL Zapier shows you (it starts with
https://hooks.zapier.com/hooks/catch/). - In Growth Link, open Settings → Integrations & API, choose Add webhook, paste the URL and pick your events.
- Choose Send test so Zapier receives a sample request, then continue setting up your Zap.
Connect Make
- In Make, add the Webhooks module Custom webhook as the first module of a scenario and create a webhook.
- Copy its address (for example
https://hook.us1.make.com/…). - In Growth Link, add it as a webhook and choose Send test. Make uses the test request to learn the data structure.
Payload
Every request is aPOST with a JSON body like this:
idis unique per event and stays the same on every retry. Use it to ignore duplicates.occurred_atis when it happened;created_atis when Growth Link recorded the event.personisnullforcampaign.finished.campaignisnullwhen the person is in no campaign.nameandlinkedin_urlcan benullwhen they are not known.- Message text is never included, and no email addresses or phone numbers are sent.
- Send test sends
"type": "webhook.test"with"data": { "person": null, "campaign": null, "test": true }.
Verify signatures
Each webhook has its own signing secret (it starts withwhsec_). It is shown once when you add the webhook or rotate the secret; afterwards only its last four characters are shown. Zapier and Make work without it, but your own server should check it.
The signature is an HMAC-SHA256, keyed with the whole secret, of the timestamp, a period and the exact raw request body. Example for Node.js 18 or later with Express:
Deliveries and retries
- Answer with any
2xxstatus within 10 seconds. Anything else, a timeout or a redirect counts as a failure. Redirects are never followed. - Failed deliveries are retried up to 8 attempts in total, after about 1 minute, 5 minutes, 30 minutes, 2 hours, 5 hours, 8 hours and 8 hours (about 24 hours altogether).
- Delivery is at least once and not strictly in order: use
idto drop duplicates andoccurred_atto order events. - Deliveries are sent by a background job that runs every minute and sends a limited number per run, so a large campaign launch can take a while to arrive in full.
- Deliveries shows the last 50 attempts for a webhook: the event, status, HTTP status code and the first 200 characters of the response. Nothing else from your response is stored. Delivery history is kept for 30 days.
- If every delivery fails for more than 24 hours (and at least 8 attempts in a row), the webhook is turned off and its queued events are cancelled. A
410 Goneresponse (for example, from a deleted Zap) turns it off immediately. Fix the receiver, choose Send test, then Turn on. Events from while it was off are not resent.
URL rules
To protect your workspace and our servers, a webhook URL must:- start with
https://and use the standard port (443); - use a public domain name, not an IP address,
localhost, or an internal name such as.localor.internal; - not contain a user name or password.