© 2026 UTM Generator. All rights reserved.

Free UTM LearningAI SkillsPrivacy PolicyTerms of ServiceCookie PolicyContact

FOP Tserkovnyi Daniil Albertovych, Ukraine

UTM GeneratorUTM Generator
Free UTM LearningAI Skills
  1. UTM Generator
  2. Free UTM Learning
  3. Microsoft Ads UTM Parameters: Bing Tracking Setup
Guides

Microsoft Ads UTM Parameters: Bing Tracking Setup

Set up UTM tracking for Microsoft Ads (Bing): dynamic macros, Tracking Templates, MSCLKID vs UTM, and ready templates for Search, Shopping, and Audience.

by Daniil Wem•Published on April 30, 2026•12 min read

Do You Need UTM Parameters for Microsoft Ads if MSCLKID Exists?

Yes. MSCLKID handles attribution inside Microsoft's ecosystem — Clarity, UET tags, and the Microsoft Ads dashboard — but it stops there. Your CRM, your BI tool, your third-party attribution platform? They don't read MSCLKID. UTM parameters fill that gap.

Microsoft Advertising drives roughly 38% of US desktop search volume through Bing, Yahoo, AOL, and DuckDuckGo syndication partners as of Q1 2026. That's not a rounding error. And yet most marketing teams copy their Google Ads setup and call it done, without checking whether the macro syntax actually matches. It doesn't. Microsoft Ads uses PascalCase macros — {CampaignId}, not {campaignid}. Get that wrong and every click lands with a literal {campaignid} string in your GA4 reports instead of an actual ID.

So the setup matters. And the differences from Google Ads are small enough to miss but big enough to wreck your data.

What Dynamic Parameters Does Microsoft Ads Support?

Microsoft Ads dynamic parameters — called UET tag parameters or URL tracking macros — auto-insert campaign data at click time, just like Google's ValueTrack. The syntax is PascalCase inside single curly braces: {Parameter}.

Here's what you'll actually use:

Microsoft Ads MacroWhat It InsertsBest Used In
{CampaignId}Numeric campaign IDutm_campaign, utm_id
{Campaign}Campaign name (text)utm_campaign
{AdGroupId}Numeric ad group IDutm_campaign
{AdGroup}Ad group nameutm_campaign
{AdId}Numeric ad IDutm_content
{Keyword}Matched keyword textutm_term
{MatchType}Match type: e, p, or butm_term
{Network}Network: o (Bing), s (syndicated)utm_source
{Device}Device: m, t, or cCustom parameter
{TargetId}Target ID (audience, location)utm_term
{QueryString}Actual search query typedCustom parameter
{BidMatchType}Bid match type of keywordCustom parameter

Two things worth flagging. First, {QueryString} gives you the actual search query, not just the matched keyword. If you're new to UTM parameters altogether, the 5 UTM parameters explained guide covers what each field does before you start filling them with macros. Google Ads removed search query pass-through years ago for "privacy." Microsoft still provides it. That's a genuine competitive advantage for search intent analysis — use it in a custom parameter if your analytics stack supports it.

Second, {Network} returns o for Bing-owned properties and s for syndication partners (Yahoo, AOL, DuckDuckGo). If you're running syndicated search and wondering why CPCs are lower but conversion rates are tanking, {Network} tells you exactly which traffic is partner traffic. I ran a campaign last year where 61% of spend was going to syndication partners at a 0.3% conversion rate while Bing proper converted at 2.8%. Without {Network} in the UTM, that would've been invisible.

For the complete macro reference, see Microsoft Ads tracking parameters documentation.

How Do You Set Up a Tracking Template in Microsoft Ads?

The Tracking Template in Microsoft Ads works identically to Google's concept — set it at the account level and every ad inherits it automatically.

Navigate to: Microsoft Ads → All Campaigns → Settings (gear icon) → Account-level options → Tracking template

The Clean Signal Method template for Microsoft Ads:

{lpurl}?utm_source=bing-{Network}&utm_medium=paid_search&utm_campaign={CampaignId}_{AdGroupId}&utm_content={AdId}&utm_term={Keyword}&utm_id={CampaignId}

{lpurl} is Microsoft's macro for the landing page URL — identical concept to Google, identical name. The system substitutes your Final URL at click time.

