With a healthy catalogue, the question becomes how to organise the campaigns so the money goes to the products that leave a margin and to the queries that convert. Shopping has no keywords: structure and priorities are the only way to steer. This lesson is the architecture.
The three architectures
| Architecture | How it works | When |
|---|---|---|
| Standard Shopping (with priorities) | Campaigns by product with product groups and their own bids; search terms visible; negatives | Maximum control, uneven margins, catalogues with a long tail, accounts with management time available |
| PMax with a feed | PMax buys Shopping + everything else with signals and listing groups | Volume, little time, a homogeneous catalogue; the split is invisible (Advanced M1) |
| Hybrid (the most used) | PMax for most of the catalogue + standard Shopping for brand, top sellers or the long tail with priority; or a standard brand Shopping campaign kept outside PMax | When you want volume AND control over brand, margins and terms |
The rule of coexistence: if a product sits in both PMax and standard Shopping in the same account, PMax wins the internal auction (except for queries where the Shopping campaign has priority… which does not apply: PMax takes precedence). For the standard campaign to serve, take those products out of PMax (listing groups) or accept that the standard one only picks up what PMax does not cover.
Priorities: the mechanic that separates queries
Standard Shopping allows high/medium/low priority per campaign. When the same product sits in several campaigns, the one with the highest priority that has a bid and a budget is the one that serves; the bid only matters between campaigns of equal priority. With cascading negatives you get the impossible: bidding differently by type of query.
The classic three-tier structure:
HIGH priority → "Generic" (low bid) negatives: product and brand terms
MEDIUM priority → "Product" (medium bid) negatives: brand terms
LOW priority → "Brand" (high bid) no negatives
The flow: a generic query ("running trainers") enters HIGH (low bid: we do not want to pay much for the vague stuff). "nike pegasus 41" is negativised in HIGH → it drops to MEDIUM (medium bid). "nike pegasus 41 your shop" is negativised in HIGH and MEDIUM → it drops to LOW (brand, high bid). Same feed, three bids depending on intent. Under Smart Bidding the "bid" is each campaign's tROAS (generic on a high tROAS, product on a medium one, brand… it varies depending on cannibalisation).
These days this scheme is used mainly outside PMax, or in the standard half of a hybrid setup; with PMax, the separation is done with listing groups + brand exclusion.
Partitions: product groups
Inside a campaign, product groups divide the catalogue so you can bid and read separately. The axes:
product_type(your taxonomy): the natural partition by category.- Brand: when you sell several (different margins and different competition).
custom_label_N: margin, performance, price, seasonality, newness, stock — the partition that connects to the business.- Item ID: star products with their own bid/group.
- Channel/condition: new vs used, local vs online.
The rules:
- Partition down to the level where bids genuinely differ and there is data; subdividing further creates groups with no volume.
- The "Everything else" group in each subdivision picks up whatever is not covered: keep an eye on it (or exclude it) — it is where new products with no label slip through.
- A product only serves in one group per campaign (the most specific one).
- Under Smart Bidding (tROAS) the partition is there to read and exclude more than to bid; manual bids per group only make sense under manual CPC or enhanced CPC.
Campaigns by business objective
- Top sellers / high margin (custom label performance=top or margin=high): protected budget, tROAS set by margin.
- Long tail (products with few impressions): their own campaign with a lower tROAS or a capped "maximize clicks" to give them impressions and data — a product with no history never gets into PMax's game.
- New arrivals (newness label, 30-60 days): protected learning.
- Clearance / overstock (stock=high or sale label): low tROAS, empty the shelves.
- Brand (queries carrying your brand): kept separate to measure incrementality and avoid overpaying.
- Seasonal (season label): switched on and off with scheduling.
ROAS by margin: the golden rule is a different tROAS per campaign
according to margin (see the Intermediate Shopping module): at a 50%
margin the break-even ROAS is 2; at a 20% margin, 5. A single campaign
on a tROAS of 4 kills your high-margin products (they could bid more)
and loses money on the low-margin ones. Margin custom labels are what
make the partition possible; cost_of_goods_sold lets you see the real
margin in Merchant Center.
Per-product bidding
Under manual/enhanced CPC, you bid per group right down to item ID. Under Smart Bidding, per-product control is indirect: campaigns/tROAS per product group via labels, exclusions for products that spend without selling, budget per campaign. Modern "per-product bidding" is moving the product from one label to another (and therefore from one campaign to another) according to its performance — a process that can be automated (Shopping Ninja recalculates performance and margin per product and proposes exclusions and label changes).
The four mistakes that sink Shopping
- One campaign, one group, the whole catalogue on a single tROAS: high-margin and low-margin products bid the same; the top sellers take everything and the tail never learns.
- PMax and standard overlapping with no exclusions: the standard one does not serve and people conclude it "does not work".
- No negatives and no priorities: you pay a brand CPC for generic queries.
- Structure with no labels: you cannot separate margin, newness or stock — everything is "category", which is not a business criterion.
💡 Ninja trick: the structure that ages best in real accounts is the hybrid by performance: PMax with the general catalogue (without the brand), standard Shopping on HIGH priority for the long tail with no data (low tROAS or maximize clicks on a small budget) so new products can build up some history, and when a product proves it sells you change its label and it jumps into PMax. It is a product "incubator" — and the labels get moved from a spreadsheet, not by hand.
What to remember
- Three architectures: standard (control), PMax with a feed (volume), hybrid (the usual answer). PMax wins the internal auction: separate the catalogues with listing groups.
- Priorities + cascading negatives = bidding differently by type of query (generic / product / brand).
- Partition by product_type, brand, custom labels, item ID as far as the data allows; keep an eye on "Everything else".
- tROAS by margin (margin labels +
cost_of_goods_sold); campaigns for top sellers, long tail/incubator, new arrivals, clearance, brand. - Moving products between labels is modern per-product bidding — and it can be automated.