Insights 12 min read

The channel nobody exports

Microsoft Advertising reaches a smaller audience than Google and converts a more valuable one. It is also the channel most likely to be missing from the lead export entirely — which means its revenue quietly lands in Direct / Unknown and the budget gets cut for underperforming.

A wooden jigsaw puzzle with one piece missing, the blue board showing through the gap.
Photo by Ann H on Pexels
Contents
  1. Why Microsoft Ads goes missing
  2. The audience is genuinely different
  3. Why platform-reported conversions will not settle it
  4. What to export, and from where
  5. Reading the result honestly
  6. The import trap
  7. Cadence, and why quarterly reviews miss this
  8. The wider pattern

There is a specific shape of marketing report that looks complete and is not. Search, social, email and a bucket called Direct or Unknown; the first three add up to something respectable, the last one is large and nobody talks about it. Somewhere inside that bucket, on a large number of accounts, is every sale that came from Microsoft Advertising.

This is not an argument that Microsoft Ads is secretly enormous. It is usually not. It is an argument that a channel which is never separated from the unknowns cannot be judged, and that a channel nobody can judge eventually gets cut — not because it lost, but because it never appeared.

A channel that is not in the export is not underperforming. It is unmeasured, and those are different problems with different fixes.

Why Microsoft Ads goes missing

Microsoft Advertising revenue disappears from reports for an operational reason rather than a technical one: reporting is built once, around the largest platform, and later additions to the media plan are rarely added to the export that feeds it.

Look at how a reporting setup actually comes into being. Somebody runs Google Ads. They want to know what it produced, so they build a way to get lead data out of the system that captures leads, tagged with the campaign that produced them. It works. It is specific to the thing it was built for — the field names, the export, the mapping, the weekly routine.

Then the media plan grows. Microsoft Advertising is switched on, usually with imported campaigns, because that is the path of least resistance and it works well. Budget moves. Nothing about the reporting pipeline is revisited, because nothing about it is broken. The leads still arrive, still get exported, and the ones that came through Microsoft carry either no source at all or a source string nobody mapped.

From that point the arithmetic is unforgiving. Spend on Microsoft is visible, because spend is always visible — it is on an invoice. Revenue from Microsoft is invisible, because it went into the same bucket as the walk-ins and the word-of-mouth. Every review of the channel is therefore a review of a cost with no return beside it.

Where Microsoft Ads typically breaks in a reporting pipeline
StageWhat happens to Google AdsWhat happens to Microsoft Ads
Lead captureSource captured and namedCaptured with a blank or unmapped source
Call trackingNumbers assigned per campaignOften shares the generic pool number
ExportIncluded in the routine exportFrequently omitted, or exported separately and never joined
Column mappingMapped once and reusedSource values differ, so rows fall through
ReportA row with revenue against itSilently folded into Direct / Unknown

Notice that none of those five stages is a failure of measurement technology. Every one of them is a step somebody did for one platform and did not repeat for another. That is why the fix is cheap and why it stays broken for years — nothing ever errors.

The audience is genuinely different

Microsoft's search inventory reaches an audience that skews older, more affluent and more likely to be sitting at a work computer — which changes what a click is worth, not merely how many there are.

Two structural facts drive this, and neither is marketing spin. The first is the default browser on managed Windows machines, which puts Microsoft's search in front of a large population of people at work, in organisations that did not change the default. The second is age: a search engine that people arrive at by default rather than by choice over-represents users who are not actively curating their tools.

For a consumer business selling something cheap and impulsive, that audience may be worth less. For a business selling a considered purchase — a roof, a legal matter, a dental implant, a piece of B2B software bought on a work laptop — it is frequently worth more per click, because the person clicking has both money and a reason to be at a desk.

This is exactly the kind of claim that should not be taken on faith, including from us. It is a hypothesis about your customers, and the only thing that settles it is your own closed revenue split by source. The point of attributing the channel is not to prove Microsoft is good. It is to stop guessing in either direction.

Cheaper clicks and a smaller audience can still produce a better cost per acquired customer. Volume is not the metric; closed revenue per pound spent is.

Why platform-reported conversions will not settle it

Every ad platform reports the conversions it believes it caused, under its own attribution window and its own matching rules, so adding two platforms' self-reported numbers together produces a total that is larger than the business.

This is not a criticism of any particular platform. It is what happens when each of several systems is asked to grade its own contribution using data it alone holds. A customer who saw a Microsoft ad on Tuesday and a Google ad on Thursday may be claimed by both, and neither is lying — they are answering different questions from different vantage points.

