What the builder checks
The rules the campaign builder enforces before you publish, what it blocks outright, what it warns about, and the handful of things to watch for that it does not catch yet.
The builder validates your campaign as you type and again before you publish. This page lists what it blocks (you cannot publish until it is fixed), what it warns about (you can proceed, but read the note), and what it does not catch yet (so you can check it yourself).
What is blocked
| Rule | Why |
|---|---|
| A campaign name is required | Any length is fine, even one character; it is internal and seeds the Shopify discount title |
| Two tiers cannot share a threshold | Duplicate thresholds are rejected, flagged the moment you type them |
| Percentage or amount tiers cannot be 0 | A zero-value tier would be a no-op discount |
| Set price cannot use Whole cart counting | This combination is rejected; use "Across matching products" or narrower |
| Buy X Get Y "Specific items" needs a filled pool | You must add at least one get variant before publishing |
| Targeting picks are required when the scope needs them | A products, variants, collections, or tags scope needs at least one pick |
| The end must be after the start | An end date at or before the start is rejected, and a campaign whose end has already passed cannot be published |
What warns you
- Targeting drift: when auto-join is off and a new product starts matching your collection or tag, the dashboard flags it (the product still gets the discount).
- The live example and receipt in the builder rail update as you type, so you can catch a set basis or repeat setting that produces a surprising result before you publish.
- Stacking conflicts between your campaigns are detected and surfaced, including when you would exceed the store-wide slot limit.
What to watch for yourself
A few things are not caught yet. None of them will break your store, but they are worth a manual check.
Set price is a price for the set, not for the cart
A set price is what the tier’s minimum quantity of units costs together. "Minimum quantity 3, set price $25" means any 3 eligible units come to $25, not $25 each and not "everything in the cart for $25". If you want a per-unit price, set the minimum quantity to 1. It also needs a complete set: a cart with only 2 of those units gets nothing.
Include and exclude conflicts
If the same product is in both the include and exclude lists, the exclude wins and the item is left out. The builder does not warn on the overlap yet.
Buy X Get Y "Specific items" needs its pool
This one is blocked at publish, but it is the most common reason a Buy X Get Y campaign will not save: make sure the get pool has at least one variant.
Money thresholds and multiple currencies
Spend thresholds are measured in your store currency, without conversion
A spend threshold and any fixed money amount are set in your store’s currency. At checkout, the amount arrives in the shopper’s currency and is compared against your number without converting between currencies. So a "spend $100" goal is measured as "spend 100" in whatever currency the shopper pays in, which is not equivalent across currencies. Percentage rewards are always correct in any currency. If you sell in several currencies, prefer percentage-based goals until full multi-currency handling ships.
Each blocking rule, with an example
The same rules as the table at the top of this page, each with a setup that trips it and the change that clears it.
| Rule | A setup that is blocked | What clears it |
|---|---|---|
| A campaign name is required | The name field left empty | Any name at all, even a single character. It is internal and seeds the Shopify discount title. |
| Two tiers cannot share a threshold | Tier 1 at minimum quantity 3 and tier 2 also at minimum quantity 3 | Move one rung, for example 3 and 6, so it is unambiguous which reward wins. |
| Percentage or amount tiers cannot be 0 | A tier set to 0 percent off | Any value above 0. A zero-value tier would discount nothing. |
| Set price cannot use Whole cart counting | A Set price reward with counting set to Whole cart | Switch counting to Across matching products, Per product, or Per variant. A set needs a defined pool of units to price. |
| Buy X Get Y "Specific items" needs a filled pool | Get selection set to Specific items with no variants added | Add at least one variant to the get pool, or switch to Same item or Cheapest eligible. |
| Targeting picks are required when the scope needs them | Scope set to Collections with no collection chosen | Pick at least one collection, or change the scope to one that needs no picks. |
| The end must be after the start | A schedule starting 1 March and ending 1 March, or a campaign whose end date has already passed | Move the end date past the start, and past today if you are publishing now. |