The Problem: Smart Bidding Training on Incomplete Data
A B2B software company in the UK was running Microsoft Ads campaigns targeting SMB decision-makers on Bing Search. Monthly spend: £12,000. Reported CPA from the Microsoft Ads dashboard: £187.
The campaigns had been running for 8 months. Smart Bidding (Target CPA) was active, but performance had plateaued — and their agency couldn't explain why CPAs weren't improving despite testing new ad copy and landing pages.
When Brand Growth Hack audited the account, we found three critical issues:
1. UET Tag was misfiring on mobile The Universal Event Tracking (UET) tag was deployed via hard-coded JavaScript on the page. On mobile browsers, a race condition caused the tag to fire before the form submission completed — creating phantom conversions that weren't real leads.
2. No Enhanced Conversions configured Microsoft's Enhanced Conversions feature was available but not set up. This meant conversions from signed-in Microsoft users who cleared cookies or used Safari were being lost entirely.
3. Conversion counting was set to "Every conversion" Every form abandonment that hit the thank-you URL briefly (including accidental navigations) was being counted. The actual lead rate was 40% lower than reported.
The Fix: UET Tag via GTM + Enhanced Conversions
Step 1: Migrate UET Tag to Google Tag Manager
We removed the hard-coded UET script and deployed it through GTM with:
- Trigger: Form submit confirmation (not page load)
- Deduplication via
event_idparameter - Mobile-specific QA using UET Tag Helper
GTM gave us precise control over when the conversion fires, eliminating the race condition completely.
Step 2: Implement Enhanced Conversions
We configured Microsoft Ads Enhanced Conversions to send hashed first-party data alongside conversion events:
- Email address (SHA-256 hashed via GTM variable)
- Phone number (where provided)
- Configured via the GTM Microsoft UET tag template
Enhanced Conversions allows Microsoft to match conversions to signed-in users even when cookies are unavailable — recovering the conversions that browser restrictions were silently dropping.
Step 3: Fix Conversion Counting
Changed the primary conversion action from "Every conversion" to "One conversion per click" to eliminate duplicate counting from page refreshes and back-button navigation.
Step 4: Conversion Window Alignment
Adjusted the conversion window from the default 30 days to 7 days to match the actual sales cycle — preventing stale click-to-close attributions from inflating conversion counts.
Results After 6 Weeks
| Metric | Before | After | Change |
|---|---|---|---|
| CPA | £187 | £107 | -43% |
| Conversion Rate | 3.1% | 5.2% | +68% |
| Monthly Conversions | 64 | 112 | +75% |
| Monthly Spend | £12,000 | £12,000 | Same |
| Monthly Lead Cost Savings | – | £2,880 | – |
The 43% CPA reduction came primarily from two sources:
- Removing phantom conversions (which were skewing Smart Bidding to target cheaper, lower-quality clicks)
- Enhanced Conversions recovery (adding ~28% more real conversions that were previously unattributed)
With accurate conversion data, Target CPA bidding retrained within 4 weeks and began bidding more aggressively on the converting audiences.
Key Technical Details
- Platform: Microsoft Ads (Bing Ads)
- Tag deployment: Google Tag Manager (web container)
- Enhanced Conversions: Email + phone hash via GTM custom JavaScript variable
- UET Helper verification: All conversion actions verified in network tab
- Timeline: 2 weeks implementation + 4 weeks retraining window
What This Teaches
Most Microsoft Ads accounts have significant conversion data quality issues. The platform's UET tag is commonly deployed incorrectly — either too early (before form submit), too broadly (counting non-conversions), or without Enhanced Conversions.
Before optimising bids, audiences, or ad copy, the data layer must be accurate. Smart Bidding is only as good as the signals it trains on.


