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:

  1. 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.
  2. Manual push. You can also push specific leads on demand through the API: POST /leads/push with destination: "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

  1. Open Settings → Integrations and open the Custom API panel.
  2. Add your endpoint URL and the auth header Satellyte should send with every request.
  3. 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.

FieldTypeWhat it is
sourcestringWhere the delivery originated
workspace_idstringYour workspace
lead_countnumberHow many leads are in this delivery
dispatched_atISO-8601 stringWhen Satellyte sent the request
leads[].idstringLead identifier
leads[].full_namestringFull name; first_name and last_name are also provided when known
leads[].titlestring | nullJob title
leads[].companystring | nullCompany name
leads[].linkedin_urlstring | nullLinkedIn profile URL
leads[].emailstring | nullBehaves the same as in the API: null until enrichment discovers and verifies one, and verified results are what deduct credits
leads[].phonestring | nullPhone from enrichment, when found
leads[].locationstring | nullCity, region, country
leads[].scorenumber | nullLead fit score
leads[].statusstring | nullLead status in your workspace
leads[].radar_idstring | nullThe radar that produced the lead, which is how you know which signal fired
leads[].campaign_idstring | nullCampaign association, when pushed to one
leads[].created_atISO-8601 string | nullWhen 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 leads so 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 POST works. Check the auth header, iterate the leads array, 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.