API Reference

Lead Delivery Webhooks

Our lead delivery webhooks are designed to be used by our strategic accounts to enable them to get details of checkatrade jobs (leads) passed straight into their systems. If you want to start making use of these webhooks please reach out to your account manager.

How to proceed with the integration

To set up this integration, please follow these steps:

  • Read this documentation
  • Send your webhook URL to your Checkatrade Account Manager
  • Whitelist the IPs (if necessary)
  • We will then configure the integration and send over a test payload
  • Map the fields from the payload into your CRM

The Request Object

Below is a breakdown of the response JSON object providing an overview of what each field means.

Lead Object:

FieldTypeDescription
jobIdSTRINGA job ID is a unique identifier assigned to a specific job, used to track and distinguish it from other jobs within the system.
categorySTRINGA job category is a classification of the type of job within the Lead.
titleSTRINGThe main title of the job. E.g. "Solar panels fitted".
jobDescriptionSTRINGA more in depth breakdown of the kind of work the Customer is looking to have completed.
customerNameSTRINGThe name of the Customer looking to have the job done.
customerPhoneSTRINGThe phone number of the Customer associated to the job.
customerEmailSTRINGThe Customers email address.
dateCreatedSTRINGThe date the job was created in ISO 8061 as mentioned on RFC3339.
preferredStartPreferredStartThe description of how urgent the Job needs to be addressed from the Customer. See PreferredStart object below.
sourceSTRINGThe source of the job.
Example:
• DIRECT_MESSAGE
• QUOTE_REQUEST
additionalInformation[AdditionalInformation]An array of objects consisting of questions and answers referring to the Job.
postcodeSTRINGThe Customers postcode.
leadEnrichmentLeadEnrichmentA JSON object containing questions and answers asked of the consumer in a new format.

Please Note:
1. You will only receive leadEnrichment data if we have updated you to the latest version of our webhooks. Speak to your account manager about updating.
2. You will only get leadEnrichment data if we have asked the consumer for it and we are running experiments on this at the moment so not all consumers are being asked for this info yet.
mediaSTRING[]An array of strings which are URLs to images the consumer has attached to the job.

Please Note: You will only receive media data if we have updated you to the latest version of our webhooks. Speak to your account manager about updating.

Preferred Start Object:

FieldTypeDescription
optionSTRINGThe human readable format of the preferred start date. Example:
• "In planning"
• "Within a few days"

Additional Information Object:

FieldTypeDescription
questionSTRINGThe additional question that has been added to the Job.
answerSTRINGThe answer to the additional question on the Job.

LeadEnrichment Object:

Please Note:

  1. You will only receive leadEnrichment data if we have updated you to the latest version of our webhooks. Speak to your account manager about updating.
  2. You will only get leadEnrichment data if we have asked the consumer for it and we are running experiments on this at the moment so not all consumers are being asked for this info yet.
FieldTypeDescription
questionsQuestion[]This array contains all the questions and answers to the questions, if all questions are marked as not-required this array can be empty but never null.

Question object:

FieldTypeDescription
titleSTRINGThe question that was asked of the consumer
formatENUMTells you the type of question that was asked and informs your system how to display the answers.

ENUM values:
• "SINGLE_SELECT"
• "MULTI_SELECT"
• "SINGLE_SELECT_VISUAL"
• "MULTI_SELECT_VISUAL"
• "TEXT"
answersAnswer[]Contains a list of the answers provided along with additional parameters. For a SINGLE_SELECT question this will only contain one answer object whereas for MULTI_SELECT questions this will contain however many the user selected

Answer Object:

FieldTypeDescription
keystringGenerated based on value and parsed to kebab-case format.
valueSTRING | NUMBER | NULLThe text show in on the option chosen by the consumer, e.g. for window colours: "white", "brown" or ranges like min and max value

The Response

The webhook has a response type of 201. Sending this response to the webhook endpoint confirms a successful receipt and acknowledgement of the data transmitted.

Example Payload

{ 
"jobId":"Jp8XsbVDzR0NuAlC3pg3", 
"category":"Windows/Doors/Conservatories", 
"title":"UPVC Window Installation in PO6 3EN", 
"jobDescription":"I'm looking for new double-glazing windows for the front of my house", 
"customerName":"Joe Bloggs",
"customerPhone":"01234556789", 
"customerEmail":[email protected], 
"dateCreated":"2023-05-16T14:35:50.432479+00:00", 
"preferredStart":{ "option":"Within 2 weeks"}, 
"source":"DIRECT_MESSAGE", 
"additionalInformation":[ { "question":"How many windows need to be installed?", "answer":"3" } ] 
"postcode":"PO6 3EN",
"leadEnrichment":
{
    "questions": [
        {
            "answers": [
                {
                    "key": "yes",
                    "value": "Yes, I own it"
                }
            ],
            "format": "SINGLE_SELECT",
            "questionId": "ownership-status-default",
            "title": "Do you own the property?"
        },
        {
            "answers": [
                {
                    "key": "toilet",
                    "value": "Toilet"
                },
                {
                    "key": "shower",
                    "value": "Shower"
                }
            ],
            "format": "MULTI_SELECT",
            "questionId": "24WRnR0rLx4CRh4k82evY6",
            "title": "What's the work needed on?"
        },
    ],
},
"media": ["https://someurl.com","https://someurl2.com"]
}

Other Info

Checkatrade reserve the right to add extra fields into the payload, therefore please implement this in a way that the presence of additional fields will not break your integration. We will notify you with advanced warning if we plan to remove or modify any existing fields within the payload. Please be aware that the values within category are subject to change as we enhance the funnelling and lead categorisation.

Static IPs

Static IP addresses enhance webhook security by allowing for easy verification of incoming requests and preventing unauthorised access. This helps secure the transmission of data and reduces risk of malicious activities.

For Checkatrade's API there are two main static IP addresses:

Note the old IP addresses are only used for existing trades, if you are new to our webhooks you only need to whitelist our new IPs.

EnvironmentIP AddressDescription
DevelopmentOld: 35.242.163.176 (existing trades only)

New:
34.105.162.121
34.89.85.173
35.234.151.94
This is the main test environment which can be used when initially integrating for validation testing.
ProductionOld: 34.142.46.71 (existing trades only)

New:
35.246.15.126
35.242.187.239
34.39.18.129
Main IP address to receive live active leads.

Security

Currently the main security around this Webhook is based on API whitelisting. This is subject to change for more advanced security.

Billing

At Checkatrade we will bill you for the leads we send via their unique IDs at our side. It may be that leads are sent multiple times to a customer's system (in edge cases) they will have a unique ID for de-duplication. Invoices will have this covered and should you provide a receipt ID we will be able to create a report on this for you.