What is Microsoft Ads conversion tracking?
Microsoft Ads conversion tracking measures which Bing and Microsoft Search Network ad clicks lead to valuable actions — purchases, form submissions, phone calls, or sign-ups. It works through two mechanisms: the UET tag (Universal Event Tracking) which fires in the browser, and the Offline Conversions API which receives events sent server-side after the click.
For advertisers spending on Microsoft Ads (formerly Bing Ads), accurate conversion tracking directly impacts campaign performance. Microsoft's automated bidding strategies — Enhanced CPC, Target CPA, Maximize Conversions — all depend on conversion signals to optimize delivery. Missing conversions means your bidding algorithms make worse decisions with your budget.
In 2026, browser-based UET tracking alone misses 15-25% of real conversions due to ad blockers, Safari ITP, cookie expiration, and cross-device attribution gaps. Server-side tracking closes this gap.
Why browser-only UET tracking isn't enough
The Microsoft UET tag follows the same browser-based architecture as Google's gtag or Meta's Pixel. It faces identical limitations:
| Problem | Impact on Microsoft Ads |
|---|---|
| Ad blockers | 30-40% of desktop users block UET entirely — Bing's desktop-heavy audience makes this worse |
| Safari ITP | First-party cookies expire after 7 days; attribution breaks for longer purchase cycles |
| Cookie restrictions | Cross-site tracking limitations reduce match accuracy |
| Cross-device journeys | Click on mobile, convert on desktop — UET cookie doesn't transfer |
| Delayed conversions | B2B sales cycles of days/weeks exceed cookie lifetime |
Microsoft Ads' unique challenge: desktop-heavy audience
Unlike Meta or TikTok (mobile-dominant), Microsoft Ads traffic skews heavily toward desktop. Desktop users have the highest ad blocker adoption rates (35-45% vs. 12-15% on mobile). This means Microsoft Ads campaigns are disproportionately affected by ad blockers — making server-side tracking even more critical for Bing than for other platforms.
The three ways to track Microsoft Ads conversions server-side
Method 1: Offline Conversions API (click ID matching)
The most direct method. When a user clicks your Microsoft Ad, the URL contains an msclkid parameter. You store this click ID, and when the user converts (even days or weeks later), you upload the conversion event matched to that click ID.
Data flow:
User clicks Microsoft Ad → URL includes ?msclkid=abc123
→ Your site stores msclkid in cookie/session
→ User converts (purchase, form submit, phone call)
→ Your server sends conversion + msclkid to Microsoft Offline Conversions API
→ Microsoft attributes conversion to the original ad click
Requirements:
- Auto-tagging enabled (Microsoft Ads adds
msclkidto URLs automatically) - Click ID capture on your site (stored in session/cookie)
- Conversion goal configured in Microsoft Ads
- API upload within 90 days of the click
Method 2: Customer match (email/phone)
When you don't have the msclkid (common for phone orders, in-store purchases, or CRM closes), you can upload conversions matched by hashed customer data — email address or phone number.
Data flow:
User sees/clicks Microsoft Ad (logged into Microsoft account)
→ User converts offline (phone order, in-store, CRM)
→ Your server sends conversion + hashed email/phone
→ Microsoft matches against their logged-in user database
→ Conversion attributed to the ad exposure
Match rates: Typically 40-65% depending on how many of your customers use Microsoft accounts (Outlook, Hotmail, Xbox, Windows sign-ins).
Method 3: Enhanced conversions (UET + server data)
Microsoft's equivalent of Google Enhanced Conversions. The UET tag fires normally in the browser, but you supplement it with first-party customer data sent server-side. This improves attribution for users whose cookies expired or who converted on a different device.
Step-by-step: Setting up server-side conversion tracking for Microsoft Ads
Option A: Automated setup with SignalBridge (2 minutes)
The fastest path. SignalBridge's Microsoft Ads integration automates the entire server-side pipeline:
Step 1: Connect your Microsoft Ads account
In your SignalBridge dashboard, navigate to Integrations → Microsoft Ads. Click "Connect" and authorize access to your Microsoft Advertising account.
Step 2: Configure conversion goals
Map your SignalBridge events (Purchase, AddToCart, Lead, etc.) to your Microsoft Ads conversion goals. SignalBridge auto-detects existing goals in your account.
Step 3: Deploy tracking
If you haven't already, add the SignalBridge pixel to your site. For Shopify stores, install from the App Store. For other platforms, paste the one-line script.
Step 4: Verify events flowing
Check your SignalBridge dashboard's event stream and confirm conversions appear in Microsoft Ads within 4-6 hours (Microsoft's API has a processing delay).
What SignalBridge handles automatically:
msclkidcapture and stitching to conversion events- Hashed email/phone forwarding for customer match
- Real-time event forwarding (no manual CSV uploads)
- Automatic retry for failed API calls
- Event deduplication to prevent double-counting
- Bot filtering to keep fake conversions out of your Microsoft Ads data
Option B: Manual API integration
For teams that want direct control over the Microsoft Ads Offline Conversions API.
Prerequisites:
- Microsoft Advertising account with API access
- Developer token (request from Microsoft Ads portal)
- OAuth 2.0 authentication configured
- Conversion goal created in Microsoft Ads UI
Step 1: Enable auto-tagging
In Microsoft Ads:
- Go to Settings → Account settings
- Under Auto-tagging, enable "Append MSCLKID to URLs"
- Save
Step 2: Capture the click ID
On your landing pages, extract and store the msclkid from the URL query string:
const urlParams = new URLSearchParams(window.location.search);
const msclkid = urlParams.get('msclkid');
if (msclkid) {
// Store in first-party cookie (30-day expiry recommended)
document.cookie = `_msclkid=${msclkid};max-age=2592000;path=/;SameSite=Lax`;
}
Step 3: Create conversion goal
In Microsoft Ads UI:
- Go to Tools → Conversion tracking → Conversion goals
- Click "Create conversion goal"
- Select "Offline conversions" as the goal type
- Name your goal (e.g., "Server-Side Purchases")
- Set the conversion window (recommended: 30-90 days)
- Save the goal and note the Goal ID
Step 4: Upload conversions via API
Use the Microsoft Ads Bulk API or the Offline Conversions endpoint:
{
"conversions": [
{
"conversionName": "Server-Side Purchases",
"conversionTime": "2026-08-22T14:30:00.000Z",
"conversionValue": 149.99,
"conversionCurrency": "USD",
"microsoftClickId": "abc123def456"
}
]
}
Authentication: Microsoft Ads uses OAuth 2.0. You'll need a client_id, client_secret, refresh_token, and developer_token. The access token refreshes every 60 minutes.
Step 5: Handle delayed conversions
For offline conversions (phone orders, CRM closes), implement a scheduled upload:
- Store conversions in your database with their associated
msclkid - Run a daily job that uploads new conversions to Microsoft's API
- Microsoft accepts conversions up to 90 days after the click
Option C: Server-side GTM
If you already run server-side Google Tag Manager, you can add Microsoft Ads as a destination:
- Install the Microsoft Ads UET tag template in your sGTM container
- Configure the tag to fire on conversion events
- Pass the
msclkidfrom your data layer - Optionally add Enhanced Conversions data (hashed email, phone)
Limitations:
- Requires existing sGTM infrastructure
- Only handles web events (not true offline conversions)
- No built-in bot filtering
- Tag maintenance as Microsoft's API changes
Microsoft Ads conversion tracking best practices
1. Always capture the MSCLKID
The click ID is the highest-quality match signal. Without it, you rely on probabilistic matching (email/phone) which has lower match rates.
Common mistakes:
- Not enabling auto-tagging (msclkid not appended to URLs)
- JavaScript capturing fails on ad-blocked sessions (use server-side capture from referrer/URL)
- Cookie expiration set too short for your sales cycle
- Stripping URL parameters in redirects
2. Set appropriate conversion windows
| Business type | Recommended window | Reason |
|---|---|---|
| E-commerce (impulse) | 7-14 days | Fast purchase decisions |
| E-commerce (considered) | 30 days | Research phase before purchase |
| B2B lead gen | 60-90 days | Long sales cycles |
| SaaS/subscriptions | 30-60 days | Trial periods before conversion |
3. Use revenue values
Always send conversion values (purchase amount) — not just conversion counts. Microsoft's ROAS-based bidding strategies (Target ROAS, Maximize Conversion Value) need revenue data to optimize effectively.
4. Deduplicate with the UET tag
If you're running both UET (browser) and server-side tracking, implement deduplication to avoid double-counting conversions:
- Use the same
conversionName/ goal for both - Include a unique transaction ID in both the UET event and the API upload
- Microsoft will automatically deduplicate events with matching transaction IDs
5. Exclude bot conversions
Microsoft Ads doesn't filter bot traffic from conversion uploads. If bots trigger conversion events on your site and you upload them via API, Microsoft's algorithms optimize toward bot-like audiences. Use bot filtering before sending conversions.
Expected results after implementing server-side tracking
Based on aggregated data from Microsoft Ads accounts implementing server-side conversion tracking:
| Metric | Before (UET only) | After (UET + server-side) | Improvement |
|---|---|---|---|
| Conversion capture rate | 60-75% | 92-98% | +20-30% recovery |
| Attribution accuracy | Standard UET | MSCLKID + customer match | Multi-signal |
| Smart Bidding performance | Baseline | 12-18% better CPA | More signals |
| Cross-device attribution | Limited | Improved via email match | Broader reach |
| B2B lead attribution | 7-day max | Up to 90 days | Long cycles captured |
The desktop-heavy nature of Microsoft's audience means ad blocker-caused signal loss is higher than other platforms. Recovering these blocked events has a proportionally larger impact on bidding performance.
Microsoft Ads vs. Google Ads: Conversion tracking differences
| Feature | Microsoft Ads | Google Ads |
|---|---|---|
| Browser tag | UET (Universal Event Tracking) | gtag.js / Google Tag |
| Server-side mechanism | Offline Conversions API | Enhanced Conversions API |
| Click ID | msclkid | gclid |
| Upload deadline | 90 days from click | 90 days from click |
| Customer match | Email, phone | Email, phone, address |
| Processing delay | 4-6 hours | 24-72 hours |
| Enhanced conversions | Yes (similar to Google ECC) | Yes (setup guide) |
If you're already running Google Enhanced Conversions, implementing Microsoft Ads server-side tracking follows the same logic — capture click ID, hash customer data, upload via API.
Troubleshooting Microsoft Ads conversion tracking
Conversions showing 0 in Microsoft Ads
Common causes:
- Auto-tagging not enabled (no
msclkidin URLs) - Conversion goal type mismatch (created as "URL" instead of "Offline")
- API authentication expired (refresh token needs renewal)
- Processing delay (wait 4-6 hours after upload)
- Conversion window too short (event happened after window closed)
"Invalid click ID" errors
The msclkid must be URL-decoded before upload. Some server frameworks double-encode URL parameters. Also verify the click happened within your configured conversion window.
Low match rates on customer match uploads
Microsoft's match rate depends on how many of your customers have Microsoft accounts. If match rates are below 40%:
- Ensure you're hashing with SHA-256 (not MD5 or plain text)
- Trim whitespace and lowercase emails before hashing
- Include phone numbers in E.164 format (+1234567890)
- Upload both email AND phone when available (increases match probability)
Duplicate conversions
If you see doubled conversion counts:
- Implement transaction ID deduplication
- Don't upload conversions already tracked by UET unless you've disabled the UET goal
- Check that both your server-side and browser-side use the same goal name
FAQ
Does Microsoft Ads support real-time server-side conversion tracking?
Microsoft's Offline Conversions API processes uploads in batches with a 4-6 hour delay. Unlike Meta's CAPI (which is near real-time), Microsoft events appear in reporting several hours after upload. For bidding optimization this delay is insignificant — Smart Bidding algorithms use historical conversion patterns, not real-time signals.
Can I use server-side tracking without the UET tag?
Yes. You can run server-side only (via Offline Conversions API) without the UET tag on your site. However, Microsoft recommends keeping UET active for remarketing audiences, audience insights, and supplementary conversion data. The best approach is running both with deduplication enabled.
How is Microsoft's offline conversion tracking different from Google's?
The core concept is identical — upload conversions matched by click ID or customer data. Key differences: Microsoft processes faster (4-6 hours vs. 24-72 hours for Google), Microsoft's click ID is msclkid (vs. gclid), and Microsoft's customer match relies more heavily on Microsoft account data (Outlook, Hotmail, Xbox, Windows sign-ins).
Is server-side tracking more important for Microsoft Ads than other platforms?
Yes, because Microsoft's audience is desktop-dominant. Desktop users have 35-45% ad blocker adoption rates (vs. 12-15% on mobile). This means Microsoft Ads campaigns lose a higher percentage of conversion signals to ad blockers compared to mobile-heavy platforms like Meta or TikTok. Server-side tracking has proportionally more impact for Bing campaigns.
What's the minimum ad spend to benefit from server-side conversion tracking on Microsoft Ads?
There's no minimum — even accounts spending $500/month benefit from better attribution. However, the impact on Smart Bidding performance becomes most noticeable above $2,000/month in spend, where the algorithms have enough data to measurably improve with additional conversion signals.
Can I track Microsoft Ads conversions from Shopify?
Yes. SignalBridge's Shopify integration captures the msclkid from landing page URLs, associates it with the customer's order, and automatically uploads the conversion to Microsoft Ads when the purchase completes — all without code or manual CSV uploads. This works even when the customer's ad blocker prevented the UET tag from firing.
Related Articles
Offline Conversion Tracking: Complete Guide to Tracking Offline Conversions (2026)
Offline conversion tracking explained: how to send in-store purchases, phone leads, and CRM closes back to Facebook, Google, and TikTok using server-side data and the Conversions API.
How to Build a First-Party Data Strategy for E-Commerce
Step-by-step guide to building a first-party data strategy for your e-commerce store. Collect, activate, and use first-party data across ad platforms, email, and analytics to improve attribution and ROAS.