The practical symptom is familiar: the conversions reported across your platforms exceed the sales in your accounting system, sometimes substantially, and nobody can say by how much because the overlap is unknowable from inside any one of them.

The only vantage point that does not have this problem is the one holding the closed sales. There is exactly one list of deals that actually closed, and it lives in the CRM or the point-of-sale system. Attribution that starts from that list can double-count nothing, because each sale is one row and gets one answer — including, honestly, the answer "we do not know".

Two ways to ask what Microsoft Ads produced
Platform-reportedReconciled from closed sales
Starts fromAd interactions the platform sawDeals that actually closed
Can double-countYes, across platformsNo — one row, one answer
Handles phone-led salesOnly with extra plumbingYes, on the phone number
Survives consent refusalPartiallyYes — nothing runs in the browser
Reports what it cannot explainRarelyExplicitly, as Direct / Unknown
Can be audited by financeNot reallyRow by row

What to export, and from where

Two files settle it: a list of closed sales carrying a customer phone number or email and the revenue, and a list of leads or calls carrying the same identifier and the channel that produced them.

The closed-sales side is usually the easy half, because somebody in finance already produces it. One row per sale, with an identifier and an amount. If your system exports a customer name and no phone or email, that is the thing to fix first — a name is not an identifier, and matching on names is how attribution stops being defensible.

The Microsoft side of the lead export

Where the source data comes from depends on how leads reach you, and there are three common shapes:

  • Form fills captured by your website or CRM, where the source is whatever your form recorded — check that the Microsoft click identifier or a UTM actually lands in a field, and that the field is in the export.
  • Calls captured by a call-tracking platform, where the source is whatever number the caller dialled — Microsoft needs its own tracking number or its own pool, or its calls are indistinguishable from everyone else's.
  • Leads that arrive through a marketplace or partner, where the source is the partner name and Microsoft's contribution upstream is invisible — that is a genuine limit, and worth writing down rather than papering over.

The second of those is where most phone-led businesses lose the channel. A single pool of tracking numbers shared across every paid source means every paid call is attributed to "paid", which is not a channel. Giving Microsoft its own numbers costs almost nothing and is the difference between a row and a shrug.

Naming the source consistently

The most common cause of a mapping falling through is a source value that is nearly right. "Bing", "bing", "Microsoft", "MSFT Ads", "msads" and an empty string can all appear in one export, sometimes in one week, because different systems wrote different rows. Pick one string, write it down, and normalise on the way in rather than the way out.

CloseRev reconciles the two files on a normalised phone number and email, so a source column that reads "Bing" in March and "Microsoft Ads" in April is a mapping decision you make once rather than a month of missing revenue.

Reading the result honestly

A first reconciliation of a previously unmeasured channel usually produces a number that is smaller than the optimists expected and larger than the sceptics did, and the useful part is not the total but the shape.

Three things are worth looking at before the headline figure, and all three are more actionable than it:

  1. Match rate for the Microsoft rows specifically. If it is far below the rate for other channels, the problem is still the export rather than the channel, and the revenue figure is a floor rather than an estimate.
  2. Average deal size. A channel producing fewer, larger deals is a different business case from one producing many small ones, and the same total revenue can mean either.
  3. Close rate from lead to sale. This is where a higher-intent audience shows up, and it is invisible in any report that counts leads instead of sales.

If the channel genuinely produced very little, that is a real answer and it is worth having. The budget conversation you can then have is an informed one: cut it, or change what it is doing, on evidence. That is a categorically better position than cutting it because it never appeared in a chart.

Nobody argues with a channel that is quietly losing money once the loss has a figure beside it. Without one, the decision waits for a quarter nobody wants to lose.

The import trap

Importing campaigns from Google is the fastest way to launch on Microsoft and the most common reason its reporting is wrong, because the import copies the campaigns and not the measurement.

The import feature is genuinely good. It carries structure, keywords, budgets and creative across in minutes, and for most advertisers it is the correct way to start. What it cannot carry is the part of your measurement that lives outside the ad account — the tracking template your agency maintains, the landing pages with a source parameter baked in, the call-tracking rules keyed to a particular referrer.

