{"slug":"jobber-oauth-integration-ghl","title":"Jobber OAuth Integration for GHL to Jobber Handoff","tags":["jobber","oauth","integration","ghl","home-services"],"agent_summary":"Architecture for connecting GoHighLevel to Jobber via OAuth for passing booked estimates from GHL pipeline to Jobber for fulfillment operations.","trigger_phrases":["jobber ghl integration","connect jobber oauth","ghl to jobber handoff","jobber api integration","estimate to jobber workflow","jobber oauth setup"],"runnable":true,"markdown":"## Jobber OAuth Integration Architecture\n\n### Purpose\nPass booked estimates from GHL pipeline to client's Jobber account for fulfillment operations.\n\n### Components Built\n\n#### 1. Jobber Developer App\n- Create app in Jobber developer portal\n- Get client ID and secret\n- Note: Free tier limited to 5 clients\n\n#### 2. OAuth Callback Endpoint\nBuilt on iron funnels infrastructure:\n- Endpoint: `/api/jobber/callback`\n- Purpose: Retrieve authorization code after client clicks auth link\n- Exchanges code for access/refresh tokens\n\n#### 3. Token Storage\nSuperbase columns needed:\n- `jobber_access_token`\n- `jobber_refresh_token`\n- `jobber_token_expires`\n\n#### 4. Magic Link System\nGenerate per-client authorization links:\n1. Client clicks magic link\n2. Redirects to Jobber OAuth consent\n3. Client approves permissions\n4. Callback captures tokens\n5. Tokens stored in client record\n\n### OAuth Scopes Needed\n- Read/write requests\n- Read/write clients\n- Read/write jobs\n- Calendar access\n- Custom fields (for mapping GHL data)\n\n### Workflow Trigger\n```\nGHL Pipeline Stage: \"Estimate Booked\" (or \"Won\")\n→ GHL Workflow: Send webhook to n8n\n→ n8n: Create request/job in Jobber via API\n→ Jobber: Appears in client's Jobber calendar\n```\n\n### Architectural Decision\n**Recommendation**: Use GHL calendar instead of Jobber for booking\n- Conversation AI can only book to GHL calendar\n- Jobber integration becomes optional for fulfillment sync\n- Keeps system GHL-native first\n\n### Client Migration Plan\nIf client uses Jobber for scheduling:\n1. Phase 1: Book in GHL calendar\n2. Phase 2: Sync to Jobber post-booking (optional)\n3. Phase 3: Full Jobber integration when volume justifies\n\n### Testing the Integration\n1. Create magic link for test client\n2. Click link, authorize Jobber\n3. Verify tokens stored in Superbase\n4. Test creating a job via API\n5. Verify appears in Jobber dashboard\n","html":"<h2>Jobber OAuth Integration Architecture</h2>\n<h3>Purpose</h3>\n<p>Pass booked estimates from GHL pipeline to client's Jobber account for fulfillment operations.</p>\n<h3>Components Built</h3>\n<h4>1. Jobber Developer App</h4>\n<ul>\n<li>Create app in Jobber developer portal</li>\n<li>Get client ID and secret</li>\n<li>Note: Free tier limited to 5 clients</li>\n</ul>\n<h4>2. OAuth Callback Endpoint</h4>\n<p>Built on iron funnels infrastructure:</p>\n<ul>\n<li>Endpoint: <code>/api/jobber/callback</code></li>\n<li>Purpose: Retrieve authorization code after client clicks auth link</li>\n<li>Exchanges code for access/refresh tokens</li>\n</ul>\n<h4>3. Token Storage</h4>\n<p>Superbase columns needed:</p>\n<ul>\n<li><code>jobber_access_token</code></li>\n<li><code>jobber_refresh_token</code></li>\n<li><code>jobber_token_expires</code></li>\n</ul>\n<h4>4. Magic Link System</h4>\n<p>Generate per-client authorization links:</p>\n<ol>\n<li>Client clicks magic link</li>\n<li>Redirects to Jobber OAuth consent</li>\n<li>Client approves permissions</li>\n<li>Callback captures tokens</li>\n<li>Tokens stored in client record</li>\n</ol>\n<h3>OAuth Scopes Needed</h3>\n<ul>\n<li>Read/write requests</li>\n<li>Read/write clients</li>\n<li>Read/write jobs</li>\n<li>Calendar access</li>\n<li>Custom fields (for mapping GHL data)</li>\n</ul>\n<h3>Workflow Trigger</h3>\n<pre><code>GHL Pipeline Stage: \"Estimate Booked\" (or \"Won\")\n→ GHL Workflow: Send webhook to n8n\n→ n8n: Create request/job in Jobber via API\n→ Jobber: Appears in client's Jobber calendar\n</code></pre>\n<h3>Architectural Decision</h3>\n<p><strong>Recommendation</strong>: Use GHL calendar instead of Jobber for booking</p>\n<ul>\n<li>Conversation AI can only book to GHL calendar</li>\n<li>Jobber integration becomes optional for fulfillment sync</li>\n<li>Keeps system GHL-native first</li>\n</ul>\n<h3>Client Migration Plan</h3>\n<p>If client uses Jobber for scheduling:</p>\n<ol>\n<li>Phase 1: Book in GHL calendar</li>\n<li>Phase 2: Sync to Jobber post-booking (optional)</li>\n<li>Phase 3: Full Jobber integration when volume justifies</li>\n</ol>\n<h3>Testing the Integration</h3>\n<ol>\n<li>Create magic link for test client</li>\n<li>Click link, authorize Jobber</li>\n<li>Verify tokens stored in Superbase</li>\n<li>Test creating a job via API</li>\n<li>Verify appears in Jobber dashboard</li>\n</ol>\n"}