Microsoft Ads (Bing Ads) in Google Analytics 4: tracking and cost data

To see Microsoft Ads (formerly Bing Ads) in Google Analytics 4 you need two things: UTM tags on the ad URLs, so GA4 can name the traffic, and a cost import, so GA4 knows what the clicks cost. There is no account link between the two products like the one between GA4 and Google Ads. Microsoft Advertising adds the tags for you if you turn on auto-tagging, and GA4 takes the spend through campaign data import.
This guide covers both steps with the exact values each side expects, the reason Bing clicks show up as organic or referral, and what to do when campaign-level cost inside GA4 is not enough.
Why Microsoft Ads traffic is missing or mislabelled in GA4
Why Microsoft Ads traffic is missing or mislabelled in GA4
GA4 classifies a session from its URL parameters and its referrer. A click on a Microsoft ad without UTM tags arrives with bing.com as the referrer and nothing else, so GA4 reports it as bing / organic or as a referral. The paid clicks are there. They are counted in the wrong row.
If bing / cpc is not showing in Analytics, check these in order:
- Auto-tagging of UTM is off in the Microsoft Advertising account.
- The site or a redirect removes URL parameters. Microsoft’s help page notes that auto-tagging “will only work if your website allows arbitrary URL parameters”.
- Manual tags in the final URL use other values, for example
utm_medium=ppcin one campaign andpaidin another.
Step 1. Turn on UTM auto-tagging in Microsoft Advertising
Step 1. Turn on UTM auto-tagging in Microsoft Advertising
The steps from Microsoft’s documentation (How do I add UTM tags to my landing page URL?, checked October 2026):
- In the left navigation, hover over Campaigns and select Settings, then Account level options.
- Under Auto-tagging of UTM, select Add UTM tags to my destination URLs.
- Choose whether to replace all existing tags or to keep your tags and add the missing ones.
- Select Save.

Microsoft then appends these tags when an ad is shown:
| Tag | Value Microsoft sets |
|---|---|
utm_source |
bing for search ads |
utm_medium |
The channel, cpc for search ads |
utm_campaign |
The campaign name |
utm_content |
The ad group name |
utm_term |
The keyword, or the product group for product ads |
A tagged URL looks like this:
https://www.example.com/?utm_source=bing
&utm_medium=cpc&utm_campaign=Sales
&utm_content=Clearance&utm_term=Shoes
The source and medium depend on the ad format. Microsoft’s page lists them, and this matters in step 3:
| Microsoft Advertising format | utm_source | utm_medium |
|---|---|---|
| Search | bing |
cpc |
| Audience Ads | msads |
cpm |
| Shopping Ads | msads |
cpc |
| Video | bing_video |
cpc |
| Performance Max | msads |
campaign suffix cross-network |
Microsoft marks this per-format table as a feature that not every account has yet. Check your own landing page URLs after a test click to see which values your account sends.
Two cautions from the same page. If you also keep manual UTM tags in the final URL or final URL suffix, auto-tagging can duplicate parameters, so test the result. And the tags are added when the ad is displayed, so you will not see them in the URL field of the ad editor.
The Click ID is a different setting. Auto-tagging of Click ID adds msclkid to the URL. Microsoft Advertising uses it for its own conversion tracking through the UET tag. GA4 does not read msclkid and does not need the UET tag. Keep both on if you track conversions in Microsoft Advertising; they do not affect what GA4 reports.
OWOX Data Marts
See your first report built in real time. 15 minutes.
- Connect your data warehouse
- Pick your metrics
- Get a live Google Sheets report
In the time it takes to write a ticket. Then imagine never writing that ticket again.
Book a DemoWe'll use your actual use case
Step 2. Check the traffic in GA4
Step 2. Check the traffic in GA4
After a day of traffic, open Reports, Acquisition, Traffic acquisition and switch the first column to Session source / medium. You should see bing / cpc, and with campaign as a second dimension, your Microsoft Advertising campaign names.
In GA4’s default channel group, bing / cpc is Paid Search: Bing is on Google’s list of search sites and cpc matches the paid medium pattern. msads / cpm from Audience Ads is a different case: cpm is one of the mediums GA4 assigns to Display. The rules are in the guide to the GA4 default channel group.
At this point GA4 shows sessions, key events and revenue for Microsoft Ads. It shows no cost, so there is no ROAS yet.
Step 3. Import Microsoft Ads cost data into GA4
Step 3. Import Microsoft Ads cost data into GA4
GA4 has direct import connections for Meta, Pinterest, Reddit, Snap and TikTok. Microsoft Advertising is not on that list, so its spend goes through a file, a Google Sheet or a warehouse table (Import campaign data, checked October 2026).
Export the spend from Microsoft Advertising
- Open Reports and choose the Campaign report under default reports.

