Subscribe to lead and campaign events with signed webhooks.
Subscribe to one or many. All events share the same signed envelope.
| Category | Events |
|---|---|
| Leads | lead.created · lead.enriched · lead.scored |
| Campaigns | campaign.started · campaign.paused · campaign.completed |
| Outreach | outreach.sent · outreach.opened · outreach.replied · outreach.bounced |
| Pipeline | conversion.registered · alert.fired |
Every delivery is signed with HMAC-SHA256 using your webhook secret.
# Verify the X-GLS-Signature header
import hmac, hashlib
def verify(request_body: bytes, signature_header: str, secret: str) -> bool:
expected = hmac.new(
secret.encode(), request_body, hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature_header)The signature header is X-GLS-Signature. Compute the HMAC on the raw request body — not the parsed JSON — using the secret you copy once from the dashboard.
Durable delivery with exponential backoff.
| Attempt | Backoff |
|---|---|
| 1 (initial) | immediate |
| 2 | 1 second |
| 3 | 4 seconds |
| 4 | 16 seconds |
| 5 (final) | 32 seconds |
After 5 failed attempts, the delivery is marked failed and dropped. Deliveries older than 24 hours are never retried.
Three steps to go live.
{
"event": "lead.scored",
"timestamp": "2026-02-13T10:04:22Z",
"data": {
"lead_id": "ld_01HPQRS",
"email": "founder@example.com",
"grade": "A",
"score": 87,
"signals": {
"role_match": true,
"icp_fit": 0.92,
"verified_email": true
}
},
"attempt": 1,
"delivery_id": "dlv_01HPQRT"
}We're rolling out webhook event delivery to Scale and Enterprise customers. Request your spot and we'll contact you within 48 hours.
Scale and Enterprise plans. Set up in under 2 minutes.