What are Microsoft Ads enhanced conversions?
Microsoft Ads enhanced conversions are a supplement to Microsoft Advertising conversion tracking that sends first-party customer data, an email address or phone number hashed with SHA-256, alongside a conversion, so Microsoft can match that conversion to someone signed in to a Microsoft property even when the usual click identifier or cookie is missing.
Microsoft puts it this way in its enhanced conversions guide: instead of relying on a third-party cookie with the Microsoft User ID, enhanced conversions use first-party information. That framing matters, because enhanced conversions are not a replacement conversion. They improve the match on a conversion that is already being reported by the UET tag, an offline upload or the Conversions API.
This guide is about doing that without editing your website's code. That phrase needs an honest definition before any steps. Microsoft's own guide says the online implementation "requires knowledge of how conversion tracking is set up on your website and some code changes." There is no toggle that starts enhanced matching on its own. What you can avoid is editing site templates yourself, in three ways:
| Route | Code you write | What gets matched | Best for |
|---|---|---|---|
| UET through Google Tag Manager | None on the site if GTM is already installed. You configure tags and variables in GTM | Hashed email or phone sent with the browser conversion, plus the usual UET data | Stores that already run GTM and have the customer's email or phone available on the conversion page or in the data layer |
| Offline conversion upload (spreadsheet or scheduled file) | None. You format and hash in a spreadsheet workflow and upload the file | Hashed email or phone, with msclkid optional on an enhanced goal | Leads and sales that close off the website, or a first test before any automation |
| Server-side connector or tool | None for you. The provider sends the events | Depends on the provider: click ID, hashed customer data, or both | Stores that want the upload to happen automatically after every order or lead |
We build SignalBridge, and the last row includes us, so here is the disclosure that decides whether this guide helps you: SignalBridge sends Microsoft offline conversions matched by msclkid and does not send hashed email or phone. If your goal is specifically person-based enhanced matching for conversions with no click ID, SignalBridge is not that tool today, and the GTM or offline enhanced routes below are the ones to follow. If your goal is to stop losing conversions when the UET tag is blocked, the msclkid route at the end solves that without handling customer data at all. Our Microsoft Ads integration page states the same limit in product terms.
Enhanced conversions, offline conversions and the Conversions API: which gap does each one close?
These three Microsoft features are often described as one thing. They are not, and choosing between them is the actual decision in this guide.
| Feature | What travels | What it fixes | What it does not fix |
|---|---|---|---|
| Enhanced conversions (online) | Hashed email or phone added to a UET conversion through the pid data | A conversion the UET tag reported, but Microsoft cannot tie to a signed-in user | A conversion the UET tag never fired because it was blocked or the page never loaded |
| Offline conversions | A conversion record uploaded after the fact, with goal name, time, value and currency, matched by msclkid or, on an enhanced goal, by hashed email or phone | Conversions that happen off the browser: phone sales, CRM stages, delayed orders, and browser conversions the tag missed | Browser context such as page views and remarketing behaviour |
| Conversions API (CAPI) | Server-sent UET-style events, with a shared eventId for deduplication, plus identifiers where consent allows | A real-time server route for website, CRM, offline and app events in one setup | Nothing by itself: you still need the UET tag ID, a token, goals, consent handling and identifiers, usually through a direct build or a partner connector |
Microsoft's Conversions API guide recommends using CAPI together with UET, and its partner list includes HubSpot, Segment, Tealium, Invoca, Stape and others. That is the route to choose when your CRM already has a Microsoft connector and you need qualified-lead or closed-won stages. Our Microsoft Ads offline conversions guide compares the two server routes in depth.
Keep the UET tag running in every route. UET still drives remarketing audiences and on-site goals, and Microsoft's enhanced and CAPI routes are designed to supplement it, not replace it. Just do not count the same purchase in two primary goals: if a UET goal and an offline goal both treat the same order as their primary conversion, your reporting will count it twice even though each route worked correctly.
How to set up Microsoft Ads enhanced conversions without editing site code
Follow the route that matches your situation. Steps 1 and 2 apply to every enhanced route. Steps 3 to 5 are the three no-code paths, and Step 6 is verification for all of them.
Step 1: Turn on enhanced conversions on the goal
Enhanced matching is a property of the goal, not of the account. A conversion sent to a goal that does not have it turned on is treated as a regular conversion, and Microsoft warns that if a file with enhanced data is uploaded to a regular offline goal, the enhanced fields are ignored when an msclkid is present, and the file is rejected when it is not.
- In Microsoft Advertising, hover over Conversions in the left navigation and select Conversion goals.
- Select Create, choose Website as the kind of conversion, then pick the goal category and type.
- Select Turn on Enhanced conversions. To change an existing goal instead, open it from the goals table and turn the same setting on there.
- Confirm you have the customer's email or phone available at the moment of conversion. Microsoft lists this as a prerequisite: no first-party data on the conversion page or in your order records means nothing to enhance with.
If you plan to use the API later, note Microsoft's order of operations: the account must already have a goal with enhanced conversions turned on in the interface before an API goal can set IsEnhancedConversionsEnabled.
Step 2: Decide where the email or phone will come from, and get consent right
Enhanced conversions send a hashed identifier, not a name, but the hash of an email is still personal data handled under your privacy policy. Before you collect it for advertising:
- Use only email or phone the customer gave you in the transaction or lead form, not data bought or inferred from another source.
- Send it only where consent allows. If your consent banner or platform settings say a visitor declined marketing measurement, do not include their identifiers in a tag, a file or an upload to get around that choice.
- Keep the raw values out of URLs, page titles and analytics properties. In GTM they belong in variables read from your data layer or form state, not in a query string.
SignalBridge applies the same principle on its own route: conversions are held back when marketing consent is denied, or when it is required and has not been granted. Whatever route you choose, write down which consent state allows the identifier to travel, because "we hash it" is not an answer to "may we send it."
Step 3: Send enhanced data through Google Tag Manager (no site code, if GTM is already there)
This is the closest route to Microsoft's online design without opening a template file. It assumes GTM is already installed on the site and that your store or a GTM data layer variable can read the customer's email or phone on the conversion step. If neither is true, this route still needs a developer to expose the value, and the offline route in Step 4 is the more honest no-code option.
- In GTM, create a variable that returns the customer's email, and one for the phone if you collect it. On many stores these are data layer variables populated at checkout or on the thank-you page. Do not scrape them from page text if a structured value exists.
- Open your Microsoft Advertising UET base tag, the page view tag that fires on all pages. Under its tag settings, enable Send enhanced conversion values and enter the email and phone variables. Microsoft's GTM instructions note that at least one of the two is mandatory for enhanced values.
- If the customer data only becomes available after the page view tag has fired, for example after a form submits, Microsoft's documentation handles that differently: the enhanced values need to be attached to the custom event instead. In GTM that means setting the
pidparameter on the UET conversion event tag, withemandphinside it, rather than relying on the base tag. Set it once, in one place, or the later tag can overwrite the earlier values. - Remove any hard-coded duplicate UET tag from the site templates if GTM is now the only place it should fire. Two base tags create the double-counting this guide is trying to avoid.
- Publish the GTM container, then place a test conversion while GTM Preview is connected and check the result in Step 6.
For online conversions, Microsoft softens the hashing work: if it detects that an email address has not been formatted and hashed, it hashes it in the browser for you. Phone numbers are different. You must format the phone yourself to the E.164 standard, with the country code and no spaces or punctuation, although Microsoft will hash an unhashed but correctly formatted phone. Pre-hashing in GTM is optional on this route, but formatting is not.
Step 4: Upload offline enhanced conversions from a spreadsheet (no code, manual hashing)
This route fits conversions your website never sees complete: a lead that becomes qualified in a CRM, a phone order, or a sale closed days after the click. It is also the only route where Microsoft makes the data preparation entirely your problem.
- Download Microsoft's offline conversion import template from Conversions, then Offline conversions, then Upload.
- For each conversion, fill in the conversion name exactly as it appears on the enhanced goal, the conversion time in UTC for API-style records, the value and the currency if you use them, and the
msclkidif you stored one with the lead. - Format each email before hashing: trim spaces, lower-case it, remove everything between
+and@, remove periods before the@, remove spaces and accents, and confirm it still contains an@and a domain with a period. Format each phone to E.164. - Hash the formatted value with SHA-256. This step is mandatory for offline enhanced conversions, and Microsoft returns an error in the upload status when it detects unhashed data. A spreadsheet on its own does not provide SHA-256, so use a hashing tool your team already trusts, and keep the raw customer list out of ad hoc online hash generators.
- Upload the file, then read the upload status rather than assuming success. Microsoft discards and deletes data it cannot match, so an unmatched row is gone, not queued for a later retry.
- Wait before you look for the result. A new offline goal needs about two hours before Microsoft accepts uploads to it, and uploaded conversions can take up to six hours to appear in reporting.
Two limits decide whether this route can carry your sales cycle. The conversion time must fall inside the goal's conversion window, which can be set up to 90 days after the click, and an offline conversion whose time is already more than 90 days old cannot be uploaded. A lead that closes on day 100 cannot be credited to its click by this route. Send an earlier milestone that Microsoft can still credit, such as the form fill or a booked meeting, and judge the closed deal in your CRM. Our Microsoft Ads B2B tracking guide works through that pattern.
Step 5: Use the no-code server route when the problem is a blocked tag, not a missing match
Many stores search for "enhanced conversions" when their actual symptom is simpler: the UET tag is blocked, its cookie is gone, or the customer checked out on a second device, so Microsoft never sees the purchase at all. Enhanced data cannot improve a conversion that was never reported. That symptom needs a server route, and this is the one SignalBridge provides.
- In Microsoft Advertising, confirm auto-tagging is on in the account settings, so Microsoft appends
msclkidto ad landing URLs. Without it there is no click ID to capture. - Create an offline conversion goal for each event you want to report, for example one for purchases and one for leads, and give it time to become active. Create the goal for the event, not for a page load.
- In SignalBridge, connect Microsoft Ads from your pixel's settings, signing in with the Microsoft account that manages the ad account, or with Google if your Microsoft Advertising sign-in is federated to Google. Then choose the ad account.
- Map each SignalBridge event to the active offline goal it should feed. SignalBridge translates its events into Microsoft's categories: a purchase becomes Purchase, checkout steps become Begin checkout, and lead, contact, booking and quote events map to their Microsoft equivalents. Page views and other browsing events are never uploaded.
- Install SignalBridge on the site, or install the Shopify app, so
msclkidis stored when a visitor lands and the conversion is captured when it happens. - Place a test order or submit a test lead after clicking a Microsoft ad, then verify it as Step 6 describes.
What travels on this route is deliberately narrow: the msclkid, the goal name, the conversion time, and the value and currency when the event has them. No hashed email or phone is sent. That means this route cannot match a conversion whose click ID was never captured, and it only reports visitors who arrived on a Microsoft click. It also means there is no customer identifier to format, hash or govern. For a store whose UET tag is being blocked, that trade is usually the right one. For a store that needs person-based matching or CRM stages, it is not, and Steps 3, 4 or a CAPI partner connector are the honest answers. Our CAPI without GTM guide makes the same distinction for Meta.
Step 6: Test with one conversion, then check what Microsoft counted
Do not judge any of these routes by the tag firing. Judge them by what Microsoft counted.
- Place one real conversion you can identify: a small order you refund, or a lead with a test address you control, after clicking your own Microsoft ad.
- On the GTM route, use the UET Tag Helper and GTM Preview to confirm the enhanced values are present on the conversion event and hashed in transit. On the upload route, read the upload status file first. On the SignalBridge route, open the event in the event stream and confirm it shows an
msclkidand Microsoft Ads marked as delivered. - Wait. Offline reporting can lag by hours, and a new goal needed its activation time before your test. Check the goal's status and count in Conversion goals the next day as well as the same day.
- Compare one full week of Microsoft-reported purchases with the backend orders that carry an
msclkid. A gap that remains after reporting delay points back to auto-tagging, a redirect that strips the click ID, consent holdbacks, or an unmapped goal, in that order. - Confirm the same purchase is not also your primary UET goal's conversion. If both routes report it as primary, keep one as primary and set the other to report outside the main Conversions column.
Microsoft says it keeps hashed personal data supplied for enhanced conversions for 30 days, and deletes data it cannot match. If your test conversion never appears, an unmatched identifier will not resolve itself later. Fix the input and send a new test.
What are the limits of a no-code enhanced conversions setup?
- GTM is no-edit, not no-work. Someone still has to know which variable holds the email, when it becomes available, and whether the base tag or the event tag should carry it. A variable that reads the wrong field sends a wrong identifier with every order.
- No first-party data, no enhancement. If checkout never exposes an email or phone to the tag, and your order system cannot export it for an upload, there is nothing to hash.
- The offline file is only as fresh as your process. A weekly spreadsheet upload reports last week's conversions this week. That is acceptable for CRM stages and poor for purchase bidding that needs same-day data.
- The click-ID route cannot create a match. SignalBridge will not send a conversion with no stored
msclkid, however complete the rest of the order data is. - Consent can still stop the event. Enhanced data, offline uploads and CAPI all sit under the same consent and privacy obligations as the UET tag. Server-side delivery changes the transport, not the permission.
- Values still need one definition. If the tag sends an order total with tax and shipping and your upload sends the total without them, Microsoft receives two versions of your revenue and every ROAS comparison inherits the difference. Our Google enhanced conversions guide covers the same value and hashing discipline for Google, and the rules are worth reading side by side.
How much does the no-code route cost?
The GTM and spreadsheet routes cost staff time rather than a subscription: GTM itself, the time to configure and test it, and, for uploads, a recurring manual task that has to survive holidays and staff changes. Partner connectors price their own products, and Microsoft lists the current CAPI partners in its guide, so check the connector you already pay for before buying another one.
SignalBridge's Microsoft route is part of its normal plans. Pricing starts at $29 a month for 20,000 events and two connected platforms, with every accepted event, page views included, counting toward the allowance. Microsoft Ads counts as one platform. Ad spend sync from Microsoft, which feeds cost per acquisition and return on ad spend reporting, is available on the Pro plan at $129 a month and above, so a Starter setup reports conversions to Microsoft but does not sync its spend back. Start your 14-day free trial today. No credit card required.
FAQ
What are Microsoft Ads enhanced conversions?
Microsoft Ads enhanced conversions supplement a conversion reported by the UET tag, an offline upload or the Conversions API with a SHA-256 hashed email address, phone number, or both. Microsoft matches the hashed value against people signed in to Microsoft properties such as Outlook and Edge, so a conversion can be attributed when the click identifier or third-party cookie is missing. They improve matching on a reported conversion; they do not report a conversion the tag never saw.
Can you set up Microsoft Ads enhanced conversions with no code at all?
Not with a single toggle. Microsoft's online setup normally adds a snippet after the UET tag that sets the pid email and phone values. You can avoid editing site code by configuring the same values in Google Tag Manager if GTM is already installed, by uploading offline conversions from a formatted and hashed file, or by using a connector that sends server-side conversions for you. Each route still needs the enhanced setting turned on in the goal first.
Does SignalBridge support Microsoft Ads enhanced conversions?
No, not in Microsoft's sense of the term. SignalBridge uploads offline conversions matched by the msclkid click ID, with the goal name, time, value and currency. It does not send a hashed email or phone to Microsoft, so it cannot person-match a conversion that has no click ID. It is a no-code server-side route for conversions the UET tag missed, which is a different gap from the one enhanced conversions close.
Do I have to hash the email address myself?
It depends on the route. For online UET conversions, Microsoft says formatting and hashing an email is optional because it will hash an unformatted value in the browser when it detects one, while a phone must be formatted to E.164 by you, with hashing still optional. For offline uploads, formatting and hashing are mandatory and manual, and Microsoft returns an error when the uploaded data is not hashed.
Should I keep the UET tag if I send offline or enhanced conversions?
Yes, in almost every setup. UET still supports remarketing audiences and on-site goals, and Microsoft recommends using the Conversions API together with UET. Keep it, and make sure only one goal counts a given purchase as a primary conversion, or the same order will be counted by both routes.
How long before a Microsoft offline conversion is too old to send?
Two 90-day limits apply. The conversion time must fall inside the goal's conversion window, which can be set to at most 90 days after the click, and an offline conversion whose time is already more than 90 days in the past cannot be uploaded. On the SignalBridge route the upload stops at about 89 days to stay inside that limit, and the recorded click must also precede the conversion. Longer sales cycles need an earlier milestone event, judged in the CRM after that point.
What happens to enhanced conversion data Microsoft cannot match?
Microsoft says it discards and deletes unmatched data, and that hashed personal data supplied for enhanced conversions is kept for 30 days. An unmatched upload does not wait for a better identifier to arrive later, so a test conversion that never appears needs a corrected input and a new test, not patience.
Related reading
- Microsoft Ads Offline Conversions: Server-Side Setup Guide — the offline upload and Conversions API routes compared in depth
- Microsoft Ads Conversion Tracking: Complete Server-Side Setup (2026) — UET, goals and attribution settings across the whole account
- Microsoft Ads B2B Tracking: Server-Side Lead Gen Setup — sending lead stages, and the 90-day limit on long sales cycles
- Last-Minute BFCM Tracking Fixes: What You Can Still Do This Week — the triage version of these checks before peak spend
- How to Set Up Facebook CAPI Without GTM (No-Code Guide) — the same no-code question answered for Meta
- Google Enhanced Conversions: Complete Setup Guide (2026) — Google's version of hashed customer-data matching
- Best Google Enhanced Conversions Tools in 2026 — tools that automate enhanced conversion delivery
- What Is a GCLID? Every Ad Click ID Explained (2026) — how
msclkidand the other click IDs are captured and lost - Google Ads vs Microsoft Ads: Server-Side Tracking & ROAS — how Microsoft measurement and returns compare with Google
- What is Consent Mode v2? — how consent signals change what platforms may use
- What is Server-Side Tracking? (Complete 2026 Guide) — the fundamentals behind the offline and CAPI routes
Sources
- Microsoft Advertising, Enhanced conversions: what enhanced conversions match on, the goal setup, the online and offline routes, formatting and SHA-256 hashing rules, the 30-day retention of hashed data and the deletion of unmatched data.
- Microsoft Advertising, Conversions API (CAPI): using CAPI with UET, the shared
eventIdfor deduplication, the partner connector list and the readiness checklist including consent and identifiers. - Microsoft Advertising, OfflineConversion data object: the two-hour wait after creating an offline goal, the six-hour reporting delay, the 90-day limits and duplicate handling.
- Microsoft Advertising, Set up UET tags using Google Tag Manager: the GTM base tag, the enhanced conversion values setting and publishing the container.
Related Articles
Microsoft Ads Offline Conversions: Server-Side Setup Guide
Set up Microsoft Ads offline conversions and server-side tracking in minutes. Learn the Offline Conversions API, CAPI, and msclkid attribution — with 2026 Bing Ads benchmarks.
Microsoft Ads Conversion Tracking: Complete Server-Side Setup (2026)
Set up Microsoft Ads server-side conversion tracking in 5 minutes. We cover UET setup, offline conversion import, and the Conversions API — with real Bing Ads attribution data from 2026 campaigns.
