Add Required UTM Parameters to Microsoft Ads (Step-by-Step)
Microsoft Ads showing as organic search? Add UTM parameters so GA4 can properly track your Bing campaigns and calculate ROI.
Your Microsoft Ads are showing as organic search from Bing in GA4. You're paying for ads but they look like free traffic.
You can fix this in 4 minutes by adding UTM parameters.
Table of contents
- What You're Fixing
- Current State (Broken Attribution)
- The 4-Minute Fix
- Step 1: Enable Auto-Tagging (1 minute)
- Step 2: Add UTM Parameters (2 minutes)
- Step 3: Verify Both Parameters Present (1 minute)
- What Changes After You Fix It
- Before (no UTMs):
- After (with UTMs):
- Advanced: Microsoft UET Tag Setup
- Troubleshooting Common Issues
- Issue 1: UTMs Not Appearing in GA4
- Issue 2: Microsoft Conversion Tracking Stopped Working
- Issue 3: Duplicate Sessions in GA4
- Issue 4: Dynamic Parameters Not Populating
- Issue 5: Paid Ads Still Showing as Organic
- FAQ
- Will this break Microsoft Ads conversion tracking?
- Why are my paid clicks showing as organic?
- Do I need UTMs for every campaign?
- What utmmedium should I use for Microsoft Ads?
- Can I use the same UTMs for Microsoft and Google Ads?
- Does this work for Microsoft Shopping Campaigns?
- How long does it take for UTMs to appear in GA4?
- What about Microsoft Audience Network ads?
- Can I track Microsoft Ads by device type?
- Why don't my Microsoft and GA4 numbers match?
- Related Resources
- Internal Guides
- Microsoft Official Documentation
- GA4 Resources
- Conclusion
🚨 Not sure what's breaking your tracking?
Run a free 60-second audit to check all 40+ ways UTM tracking can fail.
Scan Your Campaigns Free✓ No credit card ✓ See results instantly
What You're Fixing
Microsoft Ads automatically adds msclkid (Microsoft Click ID) to track clicks, but GA4 doesn't consistently recognize msclkid for traffic classification.
Without UTM parameters, GA4 often sees Microsoft Ads as organic Bing search traffic.
Current State (Broken Attribution)
Your ad URL:
https://yoursite.com/demo
After user clicks (Microsoft adds msclkid automatically):
https://yoursite.com/demo?msclkid=abc123xyz
Result in GA4:
- Source/Medium:
bing / organic - Channel: Organic Search
- Campaign: (not set)
- Paid traffic classified as organic
Why this happens: While GA4 recognizes msclkid in some cases, it's not as reliable as Google's gclid. Microsoft recommends adding manual UTMs for complete tracking across all analytics platforms.
😰 Is this your only tracking issue?
This is just 1 of 40+ ways UTM tracking breaks. Most marketing teams have 8-12 critical issues they don't know about.
• 94% of sites have UTM errors
• Average: $8,400/month in wasted ad spend
• Fix time: 15 minutes with our report
✓ Connects directly to GA4 (read-only, secure)
✓ Scans 90 days of data in 2 minutes
✓ Prioritizes issues by revenue impact
✓ Shows exact sessions affected
The 4-Minute Fix
Step 1: Enable Auto-Tagging (1 minute)
- Open Microsoft Ads
- Click Settings (gear icon) → Account settings
- Find Auto-tagging section
- Check: "Add Microsoft Click ID (MSCLKID) parameter to the destination URL"
- Save changes
This ensures msclkid is always appended to ad clicks.
Step 2: Add UTM Parameters (2 minutes)
Option A: Campaign-Level UTM Tracking
- Navigate to Campaigns
- Click on a campaign → Settings
- Scroll to Tracking template section
- Add UTM parameters:
Recommended UTM structure:
?utm_source=bing
&utm_medium=cpc
&utm_campaign={campaign}
&utm_content={adgroup}
&utm_term={keyword}
Microsoft Ads dynamic parameters:
{campaign}- Campaign name{campaignid}- Campaign ID{adgroup}- Ad group name{adgroupid}- Ad group ID{keyword}- Keyword that triggered ad{querystring}- User's actual search query{matchtype}- Match type (Exact, Phrase, Broad){device}- Device type (m for mobile, t for tablet, c for computer){network}- Network (o for owned and operated, s for syndicated)
Example with dynamic parameters:
?utm_source=bing&utm_medium=cpc&utm_campaign={campaign}&utm_content={adgroup}&utm_term={keyword}
Microsoft automatically replaces parameters with actual values when ad is clicked.
Option B: Account-Level UTM Tracking
Apply UTMs to all campaigns at once:
- Microsoft Ads → Tools → Tracking
- Account tracking template
- Add the same UTM structure
- All campaigns inherit these UTMs
Step 3: Verify Both Parameters Present (1 minute)
Test Microsoft Ads attribution:
- Click one of your ads from Bing search results
- Check landing page URL in browser address bar
- Verify both msclkid AND UTMs present:
Code
yoursite.com/demo?msclkid=abc123&utm_source=bing&utm_medium=cpc&utm_campaign=brand - Check GA4 → Real-time report
- Confirm traffic shows as "bing / cpc"
What Changes After You Fix It
Before (no UTMs):
- Source/Medium:
bing / organic - Channel: Organic Search
- Campaign: (not set)
- Paid classified as organic
- Completely broken ROI tracking
After (with UTMs):
- Source/Medium:
bing / cpc - Channel: Paid Search
- Campaign:
brand_search - Content:
ad_group_1 - Full attribution, ROI tracking, and campaign optimization
Advanced: Microsoft UET Tag Setup
Microsoft's Universal Event Tracking (UET) tag tracks conversions for Microsoft Ads (separate from GA4).
Base code (add to all pages):
<!-- Microsoft UET Tag -->
<script>
(function(w,d,t,r,u){var f,n,i;w[u]=w[u]||[],f=function(){var o={ti:"YOUR_TAG_ID"};o.q=w[u],w[u]=new UET(o),w[u].push("pageLoad")},n=d.createElement(t),n.src=r,n.async=1,n.onload=n.onreadystatechange=function(){var s=this.readyState;s&&s!=="loaded"&&s!=="complete"||(f(),n.onload=n.onreadystatechange=null)},i=d.getElementsByTagName(t)[0],i.parentNode.insertBefore(n,i)})(window,document,"script","//bat.bing.com/bat.js","uetq");
</script>Conversion goals (set in Microsoft Ads):
// Purchase conversion
window.uetq = window.uetq || [];
window.uetq.push('event', 'purchase', {
'revenue_value': 99.99,
'currency': 'USD'
});
// Lead conversion
window.uetq.push('event', 'contact', {
'event_category': 'lead',
'event_label': 'contact_form'
});
// Signup conversion
window.uetq.push('event', 'sign_up', {
'event_category': 'registration'
});Troubleshooting Common Issues
Issue 1: UTMs Not Appearing in GA4
Problem: Added UTMs to Microsoft Ads tracking template but GA4 still shows "bing / organic".
Cause: URL redirect stripping UTM parameters.
Fix:
- Check for landing page redirects (301/302)
- Ensure redirects preserve query parameters:
Javascript
// ❌ Wrong (loses UTMs) window.location = '/new-page'; // ✅ Correct (preserves UTMs) window.location = '/new-page' + window.location.search; - Test manually: Click ad and verify UTMs present in browser address bar
Issue 2: Microsoft Conversion Tracking Stopped Working
Problem: After adding UTMs, Microsoft Ads conversions show zero.
Cause: UET tag not installed or conversion goals not configured.
Fix:
- Verify UET tag installed on all pages
- Check UET Tag Helper Chrome extension
- Verify conversion goals configured in Microsoft Ads → Conversion Goals
- Test conversions appear in Microsoft Ads reporting
Issue 3: Duplicate Sessions in GA4
Problem: Each Microsoft ad click creates 2 sessions.
Cause: Rare with Microsoft Ads. Most likely cause is duplicate GA4 tracking tags.
Fix:
- Google Tag Manager → Check for duplicate GA4 configuration tags
- View page source → Verify GA4 snippet appears only once
- Remove redundant tracking implementations
Issue 4: Dynamic Parameters Not Populating
Problem: UTMs show {campaign} instead of actual campaign name.
Cause: Incorrect parameter syntax or tracking template misconfiguration.
Fix:
- Verify exact syntax:
{campaign}(single curly braces, lowercase) - Use only supported Microsoft Ads parameters
- Test with manual campaign name first, then add dynamic parameters
- Clear Microsoft Ads tracking template cache (save changes, wait 5 minutes)
Issue 5: Paid Ads Still Showing as Organic
Problem: Some Microsoft Ads clicks still classified as organic search.
Cause: Auto-tagging not enabled or tracking template errors.
Fix:
- Verify auto-tagging enabled in account settings
- Check tracking template for syntax errors (missing
?or&) - Ensure final URL doesn't already have query parameters (use
&instead of?if URL has existing parameters) - Test multiple ad clicks to verify consistent behavior
FAQ
Will this break Microsoft Ads conversion tracking?
No. Microsoft UET tag operates independently and uses msclkid for attribution. UTMs are only for GA4 tracking. Both systems work simultaneously without conflicts.
Why are my paid clicks showing as organic?
GA4 doesn't consistently recognize msclkid across all scenarios. Without UTMs, clicks from bing.com default to organic search classification. Adding manual UTMs ensures reliable paid search attribution.
Do I need UTMs for every campaign?
Yes. Without UTMs, all Microsoft Ads traffic may show as organic in GA4. Apply UTMs at the account level to automatically cover all current and future campaigns.
What utm_medium should I use for Microsoft Ads?
Recommended options:
cpc(best - GA4 classifies as "Paid Search")ppc(also works - classified as "Paid Search")paid-search(also works)
Best practice: utm_medium=cpc for consistency with Google Ads.
Can I use the same UTMs for Microsoft and Google Ads?
Use different campaign names to differentiate:
- Microsoft Ads:
utm_campaign=bing_brand_search - Google Ads:
utm_campaign=google_brand_search
This prevents attribution confusion across platforms. Google Ads uses gclid (auto-tagging) so manual UTMs are optional for Google.
Does this work for Microsoft Shopping Campaigns?
Yes. Shopping Campaigns support tracking templates and UTM parameters just like Search Campaigns. Add UTMs to ensure proper GA4 attribution.
How long does it take for UTMs to appear in GA4?
Real-time. Click your ad with UTMs and check GA4 Real-time report within seconds. Standard reports update within 24-48 hours.
What about Microsoft Audience Network ads?
Audience Network (display ads across Microsoft's partner sites) uses the same tracking template. UTMs apply automatically to both Search and Audience Network campaigns.
Can I track Microsoft Ads by device type?
Yes, use the {device} dynamic parameter in utm_content:
utm_content=device_{device}
This populates as:
device_mfor mobiledevice_tfor tabletdevice_cfor computer
Why don't my Microsoft and GA4 numbers match?
Even with correct tracking, expect 5-15% variance due to:
- Ad blockers (block GA4, not Microsoft UET)
- Privacy settings (browser tracking prevention)
- Attribution windows (Microsoft: 30-day click/1-day view, GA4: last-click)
- Bot traffic filtering differences
Related Resources
Internal Guides
- Microsoft Ads msclkid Shows Organic - Detailed troubleshooting
- Platform Click ID Conflicts - Auto-tagging across all platforms
- Complete UTM Tracking Guide (GA4 2025) - UTM fundamentals
- Fix Google Ads UTM Conflict - Similar Google Ads issue
Microsoft Official Documentation
- Microsoft UET Tag Setup - Official UET guide
- URL Tracking - Tracking template guide
- Auto-tagging - msclkid documentation
GA4 Resources
- GA4 Channel Grouping - Default channel definitions
Conclusion
Microsoft Ads require manual UTM parameters for reliable GA4 attribution. While msclkid works in some cases, manual UTMs ensure consistent paid search classification.
Quick fix checklist:
- ✅ Enable auto-tagging in Microsoft Ads account settings (adds msclkid)
- ✅ Add
utm_source=bing&utm_medium=cpc&utm_campaign={campaign}to tracking template - ✅ Apply at account level to cover all campaigns automatically
- ✅ Microsoft appends msclkid when ads are clicked
- ✅ GA4 reads UTMs for attribution (classifies as "Paid Search")
- ✅ Microsoft UET tag uses msclkid for conversion tracking
- ✅ Both systems work together without conflicts
Result: Proper Microsoft/Bing Ads attribution in GA4 + conversion tracking in Microsoft Ads Manager + accurate ROI calculation for your campaigns.
Related Documentation:
✅ Fixed this issue? Great! Now check the other 39...
You just fixed one tracking issue. But are your Google Ads doubling sessions? Is Facebook attribution broken? Are internal links overwriting campaigns?
• Connects to GA4 (read-only, OAuth secured)
• Scans 90 days of traffic in 2 minutes
• Prioritizes by revenue impact
• Free forever for monthly audits
Join 2,847 marketers fixing their tracking daily