---
updatedAt: 2025-10-07T11:53:52.000Z
agentTools:
  projectIndex: https://docs.scope3.com/llms.txt
---

# Media Delivery

Upload media delivery data to share with partners

## Use Cases for the Media Delivery Schema

The Media Delivery API uploads information about transacted impressions into the Scope3 system for modeling and inclusion in reports, dashboards, and other analytic tools.

The Media Delivery guide can also be used effectively for Creative Measurement.

### Advertiser Reporting

Advertisers that have delivery logs from their DSP (for instance, REDS from TTD), ad server (for instance, GCM logs), or other source of exposure data can use the Media Delivery API to add these campaigns to their Scope3 dashboard, the emissions simulator, and other Scope3 tools.

### Client Campaign Reporting

Publishers, media owners, and platforms can use the Media Delivery API to upload delivery logs from their ad server to create dashboards and reports for their internal teams and (if desired) their clients.

## Getting Started

To use the Media Delivery schema, you will need to gather delivery data, configure field mappings, and send the data to Scope3. This process can be managed using the [Integrate](https://scope3.com/integrate/overview) tool in the CSP.

Once data has been uploaded and approved, it will be processed through the [measurement](https://docs.scope3.com/reference/measure-1) API. The results will be available for reporting in the CSP and can also (through a configuration in the Integrate tool) be pushed back into a cloud bucket for use in your proprietary systems.

## Overview of the Input Format

Below are the key fields for the Media Delivery schema. Many fields can be added to refine the measurement—see the full [input schema documentation](media-delivery-schema) and the [Data Dictionary](https://docs.scope3.com/docs/data-dictionary) for more information.

<HTMLBlock>{`
<table style="width: 100%; border-collapse: collapse;">
<thead>
<tr>
  <th style="border: 1px solid #ddd; padding: 8px;">Field</th>
  <th style="border: 1px solid #ddd; padding: 8px;">Description</th>
  <th style="border: 1px solid #ddd; padding: 8px;">Example</th>
</tr>
</thead>
<tbody>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>row_identifier</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>This will be used on the response to map back to this row, eliminating the need to pass back all fields.  </p>
<p>The field must be unique.</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>asdfa823</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>utc_datetime</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The date and hour of the impression. We recommend sending hourly data to enable accurate emissions calculations, as the grid mix changes significantly throughout the day. Hourly data also allows reporting on local time zones.</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>2023-08-14 01:00:00</code></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>inventory_id</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The domain or app ID (see below for DOOH &amp; Linear TV)</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>nytimes.com</code></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>global_placement_id</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The global placement ID provided by the publisher.<br>This is important because ad stack and formats often vary significantly across placements</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>top_left_300_250</code></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>country</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The two-letter country code where the impression was delivered</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>FR</code></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>device_type</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The type of device that viewed the impression</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>phone</code></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>network</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The network that the consumer device used to view the impression</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>fixed</code></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>campaign_id</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The ID of the campaign to report on</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>1234</code></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>campaign_name</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The name of the campaign to report on</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>Big Q1 promotion</code></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>impressions</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The number of impressions delivered with these characteristics</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>1823821</code></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>video_size</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The dimensions of the provided input video</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"></td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>video_duration</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The duration of the provided input video</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"></td>
</tr>
</tbody>
</table>
`}</HTMLBlock>

<br />

## Channel Specificities

### DOOH input format

For DOOH, `media_owner` is a required field to map screen IDs properly. The `venue_category` is recommended as well. Plays or impressions are both accepted inputs. Below is a list of recommended fields:

<Table align={["left","left","left","left"]}>
  <thead>
    <tr>
      <th>
        Field
      </th>

      <th>
        Description
      </th>

      <th>
        Example
      </th>

      <th>
        Priority
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `utc_datetime`
      </td>

      <td>
        The date and hour of the impression. We recommend sending hourly data to enable accurate emissions calculations, as the grid mix changes significantly throughout the day. Hourly data also allows reporting on local time zones
      </td>

      <td>
        `2023-08-14 01:00:00`
      </td>

      <td>
        ✅ **Required**
      </td>
    </tr>

    <tr>
      <td>
        `channel`
      </td>

      <td>

      </td>

      <td>
        `dooh`
      </td>

      <td>
        💡 **Recommended**
      </td>
    </tr>

    <tr>
      <td>
        `inventory_id`
      </td>

      <td>
        The screen ID
      </td>

      <td>
        `sydney-north-18`
      </td>

      <td>
        💡 **Strongly Recommended**
      </td>
    </tr>

    <tr>
      <td>
        `country`
      </td>

      <td>
        The country where the DOOH screen is located
      </td>

      <td>
        `AU`
      </td>

      <td>
        ✅ **Required**
      </td>
    </tr>

    <tr>
      <td>
        `media_owner`
      </td>

      <td>
        The media owner that owns the screen
      </td>

      <td>
        `JC Decaux AU`
      </td>

      <td>
        💡 **Strongly Recommended**
        and needed for screen identification when inventory_id is provided.
      </td>
    </tr>

    <tr>
      <td>
        `venue_category`
      </td>

      <td>
        The type of screen — used for screens that have incomplete data
      </td>

      <td>
        `bus-shelter`
      </td>

      <td>
        💡 **Recommended**
      </td>
    </tr>

    <tr>
      <td>
        `campaign_id`
      </td>

      <td>
        The ID of the campaign to report on
      </td>

      <td>
        `1234`
      </td>

      <td>
        💡 **Recommended**
      </td>
    </tr>

    <tr>
      <td>
        `campaign_name`
      </td>

      <td>
        The name of the campaign to report on
      </td>

      <td>
        `Big Q1 promotion`
      </td>

      <td>
        💡 **Recommended**
      </td>
    </tr>

    <tr>
      <td>
        `plays`
      </td>

      <td>
        The number of plays delivered with these characteristics (can also be impressions)
      </td>

      <td>
        `467`
      </td>

      <td>
        💡 **Strongly Recommended**
      </td>
    </tr>

    <tr>
      <td>
        `impressions`
      </td>

      <td>
        The number of people reached behind the DOOH screens
      </td>

      <td>
        `5982`
      </td>

      <td>
        💡 **Strongly Recommended**
      </td>
    </tr>
  </tbody>
</Table>

<br />

### Linear TV input format

For Linear TV campaigns, we recommend passing the below input fields.

<HTMLBlock>{`
<table style="width: 100%; border-collapse: collapse;">
<thead>
<tr>
  <th style="border: 1px solid #ddd; padding: 8px;">Field</th>
  <th style="border: 1px solid #ddd; padding: 8px;">Description</th>
  <th style="border: 1px solid #ddd; padding: 8px;">Example</th>
  <th style="border: 1px solid #ddd; padding: 8px;">Priority</th>
</tr>
</thead>
<tbody>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>utc_datetime</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The date and hour of the TV spot. We recommend sending hourly data to enable accurate emissions calculations, as the grid mix changes significantly throughout the day. Hourly data also allows reporting on local time zones.</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>2023-08-14 01:00:00</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>✅ <strong>Required</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>channel</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The marketing channel</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>linear-tv</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>💡 <strong>Strongly Recommended</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>country</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The country in which the TV spot is viewed</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>US</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>✅ <strong>Required</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>media_owner</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The media owner that owns the TV channel</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>Paramount</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>💡 <strong>Strongly Recommended</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>inventory_id</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The TV channel</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>Nickeledeon</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>💡 <strong>Recommended</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>plays</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The number of TV spots that aired</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>3</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>✅ <strong>Required</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>playDuration</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The duration (in seconds) of the TV spot</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>30</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>💡 <strong>Strongly Recommended</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>impressions</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The number of household impressions</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>182821</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>✅ <strong>Required</strong> if <code>unique_reach</code>and <code>average_frequency</code> are not provided</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>unique_reach</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The number of unique individuals reached</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>245907</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>✅ <strong>Required</strong>  if <code>impressions</code> is not provided</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>average_frequency</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The average number of times a unique individual has been exposed to the TV spot</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>2.4</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>✅ <strong>Required</strong>  if <code>impressions</code> is not provided</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>campaign_id</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The ID of the campaign to report on</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>1234</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>💡 <strong>Recommended</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>campaign_name</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The name of the campaign to report on</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>Big Q1 promotion</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>💡 <strong>Recommended</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>grp</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The gross rating point of the campaign<br>(unique_reach * average_frequency / target_audience_size)</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>176</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"></td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>broadcastMethod</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The broadcast method used to transmit the TV broadcast signal. I unknown, leave null.</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>satellite</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"></td>
</tr>
</tbody>
</table>
`}</HTMLBlock>

<br />

<br />

### Traditional Radio Input Format

For Traditional Radio campaigns, we recommend passing the below input fields.

<HTMLBlock>{`
<table style="width: 100%; border-collapse: collapse;">
<thead>
<tr>
  <th style="border: 1px solid #ddd; padding: 8px;">Field</th>
  <th style="border: 1px solid #ddd; padding: 8px;">Description</th>
  <th style="border: 1px solid #ddd; padding: 8px;">Example</th>
  <th style="border: 1px solid #ddd; padding: 8px;">Priority</th>
</tr>
</thead>
<tbody>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>utc_datetime</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The date and hour of the radio spot. We recommend sending hourly data to enable accurate emissions calculations, as the grid mix changes significantly throughout the day. Hourly data also allows reporting on local time zones.</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>2023-08-14 01:00:00</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>✅ <strong>Required</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>channel</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The marketing channel</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>traditional-radio</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>💡 <strong>Strongly Recommended</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>country</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The country in which the radio spot is viewed</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>GB</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>✅ <strong>Required</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>media_owner</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The media owner that owns the radio station</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>News UK</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>💡 <strong>Strongly Recommended</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>inventory_id</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The radio station</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>talkSPORT</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>💡 <strong>Recommended</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>plays</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The number of radio spots that aired</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>3</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>✅ <strong>Required</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>playDuration</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The duration (in seconds) of the radio spot</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>30</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>💡 <strong>Strongly Recommended</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>impressions</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The number of audience impressions</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>182821</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>✅ <strong>Required</strong> if <code>unique_reach</code>and <code>average_frequency</code> are not provided</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>unique_reach</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The number of unique individuals reached</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>245907</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>✅ <strong>Required</strong>  if <code>impressions</code> is not provided</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>average_frequency</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The average number of times a unique individual has been exposed to the radio spot</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>2.4</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>✅ <strong>Required</strong>  if <code>impressions</code> is not provided</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>campaign_id</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The ID of the campaign to report on</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>1234</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>💡 <strong>Recommended</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>campaign_name</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The name of the campaign to report on</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>Big Q1 promotion</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>💡 <strong>Recommended</strong></p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>grp</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The gross rating point of the campaign<br>(unique_reach * average_frequency / target_audience_size)</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>176</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"></td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>broadcastMethod</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The distribution method used to transmit the radio broadcast signal. I unknown, leave null.</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>FM</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"></td>
</tr>
</tbody>
</table>
`}</HTMLBlock>

<br />

### Search input format

For Search campaigns, we recommend passing the below input fields.

| Field           | Description                                                                                                                                                                                                                      | Example               | Priority                                         |
| :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------- | :----------------------------------------------- |
| `utc_datetime`  | The date and hour of the impression. We recommend sending hourly data to enable accurate emissions calculations, as the grid mix changes significantly throughout the day. Hourly data also allows reporting on local time zones | `2023-08-14 01:00:00` | ✅ **Required**                                   |
| `channel`       | The marketing channel                                                                                                                                                                                                            | `search`              | 💡 **Recommended**                               |
| `country`       | The country in which the impression was served                                                                                                                                                                                   | `US`                  | 💡 **Strongly Recommended**                      |
| `inventory_id`  | The domain or app ID where the search originates from                                                                                                                                                                            | `google.com`          | ✅ **Required**                                   |
| `impressions`   | The number of impressions                                                                                                                                                                                                        | `182821`              | ✅ **Required**                                   |
| `click`         | The number of clicks                                                                                                                                                                                                             | `914`                 |                                                  |
| `spend`         | The media cost in USD                                                                                                                                                                                                            | `1142`                | ✅ **Required** if pricing defined as % of media. |
| `currency`      | The 3-letter code representing the currency  the spend attributed is reported in. If not specified, we assume USD                                                                                                                | `EUR`                 |                                                  |
| `campaign_id`   | The ID of the campaign to report on                                                                                                                                                                                              | `1234`                | 💡 **Recommended**                               |
| `campaign_name` | The name of the campaign to report on                                                                                                                                                                                            | `Big Q1 promotion`    | 💡 **Recommended**                               |

<br />

### Classic OOH input format

For classic OOH, we recommend using the following channel specific input fields:`campaign_start_date`, `campaign_end_date`, `display_duration_days`, `physical_width_meters` and `physical_height_meters`.

| Field                    | Description                                                                          | Example                 | Priority                                                                     |
| :----------------------- | :----------------------------------------------------------------------------------- | :---------------------- | :--------------------------------------------------------------------------- |
| `country`                | The country where the DOOH screen is located                                         | `GB`                    | ✅ **Required**                                                               |
| `channel`                | The marketing channel                                                                | `classic-ooh`           | 💡 **Strongly Recommended**                                                  |
| `campaign_start_date`    | The start date of the OOH campaign                                                   | `2025-11-03`            | ✅ **Required** if `display_duration_days` is not provided.                   |
| `campaign_end_date`      | The end date of the OOH campaign                                                     | `2025-11-16`            | ✅ **Required** if `display_duration_days` is not provided.                   |
| `display_duration_days`  | The number of days                                                                   | `14`                    | ✅ **Required** if `campaignStartDate` and `campaignEndDate`are not provided. |
| `share_of_time_pct`      | The percentage of time the ad is displayed on the panel.                             | `100`                   | 💡 **Recommended**                                                           |
| `venue_category`         | The venue in which the panel is located - used for panels that have incomplete data. | `airport`               | 💡 **Recommended**                                                           |
| `inventory_id`           | The identifier of the panel                                                          | `heathrow-terminal2-18` | 💡 **Recommended**                                                           |
| `media_owner`            | The media owner who owns the rights to display ads on the panel                      | `JCDecaux GB`           | ✅ **Required** if `inventory_id` is provided.                                |
| `physical_width_meters`  | The width of the ad                                                                  | `3.0`                   | 💡 **Recommended**                                                           |
| `physical_height_meters` | The height of the ad                                                                 | `4.0`                   | 💡 **Recommended**                                                           |
| `impressions`            | The number of people reached behind the  panel                                       | `5982`                  | 💡 **Strongly Recommended**                                                  |
| `campaign_id`            | The ID of the campaign to report on                                                  | `1234`                  | 💡 **Recommended**                                                           |
| `campaign_name`          | The name of the campaign to report on                                                | `Big Q4 promotion`      | 💡 **Recommended**                                                           |
| `grp`                    | The gross rating point of the campaign                                               | `78.5`                  | 💡 **Recommended**                                                           |

<br />

### Print input format

For Print, we recommend passing the below input fields.

| Field                | Description                                                   | Example            | Priority                                          |
| :------------------- | :------------------------------------------------------------ | :----------------- | :------------------------------------------------ |
| `utc_datetime`       | The date of issue of the print publication.                   | `2025-11-16`       | ✅ **Required**                                    |
| `channel`            | The marketing channel                                         | `print`            | 💡 **Strongly Recommended**                       |
| `country`            | The country where the publication is circulated               | `US`               | 💡 **Recommended**                                |
| `inventory_id`       | The name of the publication                                   | `Vogue US`         | 💡 **Recommended**                                |
| `media_owner`        | The publisher of the publication                              | `Conde Nast`       | ✅ **Required** if `inventory_id` is provided.     |
| `print_medium`       | The type of print publication (newspaper, magazine, leaflet)  | `magazine`         | 💡 **Recommended**                                |
| `ad_format`          | The type of ad                                                | `Full Page`        | 💡 **Recommended**                                |
| `print_circulations` | The number of print publication copies that were distributed. | `500000`           | ✅ **Required** if `impressions` is not provided.  |
| `impressions`        | The number of readers                                         | `5982`             | ✅ **Required** if `inventory_id` is not provided. |
| `campaign_id`        | The ID of the campaign to report on                           | `1234`             | 💡 **Recommended**                                |
| `campaign_name`      | The name of the campaign to report on                         | `Big Q4 promotion` | 💡 **Recommended**                                |

## Green Media Product fields

To designate an impression as a GMP, use the `is_gmp` field. Optionally, set the compensation rate using `gmp_compensation_rate` (0 means "no compensation"; 1 means "compensate for 100% of emissions; greater than 1 would over-compensate).

<HTMLBlock>{`
<table style="width: 100%; border-collapse: collapse;">
<thead>
<tr>
  <th style="border: 1px solid #ddd; padding: 8px;">Field</th>
  <th style="border: 1px solid #ddd; padding: 8px;">Type</th>
  <th style="border: 1px solid #ddd; padding: 8px;">Description</th>
  <th style="border: 1px solid #ddd; padding: 8px;">Example</th>
  <th style="border: 1px solid #ddd; padding: 8px;">For GMP reporting</th>
</tr>
</thead>
<tbody>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>utc_datetime</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>string</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The date of the impression. The hour is not required, but hourly data enables reporting on local time zones. We recommend sending hourly data for the most accurate emissions calculations, as the grid mix changes significantly throughout the day. Example: <code>2023-08-14 01:00:00</code>. </p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>2023-08-14</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>Needed</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>impressions</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>integer</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>Number of delivered impressions</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>1000</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>Needed</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>inventory_id</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>string</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The domain, app ID, screen identifier, or podcast name</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><a href="http://nytimes.com/">http://nytimes.com/</a></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>At least one of: inventory_id, app, or domain</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>app</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>string</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"></td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>com.nytimes.android</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>At least one of: inventory_id, app, or domain</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>domain</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>string</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"></td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><a href="http://nytimes.com/">http://nytimes.com/</a></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>At least one of: inventory_id, app, or domain</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>country</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>string</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>This is the country ISO 3166-2 Alpha-2- or an Alpha-3 code,<br>e.g., USA or a country name</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>US</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>Needed</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>deal_id</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>string</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>Required if <code>deal_name</code> is provided</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>deal_id</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>Needed</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>brand</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>string</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>Brand name</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>Hasbro</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>Needed</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>is_gmp</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>boolean</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>Designate an impression as a GMP.<br>It can optionally be set at the account level</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>true</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>Needed if not set at account level</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>gmp_compensation_rate</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>float</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>GMP compensation rate.<br><code>0</code> means no compensation;<br><code>1</code> means compensate for 100% of emissions;<br><code>greater than 1</code> would over-compensate.<br>It can optionally be set at the account level</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>1</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>Needed if not set at account level</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>device_type</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>string</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>The type of device</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"></td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>Highly recommended</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>seller_domain</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>string</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>Canonical seller domain</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"></td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>Highly recommended</p>
</td>
</tr>
<tr>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>global_placement_id</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p><code>string</code></p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>Primary key to identify placements</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>/1111/homepage#728x90</p>
</td>
  <td style="border: 1px solid #ddd; padding: 8px;"><p>Highly recommended</p>
</td>
</tr>
</tbody>
</table>
`}</HTMLBlock>

## Overview of the Output Format

Output responses are configurable. Media Delivery responses can contain supplied input fields and emissions measurement fields. Response configuration is done in the Integrate UI.

Available measurement response fields are:

<HTMLBlock>{`
<div style="overflow-x: auto;">
  <table style="width: 100%; border-collapse: collapse; table-layout: fixed;">
    <thead>
      <tr>
        <th style="border: 1px solid #ddd; padding: 8px;">Field</th>
        <th style="border: 1px solid #ddd; padding: 8px;">Description</th>
        <th style="border: 1px solid #ddd; padding: 8px;">Example</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td style="border: 1px solid #ddd; padding: 8px; word-break: break-word; white-space: normal;"><code>row_identifier</code></td>
        <td style="border: 1px solid #ddd; padding: 8px; word-break: break-word; white-space: normal;">The same row identifier that was passed into the request</td>
        <td style="border: 1px solid #ddd; padding: 8px; word-break: break-word; white-space: normal;">asdfa823</td>
      </tr>
      <tr>
        <td style="border: 1px solid #ddd; padding: 8px;"><code>inventory_coverage</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;">Has the row successfully been modeled. If <code>false</code> then no emissions results will be available for this row.</td>
        <td style="border: 1px solid #ddd; padding: 8px;">modeled</td>
      </tr>
      <tr>
        <td style="border: 1px solid #ddd; padding: 8px;"><code>total_emissions_grams</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;">Total emissions in grams is the sum of <code>ad_selection_emissions_grams</code>, <code>media_distribution_emissions_grams</code> and <code>creative_delivery_emissions_grams</code>. In grams of CO₂e.</td>
        <td style="border: 1px solid #ddd; padding: 8px;">0.012</td>
      </tr>
      <tr>
        <td style="border: 1px solid #ddd; padding: 8px;"><code>compensated_emissions_grams</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;">The number of emissions compensated based on GMP rules</td>
        <td style="border: 1px solid #ddd; padding: 8px;">0.0028</td>
      </tr>
      <tr>
        <td style="border: 1px solid #ddd; padding: 8px;"><code>ad_selection_emissions_grams</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;">Ad tech including servers and cloud computing; analytics; network traffic; storage; data providers; and vendor overhead. In grams of CO₂e.</td>
        <td style="border: 1px solid #ddd; padding: 8px;">0.005</td>
      </tr>
      <tr>
        <td style="border: 1px solid #ddd; padding: 8px;"><code>media_distribution_emissions_grams</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;">Media delivery including CMS; CDNs and hosting services; publishing overhead including employee and office expenses; data transfer. In grams of CO₂e.</td>
        <td style="border: 1px solid #ddd; padding: 8px;">0.0012</td>
      </tr>
      <tr>
        <td style="border: 1px solid #ddd; padding: 8px;"><code>media_distribution_consumer_device_emissions_grams</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;">Media delivery consumer device emissions. In grams of CO₂e. These emissions are not included in the <code>total_emissions_grams</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;">0.012</td>
      </tr>
      <tr>
        <td style="border: 1px solid #ddd; padding: 8px;"><code>creative_delivery_emissions_grams</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;">The emissions related to delivering the creative to a display surface.</td>
        <td style="border: 1px solid #ddd; padding: 8px;">0.0065</td>
      </tr>
      <tr>
        <td style="border: 1px solid #ddd; padding: 8px;"><code>creative_delivery_consumer_device_emissions_grams</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;">Creative delivery of consumer device emissions. In grams of CO₂e. These emissions are not included in the <code>total_emissions_grams</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;">0.012</td>
      </tr>
      <tr>
        <td style="border: 1px solid #ddd; padding: 8px;"><code>compensation_provider</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;">Applicable when compensating for delivered media</td>
        <td style="border: 1px solid #ddd; padding: 8px;">carbon direct</td>
      </tr>
      <tr>
        <td style="border: 1px solid #ddd; padding: 8px;"><code>climate_risk_compliant</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;">Impressions are marked climate risk if inventory either has extremely high gCO₂e compared to geo and channel benchmarks or has been flagged as proliferating practices that contribute to high emissions</td>
        <td style="border: 1px solid #ddd; padding: 8px;">true</td>
      </tr>
      <tr>
        <td style="border: 1px solid #ddd; padding: 8px;"><code>emissions_breakdown</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;">JSON data containing full emissions breakdown</td>
        <td style="border: 1px solid #ddd; padding: 8px; word-break: break-word; white-space: pre-wrap;">{"breakdown":{"adSelection":{"breakdown":{"adPlatform":{"emissions":144.14783646188533}},"total":144.14783646188533},"creativeDelivery":{"breakdown":{"adPlatform":{"emissions":0},"dataTransfer":{"emissions":0.4699678050999183}},"total":0.4699678050999183},"mediaDistribution":{"breakdown":{"corporate":{"emissions":49.018915},"dataTransfer":{"emissions":0.5310414263298526}},"total":49.54995642632985}},"framework":"scope3"}</td>
      </tr>
      <tr>
        <td style="border: 1px solid #ddd; padding: 8px;"><code>coverage</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;">JSON data containing full coverage information. Here, it is possible to see what channel and property were matched.</td>
        <td style="border: 1px solid #ddd; padding: 8px; word-break: break-word; white-space: pre-wrap;">{"adFormat":{"value":"leaderboard-728x90-banner","verified":true},"channel":{"value":"web"},"impressions":{"modeled":1000,"processed":0,"skipped":0},"property":{"value":"cnn.com"},"supplyGraph":{"logical":{"averageDepth":3.2,"maxDepth":5,"minDepth":2},"technical":{"averageDepth":3.1,"maxDepth":5,"minDepth":2},"totalCount":256}}</td>
      </tr>
      <tr>
        <td style="border: 1px solid #ddd; padding: 8px;"><code>policies</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;"></td>
        <td style="border: 1px solid #ddd; padding: 8px; word-break: break-word; white-space: pre-wrap;">[{"compliant":true,"policy":"climateRisk","policyOwner":"Scope3"}]</td>
      </tr>
      <tr>
        <td style="border: 1px solid #ddd; padding: 8px;"><code>calculation_error</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;">Correct data has been provided but a calculation of emissions was not possible.</td>
        <td style="border: 1px solid #ddd; padding: 8px; word-break: break-word; white-space: pre-wrap;">{"message":"Invalid Date. unsupported date: 2024-03-20 00:00 UTC. dates must be on or before: 2024-03-19 00:00 UTC"}</td>
      </tr>
      <tr>
        <td style="border: 1px solid #ddd; padding: 8px;"><code>parser_error</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;">Input values are invalid</td>
        <td style="border: 1px solid #ddd; padding: 8px;"><code>Invalid country code: CURACAO</code></td>
      </tr>
      <tr>
        <td style="border: 1px solid #ddd; padding: 8px;"><code>report_id</code></td>
        <td style="border: 1px solid #ddd; padding: 8px;"></td>
        <td style="border: 1px solid #ddd; padding: 8px;"></td>
      </tr>
    </tbody>
  </table>
</div>
`}</HTMLBlock>