Creative Optimization ETL reporting

Premium

At a glance: Creative Optimization ETL streams your creative performance data to cloud storage daily for direct loading into your business intelligence (BI) systems, with no manual exports needed. Choose between Standard Creative ETL, which delivers a fixed report structure, and Custom Creative ETL, which lets you choose exactly which dimensions, metrics, and events to include.

About Creative Optimization ETL reporting

Creative Optimization ETL automatically streams your creative performance data to cloud storage daily, making it available for programmatic loading into your BI systems. Two options are available depending on your needs and subscription plan.

Standard Creative ETL is configured via Data Locker and delivers a fixed daily report covering core creative dimensions and performance metrics. It's available to all Creative Optimization customers.

Custom Creative ETL gives you full control over your report schema (the dimensions, metrics, and events that make up your report, and the order they appear in). Configure your schema directly in the Creative ETL UI, selecting exactly the dimensions, metrics, AI dimensions, and in-app events you need, including retargeting and unified attribution breakdowns. It's available to Creative Optimization Premium plan subscribers. 

Standard Creative ETL

Creative Optimization ETL equips your data analysts with the information they need for creative performance analysis. It does this by automatically streaming Creative Optimization reporting data to cloud storage for programmatic loading into your BI systems.

Full asset-level performance reporting is provided, including all key performance indicators (KPIs), upper- and lower-funnel KPIs, attribution data, and creative asset data.

Standard Creative ETL uses Data Locker to send your reporting data to cloud storage. You can choose from a range of storage destinations, including an AppsFlyer-owned bucket in Amazon Web Services (AWS), or your own storage in AWS, Google Cloud Storage (GCS), Yandex, BigQuery, Snowflake, and more. Data Locker supports multiple destinations, you can send all data to one or more locations, route specific data to certain destinations, and customize delivery to your needs.

Note

Standard Creative ETL has a fixed schema and doesn't support in-app events, AI dimensions, or retargeting/unified breakdowns. For a fully customizable schema, see Custom Creative ETL below.

Get started

This section describes how to set up Data Locker for Creative Optimization reporting.

Prerequisite

  • A Creative Optimization Premium subscription (contact your AppsFlyer customer success manager)

To set up Data Locker:

  1. Follow the Data Locker setup instructions.
  2. When setting up Data Locker, select Creative Optimization under Select reports on the Data Locker configuration page.

Edit Data Locker configuration

This section describes how to add Creative Optimization reporting to an existing Data Locker setup.

To add Creative Optimization reporting to Data Locker:

  1. In AppsFlyer, go to Export > Data Locker.
  2. On the Data Locker configuration page, under Select reports, select Creative Optimization.

Data freshness

Once configured, the Creative Optimization report streams to Data Locker once per day. Each delivery includes data for the last 30 days, streamed daily at UTC+12. The exact local time depends on your time zone:

  • New York: UTC+12 − 5 = 7:00 AM
  • Berlin: UTC+12 + 1 = 1:00 PM
  • Shanghai: UTC+12 + 8 = 8:00 PM

Available data

The following Creative data is available in Data Locker.

Field Type
date String
asset_link String
creative String
media_source String
campaign String
campaign_id String
ad String
ad_id String
adset String
adset_id String
app_name String
app_id String
creative_first_seen String
creative_age String
creative_type String
duration String
end_card_type String
geo String
platform String
orientation String
resolution String
impressions String
clicks String
installs String
ctr String
cvr String
ipm String
cost String
ecpi String
reattributions String
reengagements String
cpm String
roas_d1 String
roas_d7 String
roas_d14 String
roas_d30 String
roas_d60 String
roas_d90 String
retention_d1 String
retention_d7 String
retention_d14 String
retention_d30 String
retention_d60 String
retention_d90 String
revenue_d1 String
revenue_d7 String
revenue_d14 String
revenue_d30 String
revenue_d60 String
revenue_d90 String
partner_cpm String
partner_ctr String
partner_cvr String
partner_clicks String
partner_cost String
partner_ipm String
partner_impressions String
partner_installs String
partner_ecpi String

See definitions for standard metrics and metrics unique to Creative Optimization.

Note

When an ad has no available preview, the asset_link and creative columns won't be populated.

The following data is not available in Standard Creative ETL:

  • Custom dimensions
  • Custom metrics
  • In-app events
  • AI data (elements and scenes)
  • Retargeting data

Custom Creative ETL

Custom Creative ETL gives you full control over your report schema. You configure reports directly in the Creative ETL UI, choosing dimensions, metrics, AI dimensions, attribution type breakdowns, and in-app events. Data is delivered daily to your Data Locker destination.

