All Posts Jobber Integration

Jobber WordPress Analytics: Track Every Lead with GA4 and Custom Events

Track every Jobber lead with GA4 custom events. Complete setup guide for Google Ads conversion import, Meta Pixel, error tracking, and ROI optimization.

You’re running ads on Google and Facebook. You’re getting clicks. You’re spending money. But when someone submits a form through your Jobber booking widget… Google Analytics sees nothing. That’s the invisible lead problem, and it’s costing you real money in wasted ad spend.

Here’s the thing: Jobber’s native booking forms live inside iframes. Google Analytics can’t see inside iframes. Your form submissions are invisible to GA4. You have no idea which ad campaigns actually produce leads. Which keywords convert. Which landing pages matter. You’re flying blind.

This article shows you how to fix it. We’re talking complete visibility into every Jobber lead—where it came from, which campaign, which keyword, what it’s worth. And we’re going to wire it all into Google Ads so you can optimize your ad spend based on actual conversion data.

Let’s build this.

The Invisible Lead Problem: Why GA4 Can’t See Your Jobber Forms

Jobber’s iframe-based forms are brilliant for user experience. They load fast, they look clean, they work everywhere. But here’s the security limitation: JavaScript running inside an iframe can’t communicate with the parent page’s analytics. It’s a browser sandbox thing—iframes are isolated for security.

So when someone fills out your Jobber form and hits submit, GA4 has no clue. Your analytics dashboard shows page views and clicks, but form submissions? Completely missing. Your conversion data is incomplete. Your ad ROI calculations are wrong.

Think about it: if you’re spending $5,000 per month on Google Ads and you can only track 60% of your conversions, you’re making decisions on incomplete data. You might kill a high-performing campaign because you think it’s underperforming. You might scale something that’s actually dragging down your ROI.

Integration Pro solves this problem with a clever workaround: native WordPress forms that fire custom JavaScript events GA4 can actually see.

How Integration Pro Fixes the Analytics Blind Spot

Integration Pro gives you a Jobber booking form that lives on your WordPress page, not in an iframe. When someone submits, it fires a custom JavaScript event called jobber:success. This event lives on your page. GA4 can see it. You get tracking.

Here’s the basic flow:

  1. User lands on your service page
  2. Sees a native WordPress form (not an iframe)
  3. Fills it out and submits
  4. The form fires a jobber:success event
  5. GA4 listens for that event and logs it as a conversion
  6. You see it in your analytics dashboard
  7. Google Ads imports it as a conversion for bid optimization

The JavaScript is simple. Drop this in your theme’s functions.php or a custom plugin:

document.addEventListener("jobber:success", (event) => {
  gtag("event", "generate_lead", {
    currency: "USD",
    value: 150,
    jobber_id: event.detail.jobber_id,
  });
});

Every time someone submits a form, GA4 gets pinged. You get a new row in your conversion data. You start seeing patterns.

Step-by-Step GA4 Setup for Jobber Conversions

Let’s walk through the actual setup. This is intermediate-level work, but it’s totally doable if you follow the steps.

Step 1: Install GA4 on WordPress

First, you need GA4 on your WordPress site. You have two options: plugin or manual.

Plugin route (easier):

  • Install “MonsterInsights” or “Google Site Kit”
  • Connect your Google Analytics account
  • Follow the setup wizard
  • Done in 10 minutes

Manual route (more control):

  • Go to Google Analytics admin
  • Create a new GA4 property
  • Copy your Measurement ID (looks like G-XXXXXXXXXX)
  • Add this to your WordPress theme header or use a plugin to inject it:
<!-- Google Analytics -->
<script
  async
  src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"
></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag() {
    dataLayer.push(arguments);
  }
  gtag("js", new Date());
  gtag("config", "G-XXXXXXXXXX");
</script>

Either way works. The plugin route is cleaner if you’re not comfortable with code.

Step 2: Create a Custom Event in GA4

Now you need to tell GA4 to listen for the jobber:success event. This is where the magic happens.

Go to your Google Analytics property and navigate to:

  • Admin (bottom left)
  • Events (under Data Collection)
  • Create Event

Name it generate_lead. Set it to trigger whenever the event name equals jobber:success on your domain. Save it.

This creates a custom event that GA4 will recognize and log.

Step 3: Mark It as a Conversion

