Dynamic Product Ads (DPAs) make your campaigns more impactful by showcasing personalized product recommendations from your Product Catalog.
Each product links to its product detail page, giving shoppers a seamless path from discovery to purchase.
For brands with five or more SKUs, DPAs create more relevant shopping experiences and consistently drive higher performance, with advertisers typically seeing a 10–25% lift in conversion metrics.
Getting started
To use DPAs, first configure your Product Catalog via the Catalog Manager.
There are three ways to add your Product Catalog.
To choose from these,
In Axon Ads Manager, click the tag icon () to open the Catalog manager.
Next to the name of the catalog, click the pencil icon () to open the Edit Catalog page.
Choose from one of the three Data source options:
From Axon Pixel
Import from a file
Connect Shopify
The following sections describe these three options.
1. From Axon Pixel (inferred method)
Inferred catalogs are the default method of catalog creation for non-Shopify sites that don’t otherwise provide a CSV stream.
This method uses information registered in pixel events to build the product catalog.
For finer control over which items are included in your catalog, choose methods 2 and 3.
Important data requirements for inferred method
Verify that your pixel sends item_id and item_variant_id with all purchase and view_item events, with the proper hierarchy
item_id: represents the parent item independent of its variants.
Multiple item_variant_ids may share the same item_id.
item_variant_id: for example a size or color variation of the parent item.
Every variant in your catalog must have an item_variant_id that is not shared by any other variant or item.
item_id and item_variant_id values passed with purchase events should match those passed with view_item events.
Ensure image_url is passed with view_item events, and that the URL links to a high quality image with a proper file extension.
CSV stream catalogs give you finer control over which products are in your product catalog.
There are two ways you can integrate a CSV streamed catalog:
Data feed provider: You can insert a catalog CSV feed generated through a feed provider, by leveraging one of the partners listed on the Third-party catalog feeds page.
Custom CSV file: You can provide an endpoint to Axon from which it downloads the product catalog in a .csv format on a daily basis.
To do this:
Upload your CSV to a publicly accessible location.
See this example.
Update this CSV whenever your catalog changes (AppLovin recommends that you update daily).
AppLovin syncs your catalog stream once per day.
Ensure salesPrice never exceeds price, as this causes catalog sync issues due to data integrity concerns.
Ensure that no fields contain commas (you may use commas only to separate fields).
Refer to the variant object table for additional details on the required fields for CSV streams.
Important data requirements for the CSV feed method
Verify that your pixel sends item_id and item_variant_id with all purchase events, with the proper hierarchy
item_id: represents the parent item independent of its variants.
Multiple item_variant_ids may share the same item_id.
item_variant_id: for example a size or color variation of the parent item.
Every variant in your catalog must have an item_variant_id that is not shared by any other variant or item.
These fields (item_id and item_variant_id) passed with purchase events should match the values sent in the CSV in their respective columns (itemId and id)
3. Connect Shopify
If you integrated the Shopify app pixel, you can sync your product catalog by using the Connect Shopify method in the Catalog Manager.
A benefit of this method is that your catalog is updated with the latest products on your site, including product pricing and availability.
How to set DPAs live in your campaigns
After you sync your Catalog by using one of the above methods, activate Enable Dynamic Product Ads when you create your campaign and choose which Catalog to use.
Additional information
Glossary
Term
Definition
catalog
A catalog holds the products you intend to sell. AppLovin recommends that you have only one catalog for all your products.
variant
Variants are individual SKUs to sell. Every SKU should be its own variant. The catalog manager considers variants that have the same itemId to be variants of the same item. For example, a Red Small Shirt, Red Large Shirt, and Blue Large Shirt by the same brand are each their own variant but share the same itemId.
The Variant object
Field
Type
Required?
Description
additionalImageUrls
String[]
no
Additional images associated with the variant. Valid extensions are .jpg, .jpeg, and .png. Use semicolon characters rather than commas to separate items in this array.
additionalVideoUrls
String[]
no
Additional videos associated with the variant. Valid extension is mp4. Use semicolon characters rather than commas to separate items in this array.
ageGroup
String
no
One of ADULTS, ALL_AGES, INFANT, KIDS, NEWBORN, or TODDLER
brand
String
no
Ignored if another variant exists with the same itemId. Must be no longer than 256 characters.
A short description of the variant. The description should be concise and informative, no longer than 8192 characters.
gender
String
no
One of FEMALE, MALE, or UNISEX
id
String
yes
The ID of the variant. This must match the item_variant_id in your pixel. Must be no longer than 64 characters.
isAvailable
Boolean
yes
Whether the variant is available or out of stock
isBundle
Boolean
yes
Whether the variant is a collection of multiple items sold together
itemId
String
yes
The ID shared across variants of an item. This must match the item_id in your pixel. Must be no longer than 64 characters.
multipackQuantity
Number
no
The number of identical items in a single pack
name
String
yes
The name of the variant. Must be no longer than 1024 characters.
numberOfReviews
Number
no
The total number of reviews of the variant
price
Decimal
yes
The price of the variant. If the variant is on sale, price should be the original price before the sale.
primaryImageUrl
String
yes
The primary image associated with the variant, shown by default when the variant displays. Valid extensions are .jpg, .jpeg, and .png. Must be no longer than 2048 characters.
primaryVideoUrl
String
no
The primary video associated with the variant, shown by default when the variant displays. Valid extension is mp4. Must be no longer than 2048 characters.
rating
Decimal
no
The rating of the variant, on a scale from 0 to 5. null if there is no rating.
rewardEndDate
DateTime
no
When the rewardPercent validity ends. Format this as a UTC time according to ISO-8601, without a time zone offset (for example: 2025-01-07T00:00:00). If rewardStartDate and rewardEndDate are both null, the rewardPercent is not active. If only rewardEndDate is null, the rewardPercent is active beginning at the rewardStartDate.
rewardPercent
Number
no
The percent-reward that a customer receives for purchasing the variant, expressed as a number between 0 and 100
rewardStartDate
DateTime
no
When the rewardPercent begins to be valid. Format this as a UTC time according to ISO-8601, without a time zone offset (for example: 2025-01-01T00:00:00). If rewardStartDate and rewardEndDate are both null, the rewardPercent is not active. If only rewardEndDate is null, the rewardPercent is active beginning at the rewardStartDate.
salePrice
Decimal
no
The on-sale price of the variant. null if the variant is not on sale.
salePriceEndDate
DateTime
no
When the salePrice validity ends. Format this as a UTC time according to ISO-8601, without a time zone offset (for example: 2025-01-07T00:00:00). If salePriceStartDate and salePriceEndDate are both null, the salePrice is not active. If only salePriceEndDate is null, the salePrice is active beginning at the salePriceStartDate.
salePriceStartDate
DateTime
no
When the salePrice begins to be valid. Format this as a UTC time according to ISO-8601, without a time zone offset (for example: 2025-01-01T00:00:00). If salePriceStartDate and salePriceEndDate are both null, the salePrice is not active. If only salePriceStartDate is null, the salePrice is active until the salePriceEndDate.
webUrl
String
yes
The product landing page URL. This page must have the pixel running and fire a view item event.