Google Ads conversion tracking for recruitment agencies
A recruitment agency runs two acquisition funnels that share a website and have nothing else in common: candidates applying for roles, and employers with vacancies to fill. 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 recruitment agencies, and what Google Ads specifically needs to accept it.
Free30 minutesNo obligation
Specific to Google Ads × Recruitment
Google Ads for recruiters: candidate and employer searches split
On Google Ads, a recruitment agency should run two conversion actions: candidate applications as a secondary action, and the client vacancy enquiry or vacancy taken as primary. Store gclid, gbraid and wbraid on the ATS and CRM records, then upload placements with the invoiced fee through offline conversion import from the ATS.
Search is where the two sides of an agency collide hardest. A query like "warehouse jobs near me" and one like "temp staffing agency" can land on the same site, and if both submissions feed one conversion action, Smart Bidding will put the budget behind the job seeker every time. Set the candidate application as a secondary conversion action so it is recorded but not bid on, and give the client side its own campaigns with the employer enquiry, or better the vacancy taken in the CRM, as primary.
Google's personalized-ads policy for employment applies to the candidate side in the US and Canada: ads for job opportunities cannot be targeted by age, gender, parental status, marital status or ZIP code. Campaigns selling staffing services to employers are a different message, but confirm how each campaign in your account is classified rather than assuming. Either way, the upload should carry the identifier, the action name, a timestamp and the fee, and nothing about the candidate, the role or the salary.
The place this breaks is the application page. Many agencies send candidates from an ad to a hosted ATS apply page on a different domain, which never receives the gclid, so the placement exists and carries no click. Pass the identifier in the apply link or a hidden field. Contract placements usually close inside the 90-day window and are worth uploading with the fee; for retained search, upload the vacancy taken and keep the fee for reporting.
Google Ads · Recruitment · what breaks
Why Google Ads under-reports for recruitment agencies
- 01
Candidates and clients counted as one conversion
So bidding buys the cheap side.
- 02
Applications valued equally
Regardless of role or placement likelihood.
- 03
Placements never fed back
The only revenue event, invisible.
- 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 · Recruitment · the fix
What working looks like — Google Ads · Recruitment
Two funnels, measured separately
Candidate and client, distinct conversions.
Placements fed back with fee value
So bidding chases revenue.
Client-side campaigns given their own signal
Rather than competing with application volume.
Google Ads · Recruitment · architecture
How Google Ads and recruitment agencies actually connect
- 1
The conversion in recruitment agencies
Candidate side: application, interview, placement. Client side: enquiry, vacancy taken, placement filled. They meet only at the placement, which is where the fee is.
- 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
your ATS record of placements and fees invoiced.
- 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 · Recruitment · events
The conversion map for recruitment agencies
Two funnels that share a website and meet only at the point revenue exists.
| Event | What it means here |
|---|---|
| Candidate application | Browser-side. Very high volume, near-zero individual value. |
| Client vacancy enquiry | Browser-side plus call tracking. Low volume, high value. |
| Vacancy taken | Server-side from the CRM. The client-side conversion worth bidding on. |
| Placement made | Server-side from the ATS, with the fee as the value. |
| Fee value | Varies enormously by role. Worth sending accurately. |
Google Ads · Recruitment · diagnose
Diagnostic order — Google Ads · Recruitment
- 01
Count records carrying gclid, gbraid and wbraid
- 02
One blended conversion action
Candidate volume overwhelms client value and bidding optimizes toward applications.
- 03
No click ID in the ATS
So placements can never be attributed to a campaign.
- 04
Job board traffic counted as site conversions
Inflating the website's apparent performance.
- 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 · Recruitment · prove
How it gets proven — Google Ads · Recruitment
Source of truth
your ATS record of placements and fees invoiced
- Separate conversion actions confirmed for candidate and client sides.
- Click ID present on live records in both systems.
- Placements uploading with real fee values.
- Placements reconciled against the ATS for a closed month.
- The match rate on the upload, not the success message read directly, not inferred from an upload succeeding.
Google Ads · Recruitment · free audit
What we check in the free audit
- Count records carrying gclid, gbraid and wbraid
- One blended conversion action
- No click ID in the ATS
- Job board traffic counted as site conversions
- Read the match rate on the upload, not the success message
Checked against
your ATS record of placements and fees invoiced
Free30 minutesNo obligation
Google Ads · Recruitment · when not to buy
When you don't need this — Google Ads · Recruitment
- If Google Ads already reports conversions that reconcile against your ats record of placements and fees invoiced 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 · Recruitment · what we deliver
What gets built — Google Ads · Recruitment
Separate conversion actions per side
Candidate application, client vacancy enquiry.
Click ID written to the ATS and CRM
Both sides.
Placements uploaded with fee value
Offline conversion import.
Job board traffic separated from owned
Two different channels.
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 your ATS record of placements and fees invoiced. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
Google Ads · Recruitment questions, answered
The restrictions are aimed at ads for job opportunities. Ads selling recruitment services to businesses are a different thing, but check how Google classifies each campaign, because a campaign mixing both messages can be treated as an employment ad.
Usually because the application finishes on a hosted ATS page on another domain that never sees the gclid. Check what share of placement records carry an identifier before blaming the upload.
Because they have opposite economics. Blended, bidding always chases candidate applications — they're cheaper and more numerous — and the client side, where the fees are, gets nothing.
As a low-value event for volume, yes. As the primary bidding target, no, unless candidate supply is genuinely your constraint.
The invoiced fee. Role values vary enough that a flat figure actively misleads bidding toward the wrong roles.
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 your ATS record of placements and fees invoiced. An upload that succeeds is not an upload that matched.
More on Google Ads · Recruitment
- RecruitmentConversion tracking for recruiters, with candidates and clients measured separat…
- Google Ads · StaffingGoogle Ads conversion tracking for staffing agencies
- Google Ads · Home healthcareGoogle Ads conversion tracking for home healthcare agencies
RELATED GUIDES
More for recruitment agencies: other angles on the same outcome
- RecruitmentConversion tracking for recruiters, with candidates and clients measured separately
- Google Ads · PPC agenciesGoogle Ads conversion tracking for PPC agencies
- Google Ads · Web and dev agenciesGoogle Ads conversion tracking for web design and development 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
- Greenhouse → Google AdsConnecting Greenhouse to Google Ads
- Google Ads · StaffingGoogle Ads conversion tracking for staffing agencies
- Google Ads · Executive searchGoogle Ads conversion tracking for executive search firms
Free · 30 min
Get Google Ads reporting what recruitment agencies actually earn
Free30 minutesNo obligation
