Webhooks
Send Satellyte leads to any endpoint through Custom API.
Webhooks live under Custom API in Satellyte. Use them to push radar leads to a CRM, an internal service, or an automation tool like n8n, Zapier, or Make. If your destination is Instantly or HeyReach, skip the webhook and use the native integrations instead; the webhook is for everything else.
How delivery works
Satellyte sends a POST request to your endpoint with a JSON body containing a
leads array. There are two ways a delivery gets triggered:
- Auto-sync. With auto-sync enabled, new radar leads are pushed to your endpoint as they surface. Set it once and the feed runs on its own.
- Manual push. You can also push specific leads on demand through the API:
POST /leads/pushwithdestination: "webhook_url". Useful when your own pipeline decides which leads to forward.
The payload fields are adjustable in the Custom API panel. You can trim the default shape, append custom fields, or replace the shape entirely, so the body your endpoint receives matches what you configure.
Set up a webhook
Settings → Integrations: Custom API card
Custom API modal: endpoint, auth header, and payload fields
- Open Settings → Integrations and open the Custom API panel.
- Add your endpoint URL and the auth header Satellyte should send with every request.
- Adjust the payload fields if you want a different shape, enable auto-sync, and save.
Payload
The body is an envelope with delivery metadata plus a leads array. Each lead
carries the same fields as the lead object the API serves (the same set you get
from a lead export). The shape:
{
"source": "string",
"workspace_id": "string",
"lead_count": 0,
"leads": [
{
"id": "string",
"full_name": "string",
"first_name": "string | null",
"last_name": "string | null",
"title": "string | null",
"company": "string | null",
"linkedin_url": "string | null",
"email": "string | null",
"phone": "string | null",
"location": "string | null",
"score": "number | null",
"status": "string | null",
"radar_id": "string | null",
"campaign_id": "string | null",
"created_at": "ISO-8601 string | null"
}
],
"dispatched_at": "ISO-8601 string"
}Fields you toggle off in the payload editor drop out of the shape, and custom fields you add appear alongside these.
| Field | Type | What it is |
|---|---|---|
| source | string | Where the delivery originated |
| workspace_id | string | Your workspace |
| lead_count | number | How many leads are in this delivery |
| dispatched_at | ISO-8601 string | When Satellyte sent the request |
| leads[].id | string | Lead identifier |
| leads[].full_name | string | Full name; first_name and last_name are also provided when known |
| leads[].title | string | null | Job title |
| leads[].company | string | null | Company name |
| leads[].linkedin_url | string | null | LinkedIn profile URL |
| leads[].email | string | null | Behaves the same as in the API: null until enrichment discovers and verifies one, and verified results are what deduct credits |
| leads[].phone | string | null | Phone from enrichment, when found |
| leads[].location | string | null | City, region, country |
| leads[].score | number | null | Lead fit score |
| leads[].status | string | null | Lead status in your workspace |
| leads[].radar_id | string | null | The radar that produced the lead, which is how you know which signal fired |
| leads[].campaign_id | string | null | Campaign association, when pushed to one |
| leads[].created_at | ISO-8601 string | null | When the lead was created |
Receiving it
- Zapier. Create a Zap with Webhooks by Zapier as the trigger and choose Catch Hook. Paste the generated URL into the Custom API panel.
- n8n. Add a Webhook node, then a Split Out node on
leadsso each lead becomes its own item for the rest of the flow. - Make. Use a custom webhook module and paste its URL the same way.
- Your own service. Any endpoint that accepts a JSON
POSTworks. Check the auth header, iterate theleadsarray, done.
Use a private auth header value and validate it on your receiver before trusting the payload.
See it in a full workflow
The tech stack change guide covers the radar side, and the competitor churn monitoring playbook walks through a complete signal-to-outreach loop built on this webhook.