- Where the msclkid is read
- From the landing page URL by SignalBridge, not by the Shopify Web Pixel itself
- How it reaches the order
- Stored for the shopper's Shopify visitor ID for 30 days and attached to the purchase
- Upload route
- ApplyOfflineConversions, matched by msclkid
- Goal type
- Offline conversion goal, mapped to the Purchase event
- Value sent
- The checkout total including shipping and tax, with currency
- Click time
- The moment SignalBridge first saw the msclkid on the landing page
- Refunds
- Not sent to Microsoft
- Consent
- No click ID is stored for a shopper who has not allowed marketing use
How the msclkid survives a Shopify checkout
With auto-tagging on, Microsoft adds an msclkid to the final URL of every ad click. That URL is a product or collection page. Shopify's checkout runs on its own pages and none of them carries the parameter, so something has to remember it.
The SignalBridge Web Pixel sends each page view with its full address to your tracking domain. When the address contains an msclkid and the visit is not an internal navigation, the tracking server stores the click ID, together with the time it was first seen, against the shopper's Shopify visitor ID for 30 days, and against their IP address as a fallback. When the checkout completes, the purchase arrives without an msclkid, the server looks the shopper up, and the stored click ID and click time are attached to the order before delivery.
That design has two edges. The Web Pixel's own list of click IDs covers gclid, fbclid, ttclid and tblci but not msclkid, so for Microsoft everything depends on the landing page view being received. And a shopper who has not allowed marketing use gets no click ID stored at all, and any one already stored is deleted.
What Microsoft needs before it counts an upload
SignalBridge checks these before every upload and shows the reason when one fails. The last two rows come from Microsoft, not from SignalBridge.
| Requirement | On a Shopify purchase |
|---|---|
| A valid msclkid | Taken from the landing page and stored. An order without one is not sent. |
| A conversion name equal to the goal name | SignalBridge uses the name of the goal you mapped to Purchase. Microsoft ignores a name that does not match and reports no error. |
| The click before the conversion | The click time is when SignalBridge first saw the msclkid, so it always precedes the order. |
| A conversion no older than about 90 days | Orders upload within moments, so this matters only for retries after a long outage. |
| Inside the goal window | Microsoft counts a conversion only within the goal's conversion window after the click. The default is 30 days and the maximum is 90. |
| Not a duplicate | Microsoft keeps the first of two uploads that share a click ID and a conversion time. |
Goals, counting and the overlap with Microsoft's own Shopify setup
Create the goal as an offline conversion goal. Microsoft's API documentation describes the Count setting as All, which counts every conversion after a click and suits sales, or Unique, which counts one per click and suits leads. For purchases choose All.
If you connected Shopify through Microsoft's own channel, Microsoft has probably set up a UET tag and a website purchase goal. SignalBridge cannot feed that goal, so the same order can end up in two goals. A goal has an Include in Conversions setting that decides whether it feeds bidding. Leave exactly one purchase goal included for the campaigns you optimise, and keep the other for observation. The UET tag remains useful for remarketing and audiences either way.
Revenue is the checkout total, which includes shipping and tax and subtracts discounts. If the goal's revenue in your reports is based on item value, expect a difference that is not a tracking error.
Set it up
Plan for two hours of waiting between creating the goal and the first upload.
Turn on auto-tagging
In Microsoft Advertising open the account settings and confirm that auto-tagging is on. Without it no msclkid is added to your ads.
Create an offline conversion goal
Go to Tools, then Conversion goals, and create a goal of the offline conversions type. Choose Purchase as the category, set Count to All, set the conversion window to match how long your shoppers take to buy, and give the goal a clear name.
Wait two hours
Microsoft's documentation says to wait two hours after creating an offline goal before uploading conversions to it, or the upload might not be applied.
Install the SignalBridge app
Install it from the Shopify App Store and approve the permissions. The Web Pixel begins sending page views, which is how the msclkid is picked up.
Connect Microsoft Ads
Open the pixel's settings and choose Connect Microsoft Ads. Use Sign in with Google instead if your Microsoft Advertising account uses Google sign-in. Approve access and pick the ad account.
Map Purchase to the goal
Under Offline Conversion Goals choose the Purchase event and the active goal it should feed. If the goal list is empty, the goal is not active yet. If you rename the goal later, choose it again here.
Choose which goal bids
If Microsoft's Shopify channel created a purchase goal, decide which of the two feeds bidding and set the other to be excluded from Conversions.
Test it with your own ad click
Click a live ad and check the address
Search for your own ad on Bing, click it and confirm that the page address contains msclkid. If not, auto-tagging is off or a redirect removed the parameter.
Place an order in the same browser
Check out with a low-value product. In the SignalBridge event stream the Purchase should show an msclkid and Microsoft Ads marked as delivered, with the order number.
Wait for Microsoft reporting
Microsoft says reporting can take up to six hours after an upload. Then open the goal in Conversion goals and look at its tracking status and conversion count.
Compare with Shopify
Count the orders in Shopify that came from your Microsoft campaigns and compare them with the goal's conversions over a few days, not a single day.
Problems that are specific to Shopify
SignalBridge shows the upload as delivered, but the goal stays empty
Microsoft ignores a conversion name that differs from the goal name and reports no error. Map the goal again in SignalBridge, and allow two hours after creating a goal and up to six hours for reporting.
Bing orders arrive with no msclkid
Check auto-tagging, any app that redirects visitors and drops the query string, and whether the shopper allowed marketing tracking. The landing page view must also have reached SignalBridge.
Microsoft Advertising counts each order twice
Both the UET purchase goal from Microsoft's channel and the offline goal are included in Conversions. Exclude one of them.
Orders that came long after the click are missing
The goal's conversion window ended first. Raise it, up to the 90 day maximum, or accept that late orders are credited elsewhere.
Revenue in Microsoft is higher than item revenue
SignalBridge sends the checkout total including shipping and tax. Compare against that figure in Shopify.
Microsoft says the authorisation has expired
Reconnect Microsoft Ads in SignalBridge, using the Google option if that is how your account signs in.
What to know before you rely on it
- Only shoppers who arrived from a Microsoft ad click are reported. Other channels are not sent to Microsoft.
- The order webhook carries no consent decision or msclkid for an app-only install, so the browser copy of the purchase is what is uploaded.
- If the shopper's visitor ID cannot be found, the stored click is looked up by IP address. Two shoppers behind one address could in principle be confused, so treat small differences between Microsoft and Shopify with that in mind.
- Refunds and cancellations are not sent to Microsoft, so a refunded order stays counted.
- Microsoft decides attribution and reporting delay, so counts will not match Shopify exactly.
Questions about this setup
Do I need the UET tag or the Microsoft channel for Shopify?
Not for this upload. SignalBridge matches by msclkid and needs only an offline goal. Keep the UET tag and the channel if you use them for remarketing, audiences and product ads.
Why an offline goal and not a website goal?
The upload used here is Microsoft's offline conversions operation, which attaches a conversion to a click ID and a goal name. A website goal is fed by the UET tag or by Microsoft's Conversions API for UET, and SignalBridge does not use that API.
How long does SignalBridge remember the click?
It keeps the msclkid for 30 days. Microsoft's goal window is separate and can be set up to 90 days, so the shorter of the two decides whether a late order is counted.
What value does Microsoft receive for an order?
The checkout total in the order currency, which includes shipping and tax. Microsoft uses the value and currency sent with the upload.
Does a refund reduce the Microsoft conversion?
No. Refunds and cancellations are not sent to Microsoft. Revenue in Microsoft Advertising reflects the order as it was placed.
Does it work for traffic from Yahoo and DuckDuckGo?
Where Microsoft serves the click with an msclkid, yes. The upload does not distinguish between the search engines.
Sources
The vendor documents this guide relies on. Statements about SignalBridge come from the product itself.
- Microsoft Learn: ApplyOfflineConversionsThe two-hour wait, the six-hour reporting delay and how duplicate uploads are handled.
- Microsoft Learn: OfflineConversion data objectCount type, the 90-day limit and the conversion window rules.
- Microsoft Learn: Offline conversions code exampleThe conversion name must match the goal name, and the time must align with the click.
- Microsoft Learn: UET and the Conversions APIThe separate server-side route that SignalBridge does not use.