Skip to navigation

Partner lead webhook event

The lead webhook a partner organization receives.
View as Markdown

A partner organization’s lead webhook sends one event, contact_request_created, each time a new lead is created on a profile the organization owns. This page describes that payload. For headers, the signature check and how to reply, see Verify and handle webhook deliveries.

Directory owners receive a different, larger payload under the same event name. That one is described in Directory webhook events and payloads.

When it is sent

One delivery for every new lead on any profile the organization owns, however it was created:

  • a visitor submits the contact form on the partner’s profile
  • the directory’s team assigns a matchmaking request to the partner
  • the directory owner creates the lead through the API

It is not sent when a lead changes later (accepted, declined, status updates). It is not sent for a directory whose owner has switched partner lead delivery off; it is on by default.

Setting it up

A partner adds the webhook in the PartnerPage dashboard under Settings, then Developers, on the Lead webhook card. Each organization has one webhook and its own signing secret. The step-by-step guide is in the Help Center: Send new leads to your own tools with a webhook.

The URL must:

  • start with https://
  • resolve to a public address (not localhost, .local, .internal or a private network)
  • not contain a username or password
  • be at most 255 characters
  • be the final address: redirects are not followed

Payload

FieldMeaning
entry_idId of the partner profile that received the lead
directory_idId of the directory it came from
organization_idThe partner organization’s id, the same Organization ID shown on the Developers page
contact_request.idLead id
contact_request.createdWhen the lead was created, in UTC, formatted YYYY-MM-DD HH:MM
contact_request.statepending for a new lead
contact_request.project_statusnull for a new lead
contact_request.first_name, last_name, email, phoneThe lead’s contact details
contact_request.company_name, company_websiteThe lead’s company
contact_request.commentsThe message the lead wrote
contact_request.utm_query_paramsUTM parameters captured on the page, or null
contact_request.sourcecontact_request (submitted on the profile) or matchmaking (assigned from a matchmaking request)
contact_request.decline_reason, decline_reason_detailnull for a new lead
contact_request.entryThe profile: id, title, owner (the partner organization’s id) and is_deleted (false for a new lead)
contact_request.directoryThe directory: id and name
custom_fieldsAnswers to the directory’s custom form questions. Each item has export_label, internal_label and text_value
partner_contact_request_urlLink to the lead in the partner’s PartnerPage dashboard
{
"directory_id": "dddddddd-0000-4000-8000-000000000001",
"entry_id": "eeeeeeee-0000-4000-8000-000000000001",
"organization_id": "aaaaaaaa-0000-4000-8000-000000000002",
"contact_request": {
"id": "cccccccc-0000-4000-8000-000000000001",
"created": "2025-11-05 16:19",
"state": "pending",
"project_status": null,
"first_name": "Jane",
"last_name": "Doe",
"email": "jane.doe@example.com",
"phone": "5555550100",
"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": "eeeeeeee-0000-4000-8000-000000000001",
"owner": "aaaaaaaa-0000-4000-8000-000000000002",
"title": "Northwind Consulting",
"is_deleted": false
},
"directory": {
"id": "dddddddd-0000-4000-8000-000000000001",
"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/dddddddd-0000-4000-8000-000000000001/partner/eeeeeeee-0000-4000-8000-000000000001/contact-requests/cccccccc-0000-4000-8000-000000000001"
}

Differences from the directory owner’s payload

If you build one receiver for both kinds of webhook, note what the partner payload leaves out. It carries what the partner sees on the lead in their dashboard, and nothing the directory owner keeps to itself.

Directory owner’s payloadPartner payload
directory_contact_request_url (link into the owner’s dashboard)Replaced by partner_contact_request_url
contact_request.directory with org_id, org_name, contact_request_project_statuses_enabledOnly id and name
terms, privacy, shareNot included
custom_form_response_id, match_origin, routing_source, legacy_filter_responsesNot included
close_reason, close_reason_detailNot included
No organization_id at the top levelorganization_id included