How to Connect Microsoft Advertising (Bing) Server-Side Conversion Tracking with Perspection
Microsoft Advertising Bing Conversion Setup | Perspection
Connect Perspection to Microsoft Advertising for server-side UET and offline conversion tracking. Step-by-step credential guide with MSCLKID matching.
Browser-based Microsoft Advertising UET tags suffer the same signal loss that degrades every client-side tracking implementation: ad blockers suppress the tag on roughly 32% of desktop sessions, Safari's Intelligent Tracking Prevention caps first-party cookies at 7 days, and cross-device journeys sever the link between ad click and purchase. Perspection eliminates Microsoft Advertising conversion loss by sending conversion data server-side through the Microsoft Advertising API v13, matching conversions deterministically via MSCLKID (Microsoft Click Identifier) and probabilistically via hashed email and phone. The Perspection dashboard requires 7 credentials and an optional UET Tag ID. Configuration takes under 15 minutes, and Perspection begins recovering lost conversions immediately upon activation.
How does server-side Microsoft Advertising conversion tracking work?
Server-side Microsoft Advertising conversion tracking bypasses browser limitations by sending conversion data from Perspection servers to the Microsoft Advertising Offline Conversions API v13. Perspection captures the MSCLKID from the landing page URL at ad click, persists the MSCLKID in a first-party cookie and payload, and uploads conversions with deterministic click-to-conversion attribution ad blockers and cookie restrictions cannot disrupt.

