Connect Jobber

Bookings into Jobber through Zapier, and invoices back as held revenue.

On this page

Connect Jobber and every booking your receptionist takes becomes a client and a request in Jobber, without anyone retyping it. When the invoice for that job is sent or paid, its total comes back to us and the appointment is marked held with that amount.

This runs through your own Zapier account

Jobber and CaughtLeads do not talk to each other directly yet. Zapier sits in the middle and carries the booking across. You build the connection once, in your own Zapier account, and then it runs on its own.

Before you start

  • A Jobber account you can sign in to, on a plan that includes Zapier. Jobber’s pricing page lists it on Core, Connect, Grow and Plus.
  • A Zapier account on the Professional plan or higher. Catching a web address, which is the first step below, is not available on Zapier’s free plan.
  • Your CaughtLeads login, with owner or admin access.
  • About fifteen minutes. Two browser tabs make it much easier: Zapier in one, CaughtLeads in the other.

How the pieces fit together

Before you click anything, it helps to know what you are building. There are two separate flows, and they run in opposite directions.

  • Bookings out. A caller books. We send the booking to Zapier. Zapier creates the client and the request in Jobber. This is steps 1 to 3.
  • Money back. You invoice the job in Jobber. Zapier spots that the invoice was sent or paid, and tells us the total. We mark the appointment held for that amount. This is step 4.

The first flow is the one that saves your office typing. The second is the one that makes your report true, so it is worth doing both.

Step 1: Start a Zap and copy its web address

Everything starts in Zapier, because Zapier has to give you the address we send bookings to before we can send any.

  1. 1

    In Zapier, create a new Zap

    For the trigger app, search for Webhooks by Zapier and choose it. This is Zapier’s own built-in app, not something you install.

  2. 2

    Choose the Catch Hook event

    Pick Catch Hook from the event list, then continue. Leave the Child Key box empty on the next screen.

  3. 3

    Copy the web address Zapier shows you

    Zapier displays a long address starting https://hooks.zapier.com/hooks/catch/. Copy it. Leave this Zapier tab open and sitting on the test screen, because you will come back to it in a moment.

Step 2: Paste that address into CaughtLeads

Open Connections in the sidebar and scroll to Integrations at the bottom of the page. The Jobber via Zapier card further up says the same three steps in short, and is worth a glance so you know what to expect.

The Jobber via Zapier card in CaughtLeads Connections, expanded to show what it writes into Jobber and what it reads back
Connections, Jobber via Zapier. It tells you what gets written into Jobber and what comes back.
  1. 1

    Press Add integration

    It is the button on the right of the Integrations panel, at the bottom of the Connections page.

  2. 2

    Leave Send to on Webhook

    Webhook (n8n, Zapier, Make, CRM) is already selected and is the right one. Do not change it.

  3. 3

    Give it a name you will recognise

    The Name box is optional, but type something like Jobber. If you add more integrations later, this is how you tell them apart.

  4. 4

    Paste the Zapier address into Webhook URL

    Check there is no stray space on the end of what you pasted. It must begin with https://.

  5. 5

    Leave Booking made ticked, then press Connect

    Booking made is ticked for you and is the only event this Zap needs. Leave the other five alone.

The Add an integration dialog in CaughtLeads with Webhook selected, the Webhook URL field, and the Events list with Booking made ticked
Send to stays on Webhook. The Zapier address goes in Webhook URL, and Booking made is the only event you need.

Copy the two values on the next screen

The moment you press Connect, a Save these now box appears. It contains a job results URL and a secret. You need both in step 4, and they are shown once. Paste them somewhere safe before you close the box.
The Save these now dialog in CaughtLeads showing a signing secret, a job results URL and its secret, with example values
Example values shown here. Yours are unique to your account and appear only once.

If you closed that box too quickly

Nothing is broken, and bookings still flow. Press the link icon on the connection to issue a new job results secret; the URL stays the same. The old secret stops working the moment you do, so update it in Zapier too.

Step 3: Create the client and the request in Jobber

