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.