How to Set Up a Loyalty Program Like Chipotle Rewards on Shopify

Most loyalty programs treat points expiry as a way to take value back. Chipotle treats it as a reason to come back, and that single dropdown is the most interesting decision in the whole program.
Chipotle Rewards has no tiers, no multipliers and no status. Every member earns the same flat rate against the same eight rung catalogue. What it does instead is set the expiry clock against the customer's last purchase rather than against the date each point was earned, so one order a year keeps the entire balance alive. That costs real money in forfeited breakage, and Chipotle pays it deliberately, funding it by spending nothing at all on tiers.
This guide walks through setting up a loyalty program like Chipotle Rewards on your own Shopify store, using Mage. Every setting is included, so you can follow it start to finish. It takes about twenty minutes, and if you would rather not do it yourself, our team will set the whole thing up for you free of charge.
What is Chipotle Rewards?
Chipotle Rewards is Chipotle's free loyalty program. Customers earn 10 points per dollar spent, then exchange those points against a fixed catalogue of free food, from a side of tortillas at 85 points up to an entree with chips at 1,775. Joining is free and comes with a free side attached to a $5 minimum purchase. On top of the catalogue sit monthly free item drops, ad hoc challenges, a birthday reward and early access to new menu items.
If you already know it inside out, skip ahead to what you'll set up. Everything below describes Chipotle Rewards as it stands in 2026.
How Chipotle Rewards works
Three mechanics, and only two of them cost anything.
Chipotle Rewards points
Members earn 10 points per $1 on qualifying purchases. There is no variation by tier, by product or by channel. Points accrue on the amount actually paid in money, so the part of an order covered by a previous reward does not earn again.
Ten points to the dollar is a presentation decision rather than a generosity one. It is exactly the same program as 1 point per dollar with the catalogue prices divided by ten, but a $28 order that earns 280 points feels substantially more rewarding than one that earns 28.
The Rewards Exchange
Points are spent against a fixed ladder of eight items. The customer picks a rung, the reward lands in their account, and the points come out immediately.
| Points | What it buys | Approx value | Percent back |
|---|---|---|---|
| 85 | Side of tortillas | $0.50 | 5.9% |
| 350 | Chips and salsa | $2.95 | 8.4% |
| 400 | Fountain drink | $3.15 | 7.9% |
| 500 | Side of guacamole | $3.25 | 6.5% |
| 700 | Double protein chicken | $5.00 | 7.1% |
| 815 | 50% off an entree | $5.50 | 6.7% |
| 1,625 | Entree | $11.00 | 6.8% |
| 1,775 | Entree and chips | $13.95 | 7.9% |
Once a reward is in the account it expires in 60 days. Only one reward can be used per order, and rewards never combine with coupons or promo codes.
Chipotle Rewards tiers
There are none. This is worth saying plainly because almost every guide that copies Chipotle Rewards invents tiers that the source program does not have. No status, no spend thresholds, no earn multipliers anywhere in the terms. The "exclusive early access" line in the marketing is a promise made to the whole member base, not a perk that some members get and others do not.
Expiry
Points expire after 365 days of account inactivity. Not 365 days after being earned. One qualifying purchase resets the clock on the entire balance, which is why Chipotle's own FAQ answer on the subject is written as a comparison against everybody else.
Around that sit the free join gift, a monthly free item drop to the whole member base, occasional challenges and bonus offers, and a birthday reward chosen from a small set of items.
The four things that make it work
1. The ladder is flat, and it is flat because nothing else is being paid for
Every rung lands between 5.9 and 8.4 percent back, centred on about 7. There is no upward bend rewarding people who save, and no cheap rung punishing people who spend early. A point is worth roughly seven percent of a dollar wherever it is spent.
Programs with tiers cannot afford that. If your top tier earns 1.5x, your ladder has to be priced for the base customer and your best customers quietly cost you half again as much. Chipotle Rewards has one number, 7 percent, and that number is the entire cost of the program. It is the easiest loyalty budget in retail to forecast.
2. Ten points per dollar is presentation
Nothing changes if you run the same program at 1 point per dollar with a catalogue priced at 8.5, 35 and 40 points. The customer is worse off in exactly no way. But a product page reading "earn 450 points" outperforms one reading "earn 45 points" for the same reason a price ending in 99 outperforms one ending in 00.
The inflated rate earns its keep on the product page and the order confirmation, not in the ledger.
3. Inactivity expiry costs about 0.9 points of revenue, and it buys the visit
This is the decision the program is built around, so it deserves the arithmetic.
Standard expiry runs from the date points were earned. Points earned in March die the following March whether or not the customer has been shopping. On a typical program that quietly claws back something like 20 percent of everything issued, because customers under-redeem, hold balances below the first rung, and let old lots lapse while still buying.
Chipotle's rule runs from the customer's last purchase instead. An active customer never loses a point. Only the fully lapsed do, and that is a much smaller group, realistically closer to 10 percent of issued value.
Put a store behind it. A $2m shop on a 7 percent ladder issues $140,000 of reward value a year:
| Expiry rule | Breakage | Value actually redeemed | Effective cost |
|---|---|---|---|
| Date points earned | ~20% | $112,000 | 5.6% |
| Last purchase date | ~10% | $126,000 | 6.3% |
So the inactivity rule costs roughly $14,000 a year, or 0.7 points of revenue on a 7 percent program. That is what Chipotle is buying.
We would buy it too, and the reason is what the two rules are actually made of. Breakage under a date earned rule is money recovered from customers who were still shopping with you. It is a rebate you advertised and then withdrew from people who did nothing wrong, and they notice, because the balance they were saving toward a reward went down on its own. Breakage under an inactivity rule only ever comes from customers who have already gone. You lose nothing from anyone you still have, and the customer at month eleven has a concrete, honest reason to place an order.
4. The drop is priced at the cost of a rung
Chipotle drops a free item into member accounts every month. Points programs usually drop points, and a small points deposit feels like nothing.
The fix is to drop exactly the price of a catalogue rung. Drop the cost of the free sample and the only sensible thing to do with it is claim the free sample, so functionally you have dropped a free sample. Attach a short expiry to the dropped points and you have reproduced both halves of what Chipotle does: a specific free thing, and a clock.
That is the trick worth stealing from this program even if you copy nothing else.
What you'll set up
Our demo store is a skincare brand. The program is called Radiance Rewards, the catalogue keeps Chipotle's name Rewards Exchange, and the tiers are Member, Insider and Icon. Rename all of it for your own brand.
| Chipotle Rewards | What you build in Mage |
|---|---|
| 10 points per $1 | Purchase earning rule |
| Free Chips and Guac at join | Entry Reward on the base tier, free product |
| $5 minimum on the join gift | Minimum Spend on that reward |
| The eight rung exchange | Eight rewards, fixed points cost |
| 60 day reward expiry | Expiry Days on every reward |
| One reward per order | Combinations, all unchecked |
| 365 days of inactivity | Points expiry, Customer's last purchase date |
| Monthly free item drops | Points Drops, priced at one rung |
| Challenges and bonus offers | Photo Challenge, Visit a URL, Bonus Campaigns |
| Birthday reward | Birthday earning rule |
| Exclusive early access | VIP tiers and the synced customer tag |
| Points deducted on a void | Automatic refund reversal |
| Track and redeem in the app | Widget, landing page, customer accounts |
Step 1: Program currency and discount codes
Settings → Loyalty
| Field | Value |
|---|---|
| Program Currency | Points |
| Default Prefix | `RADIANCE-` |
| Loyalty Reward Prefix | `EXCHANGE-` |
| VIP Tier Reward Prefix | `ICON-` |
Chipotle Rewards is unambiguously a points program: a nominal currency with no cash equivalence, spent against a fixed catalogue. Confirm the Program Currency card reads Points before you build anything, because the alternative, store credit, is a different model with a different set of available reward types.
Every redemption mints a real Shopify discount code, and the prefixes decide what those codes look like. Prefixed codes are worth setting now rather than later, because changes only apply to codes generated afterwards. Set them in a month and your first hundred redemptions are unlabelled forever, which makes them miserable to reconcile in Shopify's discount reporting.
While you are in settings, turn on Settings → Test Mode and add your own email address. Test orders stay out of your analytics, so you can place as many as you like without polluting the numbers.
Then Loyalty Program → Program Status → Enabled.
Step 2: The earning rate
Loyalty Program → Earning Points → Purchase
Every shop ships with a Purchase rule already created, so this is an edit rather than a new rule. The Earning points card is a single sentence with two inputs in it, and you want it to read 10 for every $1 spent.
| Setting | Value |
|---|---|
| Earning points | 10 per $1 |
| Exclude discounted products from earning points | Ticked |
| Approval Time | 31 days |
| Status | Active |
Exclude discounted products from earning points is the setting to get right. Chipotle's terms are explicit that points accrue only on the amount actually paid in money, so an order already carrying a reward or a promo code does not earn on the discounted portion. Ticking the box gets you the same outcome and closes the loop where a customer redeems a reward, earns points on the discounted order, and redeems again slightly cheaper each time. Leave it unticked and that loop is open.
Approval Time is the returns holding period. Points are created pending, stay out of the redeemable balance, and only vest when the window closes. This is what implements Chipotle's line about deducting points from a voided purchase, except it prevents the problem rather than correcting it: most returns land before the points ever became spendable, so there is nothing to claw back. Thirty one days suits skincare. Match yours to your own returns window.
One practical note. Set Approval Time to 0 while you are testing so points land instantly, and put it back to 31 before you show the program to anyone. Otherwise your first test order looks like it earned nothing and you will spend twenty minutes debugging a setting that is working correctly.
Step 3: VIP tier settings
VIP Tiers → Program Settings
Chipotle Rewards has no tiers, so this step is a deliberate deviation and we will say why. You need tiers for two reasons. The join gift lives on the base tier, and it is the only place Mage will issue a reward automatically on signup. And "exclusive early access" needs somewhere to hang if it is going to mean anything more concrete than an email.
Configure the program settings before you create any tiers, because changing the entry method afterwards rotates every threshold and triggers a full recalculation across your customer base.
| Setting | Value |
|---|---|
| Entry method | Amount spent ($) |
| Progress cycle | Lifetime |
| Start date | Your install date |
Amount spent ($) rather than Points earned is the setting people get wrong, and the consequence is nasty. Points earned ties tier status to the redeemable balance, which goes down when a customer spends points. Redeem a reward, lose your status. Choose amount spent and the two balances are independent, exactly as they are at Chipotle, where redeeming has no bearing on anything.
Lifetime matches Chipotle's philosophy of never resetting anything. It also means the retention settings never appear, because there is no cycle to fall out of. The only thing that can demote a customer is refunding an order.
If you want the reasoning behind tier design in more depth, our guide to Shopify VIP tiers covers the trade offs between entry methods and cycles.
Step 4: The tiers and the join gift
VIP Tiers → Tiers
| Tier | Threshold | Point multiplier |
|---|---|---|
| `Member` | $0 | 1x, locked |
| `Insider` | $250 spent | 1x |
| `Icon` | $600 spent | 1x |
Every multiplier is 1x, which is the part that keeps this faithful. Chipotle Rewards differentiates on access, never on earn rate, and the flat 7 percent from section 1 only stays flat if you resist the temptation to bolt a 1.5x onto the top tier. Mage locks the base tier to 1x regardless. Leave the other two alone and your program costs the same percentage on every customer you have.
Then open the Member tier and find the Entry Rewards card, described as "Given automatically when a customer joins your loyalty program. Issued once per customer." Add a Free Product reward.
| Field | Value |
|---|---|
| Reward Name | `Free Cleansing Balm Mini` |
| Product | A small item, a sachet or mini |
| Enable seamless discount | Ticked |
| Points Cost | `0` |
| Minimum Spend | `5` |
| Expiry Days | `60` |
This is Chips and Guac. Minimum Spend is the "$5 min purchase required" asterisk, doing its work at checkout rather than in a terms page. Enable seamless discount adds the product to the cart and applies the discount automatically at redemption, and lets the customer pick their own variant, which is much closer to an item appearing in a Chipotle account than handing over a code and hoping.
While you are in the earning rules, open Signup and set it to 0 with the Status toggle Inactive. Chipotle gives an item at signup, not points, and running both means paying twice for the same moment. If you would rather be more generous than Chipotle, a join bonus equal to the first rung of the ladder is the cleanest lever, because it puts a new member one click from their first reward.
Step 5: The Rewards Exchange
Loyalty Program → Redeeming Points → Add Reward
Copying Chipotle's ladder means copying the ratio, not the numbers. At 10 points per dollar, the arithmetic is:
points cost = retail value x 10 / target percent back
= retail value x 143 for 7 percent backHere is our skincare ladder, every rung priced at value x 143:
| # | Reward | Retail | Points | Back | Reward type |
|---|---|---|---|---|---|
| 1 | Free sample sachet | $2 | 300 | 6.7% | Free Product |
| 2 | Free lip balm | $5 | 700 | 7.1% | Free Product |
| 3 | Free shipping | ~$6 | 850 | 7.1% | Free Shipping |
| 4 | 15% off your order | ~$7 | 1,000 | 7.0% | Discount, Percentage |
| 5 | $10 off | $10 | 1,400 | 7.1% | Discount, Set amount |
| 6 | Free travel size cleanser | $14 | 2,000 | 7.0% | Free Product |
| 7 | Free full size moisturiser | $34 | 4,800 | 7.1% | Free Product |
| 8 | Free serum and cleanser set | $55 | 7,800 | 7.1% | Free Product |
Substitute your own catalogue values and re-run the multiplier. Round to something that looks deliberate, the way Chipotle rounds to 25s and 50s. A ladder of 287 and 1,432 looks like a spreadsheet leaked.
Rung 1 is the one people want to delete for being too cheap. Keep it. It is the rung that makes a brand new member's first order feel like it achieved something, and it is the rung every drop and every birthday award will be priced against.
For each Free Product reward:
| Field | Value |
|---|---|
| Reward Name | Customer facing, keep it short |
| Product | Select, then pick eligible variants |
| Enable seamless discount | Ticked |
| Points Cost | From the table |
| Expiry Days | `60` |
Get the variant selection right first time. Once a free product reward is saved, its eligible variant list is read only, so a mistake means recreating the reward rather than editing it.
For the two Discount rewards, set Redemption type to Set amount, described in the form as "A fixed discount for a set number of points". The alternative, Flexible amount, lets customers choose how many points to spend for a proportional discount. It is a good model, it is just not this one. Chipotle's whole exchange depends on discrete rungs at known prices, and adding a slider next to it gives customers two contradictory answers to "what is a point worth".
On the percentage rung, set a Minimum subtotal. Fifteen percent is worth $7 on a $50 basket and $30 on a $200 one, so the rung that costs you 7 percent at average order value costs considerably more on your best orders. A floor caps the damage. If your basket sizes vary a lot, drop the percentage rung entirely and run two fixed amounts instead.
On the Free Shipping reward, tick Exclude shipping costs over a certain amount and set Maximum Shipping Discount Amount to something like 15. Without it, an 850 point redemption can absorb a $90 express international rate.
Step 6: Reward expiry and one reward per order
Two rules from the terms, both configured on the rewards themselves.
Set Expiry Days to 60 on every reward, including the join gift from Step 4. There is no global setting for this, so it is per reward and easy to miss one. Walk the list when you are finished and check all nine.
Note what the clock measures. It starts when the reward is redeemed, not when it was created, so a customer banking points toward rung 7 is under no pressure at all. The pressure only starts once they have converted points into a thing. That is why a 60 day reward clock and a 365 day points clock coexist without the program feeling mean.
Then, on both Discount rewards, find the Combinations card, introduced by the line "This coupon discount can be combined with", and leave all three boxes unchecked:
- Product discounts
- Order discounts
- Shipping discounts
Shopify only allows multiple discount codes on an order when they are explicitly marked combinable, so unchecking everything enforces Chipotle's one reward per order rule at checkout rather than in your terms page. This is the setting that quietly protects your margin. Leave a box ticked and a customer can stack a reward on top of your seasonal promotion, which is exactly when your loyalty cost is at its highest and your margin at its thinnest.
While you are there, leave Reactivate discount code on full refund unchecked. Chipotle's terms are unambiguous that redeemed points are gone even if the item comes back. We would keep that.
Step 7: Points expiry
Loyalty Program → Points Expiry
This is the step that makes it a Chipotle Rewards build rather than a generic one.
| Field | Value |
|---|---|
| Enable points expiry | On |
| Expiry mode | Customer's last purchase date |
| Points expire after | `365` days |
| Expiry reminder | `30` days |
| Reset Redeemable Loyalty Points Annually | No |
The mode selector offers two options, and this is the one setting in the guide that changes the character of your whole program:
- Time after points are acquired, "Points expire independently X amount of time after they were earned". The default nearly everywhere.
- Customer's last purchase date, "Every purchase resets the expiry clock for all active points". This is Chipotle.
Choose the second. Mage tracks the customer's last purchase date and re-stamps the expiry on every active lot when a qualifying order lands, which is exactly the promise Chipotle makes in its FAQ. The arithmetic for what it costs is in section 3 above, and the short version is roughly 0.7 points of revenue, paid so that no customer who is still shopping with you ever watches their balance fall on its own.
Reset Redeemable Loyalty Points Annually must be No. It is a hard calendar wipe, unrelated to the inactivity clock, and switching it on would contradict everything you just built. And Expiry reminder has to be smaller than the expiry period or the form will refuse to save. Thirty days is a good warning window, and it feeds the reminder email in Step 11.
One caution if you are changing this on an existing program rather than building fresh. Switching expiry mode re-stamps the dates on every active points lot you have. On a new store that is instant. On a shop with years of history it is a significant change to a lot of balances, so understand what it will do before you save.
Step 8: Monthly reward drops
Loyalty Program → Points Drops → Create drop
| Field | Value |
|---|---|
| Drop name | `March Free Sample Drop` |
| Points amount | `300` |
| Who receives this drop? | All loyalty members |
| Expires after | `30` Days |
| Status | Scheduled |
| Date and Time | 1st of the month |
The Points amount is the whole trick, and it is section 4 in practice. Three hundred points is the exact price of rung 1, so the drop does not read as a small deposit, it reads as a free sample sachet. Rotate which rung you fund and the drop changes character every month without you touching anything else:
| Month | Points | Reads to the customer as |
|---|---|---|
| January | 300 | Free sample sachet |
| February | 700 | Free lip balm |
| March | 850 | Free shipping |
| April | 300 | Free sample sachet |
The 30 day expiry on the dropped points supplies the urgency, which is the other half of what Chipotle's monthly item does. Create the next three drops now and add more as they clear.
Cadence is where we would depart from the source. Chipotle is a weekly purchase, so a monthly drop with a 30 day clock always lands inside a purchase cycle. Skincare replenishes every 6 to 10 weeks, so a monthly drop with a 30 day clock will mostly expire unclaimed, and customers learn quickly to ignore things that keep expiring. Either keep it monthly and extend the expiry to 60 days, or move to every 6 weeks with a 45 day clock. Match the drop to your own repeat purchase interval, not to Chipotle's.
Announce every drop. A drop nobody hears about is a drop nobody redeems, so schedule a Klaviyo campaign or a wallet pass push for the morning it lands. After it fires, Points Drops → [drop] → Results shows points dropped, redeemed and expired, and the redeemed versus expired split is the number that tells you whether your cadence is right.
Step 9: Bonuses, challenges and the birthday reward
Chipotle calls this bucket Extras. Three separate features cover it, and each one takes about two minutes.
The birthday reward
Earning Points → Add Earning Rule → Birthday
| Field | Value |
|---|---|
| Earning rule name | `Birthday` |
| Amount earned | `700` |
| Date of Birth Eligibility Period | `30` days |
| Status | Active |
Chipotle lets members choose their birthday reward from a small set of items. Award exactly the price of a ladder rung and the exchange becomes the picker. At 700 points a customer can take rung 1, take rung 2, or top it up toward rung 3, so the choice is genuinely theirs. Set it to 850 and all three cheap rungs are in reach.
This is the second reason not to delete rung 1. A ladder that starts at 1,400 makes the birthday award a partial payment rather than a gift, and a partial payment is not a birthday present.
Date of Birth Eligibility Period stops somebody joining and setting their birthday to tomorrow. Thirty days is standard. There is more on structuring these in our guide to Shopify birthday rewards.
A challenge
Earning Points → Add Earning Rule → Photo Challenge
| Field | Value |
|---|---|
| Title | `Show us your shelfie` |
| Instructions | `Upload a photo of your shelf with one of our products visible` |
| Amount earned | `500` |
| How often can a customer earn this? | One off, or repeatable |
| Email me when submissions are waiting for review | Ticked |
Submissions land in Loyalty Program → Photo Challenge Submissions and points mint on approval only, never on upload. Rejected photos never count, so customers can try again. This is the closest thing in the program to Chipotle's challenges, and unlike everything else in this guide it gives you content rather than costing you margin.
A bonus points event
Loyalty Program → Bonus Campaigns → Create
Two campaign types are offered. Multiplier multiplies the points from your earning rules, and Tiered awards flat bonus points when an order crosses a spend threshold. A double points weekend is the simplest version:
| Field | Value |
|---|---|
| Campaign Name | `Double Points Weekend` |
| Campaign type | Multiplier |
| Multiplier on the Purchase rule | `2` |
| Start date / End date | Friday to Sunday |
| Status | Scheduled |
A 2x weekend on a 7 percent ladder is a 14 percent weekend. That is fine for three days, and it is not fine as a habit, so schedule these with dates rather than leaving one running.
If you want a bonus tied to a specific launch instead, Add Earning Rule → Visit a URL awards points for visiting a page, which turns a new product page into an earning event. Point it at your newest launch and you have Chipotle's "if there's a way to earn more points, you'll see it".
Step 10: Early access
The Icon tier from Step 4 is what makes early access concrete.
Mage syncs a Shopify customer tag for every customer above the base tier, formatted as Mage VIP Tier: Icon. That tag is the gating primitive, and there are three good things to do with it:
- Build a Shopify customer segment and send the launch email to it first
- Gate a hidden collection or an early access page in your theme on the tag
- Create a Shopify automatic discount restricted to that segment for a launch window
Two operational notes. Gate on the presence of the Icon or Insider tag, never on the absence of one, because base tier customers carry no tag at all. And tags are not instant: saving tier settings schedules a recalculation, then a tag sync, so give it fifteen minutes before you go looking. Do not click save five times.
Each tier also has a Tier-Specific Rewards card, which is an exchange item only that tier can see and redeem. An exclusive product on Icon is the most direct way to make the word exclusive mean something inside the app.
Step 11: Customer surfaces, emails and the wallet pass
Chipotle's whole redemption story is the app. You have four surfaces that together do the same job, and the first two are the ones that matter.
Account Sidebar is the floating storefront widget: always present, shows the balance, lists what is redeemable, one click to claim. Configure the button under Rewards Widget → Launcher. This is your primary surface, so spend your time here.
Loyalty Pages → Storefront → Landing Page is the direct equivalent of the Chipotle Rewards marketing page you are copying, and the blocks map onto it almost one to one:
| Chipotle page section | Landing page block |
|---|---|
| Where free food adds up | How It Works |
| Earn even faster | Ways to Earn |
| Rewards Exchange grid | Ways to Redeem |
| Exclusive early access | VIP Tiers |
| Points and history | Your Rewards, Activity Overview |
| The FAQ | FAQ |
Do not add the Flexible Redemption block. It is a points slider, and it contradicts the fixed ladder for the same reason flexible rewards did in Step 5.
Then add Loyalty Pages → Storefront → Points Calculator, which shows "earn 450 points with this product" on the product page. With a 10 points per dollar rate the numbers look large, which is the entire reason to run 10 rather than 1. It is the cheapest way to make the rate feel generous.
Loyalty Pages → Shopify Customer Accounts → Rewards Center gives you the full page experience inside customer accounts, and Order Status Points Earned puts the number on the thank you page. If your store is on Shopify Plus, Loyalty Pages → Checkout → Checkout Rewards Wallet lets customers apply rewards during checkout, which is the single highest converting place redemption can happen.
For emails, five templates cover the program:
| Category | Template | Role |
|---|---|---|
| Points & Rewards | Points Earned | Post purchase confirmation |
| Points & Rewards | Reward Redeemed | Delivers the code |
| Points & Rewards | Birthday Points Earned | The birthday moment |
| Expiry | Points Expiry Soon | The 30 day warning |
| VIP Tiers | Tier Upgrade | The early access moment |
Set the shared look once under Email Templates → Settings → Design rather than styling each one. Two copy notes: Points Expiry Soon is what makes the 365 day inactivity model actually work, because a customer eleven months quiet needs telling, and Reward Redeemed should state the 60 day reward clock, because that clock starts the moment they open it.
Finally, Wallet Pass → Builder designs the Apple and Google pass, and Wallet Pass → Campaigns covers three automatic pushes: reward_available when a balance crosses a reward's cost, points_expiring, and reward_expiring. With a ladder starting at 300 points, most customers trigger reward_available on their first order, which is the strongest single notification in this program.
You don't have to copy all of it
Four takeaways, in rough order of how much they are worth.
If you take one thing, take the expiry mode. Setting expiry against the customer's last purchase rather than the date each point was earned costs roughly 0.7 points of revenue and turns your expiry policy from a thing that annoys loyal customers into a reason for quiet ones to come back. It is one dropdown.
If you sell high frequency, copy the flat ladder. Consistent percent back across every rung gives nobody a reason to hoard, which means small frequent redemptions, a predictable liability and a program you can forecast in one line of arithmetic. If you sell rarely and need customers to save toward something, bend the ladder upward instead and accept the outstanding balance.
If your repeat rate is the problem, copy the drops. Points dropped at the exact price of a rung, with a short clock, are the cheapest re-engagement mechanic in this guide, and they are the only part of the program that reaches customers who are not currently shopping.
If you have a wide catalogue, skip the tiers. Chipotle Rewards works without them. Every customer costs the same flat percentage, there are no retention rules to reason about, and nothing to explain. Add tiers when you have a concrete benefit to put behind them, not because every other program has them.
We'll set it up for you, free
If you would rather not do any of this yourself, our team will build the whole program for you free of charge, tuned to your catalogue and your margins rather than copied off this page. That includes the ladder priced against your real product values, the expiry and drop cadence matched to your repeat purchase interval, and branding applied across the widget, the sidebar and your loyalty pages.
If you are already running a loyalty program elsewhere, we migrate it free of charge too. Balances, tiers and history are preserved, so your customers keep everything they have earned. We migrate from Smile.io, LoyaltyLion, Yotpo, Rivo, Stamped, Joy and Bubblehouse.
Have a look at what else Mage does for a Shopify loyalty program, or talk to our team and we will get it built.
Frequently asked questions
What is Chipotle Rewards? Chipotle Rewards is Chipotle's free loyalty program, where members earn 10 points per dollar spent and exchange those points against a fixed catalogue of free food ranging from 85 points for a side of tortillas to 1,775 points for an entree with chips. It is free to join, comes with a free side attached to a $5 minimum purchase, and adds monthly free item drops, occasional challenges, a birthday reward and early access to new menu items. There are no tiers and no earn multipliers.
How does Chipotle Rewards work? Members earn 10 points for every dollar spent on qualifying purchases, then choose a reward from the eight rung Rewards Exchange. Points come out of the balance as soon as the reward is added to the account, and the reward itself expires 60 days later if unused. Only one reward can be applied per order, and rewards never combine with coupons or promo codes. Points expire after 365 days without a qualifying purchase, and any purchase resets that clock on the whole balance.
How many points do you need for a free entree at Chipotle? An entree costs 1,625 points, which at 10 points per dollar means $162.50 of spending. An entree with chips is 1,775. The cheapest rung on the ladder is a side of tortillas at 85 points, and the best value rung is chips and salsa at 350 points for roughly $2.95, which works out at 8.4 percent back against a program average of about 7.
Do Chipotle Rewards points expire? Yes, but only through inactivity. Points expire after 365 days with no qualifying purchase, and a single qualifying purchase resets the clock on the entire balance rather than on individual points. That makes it very different from the usual rule, where points die a fixed period after being earned whether or not the customer is still shopping. In this guide it is one dropdown, Customer's last purchase date, set to 365 days in Step 7.
Does Chipotle Rewards have tiers? No. There is no status, no spend threshold and no earn multiplier anywhere in Chipotle Rewards. Every member earns the same 10 points per dollar against the same catalogue, and the "exclusive early access" line in the marketing is a promise made to the whole member base rather than a perk that some members get. This guide adds optional tiers in Step 4 because they give the join gift somewhere to live and make early access concrete, but every multiplier stays at 1x so the economics stay flat.
What are the benefits of a loyalty program like Chipotle Rewards? The main benefit is that it costs a single predictable percentage. With no tiers and no multipliers, every customer earns the same rate, so the whole program budgets in one line: roughly 7 percent of member revenue, less breakage. It is also unusually easy to explain, which matters more than it sounds, because a program a customer can describe to a friend in one sentence gets described to friends.
How much does a 7 percent ladder actually cost? Less than 7 percent, because not everything issued gets redeemed. On a $2m store a 7 percent ladder issues about $140,000 of reward value a year, and with inactivity based expiry roughly 10 percent of that is never claimed, so the real cost lands nearer 6.3 percent. Switch to expiry from the date points were earned and breakage roughly doubles, which takes the cost to about 5.6 percent and saves around $14,000, at the price of taking value back from customers who are still shopping with you.
Should points expire on the date they were earned, or on the customer's last purchase? We would use the last purchase date, and the reason is who pays for each rule. Expiry from the date points were earned recovers value from everybody, including your best customers, who watch a balance they were saving fall on its own. It reliably doubles your breakage, which is real money, but it is money taken from people who did nothing wrong and it makes the program feel like a trick. Expiry from the last purchase date only ever takes from customers who have already gone, costs roughly 0.7 points of revenue against the alternative, and gives every quiet customer a concrete reason to place one more order. If your margins are thin enough that 0.7 points decides it, shorten the window to 180 days rather than changing the rule.
How do I set up a loyalty program like Chipotle Rewards on Shopify? Every part of the structure in this guide can be set up in Mage: the 10 points per dollar earn rate, the eight rung fixed exchange priced at a consistent percent back, the automatic join gift with a minimum purchase attached, 60 day reward expiry, one reward per order enforced at checkout, 365 day inactivity based points expiry, monthly points drops priced at the cost of a rung, the birthday reward, photo challenges, bonus point campaigns and early access by customer tag. This guide covers each step with the exact settings to use.
How long does it take to set up? About twenty minutes if you follow this guide, with the eight rung ladder taking most of it. If you would rather it was done for you, our team sets it up free of charge, including your branding.
What happens to points when a customer returns something? Points earned on that order are removed automatically, and partial refunds reverse points proportionally. In practice most returns land before the points have even vested, because the Purchase rule holds new points pending for 31 days, so nothing visible happens at all. Redeemed rewards are treated the way Chipotle treats them: the points are gone and the discount code is not handed back, which is the Reactivate discount code on full refund setting left unchecked in Step 6.
Can I switch from my current loyalty app without losing customer points? Yes. We migrate balances, tiers and history from other loyalty platforms free of charge, so your customers keep everything they have earned.
Mage is not affiliated with, endorsed by, or sponsored by Chipotle. Chipotle Rewards is a trademark of Chipotle Mexican Grill, Inc. This guide references the program for the purpose of comparison and education.






