ClearQuoteIntegrations Request webhook setup

Connect ClearQuote to your fleet systems

Send inspection data to the tools you already use, pull full inspection results into your own systems, and get alerted the moment damage or a failed check is found.

APICreate inspections, fetch results, manage vehicles
Developer
WebhooksReal time events sent to your endpoint
Developer
Slack and DiscordAlerts posted to your team's channels
No code

API

Our REST API lets your systems create inspections, fetch results and keep your fleet in sync. Full request and response details, with code samples in several languages, are in our API documentation.

Full API documentation by region. Open the documentation for the region where your ClearQuote account is hosted. Not sure which one? Email support@clearquote.io.

API access uses your ClearQuote account. Call Login to get a token for all other calls. For integrations that run unattended, email us for a dedicated API user so the integration is not tied to a person's login.

Inspections

  • POSTCreate a Vehicle Inspection QuoteSend a vehicle's data and images to start an inspection.
  • POSTAdd Images to existing QuoteAdd more images to an inspection.
  • POSTDelete Images in existing QuoteRemove images from an inspection.
  • GETImage Status of existing QuoteCheck the processing status of an inspection's images.
  • POSTCreate self-inspection WeblinkGenerate a link so someone can complete an inspection in the browser. Links expire.

Results

  • GETQuote OutputThe full result of one inspection, including damage, checklist answers, status and photo location.
  • POSTQuote OutputFetch inspection results by request body.
  • POSTGet PDFThe PDF report for an inspection.
  • POSTEdit/Update Inspection ChecklistEdit or update the checklist on an inspection.

Fleet

  • POSTCreate VehicleAdd a vehicle to your ClearQuote fleet.
  • POSTUpdate Vehicle DataUpdate a vehicle's details.
  • POSTDe-fleet VehicleRemove a vehicle that has left your fleet.
  • POSTFleet Inspection StatusSend a list of vehicles and a date range; see which were inspected and their latest inspection.

Access

  • POSTLoginReturns the token used on every other call.

Pick your region from the API documentation links above.

Common use cases

Find missed daily checks

Call Fleet Inspection Status once a day with your vehicle list. Vehicles with no inspection for the day are missed checks.

Get every checklist answer

When you receive the inspectionCompletion webhook, call Quote Output with the Quote ID to get every question and answer.

Follow up on new damage

When newDamageFound arrives, call Quote Output or Get PDF for the full inspection.

Keep your vehicle list in sync

Use Create Vehicle, Update Vehicle Data and De-fleet Vehicle as your fleet changes. There is no endpoint to list all vehicles, so keep the master list on your side.

Webhooks

When something happens in an inspection, we send a POST request with a JSON body to an HTTPS address you choose. Webhooks are push only: your system just receives requests, so no ClearQuote login is needed on your side.

Getting connected

  1. Set up an HTTPS endpoint that replies with a 2xx within 10 seconds.
  2. Fill in the webhook form with the events you want and where to send them.
  3. We register it and send a connectionTest event to check we can reach you.
  4. Once confirmed, events go live automatically.

Events

Select an event to see when it is sent and what it contains. Examples show only eventData; every event also carries the common fields.

Inspection submittedinspectionSubmittedA driver submits an inspection.
When it is sent
As soon as the inspection is submitted from the app, before processing finishes.
Typical use
Keep a live log of who inspected which vehicle and when.
Good to know
Results may not be ready yet. Wait for inspectionCompletion before fetching the full inspection.
eventData
"eventData": {
  "inspectionType": "Standard inspection"
}
Inspection completedinspectionCompletionProcessing has finished and results are ready.
When it is sent
When ClearQuote has finished processing the inspection.
Typical use
The trigger to call Quote Output or Get PDF for the full result.
eventData
"eventData": {
  "status": "estimationcompleted"
}
New damage foundnewDamageFoundDamage that was not present in the vehicle's previous inspection.
When it is sent
When an inspection finds damage that was not in the most recent previous inspection of the same vehicle.
When it is not sent
On a vehicle's first inspection, because there is nothing earlier to compare with.
Typical use
Alert your fleet or workshop team, or open a repair job.
eventData
"eventData": {
  "hasNewDamage": true,
  "newDamages": [
    { "panel": "Bonnet", "type": "Dent" }
  ]
}
Checklist alertchecklistAlertOne or more checklist items fail.
When it is sent
When the driver's checklist answers include at least one failed item.
Typical use
Route defects to the right person straight away.
eventData
"eventData": {
  "data": {
    "failedItems": [
      { "itemName": "Tyres", "expected": "OK", "actual": "Not OK" }
    ]
  }
}
Compliance alertcomplianceAlertDamage or a rule breach in a compliance inspection.
When it is sent
For compliance inspections, when damage or a safety audit issue such as a mileage limit breach is found.
Typical use
Compliance reporting and follow up.
eventData (trimmed)
"eventData": {
  "damages": [ { "panel": "Rear door", "type": "Scratch" } ],
  "safetyAuditIssues": [ ]
}
Compliance checklist alertcomplianceChecklistAlertChecklist failures in a compliance inspection.
When it is sent
For compliance inspections, when checklist items fail.
Format
Same shape as checklistAlert.
Estimate readyestimatesEditedA repair estimate is ready or updated.
When it is sent
When a repair estimate is created or edited for an inspection.
Typical use
Feed repair costs into your maintenance or finance system.
eventData
"eventData": {
  "displayTotal": "450.00"
}
Manual validation completedmanualA reviewer finishes validating an inspection.
When it is sent
When manual validation of an inspection is completed.
Typical use
Know when a reviewed result is final.
eventData
"eventData": {
  "validationCompletedAt": "2026-06-19T15:02:00.000Z"
}

