Xandr
Datafly Signal delivers conversion events to Xandr (Microsoft Invest) server-to-server for programmatic campaign attribution, audience targeting, and cross-channel performance measurement across the Xandr marketplace.
Why route Xandr through Datafly Signal
- Conversions survive ad blockers and tracking prevention. A browser tag served from an advertising domain is blocked outright for part of your traffic, and Safari’s ITP shortens the cookies it can set. Signal sends the event from your own server, so the conversions Xandr optimises against are not filtered by the browser.
- Email is hashed before leaving your infrastructure. Signal normalises (trim and lowercase) and applies SHA-256 inside your own deployment, so Xandr receives match keys rather than raw personal data.
- Client IP and user agent are carried in the payload. Both are taken from the original visitor request rather than your server, which is what Xandr needs to attribute the event to the right session.
- One consent decision governs every destination. Xandr is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
- No vendor tag on the page. Removing it removes its page weight and its independent access to your visitors.
Prerequisites
Before configuring Xandr in Signal, you need a Xandr (Microsoft Invest) account with a conversion pixel created and API credentials generated.
Create a Xandr (Microsoft Invest) Account
- Go to invest.xandr.com (or contact your Microsoft Advertising representative) to set up an advertiser account.
- Once provisioned, log in to the Xandr console.
- Note your Member ID from the account settings — this is your seat ID on the Xandr platform.
Create a Conversion Pixel
- In the Xandr console, navigate to Advertisers and select your advertiser.
- Note the Advertiser ID from the advertiser settings page.
- Go to Pixels > Universal Pixel and click Create Pixel.
- Name your pixel (e.g. “Website Conversions”) and configure the conversion type.
- Note the Pixel ID — you will need this for Signal configuration.
You do not need to install the Xandr pixel JavaScript snippet on your website. Signal replaces the client-side tag with server-side delivery.
Get Member ID, Advertiser ID, and Pixel ID
Collect the following identifiers from the Xandr console:
| Identifier | Where to Find |
|---|---|
| Member ID | Account Settings (top-right menu) — your platform seat ID. |
| Advertiser ID | Advertiser Settings page — the ID for your specific advertiser. |
| Pixel ID | Pixels > Universal Pixel — the ID of your conversion pixel. |
Generate an API Key
- In the Xandr console, go to Settings > API.
- Click Generate API Key for server-side event delivery.
- Copy the API Key immediately — it may only be shown once.
Store the API key securely. If you lose it, you will need to generate a new one.
Configure in Signal
Now that you have your Member ID, Advertiser ID, Pixel ID, and API key, configure the integration in Signal.
Configuration Fields
| Field | Required | Description |
|---|---|---|
member_id | Yes | Your Xandr member (seat) ID. Found in the Xandr console under Account Settings. |
advertiser_id | Yes | Your Xandr advertiser ID. Found in the Xandr console under Advertiser Settings. |
pixel_id | Yes | Your Xandr conversion pixel ID. Found in the Xandr console under Pixels > Universal Pixel. |
api_key | Yes | API key for authenticating server-side event delivery. Generated in the Xandr console under Settings > API. |
Vendor Click IDs
Signal automatically captures the following Xandr click identifiers from URL parameters:
| Vendor ID | Parameter | Description |
|---|---|---|
xandr_uid | xandr_uid | Xandr user ID. Used for user-level attribution. |
This is captured automatically by the Datafly.js collector and forwarded with conversion events.
Management UI Setup
- Go to Integrations > Add Integration > Xandr.
- Enter your
member_id,advertiser_id,pixel_id, andapi_key. - Select consent categories (typically
advertising). - Click Save.
Management API Setup
curl -X POST http://localhost:8084/v1/admin/integrations \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"source_id": "src_abc123",
"vendor": "xandr",
"name": "Xandr Production",
"enabled": true,
"config": {
"member_id": "12345",
"advertiser_id": "xandr-adv-67890",
"pixel_id": "xandr-px-11223",
"api_key": "ak_xandr_abc123..."
},
"consent_categories": ["advertising"]
}'API endpoint
GET https://secure.adnxs.com/sspx?id={{pixel_id}}Allow egress to secure.adnxs.com from the network your delivery workers run on.
Event Mapping
The default Retail preset maps a minimal set of conversion events:
| Signal event | Xandr event |
|---|---|
page | page_view |
Product Viewed | view_content |
Product Added | add_to_cart |
Order Completed | purchase |
To customise or extend, edit the integration’s Field Mappings in the Management UI.
Testing Your Integration
Step 1: Send a Test Event
- Trigger a page view or conversion event on your website.
- Check the Signal event debugger in the Management UI to confirm the event was captured and delivered.
Step 2: Verify in Xandr Console
- In the Xandr console, go to Pixels > your pixel.
- Check the pixel activity log to see received events.
- Events should appear within a few minutes.
Step 3: Validate Campaign Attribution
- Create a test campaign and associate it with your conversion pixel.
- Confirm that conversion events are attributed correctly in campaign reports.
- Verify that
xandr_uidclick IDs are being matched for user-level attribution.
Troubleshooting
| Problem | Solution |
|---|---|
| Events not appearing in Xandr | Verify all four configuration fields (member_id, advertiser_id, pixel_id, api_key) are correct. |
| Authentication errors | Regenerate the API key in the Xandr console under Settings > API and update Signal. |
Invalid member_id error | Confirm your Member ID matches your Xandr seat. Check Account Settings in the Xandr console. |
Missing xandr_uid | This is captured from URL parameters when users click Xandr ads. It will not be present for organic traffic. |
| Pixel not firing conversions | Ensure the pixel is associated with an active campaign and the conversion type is configured correctly. |
| Events delayed | Xandr may take up to 15 minutes to display server-side events. Allow time before investigating further. |
Visit Xandr documentation for full API documentation and credential setup instructions.