Go to:

  • Admin
  • Conversions (under Data Collection)
  • New Conversion Event

Select generate_lead. Toggle it on. This tells GA4: “This isn’t just an event, it’s a conversion.”

Now when someone submits a form, it counts as a conversion in your GA4 dashboard.

Step 4: Set Up Event Parameters

Event parameters give you context. You want to know not just that someone converted, but what they converted for. Add these parameters to your event:

document.addEventListener("jobber:success", (event) => {
  gtag("event", "generate_lead", {
    currency: "USD",
    value: 150, // Adjust to your average lead value
    service_type: event.detail.service_type,
    page_url: window.location.href,
    campaign_source: event.detail.utm_source,
    campaign_medium: event.detail.utm_medium,
    campaign_name: event.detail.utm_campaign,
  });
});

These parameters show up in your GA4 reports. You can segment leads by service type, by page, by campaign. Real data. Real insights.

Here’s where it gets good. Once GA4 is tracking Jobber leads, you can import those conversions back into Google Ads. Your ads system now knows which keywords and campaigns actually produce Jobber bookings.

This is not just impressions and clicks. This is actual conversions. Google’s algorithm uses this to optimize your bids automatically.

Setup Google Ads Conversion Import

In Google Ads:

  1. Go to Tools & Settings > Conversions
  2. Click New Conversion
  3. Select Import > Google Analytics 4
  4. Choose the GA4 property linked to your WordPress site
  5. Select the generate_lead conversion event
  6. Configure conversion value settings (set it to the value you assigned in GA4)
  7. Save

Now every Jobber lead you track in GA4 automatically imports into Google Ads as a conversion. Your ads system learns which keywords produce real business value.

You can also manually fire Google Ads conversions using this code:

document.addEventListener("jobber:success", (event) => {
  gtag("event", "conversion", {
    send_to: "AW-XXXXXXXXX/XXXXXXXXX",
    value: 150.0,
    currency: "USD",
  });
});

Replace AW-XXXXXXXXX/XXXXXXXXX with your Google Ads conversion ID. You find this in Google Ads under Conversions > Conversion action details.

Meta Pixel Integration: Track Jobber Leads on Facebook

Don’t forget Facebook. A huge chunk of your leads probably come from Meta ads. You want to track those too.

Installing Meta Pixel

  1. Go to Meta Business Suite > Data Sources > Pixels
  2. Create a new pixel or select existing
  3. Copy the pixel ID
  4. Install it on your WordPress site (plugin or manual)

Firing Lead Events from Jobber Forms

Add this to your event listener:

document.addEventListener("jobber:success", (event) => {
  fbq("track", "Lead", {
    content_name: "Jobber Booking",
    value: 150.0,
    currency: "USD",
    content_category: event.detail.service_type,
  });
});

Now every Jobber submission fires a Lead event in Meta Pixel. Meta’s algorithm sees it. Over time, Meta learns which audiences and placements produce actual leads. Your ROAS improves.

This is conversion-level data on the Meta side. Facebook can’t see inside iframes either, so this custom event approach is the solution there too.

Error Tracking: Know When Forms Fail

Here’s something people miss: tracking form errors is just as important as tracking submissions.

If your form is broken, you want to know immediately. If people are hitting validation errors, that’s a problem you can fix. But only if you’re tracking it.

Jobber forms fire a jobber:error event when something goes wrong. Listen for it:

document.addEventListener("jobber:error", (event) => {
  gtag("event", "form_error", {
    error_message: event.detail.message,
    page_location: window.location.href,
    timestamp: new Date().toISOString(),
  });
});

Now you can see in GA4:

  • How many forms errored out
  • On which pages
  • What the error messages were
  • Roughly when it happened

If you suddenly see a spike in form errors, you know something’s broken. You can fix it before you lose a ton of leads.

UTM Parameter Tracking for Complete Campaign Attribution

UTM parameters are how you tell your analytics which ad campaign sent the traffic.

Your ad links should look like this:

https://yoursite.com/service-page/?utm_source=google&utm_medium=cpc&utm_campaign=plumbing_leads_march&utm_content=toilet_repair

When someone clicks that ad and lands on your page, GA4 automatically captures those UTM values. When they submit your Jobber form, the event includes that attribution data.

Now you know: “This lead came from Google Ads, plumbing keywords campaign, toilet repair ad.”

