Documentation

Integrations

Automatically push enriched leads to your CRM, trigger webhooks, or pipe data into automation tools like Zapier, Make, and n8n — all from your LeadZap dashboard.

On This Page

Overview

LeadZap integrations fire automatically when a lead generation job completes. Every lead in the job — with enriched emails, phone numbers, social URLs, and people data — is delivered to your configured endpoint or CRM.

You can set up integrations from the Integrations tab in your dashboard. Each user can configure up to 10 integrations. All enabled integrations are triggered on every job completion.

Supported Types

TypeUse Case
webhookHTTP POST to any URL — works with Zapier, Make (Integromat), n8n, custom backends
hubspotCreate contacts in HubSpot CRM automatically
pipedriveCreate organisations, persons, and deals in Pipedrive CRM

Webhook Integration

Send a JSON payload of all leads to any HTTP endpoint whenever a job finishes. Perfect for connecting to Zapier, Make, n8n, or your own backend.

Setup

  1. Go to the Integrations tab in your dashboard.
  2. Select Webhook (Zapier / Make / n8n) from the type dropdown.
  3. Enter a Name (e.g., "Zapier Lead Sync").
  4. Paste your Webhook URL.
  5. Optionally set a Signing Secret for HMAC verification (see Security).
  6. Click Add Integration.

Zapier Example

  1. Create a new Zap with the "Webhooks by Zapier" → Catch Hook trigger.
  2. Copy the Zapier webhook URL.
  3. Paste it into LeadZap's Webhook URL field.
  4. Run a test job on LeadZap — the leads will appear in Zapier.
  5. Add actions (Google Sheets, email, CRM, etc.).

Make (Integromat) Example

  1. Create a new scenario with a Custom Webhook module.
  2. Copy the webhook URL from Make.
  3. Paste it into LeadZap's Webhook URL field and run a test job to register the data structure.

Tip: Use the Test button on each integration card to send a sample payload before running a real job.

HubSpot CRM

Automatically create contacts in your HubSpot CRM for every lead in a completed job.

Setup

  1. In HubSpot, go to Settings → Integrations → Private Apps.
  2. Create a new Private App with the crm.objects.contacts.write scope.
  3. Copy the Access Token.
  4. In LeadZap, select HubSpot CRM as the integration type.
  5. Paste your access token in the API Key / Token field.
  6. Click Add Integration.

What Gets Synced

HubSpot FieldLeadZap Field
emailPrimary email
firstname / lastnameOwner name (split)
companyBusiness name
phonePhone number
websiteWebsite URL
cityCity
stateState/Region
industryIndustry

Note: Contacts are created in batches of 100. Leads without an email address are skipped (HubSpot requires email). Duplicates are handled by HubSpot's deduplication rules.

Pipedrive CRM

Create organisations, persons, and optionally deals in Pipedrive for each lead.

Setup

  1. In Pipedrive, go to Settings → Personal preferences → API.
  2. Copy your API Token.
  3. In LeadZap, select Pipedrive CRM as the integration type.
  4. Paste the token in the API Key / Token field.
  5. Optionally enter a Pipeline ID to auto-create deals.
  6. Click Add Integration.

What Gets Created

  1. Organisation — the business (name, address).
  2. Person — linked to the org (owner name, email, phone).
  3. Deal (optional) — if a Pipeline ID is set, a deal named "LeadZap — {Business Name}" is added to that pipeline.

Pipeline ID: You can find your Pipeline ID in Pipedrive under Settings → Pipelines. It's the numeric ID in the URL (e.g., /pipeline/1 → ID is 1).

Webhook Payload Format

When a job completes, the webhook receives a POST request with the following JSON body:

{
  "event": "job.completed",
  "job_id": 42,
  "total_leads": 25,
  "timestamp": "2026-02-16T12:00:00.000Z",
  "leads": [
    {
      "business_name": "Acme Plumbing",
      "industry": "plumbing",
      "city": "Austin",
      "state": "TX",
      "phone": "+15125551234",
      "phone_2": "+15125555678",
      "email": "john@acmeplumbing.com",
      "email_2": "info@acmeplumbing.com",
      "email_3": null,
      "email_verified": 1,
      "email_source": "scraped+icypeas",
      "website": "https://acmeplumbing.com",
      "google_rating": 4.8,
      "google_review_count": 127,
      "owner_name": "John Smith",
      "business_description": "Full-service plumbing...",
      "facebook_url": "https://facebook.com/acmeplumbing",
      "instagram_url": "https://instagram.com/acmeplumbing",
      "linkedin_url": null,
      "twitter_url": null,
      "youtube_url": null,
      "people": [
        { "name": "John Smith", "role": "Owner" },
        { "name": "Jane Doe", "role": "Office Manager" }
      ]
    }
  ]
}

Headers

HeaderValue
Content-Typeapplication/json
X-LeadZap-Eventjob.completed
X-LeadZap-SignatureHMAC-SHA256 hex digest (only if signing secret is set)
User-AgentLeadZap-Webhook/1.0

Security & HMAC Signing

If you set a Signing Secret on your webhook, every payload is signed with HMAC-SHA256. This lets your server verify that the request genuinely came from LeadZap.

How to Verify (Node.js Example)

import crypto from 'crypto';

function verifySignature(body, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(body)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}

// In your webhook handler:
const rawBody = await request.text();
const sig = request.headers.get('X-LeadZap-Signature');
if (!verifySignature(rawBody, sig, YOUR_SECRET)) {
  return new Response('Invalid signature', { status: 401 });
}
const data = JSON.parse(rawBody);

Python Example

import hmac, hashlib

def verify_signature(body: bytes, signature: str, secret: str) -> bool:
    expected = hmac.new(
        secret.encode(), body, hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(signature, expected)

Limits & Troubleshooting

Limits

Troubleshooting

IssueFix
Test button shows "error"Check your URL or API key is correct. For webhooks, ensure the endpoint accepts POST requests.
Leads not appearing in HubSpotEnsure your Private App has the crm.objects.contacts.write scope. Leads without email are skipped.
Pipedrive deals not createdVerify the Pipeline ID is correct. Check Pipedrive API limits.
Webhook returns 4xx/5xxLeadZap logs the HTTP status in last_status. Check your server logs for errors.
Duplicate contactsHubSpot deduplicates by email. In Pipedrive, check "Merge duplicates" settings.

Need help? Email us at support@leadzap.dev with your job ID and integration name — we'll check the logs.