How to set up webhooks with Jobber on Tenklo

Learn how to receive real-time Jobber events in your app using Tenklo webhooks

This guide shows you how to receive real-time Jobber events in Tenklo by registering a webhook in your Jobber app settings.

How it works

  1. When a connection is created, Tenklo automatically fetches the connected Jobber account's ID and stores it for webhook routing — no setup needed on your end.
  2. Jobber sends a signed POST request to your Tenklo webhook URL when a subscribed event occurs.
  3. Tenklo verifies the signature, matches the payload's accountId to the correct connection, and forwards the event to your app.

Setup

1. Get your Tenklo webhook URL

In the Tenklo dashboard, open your Jobber integration and copy the Webhook URL.

2. Register the webhook in Jobber

  1. Go to Manage Apps and open your app.
  2. Add a webhook pointing to your Tenklo webhook URL, and select the topics you want to subscribe to.

There's no separate webhook secret to configure — Jobber signs webhook payloads with your app's OAuth Client Secret, which Tenklo already has from the integration setup.

3. Handle forwarded webhooks

Every request from Jobber includes an X-Jobber-Hmac-SHA256 header — a Base64-encoded HMAC-SHA256 of the raw request body, signed with your app's OAuth client secret. Tenklo verifies this automatically before forwarding the event. Example payload:

{
  "data": {
    "webHookEvent": {
      "topic": "CLIENT_CREATE",
      "appId": "3ef22a50-072d-430c-a78f-b7646657560b",
      "accountId": "MQ==",
      "itemId": "MQ==",
      "occurredAt": "2021-08-12T16:31:36-06:00"
    }
  }
}

Jobber provides at-least-once delivery. Your webhook handler should be idempotent and respond within 1 second — process payloads asynchronously to stay within this limit.

Handle the webhook

Once routed to a connection, you have two options:

  • Forward it to your app — Tenklo verifies the signature and forwards the event to your webhook URL with connection attribution. See External webhook forwarding.
  • Process it in a sync — run a sync when the webhook arrives using webhookSubscriptions and onWebhook in a sync script. See Real-time syncs.

Supported topics

Webhooks fire for any topic configured in your Jobber app. Examples:

TopicDescription
CLIENT_CREATEA new client was created
CLIENT_UPDATEA client was updated
CLIENT_DESTROYA client was deleted

For the full list, see WebHookTopicEnum in the Jobber GraphQL schema.

Need help getting started? Join us in the community.

On this page