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
In your PartnerPage dashboard, go to Settings, then Developers.
On the Lead webhook card, click Add webhook.
Enter a Name for your own reference, for example "My CRM".
Enter the URL we should send leads to.
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
localhostor 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 |
| The id of your profile that received the lead |
| The id of the directory it came from |
| Your organization's id, the same Organization ID shown on the Developers page |
| The lead's id |
| When the lead was created, in UTC, formatted |
|
|
|
|
| The lead's contact details |
| The lead's company |
| The message the lead wrote |
| Campaign parameters captured on the page, or |
|
|
|
|
| Your profile: |
| The directory: |
| Answers to the directory's custom form questions. Each item has |
| 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
POSTand Respond to "Immediately". Activate the workflow and copy the Production URL.
Questions? Message us from the chat in your dashboard.
