At a glance
A cross-channel alert that joins AdRoll Dynamic Ads spend against the live rejection status of the product catalogue each campaign is driven by, and flags any budget flowing into a dynamic campaign whose feed has active rejections. This is the single highest-leverage card in the AdRoll manifest because Dynamic Ads are catalogue-driven by design: the creative is assembled from product records in the synced feed, so when items are rejected, no product creative renders for them, and any spend the campaign keeps pacing is wasted on whatever fallback creative remains. Feed rejections are silent, they do not pause the campaign, they just hollow it out while it keeps retargeting your warmest audiences with broken ads. This card turns a buried catalogue warning into a money figure: here is exactly how much spend is exposed to a feed that is partly broken right now.
| What it counts | The total dynamic-campaign spend over the window flowing into campaigns whose linked catalogue currently has active feed rejections (rejected products, suppressed SKUs, or a wholesale catalogue sync failure). The alert is the breach; the displayed table lists each affected campaign, its spend, and the rejecting catalogue. |
| Cost basis | CPC / CPM dominant. The exposed spend is real billed cost on a dynamic campaign whose product creative is degraded by the rejection. |
| Currency | Advertiser-account currency for the exposed-spend figure. |
| Conversion attribution | 30-day click + 1-day view default (AdRoll Pixel). Feed-rejected campaigns typically show depressed conversions because the intended product creative is not rendering. |
| Attribution window | 30-day click + 1-day view default, configurable in the AdRoll dashboard. |
| Bot / invalid traffic | Not the relevant axis; the waste is structural to the feed rejection, not to traffic quality. |
| iOS 14.5+ ATT impact on the card | Low. The card keys off feed-rejection status and spend, both observed directly, so ATT and pixel signal loss do not distort it. |
| Catalogue-feed dependency | This card is entirely about feed health. It is the most direct expression of AdRoll’s catalogue dependency in the whole manifest: spend exposed to a broken Dynamic Ads feed, named and costed. |
| Time window | 30D (rolling 30 days) for the spend total, evaluated against the current feed-rejection status. |
| Alert trigger | any spend on a dynamic campaign whose linked catalogue has active feed rejections. An illustrative rule; the breach fires whenever a dynamic campaign with active linked-feed rejections continues to accrue spend. |
| Roles | owner, marketing, operations |
Calculation
Calculated automatically by joining your AdRoll dynamic-campaign spend with your connected product-catalogue feed status. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A UK outdoor-gear retailer on Shopify runs four AdRoll Dynamic Ads campaigns off a single product catalogue synced from the store. On 04 Jun 26 a bulk catalogue re-tag added unsupported HTML into the product titles, and the AdRoll catalogue sync rejected a large batch of products. Account currency GBP. Window is the rolling 30 days.| Campaign | Linked catalogue | Rejected products | Spend in window (£) | Conv. vs prior | State |
|---|---|---|---|---|---|
| Dynamic retargeting, site visitors | Shopify catalogue | 2,210 of 3,600 | 7,400 | -39% | BREACH |
| Dynamic retargeting, cart abandoners | Shopify catalogue | 2,210 of 3,600 | 5,800 | -44% | BREACH |
| Static prospecting, brand audiences | (no catalogue) | 0 | 1,900 | flat | OK |
| Dynamic prospecting, lookalike | Shopify catalogue | 2,210 of 3,600 | 2,300 | -18% | BREACH |
- Three dynamic campaigns sharing the catalogue breached; the static prospecting campaign did not. That instantly localises the fault to the catalogue, not to any campaign’s bidding or audience. The static campaign serves fixed creative with no feed dependency, so it is unaffected. The shared dependency is the story.
- Roughly GBP 15,500 of spend is exposed to a catalogue that is 61% rejected. That is the number this card exists to surface. Buried in the AdRoll Product Catalogue status page it is just a rejected-count warning; expressed as exposed spend it becomes an urgent, costed problem an owner or marketer can act on.
- Conversions fell hardest on the retargeting campaigns. Cart-abandoner retargeting (most dependent on serving the exact products a visitor browsed) dropped 44%, while dynamic prospecting (broader product mix, less reliant on the precise rejected items) dropped only 18%. The conversion damage tracks the dependency.
- The campaigns did not stop, which is the trap. A feed rejection does not pause an AdRoll campaign. It keeps pacing against the surviving 39% of the catalogue and generic fallback creative, so spend looks normal while effectiveness has collapsed. Only a feed-aware join makes this visible.
- The fix is at the catalogue source, not in AdRoll bidding. Open the AdRoll Product Catalogue to read the rejection reason (here, unsupported HTML in the title field), correct the product data on the Shopify export, and trigger a re-sync. The rejected products re-enter dynamic eligibility within a sync cycle (typically a few hours to 24 hours) and conversions recover.
- Until the catalogue is fixed, the exposed spend keeps accruing. If a same-day fix is not possible, consider reducing budget on the worst-affected retargeting campaigns so you are not pacing full spend against a half-broken catalogue while warm audiences burn down.
- Multiple dynamic campaigns breach + they share a catalogue = catalogue-level fault, fix the feed.
- One campaign breaches + others on the same catalogue are fine = campaign-specific issue, not the feed.
- Conversion drop scales with rejection share = confirmed feed-driven effectiveness loss.
- Breach clears after a catalogue re-sync = confirmed, no campaign restructure needed.
- High exposed spend + high rejection share + a shrinking retargeting pool = reduce budget until the catalogue is fixed.
Sibling cards merchants should reference together
| Card | Why it matters next to Spend on Campaigns with Active Feed Rejections | What the combination tells you |
|---|---|---|
| Active Dynamic Ads on Out-of-Stock SKUs | The other catalogue-driven waste card. | Rejections stop product creative rendering; out-of-stock serving runs creative that cannot convert. Together they are the full feed-waste bill on Dynamic Ads. |
| Wasted-Spend Burst (retargeting pool exhaustion) | The acute burst symptom on a retargeting-first account. | A feed rejection here often coincides with a burst as the campaign hammers a shrinking pool with broken creative; both firing confirms the cause and sizes the acute bleed. |
| Retargeting ROAS Dropped Below Threshold | The efficiency-side symptom on AdRoll’s core spend. | A retargeting ROAS drop that scales with rejection share confirms the feed as the cause rather than audience fatigue. |
| Wasted Spend | The trailing-30-day waste audit. | Sustained catalogue rejections show up here as chronic wasted spend across dynamic campaigns. |
| AdRoll Pixel Tracking Broken | The other silent failure mode that suppresses conversions. | Rules out a pixel fault: if the pixel is healthy but conversions still fell on dynamic campaigns, the catalogue rejection is the more likely cause. |
| ROAS | The efficiency headline. | Catalogue rejections silently drag account ROAS; fixing the feed is often the single biggest ROAS lever on an AdRoll account. |
| Total Spend | The account-level denominator. | Sizes the exposed spend against total to judge how much budget is at risk. |
Reconciling against AdRoll
Where to look in AdRoll’s own dashboard:In the AdRoll dashboard at app.adroll.com, open Product Catalogue (under Audiences and Catalogues, depending on your account layout) to read the rejection reasons and rejected-product counts for each catalogue, then open Reporting and group by campaign to read the spend on each Dynamic Ads campaign linked to the affected catalogue.AdRoll holds both halves of this story but never puts them on the same screen: the Product Catalogue status page shows what is rejected, and Reporting shows what each campaign spent, but AdRoll does not connect “this dynamic campaign is driven by that rejecting catalogue, and here is the spend exposed”. That join is exactly what this card does. To reconcile manually, read the rejected-product list and rejection reasons from the catalogue page, identify which dynamic campaigns are linked to that catalogue, then sum their spend in Reporting; the total should match this card’s exposed-spend figure within rounding. Why our number may legitimately differ from a manual check:
| Reason | Direction | Why |
|---|---|---|
| Rejection-status timing | Moves with cadence | The breach reflects the current catalogue-rejection status; AdRoll re-evaluates products on each sync cycle, so a manual check after a re-sync may show fewer rejections. |
| Partial vs full rejection | Either direction | A campaign can depend heavily or lightly on the rejected subset; this card flags any exposure, while the conversion damage scales with dependency. |
| Time zone and ingest lag | Boundary days off | AdRoll reports spend in the account time zone with a short reporting lag; Vortex IQ uses UTC boundaries, so the latest spend can differ slightly. |
| Catalogue-to-campaign mapping | Ours captures shared feeds | Where several dynamic campaigns share one catalogue, the join attributes the rejection exposure to all of them; a manual check can miss a campaign linkage. |
| Static campaigns excluded | Ours is narrower | The card counts only dynamic, catalogue-driven campaigns; static-creative campaigns have no feed dependency and are correctly left out, so they will not appear even if they share an audience. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
shopify.product_feed_health / bigcommerce.product_feed_health / adobe_commerce.product_feed_health | The commerce-platform feed-health signal is the upstream cause; rejections here originate from product-data problems on the store export that feeds the AdRoll catalogue. | A product can be valid on the storefront yet rejected by AdRoll for platform-specific rules (unsupported title markup, missing image, price or availability mismatch), so the two views are related but not identical. |
shopify.total_revenue / bigcommerce.total_revenue | Sizes the opportunity cost: a heavily rejected catalogue both wastes ad spend and suppresses the sales those products could have driven through retargeting. | The revenue impact depends on how important the rejected products are to the assortment and to your retargeting audiences. |