Breaking down what's happening:

  1. utm_source=bing-{Network} combines static "bing" with dynamic network type. You'll see bing-o (Bing owned) or bing-s (syndicated) in GA4. That one letter is the difference between knowing and guessing where your money goes.

  2. utm_medium=paid_search matches GA4's Default Channel Grouping. Not cpc, not bing, not ppc. Well — cpc works too. But paid_search is clearer in reports and still maps correctly. Pick one and stick with it across all paid search platforms.

  3. utm_id={CampaignId} is non-negotiable for GA4 cost data import. Numeric IDs survive campaign renames. The name "Q1 Brand Terms" becomes "H1 Brand Campaign 2026" in someone's spring cleaning spree, but {CampaignId} stays 12345678 forever.

After entering the template, Microsoft Ads provides a Test button. Use it. The interface validates that all macros resolve correctly before saving.

One gotcha: Microsoft Ads supports tracking templates at account, campaign, ad group, keyword, and ad levels. Lower levels override higher ones. If someone on your team sets a campaign-level template for a test and forgets to remove it, that campaign ignores your account-level setup. Run an occasional audit — filter by tracking template in the bulk editor to spot overrides. The UTM governance guide covers how to build audit processes that catch these issues before they rot your data for months.

What Is MSCLKID and How Does It Compare to GCLID?

MSCLKID (Microsoft Click Identifier) is Microsoft's equivalent of Google's GCLID — an auto-generated unique click ID appended to URLs when auto-tagging is enabled in Microsoft Ads. It looks like ?msclkid=abc123def456... and passes click-level data to Microsoft's UET (Universal Event Tracking) tag.

The comparison:

FeatureMSCLKIDGCLIDUTM Parameters
Auto-generatedYesYesNo (manual setup)
Works in GA4Yes (via import)Native integrationYes
Works in CRMsNoNoYes
Works in BI toolsNoNoYes
Survives iOS 17 LTPNoNoYes
Cross-platform compatibleNoNoYes

GA4 can import MSCLKID data if you link your Microsoft Ads account in GA4's admin panel. But this only covers GA4 — not your CRM, not your BI dashboard, not your third-party attribution.

And just like GCLID, Apple's iOS 17 Link Tracking Protection strips MSCLKID from URLs in Mail, Messages, and Safari private browsing. UTM parameters pass through unaffected. According to Apple's documentation, Link Tracking Protection targets known click identifiers specifically.

Bottom line: enable auto-tagging for MSCLKID and add UTM parameters via the Tracking Template. They coexist without conflict.

What's Different Between Microsoft Ads and Google Ads UTM Setup?

The concepts are identical. The details aren't. And the details are where tracking breaks.

DifferenceGoogle AdsMicrosoft Ads
Macro syntaxlowercase: {campaignid}PascalCase: {CampaignId}
Campaign name macro{campaignname}{Campaign}
Ad group name macro{adgroupname}{AdGroup}
Network valuesg, s, do, s
Search query accessRemoved (privacy){QueryString} available
Match type valuesb, p, eb, p, e (same)
Auto-tag IDGCLIDMSCLKID
Tracking Template locationAdmin → Account Settings → TrackingAll Campaigns → Settings → Tracking

The biggest mistake? Copying your Google Ads Tracking Template into Microsoft Ads without changing the macro case. {campaignid} in Microsoft Ads doesn't resolve — it passes through as the literal string {campaignid}. Your GA4 reports will show campaign values like {campaignid}_{adgroupid} instead of actual IDs. I've seen this in three different client accounts. Every single one was a copy-paste from Google Ads.

If you're managing both platforms, the UTM for Google Ads guide covers the Google-specific setup. The structure is parallel, but the macros are not interchangeable.

Pro tip: Select "Bing Ads" in UTM Generator and the tool auto-fills PascalCase macros in the correct fields — {CampaignId}_{AdGroupId} for campaign, {AdId} for content, {Keyword} for term. No risk of copy-pasting Google's lowercase syntax by accident. It generates the full {lpurl} Tracking Template format ready for Microsoft Ads.

What Templates Work for Each Microsoft Ads Campaign Type?

Different campaign types expose different data. The account-level template covers most cases, but here are optimized variants.

Search Campaigns — keyword and match type data available:

{lpurl}?utm_source=bing-{Network}&utm_medium=paid_search&utm_campaign={CampaignId}_{AdGroupId}&utm_content={AdId}&utm_term={Keyword}_{MatchType}&utm_id={CampaignId}

Shopping Campaigns — product data matters more:

{lpurl}?utm_source=bing&utm_medium=shopping&utm_campaign={CampaignId}&utm_content={AdId}&utm_id={CampaignId}

Audience Campaigns (Microsoft Audience Network) — display-like inventory:

