To set target ROAS by product line, work out each line's margin, convert it to a break-even ROAS, and set a target above that for each group of products. One account-wide number misprices everything that does not match the average margin. It overspends on thin-margin items and holds back the high-margin ones that could carry more spend.
Here is how to do it, with a worked example you can copy into a spreadsheet tomorrow.
Why one account-wide ROAS target misprices your catalog
A single target ROAS is a statement that every dollar of revenue in the account is worth the same to you. It almost never is.
Say your catalog has accessories, core products and bulky items. They sell through the same feed and the same campaigns, but they leave very different amounts of money behind after product cost, shipping and fees. A 3.0 ROAS means something very different on each.
The platform does not know this. It optimizes to the number you give it. If the number is wrong for a product, the bidding is wrong for that product, every auction, every day.
Two things go wrong at once:
- Thin-margin products get too much spend. They hit the account target on paper and lose money in practice.
- High-margin products get too little. They could profitably run at a lower ROAS, but the shared target tells the system to skip auctions it should be winning.
The second problem is the quiet one. Nobody sees a loss. They see a product that "does not scale" and conclude it has hit a ceiling. Often the ceiling is the target.
Start with margin, not with the platform's ROAS
You need one number per product line before you touch a campaign: contribution margin. That is the share of revenue left after product cost, shipping, payment fees and returns, but before ad spend.
Get this from the client or the finance side, not from the ad platform. If you run paid media for clients, ask for it by product line or by category. If the answer is a single blended margin, push for at least a split into high, medium and low.
From margin, two formulas do most of the work:
- Break-even ROAS = 1 ÷ margin
- Target ROAS = 1 ÷ (margin − profit you want to keep per dollar of revenue)
Break-even is the floor. Any ROAS below it loses money on the first sale. The target sits above it and reflects what you actually want out of the channel.
A worked example (illustrative numbers)
Say a store has three product lines. These numbers are round and made up to show the mechanics. Use your own.
| Product line | Margin | Break-even ROAS | Profit kept (share of revenue) | Target ROAS |
|---|---|---|---|---|
| Accessories | 60% | 1.67 | 10% | 2.0 |
| Core products | 40% | 2.5 | 10% | 3.3 |
| Bulky items | 30% | 3.3 | 10% | 5.0 |
Now picture a single account-wide target of 3.0.
- On accessories, 3.0 is far above what the line needs. The system holds back on auctions that would have made money at 2.0.
- On core products, 3.0 is close to right, a little loose.
- On bulky items, 3.0 is below the 3.3 break-even. Every sale at that ROAS loses money, and the system is happy to keep buying them.
The blended account ROAS might look healthy while one line bleeds and another is starved. This is the core argument for setting target ROAS by product line.
How to group products by margin
You do not need a target for every SKU. You need a handful of groups, and the groups should follow margin, not product category names.
- Pull margin by product. A feed export plus a cost column is enough.
- Sort and band. Three bands is usually plenty: high, medium, low. Add a fourth only if a real cluster sits outside the others.
- Label in the feed. Use a custom label so each product carries its band. This is what lets you split campaigns or product groups cleanly.
- Check for mixed bands inside a category. A category called "Shoes" can hold a 55% margin item and a 25% one. Label by margin, not by category.
- Keep the groups stable. If products jump between bands every week, the targets never get a chance to settle.
Structure options
How you apply the groups depends on how the account is built:
- Separate campaigns per band. The cleanest option. Each campaign gets its own target ROAS and its own budget, and results are easy to read.
- Product groups or asset groups per band inside one campaign. Workable, but the system still shares one target across the campaign, so you lose the point.
- One campaign with a blended target. This is where most accounts start. It is fine for a catalog with similar margins and costly for one without.
If you have to choose, separate campaigns per margin band is the setup that makes the targets mean what you want them to mean.
Protect the products that bring in new customers
Margin is not the only thing that should move a target. Some products are the reason people find the store at all.
An entry product often has a thin first-order margin and a customer who comes back for higher-margin items. Judged on a single order, it looks like a poor performer. Judged on what the customer does next, it can be the best thing in the catalog.
If you know a line works this way, give it its own group and a looser target than its margin alone would suggest. Write down why. The reasoning matters, because six weeks later someone will see a low ROAS and tighten the target without remembering the point.
Do the same in the other direction. A high-margin product that mostly sells to people who were already coming back does not need the aggressive spend a strong margin would suggest.
The rule: margin sets the floor, strategy sets how far above or below the margin-based number you go. Keep both visible.
What starving a best seller looks like
Watch for these signs after any target change:
- Impressions and impression share drop on a product that used to carry the account.
- Spend on that group falls while the target stays untouched.
- Reported ROAS rises as volume falls.
- The group sits under budget day after day with no obvious cause.
Reported ROAS going up is not good news if revenue went down with it. If the account is above target and under budget on a profitable line, the target is probably too high for that line.
Raise and lower targets in small steps
Once the groups exist, you will want to adjust. Move carefully.
- Change one group at a time. If you change three targets together, you cannot tell which one did what.
- Move in small steps. For example, nudge a target by 10% rather than rewriting it. Large jumps can reset the system's learning and produce swings that are hard to read.
- Wait for enough conversions. A few days of low volume tell you almost nothing. Read the result when there is enough data to call it.
- Keep a log. Date, old target, new target, reason. This is the record that makes the next decision faster.
- Limit daily movement against your winners. If a product is carrying the account, do not let one adjustment throw it off in a day.
Where this fits with CPA targets
The same thinking applies if the account runs on cost per acquisition instead of ROAS. Lead-gen accounts and mixed accounts often need different targets for different campaigns. The related post on setting different CPA targets inside one account covers that side of it.
For ecommerce, ROAS is usually the right unit because order values differ. For lead gen, CPA usually is. Many accounts end up with both: ROAS on the shopping side, CPA elsewhere.
How Ads Arsenal handles targets
Ads Arsenal is paid-media software for agencies and in-house media buyers, and it is built around the idea that one target does not fit every campaign.
You set targets the way you actually run the account. There is one for the account as a fallback, then a CPA or ROAS per campaign where it matters. You can also write rules for groups of campaigns, such as judging all TikTok campaigns on link cost per click. The account-level target is the fallback. Campaign-level targets override it.
You also write down, in plain English, how you run and what the system must not touch. For example, "we keep it on cost cap," or a list of campaigns and settings that are off limits. It reads every account through that description.
When it finds something worth changing, it adds it to an Insights queue with the reasoning and the numbers behind it. Nothing changes in the account until someone approves it. If you dismiss a recommendation and say why in a sentence, it keeps that as a rule for the account, and you can take it back later. Approved changes are written to the account, checked a few minutes later to confirm they landed, and tracked to see whether they worked. Any change can be rolled back with one click.
It also caps how far it will move against your winners in a day. The default is 20%, and you can adjust it. That cap matters for exactly the situation described above: protecting the product lines that carry the account.
See Ads Arsenal for agencies for how this works across client accounts.
Frequently asked questions
How do you calculate a target ROAS?
Start with contribution margin: the share of revenue left after product cost, shipping and fees, before ad spend. Break-even ROAS is 1 divided by that margin. Then decide how much profit you want to keep per dollar of revenue, subtract it from the margin, and divide 1 by the result.
Should every product have the same ROAS target?
No, not if margins differ. A product with a 60% margin can profitably run at a much lower ROAS than a product with a 30% margin. One shared target overspends on the thin-margin items and under-spends on the rest.
What happens if target ROAS is set too high?
The platform gets pickier about which auctions to enter, so spend and volume drop. Your best sellers are often the first to lose impressions. Revenue falls even though the reported ROAS looks great.
How do margins change the ROAS target?
Higher margin means a lower break-even ROAS and more room to bid. Lower margin means you need more revenue per ad dollar just to cover costs. Break-even ROAS is 1 divided by margin, so a 50% margin breaks even at 2.0 and a 25% margin breaks even at 4.0.
How often should ROAS targets be reviewed?
Review them when margins, pricing, shipping costs or promotions change, and on a regular schedule even when nothing seems to have moved. Make changes in small steps and give each one enough conversions to read before you judge it. Seasonal peaks and sale periods usually deserve their own check.
What Ads Arsenal does for this today
Ads Arsenal runs Google, Meta and TikTok from one login. You set an account target as a fallback, per-campaign CPA or ROAS where it matters, and rules for groups of campaigns. It reads the accounts all day, ranks what to change in an Insights queue with the reasoning and numbers, and writes nothing until you approve it. Read-only is fine to start.
It is in a free design-partner beta for agencies and in-house teams running real spend on Google, Meta and TikTok. If you want to try setting a target ROAS by product line with a tool that respects how you run, here is the way in: Become a design partner.