Unlike Standard Creative ETL's fixed schema, Custom Creative ETL lets you build reports exactly the way you need them:

  • Full in-app event data, include up to 30 in-app events per report, with sub-metrics for event count, unique users, revenue, and cost per action (CPA).
  • Attribution type breakdowns, report on User Acquisition, Retargeting, or a Unified view combining both.
  • AI dimensions, include AI-generated creative tags (auto-tags and custom dimensions) alongside standard performance data.
  • Self-serve setup, create, edit, and manage reports directly in the Creative ETL UI, with no backend configuration or customer success manager involvement required.

Before you begin

Before setting up Custom Creative ETL, make sure the following are in place:

  • Creative Optimization Premium subscription. Custom Creative ETL is available exclusively on the Premium plan. Contact your AppsFlyer representative to confirm your subscription.
  • Admin permissions. Only admin users can create, edit, or delete ETL report configurations.
  • Data Locker destination. Custom Creative ETL delivers data to a Data Locker connection. You must have at least one connection already configured, or create one as part of the report setup (see Step 1 below). Supported destinations include AWS S3, GCS, BigQuery, Snowflake, Azure Blob [beta], and Yandex [beta]. See Set up a Data Locker connection.

Set up Custom Creative ETL

Custom Creative ETL setup is a three-step process: configure your data destination, define report details, and select the schema (the columns that appear in your report output).

To set up Custom Creative ETL:

  1. In AppsFlyer, go to Export > Creative ETL.
  2. Click Create report.
Step 1 - Destination

Select or configure the Data Locker connection where your report will be delivered.

  1. In the Data Locker connections dropdown, select an existing connection.
    • If you don't have a connection yet, click + New connection in Data Locker. This opens the Data Locker setup page. Once you've created a connection, return to Creative ETL and select it from the dropdown.
    • You can select multiple connections if you want the same report delivered to more than one destination.
  2. Click Next.
Step 2 - Details

Define the report name and report type.

  1. Enter a Report name. This name identifies the report in the report list and can't be changed after saving.

    Note

    Use letters, numbers, and underscores only. The name must be between 2 and 80 characters.

  2. Select a Report type:

    Report type Description
    User Acquisition New user installs attributed to paid media
    Retargeting Re-engagement and re-attribution activity
    Unified Combined view of User Acquisition and Retargeting in a single report

     

  3. Click Next.
Step 3 - Schema

Select the dimensions, metrics, AI dimensions, and in-app events to include in your report output.

What is a schema?

A schema defines the columns in your report, which dimensions (attributes like campaign, geo, or creative type) and metrics (performance numbers like installs, CTR, or ROAS) are included, and in what order. The order you select fields in the UI determines the column order in the output file.

  1. Under Dimensions, select the creative and campaign dimensions to include.

    Note

    The Event date (event attribution date), App ID, Creative, and Asset link fields are mandatory and can't be removed. Two additional fields, dt (partition date) and version (run version for backfill scenarios), are always included in every report but are hidden in the UI.

  2. Under AI Dimensions, select any auto-tag or custom dimension fields to include. These fields are generated by AppsFlyer's AI creative analysis pipeline.

    Note

    AI dimensions are populated only for creatives that have been processed by the AI tagging pipeline. There may be a delay before AI tags are available for recently uploaded creatives.

  3. Under Metrics, select the performance KPIs to include.
  4. Under In-app events, select the events to include. Each selected event automatically includes four sub-metrics in the report output: event count, unique users, revenue, and CPA.

    Important!

    You can include a maximum of 30 in-app events per report.

  5. Click Save to activate the report.

The report is now configured. The first delivery will occur on the next daily run.

Edit an existing report

You can modify an existing Custom Creative ETL report, including its schema, report type, and data connection. The report name can't be changed after the report is saved.

To edit a report:

  1. In AppsFlyer, go to Export > Creative ETL.
  2. In the report list, click the Edit (pencil) icon on the report you want to modify.
  3. Make your changes across the three setup steps.
  4. Click Save changes.

Note

Changes to the schema apply to future report runs only. Previously delivered files are not retroactively updated.

The Event date, App ID, Asset link, and Creative dimensions are mandatory and can't be removed.

You can also duplicate or delete a report using the action icons on each row.

Important!

Deleting a report permanently removes the report configuration and all associated run history. This action can't be undone.

Report management

The Creative ETL page lists all Custom Creative ETL reports configured for your account. For each report, you can see the report name, report type, and the timestamp of the last successful delivery.

The following actions are available from the action icons on each report row:

  • View (eye icon), opens a read-only view of the full report configuration.
  • Edit (pencil icon), opens the report in edit mode.
  • Duplicate (copy icon), creates a copy of the report configuration.
  • Delete (trash icon), permanently removes the report and its run history.

Note

Each account can have a maximum of 5 active Custom Creative ETL reports.