Now go back to your Zapier tab. Zapier has been waiting for a sample booking so it knows what our data looks like.

  1. 1

    Send Zapier a test booking

    Call your CaughtLeads number and book an appointment, as in Make your first test call. Then press Test trigger in Zapier. It should find that booking and list its fields. The Send a test button on the connection sends a short test message with no booking fields, so it is no use for mapping.

  2. 2

    Add Jobber: Find or Create Client

    For the action app, search Jobber and choose Find or Create Client. Sign in to Jobber when Zapier asks. Map the first name to data customer_first_name, the last name to data customer_last_name and the phone to data customer_phone_e164.

  3. 3

    Add a second action, Jobber: Create Request

    Point it at the client the previous step found or created. Put data service and data booking_id in the title, and put data call_summary, data service_address and data scheduled_at_local in the details.

  4. 4

    Turn the Zap on

    Then take a real test call, or ask us to place one for you, and watch the request appear in Jobber.

Why every field starts with data

A Catch Hook wraps everything we send inside one container called data. So in Zapier’s field picker the caller’s first name is listed as data customer_first_name, not customer_first_name. If you cannot find a field, that prefix is almost always why.

Put our booking id in the request title

It looks like clutter, and it is the one thing step 4 cannot work without. When the invoice comes back, that id is how we know which appointment it belongs to. We never guess.

Clients with more than one property

Zapier’s Jobber actions always use a client’s first property. If a customer has several, the request may land on the wrong address and your office will need to move it. This is a limit of Jobber’s Zapier app, not something we can set.

Step 4: Send finished jobs back

Bookings flowing into Jobber is half the job. The other half is Jobber telling us what the work was worth, so a booked appointment becomes a held one with a real dollar figure on your report.

This is a second Zap, built the same way, running the other direction.

  1. 1

    Start a new Zap with Jobber: Invoice Updated

    This fires whenever an invoice changes in Jobber, which is more often than you want, so the next step narrows it down.

  2. 2

    Add a Filter step

    Use Filter by Zapier and let it continue only when the invoice is sent or paid. Without this, a draft invoice would mark the appointment held for an amount nobody has agreed to.

  3. 3

    Add a Code by Zapier step

    This is the step that tells us the total. It needs the job results URL and secret you saved in step 2, our booking_id, the status, the invoice total, and unit set to dollars. The ready-made code to paste is on the field-service software reference page.

  4. 4

    Turn it on and finish one small job

    Invoice it in Jobber, then open Attribution in CaughtLeads. The booking should move from booked to held with that invoice total against it.

Never use Jobber's Job Closed trigger for the total

Job Closed carries the job’s value, not what you actually invoiced. Sending that as the total puts a number on your report that your books will not agree with. Use Invoice Updated with the filter above, and send the final invoice total.

What we do with what you send

A completed job with a total marks that booking held for exactly that amount. A later correction updates the amount and keeps the date it was first held. A cancellation cancels the booking, unless it is already held. And if you marked a booking by hand yourself, your mark always wins: later updates from Jobber will not overwrite it.

If something does not work

Zapier will not let me use a Catch Hook

You are on Zapier’s free plan. Catching a web address needs the Professional plan, which starts at $19.99 a month billed yearly or $29.99 billed monthly at the time of writing, and rises with how many tasks you run. That is a Zapier charge, not ours.

The Zap never fires when a booking happens

Three things to check, in this order. The integration in CaughtLeads has Booking made ticked. The address you pasted is the Catch Hook address and not something else Zapier showed you. And the Zap is switched on, not left as a draft, which is the usual answer.

The request lands in Jobber with fields missing

The field names in Zapier all begin with data. If you mapped them before a real booking had come through, Zapier had nothing to list and the mapping may be empty. Book a test call, press Test trigger again, then redo the mapping with the real field names in front of you.

Bookings reach Jobber but nothing is ever marked held

Step 4 is incomplete or switched off. Open the second Zap’s history in Zapier: it will show either that it never ran, that the filter stopped it, or that our reply was an error. A 401 means the secret is wrong. A 404 means that booking id is not one of yours.

A booking went to the wrong customer or address

Find or Create Client matched an existing client it should not have, or the client has several properties and Jobber used the first one. Tidy the duplicate client in Jobber and the next booking will match correctly.