Constraints
A constraint is the minimum performance a campaign must reach to receive budget. The objective says what to maximize; the constraint says who qualifies for the money. One constraint per group, and it applies to every member.
A campaign that stays below the number receives nothing, and its budget goes to the campaigns that stay above it.
The options
| Constraint | Sets | Reads as |
|---|---|---|
| None | No guardrail | Every campaign can receive budget, whatever its performance |
| Platform ROAS | A floor | "Never below 5× platform-reported ROAS" |
| Contribution ROAS | A floor | "Never below 2× on revenue after fees and COGS" |
| Profit-adjusted ROAS | A floor | "Never below 0.3× True ROAS" |
| ACOS | A ceiling | "Never above 20% of sales spent on ads" |
| Profit margin | A floor | "Never below 15% margin" |
ACOS and profit margin are shares, so their values sit between 0 and 1. The ROAS variants are multiples above 0.
What the metrics mean
ACOS — advertising cost of sale. Ad spend ÷ ad revenue, as a percentage. It's ROAS upside down: 20% ACOS is the same as 5× ROAS. Sellers reach for it because it reads like a budget rule — spend at most 20 satang of every sales baht on ads. It says nothing about profit, because it never looks at fees or COGS.
Platform ROAS. What the platform reports: ad revenue ÷ ad spend. Easy to compare against Seller Centre, but it counts GMV as if you kept all of it. A 4× platform ROAS is a loss at a 20% margin.
Contribution ROAS. Revenue after platform fees, COGS, and shipping, divided by ad spend. It answers what did this campaign contribute before its own ad cost? Break-even is 1×.
Profit-adjusted ROAS (PA-ROAS). The same as True ROAS: net profit — after ad spend — divided by ad spend. Because the spend is already subtracted, break-even is 0, not 1. At 0.3× you keep 30 satang of profit per baht of ad spend.
Profit margin. Contribution profit as a share of revenue. Use it when you think in margin rather than in multiples.
Which one to use
- Profit margin or PA-ROAS if COGS is on file. They're the only two that fence actual profit.
- Contribution ROAS when you want a fee-aware floor but prefer a multiple.
- ACOS or Platform ROAS when you're matching a target you already agreed elsewhere, or when COGS coverage is thin.
How it reaches the platform
DataGlass converts your constraint into the target ROAS it writes on each manual campaign, using that campaign's expected margin. A margin-style constraint on a thin-margin product therefore demands a much higher platform target ROAS than on a fat-margin one — which is the point.
When it goes wrong
- Too tight and the day is unsolvable. The run reports Infeasible and nothing is pushed. Loosen the value or raise the group's budget.
- Too tight and nobody qualifies. The allocation panel says "{n} of {total} campaigns get nothing under this policy." That is the constraint working; it is only a problem if you meant to fund them.
- A brand-new campaign cannot be judged. Until it has history its constraint readiness reads not evaluable, and it is funded from cold start instead of being cut.