Skip to main content
Back to Blog

How to Set Up Microsoft Ads Enhanced Conversions Without Code

Set up Microsoft Ads enhanced conversions without editing site code: GTM, offline uploads and the msclkid route, plus what each one can and cannot match.

21 min read
How to Set Up Microsoft Ads Enhanced Conversions Without Code

Key Takeaways

  • •Microsoft Ads enhanced conversions supplement UET conversion tracking with hashed first-party data: a SHA-256 hashed email address, phone number, or both, matched by Microsoft against people signed in to Microsoft properties
  • •There is no fully hands-off switch. Microsoft says the online setup needs code changes or a tag manager, so 'without code' means one of three routes: Google Tag Manager for the UET tag, a spreadsheet upload for offline conversions, or a connector or tool that sends server-side conversions for you
  • •The hash rules differ by route: for online conversions Microsoft will hash an unhashed email for you in the browser, while for offline uploads formatting and hashing are mandatory and manual, and an unhashed upload returns an error
  • •Enhanced conversions and offline conversions solve different gaps. Enhanced conversions add a person-based match when the click ID or cookie is missing, while the msclkid offline upload reports the conversion itself from your server when the browser tag never fired
  • •SignalBridge does not send hashed email or phone to Microsoft. It uses the offline conversions upload matched by msclkid only, so it is a no-code route to server-side Microsoft conversions, but it is not an enhanced conversions integration

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:

RouteCode you writeWhat gets matchedBest for
UET through Google Tag ManagerNone on the site if GTM is already installed. You configure tags and variables in GTMHashed email or phone sent with the browser conversion, plus the usual UET dataStores 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 fileHashed email or phone, with msclkid optional on an enhanced goalLeads and sales that close off the website, or a first test before any automation
Server-side connector or toolNone for you. The provider sends the eventsDepends on the provider: click ID, hashed customer data, or bothStores 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.

FeatureWhat travelsWhat it fixesWhat it does not fix
Enhanced conversions (online)Hashed email or phone added to a UET conversion through the pid dataA conversion the UET tag reported, but Microsoft cannot tie to a signed-in userA conversion the UET tag never fired because it was blocked or the page never loaded
Offline conversionsA 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 phoneConversions that happen off the browser: phone sales, CRM stages, delayed orders, and browser conversions the tag missedBrowser 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 allowsA real-time server route for website, CRM, offline and app events in one setupNothing 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.

  1. In Microsoft Advertising, hover over Conversions in the left navigation and select Conversion goals.
  2. Select Create, choose Website as the kind of conversion, then pick the goal category and type.
  3. Select Turn on Enhanced conversions. To change an existing goal instead, open it from the goals table and turn the same setting on there.
  4. 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.

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.

  1. 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.
  2. 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.
  3. 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 pid parameter on the UET conversion event tag, with em and ph inside it, rather than relying on the base tag. Set it once, in one place, or the later tag can overwrite the earlier values.
  4. 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.
  5. 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.

  1. Download Microsoft's offline conversion import template from Conversions, then Offline conversions, then Upload.
  2. 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 msclkid if you stored one with the lead.
  3. 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.
  4. 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.
  5. 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.
  6. 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.

  1. In Microsoft Advertising, confirm auto-tagging is on in the account settings, so Microsoft appends msclkid to ad landing URLs. Without it there is no click ID to capture.
  2. 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.
  3. 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.
  4. 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.
  5. Install SignalBridge on the site, or install the Shopify app, so msclkid is stored when a visitor lands and the conversion is captured when it happens.
  6. 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 msclkid and 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.

Sources

Ready to recover more conversions?

Start tracking what your pixels miss. Set up in 5 minutes, no credit card required.

Start Free Trial