Traditional Microsoft Advertising conversion tracking relies on the Universal Event Tracking (UET) tag --- a JavaScript snippet that fires in the user's browser. Three systemic problems degrade the accuracy of browser-based UET tracking:
Ad blockers and privacy extensions prevent the UET tag from loading or executing. The UET script loads from
bat.bing.com, a domain that appears on every major ad-blocking filter list. When the UET tag is blocked, the conversion event never reaches Microsoft Advertising, and the associated ad spend appears to have generated zero return.Intelligent Tracking Prevention (ITP) in Safari and Enhanced Tracking Protection in Firefox cap first-party cookie lifetimes at 7 days. The MSCLKID parameter, which Microsoft Advertising appends to landing page URLs for click attribution, gets stored in a browser cookie. When the cookie expires before the user converts, the conversion cannot be attributed to the original ad click.
Cross-device journeys break attribution when a user clicks a Microsoft Advertising ad on a mobile device but completes the purchase on a desktop browser. Browser-based UET tags cannot link the two sessions because each device maintains a separate cookie store.
Perspection solves all three problems by operating at the server layer. Perspection's browser SDK captures the MSCLKID from the landing page URL parameter msclkid at the moment of ad click and stores the MSCLKID in a first-party cookie alongside other click identifiers (GCLID, FBCLID, TTCLID). When the user completes a conversion, Perspection's processing pipeline enriches the conversion event with identity data. Perspection's dispatch worker then uploads the conversion directly to the Microsoft Advertising Offline Conversions endpoint at https://clientcenter.api.bingads.microsoft.com/v13/CustomerManagement/OfflineConversions. Because the API call originates from Perspection's servers, ad blockers, cookie restrictions, and cross-device gaps cannot interfere with conversion delivery.
Perspection's Bing connector currently dispatches 5 conversion event types to Microsoft Advertising: purchase, lead, sign_up, subscribe, and add_to_cart. Non-conversion events (page views, product views, and custom behavioral events) are intentionally skipped because the Microsoft Advertising Offline Conversions API only accepts conversion-type payloads. Perspection maps each event name to a Microsoft Advertising conversion name --- for example, purchase maps to Purchase and add_to_cart maps to Add to Cart --- and includes conversion value, currency code, and the MSCLKID when available.
For a detailed comparison of how Perspection handles server-side tracking for Google advertising, see Guide: Connecting Google Ads Enhanced Conversions, which covers the equivalent server-side approach using GCLID matching.
How do you connect Perspection to Microsoft Advertising?
Connecting Perspection to Microsoft Advertising requires navigating to Connectors in the Perspection dashboard, selecting the Microsoft Advertising destination card labeled "UET & Offline Conversions," entering 7 required credential fields (Customer ID, Account ID, Developer Token, Client ID, Client Secret, Access Token, and Refresh Token), saving the configuration, and running the built-in connection test to confirm API access.
Follow these steps to connect Perspection to Microsoft Advertising:
Log in to the Perspection dashboard at
dashboard.perspection.appand select the workspace where Microsoft Advertising conversions should be sent.Navigate to Connectors in the left sidebar, then select the Destinations tab.
Locate the Microsoft Advertising destination card, labeled "UET & Offline Conversions" beneath the Microsoft Advertising logo.
Click the Microsoft Advertising card to expand the configuration form.
Enter all 7 required credential fields (detailed in the next section).
Optionally enter the UET Tag ID if the Microsoft Advertising account has an existing UET tag that should be associated with conversion goals created through Perspection.
Click Save to store the configuration. Perspection validates that all required fields are present before saving.
Click Test to validate API connectivity. Perspection attempts to authenticate with Microsoft's OAuth endpoint using the provided Client ID and Client Secret and returns a success or failure message.
Once the test passes, toggle the Live switch to activate event dispatch.
After activation, Perspection begins dispatching conversion events to Microsoft Advertising in real time. The destination card displays a health status badge: Live (healthy dispatch), Degraded (intermittent errors), or Down (persistent failures). For more detail on interpreting health status indicators across all destinations, see Guide: Destination Health and Failed Events.
Consent enforcement
Microsoft Advertising is classified as an advertising destination in Perspection's consent framework. When a user has denied ad_storage consent, Perspection automatically blocks event dispatch to the Microsoft Advertising connector. Events blocked by consent enforcement are recorded with the reason ad_storage_consent_denied in dispatch logs. Perspection does not send suppressed events to advertising destinations under any circumstances, ensuring compliance with GDPR and regional privacy regulations.
What credentials does Microsoft Advertising require?
Perspection requires 7 credentials to connect to Microsoft Advertising: Customer ID (Account Settings), Account ID (account number), Developer Token (Microsoft Developer Portal), Client ID (Azure App Registration), Client Secret (Azure Certificates and Secrets), Access Token (Microsoft OAuth 2.0), and Refresh Token (automatic renewal). The optional UET Tag ID associates the connection with a specific Universal Event Tracking tag.
Required Credentials
Customer ID (
customer_id)Format: Numeric string (e.g.,
123456789).Where to find: In Microsoft Advertising at
ads.microsoft.com, navigate to Settings then Account Settings. The Customer ID appears at the top of the account information section.Important: The Customer ID is the top-level account identifier in Microsoft Advertising's hierarchy. Every Microsoft Advertising account belongs to a single Customer. Perspection sends the Customer ID in the
CustomerIdHTTP header on every API call to the Microsoft Advertising API.
Account ID (
account_id)Format: Numeric string (e.g.,
123456789).Where to find: In Microsoft Advertising, navigate to Settings then Account Settings. The Account Number (which Perspection labels "Account ID") appears below the Customer ID.
Distinction: The Account ID is the individual advertising account number within the Customer. A single Customer may contain multiple Accounts. Perspection sends the Account ID in the
AccountIdHTTP header alongside the Customer ID.
Developer Token (
developer_token)Format: Alphanumeric string (e.g.,
0A1B2C3D4E5F6G7H).Where to find: Sign in to the Microsoft Advertising Developer Portal at
developers.ads.microsoft.com. Navigate to API Access and copy the Developer Token.Access levels: Microsoft grants Developer Tokens with either sandbox or production access. Production access is required for Perspection to upload real conversions. If the Developer Token has sandbox access only, conversion uploads will fail with a permission error. Request production access through the Microsoft Advertising API request form.
Reference: Microsoft Advertising Getting Started Guide
Client ID (Azure) (
client_id)Format: UUID (e.g.,
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).Where to find: Open the Azure Portal at
portal.azure.com. Navigate to App Registrations under Azure Active Directory. Select the registered application (or create a new one). The Application (client) ID appears on the overview page of the app registration.Prerequisite: The Azure app registration must have the Microsoft Advertising API permission added. Under API Permissions, add the
https://ads.microsoft.com/.defaultscope.Reference: Azure App Registrations
Client Secret (Azure) (
client_secret)Format: Alphanumeric string (e.g.,
AbC~dEfGhIjKlMnOpQrStUvWxYz012345).Where to find: In the same Azure App Registration, navigate to Certificates & Secrets. Under Client secrets, click New client secret. Set an appropriate expiration period. Copy the Value field immediately --- Azure only displays the secret value once upon creation.
Expiration warning: Azure client secrets expire based on the selected duration (6 months, 12 months, or 24 months). When the client secret expires, Perspection's token refresh will fail, and conversion dispatch will stop. Set a calendar reminder to rotate the client secret before expiration and update the secret value in Perspection's dashboard.
Access Token (
access_token)Format: JWT string (e.g.,
eyJxxxxxxxx...).How to generate: Use the Microsoft OAuth 2.0 authorization flow. The simplest method is the Microsoft OAuth 2.0 Authorization Code flow: a. Construct an authorization URL:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={client_id}&response_type=code&redirect_uri={redirect_uri}&scope=https://ads.microsoft.com/.default offline_accessb. Sign in with the Microsoft account that has access to the Microsoft Advertising account. c. After authorization, exchange the authorization code for an access token and refresh token athttps://login.microsoftonline.com/common/oauth2/v2.0/token.Lifetime: Microsoft OAuth access tokens expire after approximately 1 hour. Perspection uses the Refresh Token to obtain new access tokens automatically, so the initial Access Token value serves primarily for connection validation.
Refresh Token (
refresh_token)Format: String (e.g.,
0.xxxxxxxx...).How to generate: The Refresh Token is returned alongside the Access Token during the OAuth authorization code exchange described above. Include the
offline_accessscope in the authorization request to receive a Refresh Token.Lifetime: Microsoft Refresh Tokens remain valid as long as the user does not revoke the application's access and the token is used at least once within a 90-day period. Perspection automatically uses the Refresh Token on every conversion dispatch, keeping the token active.
Token refresh flow: Perspection authenticates with the Microsoft identity platform at
https://login.microsoftonline.com/common/oauth2/v2.0/tokenusing the Client ID, Client Secret, and Refresh Token. Microsoft returns a new Access Token (and sometimes a new Refresh Token). Perspection uses the new Access Token for subsequent API calls.
Optional Credentials
UET Tag ID (
uet_tag_id)Format: Numeric string (e.g.,
12345678).Where to find: In Microsoft Advertising, navigate to Tools then UET Tags. Click the relevant UET tag and copy the Tag ID.
Purpose: The UET Tag ID associates conversion goals with a specific Universal Event Tracking tag. When the UET Tag ID is provided, Perspection can reference the UET Tag ID when creating or managing conversion goals through the Microsoft Advertising API. The UET Tag ID is not required for offline conversion uploads, but the UET Tag ID enables tighter integration between Perspection's server-side events and Microsoft Advertising's goal configuration.
What are the current capabilities of the Perspection Bing connector?
The Perspection Bing connector supports offline conversion uploads for 5 event types (purchase, lead, sign_up, subscribe, add_to_cart) via the Microsoft Advertising API v13, deterministic MSCLKID matching through the triple-fallback click ID extraction pattern, hashed email and phone for probabilistic attribution, automatic OAuth token refresh via Azure AD, 1,000-call-per-hour rate limiting, and retry-with-backoff error handling.
Supported conversion events
The Perspection Bing connector dispatches the following 5 conversion event types to Microsoft Advertising:
purchase --- mapped to Microsoft Advertising conversion name "Purchase." Includes conversion value and currency code from the event payload.
lead --- mapped to "Lead." Typically triggered by form submissions or inquiry events.
sign_up --- mapped to "Sign Up." Triggered by account registration events.
subscribe --- mapped to "Subscribe." Triggered by subscription or newsletter sign-up events.
add_to_cart --- mapped to "Add to Cart." Triggered by add-to-cart actions on e-commerce sites.
Events that do not match one of the 5 supported conversion types (such as page_view, view_content, or custom behavioral events) are acknowledged but intentionally skipped with the message "Event {event_name} skipped --- not a conversion event for Bing Ads." Skipped events do not count against rate limits and do not appear as errors in dispatch logs.
MSCLKID click attribution
Perspection's browser SDK captures the msclkid URL parameter from landing page URLs when a user arrives from a Microsoft Advertising ad. The SDK stores the MSCLKID in the click_ids vault alongside other platform click identifiers (GCLID, FBCLID, TTCLID, and others). At dispatch time, the Bing connector extracts the MSCLKID using the same triple-fallback pattern used by all Perspection connectors:
First priority: JSONB
click_idscolumn (current storage format, sparse representation).Second priority: Individual database columns (legacy format maintained during migration).
Third priority: Event
propertiesobject (SDK-originated events).
When the MSCLKID is present, Microsoft Advertising attributes the conversion deterministically to the specific ad click. When no MSCLKID is available, the Bing connector falls back to hashed email (hashedEmailAddress) and hashed phone (hashedPhoneNumber) for probabilistic matching through Microsoft Advertising's Enhanced Conversions system.
OAuth token management
The Bing connector authenticates with the Microsoft identity platform at https://login.microsoftonline.com/common/oauth2/v2.0/token using the client_credentials grant type with the scope https://ads.microsoft.com/.default. Token refresh occurs before each API call, and the connector passes the resulting Bearer token in the Authorization header alongside the CustomerId, AccountId, and DeveloperToken headers on every request to the Microsoft Advertising API.
Rate limiting and error handling
The Bing connector enforces a rate limit of 1,000 API calls per hour. When the rate limit is exceeded, the connector returns a failure response with the remaining call count and the reset timestamp. Failed conversions enter Perspection's dead letter queue (DLQ) for automatic retry with exponential backoff.
The connector also includes a retry-with-backoff mechanism for transient errors (5xx responses and 429 rate-limit responses from the Microsoft Advertising API). Non-retriable errors (4xx responses indicating invalid credentials or malformed payloads) are recorded in dispatch logs without retry.
Connection validation
Perspection validates the Microsoft Advertising connection by attempting to obtain an OAuth access token using the provided Client ID and Client Secret. A successful token response confirms that the Azure app registration is valid and that the credentials have sufficient permissions for API access. The connection test result appears on the destination card with a success or failure indicator and response latency in milliseconds.
Additional connector methods
The Bing connector exposes additional methods for UET tag management and conversion goal management through the Microsoft Advertising API v13:
UET tag creation: Perspection can create new UET tags in the Microsoft Advertising account, returning the UET Tag ID, tracking JavaScript code, and tag status.
Conversion goal retrieval: Perspection can list all conversion goals associated with the Microsoft Advertising account, including goal type, status, revenue configuration, and count type.
Conversion goal creation: Perspection can create new conversion goals of type UrlGoal, DurationGoal, PagesViewedPerVisitGoal, EventGoal, or OfflineConversionGoal. Event goals reference the configured UET Tag ID and support custom action, category, label, and value expressions.
These additional methods are available through the connector infrastructure but are not currently exposed in the Perspection dashboard UI. Future dashboard releases may surface UET tag and conversion goal management as visual configuration options.
Methodology
All Microsoft Advertising configuration details in this guide were verified against the Perspection production dashboard and Microsoft Advertising UET Tag Manager as of February 2026. OAuth credential workflows were confirmed against the Microsoft identity platform documentation.
"Microsoft Advertising's Offline Conversions API is the most effective path to recovering conversions lost to browser-side tracking failures on the Bing search network. The MSCLKID functions identically to Google's GCLID --- a click-level identifier that enables deterministic attribution --- but Microsoft Advertising's conversion reporting lag is shorter, often reflecting uploaded conversions within 1-2 hours versus Google's 3-hour window. Advertisers running parallel campaigns on both Google Ads and Microsoft Advertising should configure both destinations in Perspection simultaneously using Guide: Connecting Google Ads alongside this guide, because the same browser SDK installation captures GCLID and MSCLKID in a single page load without any additional code." --- Perspection Engineering Team
Sources and References
Microsoft Advertising --- UET Tag, https://help.ads.microsoft.com/apex/index/3/en/56682
Microsoft Advertising --- Offline Conversions, https://help.ads.microsoft.com/apex/index/3/en/56852
Perspection Product Guide --- Event Match Quality, /library/event-match-quality-guide
Perspection Product Guide --- Google Ads (comparison), /library/connect-google-ads-guide