> 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.

# Video: the 1x1 tag in VAST

> Where to insert the Pixalate 1x1 tracking pixel in VAST wrapper, inline and VPAID responses for video impression and IVT measurement.

To measure video impressions and invalid traffic (IVT), add Pixalate's 1x1 tracking pixel as a third-party `<Impression>` in your VAST XML. Pixalate gives you the pixel during integration, with your ad server's macros already inserted. Pixalate registers the impression on the client side when the video loads.

The pixel can carry up to 60 macros, of which up to 30 can be custom. See [The Pixalate tag and macros](/analytics/tag-and-macros) for the parameters and the [IAB VAST 4.1 macros](/analytics/tag-and-macros#supported-iab-vast-41-macros) Pixalate supports.

> **Note**
>
> The 1x1 pixel measures impressions and IVT, not video viewability. For video viewability and engagement, use Pixalate's verification script in the VAST `<AdVerifications>` node instead. See [Video viewability and engagement](/analytics/video-viewability).

> **Warning**
>
> Don't fire the 1x1 pixel and the verification script on the same ad: the impression is counted twice. If an ad is measured for video viewability, remove the 1x1 `<Impression>` node from its ad server template. The verification script carries both the impression and the measurement.

## Add the pixel to a VAST response

Add an `<Impression>` element containing the Pixalate pixel next to any other impression trackers in the `<InLine>` or `<Wrapper>` ad. Wrap the URL in `<![CDATA[ ]]>` so characters such as `&` don't break the XML.

In the examples below, replace `{PIXALATE TRACKING PIXEL}` with the pixel Pixalate gives you. The other URLs are placeholders.

### Inline ad

```xml
<VAST version="3.0">
  <Ad id="1234567">
    <InLine>
      <AdSystem>Example Ad Server</AdSystem>
      <AdTitle>Example video ad</AdTitle>
      <Impression><![CDATA[https://tracking.example.com/impression]]></Impression>
      <Impression><![CDATA[{PIXALATE TRACKING PIXEL}]]></Impression>
      <Creatives>
        <Creative>
          <Linear>
            <Duration>00:00:20</Duration>
            <TrackingEvents>
              <Tracking event="start"><![CDATA[https://tracking.example.com/start]]></Tracking>
              <Tracking event="firstQuartile"><![CDATA[https://tracking.example.com/firstQuartile]]></Tracking>
              <Tracking event="midpoint"><![CDATA[https://tracking.example.com/midpoint]]></Tracking>
              <Tracking event="thirdQuartile"><![CDATA[https://tracking.example.com/thirdQuartile]]></Tracking>
              <Tracking event="complete"><![CDATA[https://tracking.example.com/complete]]></Tracking>
            </TrackingEvents>
            <VideoClicks>
              <ClickTracking><![CDATA[https://tracking.example.com/click]]></ClickTracking>
            </VideoClicks>
            <MediaFiles>
              <MediaFile delivery="progressive" type="video/mp4" width="640" height="360">
                <![CDATA[https://media.example.com/video.mp4]]>
              </MediaFile>
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>
```

### Wrapper ad

For custom platform integrations that wrap another VAST response, put the pixel in the wrapper's `<Impression>` element:

```xml
<VAST version="2.0">
  <Ad id="602833">
    <Wrapper>
      <AdSystem>Example Ad Server</AdSystem>
      <VASTAdTagURI><![CDATA[https://adserver.example.com/vast/inline_linear.xml]]></VASTAdTagURI>
      <Error><![CDATA[https://tracking.example.com/wrapper/error]]></Error>
      <Impression><![CDATA[{PIXALATE TRACKING PIXEL}]]></Impression>
      <Creatives>
        <Creative AdID="602833">
          <Linear>
            <TrackingEvents>
              <Tracking event="creativeView">https://tracking.example.com/wrapper/creativeView</Tracking>
              <Tracking event="start">https://tracking.example.com/wrapper/start</Tracking>
              <Tracking event="firstQuartile">https://tracking.example.com/wrapper/firstQuartile</Tracking>
              <Tracking event="midpoint">https://tracking.example.com/wrapper/midpoint</Tracking>
              <Tracking event="thirdQuartile">https://tracking.example.com/wrapper/thirdQuartile</Tracking>
              <Tracking event="complete">https://tracking.example.com/wrapper/complete</Tracking>
              <Tracking event="mute">https://tracking.example.com/wrapper/mute</Tracking>
              <Tracking event="unmute">https://tracking.example.com/wrapper/unmute</Tracking>
              <Tracking event="pause">https://tracking.example.com/wrapper/pause</Tracking>
              <Tracking event="resume">https://tracking.example.com/wrapper/resume</Tracking>
              <Tracking event="fullscreen">https://tracking.example.com/wrapper/fullscreen</Tracking>
            </TrackingEvents>
          </Linear>
        </Creative>
        <Creative>
          <Linear>
            <VideoClicks>
              <ClickTracking>https://tracking.example.com/wrapper/click</ClickTracking>
            </VideoClicks>
          </Linear>
        </Creative>
      </Creatives>
    </Wrapper>
  </Ad>
</VAST>
```

## VPAID

The IAB's Video Player-Ad Interface Definition (VPAID) is a common interface between video players and interactive ad units. Pixalate's 1x1 pixel is VPAID-compatible: put it in the `<Impression>` element of the VAST XML that contains the VPAID creative.

> **Warning**
>
> The industry has deprecated VPAID. For new integrations, plan on VAST 4.x with the Open Measurement SDK. See [Video viewability and engagement](/analytics/video-viewability).

#### Linear VPAID example

```xml
<VAST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vast.xsd" version="3.0">
  <Ad id="1234567">
    <InLine>
      <AdSystem>Example Ad Server</AdSystem>
      <AdTitle>Linear VPAID</AdTitle>
      <Description>VPAID linear video ad</Description>
      <Error><![CDATA[https://tracking.example.com/error]]></Error>
      <Impression><![CDATA[{PIXALATE TRACKING PIXEL}]]></Impression>
      <Creatives>
        <Creative sequence="1">
          <Linear>
            <Duration>00:00:13</Duration>
            <TrackingEvents>
              <Tracking event="start">https://tracking.example.com/start</Tracking>
              <Tracking event="firstQuartile">https://tracking.example.com/firstQuartile</Tracking>
              <Tracking event="midpoint">https://tracking.example.com/midpoint</Tracking>
              <Tracking event="thirdQuartile">https://tracking.example.com/thirdQuartile</Tracking>
              <Tracking event="complete">https://tracking.example.com/complete</Tracking>
            </TrackingEvents>
            <VideoClicks>
              <ClickThrough id="123">https://www.example.com/landing</ClickThrough>
              <ClickTracking id="123">https://tracking.example.com/click</ClickTracking>
            </VideoClicks>
            <MediaFiles>
              <MediaFile apiFramework="VPAID" type="application/javascript">
                <![CDATA[https://media.example.com/vpaid/linear-ad.js]]>
              </MediaFile>
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>
```

#### Non-linear VPAID example

```xml
<VAST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vast.xsd" version="3.0">
  <Ad id="1234567">
    <InLine>
      <AdSystem>Example Ad Server</AdSystem>
      <AdTitle>Non-linear VPAID</AdTitle>
      <Description>VPAID non-linear overlay ad</Description>
      <Error><![CDATA[https://tracking.example.com/error]]></Error>
      <Impression><![CDATA[{PIXALATE TRACKING PIXEL}]]></Impression>
      <Creatives>
        <Creative sequence="1">
          <NonLinearAds>
            <TrackingEvents>
              <Tracking event="start">https://tracking.example.com/start</Tracking>
              <Tracking event="complete">https://tracking.example.com/complete</Tracking>
              <Tracking event="acceptInvitation">https://tracking.example.com/acceptInvitation</Tracking>
            </TrackingEvents>
            <NonLinear apiFramework="VPAID" width="300" height="60" id="overlay-1">
              <StaticResource creativeType="application/javascript">
                <![CDATA[https://media.example.com/vpaid/nonlinear-ad.js]]>
              </StaticResource>
              <NonLinearClickThrough><![CDATA[https://www.example.com/landing]]></NonLinearClickThrough>
            </NonLinear>
          </NonLinearAds>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>
```

## Related

* [IAB VAST 4.1 specification](https://iabtechlab.com/wp-content/uploads/2018/11/VAST4.1-final-Nov-8-2018.pdf), for VAST's standardized macros
* [The Pixalate tag and macros](/analytics/tag-and-macros)
* [Video viewability and engagement](/analytics/video-viewability)