So the campaigns arrive intact and the identifiers do not. Two failure modes follow, and they look different from the outside while having the same cause.

  1. Tracking parameters that name the wrong platform. A landing page URL with a hard-coded source of Google, copied to Microsoft, produces leads that positively assert they came from Google. This is worse than a blank source, because a blank one is obviously missing and this one is silently wrong — Google is credited with revenue it did not earn, and Microsoft is charged for the clicks.
  2. Auto-tagging assumptions that do not hold. Reporting built on the assumption that a click identifier is always present will drop every row that lacks one, and a freshly imported account may not be tagging at all until somebody turns it on.

The first of those is the reason a channel can look better than it is while another looks worse, on the same account, from the same import, for a year. If you have ever seen branded search revenue that seemed implausibly high, an inherited tracking template is one of the first places worth looking.

The check takes ten minutes. Click one live ad on each platform, look at the address bar on the landing page, and read the source parameter. If both say the same thing, the report has been wrong since the day the campaigns were imported.

A hard-coded source parameter copied between platforms does not merely lose a channel. It hands that channel's revenue to a different one, and the report looks entirely healthy.

Cadence, and why quarterly reviews miss this

A channel is only comparable with another channel if both are exported on the same schedule and reconciled over the same window, and an ad-hoc export is a channel that can never be compared.

Smaller channels tend to attract ad-hoc measurement: somebody pulls a report when the question comes up, usually just before a budget conversation. The trouble is that a one-off pull is nearly always over a window chosen after the fact, on a channel with a small sample, which is precisely the situation where a number means the least.

There is also a subtler effect. Because deals close on their own schedule rather than the reporting schedule, a channel measured only at quarter end will systematically miss revenue from leads that arrived in the last few weeks and had not yet closed. For a business with a sixty-day sales cycle, a quarterly look at a small channel can under-count it by a third for entirely mechanical reasons.

The remedy is unglamorous: put the channel on the same monthly reconciliation as everything else, report by the date the sale closed rather than the date the report was run, and let the number accumulate. Three consistent months of a small channel is a far stronger basis for a decision than one carefully chosen quarter.

The wider pattern

Microsoft Advertising is the most common example of an under-exported channel, but the pattern applies to every platform added to a media plan after the reporting was built.

The same story plays out with retail media, with programmatic display bought through a demand-side platform, with native placements, with audio, and with any partner whose leads arrive by a route the original export did not anticipate. In each case the spend is visible immediately and the revenue takes a year to become visible, if it ever does.

There is a simple test for whether you have this problem, and it takes about a minute. Write down every line on the media invoice for last month. Then open the marketing report and count the rows. If the report has fewer rows than the invoice has lines, the difference is sitting in Direct / Unknown, and you are making budget decisions with part of the evidence missing.

The fix is not a platform, a pixel or a data warehouse. It is making sure every channel you pay for has a name in the export, and then reconciling that export against the sales that actually closed. Everything else is downstream of those two things.

If your media invoice has more lines than your marketing report has rows, the difference is not noise. It is the part of the budget nobody can defend.

Questions people actually ask

Why is Microsoft Ads revenue missing from my marketing report?
Almost always because it is missing from the lead export rather than from the campaigns. Reporting is usually built once, around the largest platform, and Microsoft Advertising is added to the media plan later without being added to the export that feeds the report. The spend appears in the budget and the revenue appears in Direct / Unknown.
Is Microsoft Ads worth running if it is a fraction of Google's volume?
That is the wrong comparison. The question is cost per closed sale, not share of impressions. Microsoft's search inventory is generally cheaper per click and skews older and more affluent, so a channel at a tenth of the volume can sit at a similar or better cost per acquired customer. You cannot know which without attributing revenue to it.
Do I need a tracking script to measure Microsoft Ads?
No. If you can export leads or calls tagged with their source, and a list of closed sales with a phone number or email, the two can be reconciled on the identifier. That works for phone-led businesses where a tag would never fire, and it survives ad blockers and consent refusals because nothing has to run in the visitor's browser.
How should I compare Microsoft Ads against Google Ads fairly?
On revenue per closed sale and cost per acquired customer over the same window, with the same match rules applied to both, and with unattributed revenue reported separately rather than divided between them. Comparing platform-reported conversions is not a comparison at all, because each platform is grading its own homework under different attribution windows.
What is the smallest useful step if I run Microsoft Ads today?
Add the source field to the Microsoft side of your lead export so the channel has a name, then reconcile one closed month against it. One month is enough to see whether Microsoft-sourced customers close at a different rate or a different average deal — and both of those are decisions, not curiosities.

See it on your own numbers.

Two exports and a few minutes. Three days free, no card, nothing to install.