Outbound Webhooks
IntegrationsLast updated July 2026
Overview
Outbound webhooks let Scoor push real-time events to any external URL — your CRM, a Zapier workflow, a GHL inbound webhook, or your own backend. When something happens in Scoor (lead created, scored, stage changed), Scoor fires an HTTP POST to your endpoint within seconds.
Creating a webhook
- Go to Settings → Integrations → Webhooks
- Click Add Webhook
- Enter your destination URL (must be publicly accessible HTTPS)
- Select the events you want to receive
- Optionally add a secret for signature verification
- Click Save — use the Test button to send a sample payload
Scoor retries failed webhook deliveries up to 5 times with exponential backoff (1s, 5s, 30s, 5min, 30min). A delivery is considered failed if your endpoint returns a non-2xx status or doesn't respond within 10 seconds.
Events
| Event | Triggered when |
|---|---|
lead.created | A new lead is added to Scoor |
lead.scored | AI scoring + enrichment completes |
lead.stage_changed | Lead moves to a new pipeline stage |
lead.updated | Any field on the lead is updated |
lead.assigned | Lead is assigned to a team member |
call.completed | A Power Dialer call ends |
Payload format
All webhooks use JSON with this envelope:
POST your-endpoint.com/webhook
{
"event": "lead.scored",
"timestamp": "2026-07-04T10:00:00Z",
"workspaceId": "ws_abc123",
"data": {
"id": "lead_xyz789",
"name": "Sarah Johnson",
"email": "sarah@techcorp.com",
"phone": "+61412345678",
"leadScore": 84,
"tier": "hot",
"source": "facebook",
"fbCampaignName": "High-Ticket Coaching - July",
"company": "TechCorp Pty Ltd",
"linkedinUrl": "https://linkedin.com/in/sarah-johnson",
"pipelineStage": "new",
"enriched": true,
"createdAt": "2026-07-04T09:58:00Z"
}
}
Signature verification
If you set a webhook secret, Scoor signs every request with an HMAC-SHA256 signature in the X-Scoor-Signature header. Verify it on your server:
Node.js — signature verification
const crypto = require('crypto');
function verifyScoorWebhook(payload, signature, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(payload, 'utf8')
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signature)
);
}
// In your Express handler:
app.post('/webhook', (req, res) => {
const sig = req.headers['x-scoor-signature'];
const valid = verifyScoorWebhook(
JSON.stringify(req.body), sig, process.env.SCOOR_WEBHOOK_SECRET
);
if (!valid) return res.status(401).send('Invalid signature');
// process event...
res.sendStatus(200);
});
Was this page helpful?