{lpurl}?utm_source=bing&utm_medium=display&utm_campaign={CampaignId}_{AdGroupId}&utm_content={AdId}&utm_id={CampaignId}

Performance Max — Microsoft's PMax equivalent launched in late 2025:

{lpurl}?utm_source=bing&utm_medium=paid_search&utm_campaign={CampaignId}&utm_id={CampaignId}

A note on utm_medium for Shopping campaigns. Using shopping as the medium is descriptive but doesn't match any GA4 Default Channel Grouping — that traffic goes to "Unassigned." If you want Shopping traffic classified under Paid Search in GA4, use paid_search or cpc instead. The tradeoff: you lose the ability to filter Shopping separately in GA4's default reports. If that matters to you, keep shopping and create a custom channel group in GA4 to handle it.

For teams running both Google and Microsoft search campaigns, consistent utm_medium values across platforms make reporting simpler. Use paid_search for both — then utm_source=google vs utm_source=bing distinguishes them cleanly. The UTM naming conventions guide shows how to build a cross-platform naming system that doesn't collapse when you add a third or fourth ad network.

How Do You Import Microsoft Ads into Google Ads (and What Happens to UTM)?

Microsoft Ads has a built-in Google Ads import feature. Many advertisers use it to mirror their Google campaigns into Bing with one click. Convenient. But here's the catch: the import copies your Google Ads campaign structure, bids, and ad copy — it does NOT translate your Tracking Template macros.

If your Google Ads Tracking Template uses {campaignid} (lowercase), that exact string gets imported into Microsoft Ads. It won't resolve. Your Bing traffic will have broken UTM values.

After every Google Ads import:

  1. Go to account-level Tracking Template in Microsoft Ads
  2. Replace the Google template with the Microsoft PascalCase version
  3. Test the template using Microsoft's built-in validator

This takes 60 seconds. Skipping it costs you months of broken attribution data. Not a hypothetical — Microsoft's own advertising blog flags this as one of the top migration issues.

How to Set Up Microsoft Ads UTM in UTM Generator

Open UTM Generator and select Bing Ads from the ad network dropdown. The tool populates all fields with PascalCase macros following the Clean Signal Method.

The workflow:

  1. Enter your landing page URL
  2. Select Bing Ads from the network dropdown
  3. Source auto-fills with bing — the recommended Clean Signal value
  4. Medium shows paid_search — GA4 channel-compatible
  5. Campaign shows {CampaignId}_{AdGroupId} — numeric IDs that survive renames
  6. Content shows {AdId} — ad-level tracking
  7. Term shows {Keyword} — keyword data
  8. UTM ID shows {CampaignId} — required for GA4 cost import
  9. Copy the generated Tracking Template (includes {lpurl} prefix)
  10. Paste into Microsoft Ads account-level Tracking Template

Save it as a template in UTM Generator. Share the template URL with your team so everyone uses identical Bing UTM parameters — no more PascalCase vs lowercase confusion across team members.

