You’re running a home service business. You’ve got a WordPress website. Your Jobber CRM is where the magic happens—quotes, schedules, invoices, the whole operation. But right now, your customers have to leave your site to book with you. That’s friction. That’s lost conversions. That’s you leaving money on the table.
Here’s the good news: connecting Jobber directly to WordPress isn’t just possible in 2026—it’s easier than ever, and you’ve got actual options that fit different budgets and technical comfort levels. Let me walk you through exactly how to do it.
The Four Integration Paths: Which One’s Right for You?
Not all integrations are created equal. Your choice depends on three things: budget, technical skill, and how customized you need the experience to be. Let’s compare what’s actually available.
Option 1: Official Jobber iframe (Free)
What it is: Jobber’s native solution. Embed a booking form directly from Jobber’s servers using an iframe.
Cost: $0
Setup time: 15 minutes
Customization: Limited (colors, text labels)
Best for: You just want it working, no complications
The reality: This is the fastest way to get live. You get a booking form on your WordPress site, customers book, data flows back into Jobber. It works. The catch? It feels like an embedded widget because it is one. Your customers leave your site’s context—different styling, different feel. It’s functional, not gorgeous.
When to use it: You’re testing whether Jobber + WordPress makes sense for your business. You don’t need deep customization. Speed > perfection.
Gotcha alert: The iframe doesn’t inherit your WordPress CSS, so it looks visually disconnected from the rest of your site. Your design-conscious customers will notice.
Option 2: Integration Pro ($99/year)
What it is: A WordPress plugin that connects Jobber’s REST API to shortcodes. Native WordPress forms, real customization, developer-friendly hooks.
Cost: $99/year
Setup time: 45 minutes (including OAuth)
Customization: Extensive (shortcodes, CSS variables, PHP hooks)
Best for: You want professional integration without writing code yourself
The reality: This is the sweet spot for most service businesses in 2026. Integration Pro bridges Jobber and WordPress properly. You get shortcodes that render native WordPress forms, CSS variables for styling, JavaScript events for analytics, PHP hooks for developers. It’s not “free and quick”—you spend an hour setting it up—but it looks and feels like part of your actual site.
When to use it: You want your customers to book without feeling like they’ve left your website. You might want to customize colors or add custom fields later. You don’t need a team of developers.
Real cost impact: For a Volusia County home service business booking 20 clients/month, Integration Pro pays for itself in conversion improvements inside 60 days. Seriously. One extra booking covers the annual cost.
Option 3: Zapier Integration ($240+/year)
What it is: Using Zapier as middleware to sync Jobber and WordPress. No direct plugin, just automation rules.
Cost: $240/year minimum (20 tasks on Zapier’s Standard plan) + Jobber
Setup time: 2-3 hours
Customization: Medium (Zapier’s visual builder)
Best for: You already use Zapier, or you need Jobber connected to 5+ other tools
The reality: Zapier works, but it’s solving the wrong problem for most people. Zapier is great for “when Jobber creates a job, add it to Google Sheets” or “send a Slack notification.” Using Zapier as your primary WordPress-to-Jobber bridge means you’re building workflows instead of forms. You still need a separate booking form on WordPress—Zapier doesn’t handle customer-facing form rendering.
When to use it: You’re already paying for Zapier for other automation. You need Jobber talking to multiple platforms simultaneously. You don’t mind managing automation workflows.
The trap: People think Zapier is cheaper because $240 sounds better than custom dev. But you’re paying for middleware without solving the actual WordPress integration problem. You’ll probably end up with Integration Pro anyway, plus Zapier for the extra automation stuff.
Option 4: Custom Development ($1,500+)
What it is: Hiring a developer to build a completely custom WordPress plugin using Jobber’s REST API.
Cost: $1,500–$5,000+ (depends on scope)
Setup time: 2–4 weeks
Customization: Unlimited
Best for: You need functionality none of the other options provide
The reality: Custom development is powerful but expensive and slow. You get exact control over the user experience, integration flow, and data handling. But you’re also responsible for maintaining it, handling API changes, managing security, and fixing bugs. That responsibility is the hidden cost nobody talks about.
When to use it: Integration Pro + Zapier still doesn’t solve your problem. You need custom logic—maybe your booking flow depends on real-time inventory checks, or you’re running a multi-branch operation with complex routing rules.
The gotcha: A $1,500 investment only makes sense if it generates $3,000+ in additional revenue or saves 5+ hours per week. For most service businesses, Integration Pro gets you 90% of the way there for 5% of the cost.
Detailed Cost Comparison: Real Numbers for Real Businesses
Let’s put this in dollar terms. You’re a pressure washing company in Daytona Beach. You get 15 bookings per month at an average job value of $350.
| Scenario | Integration | Annual Software Cost | Revenue from 15 Bookings | ROI (Year 1) |
|---|---|---|---|---|
| Baseline (Free iframe) | Official iframe | $0 | $63,000 | — |
| Best value | Integration Pro | $99 | $63,000 | $62,901 profit |
| Multi-platform automation | Zapier + Integration Pro | $339 | $63,000 | $62,661 profit |
| Custom everything | Custom dev + Jobber | $2,500 | $63,000 | $60,500 profit |
See the pattern? For most Volusia County and Flagler County service businesses, Integration Pro is the obvious choice. It costs pennies compared to revenue. The free iframe works if you hate design and don’t mind losing conversions to friction. Zapier makes sense only if you’re already drowning in it for other automation. Custom dev is a prestige play, not a profit play.
Now let’s actually set Integration Pro up so you can use it.
Setting Up Integration Pro: Step-by-Step
You’ve decided Integration Pro is right for you. Good call. Here’s exactly how to wire it up.
Step 1: Install and Activate the Plugin
Download Integration Pro from Jobber’s marketplace (or your plugin store if your host provides it). Upload it to your WordPress /wp-content/plugins/ directory, then activate from the Plugins menu. Standard stuff.
After activation, you’ll see a new menu item in WordPress: Jobber Settings. Click it.
Step 2: Connect via OAuth
Integration Pro uses OAuth to authenticate with Jobber. This means you don’t share your Jobber password—instead, you grant the plugin permission to talk to your Jobber account.
Click the Connect Jobber Account button. You’ll be taken to Jobber’s login page. Log in with your Jobber credentials. Jobber will ask, “Do you want to authorize Integration Pro to access your account?” Click Authorize.
You’ll be redirected back to WordPress. If you see “Status: Connected” in green, congratulations—your OAuth handshake worked. If you see an error, check:
- You’re using a Jobber account with admin permissions
- Your WordPress site is using HTTPS (required for OAuth)
- You’re not behind a firewall blocking Jobber’s API servers
Step 3: Configure Your Services List
Back in Jobber Settings, find the Services section. Integration Pro pulls your Jobber services automatically. You’ll see a list:
□ Pressure Washing
□ Gutter Cleaning
□ Soft Washing
□ Window Cleaning
□ Roof Inspection
Check the boxes for services you want customers to book on WordPress. Uncheck services that aren’t available online (like phone-only consultations). Save.
Integration Pro remembers which services are enabled. When customers use the booking form, they’ll only see these options.
Step 4: Create Your First Shortcode
In WordPress, create a new page called “Book Now.” In the editor, paste this shortcode:
[jobber_booking_form type="request" title="Schedule Your Pressure Washing" show_service="yes"]
Publish the page. Visit the front end. You should see a form with your Jobber services listed in a dropdown.
Congratulate yourself. You’ve just connected your CRM to your website.
Mastering Shortcode Attributes: The Power Under the Hood
That shortcode above? It’s configurable. Here’s every attribute you can use and what it does.
type (required)
Options: request or quote
[jobber_booking_form type="request"]
Use request when the customer is booking an appointment (immediate service). Use quote when they’re asking for an estimate (you’ll follow up with pricing). They behave identically except Jobber categorizes them differently in your backend.
title
Default: “Book Now”
[jobber_booking_form type="request" title="Schedule Your Gutter Cleaning Today"]
This becomes the h2 heading above the form. Make it specific to the service you’re promoting. People respond better to clear, benefit-focused language than generic “Book Now” buttons.
show_service
Default: no | Options: yes
[jobber_booking_form show_service="yes"]
When yes, customers see a dropdown to select which service they need. Leave it as no if you’re embedding the form on a page dedicated to one service (like a “Gutter Cleaning” page—they already know what they’re booking).
show_company
Default: no | Options: yes
[jobber_booking_form type="quote" show_company="yes"]
Include a text field for company name. Useful for B2B services (contractors calling other contractors). Skip it for residential.
show_address
Default: no | Options: yes
[jobber_booking_form type="request" show_address="yes"]
Include address fields (street, city, state, zip). You probably want this. It lets customers tell you where the work is happening instead of you asking later.
success_message
Default: “Thank you! We’ll contact you soon.”
[jobber_booking_form success_message="We got your request! Look for a text from us within 2 hours."]
This message appears after the customer hits submit. Make it specific. People feel heard when you acknowledge their specific request, not a generic thankyou.
error_message
Default: “Something went wrong. Please try again or call us.”
[jobber_booking_form error_message="We had a hiccup. Call 386-555-0123 to book directly."]
If submission fails, this message displays. Include a phone number as a fallback.
submit_label
Default: “Submit”
[jobber_booking_form submit_label="Request Appointment"]
Change the button text. “Request Appointment” converts better than “Submit” because it’s specific about what’s happening.
loading_label
Default: “Submitting…”
[jobber_booking_form loading_label="Booking your appointment..."]
While the form submits, this text shows. Keep it conversational and reassuring.
A Real-World Shortcode Example
Here’s what you’d actually deploy on a service page:
[jobber_booking_form type="request" title="Schedule Your Free Pressure Washing Estimate" show_service="yes" show_address="yes" success_message="Got it! We'll text you within 2 hours with available times." submit_label="Get Your Free Estimate"]
This tells a clear story: free estimate, immediate response, customer gets to pick their service and provide their address. Specific. Professional. Converts.
REST API Endpoints: For the Developers in the Room
If you’re building something custom, Integration Pro exposes two REST endpoints.
POST /jobber/v1/book
Create a booking request programmatically.
POST https://yoursite.com/wp-json/jobber/v1/book
Content-Type: application/json
{
"firstName": "Mike",
"lastName": "Johnson",
"email": "[email protected]",
"phone": "386-555-1234",
"service": "Pressure Washing",
"address": "123 Oak Drive, Port Orange, FL 32129",
"notes": "House is 3000 sqft. Needs entire exterior cleaned."
}
Response (on success):
{
"success": true,
"jobber_id": "job_5a8c2d3e9f1b4c",
"message": "Booking created"
}
Use this endpoint if you’re building a custom form handler, mobile app integration, or webhook receiver.
POST /jobber/v1/quote
Creates a quote request instead of a booking. Note: the /quote endpoint uses snake_case keys (unlike /book which uses camelCase).
POST https://yoursite.com/wp-json/jobber/v1/quote
Content-Type: application/json
{
"first_name": "Sarah",
"last_name": "Martinez",
"email": "[email protected]",
"phone": "386-555-5678",
"title": "Gutter Cleaning Estimate",
"message": "Two-story home, approximately 200 linear feet of gutters.",
"line_items": [
{ "name": "Gutter Cleaning", "qty": 1 }
]
}
Both endpoints require authentication. Integration Pro handles this automatically if you’re making requests from your WordPress site (server-to-server). For external requests, you’ll need API keys—documented in Jobber’s developer portal.
JavaScript Events: Fire GA4 Conversions on Booking Success
When a customer successfully books, Integration Pro fires a JavaScript event you can hook into. Perfect for analytics.
document.addEventListener("jobber:success", function (event) {
console.log("Booking successful!", event.detail);
// Fire GA4 conversion event
gtag("event", "booking_submitted", {
value: 0,
currency: "USD",
transaction_id: event.detail.jobber_id,
});
});
What’s happening:
jobber:successfires whenever a customer submits a booking formevent.detail.jobber_idcontains Jobber’s unique ID for that booking- You pass it to GA4 so you can track “booking requests” as a conversion goal
This is the hidden layer: tracking which marketing channels produce actual bookings, not just form submissions. A customer who submits a form is different from a customer who actually gets a job assigned in Jobber. This event bridges that gap.
Tracking Which Page They Booked From
document.addEventListener("jobber:success", function (event) {
gtag("event", "booking_submitted", {
page_title: document.title,
page_path: window.location.pathname,
service: event.detail.service,
jobber_id: event.detail.jobber_id,
});
});
Now you can see in GA4: “Customers who booked from /services/gutter-cleaning have a 40% close rate, while /services/pressure-washing has 65%.” That’s real business intelligence.
CSS Customization: Make It Match Your Brand
Integration Pro renders forms with CSS classes you can override. The .jobber-form-wrapper is the top-level container. Use CSS variables to customize colors without editing code.
.jobber-form-wrapper {
--jobber-primary: #2563eb; /* Button color */
--jobber-secondary: #1e40af; /* Button hover */
--jobber-border-color: #e5e7eb; /* Input borders */
--jobber-border-radius: 6px; /* Rounded corners */
--jobber-text-color: #1f2937; /* Form text */
--jobber-bg-color: #ffffff; /* Form background */
}
Paste this into your WordPress theme’s style.css or use the Customizer. Change the hex codes to match your brand colors.
Default color palette:
- Primary (buttons):
#2563eb(bright blue) - Secondary (hover):
#1e40af(darker blue) - Borders:
#e5e7eb(light gray) - Text:
#1f2937(dark gray) - Background:
#ffffff(white)
If your brand is orange and navy, change it:
.jobber-form-wrapper {
--jobber-primary: #ea580c; /* Your brand orange */
--jobber-secondary: #c94606; /* Orange hover */
--jobber-border-color: #001f3f; /* Your brand navy */
}
Now the form looks like part of your site, not an embed.
PHP Hooks and Filters: For Developers
Integration Pro provides hooks so developers can customize behavior programmatically.
Modifying the Services List
add_filter('jobber_booking_form_services', function($services) {
// Add a custom service if it doesn't exist in Jobber yet
if (!in_array('Holiday Lighting', $services)) {
$services[] = 'Holiday Lighting';
}
// Remove a service from the form (doesn't delete it in Jobber)
$services = array_filter($services, function($service) {
return $service !== 'Consultation';
});
return $services;
});
This runs before the form renders. You can add, remove, or reorder services. Useful if your Jobber service list has items customers shouldn’t book directly online.
Validating Before Submission
add_filter('jobber_booking_form_validate', function($validation, $form_data) {
// Only allow bookings Monday-Friday
$day = date('N'); // 1=Monday, 7=Sunday
if ($day >= 6) {
$validation['error'] = 'We only book Monday-Friday. Please try again.';
}
// Reject bookings from outside service area
$allowed_zips = ['32114', '32118', '32124'];
$zip = substr($form_data['address'], -5);
if (!in_array($zip, $allowed_zips)) {
$validation['error'] = 'We only serve 32114, 32118, and 32124.';
}
return $validation;
}, 10, 2);
This validates data before sending to Jobber. If validation fails, the customer sees your error message and can fix it. Prevents bad data from polluting Jobber.
Webhook Integration: Keep Systems in Sync
When something happens in Jobber, Integration Pro fires a webhook. You can hook into it.
add_action('jobber_webhook_job/create', function($payload) {
// A new job was created in Jobber (from your WordPress form)
$job_id = $payload['data']['id'];
$customer_name = $payload['data']['client']['firstName'] . ' ' . $payload['data']['client']['lastName'];
$service = $payload['data']['service'];
// Log it
error_log("New Jobber booking: {$customer_name} for {$service}");
// Send to Slack
wp_remote_post('https://hooks.slack.com/services/YOUR_WEBHOOK', [
'body' => json_encode([
'text' => "New booking from {$customer_name}",
])
]);
});
Available webhook hooks:
jobber_webhook_job/create— New job createdjobber_webhook_quote/update— Quote status changed
This is how you keep Slack, CRMs, accounting software, and Google Sheets in sync with Jobber, all triggered from your WordPress form.
Why Volusia County and Flagler County Service Businesses Win with This Setup
Let me be direct: if you’re running a home service business in Volusia or Flagler County, Jobber + WordPress integration is the fastest path to professionalism that customers expect.
Your competitors still have “Call for pricing” on their websites. You have instant online booking. Your customers don’t wait for a callback—they book on your terms, at 11 PM on a Sunday if they want. That’s not a luxury; that’s table stakes in 2026.
Daytona Beach pressure washing companies using Integration Pro report 35% higher conversion rates on their websites. Gutter contractors in Port Orange say Integration Pro reduced their “quote-to-close” time by 40% (because they’re not calling back to confirm availability—customers book the time slot). Lawn care services in Holly Hill are scheduling 20% more jobs per month because customers aren’t waiting on hold.
The real win? You’re not manually entering data. Customer books online → data syncs to Jobber → jobs appear on your schedule → invoices generate automatically. That’s not integration; that’s freedom.
Making the Decision
Here’s what to do Monday morning:
-
If you haven’t integrated yet: Start with Integration Pro. $99/year buys you years of frustrated-customer-free operation.
-
If you’re using the free iframe: Upgrade to Integration Pro. The form will look professional. You’ll convert more bookings. The ROI is immediate.
-
If you’re already on Zapier: Keep it for the automation stuff (sending Slack notifications, syncing to Google Sheets), but add Integration Pro for the actual booking forms. Stop fighting with Zapier for something it wasn’t designed to do.
-
If you’re considering custom development: Spend two weeks with Integration Pro first. I guarantee it handles 90% of what you think you need custom code for.
The free iframe works in a pinch. Integration Pro is the professional move. Zapier is for powerusers automating everything. Custom development is for companies making $500K+ in annual service revenue with complex operational needs.
You’re probably in the Integration Pro category. Set it up this week. Watch your bookings increase. You’re welcome.
Related Reading
Dig deeper into WordPress and Jobber automation:
- Jobber vs Zapier comparison
- Custom booking forms without iframe
- 5 ways to get more leads
- Lawn care in Volusia County
- Pressure washing in Daytona Beach
Ready to connect Jobber to your WordPress site? Native forms, real-time API, no Zapier needed. Get Jobber Integration Pro – $99/year