If you have a Standard Creative ETL report configured via Data Locker, a notification banner appears at the top of the Creative ETL page. Clicking it takes you to Data Locker, where the standard report is configured.

Data delivery

Delivery schedule

Custom Creative ETL reports are delivered once per day. To monitor delivery status, check the Last successful run timestamp in the Creative ETL report list.

Lookback window

Each daily delivery includes data for a 30-day lookback window. Each file reflects the complete rolling window, not just the most recent day. When loading data into your BI system, replace data for all dates in the delivery window rather than appending only the latest day's rows.

Folder structure

Data files are organized within your delivery folder based on the setting you choose in your Data Locker connection configuration:

  • Unified (default): All apps are included in unified data files. Use the row-level app_id field to distinguish between apps when consuming the data.
  • By app: Data is organized into subfolders, one per app.

See app segregation in Data Locker to learn more.

Schema reference

Mandatory fields

The following fields are always included in every Custom Creative ETL report and can't be removed.

Field Type Description
event_date String The date to which the event or install is attributed
app_id String AppsFlyer app ID
creative String Creative name
asset_link String URL to the creative asset preview. Not populated when no preview is available
dt String (YYYY-MM-DD) Partition date, the date the report data was written to storage
version String Run version identifier, increments for backfill reruns on the same dt
Dimensions

You can select any combination of the following dimensions to include in your report.

Field Type Description
app_name String App name
ad String Ad name
ad_id String Ad ID
adset String Ad set name
adset_id String Ad set ID
agency String Agency responsible for the ad placement
campaign String Campaign name
campaign_id String Campaign ID
channel String Channel within the media source hierarchy
creative_age String Number of days a creative has run, calculated from the first impression, click, or install received by AppsFlyer
creative_similarity String Groups image and video creatives that share the same visual theme or concept
creative_type String Asset type (for example, image, video, or playable)
duration String Video duration in seconds (for video creatives)
end_card String End card name
end_card_duration String End card display duration in seconds
end_card_orientation String End card orientation (portrait or landscape)
end_card_resolution String End card resolution
end_card_type String End card type
first_seen String Date when performance data was first received for the creative
geo String (ISO 3166-1 alpha-2) Country code
media_source String Media source (ad network)
orientation String Creative orientation (portrait or landscape)
platform String Device platform (iOS or Android)
resolution String Creative resolution
text_type String Text type classification for the creative
AI dimensions

AI dimensions are generated by AppsFlyer's AI creative analysis engine and include auto-tags, smart tags, and custom dimensions.

Group Field prefix Description
Auto-tags at_ AI-generated tags for creative elements, scenes, emotions, and narrative attributes. Available tags are account-specific
Smart tags cd_ai_label AI-generated smart tags
Custom dimensions cd_ User-defined creative attributes configured for your account

Note

AI dimensions are only populated for creatives that have been processed by the AI tagging pipeline. Newly uploaded creatives may not have AI tags immediately available.

