Loading tutorials…
Loading tutorials…
Without working conversion tracking, every other decision in Microsoft Ads is built on guesses. This walks through UET-based goals AND offline conversion uploads — the path most DIY guides skip entirely.
Who this is forOwners with the UET tag installed (see the previous tutorial) who need to wire actual conversion events to Microsoft Ads — purchases, leads, signups, phone calls. If you're spending $500+/mo with no conversion tracking, you're flying blind.
What you'll need
Step 1
Microsoft Ads supports 6 goal types: Destination URL, Event, Duration, Pages per session, App install, In-store transaction (offline). Pick based on what represents real business value.
Destination URL — fires when a user reaches a specific URL (e.g., /thank-you). Simplest but fragile if URLs change.
Event — fires when a custom UET event triggers (form submit, add-to-cart). Most flexible and accurate.
Duration / Pages per session — engagement signals, not real conversions. Don't use as primary goals.
App install — for mobile apps, not relevant to most web advertisers.
Offline (In-store transaction) — uploaded from CRM. Critical for B2B with long sales cycles.
For most accounts: 1-2 Event-based goals as primary, 1 Destination URL goal as backup, optional offline goal for sales-led conversions.
Step 2
Microsoft Ads → Tools → Conversion tracking → Conversion goals → Create conversion goal. Configure type, value, count, and attribution.
Open Microsoft Ads → Tools → Conversion tracking → Conversion goals.
Click "Create conversion goal." Name it descriptively: "Lead Form Submit," "Purchase Complete," "Demo Request."
Choose Goal Type. For an Event-based goal: Type = "Event."
Configure conditions: if the event is "form_submit" fired from your UET tag, set Event Category = "lead" (or whatever you used in GTM).
Set conversion value: dynamic (read from event_value parameter) or fixed (e.g., $50 for every lead).
Set Count: "Unique" (one per click) for leads/signups, "All" for ecommerce purchases.
Set Conversion window: 30 days for most accounts. Up to 90 days for B2B with longer cycles.
Save and link to the UET tag.
Step 3
In GTM, create a custom HTML tag that pushes the event to UET when the conversion action happens. Trigger on form submit, button click, or thank-you page view.
Open GTM → Tags → New → name it "Microsoft UET - Event - [event name]."
Tag Configuration → Custom HTML. Use: window.uetq = window.uetq || []; window.uetq.push("event", "form_submit", {"event_category":"lead", "event_label":"contact_form", "event_value":50});
Match event_category to what you configured in the Microsoft Ads goal (e.g., 'lead').
Triggering → create a new trigger. For a form submit, use the GTM "Form Submission" trigger pointing at the form's CSS selector. For a thank-you page, use a "Page View" trigger filtering by URL.
Save the tag. Submit and publish the GTM container.
Step 4
Click your own Microsoft Ads ad in incognito, complete the conversion action, verify the event in UET Tag Helper, wait 24 hours, confirm Microsoft Ads counts it.
Open an incognito browser. Search Bing for your ad. Click it (this costs you a click — $1-5 typical).
Complete the conversion (submit the form, complete the purchase).
Immediately open the UET Tag Helper extension. Verify the event fired with the correct event_category.
Open Microsoft Ads → Tools → Conversion tracking → click the goal. Watch the 'Recent activity' feed. Within 1-3 hours, the test conversion should appear.
Within 24 hours, the conversion should appear in Campaigns → Conversions column for the campaign you clicked.
If after 24 hours the conversion is still missing, check three things: (1) MSCLKID present on the click? (2) event_category in GTM matches goal config? (3) goal status shows "Recording" rather than "Inactive"?
Step 5
Microsoft Ads → Tools → Conversion tracking → Offline conversions. Upload a CSV with MSCLKID + timestamp + conversion value when sales close downstream.
For B2B businesses where the conversion happens days/weeks after the click (qualified lead → demo → contract), UET-only tracking misses 60-80% of the revenue signal.
Capture MSCLKID at form submit. Store it in your CRM (Salesforce, HubSpot custom field, Pipedeal).
When a deal closes, export rows: MSCLKID, Conversion Name, Conversion Time (in account time zone), Conversion Value.
Microsoft Ads → Tools → Conversion tracking → Offline conversions → Upload. Match columns to fields.
Microsoft processes the upload in 24-48 hours and credits the original click. Smart Bidding can now optimize toward real revenue, not lead volume.
Cadence: weekly upload for most accounts. Daily for high-volume B2B.
Step 6
For each goal, set attribution model (data-driven recommended) and whether it counts in 'Conversions' (primary) or just tracked (secondary).
In Microsoft Ads → Conversion tracking → click each goal → Edit.
Attribution model: Data-driven (recommended for accounts with 30+ conv/mo per goal). Last-click otherwise.
Include in 'Conversions': ON for 1-2 primary goals (purchase, qualified lead). OFF for secondary goals (newsletter signup, view of pricing page).
Secondary goals are still tracked and visible in segmented reports but don't drive Smart Bidding. This is critical — 5 primary goals confuses the algorithm.
Step 7
Conversion tracking → Conversion goals. Watch status, daily count, and any sudden drops. A 0-count day is almost always a tag break.
Every Monday, open Conversion tracking → Conversion goals. Sort by recent activity.
For each primary goal, scan the 7-day trend. Any goal showing zero conversions for 2+ days needs immediate investigation.
Common causes of sudden drops: (1) site update broke the UET tag, (2) CMP/consent banner change blocks the event, (3) URL structure changed and Destination URL goals stopped matching.
Fast-fix protocol: open UET Tag Helper on the thank-you page → confirm the event still fires → if yes, check goal config; if no, fix the tag.
Common mistakes
Setting up too many primary goals
What goes wrong: 5 primary goals means Smart Bidding optimizes 5 things at once and optimizes none well. CPA stays high, Microsoft can't pick a target. Typical waste: 20-30% of spend.
How to avoid: One or two primary goals (purchase, qualified lead). Everything else as Secondary. Secondary goals still report; they just don't drive bidding.
Mismatched event_category between GTM and Microsoft Ads
What goes wrong: GTM fires event_category='Lead' but Microsoft expects 'lead'. Zero conversions register. You assume the tag is broken when it's working — just talking to the wrong recipient.
How to avoid: Document your taxonomy: event_category strings in lowercase, with underscores (e.g., "lead", "purchase", "demo_request"). Match exactly in both GTM and Microsoft Ads goal config.
No offline conversion uploads for B2B
What goes wrong: Smart Bidding optimizes toward lead volume (cheap, easy form-fills) instead of closed-revenue. You generate 5x more leads at 5x lower quality. Sales team complains the leads don't close, marketing team complains they delivered the metric.
How to avoid: If your sales cycle is 7+ days, capture MSCLKID at form-fill and upload offline conversions weekly when deals close. Smart Bidding can then optimize toward revenue, not vanity leads.
Using Destination URL goals on thank-you pages with dynamic parameters
What goes wrong: Goal is set to /thank-you. But your real URL is /thank-you?session_id=abc123&utm_source=bing. Goal doesn't match. Zero conversions counted.
How to avoid: Use "contains" matching (not "equals") and match on the static path portion only. Or switch to Event-based goals, which don't care about URL parameters.
Skipping the test conversion before launching
What goes wrong: You launch a $100/day campaign. Two weeks later you notice conversions are at 30% of expected. The fix takes another two weeks. You've lost $1,000+ in unoptimized spend.
How to avoid: Always run the incognito → ad click → conversion → validate flow before launching real campaigns. 15 minutes that prevents $1,000+ losses.
Not setting a conversion value
What goes wrong: Smart Bidding can run Target CPA but not Target ROAS without conversion values. You can't tell if a $20 CPA conversion is worth $50 or $500. Optimization is half-blind.
How to avoid: Set static values for leads (e.g., $50 per qualified lead based on average LTV × close rate). Use dynamic values from event_value parameter for ecommerce purchases.
Recap
Done — what's next
How to install the Microsoft UET tag (direct install + GTM)
Read the next tutorial
Hand it off
Conversion tracking is the foundation everything else builds on. Get it wrong and Smart Bidding optimizes against fiction for months. A specialist sets this up correctly the first time — UET goals + offline uploads + validation — for $30-60 in talent time. Ongoing weekly health monitoring is part of the $400-1,200/mo ongoing engagement.
See ongoing management rates
Several reasons: (1) different attribution windows (Microsoft default 30 days, Google may be 30-90), (2) different attribution models (last-click vs. data-driven), (3) different audiences click each platform. Even with identical tracking, expect 10-20% variation in reported conversions.
The Google Import tool moves campaign-level conversion settings, but you still need to wire the UET tag separately. There's no shared conversion data path. Each platform tracks via its own tag (GCLID for Google, MSCLKID for Microsoft).
Weekly for most accounts. Daily for high-volume B2B (50+ closed deals/week). Always within 30 days of the original click — Microsoft caps the attribution window.
Usually the mobile URL is slightly different (subdomain, different query parameter, different protocol). Switch to 'contains' matching on the static path or move to Event-based goals (which work everywhere).
Only if you have a sophisticated incrementality framework. Default view-through inflates conversion counts and overstates display impact. For most B2B and considered purchases, click-only attribution is more honest.
Use Microsoft Ads Call Extensions (which use Microsoft forwarding numbers automatically) or a call-tracking tool like CallRail with UET-side capture. Both work — don't try to track raw phone numbers (no attribution).
Microsoft Ads
The Universal Event Tracking (UET) tag is Microsoft Ads' version of the Google Ads Conversion Tag. Without it working correctly, conversion tracking and remarketing are dead in the water. Here's the right way to install it.
Microsoft Ads
Microsoft offers six bid strategies. Picking the wrong one is the most common reason new accounts plateau at 50% of their potential ROAS. Here's the right one for each account stage.
Microsoft Ads
Your Microsoft Ads campaign says "Eligible," budget is set, bids look fine — but impressions are flat. Here's the diagnostic sequence specialists run, in priority order.
Google Ads
Conversions firing in your store but Google reporting zero? You're not alone. This walks through the right setup path for your stack — including the GA4 import workflow that 80% of DIY tutorials skip.