Skip to main content
Google Ads · StaffingGoogle Ads × Staffing

Google Ads conversion tracking for staffing agencies

A staffing agency runs two acquisition problems that look the same in an ads account and behave nothing alike. What Google Ads adds on top of that is a mechanical requirement: gclid, gbraid and wbraid have to reach the record that holds the money, because Google Ads can only credit a conversion it can tie back to a click it recognizes. This page covers both halves — what a conversion is in staffing agencies, and what Google Ads specifically needs to accept it.

Free30 minutesNo obligation

Specific to Google Ads × Staffing

Google Ads for staffing: two goals, and gclid lost at the ATS

Run candidate and employer campaigns on separate Google Ads conversion actions: placements started, uploaded from the ATS, and employer accounts opened, uploaded from the CRM, both through offline conversion import against gclid, gbraid or wbraid. Use campaign-specific conversion goals so candidate campaigns never bid toward employer conversions, or the reverse.

Google is the one platform where both sides of a staffing agency search with clear intent: candidates type "forklift jobs near me" and employers type "temp staffing agency" plus a city. Set campaign-specific conversion goals so each campaign counts only its own side's actions. Account-default goals are how the single-action problem quietly returns the next time someone creates a campaign.

On the candidate side, the most common break is the apply button. Job pages on your site hand off to an application hosted on the ATS vendor's domain, the gclid stays behind on the page the candidate left, and the application record arrives with no identifier. Capture the parameters on landing and pass them into the ATS apply link, or store them against an application session you can join later. Test with gbraid too, because many hourly job seekers apply from iPhones.

Ads for job openings fall under Google's restrictions for employment advertising in the US and Canada, which remove targeting by age, gender, parental status, marital status and ZIP code, so plan candidate geography around radius and city targeting. Light industrial temp placements often start within days, well inside the 90-day window. Perm professional placements often do not, so optimize those campaigns on a recruiter-qualified candidate and keep the fee for reporting.

Google Ads · Staffing · what breaks

Why Google Ads under-reports for staffing agencies

  1. 01

    Candidate applications and employer inquiries in one conversion action

    The cheap signal outnumbers the valuable one by orders of magnitude, so bidding optimizes entirely toward candidates.

  2. 02

    Applications counted regardless of whether anyone is placeable

    Volume in the wrong skill category, the wrong location or the wrong right-to-work status is not supply, it is admin.

  3. 03

    Placement revenue arriving months after the click

    The fee is earned when someone starts, and often paid later still.

  4. 04

    Gclid, gbraid and wbraid never reaches the record

    Three parameters, not one. gclid is the long-standing identifier; gbraid and wbraid arrive on iOS traffic where privacy constraints prevent the usual one. Capture code that names only gclid loses a growing share, silently, and the loss is invisible until you audit how many records carry an identifier.

Google Ads · Staffing · the fix

What working looks like — Google Ads · Staffing

  • Two conversion models, deliberately separated

    Candidate-side and employer-side never share a conversion action or a bidding strategy.

  • Filled placements as the candidate-side money event

    Sent from the ATS when a placement starts, valued at the actual fee.

  • Employer accounts as the client-side money event

    Sent from the CRM, valued at expected first-year billings rather than a flat number.

Google Ads · Staffing · architecture

How Google Ads and staffing agencies actually connect

  1. 1

    The conversion in staffing agencies

    Two funnels, mapped independently. Trying to describe them with one event taxonomy is the root cause of most staffing measurement problems, because the same word means different things on each side.

  2. 2

    Google Ads needs a click to match

    A click identifier inside the 90-day window, a conversion action name that matches one configured in the account, a conversion timestamp for when the outcome happened, and a value. Read the match rate after uploading — a file can upload perfectly and match nothing.

  3. 3

    The identifier: gclid, gbraid and wbraid

    Three parameters, not one. gclid is the long-standing identifier; gbraid and wbraid arrive on iOS traffic where privacy constraints prevent the usual one. Capture code that names only gclid loses a growing share, silently, and the loss is invisible until you audit how many records carry an identifier.

  4. 4

    Where it gets sent from

    The ATS for placements by start date, and the CRM for employer accounts by open date — two reports, for the same window, never summed..

  5. 5

    Deduplication and window

    There's no shared event ID mechanism like Meta's. What matters instead is the counting setting on each conversion action — 'one' for lead-type conversions so a repeat submitter doesn't count three times, 'every' for ecommerce where a second purchase is a second sale. This is the single most common misconfiguration we find in Google Ads accounts. Google's offline import window is 90 days from the click. Anything older can't be matched, and rows outside it fail as unmatched without much explanation. Measure your median click-to-outcome time against that before designing anything.