Common fields

Every event has the same outer structure. Only eventData changes by event.

Example payload
{
  "eventId": "cq_evt_550e8400-...",
  "timestamp": "2026-06-19T14:30:00.000Z",
  "eventType": "inspectionSubmitted",
  "dealerCode": "UK04",
  "inspectionId": "Q-abc123",
  "detailsLink": "https://...",
  "vehicleDetails": {
    "vin": "WVWZZZ3CZWE123456",
    "registrationNumber": "AB12 CDE",
    "make": "Volkswagen",
    "model": "Golf",
    "year": 2022
  },
  "dealerName": "Your account name",
  "driverName": "Inspector name or null",
  "pdfLink": "https://...",
  "eventData": { }
}
eventId
Unique per event. Use it to skip duplicates.
timestamp
Always UTC, ISO 8601.
dealerCode
Your ClearQuote account code, confirmed during setup.
inspectionId
The Quote ID. Use it with the API to fetch the full inspection.
pdfLink
Present once a PDF report has been generated.

Security

Live events include a signature header, and an auth token header if you chose one:

x-api-key
An auth token we generate for you, if you choose one in the form.
x-clearquote-signature
A hex encoded HMAC SHA256 of the exact request body, signed with a signing secret we generate for you. No prefix.

Checking the signature is optional but recommended. Compute it from the raw body exactly as received, before parsing the JSON.

Node.js
const crypto = require('crypto');

function isValid(rawBody, signature, secret) {
  const expected = crypto.createHmac('sha256', secret)
    .update(rawBody).digest('hex');
  if (!signature || signature.length !== expected.length) return false;
  return crypto.timingSafeEqual(
    Buffer.from(expected), Buffer.from(signature));
}
Python
import hmac, hashlib

def is_valid(raw_body: bytes, signature: str,
             secret: str) -> bool:
    expected = hmac.new(secret.encode(), raw_body,
                        hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, signature or "")

How we share your credentials: once your endpoint is registered, we email your auth token and signing secret only to the contacts on your ClearQuote account. Store it securely and do not forward it.

Delivery and retries

If your endpoint times out, or returns 5xx or 429, we retry after 1 minute, 5 minutes and 30 minutes. Other 4xx responses are not retried. Because of retries, an event can arrive more than once, so check eventId before processing.

No code options

Prefer not to build anything? These options need no development on your side.

Slack and Discord alerts

We post the alerts you choose, such as new damage or failed checks, into your team's Slack or Discord channel.

  1. Create an incoming webhook for the channel in Slack or Discord.
  2. Fill in the webhook form with the events you want and the channel's webhook URL.
  3. We set it up and confirm once alerts are flowing. For more than one channel, submit the form once for each.

FAQ

Do we need a ClearQuote account?

Yes. Every integration is linked to your ClearQuote account. If you are not a customer yet, contact our team.

Do we need ClearQuote credentials to receive webhooks?

No. We send requests to your endpoint. Credentials are only needed for the API.

Why did a new vehicle not trigger a new damage alert?

A vehicle's first inspection is the baseline. From the second inspection onwards, each one is compared with the most recent previous inspection.

Can we test before going live?

Yes. Mention it in your request and we will register a test endpoint first so you can see events arrive end to end.

Which timezone are timestamps in?

UTC, in ISO 8601 format.

Request webhook setup

Choose your events and where to send them: your own HTTPS endpoint, Slack or Discord. Our team is notified as soon as you submit, and we confirm once your endpoint is registered.

For API access or help with an existing integration, email support@clearquote.io.

Have ready:
  • The events you want to receive
  • Your HTTPS endpoint, or a Slack or Discord webhook URL

Never enter passwords in the form. We email your auth token and signing secret separately once your endpoint is registered.