> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.pixalate.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.pixalate.com/_mcp/server.

# Choose an integration method

> Pixalate Analytics integration options compared - JavaScript tag, 1x1 pixel, ad server macros, tag on the page, VAST, click tracking, server-to-server and in-app.

Pixalate Analytics measures the traffic you send it, so the first decision is how to send it. Most integrations use a Pixalate tag trafficked through an ad server. Publishers without an ad server can place the tag directly in their ad slots, and platforms that can't run a client-side tag can send data server-to-server. You agree on the method with your Pixalate Customer Success representative at the [kick-off call](/analytics/overview#get-started).

## Quick comparison

| If you...                                  | Use                                                                                                    | Measures                                     |
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -------------------------------------------- |
| Serve ads through an ad server, DSP or SSP | [Tag in your ad server](#tag-in-your-ad-server)                                                        | IVT; viewability with the JavaScript tag     |
| Run your own site without an ad platform   | [Tag on the page](#tag-on-the-page)                                                                    | IVT; viewability with the JavaScript tag     |
| Deliver video through VAST                 | [1x1 tag in VAST](#video) for IVT, or the [verification script](#video) for viewability and engagement | IVT; video viewability and engagement (beta) |
| Want click IVT as well as impression IVT   | [Click tracking](#click-tracking), added to any of the above                                           | Click IVT                                    |
| Can't run a tag in the browser or app      | [Server-to-server](#server-to-server)                                                                  | IVT                                          |
| Measure ads in mobile or CTV apps          | See [In-app measurement](#in-app-measurement)                                                          | Depends on the method                        |

## JavaScript tag or 1x1 pixel

Pixalate's tag comes in two forms. Pixalate generates both for you from your [macro mapping](/analytics/tag-and-macros#map-your-macros).

|                     | JavaScript tag     | 1x1 pixel         |
| ------------------- | ------------------ | ----------------- |
| Ad formats          | Display and native | Display and video |
| IVT measurement     | Yes                | Yes               |
| Display viewability | Yes                | No                |

To track native ads or measure display viewability, you need the JavaScript tag. If it isn't in your subscription, ask your Pixalate account manager.

Both forms support `GET` and `POST` requests.

## Tag in your ad server

This is the most common setup. You traffic the Pixalate tag alongside your creatives in your ad server, DSP or SSP, as a third-party tracking tag, creative wrapper or impression tracker. When the ad renders, your platform replaces the macros in the tag with the details of the impression (advertiser, campaign, placement, device and so on), and the tag sends them to Pixalate.

* How to place the tag in Google Ad Manager, The Trade Desk, Beeswax and Campaign Manager 360: [Traffic tags in your ad server](/analytics/ad-server-trafficking)
* Which parameters to fill and how to test them: [The Pixalate tag and macros](/analytics/tag-and-macros)

## Tag on the page

If you're a publisher and you don't serve ads through an ad platform, you can place the Pixalate impression tag directly on your pages, at the placement level.

1. A placement is an ad slot on the page that displays creatives. A page can have several placements of different sizes.
2. Put the impression tag on every placement on the page, in the same `div` as the placement.
3. Give each placement a unique placement ID, hardcoded in the tag.
4. There are no ad server macros to convert. Instead, the tag has placeholders for data points that Pixalate defines. Ask your Customer Success representative for the Pixalate script that fills them in.

These data points can be hardcoded or passed dynamically:

* Publisher ID
* Site ID
* Domain URL
* Placement ID
* Ad size
* Supply type

An on-page tag has fewer data points than a tag in an ad platform. To add detail, you can add these UTM values to the tag:

* `UTM_Campaign`
* `UTM_Term`
* `UTM_Source`
* `UTM_Medium`
* `UTM_Content`

If you need to pass other data points, Pixalate can assign a key-value parameter for each one.

For where the tag must sit relative to the creative, see [Placement rules](/analytics/ad-server-trafficking#placement-rules).

> **Note**
>
> A sample tag doesn't collect data until Pixalate assigns your client ID and platform ID.

## Video

There are two ways to measure video, and they do different jobs:

* **[1x1 tag in VAST](/analytics/video-tag).** Add Pixalate's 1x1 pixel as an `<Impression>` in your VAST XML. It measures video impressions and IVT.
* **[Verification script in VAST](/analytics/video-viewability).** Reference Pixalate's JavaScript verification script in the VAST `<AdVerifications>` node. The video player runs it through the Open Measurement SDK, and it measures video viewability and engagement (beta) as well as the impression.

> **Warning**
>
> Don't fire the 1x1 pixel and the verification script on the same ad. The impression is counted twice. The verification script carries both the impression and the measurement.

## Click tracking

Click tracking adds a second Pixalate tag that fires on clicks, so Pixalate can detect click IVT such as click farms and fast clickers. It works alongside an impression tag. See [Click tracking](/analytics/click-tracking).

## Server-to-server

If you can't run a Pixalate tag in the browser or app, your servers can send impression, click and conversion events to Pixalate's ingest endpoint instead. You pass the same kind of data as the tag: user agent, IP address, page or app, and your IDs. See [Server-to-server integration](/analytics/server-to-server).

## In-app measurement

To measure ads in mobile or CTV apps, use one of these:

* **Tag in your ad server**, with the in-app parameters filled, especially the app or bundle ID and the device ID. See [the parameter reference](/analytics/tag-and-macros#parameter-reference).
* **Server-to-server**, with the [mobile parameters](/analytics/server-to-server#mobile-parameters).
* **The verification script in VAST** for in-app video viewability, if your player supports the Open Measurement SDK. See [Video viewability and engagement](/analytics/video-viewability).
* **Direct placement in your app**, if you don't use an ad server. See below.

For other in-app options, contact [support@pixalate.com](mailto:support@pixalate.com) or your Customer Success representative.

### Fire the tag from your app's impression callback

If you publish a mobile app and don't use an ad server, you can fire Pixalate's 1x1 tag from the impression event of the ad SDKs in your app.

1. Identify the SDKs in your app that return ads.
2. Check each SDK's documentation for the events that support callbacks.
3. For each SDK, find the event that fires at the impression, or as close to it as possible. The IAB defines an impression as "a measurement recorded at a point as late as possible in the process of delivery of the creative material to the user's browser — therefore closest to actual opportunity to see by the user." The ad should be fully rendered and on screen (or available to scroll to, if it loaded below the fold) when the impression is counted.
4. In that callback, make a network request to Pixalate's 1x1 tag with all the applicable data points in the query string.

Pass these data points. Your Customer Success representative gives you the parameter key for each one.

| Data point               | What to pass                                                                                                        |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------- |
| Ad size                  | Creative size (width x height)                                                                                      |
| IP                       | IP address of the user                                                                                              |
| Auction or impression ID | A random ID that's unique for each impression                                                                       |
| Placement ID             | ID of each ad slot on a screen. Each ad slot must have its own ID.                                                  |
| Latitude                 | The user's latitude, if available                                                                                   |
| Longitude                | The user's longitude, if available                                                                                  |
| App or bundle ID         | The app's Google Play or Apple App Store ID                                                                         |
| Device ID                | The device's advertising identifier, such as IDFA or Google Advertising ID                                          |
| Supply type              | The supply environment, such as `Mobile_InApp` or `Mobile_InApp_Video`                                              |
| OS                       | Operating system                                                                                                    |
| User agent               | User agent of the device                                                                                            |
| Demand-side IDs          | Any creative or demand-side IDs the callback provides. They let you investigate IVT questions from the demand side. |

Then roll it out in stages:

1. Start with one app, or one placement in one app, in a non-live test environment.
2. Remove the bracketed placeholders for any parameters you won't fill.
3. Send a test build (for example, an Xcode project or APK) to your Customer Success representative. Pixalate reviews the integration.
4. When Pixalate confirms the integration works, set it live on one app or one placement.
5. After 10,000 impressions have registered, Pixalate runs a data QA to check that the values in the tag are filled correctly.
6. When the test-build review and the data QA have both passed, roll the integration out to your other apps and SDK networks.

> **Note**
>
> The legacy Pixalate mobile SDKs for measurement (Android, iOS Objective-C and iOS Swift) are no longer supported. Use one of the methods on this page instead.

## Related

* [Pixalate Analytics overview](/analytics/overview): the integration phases from kick-off to training
* [The Pixalate tag and macros](/analytics/tag-and-macros)
* [Traffic tags in your ad server](/analytics/ad-server-trafficking)