The generator follows Clean Signal Method Principle 1 (Speak GA4's Language) with the correct paid_search medium, Principle 4 (Automate or Regret) with dynamic macros, and Principle 7 (No Campaign Without an ID) with utm_id={CampaignId}.

FAQ

What is MSCLKID in Microsoft Ads?

MSCLKID (Microsoft Click Identifier) is a unique parameter Microsoft Ads automatically appends to ad click URLs when auto-tagging is enabled. It passes click-level attribution data to Microsoft's UET tag and can be imported into GA4 by linking your Microsoft Ads account. MSCLKID works within Microsoft's ecosystem but isn't readable by CRMs, BI tools, or third-party attribution platforms — which is why UTM parameters are still necessary alongside it.

What is the correct macro syntax for Microsoft Ads UTM?

Microsoft Ads uses PascalCase inside single curly braces: {CampaignId}, {AdGroupId}, {Keyword}. This is different from Google Ads, which uses lowercase: {campaignid}, {adgroupid}, {keyword}. Copying Google's lowercase macros into Microsoft Ads is the most common Bing UTM mistake — the macros won't resolve and will appear as literal text strings in your analytics reports.

Does Microsoft Ads support auto-tagging like Google Ads?

Yes. Microsoft Ads auto-tagging appends MSCLKID to click URLs, similar to how Google Ads uses GCLID. Enable it in Microsoft Ads under Shared Library → Account-level options → Auto-tag. GA4 supports MSCLKID data import when you link your Microsoft Advertising account. Like GCLID, MSCLKID is stripped by Apple's iOS 17 Link Tracking Protection in Mail, Messages, and Safari private browsing.

Where do I add the Tracking Template in Microsoft Ads?

Navigate to All Campaigns → Settings (gear icon) → Account-level options → Tracking template. Entering the template at the account level applies it to all campaigns automatically. Microsoft Ads also allows templates at campaign, ad group, keyword, and ad levels — lower levels override higher ones. Account level is the correct default unless you need different parameters for specific campaign types like Shopping or Audience Network.

Can I use the same UTM template for Google Ads and Microsoft Ads?

No. The macro syntax is different. Google Ads uses lowercase ({campaignid}) and Microsoft Ads uses PascalCase ({CampaignId}). Campaign name macros also differ: {campaignname} in Google vs {Campaign} in Microsoft. Network return values differ too — Google returns g, s, d while Microsoft returns o, s. You need platform-specific templates. Use consistent utm_medium and utm_source naming conventions across both to keep GA4 reports clean.

What happens to UTM parameters when importing Google Ads campaigns into Microsoft Ads?

The import copies campaign structure, bids, and ad copy but does not translate Tracking Template macros. Google's lowercase macros like {campaignid} will appear as literal strings in Microsoft Ads — they won't resolve to actual values. After every Google Ads import, replace the Tracking Template with Microsoft's PascalCase equivalents and test using the built-in validator. This 60-second step prevents months of broken attribution.

Does Microsoft Ads have an equivalent to Google's parameter?

Yes — and it's actually an advantage. Microsoft Ads provides {QueryString}, which returns the actual search query the user typed. Google Ads removed this level of search query transparency. {QueryString} is valuable for search intent analysis and can be added as a custom parameter in your Tracking Template. Note that query-level data can increase URL length significantly for long-tail searches.

What utm_medium should I use for Microsoft Ads?

Use paid_search or cpc for Search campaigns — both match GA4's Paid Search Default Channel Group. For Shopping campaigns, cpc or paid_search ensures GA4 classification, while shopping is more descriptive but routes to "Unassigned." For Audience Network campaigns, use display to match GA4's Display channel group. Avoid bing, ppc, sem, or search-ads — GA4 won't classify these correctly.


Get your Microsoft Ads UTM tracking right the first time — open UTM Generator, select Bing Ads, and copy a complete Tracking Template with correct PascalCase macros in under 30 seconds. Free, no account required.

#utm-bing-ads#microsoft-ads-utm#msclkid#bing-tracking
Share

Related Articles

Guides

UTM for Telegram: Channels, Bots & Telegram Ads

Track Telegram traffic in GA4 with UTM parameters. Templates for channels, bots, groups, and Telegram Ads with ready-to-use examples.

Apr 27, 202610 min read
utm-telegramtelegram-trackingtelegram-ads-utm
Guides

UTM for Email Campaigns: Mailchimp, Klaviyo & HubSpot

Track email marketing ROI with UTM parameters. Setup guides for Mailchimp, Klaviyo, HubSpot, and eSputnik with ready-to-use templates.

Apr 24, 202612 min read
utm-email-marketingmailchimp-utmemail-tracking
Guides

UTM for Pinterest Ads: All 18 Dynamic Parameters

Set up UTM tracking for Pinterest Ads with 18 dynamic macros, ready-to-paste templates, and GA4 attribution tips for Shopping and awareness campaigns.

Apr 21, 202611 min read
utm-pinterest-adspinterest-dynamic-parameterspinterest-tracking

Table of Contents

  • Do You Need UTM Parameters for Microsoft Ads if MSCLKID Exists?
  • What Dynamic Parameters Does Microsoft Ads Support?
  • How Do You Set Up a Tracking Template in Microsoft Ads?
  • What Is MSCLKID and How Does It Compare to GCLID?
  • What's Different Between Microsoft Ads and Google Ads UTM Setup?
  • What Templates Work for Each Microsoft Ads Campaign Type?
  • How Do You Import Microsoft Ads into Google Ads (and What Happens to UTM)?
  • How to Set Up Microsoft Ads UTM in UTM Generator
  • FAQ
  • What is MSCLKID in Microsoft Ads?
  • What is the correct macro syntax for Microsoft Ads UTM?
  • Does Microsoft Ads support auto-tagging like Google Ads?
  • Where do I add the Tracking Template in Microsoft Ads?
  • Can I use the same UTM template for Google Ads and Microsoft Ads?
  • What happens to UTM parameters when importing Google Ads campaigns into Microsoft Ads?
  • Does Microsoft Ads have an equivalent to Google's {QueryString} parameter?
  • What utm_medium should I use for Microsoft Ads?