Discounts
Reward shoppers with magic discounts that apply themselves at checkout, or static codes that auto-apply the moment someone subscribes.
Formtoro can reward shoppers for completing a form. There are two ways to do it, and the difference matters — so it's worth understanding both before you pick one.
Magic vs. static discounts
| Magic discount | Static code | |
|---|---|---|
| What the shopper does | Nothing — it just works | Sees the code in the form; it's also applied for them |
| When it applies | Automatically at checkout | Auto-applied to the cart as soon as they subscribe |
| The reward | Granted per customer — nothing to leak or share | One shared Shopify code, visible to everyone |
| Where it lives | Form settings → Discount (no visible element needed) | A discount display element placed in the form |
| Backed by | A saved reward from your Discounts page | A discount code you create and manage in Shopify |
Magic discount (recommended)
A magic discount is granted to the shopper the moment your form captures their first accepted email or phone number. There's no code to copy and nothing to remember:
- The shopper submits their email or phone.
- Formtoro grants that customer access to the reward on a secure Shopify customer record (creating the customer if they're new).
- At checkout, Shopify recognizes the customer — because they're logged in or entered the same email or phone — and applies the discount automatically. Where possible, the reward shows up as early as the cart page.
Because access is granted per customer, the reward can't leak on a coupon site, and you control exactly one redemption per customer if you want to.
To set one up, open Form settings → Discount in the builder and pick one of your saved rewards under Magic discount. If the list is empty, create one on the Discounts page first.
The discount the buyer sees in their cart is labeled Sign Up Discount by default — set a custom Reward message on the reward (up to 24 characters) to change it.
Static code
A static code is a discount code you already manage in Shopify (e.g.
WELCOME10), shown inside the form on a discount display element. Add the
element from the block picker, then pick the code in the inspector — the
Static code customers will see field suggests your store's active Shopify
codes as you type.
Static codes are friendlier than they used to be: as soon as the shopper subscribes, Formtoro auto-applies the code to their cart — they don't have to copy and paste anything, though they still can (the copy button is optional). See the fields reference for the element's display options.
A static code is still one shared code: it's visible to everyone who completes the form, and it only works if the matching discount exists and is active in Shopify. The builder warns you when it isn't — see issue flags below.
Which should you use? Prefer a magic discount for signup rewards — it's per-customer, unshareable, and needs no Shopify code to keep in sync. Use a static code when you want a code shoppers can see, save, or share.
The Discounts page
The Discounts page is your reward library. Each reward is defined once and can be attached to many forms. At the top, a status panel confirms the Formtoro discount function is installed on your store, that your active rewards are synced to Shopify, and how many grants were issued in the last day and week. Each row shows the reward's value, its status (active or archived, plus a Not synced warning if it hasn't reached Shopify), and how many forms use it.
Reward types
When you create a reward, pick a Reward type:
| Reward type | What the customer gets |
|---|---|
| Percentage / fixed amount off | e.g. 10% off, or $5 off, eligible products in the cart |
| Buy X Get Y | Buy N qualifying items, get up to M items discounted or free |
| Free shipping | 100% off their delivery options |
| Shipping discount | Free, a percentage off, an amount off, or a flat rate on shipping |
| Product + shipping | One reward granting both — e.g. "10% off and free shipping" |
Product rewards
For percentage and fixed-amount rewards, you also choose What gets discounted:
- Every eligible item in the cart — the default.
- One unit of the most expensive item or one unit of the least expensive item — the reward is pinned to exactly one unit, compared by per-unit price. It never spreads to other items and never grows when the customer buys more. Example: with a $200 jacket and two $50 tees in the cart, a 50% reward on the most expensive item takes $100 off the jacket and nothing off the tees.
An Applies to section limits the reward to specific products, collections, or variants; single-item targeting only compares items that pass that filter.
Shipping discounts
The Shipping discount type covers four rewards:
- Free shipping — 100% off eligible delivery options.
- Percentage off shipping — each eligible option discounted by a percent.
- Amount off shipping — a fixed amount off each option, never below free.
- Flat-rate shipping — the customer pays exactly the rate you set (e.g. $4.95); options already cheaper are left alone. A flat rate of $0 is free shipping.
Three restrictions can narrow it, and they all apply together:
- Excluded shipping rates — delivery options with these titles are never discounted (matched exactly, ignoring case — e.g. add "Express" so an overnight upgrade doesn't become a giveaway).
- Countries — restrict the reward to specific destination countries.
- Maximum rate — only discount rates at or below a cost you set.
If the restrictions leave no eligible option, the customer simply sees their normal shipping rates — never a partial or misleading discount.
Product + shipping combines a product benefit with a shipping benefit in a single reward — one grant unlocks both, and each applies independently at checkout.
Limits, expiration, and stacking
- Limit to one redemption per customer — a customer can hold only one active grant for the reward.
- Grant window (days) — each customer's grant expires this many days after it's issued. Leave blank for no per-customer expiry.
- Expiration date — the whole reward stops applying after this date. Leave blank and it remains active indefinitely.
- Combines with other Shopify discounts — by default a reward stacks with product and shipping discounts but not with other order discounts. Three checkboxes let you change that.
Checkout rules
The Rules section adds optional checkout-time conditions on top of the grant — the customer must hold a grant and satisfy the rules. Conditions can reference the customer (number of orders, total spent, tags, first order) and the cart (subtotal, item count, specific products, ship-to country, currency), combined with AND/OR logic.
Test before you rely on it
Every reward has a Testing and diagnostics panel. Simulate a checkout — customer recognized or not, order history, cart contents, delivery options and their costs — and run it against your configuration to see exactly whether the discount would apply, which rule matched, and why not if it didn't. If a reward shows Not synced, the panel's Sync to Shopify button re-provisions it and reports what failed.
Attaching a discount to a form
- When creating a form — the create-form wizard has a discount step where you pick a static code or a magic discount before the form is generated.
- In the builder — open Form settings → Discount for the magic discount, or place a discount display element for a static code.
As always, changes take effect when you Save version with the version set live — a form that's Draft or Paused grants nothing.
What the builder checks for you
The issues panel flags discount problems before shoppers see them, including: a magic discount pointing at an archived reward, a magic discount on a form that captures no email or phone (so it could never be granted), a static code that doesn't match any active discount in your Shopify store, an empty discount display element, and a form that sets up both a magic discount and a static code — which usually means customers get two discounts that stack unexpectedly. Most flags come with a one-click fix or a jump straight to the offending element.
Archiving
Archive reward (in the reward's danger zone) is a soft delete. If the reward is still used by published forms, Formtoro warns you first: those forms stop granting new rewards until you attach a different one and save a new version. Grants already issued to customers are unaffected.
Next steps
- Building forms — where the Discount settings and issues panel live.
- Fields reference — the discount display element's options.
- Analytics & submissions — see how discounts affect revenue and attribution.
- Klaviyo integration — subscriber profiles carry the granted discount, so your flows can reference it.