Reward codes
TierWise can give members one-use discount codes. Codes are real Shopify discounts, so they work at checkout like any other code and show up under Discounts in your admin.
Setting rewards up
In Settings:
- On a tier, under Reward when a customer becomes that tier, choose Reward code and set a percentage or a fixed amount off. This is the code a customer gets for reaching it. You can choose Gift instead, see Gifts, or None.
- Under Reward codes, set the Threshold: a member gets a code every time they spend that much. It's $100 unless you change it.
- Still under Reward codes, choose for each tier what a member gets every time they spend that much while in it: a percentage, a fixed amount, or nothing.
- Choose what happens when one order earns more than one code: each code separately, or dollar codes combined into one. See One code per order.
- Choose when codes expire: at the end of the calendar year, a set number of days after they're given, or never.
- Choose the Purchase type codes work on: one-time purchase, subscription, or both.
- Choose whether to carry member progress towards the next reward into the new year. See Progress toward the next code.
The two are separate, so you can welcome someone to Gold with 20% off and then give $15 off for every $100 they spend as Gold. Either can be left off for any tier. A member who starts the year already holding Gold earns at the Gold rate from their first order.
Gifts
Reaching a tier can come with a gift in the box in place of a code. On the tier in Settings, set Reward when a customer becomes that tier to Gift. That's all: the app doesn't need to know what the gift is.
- The order that takes a customer into the tier gets a tag,
tierwise-gift-<tier name>, for exampletierwise-gift-silver. It appears on the order within seconds. - In Orders, filter by that tag and by Unfulfilled to see which orders need a gift packed. The tier is in the tag, so each tier can have a different gift.
- The tag stays on the order after it ships, as your record of which orders carried a gift. Shipped orders leave the unfulfilled list by themselves, so there's nothing to tidy up.
A tier gives a code or a gift for being reached, not both. The reward for spending while in a tier is always a code. Only orders placed after you switch the gift on get the tag, and Update all customers never adds it to old orders. A customer gets one gift per tier reached in a year.
How customers earn codes
- Moving up. One code each time an order moves a customer up into a tier, and joining the club counts. It gives that tier's "when becoming" reward. If a single order jumps several tiers, they get the code for the highest one.
- Every increment of spend. One code for every $100 (or your amount) they spend after joining. It gives the spending reward of the tier they held when they placed the order. Everything one order earns is at that tier's rate, even if the order moves them up; the next order is the first at the new rate. The count starts at the threshold they crossed to join, so whatever the joining order spent past the line already counts toward the first one. It starts again from zero each January, unless you carry progress over.
Progress toward the next code
Each member sees how much more they need to spend for their next code: a ring on their Rewards page, a line on their page in the app, and a column and a filter on Members. With Bronze at $200 and a code every $100, a member at $210 has $10 in and $90 to go.
Progress resets on January 1, with the spend that decides tiers. Turn on Carry member progress towards the next reward into the new year in Settings and it carries over instead: a member $90 toward their next code in December needs $10 in January. It applies from the January after you turn it on.
One code per order
A big order can earn several spend codes at once. A $300 order at $10 per $100 earns three. By default the customer gets three $10 codes. Set When one order earns more than one code to Combine dollar codes into one, and they get one $30 code instead.
- Only dollar codes are combined. Percent codes are always given one by one.
- Codes are combined per order. Two orders that each earn codes give two codes.
- The code for reaching a tier is never combined. It stays its own code.
- Changing this setting only affects codes given from then on.
Example
Bronze at $200 and Silver at $500. Becoming Bronze gives 10% off and becoming Silver gives 15% off. Every $100 spent as Bronze gives $5 off.
| Order | Spend this year | Codes earned |
|---|---|---|
| First order, $210 | $210 | 10% off for joining Bronze |
| Second order, $120 | $330 | $5 off for $100 spent as Bronze |
| Third order, $190 | $520 | Two $5 codes for another $200 as Bronze, and 15% off for reaching Silver |
The $10 the first order spent past the $200 line counts: the spend codes come at $300, $400 and $500, not $310, $410 and $510.
Only orders after your launch earn codes
Your program starts when you press Launch at the end of Setup. Unless you chose to start everyone from zero at setup, order history decides a customer's tier, and progress toward the next code counts from the tier line whenever it was crossed. Either way, only orders placed after Launch earn codes.
- A customer spent $200 in October and you launch in November. They're Bronze from day one, but they never get the Bronze code, because they earned it before the program existed.
- A customer spent $100 in October and $100 in November, after your launch. The November order crossed the line, so they get the tier and the code.
This is also why syncing your customers never creates codes. Launching a program should never hand out a pile of discounts for spending that already happened.
Bringing over existing rewards
Switching from another loyalty app, or from codes sent through Klaviyo? Your customers hold rewards TierWise knows nothing about. Upload them once and each appears on its customer's Rewards page, tied to them, and is marked used when they spend it. The upload is an optional step in Setup, Bring over existing rewards, and under Reward codes in Settings afterwards, once your customers are synced.
The file is a CSV with these columns: email, code, value, value type (percentage or fixed) and expiration. A preview shows how the first rows were read and how many match a customer before anything is imported.
- A code that already exists in Shopify on its own is kept and limited to that customer; its value is read from Shopify, not the file.
- A code from a Klaviyo batch (Klaviyo makes its unique codes thousands at a time under one discount) is taken out of the batch and created again on its own, same text, tied to the customer. The code in their inbox is the code on their page, and the batch keeps working for everyone else.
- A code that was already used, or has expired, is skipped and counted. So is a row whose email matches no customer the app knows, which means someone who has never ordered.
- Uploading the same file twice gives nothing twice, so a stopped import is finished by uploading again.
Imported codes never count toward tiers or progress, and no "Reward code issued" event is sent for them: the customer already has the code.
Code details
| Uses | One use, by that customer only. Always, on every plan and every setting. |
| Used on | One-time purchases, subscriptions, or both, as you set it. On a subscription the code discounts the next payment only. |
| Applies to | The whole order. |
| Expires | However you set it: the end of the calendar year (the default), a number of days after it was given, or never. Always at the end of that day in your store's timezone. |
| Looks like | SILVER-7K2M9Q: the tier name and six characters. No O, 0, I, 1, S or 5, so codes are easy to read and type. |
| Shown | On the customer's Rewards page and in the reward reminder, until used or expired. |
| Value | Fixed when issued. Changing a tier's reward later doesn't change codes already given out. |
Changing when codes expire
Change it any time in Settings. Codes already given out keep the date they had, so shortening expiry never cuts short a code a customer is holding. Only codes given from then on use the new setting.
With a day count or no expiry, a code can outlive the year it was earned in. A code given on 28 December with 30 days still works into late January, and it stays on the customer's Rewards page until it's used or runs out.
Codes and spend
A reward code reduces the order subtotal like any discount, so it reduces the spend that counts toward the next tier. A $200 order with 30% off counts as $140.
Giving a code by hand
On a customer's page in the app, Give a code hands them a tier's spend reward without an order: a goodwill gesture, a thank-you, a replacement. For a dollar reward you can change the amount, so one $20 code can stand for two $10 rewards. It shows on their Rewards page at once, fires Reward code issued like a code they earned, and is marked "Given by hand" in the app. Nothing about it depends on their orders, so a later refund never takes it back.
Campaign codes
Campaigns gives every member, or every member of one tier, a code at once: an early-bird offer, a thank-you, a season opener. Name it, pick the reward and how long the codes last, see how many members get one, try it on one customer first, then create them all. Each member gets their own single-use code on their Rewards page within minutes, and "Campaign code issued" goes to Shopify Flow and to Klaviyo so you can email it. If you use Klaviyo, the code is also on each profile as tierwise_campaign_code, so a plain campaign email can carry it with no flow. Members who already have the campaign's code are never given a second one.
Refunds
A refund lowers the customer's spend, however it was entered. If that takes them back below a line that earned a code, and the code hasn't been used, the code is switched off and leaves their Rewards page. It comes back on its own if they cross the line again. A code they already used stays used, and that line doesn't pay out a second time.
Telling customers about their codes
Every new code sends a Reward code issued event, with the code, its value, its expiry and the tier. A few days before an unused code expires, Reward code about to expire fires once, with the days left; you set how many days in Settings. Connect Klaviyo and build a flow on each, or use Shopify Flow for any other tool. See Klaviyo and Shopify Flow.