Installer.com Docs
Guides

Webhooks

Receiving real-time event notifications via webhooks

Overview

Webhooks allow your application to receive real-time HTTP POST notifications when events occur in Installer.com. Instead of polling the API for changes, you register a URL that receives event payloads as they happen.

Setting Up Webhooks

Register your endpoint

Go to Settings > Integrations > Webhooks in the Routing App and click Add Webhook.

Configure events

Select which events should trigger notifications to your endpoint.

Verify it works

Use the test button to send a sample payload to your endpoint.

Event Types

Order Events

EventDescription
order.createdA new order was created
order.updatedAn order's details were updated
order.completedAn order was marked as completed
order.cancelledAn order was cancelled
order.deletedAn order was deleted
order.dispatchedAn order was dispatched to a contractor
order.assignedAn order was assigned to a specific installer

Booking Events

EventDescription
booking.createdA new booking was scheduled
booking.updatedA booking was rescheduled or modified
booking.cancelledA booking was cancelled

Workflow Events

EventDescription
workflow.step.completedA workflow step was completed
workflow.step.activatedA workflow step became active

Webhook Payload

Each webhook delivery includes a JSON payload with event metadata and the relevant data:

{
  "event": "order.created",
  "timestamp": "2025-01-15T10:30:00Z",
  "organizationId": "router-uuid",
  "data": {
    "id": "order-uuid",
    "displayId": "P1-42",
    "name": "Solar Panel Installation",
    "status": 0,
    "customerName": "John Doe",
    "address": "123 Main St, Oslo",
    "createdAt": "2025-01-15T10:30:00Z"
  }
}

Handling Webhooks

Your webhook endpoint should:

  1. Return 2xx quickly — respond within 5 seconds to avoid timeouts
  2. Process asynchronously — queue the event for background processing if it requires heavy work
  3. Be idempotent — the same event may be delivered more than once
// Express.js example
app.post('/webhooks/installer', (req, res) => {
  const { event, data } = req.body;

  // Acknowledge receipt immediately
  res.status(200).send('OK');

  // Process asynchronously
  processWebhookEvent(event, data);
});

Verifying Webhook Signatures

Webhook deliveries include a signature header to verify the request authenticity:

X-Webhook-Signature: sha256=<hex-encoded-hmac>

Verify the signature by computing an HMAC-SHA256 of the raw request body using your webhook secret:

import crypto from 'node:crypto';

function verifyWebhook(body, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(body)
    .digest('hex');

  return `sha256=${expected}` === signature;
}

Always verify webhook signatures in production to ensure requests come from Installer.com and haven't been tampered with.

Retry Policy

If your endpoint returns a non-2xx status code or times out, Installer.com retries the delivery:

AttemptDelay
1st retry1 minute
2nd retry5 minutes
3rd retry30 minutes
4th retry2 hours
5th retry12 hours

After 5 failed attempts, the webhook delivery is marked as failed. You can view failed deliveries and manually retry them from the webhook settings page.

Troubleshooting

IssueSolution
Not receiving eventsCheck that your endpoint is publicly accessible and returns 2xx
Duplicate eventsImplement idempotency using the event ID
Signature mismatchEnsure you're using the raw request body (not parsed JSON) for HMAC computation
Timeout errorsReturn 200 immediately and process the event asynchronously

On this page