The feed's five custom labels are the bridge between what the business knows and what the campaign can do. Used manually ("high_margin" set once) they are useful; calculated every day from data (real margin, turnover, recent performance) they turn the catalogue into a living structure that moves each product to the campaign and the target it deserves. This lesson is that system.
The five labels: what goes in each one
| Label | Source | Values | Use |
|---|---|---|---|
custom_label_0 · Margin |
ERP / margin table | high · medium · low | Campaigns and targets by margin |
custom_label_1 · Performance |
Google Ads (30 days) | star · profitable · neutral · loss · no_data | Moving between campaigns; excluding losers |
custom_label_2 · Turnover / stock |
Shop | low_stock · normal · excess | Excess → push; low → slow down |
custom_label_3 · Seasonality / newness |
Calendar / date added | new · in_season · off_season · evergreen | Seasonal campaigns; new products with a loose target |
custom_label_4 · Test |
Marketing | A · B · title version | Experiments (module 6 of Intermediate) |
They are calculated with Merchant rules (lesson 4 of Intermediate) when the data is in the feed, or with a supplemental feed generated daily by a script when the data comes from Google Ads or the ERP.
The margin × performance matrix
| Star | Profitable | Neutral | Loss | No data | |
|---|---|---|---|---|---|
| High margin | PMax/Shopping with a loose target, priority budget | High-margin campaign, normal target | High-margin campaign, watch it | Review listing/title; demanding target | New products campaign (loose target, capped budget) |
| Medium margin | Medium campaign, loose target | Medium campaign | Medium campaign | Very demanding target or exclude | New products |
| Low margin | Low campaign, demanding target (it sells itself) | Low campaign | Exclude | Exclude | Exclude until there is data from other channels |
Each cell is a combination of campaign (by margin), ROAS target (by cell) and exclusion. The calculated labels make each product fall into its own cell by itself.
Automatic movement rules
A script (or feed rules + campaign listing groups by label) moves products between campaigns according to the performance label:
- Evaluation with a window (30 days) and a minimum volume (clicks) before changing state; no data = "no_data", not "loss".
- Hysteresis: going from "neutral" to "star" needs two consecutive windows; dropping from "profitable" to "loss" does too. That stops a product bouncing between campaigns every week (and resetting the learning period).
- A cap on movements per day (say 5% of the catalogue): if it goes higher, something has changed in the data (broken measurement, wrong price), not in the products.
- A log per product: date, from → to, reason.
Seasonality and new products
- New products (added less than 30 days ago): their own campaign with a loose target and a capped budget, to accumulate data; after a month they drop into the matrix.
- Season: label by calendar (coats: October-February); off season, a demanding target or exclusion; before the peak, an early entry (module 9 of Intermediate).
- Excess stock: push it with a loose target even if the margin is only medium (the cost of not selling beats the cost of a lower ROAS); low stock: slow it down.
What a living catalogue gives you
- Budget that flows towards what is profitable on its own, without touching campaigns.
- Loss-making products that exclude themselves (with a checkbox if you prefer).
- New products with an automatic grace period.
- Seasons prepared without having to remember.
- A single campaign structure (by margin) that never needs rebuilding.
Mistakes
- Labels calculated with no window and no minimum volume: noise.
- No hysteresis: products changing campaign every week.
- Margin not updated when prices or costs change.
- A performance label based on revenue ROAS instead of POAS.
- Moving the whole catalogue on the day the system goes live: do it in steps.
💡 Ninja trick: Shopping Ninja calculates each product's state (star, profitable, neutral, loss, no data) using real sales and margin, and exports it as a label in its supplemental sheet: the performance label, ready for Merchant rules and campaign listing groups. With hysteresis and a daily cap as standard. This lesson's matrix is its Dashboard seen from the campaign side.
What you should remember
- Five labels with different sources: margin, performance, stock, seasonality, test; recalculated daily.
- The margin × performance matrix → campaign, target, exclusion.
- Automatic movement with a window, volume, hysteresis, a daily cap and a log.
- New products get grace; seasons start early; excess stock gets pushed.