Predefined reports
The Trade Desk platform offers reports with predefined metrics and lookback periods. You generate these reports from templates to measure campaign performance and provide other insights without time-consuming customization. Here's what you need to know about predefined reports:
- Predefined reports are available and tailored to the advertiser, campaign, and ad group level.
- You cannot customize the metrics or lookback periods in predefined reports.
- The date range in each report is based on its lookback period.
- Reports are delivered in CSV format.
- You can generate reports at any time and use a download link to retrieve them.
- Depending on the amount of data, generating reports can take up to a few minutes before they become available for download.
- You can retrieve the processing status and download links of multiple predefined reports at the same time.
NOTE: Access to predefined reports is currently limited to a curated selection of templates, which may vary based on the advertiser, their use cases, and permission levels. This set of predefined reports is referred to as "suggested templates," which have a
userGeneratedvalue offalsein the GraphQL API.
Frequently suggested predefined report templates
The following table lists some of the commonly used predefined reports offered as suggested templates.
| Report Name | Type | Description |
|---|---|---|
| Reach and Frequency | Optimization | View stats on unique households, individuals, and devices reached to gauge audience size and measure frequency. |
| Inventory Performance | Optimization | Analyze delivery and performance across sites, inventory contracts, private market deals, and supply vendors. |
| Performance Insights | Performance | Assess key delivery metrics to understand how campaigns are performing. |
| Optimization Details | Optimization | Combines the insights from multiple reports such as Performance Insights, Inventory, Reach and Frequency, Technology, Time and Day, and Data Elements into one comprehensive view. |
| Data Elements Performance | Optimization | View grains and metrics that are relevant for when you're trying to optimize your audience targeting. |
| Tracking Tag Details | Performance | View conversion activity by date, including the following:
|
TIP: Different reports answer different business questions. For example, Reach and Frequency can help answer the following question: How many households has my advertiser reached over the last 30 days? To view a list of business questions for each template, include the
keyBusinessQuestionsfield when you retrieve a template.
Report tasks
The following table lists the tasks associated with downloading reports.
| Task | Operation | Operation Type |
|---|---|---|
| Retrieve suggested predefined report templates. | reportingTemplates |
Query |
| Generate a report. | reportScheduleCreateFromSuggestedTemplate |
Mutation |
| Retrieve the report status and download link. | myReportsReportSchedules |
Query |
Retrieve suggested predefined report templates
You can retrieve all the templates you have access to, or filter them by type, name, and so on. To retrieve a list of all predefined templates, use the GraphQL reportingTemplates query and set the userGenerated filter to false.
TIP: To view the report columns, names, usage, and so on, include the
templateStructureobject.
The following reportingTemplates query example retrieves a list of predefined optimization templates. For each predefined report, the query returns information such as the template ID, name, and type.
query GetTemplateDetailsExample {
reportingTemplates(
where: {
userGenerated: { eq: false }
recommendedTemplateType: { eq: OPTIMIZATION }
}
) {
nodes {
id
name
userGenerated
templateStructure {
tabName
fields {
columnName
columnOrder
columnUsageType
}
metrics {
columnName
columnOrder
columnUsageType
}
}
recommendedTemplateDetails {
templateType
channels
deviceTypes
frequencyType
lookBackWindowInDays
roiGoalTypes
keyBusinessQuestions {
id
value
}
description {
id
value
}
}
}
}
}
After you identify the templates you want to use, take note of their IDs and generate the reports.
Generate a report
After you retrieve and identify the predefined reports you want to use and are ready to generate the report, use the GraphQL reportScheduleCreateFromSuggestedTemplate mutation and include the following:
The template ID.
The ID of the advertiser, campaign, or ad group for which you want to run a report.
A custom name for the report.
NOTE: You can use this mutation to generate only one report at a time.
mutation {
reportScheduleCreateFromSuggestedTemplate(
input: {
entity: { advertiserId: "ADVERTISER_ID_PLACEHOLDER" }
reportName: "Advertiser Performance Insights Report"
reportTemplateId: "TEMPLATE_ID_PLACEHOLDER"
}
) {
data {
reportScheduleSourceReferenceId
}
userErrors {
field
message
}
}
}
Depending on the amount of data the system needs to process, the report usually becomes available to download after a few minutes. After you begin generating the report, you can check its status by using the template ID.
Check the report status and download the report
After you generate your reports, you can check their statuses and retrieve their download links.
IMPORTANT: The download link returned for these reports is an API download link that requires an API token to use.
To retrieve a list of report processing and schedule statuses, use the GraphQL myReportsReportSchedules query. Here's what you need to know:
- You can retrieve the status and the download link in the same query.
- There are multiple filters available such as name, last status change date, lookback window type, and so on.
- After the report is in the
COMPLETEDstate, you can retrieve the download link to download the report. - To check the status of a specific report, in the
executions.some.idargument, include the report schedule ID.
Here's an example of how to retrieve reports based on the last status change date.
query GetReportStatuses {
myReportsReportSchedules(
where: {
executions: { some: { lastStatusChangeDate: { gte: "2025-07-01" } } }
}
) {
nodes {
id
name
status
filters {
advertiserFilters {
name
}
partnerFilters {
name
}
}
timezone
executions {
nodes {
id
reportStartDateInclusive
reportEndDateExclusive
lastStatusChangeDate
state
delivery {
downloadLink
deliveredDate
}
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}
Report statuses
The following table lists the possible state values or statuses for generating reports.
| State Value | Description |
|---|---|
CANCELED |
The system or user stopped the report file from being generated. |
COMPLETED |
The report file generated successfully and is ready for download. |
FAILED |
The system could not generate the report due to an error. |
IN_PROGRESS |
The system is currently generating the report file. |
WAITING_FOR_DEPENDENCIES |
The report file is on hold while waiting for required data or other resources. |
WAITING_FOR_EXECUTION |
The report is queued and waiting to start generation. |
WAITING_FOR_FAILURE_HANDLING |
The report file failed to generate due to an error and is waiting for failure resolution. |
WAITING_FOR_RETRY_AFTER_FAILURE |
The report file failed to generate and is waiting to retry. |
FAQs
The following is a list of commonly asked questions about predefined reports.
Can I customize predefined reports?
No. You can't modify predefined reports using the API, but you can create your own customized reports in the Platform UI and use the REST API to schedule them. For details, see User-defined reports.
How long does it take to generate a report?
Most reports are available to download within a few minutes, but the time depends on the amount of data being processed.
What type of metrics are in each report?
Each report includes a specific set of metrics based on its reporting level (advertiser, campaign, or ad group). To retrieve the metrics or columns in a report, use the reportingTemplates query and include the templateStructure field. For details, see Retrieve suggested predefined report templates.
Can I create a recurring schedule for a predefined report?
No. You must manually generate the report each time. In future updates, you'll be able to schedule reports to run on a recurring cadence—stay tuned for more enhancements!