How to Set Up a Loyalty Program Like the H&M Membership on Shopify

H&M gives members one point per dollar and a $5 reward at 250 points. That is 2% back, which is the lowest headline rate of any major retail loyalty program. Nobody joins for the points.
They join for free shipping over $50, and that benefit costs H&M several times what the points do. The program is built the wrong way round on purpose, and it is the most interesting thing about it.
Once you see it, the whole structure makes sense: a deliberately cheap earn rate, two tiers that never change how fast you earn, and every dollar of real budget pushed into a threshold benefit that raises the basket instead of discounting it.
This guide walks through setting up a loyalty program like the H&M Membership 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 the H&M loyalty program?
The H&M loyalty program is a free digital membership. Customers earn one point for every dollar they spend, online or in store, and every 250 points turns into a $5 reward. Earning also moves them from Core to Plus, the second of two membership levels, which unlocks earlier access to drops and sales, member only offers and giveaways.
Membership is free, it is managed through the H&M app or the website, and it carries a members-only free shipping threshold that applies from the first order.
If you already know it, skip ahead to what you'll set up. Everything below describes the H&M loyalty program in 2026.
How the H&M loyalty program works
There is one currency, one redemption rung and two levels. That is the entire structure, and the simplicity is a feature rather than an omission. A customer can hold the whole program in their head: a dollar is a point, 250 points is five dollars, 500 points is Plus.
Everything else in the program is a benefit rather than a mechanic.
H&M loyalty program points
Members earn 1 point for every $1 spent, at both levels, in store and online. There is no faster rate for Plus members and no published bonus for signing up.
| Action | Points |
|---|---|
| Make a purchase, online | 1 per $1 |
| Make a purchase, in store | 1 per $1 |
Points can take up to 24 hours to appear, and they are earned on almost everything a customer buys.
The H&M loyalty discount code, and how redemption works
Members receive a $5 reward for every 250 points earned. H&M calls the redeemed voucher a Bonus, and it behaves like a standard discount code: applied at checkout online, or shown in store from the app.
Two rules attached to it are worth reading closely, because both are deliberate.
The value is spread evenly across each item in the purchase rather than applied to the order total. Return one item from a five item order and you are refunded what you actually paid for that item, not its full price.
And an H&M loyalty discount code is not reissued after a return or an exchange. Once it is spent, it is spent. That single rule is what stops a customer redeeming, returning, and walking away with both the money and the voucher.
H&M loyalty program tiers: Core and Plus
There are two levels, decided by points earned within the qualification period rather than by dollars spent in a calendar year:
| Level | Unlocks at | Earn rate |
|---|---|---|
| Core | Free to join | 1 point per $1 |
| Plus | 500 points | 1 point per $1 |
Read that right hand column again. It does not change.
The qualification window is the membership year, which starts on the day the customer joins rather than on 1 January. Points are valid for twelve months from that date. Plus status, once earned, is held well beyond the year it was earned in, so a customer who qualifies in August is not immediately at risk of losing it in January.
At 1 point per $1, the 500 point threshold is $500 of spending in a year. On a fast fashion basket that is a realistic eight or nine orders, which is a sensible place to put a top level for a brand people buy from monthly.
H&M loyalty program benefits in 2026
The benefit list is where the program spends its money, and it splits cleanly in two.
Core, from the moment you join: free shipping over $50, exclusive member prices on selected days, partner promotions, invitations to store events, early access to shopping events, and Klarna pay now or pay later.
Plus, on top of all of that: early access to drops and sales, exclusive experiences, special Plus member offers and discounts, and premium giveaways.
Notice what is not on either list. Neither level earns faster. Every single line is access, service or a targeted offer. The H&M loyalty program benefits in 2026 are built almost entirely out of things that cost nothing until somebody uses them.
The H&M loyalty app and earning in store
Members earn in store by scanning their member ID from the H&M loyalty app at the till. The app also holds digital receipts, the points balance, current offers and the member QR code used for Klarna's pay later option.
There is a second earning route that has nothing to do with spending. Bring a bag of unwanted clothes into a store for reuse or recycling and you get a 15% off coupon for it. It is the only non purchase earning action in the program, and for a clothing brand it is a good one.
The three things that make the H&M loyalty scheme work
The H&M loyalty scheme reads as a short list of perks over a thin points program. Underneath it there are three decisions, and the first one is the one everybody gets wrong.
1. Two percent is the cheapest headline in retail, and that is the point
The only number that means anything in a points program is percent back, and it is worth committing the formula to memory:
percent back = (reward value x points per dollar) / points costA $5 reward costing 250 points, at one point per dollar, is (5 x 1) / 250, or 2.0% back. For comparison, most retail ladders run somewhere between 4% and 7%.
So H&M pays less than half what a typical program pays, and it still feels generous. Two things buy that.
The first is frequency. At a $60 basket a customer clears 250 points in a little over four orders, so a regular shopper collects a reward every few months. A program that pays 5% but takes a year to pay anything feels stingier than one that pays 2% four times.
The second is that the 2% is not where the budget went. Which brings us to the part that actually costs money.
Pressure test this against your own frequency before copying it. On a store where people buy twice a year at $150, 250 points is ten months away and the program is invisible. The fix is a cheaper first rung, not a bigger reward. Our guide to how many points per dollar to offer works through picking the number for your own catalogue.
2. The free shipping threshold is the actual program
Free shipping over $50 is the first thing on the Core benefit list, and it is the most expensive line in the whole program.
Assume shipping costs you $6 and your average order is $65:
| Annual behaviour | Points value at 2% | Shipping given away | Total cost | Effective rate |
|---|---|---|---|---|
| 2 orders, $130 | $2.60 | $12 | $14.60 | 11.2% |
| 4 orders, $260 | $5.20 | $24 | $29.20 | 11.2% |
| 8 orders, $520 | $10.40 | $48 | $58.40 | 11.2% |
The shipping benefit is roughly 9% of revenue and the points ladder is 2%. The program people describe as "2% back" is really an 11% program with the budget pointed somewhere unusual.
And that is the argument. A discount pays out on money the customer already decided to spend. A shipping threshold changes the decision. A customer at $44 who adds a $16 top to clear $50 has handed you an extra order line and paid for their own shipping. The same budget spent on the earn rate would have bought you nothing but a smaller margin on the order they were placing anyway.
This makes the threshold the single most important number in your build. Set it below your average order and you are funding a permanent 9% discount and calling it a loyalty benefit. Set it just above your average order and it pays for itself in basket size. H&M's $50 against a fast fashion basket sits low, which is a customer acquisition choice rather than a margin one. Yours does not have to.
3. Neither level changes how fast you earn
Plenty of tiered programs make your best customers earn faster: 1x, then 1.25x, then 1.5x. Every time somebody climbs, they cost you more on every order they ever place again.
H&M does not do that. Core and Plus both earn one point per dollar. What climbing gets you is access: earlier drops, member only offers, giveaways. Access is free until somebody uses it, and the people using it have already spent to get there.
So your cost stays flat as customers get better:
| Level | Annual spend | Points earned | Ladder cost at 2% |
|---|---|---|---|
| Core | $200 | 200 | $4 |
| Core | $400 | 400 | $8 |
| Plus | $600 | 600 | $12 |
| Plus | $1,200 | 1,200 | $24 |
Every customer costs 2% of what they spend, whatever level they are on, plus whatever your shipping threshold gives away.
What this combination costs you
Roughly 2% on the ladder plus your shipping give away, which on a $65 basket and a $50 threshold lands near 11% and on an $80 threshold lands far lower and raises your average order at the same time.
This is the decision. If you sell a category people buy from often at a modest basket size, copy this shape: a cheap flat earn rate, one memorable redemption rung, tiers that gate access rather than multiply earning, and your real budget in a shipping threshold set just above your average order. If your customers buy rarely at a high basket, invert it: put the money in the ladder, because a shipping threshold they clear on every order regardless is a discount rather than an incentive.
What you'll set up
We will build this on a clothing brand, a womenswear and menswear label selling tops, dresses, denim, knitwear and accessories, with a program called Wardrobe Club. The levels keep H&M's names, Core and Plus, so the mapping stays obvious. Rename them to suit your brand.
| H&M feature | What you'll set up in Mage |
|---|---|
| 1 point per $1, online and in store | Purchase earning rule |
| Points appear within 24 hours | Approval time on the purchase rule |
| Core and Plus | VIP Tiers, based on points earned |
| The membership year | Rolling year tier progress |
| Plus status held beyond the year earned | Protect tier status |
| $5 reward for every 250 points | A fixed discount reward |
| Vouchers not reissued after a return | Refund reactivation left off |
| Free shipping over $50 | A free shipping reward on the Core tier |
| Points valid for twelve months | Points expiry, from the date points are earned |
| 15% off for recycling old clothes | A photo challenge rule plus a percentage reward |
| Earning in store from the app | Shopify POS tile plus a submit receipt rule |
| Special Plus member offers | Tier specific rewards on Plus |
| Premium giveaways for Plus | Points drops targeted at the Plus tier |
| Early access to drops and sales | A Shopify customer segment on the VIP tag |
| Exclusive member prices | A Shopify automatic discount for account holders |
| Bonus points events | A multiplier bonus campaign |
Step 1: Set your earning rate
Go to Loyalty → Earning Points and open the Purchase rule. It already exists, so there is nothing to create.
| Field | Value |
|---|---|
| Earning rule name | Earn 1 point for every $1 |
| Earning points | 1 for every $1 spent |
| Exclude discounted products from earning points | Unchecked |
| Approval Time | 1 |
| Status | Active |
That is the H&M base rate exactly, and two useful things happen without any configuration.
Points are calculated on your merchandise subtotal, so tax and shipping never earn. That subtotal is also net of discounts, which means an order paid for partly with a redeemed voucher only earns on the money that actually changed hands.
Leave the exclusion box unchecked. It is the setting people tick by instinct and regret later. Ticked, any line carrying a discount stops earning entirely, so every customer who checks out with a voucher, a markdown or a member price earns nothing at all. On a clothing store where something is always on sale that is most of your orders, and it penalises the customers engaging with the program most.
Approval Time 1 matches H&M's own line about points taking up to 24 hours to appear. Approval time holds points as pending, so an order cancelled the same day drops the points before the customer ever sees a spendable number.
There is an argument for setting it higher. Apparel has the highest return rate of any category, and a longer hold means a fast return cancels points the customer never got attached to. We would still use 1, because watching a balance move is what makes a program feel real, and refunds reverse points automatically anyway.
Step 2: Set your membership year rules
Go to VIP Tiers → Program Settings. Configure all of this before you switch VIP tiers on, because Entry Method and Tier Progress Expiry lock once the program is running.
| Field | Value |
|---|---|
| Entry Method | Points earned |
| Tier Progress Expiry | Rolling Year |
| Use a shared rolling year window | Unchecked |
| Never downgrade the highest tier | Unchecked |
| Protect tier status | Checked |
| Program start date | Today |
Entry Method is points earned, not amount spent. This is what makes it an H&M program. H&M states its threshold in points, and points earned counts everything: purchases, receipts, the recycling reward, any bonus campaign. Choose amount spent here and every non purchase rule you build in Steps 6 and 7 stops contributing to status, which quietly removes the reason those rules exist.
Rolling Year with the shared window unchecked is the membership year. Each customer gets their own twelve months, counted from when they join, exactly as H&M describes it. Tick the shared window box and everybody is measured against the same fixed dates instead, so somebody who joins in November is judged on six weeks of shopping.
It also handles demotion on its own. Only the last twelve months of earning count, so a customer who stops shopping drifts back down without you scheduling anything.
Protect tier status is the setting people miss. Its help text under Rolling Year reads: "After earning a tier, customers keep it for 12 months, regardless of their activity." That is H&M's rule about holding Plus beyond the year you earned it in. Without it, a customer who qualifies for Plus and then has a quiet quarter can lose it while still shopping with you, which is the fastest way to make a tier feel arbitrary.
Never downgrade the highest tier stays unchecked. The two protections stack, and with it on Plus would become permanent. Tick it only if that is what you actually want.
There is more on the mechanics in our guide to Shopify VIP tiers.
Step 3: Create Core and Plus
In VIP Tiers → Your VIP Tiers, add two.
| Tier Name | Threshold | Point multiplier |
|---|---|---|
| Core | 0 | 1 |
| Plus | 500 | 1 |
Both multipliers stay at 1. That is not an oversight, it is the model. If you set 1.25 on Plus here you have built a different program, and your cost per customer starts rising with loyalty rather than staying flat. Come back and change it later if you decide you want that, but decide it deliberately.
Two constraints the form enforces, both of which trip people up. Only the base tier can have a threshold of 0, and the base tier is locked to a 1x multiplier. Core is exactly a zero threshold tier, so neither gets in your way here.
The threshold is in points earned over the rolling year, so at one point per dollar it reads as $500 of annual spending. Pressure test that against your own order data. On a store with a $65 average order, $500 is eight orders a year, a realistic top level for a clothing brand people buy from monthly. On a store selling $250 coats it is two orders and Plus fills up immediately, which makes it worthless as a status signal. The quickest sense check: take your median customer's annual spend, multiply by your points rate, and make sure Plus sits just above it.
Give each level a colour and a badge so customers can see where they are, then switch VIP Tiers on. Mage sorts your existing customers into the right level and tags them in Shopify, which you will use in Steps 8 and 9.
One thing worth knowing, because you get it for free: redeeming points never costs a customer their level. Redemptions are excluded from tier progress automatically, so somebody who cashes out 500 points is exactly as close to Plus as they were before. That is what stops customers hoarding points to protect their status, and there is nothing to configure.
Step 4: Build the $5 reward
H&M has exactly one redemption rung, and the discipline of that is worth respecting. One number the customer can remember beats a five rung ladder they have to study.
Go to Loyalty → Redeeming Points → Add Reward → Discount → Fixed.
| Field | Value |
|---|---|
| Reward Name | $5 Reward |
| Points Cost | 250 |
| Discount Amount | 5 |
| Minimum Spend | 0 |
| Expiry Days | 90 |
| Combinations: Product discounts | Checked |
| Combinations: Order discounts | Checked |
| Combinations: Shipping discounts | Checked |
| Reactivate discount code on full refund | Unchecked |
Use a fixed amount, not a percentage. A fixed reward has a known cost: $5 off costs you $5, whatever the basket. That is precisely why H&M can advertise a flat 2% and mean it. A percentage voucher costs whatever the basket happens to be, which turns a clean number into a range you have to model.
Leave Reactivate discount code on full refund unchecked. This is the setting that reproduces H&M's rule about vouchers not being reissued after a return, and it is the one to get right. Checked, a customer can spend 250 points, return the order, and get the code back alongside their refund. That is the whole voucher for free, and it is an easy loop to find.
Expiry Days 90 is our recommendation rather than H&M's, which does not publish a Bonus expiry. Ninety days is long enough not to feel punitive and short enough to stop your outstanding liability compounding. The field accepts up to 365.
Check all three Combinations boxes. H&M does not stop the Bonus stacking with its own markdowns or member prices, and on a clothing store running permanent seasonal sales an uncombinable reward is a reward nobody can use.
One thing you get without configuring it: the discount is spread across line items rather than applied to the order total, so returning one item from a five item order refunds what the customer actually paid for it. That is Shopify's native behaviour for order level discounts and it matches H&M's rule exactly.
Should you add more rungs?
H&M has one. Most stores should have three, because a single rung gives a customer nothing to save for once they can afford it. Holding 2% flat:
| Reward | Points Cost | Discount Amount | Percent back |
|---|---|---|---|
| $5 Reward | 250 | 5 | 2.0% |
| $10 Reward | 500 | 10 | 2.0% |
| $25 Reward | 1250 | 25 | 2.0% |
Or bend it so the top rung is the best value, which suits customers who buy a few times a year rather than monthly:
| Reward | Points Cost | Discount Amount | Percent back |
|---|---|---|---|
| $5 Reward | 250 | 5 | 2.0% |
| $12 Reward | 500 | 12 | 2.4% |
| $35 Reward | 1250 | 35 | 2.8% |
If you are copying H&M exactly, build one rung. If you are building a program you intend to run for years, build three.
Step 5: Set up free shipping over $50
This is the benefit customers actually join for, so it gets its own step and it deserves more thought than the ladder did. Read the cost arithmetic again before you pick your threshold.
Because it is available to every member including Core, build it as an entry reward on the Core tier. Entry rewards are issued automatically when a customer reaches a level, once per customer, and on your lowest level that means the moment they join. No points are spent.
Go to VIP Tiers → Core → Entry Rewards → Add Reward → Free Shipping.
| Field | Value |
|---|---|
| Reward Name | Member free shipping |
| Points Cost | 0 |
| Exclude shipping costs over a certain amount | Checked |
| Maximum Shipping Discount Amount | 8 |
| Purchase type | One-time purchase |
| Minimum requirements | Minimum subtotal |
| Minimum subtotal | 50 |
| Expiry Days | 0 |
The threshold lives under Other Settings → Minimum requirements, a radio group offering No minimum requirements, Minimum subtotal and Minimum quantity. Choose Minimum subtotal and the field expands underneath it, prefixed with your store currency.
Set the threshold above your average order value, not at it. H&M's $50 on a fast fashion basket sits low, which is a deliberate acquisition choice by a brand with enormous scale. On your store, a threshold just above your average order turns the benefit into a basket builder. A threshold below it turns the same benefit into a discount you pay on every order.
Cap the discount with Maximum Shipping Discount Amount. Without it, a member can choose express international shipping and have you pay for it. Set it to your standard domestic rate. Expiry Days 0 keeps the code alive, because this benefit is meant to last as long as the membership does.
Making it automatic
Mage issues this as a Shopify discount code, auto issued on joining and visible in the customer's rewards page, account sidebar and checkout. If you would rather members never touch a code, build a Shopify shipping rate rule in your Shopify admin that offers free standard shipping over $50 to customers with an account. Mage syncs tier tags to the Shopify customer record, so the rule has something to key on, and the two approaches work happily side by side.
Step 6: Reward the things that are not purchases
H&M has one non purchase earning action, and for a clothing brand it is an unusually good one: bring in a bag of unwanted clothes for reuse or recycling and earn a coupon for it.
Go to Loyalty → Earning Points → Add Earning Rule → Photo Challenge.
| Field | Value |
|---|---|
| Title | Recycle your clothes |
| Instructions | Drop a bag of unwanted clothes at any store, photograph your drop off receipt, and upload it here |
| Points reward | 750 |
| How often can a customer earn this? | Custom |
| Days between uploads | 30 |
| Email me when submissions are waiting for review | Checked |
Then create the coupon those points buy. Go to Loyalty → Redeeming Points → Add Reward → Discount → Percentage.
| Field | Value |
|---|---|
| Reward Name | 15% off, recycling reward |
| Discount Amount | 15 |
| Points Cost | 750 |
| Minimum Spend | 40 |
| Expiry Days | 60 |
| Combinations: Product discounts | Unchecked |
| Combinations: Order discounts | Checked |
| Combinations: Shipping discounts | Checked |
Price the points award so it buys exactly the coupon. Fifteen percent off a $100 basket is $15 of value, which at 2% back costs 750 points. That is where the number comes from. Pick your own by deciding what basket you expect the coupon to land on, taking 15% of it, and multiplying by your points rate.
Untick Product discounts on the percentage reward. Stacking 15% on top of a seasonal markdown is how percentage rewards quietly get expensive, and on a clothing store something is always on sale. Leave order and shipping discounts checked.
Set the minimum spend. A percentage reward with no minimum costs you whatever the basket happens to be. Forty dollars is the floor that makes the 750 point price honest.
Days between uploads 30 is the setting that protects you. Without it, a customer photographs the same drop off receipt every day. Thirty days matches the cadence of somebody genuinely clearing out a wardrobe. Submissions come to you for approval before any points are awarded, so you keep control of what qualifies, and you can adjust the points on individual submissions during review when somebody brings in two bags.
All of this contributes to Plus progress, because you set Entry Method to points earned back in Step 2. A customer who recycles once is 750 points into their first 500, which promotes them outright. That is a strong signal to send: the fastest route into your top tier is the behaviour you most want to encourage.
Step 7: Earn on in store purchases
H&M members earn in store by scanning their member ID from the app. There are two ways to reproduce that, and which you need depends on your till.
If you run Shopify POS, install the Mage Loyalty POS extension and add its tile to your POS home screen. Staff can look up a customer at the till and see their points balance and level next to the transaction. Because POS orders fire the same webhook as online orders, an in store sale attached to a customer record earns points automatically at the same one point per dollar. There is no separate rule to configure, and the mechanic is identical to H&M's: attach the customer, the points follow.
If your stores run on a till Shopify cannot see, use a receipt upload instead. Go to Loyalty → Earning Points → Add Earning Rule → Submit Receipt.
| Field | Value |
|---|---|
| Earning Method | Points per amount spent |
| Points per Amount Spent | 1 for every $1 spent |
| Only accept receipts from specific stores | Checked |
| Selected stores | Your store name and any trading names |
| Maximum receipt age | 30 days |
| Minimum purchase amount | 10 |
| Limit how often customers can earn points by submitting receipts | Checked |
| Maximum submissions | 8 |
| Time period | Per month |
| Send email reminders when there are pending receipts to review | Checked |
Matching the online rate at one point per dollar is what makes the promise credible: points on all your shopping, wherever you do it.
Only accept receipts from specific stores is the setting that protects you. Without it, a customer submits a supermarket receipt and earns points on their weekly shop. Enumerate every trading name that appears on your receipts, or the scanner will reject legitimate submissions. Every receipt is scanned automatically for fraud and then reviewed by you before points are awarded, and the reminder email is what stops that queue becoming a backlog.
This also solves the forgotten scan. A customer who did not present their member ID at the till uploads the receipt afterwards and gets the points, without a support ticket.
Step 8: Give Plus members something worth climbing for
In a program where the earn rate never changes, this step is the entire argument for reaching Plus. Do not treat it as decoration.
Go to VIP Tiers → Plus and use the Tier-Specific Rewards card, not Entry Rewards. Tier specific rewards are redeemable with points, but only by customers currently at that level.
| Reward | Type | Points Cost | Discount Amount | Minimum Spend |
|---|---|---|---|---|
| Plus $10 Reward | Fixed | 400 | 10 | 0 |
| Plus 20% off | Percentage | 900 | 20 | 60 |
Look closely at the first one. It is the same fixed reward shape as your public $5 rung, but $10 for 400 points is 2.5% back against 2.0% on the public ladder.
Pricing the same reward better for a higher level beats inventing a different reward, because the customer can see exactly what their status is worth in a number they already understand. It costs you nothing until somebody has spent $500 in a year to unlock it. Put your most generous pricing here, not in the public ladder.
Note how the two cards on the tier page differ:
| Entry Rewards | Tier-Specific Rewards | |
|---|---|---|
| Cost to the customer | Free | Points |
| When issued | Automatically, on reaching the level | When they redeem |
| How many times | Once per customer | As often as affordable |
| If they drop a level | Already issued, they keep it | No longer available |
Premium giveaways
H&M promises Plus members giveaways, and points drops are how you deliver them. Go to Loyalty → Points Drops → Create.
| Field | Value |
|---|---|
| Drop name | Plus member bonus |
| Who receives this drop | VIP Tier: Plus |
| Points | 500 |
| Expires after | 7 days |
Set an expiry on every drop. Points that sit there forever are a top up. Points that expire in seven days are an event, and that window is what turns a bonus into an order. Drop points expire on their own schedule regardless of what the customer buys in the meantime, so the deadline is real.
Run these monthly, quarterly, or tied to a collection launch. Drops can also target a Shopify segment rather than a level, which is how you would reach customers who bought denim eleven months ago.
Early access to drops and sales
When you switched VIP Tiers on in Step 3, Mage started tagging customers in Shopify with their level. Use that tag to build a customer segment in your Shopify admin, then gate whatever you like on it: an early access window on a collection launch, a private sale, a discount only Plus members see.
Step 9: Set up exclusive member prices
Exclusive member prices are a Core benefit at H&M, available to everybody who joins, and they are not a points feature at all.
Build them as a Shopify automatic discount in your Shopify admin, with customer eligibility set to a segment of customers who have an account, and scheduled to whatever days you want to run them. They cost no points and apply without a code, which is the entire point of a member price.
This is worth stating plainly because merchants copying H&M often try to build member prices as a loyalty reward. That makes them cost points they should not cost and gates them behind a balance a new member does not have, which turns your best acquisition tool into something only existing customers can use.
Step 10: Set your points expiry
Go to Loyalty → Points Expiry.
| Field | Value |
|---|---|
| Enable points expiry | Checked |
| Expiry mode | Time after points are acquired |
| Points expire after | 365 |
| Expiry reminder | 30 |
H&M's rule is a validity rule rather than an inactivity one: points are good for twelve months from when the customer's membership year starts. Time after points are acquired is the mode that expresses this. Each batch of points expires on its own clock, 365 days after it was earned, so points earned last March go this March while points earned in June survive until next June.
The other mode, customer's last purchase date, resets the clock on a customer's entire balance every time they buy, so an active customer never loses anything. That is the right answer for a program whose terms are explicitly about inactivity. H&M's are explicitly about a fixed twelve month validity, so this is the faithful choice.
Set the reminder to 30 days. It triggers the points expiring soon email, which reaches a lapsing customer with a specific number and a deadline attached. Expiry without a warning is a penalty. Expiry with a warning is a reactivation campaign that runs itself, and on a two percent program it is the highest value message in the whole lifecycle.
Tier progress handles its own expiry from Step 2. Only the last twelve months of earning count toward Plus, so you do not need to configure anything for requalification, and the two clocks run independently.
Step 11: Add bonus point events
H&M does not publish a bonus points mechanic, so this step is an addition rather than a reproduction. It is worth having, because a program with one rung and no multipliers has very little rhythm to it, and this is the feature that supplies it.
Go to Loyalty → Bonus Campaigns → Create.
| Field | Value |
|---|---|
| Campaign Name | Double points weekend |
| Campaign Type | Multiplier |
| Multiplier Rules | Purchase 2x |
| Schedule | Your start and end date |
Any rule you leave at 1x is excluded, so you can double purchases only, or include receipts and the recycling challenge if you want a content push instead of a sales one.
The Tiered campaign type instead awards a flat bonus when an order passes a spend threshold, for example 200 bonus points on orders over $80. On this program that does double duty, because it pushes customers past your free shipping threshold at the same time.
One thing to know before you run a 3x weekend: bonus campaign points count toward Plus progress, because your entry method is points earned. A generous campaign will promote people.
Step 12: Put it in front of customers
A loyalty program nobody can see does not work. Four surfaces to set up:
Loyalty Pages. Your landing page. Add the How it works, Ways to earn, Ways to redeem, VIP tiers and FAQ blocks. They populate themselves from everything you just set up.
Account Sidebar. The signed in view, showing balance, level progress and whether the customer can afford the $5 reward right now. On a one rung program this is your most valuable surface, because the entire customer question is "how far am I from five dollars" and the sidebar answers it in one number.
Rewards widget. The floating storefront launcher. Turn it on.
Wallet Pass. Apple and Google wallet passes carry the balance and level badge, and on a program with an in store component this is your equivalent of the member ID in the H&M loyalty app. It is the surface a staff member can scan at the till.
One recommendation that runs against the grain. On most builds we would tell you to switch on the product points calculator, which shows the points a customer earns on each product page. On a one point per dollar program, leave it off. A $39 top reads as 39 points, and 39 of anything sounds small. Programs running ten points per dollar get a genuine merchandising number out of that block. Yours does not, and a weak number in a prominent place does more harm than no number at all.
Put the effort into the VIP tiers block instead. On this model the benefits table carries the entire program, because the earn rate is not doing any of the work. Use the table layout, put Core and Plus side by side, and give each benefit its own row: what everybody gets at the top, then what switches on at Plus.
For more on the pieces available, see our overview of the Shopify loyalty program.
You don't have to copy all of it
Very few stores need the whole thing, and it comes apart cleanly.
If you want one thing, make it the free shipping threshold in Step 5, set just above your average order value. It is the cheapest way to raise basket size and the only benefit here that pays for itself.
If you sell a category people buy from often, the 2% ladder in Step 4 works because frequency does the heavy lifting. One rung, one number, no ladder to explain.
If your customers buy rarely, do the opposite. Skip the levels, raise the earn rate or lower the first rung, and lean on the expiry reminders in Step 10. A 500 point threshold is meaningless to somebody who buys twice a year.
If margin is tight, keep the levels and put everything into tier specific rewards in Step 8. Those cost nothing until a customer has spent their way to the level that can see them.
If you sell clothing, prioritise Step 6. A recycling or trade in reward is the cheapest goodwill you will ever buy, it gets customers into your stores, and it is the one earning action in this program that has nothing to do with spending money.
Take the parts that suit how your customers actually shop.
We'll set it up for you, free
If you would rather not configure any of this yourself, our team will do it for you at no cost. That includes the full build above, tuned to your catalogue and your margins, plus your branding across the widget, sidebar and loyalty pages.
Already running a loyalty program somewhere else? We handle migrations free of charge too, including your existing customer balances, tiers and history, so nobody loses the points they have earned. We have migrated stores from Smile.io, LoyaltyLion, Yotpo, Rivo, Stamped, Joy and Bubblehouse.
Talk to our team and tell us what you want your program to look like.
Frequently asked questions
What is the H&M loyalty program? The H&M loyalty program is a free digital membership in which customers earn 1 point for every $1 spent, online or in store, and receive a $5 reward for every 250 points earned. There are two levels, Core on joining and Plus at 500 points, and the levels unlock access to member prices, earlier drops, offers and giveaways rather than a faster earn rate.
How does the H&M loyalty scheme work? Every dollar spent earns one point, and 250 points converts into a $5 voucher. Points also count toward membership level: 500 points earned within the membership year moves a customer from Core to Plus. The membership year starts on the day the customer joins rather than on 1 January, and points are valid for twelve months. That is the program as it stands in 2026.
How many points do you get per dollar at H&M, and what is a point worth? 1 point per $1 spent, at both Core and Plus level, and each point is worth two cents. A $5 reward costs 250 points, so the program pays 2% back, which is deliberately low by retail standards and works because a fast fashion customer clears 250 points every few months. Unlike most tiered loyalty programs, the H&M levels do not change the earn rate at all. A Plus member and somebody who joined this morning earn identically, and what the higher level buys is access to drops, offers and giveaways rather than faster earning.
What are the H&M loyalty program benefits in 2026? Core members get free shipping over $50, exclusive member prices, partner promotions, invitations to store events, early access to shopping events, and Klarna pay now or later. Plus members get all of that plus early access to drops and sales, exclusive experiences, special member offers and discounts, and premium giveaways. Neither level earns points faster than the other.
Do H&M loyalty points expire? Yes. Points are valid for twelve months from the start of the customer's membership year, and the membership year starts on the day they joined rather than on a fixed calendar date. In this guide that is one dropdown, Time after points are acquired, set to 365 days in Step 10, with a 30 day reminder email before anything is lost.
Can I get an H&M loyalty discount code back after a return? No, and that rule is worth copying. H&M does not reissue a voucher after a return or exchange, which stops a customer redeeming points, returning the order, and keeping both the refund and the code. In this build it is a single checkbox: leave Reactivate discount code on full refund unchecked in Step 4.
How do I set up a loyalty program like H&M on Shopify? Every part of the structure in this guide can be set up in Mage: the one point per dollar earn rate, the $5 reward at 250 points, two levels based on points earned over a rolling membership year, free shipping over $50, points expiry, rewards for recycling old clothes, in store earning through Shopify POS or receipt uploads, Plus member offers and giveaways, and bonus point campaigns. 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. If you would rather it was done for you, our team sets it up free of charge, including your branding.
Should I spend my loyalty budget on the earn rate or on free shipping? On free shipping, if your customers buy often at a modest basket size. A points discount pays out on money the customer already decided to spend, so it reduces your margin without changing behaviour. A free shipping threshold set just above your average order value changes the basket before the customer commits, and a customer who adds an item to clear the threshold has paid for their own shipping. The catch is the threshold itself: set it below your average order and you are funding a permanent discount on orders that would have happened anyway.
What happens to points when a customer returns something? Points earned on that order are removed automatically, including any bonus points from a campaign, and partial refunds reverse points proportionally. Tax and shipping never earned points in the first place, so nothing needs unwinding there. Setting Approval Time to a day or more, as in Step 1, means fast cancellations are handled before the points are ever confirmed.
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 H&M. The H&M Membership is a trademark of H & M Hennes & Mauritz AB. This guide references the program for the purpose of comparison and education.






