# Dynamic Product Ads on Shopify: Setup, Strategy and Mistakes > How dynamic product ads work for Shopify stores: the catalog, pixel and ID matching they need, how to segment product sets, and the setup mistakes that break them. Updated 2026-10-12 Canonical: https://awesomestoreapps.com/learn/dynamic-product-ads-shopify Dynamic product ads (Meta now calls them Advantage+ catalog ads) automatically show each shopper the products from your catalog they viewed, added to cart or are likely to want. On Shopify they need three things working together: a product catalog in Meta Commerce Manager, a pixel and Conversions API that send product events, and product IDs that match exactly between the two. Once those line up, you segment the catalog into product sets and run separate campaigns for retargeting and prospecting. ## What dynamic product ads actually are A normal Facebook or Instagram ad shows creative you picked. A dynamic product ad is a template: Meta fills it with products from your catalog (image, title, price) and picks which products to show each person based on their behavior on your store and across Meta. Meta renamed "dynamic ads" to **Advantage+ catalog ads** a few years ago. You'll still see "DPA" everywhere in agency talk and older guides. In Ads Manager, you get them by choosing the Sales objective and turning on the catalog option at the campaign or ad set level. There are two main uses: - **Retargeting.** Someone viewed a linen shirt in size M and left. Over the next days they see that shirt, maybe alongside similar shirts, in their feed. - **Prospecting (broad audiences).** Meta shows catalog products to people who never visited your store but behave like your buyers. This is where most of the scale comes from for stores past a few hundred orders a month. Google has a close equivalent (dynamic remarketing in Shopping and Performance Max campaigns, fed from Merchant Center). The principles below apply there too, but this guide focuses on Meta, where most Shopify merchants start. ## The three pieces that must work together Dynamic ads break quietly. The campaign runs, spends money and shows products, but it shows the wrong ones or can't retarget at all. Nearly always one of these three is off. ### 1. A clean product catalog The catalog is the list of products Meta can show. You get products into it in one of two ways: - **Shopify's Facebook & Instagram channel** (the Meta app in Shopify) syncs products directly into a catalog it creates. - **A data feed**: a feed URL (XML, CSV or TSV) that you add as a scheduled data source in Commerce Manager under Catalog > Data sources. Meta fetches it daily or hourly, whichever you set. Either works. Merchants often switch to a feed when they need more control: excluding certain collections, sending sale prices properly, adding custom labels, using different images, or running separate catalogs per country. Each item needs at minimum an ID, title, description, availability, condition, price, link and image link. Brand is strongly recommended too. For ads, quality matters well beyond the minimum: a title like "Shirt" or an image with a watermark both get shown, just badly. ### 2. Pixel and Conversions API sending product events Retargeting depends on Meta knowing which product each person looked at. The pixel (browser) and Conversions API (server) send standard events with a `content_ids` parameter: | Event | Fires when | Used for | | --- | --- | --- | | ViewContent | Product page viewed | "Viewed but didn't add to cart" retargeting | | AddToCart | Item added to cart | Cart abandonment ads | | InitiateCheckout | Checkout started | Checkout abandonment | | Purchase | Order completed | Excluding buyers, optimization, cross-sell | On Shopify, the Facebook & Instagram channel installs the pixel and Conversions API for you. Set customer data sharing to Maximum in the channel's settings if your privacy setup allows it, as that sends server-side events and improves match rates now that browser tracking is less reliable. Then connect the pixel to the catalog. In Commerce Manager, go to your catalog's Settings > Event data sources and link the pixel. Skip this and Meta can't tie events to products, whatever else you've done. ### 3. Matching product IDs This is the one that catches most stores. The `content_ids` your pixel sends must match the `id` (or retailer ID) of items in your catalog, character for character. Shopify's own channel sends IDs in a format like `shopify_US_1234567890_9876543210` (country, product ID, variant ID). If your catalog comes from somewhere else and uses plain variant IDs (`9876543210`) or SKUs (`LS-M-WHT`), nothing matches. Ads still run, but retargeting audiences come up empty and Meta falls back to generic product picks. To check: in Commerce Manager, open your catalog and go to **Events**. Meta shows the match rate for each event type, and it should be close to 100%. Events Manager's Diagnostics tab also flags "content IDs not matching catalog" issues. If match rates are low, change one side to match the other. Usually it's easier to change the catalog's ID format than the pixel. ## Planning your campaign structure Once the plumbing works, structure decides whether dynamic ads make money. A setup that works well for most Shopify stores: ### Campaign 1: Retargeting Use separate ad sets (or one Advantage+ setup with clear exclusions) for: - **Viewed or added to cart in the last 14 days, not purchased.** Your highest-intent audience. Most stores see their best ROAS here. - **Viewed in the last 15-30 days, not purchased.** Lower intent, lower bid or budget. - **Purchased in the last 30-180 days.** Cross-sell or upsell with a different product set, for example accessories for people who bought a main product. Meta allows a retention window of up to 180 days. Match the window to your buying cycle. A $25 phone case is decided in a day or two. A $1,400 sofa might take three weeks of browsing. ### Campaign 2: Broad prospecting with the catalog Use a broad audience (country, age range, little else) and let Meta pick products. This depends heavily on how much conversion data you have. As a rough guide, Meta's learning phase needs around 50 optimization events per ad set per week. A store doing 20 orders a week will struggle to exit learning with Purchase optimization across many ad sets, so consolidate into fewer ad sets. ### Product sets: the real lever A product set is a filtered slice of your catalog (Catalog > Sets in Commerce Manager). You filter on fields like brand, product type, price, availability, custom labels or other attributes. Each ad set can use a different product set. Useful sets for a typical store: - **Bestsellers.** Your top 20-50 products by revenue. Great for prospecting, because new people convert better on proven products. - **High margin.** Products above a margin threshold, so you can bid harder on them. - **On sale.** Items with a sale price, for promo periods. - **By category.** Women's / men's / kids', or furniture / decor / lighting, so the ad copy can match. - **Exclude low-value items.** A $4 sticker getting retargeted at $1.50 CPC loses money on every click. Product sets only work as well as the data you filter on. Margin and bestseller status aren't standard Shopify fields, so you need to send them in the catalog, usually in `custom_label_0` to `custom_label_4`. Use tags or metafields in Shopify as the source, then map them into the feed. ## Creative that suits catalog ads The catalog provides the images, so your product photography *is* your ad creative. - **Use square images (1:1) for feed placements.** Meta recommends at least 500×500 px, and 1080×1080 looks clearly better. Tall portrait product photos (2:3, common in fashion) get cropped awkwardly in carousels. - **Lifestyle beats packshots for prospecting, packshots work for retargeting.** Someone who viewed the product recognizes the white-background shot. A cold audience scrolls past it. Some stores send a lifestyle image as the main catalog image for exactly this reason. - **No text, borders or promotional overlays baked into images.** They can trigger policy issues and look cluttered. Use Meta's built-in catalog creative options instead (frames, price and discount overlays), which you can turn on in the ad setup. - **Write templated primary text.** Ad copy can include dynamic fields like `{{product.name}}` and `{{product.price}}`. Keep it simple: "Still thinking about the {{product.name}}? Free returns within 30 days." - **Turn on "Show products in carousel" and dynamic formats** so Meta can test single image, carousel and collection layouts. ## Mistakes that waste budget ### Advertising sold-out products If your catalog marks sold-out items as in stock, Meta shows them, people click and land on a "Sold out" page. Make sure availability is accurate and updates often. Meta won't serve items marked out of stock in catalog ads, so sending them as `out of stock` is fine. You can also leave them out of the catalog entirely. For stores with fast-moving stock (drops, limited runs), set the data source to fetch hourly rather than daily if it's a feed. ### Two catalogs, one pixel A common Shopify mess: the Facebook channel created one catalog, a feed app or agency created another, and the pixel is linked to the wrong one (or both, with different IDs). Pick one catalog for ads, link the pixel to it, and point your campaigns at it. Delete or disconnect the leftovers. ### Wrong prices or currencies If your catalog shows $49 but the product page shows €52 because a Shopify Markets visitor gets local pricing, Meta may flag a price mismatch and shoppers lose trust. Run a separate catalog feed (or a country override feed) per market where prices differ, rather than one feed in your base currency for everyone. ### Not excluding recent buyers Someone who just bought the $180 boots doesn't need to see the same boots for two weeks. Exclude purchasers from the past 7-30 days in retargeting ad sets, or switch them to a cross-sell product set. ### Product sets that are too small A product set with six products gives Meta almost nothing to work with in prospecting. Keep prospecting sets to dozens of products at minimum. Tiny sets work for retargeting, where the shopper already chose the product. ### Ignoring catalog diagnostics Commerce Manager's Issues tab lists rejected items, missing fields, image problems and policy flags. A product rejected for an image issue silently drops out of ads. Check it weekly, and after any big catalog change. ### Changing campaigns too often Each significant edit (budget swings over roughly 20%, new product sets, audience changes) can reset learning. Give a new setup 7 days before judging it, unless it's clearly broken. ## A setup checklist 1. Catalog created in Commerce Manager, populated by the Shopify channel or a scheduled feed. 2. Catalog Issues tab clear of major errors. Titles, images and prices look right in a sample of items. 3. Pixel and Conversions API active, with ViewContent, AddToCart and Purchase firing with `content_ids`. 4. Pixel linked to the catalog under Event data sources. 5. Event match rate in the catalog's Events tab close to 100%. 6. Product sets built for bestsellers, categories and anything you want to exclude. 7. Retargeting campaign with recent-buyer exclusions, plus a broad prospecting campaign. 8. Creative options (frames, carousel, dynamic formats) set, with templated copy. ## How Awesome Feeds helps Awesome Feeds turns your Shopify catalog into a feed URL you add as a scheduled data source in Commerce Manager, and keeps it updated automatically. For dynamic ads, the parts that matter most are the product ID format setting, which lets the feed's IDs match what your pixel sends (including Shopify's Facebook channel "Global" format), plus internal labels with collection IDs for building product sets and five custom labels for margin or bestseller segments. See [matching product IDs to the Facebook pixel](https://awesomestoreapps.com/docs/product-ids-and-facebook-pixel-matching.md) and [creating product sets from Shopify collections](https://awesomestoreapps.com/docs/create-meta-product-sets-from-shopify-collections.md). It only builds the feed. You still create the campaigns in Ads Manager and set up the pixel yourself. ## FAQ ### Are dynamic product ads the same as Advantage+ catalog ads? Yes. Meta renamed dynamic ads to Advantage+ catalog ads, and the core mechanism is the same: ads filled automatically from your product catalog based on shopper behavior. You set them up by choosing the Sales objective in Ads Manager and using your catalog in the campaign. ### Do I need the Shopify Facebook & Instagram channel to run dynamic ads? Not for the catalog, which you can fill with a scheduled product feed instead. Most Shopify stores still use the channel for the pixel and Conversions API because it sets both up with little effort. If you mix the channel's pixel with a feed-based catalog, make sure the product IDs match. ### Why are my dynamic ads showing random products instead of what people viewed? Usually the content_ids sent by your pixel don't match the IDs in your catalog, or the pixel isn't linked to the catalog. Check the match rate in the catalog's Events tab in Commerce Manager. Low match rates mean Meta can't connect browsing behavior to specific products. ### How much budget do dynamic product ads need? There's no fixed minimum, but Meta's learning phase works best with around 50 optimization events per ad set per week. Smaller stores should use fewer ad sets and may optimize for add-to-cart first. Retargeting usually needs far less budget than broad prospecting, since the audience is smaller. ### Should sold-out products stay in my Facebook catalog? They can, as long as they're marked out of stock, because Meta won't show out-of-stock items in catalog ads. Keeping them means they come back into ads automatically once restocked. The real problem is sold-out items wrongly marked in stock, which sends paid clicks to dead pages. ## Related docs - [Product ID & pixel matching](https://awesomestoreapps.com/docs/product-ids-and-facebook-pixel-matching.md) - [Product Sets from Collections](https://awesomestoreapps.com/docs/create-meta-product-sets-from-shopify-collections.md) - [Add Your Feed in Commerce Manager](https://awesomestoreapps.com/docs/add-feed-to-meta-commerce-manager.md)