You can build reports like:

  • Leads by campaign
  • Cost per lead by ad source
  • Conversion rate by landing page
  • Revenue per campaign (if you track deal values in Jobber)

Set up a UTM structure:

  • utm_source: google, facebook, bing, organic, etc.
  • utm_medium: cpc, social, email, etc.
  • utm_campaign: plumbing_leads, ac_service, seasonal_promo, etc.
  • utm_content: optional, use for A/B testing

Be consistent. When UTM values are messy (google vs Google, cpc vs cpc_campaign), your reports get useless. Standardize it.

Building a Custom Looker Studio Dashboard

Raw GA4 data is powerful, but dashboards are where insights happen.

Google’s Looker Studio (free) lets you build custom dashboards from your GA4 data. You can create something like this:

Top Section:

  • Total conversions (this month vs last month)
  • Conversion rate (conversions / sessions)
  • Cost per conversion (ad spend / conversions)

Middle Section:

  • Conversions by campaign (bar chart)
  • Conversions by traffic source (pie chart)
  • Conversions by landing page (table)

Bottom Section:

  • Conversion trend (line chart, last 90 days)
  • Error rate (conversions vs errors)
  • Top performing keywords (imported from Google Ads)

Here’s how to build it:

  1. Open Looker Studio (datastudio.google.com)
  2. Create new report
  3. Connect your GA4 property
  4. Add dimensions: campaign, source/medium, landing page, date
  5. Add metrics: conversions, conversion rate, users
  6. Build charts and tables
  7. Set up filters so you can drill into specific campaigns or date ranges

Now you have a real-time view of which channels produce Jobber leads. You can see it updated every few hours.

A/B Testing Form Placements: Which Pages Convert Best

Not all pages convert equally. Your “Plumbing Service” page might get 40% of traffic but only 20% of conversions. Your “Emergency Drain Cleaning” page might get 5% of traffic but 15% of conversions.

This is where you optimize.

With GA4 conversion tracking, you can see which pages convert best. Then you ask questions:

  • Why does Drain Cleaning convert better? (Better copy? Better offer? Better targeting?)
  • Why does Plumbing Service get traffic but no conversions? (Wrong audience? Missing social proof?)
  • What if we moved the form higher on Plumbing Service?
  • What if we added more detail to the Drain Cleaning page?

You can test these changes. Here’s how:

  1. Build a variation of your low-converting page
  2. Send 50% of traffic to the original, 50% to the variation
  3. Run it for 2-4 weeks (until you have 100+ conversions in each)
  4. Check GA4 to see which converted better
  5. Roll out the winner

GA4 tracks this automatically if you’re consistent with UTM parameters (use a separate utm_content for the test variation).

Example:

  • Original: utm_content=plumbing_original
  • Variation: utm_content=plumbing_form_above_fold

Now you can segment by content in GA4 and see which converted better.

Conversion Rate Optimization: Know What “Good” Really Looks Like

Here’s a question we get all the time: “What’s a good conversion rate?”

For service business Jobber forms, the baseline is 2-5% form submission rate. That means:

  • 100 people land on your page
  • 2-5 fill out and submit the form

Some industries run higher (1-2% is normal for plumbing, HVAC, electrical). Some run lower (roofing, foundation repair). It depends on:

  • How much commitment the form requires
  • Price point of the service
  • Urgency of the customer’s problem
  • How much information you ask for

Here’s how to benchmark yourself:

  1. In GA4, go to your landing pages report
  2. Find your Jobber form pages
  3. Calculate: conversions / sessions = conversion rate
  4. Compare against your baseline

If you’re at 1%, there’s room to improve. Test:

  • Fewer form fields (people abandon complex forms)
  • Better copy explaining the value
  • Social proof (reviews, “X people booked this week”)
  • Urgency (“Same-day service available”)
  • Form placement (above the fold vs below)

Each test might lift your rate 0.3-0.5%. Stack a few wins and you’re at 3-4%.

At 2% vs 4%, you’re cutting your customer acquisition cost in half. That’s worth the optimization effort.

Submission Logging in WordPress: Backup Tracking Beyond GA4

GA4 is great, but it’s not perfect. Sometimes events misfire. Sometimes browser extensions block tracking. Sometimes you just want a backup copy of every submission.

Create a simple logging system in WordPress:

