Skip to main content

Send new leads to your own tools with a webhook

Add a lead webhook under Settings, then Developers, and every new lead on your profiles is pushed to your CRM or automation tool within seconds.

M
Written by Mario Tarabbia

Get every new lead on your PartnerPage profiles pushed to your CRM or automation tool the moment it arrives. You add one HTTPS URL, and from then on each new lead is sent to it within seconds, so nobody has to re-type leads from an email.

Before you start

  • You need access to Settings, then Developers in your PartnerPage dashboard. It is available to team members whose role can manage API access tokens.

  • You need a URL that can receive the lead: a webhook URL from Zapier, Make or n8n, or an endpoint your developers built.

  • Each organization has one lead webhook. It covers all your profiles in every directory you are listed in.

Add your webhook

  1. In your PartnerPage dashboard, go to Settings, then Developers.

  2. On the Lead webhook card, click Add webhook.

  3. Enter a Name for your own reference, for example "My CRM".

  4. Enter the URL we should send leads to.

  5. Click Add webhook.

The card now shows your Signing secret. Copy it into your receiving tool if it can check signatures (see "Check that a lead really came from PartnerPage" below).

The URL must:

  • start with https://

  • be reachable from the public internet (not localhost or an address on a private network)

  • not contain a username or password

  • be the final address: we do not follow redirects

Which leads are sent

You receive one delivery for every new lead on any profile your organization owns, however it was created:

  • a visitor submits the contact form on your profile

  • the directory's team assigns a matchmaking request to you

  • the directory owner creates the lead for you through their own integration

Two things to know:

  • Only new leads are sent. Later changes, such as accepting or declining the lead or updating its status, do not send another delivery.

  • The directory owner can switch this off. Each directory decides whether its partners may push leads to their own tools. It is on by default. If leads from one directory never show up in your delivery history, ask that directory's partner team.

What a delivery contains

Each delivery is a POST with a JSON body. It carries the same details you see on the lead in your PartnerPage dashboard.

Field

Meaning

entry_id

The id of your profile that received the lead

directory_id

The id of the directory it came from

organization_id

Your organization's id, the same Organization ID shown on the Developers page

contact_request.id

The lead's id

contact_request.created

When the lead was created, in UTC, formatted YYYY-MM-DD HH:MM

contact_request.state

pending for a new lead

contact_request.project_status

null for a new lead

contact_request.first_name, last_name, email, phone

The lead's contact details

contact_request.company_name, company_website

The lead's company

contact_request.comments

The message the lead wrote

contact_request.utm_query_params

Campaign parameters captured on the page, or null

contact_request.source

contact_request (submitted on your profile) or matchmaking (assigned to you from a matchmaking request)

contact_request.decline_reason, decline_reason_detail

null for a new lead

contact_request.entry

Your profile: id, title and owner (your organization's id)

contact_request.directory

The directory: id and name

custom_fields

Answers to the directory's custom form questions. Each item has export_label, internal_label and text_value

partner_contact_request_url

A link that opens the lead in your PartnerPage dashboard

{
"entry_id": "10c83cb2-ec23-49c5-b1c1-36ad2c5f5744",
"directory_id": "a6736e4f-ad5b-4cc9-856b-9f3bf6688a79",
"organization_id": "6ba56da9-a8ae-4d84-9337-cedabefdcdc6",
"contact_request": {
"id": "58e8eba8-ce91-4ab7-870a-0c33108b7101",
"created": "2026-10-05 16:19",
"state": "pending",
"project_status": null,
"first_name": "Jon",
"last_name": "Smith",
"email": "jon.smith@example.com",
"phone": "8322787786",
"company_name": "Example Manufacturing",
"company_website": "https://www.example.com/",
"comments": "We need help rolling out the product to 200 users.",
"utm_query_params": null,
"source": "contact_request",
"decline_reason": null,
"decline_reason_detail": null,
"entry": {
"id": "10c83cb2-ec23-49c5-b1c1-36ad2c5f5744",
"title": "Northwind Consulting",
"owner": "6ba56da9-a8ae-4d84-9337-cedabefdcdc6"
},
"directory": {
"id": "a6736e4f-ad5b-4cc9-856b-9f3bf6688a79",
"name": "Acme Partner Directory"
}
},
"custom_fields": [
{
"export_label": "Desired timeline",
"internal_label": "desired_timeline",
"text_value": "Q2"
}
],
"partner_contact_request_url": "https://directory.partnerpage.io/profiles/solutions/a6736e4f-ad5b-4cc9-856b-9f3bf6688a79/partner/10c83cb2-ec23-49c5-b1c1-36ad2c5f5744/contact-requests/58e8eba8-ce91-4ab7-870a-0c33108b7101"
}

The request also carries an X-Event-Type header with the value contact_request_created. We may add fields over time, so ignore fields you do not recognise instead of rejecting the request.

Check that a lead really came from PartnerPage

Every delivery is signed with your organization's signing secret, shown on the Lead webhook card. The X-Webhook-Signature header is the HMAC-SHA256 of the raw request body, hex encoded, with your signing secret as the key. Your developer, or a tool that supports it, can compute the same value and compare the two to confirm the request came from PartnerPage.

Each delivery also carries an X-Webhook-Delivery-Id header. If the same delivery is ever sent twice, the id is the same, so your tool can ignore the repeat.

To replace the secret, click Regenerate. The new secret applies immediately: deliveries fail the signature check in your tool until you update it with the new secret. Save or discard any unsaved changes on the card first; Regenerate is unavailable while there are unsaved changes.

Developer details are in the API docs: Verify and handle webhook deliveries and Partner lead webhook event.

See what was sent

Once you have a webhook, a Deliveries card appears below it. It lists every delivery, and the Errors view shows only the ones that failed. Click View on a delivery to see when it was sent, the event, the response from your tool and the exact payload.

Your endpoint should reply with a 2xx status within 15 seconds. A delivery that fails is not sent again, so check the Errors view from time to time. The lead itself is never lost: it is always in your PartnerPage dashboard.

Pause, change or delete the webhook

  • Pause. Turn the toggle off and click Save. Deliveries stop; your settings and delivery history are kept.

  • Change. Edit the name or URL and click Save.

  • Delete. Click Delete on the card. Deliveries stop and the delivery history is deleted. This cannot be undone.

Quick start with Zapier, Make or n8n

  • Zapier. Create a Zap with the trigger "Webhooks by Zapier", event "Catch Hook". Copy the URL it gives you into the URL field, then add an action that creates the lead in your CRM.

  • Make. Add a "Custom webhook" module and copy its URL.

  • n8n. Add a Webhook node, set the method to POST and Respond to "Immediately". Activate the workflow and copy the Production URL.

Questions? Message us from the chat in your dashboard.

Did this answer your question?