Metrics
Field Type Description
impressions Integer Number of ad impressions
clicks Integer Number of ad clicks
installs Integer Number of installs attributed to the creative
reattributions Integer Number of re-attributions (retargeting)
reengagements Integer Number of re-engagements (retargeting)
cost Decimal Total ad spend
ctr Decimal Click-through rate (clicks / impressions)
cvr Decimal Conversion rate (installs / clicks)
ipm Decimal Installs per mille (installs per 1,000 impressions)
cpm Decimal Cost per mille (cost per 1,000 impressions)
ecpi Decimal Effective cost per install
roas_d0 Decimal Return on ad spend at Day 0
roas_d1 Decimal Return on ad spend at Day 1
roas_d3 Decimal Return on ad spend at Day 3
roas_d7 Decimal Return on ad spend at Day 7
roas_d14 Decimal Return on ad spend at Day 14
roas_d30 Decimal Return on ad spend at Day 30
roas_d60 Decimal Return on ad spend at Day 60
roas_d90 Decimal Return on ad spend at Day 90
retention_d0 Decimal Day 0 retention rate
retention_d1 Decimal Day 1 retention rate
retention_d3 Decimal Day 3 retention rate
retention_d7 Decimal Day 7 retention rate
retention_d14 Decimal Day 14 retention rate
retention_d30 Decimal Day 30 retention rate
retention_d60 Decimal Day 60 retention rate
retention_d90 Decimal Day 90 retention rate
unique_users_0 Integer Unique users on Day 0
unique_users_1 Integer Unique users on Day 1
unique_users_3 Integer Unique users on Day 3
unique_users_7 Integer Unique users on Day 7
unique_users_14 Integer Unique users on Day 14
unique_users_30 Integer Unique users on Day 30
unique_users_60 Integer Unique users on Day 60
unique_users_90 Integer Unique users on Day 90
revenue_d0 Decimal Total revenue at Day 0
revenue_d1 Decimal Total revenue at Day 1
revenue_d3 Decimal Total revenue at Day 3
revenue_d7 Decimal Total revenue at Day 7
revenue_d14 Decimal Total revenue at Day 14
revenue_d30 Decimal Total revenue at Day 30
revenue_d60 Decimal Total revenue at Day 60
revenue_d90 Decimal Total revenue at Day 90
ad_revenue_d0 Decimal Ad revenue at Day 0
ad_revenue_d1 Decimal Ad revenue at Day 1
ad_revenue_d3 Decimal Ad revenue at Day 3
ad_revenue_d7 Decimal Ad revenue at Day 7
ad_revenue_d14 Decimal Ad revenue at Day 14
ad_revenue_d30 Decimal Ad revenue at Day 30
ad_revenue_d60 Decimal Ad revenue at Day 60
ad_revenue_d90 Decimal Ad revenue at Day 90
partner_impressions Integer Impressions as reported by the media source
partner_clicks Integer Clicks as reported by the media source
partner_installs Integer Installs as reported by the media source
partner_cost Decimal Cost as reported by the media source
partner_cpm Decimal CPM as reported by the media source
partner_ctr Decimal CTR as reported by the media source
partner_cvr Decimal CVR as reported by the media source
partner_ipm Decimal IPM as reported by the media source
partner_ecpi Decimal eCPI as reported by the media source
partner_video_viewed_2s Integer Video views at 2 seconds (partner-reported)
partner_video_viewed_3s Integer Video views at 3 seconds (partner-reported)
partner_video_viewed_6s Integer Video views at 6 seconds (partner-reported)
partner_engaged_views_6s Integer Engaged views at 6 seconds (partner-reported)
partner_engaged_views_15s Integer Engaged views at 15 seconds (partner-reported)
partner_video_started Integer Video starts (partner-reported)
partner_video_25p_views Integer Video played to 25% (partner-reported)
partner_video_50p_views Integer Video played to 50% (partner-reported)
partner_video_75p_views Integer Video played to 75% (partner-reported)
partner_video_completions Integer Video completions (partner-reported)
In-app events

In-app events appear in the report as metric columns using the format {event_name}.{sub_metric}. When you select an event, all four sub-metrics are automatically included. For example, selecting af_purchase generates the following columns: af_purchase.event_count, af_purchase.unique_users, af_purchase.revenue, and af_purchase.cpa.

Sub-metric Description
event_count Total number of times the event was fired
unique_users Number of unique users who triggered the event
revenue Total revenue attributed to the event
cpa Cost per action (cost / event count)

Limits:

  • Maximum of 30 in-app events per report.
  • Available events are account-specific and reflect the events your apps actively send to AppsFlyer.

Limitations

Limitation Details
Reports per account Maximum 5 active reports per account
In-app events per report Maximum 30 events per report
Total columns per report Maximum 150 columns (dimensions + metrics + in-app event sub-metrics combined)
Data window Data is available for a 30-day lookback window. Historical data outside this window isn’t available.
Delivery frequency Once per day. Intraday delivery isn't supported
AI dimension availability AI dimensions are populated only for creatives processed by the AI tagging pipeline. Newly uploaded creatives may have a delay
Custom metrics Not yet supported
Conversion actions (web) Not yet supported
App selection All apps within your account are included in each report. The ability to filter by specific apps is planned for a future release

FAQ

A list of frequently asked questions about ETL reporting. 

What's the difference between Standard Creative ETL and Custom Creative ETL?

Standard Creative ETL is configured via Data Locker's Select reports page and delivers a fixed set of fields (schema) once per day. It doesn't support in-app events, retargeting or unified breakdowns, or AI dimensions.

Custom Creative ETL is configured directly in the AppsFlyer UI with a fully customizable set of fields. You can include up to 30 in-app events, AI dimensions, and User Acquisition/Retargeting/Unified breakdowns, with no backend configuration or customer success manager involvement required.

Can I run both Standard Creative ETL and Custom Creative ETL at the same time?

Yes. Both can run in parallel. If you have a Standard Creative ETL report active, a notification banner appears on the Creative ETL page with a link to your Data Locker configuration.

Can I have multiple Custom Creative ETL reports with different report types?

Yes. Each report is configured with a single report type (User Acquisition, Retargeting, or Unified), and you can create up to 5 reports per account.

How do I add new in-app events to an existing Custom Creative ETL report?

Go to Export > Creative ETL, click the Edit icon on the report, go to Step 3 (Schema), and add the new events. Changes take effect on the next daily delivery.

What happens if a report runs more than once on the same day?

If a report is re-run (typically during a backfill), each run receives an incremented version value. Always use the highest version available for a given dt partition.