How to Connect Jobber’s API to Xano & Make— Step-by-Step (With Token Refresh + Webhooks)
IMPORTANT: Jobber’s API access token expires every 60 minutes, and the refresh token is rotated. If you’re not updating it properly in your database, your whole system will break every hour. This is the full walkthrough I wish I had.
STEP 1: Create a Jobber Developer App
Go to Jobber’s Developer Portal:
https://developer.getjobber.com
Click “Create New App” — this gives you:
-
Client ID
-
Client Secret
-
Redirect URI (this is VERY important — read below)
What Is the Redirect URI?
The Redirect URI is where Jobber sends the user back to you after they log in and authorize your app.
If you’re using Xano, you’ll want to create a public endpoint that will:
-
Accept the
?code=XYZin the URL from Jobber -
Exchange that
codefor an access token and refresh token -
Save both into your Xano database
You must paste this exact public Xano endpoint URL into the Redirect URI field inside your Jobber developer app settings.
STEP 2: User Authorizes the App (Authorization URL)
You’ll need to generate a URL like this and send it to your user:
CopyEdit
https://api.getjobber.com/api/oauth/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_XANO_REDIRECT_URI&response_type=code
When the user clicks this:
-
They log into Jobber
-
Jobber redirects them back to your Xano endpoint with a
?code=XYZ
STEP 3: In Xano, Exchange Code for Tokens
In your Xano redirect endpoint, use the code to make a POST request to Jobber’s token URL:
CopyEdit
POST https://api.getjobber.com/api/oauth/token
With this body:
json
CopyEdit
{ "grant_type": "authorization_code", "client_id": "YOUR_CLIENT_ID", "client_secret": "YOUR_CLIENT_SECRET", "redirect_uri": "YOUR_SAME_REDIRECT_URI", "code": "THE_CODE_FROM_URL" }
This will give you:
-
access_token(expires in 60 mins) -
refresh_token(expires soon and changes every time you use it) -
expires_in: usually 3600 seconds
STEP 4: Save Tokens to Xano Database
Create a table in Xano, e.g. jobber_tokens, with fields:
-
access_token -
refresh_token -
last_updated -
Optional:
user_id,company_id, etc.
After calling the token endpoint, store both tokens in this table.
STEP 5: Refresh Tokens Every 50–55 Minutes
Because tokens expire in 60 minutes, I created a new Xano endpoint to refresh them.
Make a POST request to this:
CopyEdit
POST https://api.getjobber.com/api/oauth/token
With this body:
json
CopyEdit
{ "grant_type":"refresh_token","client_id":"YOUR_CLIENT_ID","client_secret": "YOUR_CLIENT_SECRET","refresh_token":"STORED_REFRESH_TOKEN" }
Jobber rotates the refresh_token every time. You MUST update both tokens each time or you’ll be locked out.
STEP 6: Use Make to Call Xano Every 50 Minutes
Now go to Make and:
-
Create a scenario that runs every 50 minutes
-
Add an HTTP module that calls your Xano refresh endpoint
-
That’s it — now your tokens stay up-to-date
STEP 7: Set Up Webhooks in Jobber for Client or Job Creation
If you want to do automations like “when a new client is created” or “a new request comes in,” go back to your Jobber developer app and:
-
Scroll down to Webhooks
-
Choose the event (like
client.created) -
Set the webhook URL — this is your Make webhook URL (you’ll get this from a Make webhook module)
This lets Make know when something changes in Jobber.
Helpful Tips
-
Use Xano to handle token storage and refreshing -
Use Make to run automations (and refresh tokens if needed) -
If you get stuck, just ask ChatGPT:“How do I use Xano to call an OAuth2 token endpoint and store the response?”
“How do I build a refresh token endpoint in Xano?”
Common Mistakes
| Access token stops working every hour | You’re not refreshing it correctly |
| Using the same refresh_token multiple times | You MUST update your refresh token every time you refresh |
| Forgot to add redirect URI to Jobber app | Go back and add it or it won’t work |
| Trying to call Jobber API directly from Make | Use Xano as a middleware for authentication and token storage |
Final Words
This setup took me a while to figure out — not because it’s super advanced, but because Jobber doesn’t have great tutorials, and most examples online skip over Xano or Make
If you follow these steps closely, you can:
-
Automate everything
-
Stay authenticated
-
Run custom workflows in Make.
If you’re stuck or unsure, just ask ChatGPT the exact question you’re stuck on. It’s how I figured this out.
If you need help, feel free to tag me — but ChatGPT can walk you through how to push data to an API, store tokens in Xano, or refresh tokens with a custom endpoint.
![]()