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
- 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.
- 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.
- 03
Placement revenue arriving months after the click
The fee is earned when someone starts, and often paid later still.
- 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
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
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
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
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
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.
| Event | What it means here |
|---|---|
| Candidate application | High volume, low value. Learning signal only, and only when filtered by category. |
| Candidate qualified | Recruiter-confirmed placeable in a category you actually staff. |
| Placement started | Candidate-side money event. Sent from the ATS with the fee. |
| Employer inquiry | Rare and valuable. Its own conversion action, its own campaigns. |
| Employer account opened | Client-side money event, valued at expected first-year billings. |
Google Ads · Staffing · diagnose
Diagnostic order — Google Ads · Staffing
- 01
Count records carrying gclid, gbraid and wbraid
- 02
One conversion action for both sides
The single most damaging configuration in this category, and the most common.
- 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.
- 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.
- 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.
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.
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.
Usually because the apply flow moves to the ATS vendor's domain and the parameters don't travel with it. Pass them into the apply link or join them through an application session, then measure how many applications carry one.
Because applications are the cheapest thing your funnel produces and the least correlated with revenue. An algorithm told that applications are the goal will find you an enormous number of applications from people you cannot place. That is the standard failure mode in this category and it is expensive.
Expected first-year billings for that account type, derived from your own history and documented. It will be a wide range, which is fine — a documented range beats an invented point estimate, and bidding only needs the relative ordering to be right.
No, because the two sides should be measured separately anyway. Each needs the identifier mapped into it independently. Not connecting them to each other is the correct architecture here, not a limitation.
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.
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.
By reading the match rate on the upload, not the success message and reconciling 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.. An upload that succeeds is not an upload that matched.
More on Google Ads · Staffing
- StaffingConversion tracking for staffing agencies, on both sides of the marketplace
- Meta · StaffingMeta Ads conversion tracking for staffing agencies
- TikTok · StaffingTikTok Ads conversion tracking for staffing agencies
RELATED GUIDES
More for staffing agencies: other angles on the same outcome
- StaffingConversion tracking for staffing agencies, on both sides of the marketplace
- Google Ads · PPC agenciesGoogle Ads conversion tracking for PPC agencies
- Google Ads · Healthcare staffingGoogle Ads conversion tracking for healthcare staffing agencies
- Google Ads · RFP → awardHow to track RFP submission to contract award for Google Ads
- Google Ads × CRM DealsHow to reconcile Google Ads against your CRM's closed-won deals
- Ashby → Google AdsConnecting Ashby to Google Ads
- Google Ads · Web and dev agenciesGoogle Ads conversion tracking for web design and development agencies
- Google Ads · Marketing agenciesGoogle Ads conversion tracking for marketing agencies
Free · 30 min
Get Google Ads reporting what staffing agencies actually earn
Free30 minutesNo obligation
