Connect Jobber

Goal: accepted leads become Jobber clients and requests; Jobber progress updates the lead here.

Option 1: Zapier (no code)

  1. Leads in: trigger Webhooks by Zapier, Catch Hook, put the hook address in our Settings, filter on event = lead.accepted. Actions: Jobber, Create Client (name, phone, email from lead.contact), then Jobber, Create Request for that client with the title lead.service and the details lead.details plus our lead id.
  2. Status back: trigger on Jobber events in Zapier (for example a new job or a completed visit, depending on what your Jobber Zapier app offers), look up our lead id you stored in step 1 (Zapier Storage, or read it from the request details), and send Webhooks by Zapier, Custom Request PATCH .../v1/leads/<id> with {"status":"hired"} or {"status":"job_done"}.

Check the exact Jobber trigger and action names in Zapier; they depend on Jobber's current Zapier app.

Option 2: Jobber API (for developers)

Jobber's API is GraphQL at https://api.getjobber.com/api/graphql with OAuth 2.0 (authorization code, PKCE recommended), 60-minute access tokens and the header X-JOBBER-GRAPHQL-VERSION.

  • On our lead.accepted webhook: create the client and the request with Jobber's client and request mutations (check names and fields in Jobber's GraphiQL explorer for your API version), and save the mapping of our lead id to the Jobber ids.
  • Subscribe to Jobber webhooks for the job and visit topics you want. Jobber's payload is thin (topic, account and item id); fetch the item with GraphQL, map it to our status, and PATCH us.
  • Jobber signs webhooks with X-Jobber-Hmac-SHA256 (base64 HMAC-SHA256 of the raw body using your app's client secret), expects an answer within 1 second, and can send the same topic twice: dedupe on item id plus topic.
  • Jobber rate limit: 2,500 requests per 5 minutes per app and account, plus a query-cost budget.

Suggested status mapping is in Statuses.