Skip to content

CRM

Jobber
API integration

Ship CRM features without building the integration. Full Jobber API access via Proxy and 10+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Talk to us
Jobber

Use Cases

Why integrate with Jobber

Common scenarios for SaaS companies building Jobber integrations for their customers.

01

Route inbound leads into Jobber automatically

SaaS companies offering AI receptionists, web forms, or lead marketplaces can create clients and requests in Jobber the moment a homeowner reaches out, so dispatchers see fully-formatted enquiries without manual entry.

02

Trigger post-job workflows in reputation and marketing tools

Review boosters and SMS platforms can watch job status changes in Jobber to fire off review requests, follow-up campaigns, or NPS surveys the instant a technician wraps a job.

03

Segment and nurture Jobber clients from marketing platforms

Marketing automation SaaS can pull Jobber clients and use job and invoice rollup counts to separate cold leads from repeat customers, then run targeted drip sequences for each segment.

04

Power commission tracking and sales analytics

Analytics and gamification tools can ingest job data — including totals, types, and scheduling timestamps — to calculate technician commissions and display live performance leaderboards.

05

Enrich client records from telephony and CRM tools

VoIP and virtual receptionist products can look up callers by phone number in Jobber and use GraphQL mutations to append tags, custom fields, or secondary contact details to the matched client.

What You Can Build

Ship these features with Truto + Jobber

Concrete product features your team can ship faster by leveraging Truto’s Jobber integration instead of building from scratch.

01

Inbound lead-to-request pipeline

Capture leads from any channel and create a Jobber client plus a new request with status "new" so it lands directly in the dispatcher's triage queue.

02

Client lifecycle segmentation engine

Read Jobber's rollup fields like jobs.totalCount to classify contacts as leads, active, or recurring customers and route them to the right campaign.

03

Job completion event triggers

Poll list_all_jobber_jobs and detect jobStatus transitions to power downstream automations like review requests, upsell offers, or warranty follow-ups.

04

GraphQL-powered custom field sync

Use create_a_jobber_graphql to run mutations like clientEdit and requestCreate for updating tags, custom fields, and nested objects that standard endpoints don't cover.

05

Client deduplication and enrichment

Search existing clients before creation using list_all_jobber_clients, then update matched records with enriched data from your own product using update_a_jobber_client_by_id.

06

Revenue and job analytics dashboards

Aggregate job totals, types, and scheduling data from list_all_jobber_jobs to build reporting on booked revenue, job mix, and technician performance.

SuperAI

Jobber AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

list_all_jobber_account

Get information about the authorized Jobber account. Returns: id, name, countryCode, phone. No required parameters — the account is determined by the access token.

list_all_jobber_clients

List Jobber clients. Returns: id, name, isLead, leadSource, email, phone, balance, tags, billingAddress, and totalCount rollups for jobs, requests, quotes and invoices. Filter with the filter param, e.g. {"isLead": true} for leads only. A client whose jobs.totalCount is 0 has never had work booked.

get_single_jobber_client_by_id

Get a single Jobber client by id. Returns: id, name, isLead, leadSource, email, phone, balance, tags, billingAddress, and jobs/requests/quotes/invoices totalCount. Required: id.

jobber_clients_count

Count Jobber clients matching a filter, without fetching the records. Returns: totalCount. Use filter {"isLead": true} to count how many leads have come through, optionally narrowed by createdAt.

create_a_jobber_client

Create a Jobber client, e.g. to lodge a qualifying lead. Returns the created client; new clients start with isLead true. Accepts scalar fields only — to set emails, phones, addresses or custom fields, use the graphql tool with the clientCreate mutation.

update_a_jobber_client_by_id

Update a Jobber client's scalar details. Returns the updated client. Required: id. Status tags (tagsToAdd / tagsToDelete) are not settable here — use the graphql tool with the clientEdit mutation. isLead is managed by Jobber and cannot be set at all.

jobber_clients_archive

Archive a Jobber client. Required: client_id. Jobber refuses while the client has open jobs or work requests, returning a userErrors message.

list_all_jobber_requests

List Jobber requests (incoming work enquiries). Returns: id, title, requestStatus, contactName, companyName, email, phone, source, client, salesperson, and jobs/quotes totalCount. Filter with e.g. {"status": "new"}.

get_single_jobber_request_by_id

Get a single Jobber request by id. Returns: id, title, requestStatus, contact details, source, client, salesperson, and jobs/quotes totalCount. Required: id.

jobber_requests_count

Count Jobber requests matching a filter, without fetching the records. Returns: totalCount. Use filter {"status": "new"} to count new leads awaiting action.

create_a_jobber_request

Create a Jobber request (work enquiry) against an existing client. Returns the created request with requestStatus "new". Required in body: client_id. Accepts scalar fields only — for requestDetails, lineItems or formIds use the graphql tool with the requestCreate mutation.

update_a_jobber_request_by_id

Update a Jobber request. Returns the updated request. Required: id. Only title, property, salesperson and referring client are editable — requestStatus is driven by Jobber workflow, not set directly.

list_all_jobber_jobs

List Jobber jobs (booked work). Returns: id, jobNumber, title, jobStatus, jobType, total, scheduling timestamps, client and property. Use this to see which customers have actually had services delivered.

get_single_jobber_job_by_id

Get a single Jobber job by id. Returns: id, jobNumber, title, jobStatus, jobType, total, scheduling timestamps, client and property. Required: id.

create_a_jobber_graphql

Send an arbitrary GraphQL query or mutation to Jobber. Body: {query, variables}. Use this for anything the typed tools cannot express — setting client emails/phones/addresses, adding or removing status tags, or any mutation with a nested input object. Returns Jobber's raw response including data, errors and userErrors.

Why Truto

Why use Truto’s MCP server for Jobber

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 750+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Jobber in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Jobber account

Use Truto’s frontend SDK to connect your customer’s Jobber account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Jobber

Truto’s Proxy API is a 1-to-1 mapping of the Jobber API. You call us, we call Jobber, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Jobber’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Jobber on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How does authentication work with Jobber?

Jobber uses OAuth 2.0. Truto handles the OAuth flow, token storage, and refresh — your end users connect their Jobber account through an embedded flow and you receive a connection ID to make API calls.

Can I write to Jobber custom fields and tags?

Yes. Jobber's REST endpoints generally only accept scalar fields, so custom fields, tags, and nested objects (like secondary emails or line items) are handled via the create_a_jobber_graphql tool using mutations such as clientEdit and requestCreate.

What Jobber objects are currently supported?

The integration covers Accounts, Clients (list, get, count, create, update, archive), Requests (list, get, count, create, update), and Jobs (list, get). For anything beyond these, you can use the GraphQL passthrough tool to hit any Jobber API resource.

Can I manually set a client as a lead?

No. Jobber manages the isLead status dynamically based on whether a client has associated jobs or invoices, so it cannot be forced through the API. Use jobs.totalCount and related rollup fields to infer lead status instead.

How do I detect job status changes for real-time workflows?

You can poll list_all_jobber_jobs and compare jobStatus values, or use the GraphQL tool to subscribe to Jobber's webhook events for job updates. Truto normalizes delivery so you can react to changes without managing retries or signature validation.

How does Truto handle Jobber's pagination and rate limits?

Truto abstracts Jobber's cursor-based pagination behind consistent list parameters and automatically respects Jobber's API rate limits with backoff, so you don't need to implement throttling or paging logic per endpoint.

Jobber

Get Jobber integrated into your app

Our team understands what it takes to make a Jobber integration successful. A short, crisp 30 minute call with folks who understand the problem.