- In Modify columns, add Date so that the report has one row per campaign per day.

- Set the date range, and schedule the report to arrive daily as a CSV attachment if you plan to repeat this.

Shape the file for GA4
GA4 expects these columns:
| Column | Value for Microsoft Ads |
|---|---|
| Campaign source | bing (or msads, bing_video, as tagged) |
| Campaign medium | cpc (or cpm, as tagged) |
| Date | YYYY-MM-DD |
| Campaign name | Exactly as in utm_campaign |
| Campaign ID | Optional, matches utm_id if you add it |
| Cost, clicks, impressions | Daily values |
| Currency | ISO code, for example USD |
GA4 joins on source, medium and date, and the match is exact. If your account runs Search and Audience campaigns, their spend belongs in separate rows with bing / cpc and msads / cpm. One file that labels all Microsoft spend as bing / cpc gives search campaigns the cost of the audience campaigns.
Upload it
In GA4 open Admin, Data collection and modification, Data import, create a data source for campaign data, upload the file and map the columns. The full walkthrough, including how to read the match rate, is in the guide to GA4 cost data import.
Once the import has processed, which can take up to 24 hours, the Non Google campaign report shows Microsoft Ads clicks, cost and impressions next to sessions.

What you still cannot see in GA4
What you still cannot see in GA4
- Nothing below the campaign. The import schema has no ad group, ad or keyword. GA4 receives the keyword in
utm_termfor sessions, but the cost stays at campaign level, so there is no cost per keyword. - The file has to be refreshed. Microsoft adjusts costs after the day closes. Google recommends re-uploading the same campaigns daily.
- Imported cost is not in the GA4 BigQuery export, and it cannot be used in audiences or exploration segments.
- Every other platform is a separate file with its own export format and its own naming.
For an account that spends on Microsoft Ads only occasionally, the manual file is enough. For a team that reports on five platforms every week, it is a recurring job with a known failure mode: one renamed campaign and the match rate drops.
Microsoft Ads spend next to GA4 data in your warehouse
Microsoft Ads spend next to GA4 data in your warehouse
The alternative is to stop moving spend into GA4 and bring both into one place where they can be joined at any level.
OWOX Data Marts has Microsoft Ads as a data source. It loads the ad performance report into your warehouse: Google BigQuery, Snowflake, AWS Redshift, AWS Athena or Databricks. GA4 reaches BigQuery through its own native export. With both in the warehouse, an analyst writes the SQL that joins spend to sessions and revenue by campaign and date, saves it as a Data Mart, and reports on it go to Google Sheets or Data Studio (the former Looker Studio) on a schedule.
What that changes for the marketer: spend at ad group and keyword level is available, the join does not depend on a file someone remembers to upload, and Microsoft Ads sits in the same table as Google Ads and Meta.
What it does not do: OWOX Data Marts does not push cost data into GA4, and it does not write the join for you. The join logic is the analyst’s SQL. GA4’s own reports stay as they are unless you also point GA4’s campaign data import at a table in the warehouse, which Google supports for BigQuery, Snowflake and Amazon Redshift.
The steps are in two guides: loading Microsoft Ads into BigQuery, and blending GA4 conversions with ad spend.
Turn your data into decisions.
Governed data marts give you the clean foundation ML needs to actually work.
- No AI hallucinations
- Analyst-governed definitions
- Every number traces to SQL
Frequently Asked Questions
Why is Microsoft Ads (Bing) traffic not showing as bing / cpc in GA4?
Usually because UTM auto-tagging is off in Microsoft Advertising, a redirect or the site strips URL parameters, or manual tags use other values. Without tags, clicks arrive as bing / organic or as a referral.
How do I turn on UTM auto-tagging in Microsoft Advertising?
In Microsoft Advertising go to Campaigns, Settings, Account level options, and under Auto-tagging of UTM select Add UTM tags to my destination URLs. Choose whether to replace existing tags or keep them and add the missing ones, then save.
Can I import Microsoft Ads costs into GA4 automatically?
GA4 has no direct connection for Microsoft Advertising. Its spend is imported through campaign data import from a CSV file, Google Sheets or a warehouse table, with source and medium matching your UTM tags.