function log_jobber_submission($lead_data) {
  global $wpdb;

  $table = $wpdb->prefix . 'jobber_leads';

  $wpdb->insert($table, array(
    'jobber_id' => $lead_data['jobber_id'],
    'email' => $lead_data['email'],
    'phone' => $lead_data['phone'],
    'service_type' => $lead_data['service_type'],
    'utm_source' => $_GET['utm_source'] ?? '',
    'utm_campaign' => $_GET['utm_campaign'] ?? '',
    'landing_page' => $_SERVER['HTTP_REFERER'],
    'submitted_at' => current_time('mysql')
  ));
}

Add a database table to store the logs. Now every form submission is backed up in your WordPress database. If GA4 glitches, you still have the data.

You can query this table later to:

  • Audit GA4 numbers
  • Build custom reports GA4 can’t do
  • Export data for your CRM
  • Debug tracking issues

ROI Calculation: Turn Data Into Ad Spend Decisions

Here’s the business case for all this tracking work: ROI optimization.

Let’s say you track:

  • Cost per lead from Google: $45
  • Cost per lead from Facebook: $30
  • Cost per lead from organic search: $0 (but you spent $1,000/month on SEO)

And you know:

  • 40% of Google leads turn into jobs
  • 30% of Facebook leads turn into jobs
  • 50% of organic leads turn into jobs

And your average job value is $2,500.

You can calculate:

Google Ads:

  • Cost per lead: $45
  • Cost per job: $45 / 0.40 = $112.50
  • Revenue per job: $2,500
  • Net profit per job: $2,500 – $112.50 = $2,387.50

Facebook Ads:

  • Cost per lead: $30
  • Cost per job: $30 / 0.30 = $100
  • Revenue per job: $2,500
  • Net profit per job: $2,500 – $100 = $2,400

Organic Search:

  • Cost per lead: $0 (but $1,000/month SEO cost / 15 leads = $66.67 per lead)
  • Cost per job: $66.67 / 0.50 = $133.34
  • Revenue per job: $2,500
  • Net profit per job: $2,500 – $133.34 = $2,366.66

Now you know where to spend:

  • Facebook is most efficient ($100 cost per job)
  • Google is close ($112.50)
  • Organic is worst ROI when you factor in SEO costs ($133.34)

So you’d reallocate budget: 60% to Facebook, 30% to Google, 10% to organic maintenance.

Without this data, you’d be guessing. With it, you optimize based on reality.

Putting It All Together: Your Implementation Checklist

Here’s your roadmap:

Week 1: Setup

  • [ ] Install GA4 on WordPress
  • [ ] Install Integration Pro and set up native Jobber form
  • [ ] Add jobber:success event listener to your site
  • [ ] Create GA4 custom event “generate_lead”

Week 2: Conversions

  • [ ] Mark “generate_lead” as conversion in GA4
  • [ ] Set up GA4-to-Google Ads conversion import
  • [ ] Install Meta Pixel
  • [ ] Add jobber:error event listener for debugging

Week 3: Data Quality

  • [ ] Set up UTM parameter naming convention
  • [ ] Create logging system in WordPress
  • [ ] Build Looker Studio dashboard
  • [ ] Document your setup for team reference

Week 4+: Optimization

  • [ ] Run first A/B test on low-converting page
  • [ ] Calculate baseline conversion rates
  • [ ] Plan keyword/landing page improvements
  • [ ] Review monthly ROI by channel

This isn’t a one-time project. You’ll iterate on this. You’ll find bugs, make improvements, discover new opportunities. But once the foundation is solid, you have visibility into every lead.

The Real Value: From Guessing to Knowing

At the start of this article, I said you’re flying blind. You’re spending ad money with no idea which campaigns produce Jobber leads.

Now you know. You can see exactly which keywords, which campaigns, which pages produce actual business value. You can optimize ad spend based on conversion data, not guesses. You can calculate ROI and make smart decisions about where to spend.

That’s the difference between a service business that’s spending money hoping it works, and one that knows it works.

Set this up. The work is a few hours. The payoff is clearer, faster growth. That’s worth the effort.


Ready to connect Jobber to your WordPress site? Native forms, real-time API, no Zapier needed. Get Jobber Integration Pro – $99/year

Free Discovery Call

Start With a Conversation, Not a Commitment

Every engagement begins with a free 30-minute discovery call. We'll map what's slowing your business down and tell you exactly what we'd fix first – no pitch deck, no obligation.