Google Ads · Staffing · events

The conversion map for staffing agencies

Five events across two funnels. The only thing they share is the click identifier mechanism.

Candidate applicationHigh volume, low value. Learning signal only, and only when filtered by category.
Candidate qualifiedRecruiter-confirmed placeable in a category you actually staff.
Placement startedCandidate-side money event. Sent from the ATS with the fee.
Employer inquiryRare and valuable. Its own conversion action, its own campaigns.
Employer account openedClient-side money event, valued at expected first-year billings.

Google Ads · Staffing · diagnose

Diagnostic order — Google Ads · Staffing

  1. 01

    Count records carrying gclid, gbraid and wbraid

  2. 02

    One conversion action for both sides

    The single most damaging configuration in this category, and the most common.

  3. 03

    ATS and CRM as separate systems with no shared identifier

    The candidate record and the company record live apart, and the identifier is usually mapped into neither.

  4. 04

    Long placement cycles against import windows

    If your median click-to-placement exceeds 90 days, placements cannot be uploaded to Google Ads against those clicks.

  5. 05

    Read the match rate on the upload, not the success message

    A conversion action that stops receiving hits is flagged as inactive 30 days later — by which point a month of budget has already run against a missing signal. Check the last-received date on every action monthly; it takes two minutes and it's the cheapest monitoring available.

Google Ads · Staffing · prove

How it gets proven — Google Ads · Staffing

Source of truth

The ATS for placements by start date, and the CRM for employer accounts by open date — two reports, for the same window, never summed.

  • Placements reconciled per record against what each platform reports, candidate side only.
  • Employer accounts reconciled separately, on their own window.
  • Identifier coverage measured independently on each funnel, because they fail independently.
  • Median click-to-placement and click-to-account measured against every import window before the build.
  • The match rate on the upload, not the success message read directly, not inferred from an upload succeeding.

Google Ads · Staffing · free audit

What we check in the free audit

  • Count records carrying gclid, gbraid and wbraid
  • One conversion action for both sides
  • ATS and CRM as separate systems with no shared identifier
  • Long placement cycles against import windows
  • Read the match rate on the upload, not the success message

Checked against

The ATS for placements by start date, and the CRM for employer accounts by open date — two reports, for the same window, never summed.

Get my free conversion tracking audit

Free30 minutesNo obligation

Google Ads · Staffing · when not to buy

When you don't need this — Google Ads · Staffing

  • If Google Ads already reports conversions that reconcile against the ats for placements by start date within a few percent, this is working and there is nothing to buy.
  • Measure identifier coverage yourself first — pull your last hundred records and count how many carry gclid, gbraid and wbraid.
  • If you're running Performance Max exclusively and haven't separated your conversion actions, the import will work and the reporting won't tell you much. Worth sorting the account structure first.

Google Ads · Staffing · what we deliver

What gets built — Google Ads · Staffing

  • Click identifier captured on both funnels separately

    Candidate and employer journeys usually run on different pages and sometimes different domains.

  • Carried into the ATS on the candidate side

    Onto the candidate record, surviving the application-to-submission-to-placement chain.

  • Carried into the CRM on the employer side

    Onto the company record, mapped through any lead-to-account conversion.

  • Fallen-through placements reversed

    A candidate who does not complete the guarantee period is not the revenue you reported.

  • Dispatch via Google's offline conversion import

    Uploaded against the click identifier, either through the Google Ads API or as a file. The upload is the easy part; what limits it is how many of your records carry an identifier at all. Verify the current column format against Google's own template — it has changed before.

Written guarantee

95%+ tracking accuracy

Measured against The ATS for placements by start date, and the CRM for employer accounts by open date — two reports, for the same window, never summed.. Miss it and we keep working at no cost.

Get my free conversion tracking audit

From $400 · See packages

FAQ

Google Ads · Staffing questions, answered

Not for ads promoting job openings in the US and Canada; Google's employment ad restrictions remove ZIP code, age, gender, parental status and marital status targeting. Employer-facing campaigns selling staffing services may be treated differently, so check how each campaign is classified.

Free · 30 min

Get Google Ads reporting what staffing agencies actually earn

Free30 minutesNo obligation