Deliverable forecast

Forecast for a new set of ads taking into account the impact of ads already running

Deliverability forecast

When you want to run a forecast for a new ad but taking into account the impact of ads already running in your network, you can execute a deliverable forecast. The payload is similar to an eligible forecast, but instead of the ad field you have to specify a newAds field in which you can include an array of ads:

{
  "type": "deliverable",
  "endDate": "2023-03-20",
  "newAds": [
    {
      "id": 1,
      "flight": {
        "id": 1,
        "goalType": 1,
        "goalAmount": 10000,
        "networkId": 12345,
        "priorityId": 1,
        "startDate": "2023-03-13T00:00:00",
        "timeZone": "UTC",
        "priority": {
          "id": 1,
          "order": 5,
          "type": "lottery"
        },
        "siteZoneTargeting": {
          "include": [
            {
              "siteId": 1234569
            }
          ]
        },
        "keywordTargeting": {
          "include": [
            [
              "keyword1"
            ],
            [
              "keyword2"
            ]
          ]
        },
        "customTargeting": "[\"custom_page_name\"] contains homepage"
      },
      "creative": {
        "id": 1,
        "adType": 1,
        "queryableFields": {
          "ctSize": {
            "type": "String",
            "value": "large"
          },
          "ctPrice": {
            "type": "Number",
            "value": 42
          }
        }
      }
    }
  ],
  "params": {
    "sampling": 3,
    "groupBy": [
      "$datetime.date"
    ]
  }
}

The result will follow a similar schema, but this time results will be indexed by the ad id (since you can supply multiple ads to forecast with):

{
  "resultStatus": "success",
  "result": {
    "total": {
      "1": {
        "impressions": 10504,
        "uniqueUsers": 3568
      }
    },
    "grouped": [
      {
        "key": {
          "$datetime.date": "2023-03-19"
        },
        "values": {
          "1": {
            "impressions": 1496,
            "uniqueUsers": 672
          }
        }
      },
      {
        "key": {
          "$datetime.date": "2023-03-20"
        },
        "values": {
          "1": {
            "impressions": 1416,
            "uniqueUsers": 624
          }
        }
      },
      {
        "key": {
          "$datetime.date": "2023-03-15"
        },
        "values": {
          "1": {
            "impressions": 1400,
            "uniqueUsers": 600
          }
        }
      },
      {
        "key": {
          "$datetime.date": "2023-03-14"
        },
        "values": {
          "1": {
            "impressions": 1176,
            "uniqueUsers": 632
          }
        }
      },
      {
        "key": {
          "$datetime.date": "2023-03-17"
        },
        "values": {
          "1": {
            "impressions": 1736,
            "uniqueUsers": 744
          }
        }
      },
      {
        "key": {
          "$datetime.date": "2023-03-18"
        },
        "values": {
          "1": {
            "impressions": 1704,
            "uniqueUsers": 768
          }
        }
      },
      {
        "key": {
          "$datetime.date": "2023-03-16"
        },
        "values": {
          "1": {
            "impressions": 1576,
            "uniqueUsers": 680
          }
        }
      }
    ]
  },
  "id": "540c807c-c111-4465-9c89-85c6507d2409",
  "status": "finished",
  "progress": 100.0,
  "desc": "Forecast is finished"
}

As with existing forecasts, deliverability forecasts can take several minutes to complete. We’re actively working on improving the response times.