PartnerPage API
    • Introduction
    • Authentication
    • Object Overview
    • Verify and handle webhook deliveries
    • Directory webhook events and payloads
    • Partner lead webhook event
    • Directory
      • Forms
        • Get all custom forms
        • Get all currency field options
        • Get all contact request form
        • Get default contact request form
        • Create a cotact request custom form
        • Delete a contact request custom form
      • Callouts
        • Get all callouts
        • Get a callout
        • Create a new callout
        • Update a directory callout
        • Delete a directory callout
      • Badges
        • Get all badges
        • Get a badge
        • Create a badge
        • Update a badge
        • Delete a badge
      • Certifications
        • Get all certifications
        • Get a certification
        • Create a certification
        • Update a certification
        • Delete a certification
      • Filters
        • Filter Options
          • Get all filter options
          • Get a filter option
          • Create a filter option
          • Update a filter option
          • Deletes a filter option
        • Get all filters
        • Get a filter
        • Create a filter
        • Update a filter
        • Deletes a filter
        • Get all internal filters
        • Get all filters for external directory
      • Filter Maps
        • Get all filter option mappings
        • Get a filter option mapping
        • Create a new filter option mapping
        • Update a filter option mapping
        • Delete a filter option mapping
        • Get all filter option mappings for external directory
      • Matchmaking
        • Get all matchmaking requests
      • Tiers
        • Get all tiers
        • Get a tier
        • Create a tier
        • Update a tier
        • Delete a tier
        • Get all entries assigned to an specific tier
        • Assign or Unassign entries to an specific tier
      • Verifications
        • Get all verifications
        • Get a verification
        • Create a verification
        • Update a verification
        • Delete a verification
      • Settings
        • Retrieve the settings for a directory
        • Update the settings for a directory
      • List directories
        GET
      • Get a directory
        GET
      • Create a directory
        POST
      • Update a directory
        PATCH
    • Entry
      • App Entry
        • Callouts
          • Get all callouts
          • Get an entry callout
          • Create a new callout
          • Update a callout
          • Delete a callout
        • Get an app entry
        • Create new app entry
        • Update app entry
        • Delete a app entry
        • Update the recommended order of an app entry
      • Partner Entry
        • Badges
          • Get all badges
          • Get a badge
          • Create a badge
          • Update a badge
          • Delete a badge
        • Callouts
          • Get all callouts
          • Get a callout
          • Create a callout
          • Update a callout
          • Delete a callout
        • Certifications (General)
          • Get all certifications
          • Get a certification
          • Create a certification
          • Update a certification
          • Delete a certification
        • Certifications (Industry)
          • Get all industry certifications
          • Get an industry certification
          • Create an industry certification
          • Update an industry certification
          • Delete an industry certification
        • Certifications (Segment)
          • Get all segment certifications
          • Get a segment certification
          • Create a segment certification
          • Update a segment certification
          • Delete a segment certification
        • Client
          • Get all Clients
          • Get a client
          • Create a client
          • Update a client
          • Delete a client
        • Keywords
          • Get all keywords
          • Get a keyword
          • Create a keyword
          • Update keyword
          • Delete a keyword
        • Locations
          • Get all location
          • Get a location
          • Create a location
          • Update a location
          • Delete a location
        • Media
          • Get all media
          • Get a media
          • Create a media
          • Update a media
          • Delete a media
        • Resources
          • Internal
            • Get all Internal resources
            • Get an internal resource
            • Create an internal resource
            • Update an internal resource
            • Delete an internal resource
          • Get all resouces
          • Get a resource
          • Create a resource
          • Update a resource
          • Delete a resource
        • Special Offers
          • Get all special offer
          • Get a special offer
          • Create a special offer
          • Update a special offer
          • Delete a special offer
        • Testimonials
          • Internal
            • Get all internal testimonial
            • Get an internal testimonial
            • Create an internal testimonial
            • Update an internal testimonial
            • Delete an internal testimonial
          • Get all testimonials
          • Get a testimonial
          • Create a testimonial
          • Update a testimonial
          • Delete a testimonial
        • Use Cases
          • Internal
            • Get all internal use cases
            • Get an internal use cases
            • Create an internal use case
            • Update an internal use case
            • Delete an internal use case
          • Get all use cases
          • Get a use case details
          • Create a use case
          • Update a use case
          • Delete a use case
        • Verifications
          • Get all verifications
          • Get a verification
          • Create a verification
          • Update a verification
          • Delete a verification
        • Contact Information
          • Return entry contact information
        • Invite
          • Get organization matches for partner invite
          • Get partner entry owner organization invite
          • Get partner entry owner user invites
          • Invite organization to own partner entry
          • Invite users to partner entry ownership
        • Entry Edits Approval Flow
          • Partner Entry Submit Review
          • Partner Entry Approve Review
          • Partner Entry Reject Changes
          • Partner Entry Discard Review
        • Get all partner entry
        • Get a partner entry
        • Create a partner entry
        • Update a partner entry
        • Delete a partner entry
        • Bulk upsert partner entries
        • Update the recommended order of a partner entry
      • Get all entries
        GET
    • Contact Request
      • Attachment
        • List contact request attachments
        • Create contact request attachment
        • Delete contact request attachment
      • Get all contact requests
        GET
      • Get a contact request
        GET
      • Create a new partner contact request
        POST
    • Matchmaking
      • Get all matchmaking requests
      • Get a matchmaking request
      • Create a new matchmaking request for a directory
      • Get all partners assigned to matchmaking requests
      • Assign an owner to a matchmaking request
      • Set partners to a matchmaking request
    • Review
      • directory-review-list
      • directory-review-detail
      • directory-review-create
      • Update a review
      • Delete a review
      • reviewsDirectoryExportRetrieve
    • contact-requests
      • Close a contact request
      • Send a reminder to the partner about a contact request
    • directories
      • List contact request routing sources
      • Get the webhook signing secret
      • Rotate the webhook signing secret
    • entries
      • Cancel a pending partner contact invitation
    • matchmaking-requests
      • Close a matchmaking request
      • Reopen a matchmaking request
    • organizations
      • Get the organization's webhook
      • Create the organization's webhook
      • Update the organization's webhook
      • Delete the organization's webhook
      • List the organization's webhook deliveries
      • Get one webhook delivery
      • Rotate the organization's webhook signing secret

    Directory webhook events and payloads

    A directory can subscribe to eight events. This page lists when each one is sent and every field in its payload. To create a subscription, see Set up webhooks for your directory in the Help Center. For headers, the signature check and how to reply, see Verify and handle webhook deliveries.

    Events#

    The event name arrives in the X-Event-Type header.
    Event triggerSent when
    contact_request_createdA new lead is created for a partner: a visitor submits the contact form on a partner profile, your team assigns a matchmaking request to a partner (one event per partner), or a lead is created through the API.
    contact_request_updatedThe lead's state changes (accepted, declined, closed or reopened) or its project status changes. One event per change.
    matchmaking_request_createdA visitor submits your directory's matchmaking form ("help me find a partner").
    matchmaking_request_updatedYour team assigns the matchmaking request to one or more partners, sets or clears its owner, closes it or reopens it.
    partner_application_createdSomeone submits your partner application form. Requires partner applications to be enabled on the directory. Not sent for applications created through the API.
    partner_application_updatedYour team accepts the application (a partner profile is created and its id and title are in the payload) or declines it. Not sent when this is done through the API.
    partner_get_listed_completedA partner completes the self-service Get Listed flow, creating a listing that waits for your approval.
    profile_submitted_by_entry_ownerA partner submits their profile, new or edited, for your review.

    Conventions#

    Ids are UUIDs, sent as strings.
    created timestamps are in UTC, formatted YYYY-MM-DD HH:MM.
    custom_fields lists the answers to the custom questions on your form. Each item has export_label (the label you gave the field), internal_label and text_value (the answer as text; multiple choices are joined into one string). Standard fields such as name and email are not repeated here.
    Fields with no value are null.
    We may add fields over time. Ignore fields you do not recognise instead of rejecting the request.

    Lead object (contact_request)#

    Sent inside contact_request_created and contact_request_updated.
    FieldMeaning
    idLead id
    createdWhen the lead was created (UTC)
    statepending, accepted, declined or closed
    project_statusnull, new, contacted, engaged, on_hold, secured, launched_deployed or lost
    first_name, last_name, email, phoneThe lead's contact details
    company_name, company_websiteThe lead's company
    commentsThe message the lead wrote
    terms, privacy, shareConsent checkboxes on the form: true, false or null
    utm_query_paramsUTM parameters captured on the page, or null
    custom_form_response_idId of the submitted form response
    sourcecontact_request (submitted on a partner profile) or matchmaking (assigned from a matchmaking request)
    match_originId of the matchmaking request the lead came from, or null
    routing_sourceA free-text label set by the API integration that created the lead, for example the routing pool that picked the partner. null for leads created any other way
    entryThe partner profile that received the lead: id, title and owner (the partner organization's id, the same Partner ID shown in the dashboard)
    directoryid, name, org_id, org_name and contact_request_project_statuses_enabled
    decline_reason, decline_reason_detailSet when the partner declined: no_response_from_customer, not_a_fit, spam or other, plus free text
    close_reason, close_reason_detailSet when the lead was closed: partner_unresponsive, spam, duplicate, customer_withdrew or other, plus free text
    legacy_filter_responsesFilter answers from older directories, usually null

    contact_request_created#

    FieldMeaning
    entry_idPartner profile id
    directory_idDirectory id
    contact_requestThe lead object above
    custom_fieldsCustom form answers
    directory_contact_request_urlLink to the lead in your dashboard
    {
      "entry_id": "10c83cb2-ec23-49c5-b1c1-36ad2c5f5744",
      "directory_id": "a6736e4f-ad5b-4cc9-856b-9f3bf6688a79",
      "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/",
        "terms": true,
        "privacy": true,
        "share": null,
        "comments": "We need help rolling out the product to 200 users.",
        "utm_query_params": null,
        "custom_form_response_id": "4a552c1a-626f-484f-97d7-88cff5bfc6b7",
        "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",
          "org_id": "852231d3-ec36-49d1-af94-e50173d172aa",
          "org_name": "Acme",
          "contact_request_project_statuses_enabled": true
        },
        "source": "contact_request",
        "match_origin": null,
        "decline_reason": null,
        "decline_reason_detail": null,
        "close_reason": null,
        "close_reason_detail": null,
        "routing_source": null,
        "legacy_filter_responses": null
      },
      "custom_fields": [
        {
          "export_label": "Desired timeline",
          "internal_label": "desired_timeline",
          "text_value": "Q2"
        }
      ],
      "directory_contact_request_url": "https://directory.partnerpage.io/directories/a6736e4f-ad5b-4cc9-856b-9f3bf6688a79/directory/contact-requests/58e8eba8-ce91-4ab7-870a-0c33108b7101"
    }

    contact_request_updated#

    Same fields as contact_request_created. state, project_status and, where relevant, the decline or close reason fields carry the new values. For example, after a partner declines the lead, these fields of contact_request change:
    {
      "state": "declined",
      "decline_reason": "not_a_fit",
      "decline_reason_detail": "We only work with companies in the EU."
    }

    matchmaking_request_created#

    FieldMeaning
    request_idMatchmaking request id
    directory_id, directory_name, directory_owner_nameYour directory and organization
    custom_fieldsCustom form answers
    request_detailsThe request itself, described below
    Fields of request_details:
    FieldMeaning
    id, createdRequest id and when it was submitted (UTC)
    statenew, assigned or closed
    first_name, last_name, email, phoneThe requester's contact details
    company_name, company_websiteThe requester's company
    commentsThe message the requester wrote
    terms, privacy, shareConsent checkboxes on the form
    custom_legal_text, custom_legal_text_valueYour custom legal checkbox and its answer, or null
    assigned_partnersThe partners the request was assigned to: a list of partner_entry__id and partner_name
    date_assignedWhen it was last assigned (ISO 8601), or null
    owner, owner_nameThe team member who owns the request, or null
    close_reason, close_reason_detailSet when the request was closed: no_suitable_partner, spam, duplicate, customer_withdrew or other, plus free text
    utm_query_paramsUTM parameters captured on the page, or null
    custom_form_response_idId of the submitted form response
    directoryid and name
    legacy_filter_responsesFilter answers from older directories, usually null
    {
      "request_id": "3a7a1b6d-9d12-4b5f-9b1b-2a0d6f2e2c9b",
      "directory_id": "827a617e-eb92-410d-b121-cf80e9023675",
      "directory_name": "Acme Partner Directory",
      "directory_owner_name": "Acme",
      "custom_fields": [
        {
          "export_label": "Desired timeline",
          "internal_label": "desired_timeline",
          "text_value": "Q2"
        }
      ],
      "request_details": {
        "id": "3a7a1b6d-9d12-4b5f-9b1b-2a0d6f2e2c9b",
        "created": "2026-10-05 16:19",
        "state": "new",
        "first_name": "Jon",
        "last_name": "Smith",
        "email": "jon.smith@example.com",
        "phone": "8322787786",
        "company_name": "Example Manufacturing",
        "company_website": "https://www.example.com/",
        "terms": true,
        "privacy": true,
        "share": false,
        "comments": "Looking for an implementation partner",
        "assigned_partners": [],
        "date_assigned": null,
        "custom_legal_text": null,
        "custom_legal_text_value": null,
        "owner": null,
        "owner_name": null,
        "utm_query_params": null,
        "custom_form_response_id": "4a552c1a-626f-484f-97d7-88cff5bfc6b7",
        "directory": {
          "id": "827a617e-eb92-410d-b121-cf80e9023675",
          "name": "Acme"
        },
        "legacy_filter_responses": null,
        "close_reason": null,
        "close_reason_detail": null
      }
    }

    matchmaking_request_updated#

    Same fields as matchmaking_request_created. After your team assigns the request to two partners, these fields of request_details change:
    {
      "state": "assigned",
      "assigned_partners": [
        {
          "partner_entry__id": "10c83cb2-ec23-49c5-b1c1-36ad2c5f5744",
          "partner_name": "Northwind Consulting"
        },
        {
          "partner_entry__id": "d8e7b6a5-4c3d-4210-9f8e-7d6c5b4a3210",
          "partner_name": "Bluebird Labs"
        }
      ],
      "date_assigned": "2026-10-05T16:25:03.120453+00:00",
      "owner": "be051b53-cc24-4b86-a790-0c04dc2d6d3d",
      "owner_name": "Alex Rivera"
    }
    Each assignment also creates a lead on the partner's profile, so a contact_request_created event with source set to matchmaking and match_origin set to this request id follows for every partner assigned.
    When your team closes the request, state becomes closed and close_reason is set.

    partner_application_created#

    FieldMeaning
    application_idApplication id
    directory_id, directory_name, directory_owner_nameYour directory and organization
    custom_fieldsCustom form answers
    application_detailsThe application: id, created, state (pending, accepted or declined), first_name, last_name, email, company_name, company_website, custom_form_response_id and directory (id, org_name)
    {
      "application_id": "9f1c0f4e-1a2b-4c3d-8e5f-6a7b8c9d0e1f",
      "directory_id": "827a617e-eb92-410d-b121-cf80e9023675",
      "directory_name": "Acme Partner Directory",
      "directory_owner_name": "Acme",
      "custom_fields": [
        {
          "export_label": "Partner type",
          "internal_label": "partner_type",
          "text_value": "Reseller"
        }
      ],
      "application_details": {
        "id": "9f1c0f4e-1a2b-4c3d-8e5f-6a7b8c9d0e1f",
        "created": "2026-10-05 16:19",
        "state": "pending",
        "first_name": "Jon",
        "last_name": "Smith",
        "email": "jon.smith@example.com",
        "company_name": "Bluebird Labs",
        "company_website": "https://www.example.com/",
        "custom_form_response_id": "4a552c1a-626f-484f-97d7-88cff5bfc6b7",
        "directory": {
          "id": "827a617e-eb92-410d-b121-cf80e9023675",
          "org_name": "Acme"
        }
      }
    }

    partner_application_updated#

    Same fields as partner_application_created, plus entry_id and entry_title: the partner profile created when the application is accepted, or null when it is declined. application_details.state is accepted or declined. After an application is accepted, the payload ends with:
    {
      "entry_id": "d8e7b6a5-4c3d-4210-9f8e-7d6c5b4a3210",
      "entry_title": "Bluebird Labs"
    }

    partner_get_listed_completed#

    FieldMeaning
    customer_idEmail of the partner user who completed Get Listed
    event_nameAlways partner_get_listed_completed
    data.entryThe listing created: id, title and type
    data.get_listedThe Get Listed record: id, status, company_name, directory_id, directory_type, entry_type, custom_form_response_id, directory (directory_name, directory_owner_name, directory_owner_image) and user (id, email, first_name, last_name)
    data.sent_byWho submitted it: email, first_name, last_name
    {
      "customer_id": "founder@example.com",
      "event_name": "partner_get_listed_completed",
      "data": {
        "entry": {
          "id": "3245d51c-a7fc-4498-90a5-f3d8aeded8d9",
          "title": "Bluebird Labs",
          "type": "partner"
        },
        "get_listed": {
          "id": "dd4a56e8-dd71-4d3b-861d-273e7283e726",
          "status": "pending",
          "company_name": "Bluebird Labs",
          "custom_form_response_id": "8f09e7fc-41ce-4ce0-b2a8-67300f66bda7",
          "directory_id": "827a617e-eb92-410d-b121-cf80e9023675",
          "directory_type": "generic_directory",
          "entry_type": "partner",
          "directory": {
            "directory_name": "Acme Partner Directory",
            "directory_owner_name": "Acme",
            "directory_owner_image": "https://cdn.partnerpage.io/media/contact_images/78d2bacb-7230-47d3-bce6-4b44df1b322d/logo.png"
          },
          "user": {
            "id": "6b4f526b-027b-403e-9e8c-f686c9fa6772",
            "email": "founder@example.com",
            "first_name": "Jon",
            "last_name": "Smith"
          }
        },
        "sent_by": {
          "email": "founder@example.com",
          "first_name": "Jon",
          "last_name": "Smith"
        }
      }
    }

    profile_submitted_by_entry_owner#

    FieldMeaning
    entry_idThe partner profile submitted for review
    profile_urlLink to review the profile in your dashboard
    entry_owner_profile_urlThe partner's own link to the profile
    directory_idDirectory id
    dir_ownerYour organization: org_id, org_name, directory_name, directory_owner_image
    entry_ownerThe partner organization: org_id, org_name
    userThe partner user who submitted: id, email, first_name, last_name
    {
      "entry_id": "3d4969c6-8594-43b2-b076-a7ba336d4c96",
      "profile_url": "https://directory.partnerpage.io/directory/06c9b750-f5f5-4f7b-a199-6205f0397f63/entries/partner/edit/3d4969c6-8594-43b2-b076-a7ba336d4c96",
      "entry_owner_profile_url": "https://directory.partnerpage.io/profile-manager/profiles/solutions/partners/3d4969c6-8594-43b2-b076-a7ba336d4c96",
      "directory_id": "06c9b750-f5f5-4f7b-a199-6205f0397f63",
      "dir_owner": {
        "org_id": "0b7dee8c-dae5-41d4-b869-8dfdc0d26553",
        "org_name": "Acme",
        "directory_name": "Acme Partner Directory",
        "directory_owner_image": "https://cdn.partnerpage.io/media/contact_images/0b7dee8c-dae5-41d4-b869-8dfdc0d26553/logo.png"
      },
      "entry_owner": {
        "org_id": "8b741711-bafd-4fd0-b535-30074a1f2dd6",
        "org_name": "Northwind Consulting"
      },
      "user": {
        "id": "be051b53-cc24-4b86-a790-0c04dc2d6d3d",
        "email": "jon@example.com",
        "first_name": "Jon",
        "last_name": "Smith"
      }
    }
    Modified at 2026-10-05 17:34:01
    Previous
    Verify and handle webhook deliveries
    Next
    Partner lead webhook event
    Built with