Networks · Microsoft UET
Microsoft Advertising UET events and parameters
Updated 2026-09-27
Universal Event Tracking (UET) is the website tag Microsoft Advertising uses for page loads and conversion events. The script loads from bat.bing.com/bat.js, and each hit is sent to an /action/ path on bat.bing.com, with the UET tag ID in ti and the event in ea or evt.
Where the events go
| Endpoint | Method | What it carries |
|---|---|---|
bat.bing.com/action/0 | Query string | Page loads and events: tag ID, action, request type, revenue, currency, order and product keys, page URL |
bat.bing.com/actionp/0, bat.bing.net/actionp/0 | Query string | Consent-mode pings with evt=consent, src=default or src=update, and asc |
bat.bing.com/p/insights/ carries compressed telemetry, not events. bat.bing.com/p/conversions/c/o has been seen on some sites but is not identified, so it is not decoded.
Event names as sent
The name is the event action ea. When a request has no ea, the request type evt is the name. en is a transport marker (sent as en=Y on live stores), not an action name. Event category ec and event label el are shown as parameters, not as the name.
| Request carries | Shown as | Notes |
|---|---|---|
ea=add_to_cart | add_to_cart | Seen on live stores, sent alongside evt=custom. |
ea with any other value | That value, exactly as sent | A custom action keeps its own spelling. |
evt=pageLoad, no ea | pageLoad | The page-load hit. The sent value is shown; no page_view label is invented. |
evt=custom, no ea | custom | Seen live carrying a product ID in prodid. |
evt=consent | consent | Consent-mode ping on /actionp/. |
Value, currency, order ID and products
| Field | Key(s) | Notes |
|---|---|---|
| Revenue | gv | The value used for totals and comparisons. |
| Event value | ev | A separate field. It is not read as revenue, even when it equals gv. |
| Currency | gc | Kept exactly as sent. |
| Order ID | transaction_id, oid | Read in that order. |
| Products | items, prodid | An explicit JSON item array wins. Otherwise UET's encoded items rows are split on commas and decoded with their original keys. prodid gives product IDs. |
| Other commerce keys | shipping, tax, coupon, nca, affiliation, checkout_step, checkout_option | The tag's new_customer option is sent as nca. |
| Remarketing totals | ecomm_totalvalue, flight_totalvalue | Kept apart from revenue and event value. Flight IDs are not turned into retail products. |
| Page | p, r, kl, tw | Page URL, referrer, page title and page keywords. |
Common problems
- Cart event with no value. On a live store,
add_to_cartsentgc=USDbut nogvand no products. The value is shown as Not observed, not as zero. - Revenue and event value both sent. On a live store,
add_to_cartsent the same amount ingvandev. They are separate keys; onlygvcounts as revenue. - Marker read as a name. A request with
en=Yandevt=custombut noeawas once shown as an event namedY. It is now named fromevt. Recordings saved before that fix keep their old names. - Product IDs without prices. Live
customevents sent a product ID inprodidwith no per-item price or quantity. Missing item fields stay missing. - Script before request. On a live store, UET showed only its script in the first sample after an action; a request arrived later. Sample again before calling a page script-only.
How to check it with Universal Pixel Debugger
- Open the site and click the Universal Pixel Debugger toolbar icon to open the side panel. Reload the page if nothing is captured yet.
- Find the Microsoft UET lane on the signal board and click it to show only UET events.
- Click an event. Value and currency are shown with the key they came from (
gv,gc), followed by the order ID, tag ID and products, or Not observed where nothing was sent. - Open the Microsoft UET parameters checklist. It reads "N of M known fields sent", groups the sent keys, and lists the rest under Not sent.
- Check the issues: invalid numeric value, invalid currency format, potential duplicates, and value, currency or product mismatches with other networks that sent the same order ID.
A request that sent no event name is shown with a grey label instead of a sent name. For UET, pageLoad, custom and consent are sent evt values, so they appear as real names.