Skip to content

Punch cards

A punch card rewards repeat buyers automatically. Every qualifying order is a punch; once a customer fills the card — reaches N orders — they get a reward and the card resets. It then repeats, so a punch card is an ongoing loop rather than a one-time bonus.

  • Set orders per card (N, minimum 2) and the reward a completed card grants.
  • Each paid, eligible order adds one punch. Progress within the current card is orders ÷ N; a customer who has placed 7 orders on a 5-order card has completed one card and is 2 punches into the next.
  • Completion is idempotent and derives from the order ledger, so webhook replays never double-grant. If an order is refunded or cancelled it stops counting, and progress self-corrects on the next recalculation — the reversed order disappears from the storefront card and the POS view too, not just from the award.

Optionally require an order to reach a value before it earns a stamp — “every 5 orders over €30”. Turn on Only count orders over a minimum in the punch-card rule and set Minimum order value. It’s off by default, so existing cards keep counting every paid order.

The minimum is measured on the order subtotal: after discounts, taxes as charged, shipping excluded. That’s the same basis Shopify checks for a discount’s minimum purchase, so the number means the same thing here, on order milestones, on the referral minimum, and in a reward’s own minimum purchase. Customers see the condition on the card (“Orders over €30”) on every surface.

Optionally, every card can start with free starter stamps — 1 to 3 gift stamps that appear pre-filled the moment a customer (or visitor) first sees the card. Turn it on with Give cards a head start in the punch-card rule; new punch cards have it on by default with 1 gift stamp.

Why it exists: the endowed progress effect. In the classic study (Nunes & Drèze, 2006), a 10-stamp card with 2 stamps pre-filled beat an 8-stamp card requiring identical effort — 34% vs 19% completion. A card that is visibly begun feels worth finishing; a card at zero feels like a chore not yet started.

How it works:

  • The starter stamps are real. They count toward completion, so an 8-order card with 2 starter stamps completes after 6 orders. “Orders per card” always stays exactly the number you typed — the gift shortens the customer’s path to the reward, it doesn’t inflate the card.
  • Gift stamps render as ★ tiles, visually distinct from earned ✓ stamps, with a short note (“We’ve added your first stamps to get you started”) so the gift is explained — the research shows unexplained endowment underperforms.
  • Progress counters switch to plain stamp numerals (“3 / 8”) so no surface ever overstates real orders placed.
  • The head start applies to guests and members alike, so visitors browsing the widget or the landing page see a card that’s already begun before they even join.
OptionWhat it does
Every cardThe gift reappears each cycle. Permanently shorter cards — the strongest nudge, and the most expensive
First card onlyOnly the first card opens with stamps; later cycles run at full length
First card + comeback stampThe first card opens with stamps, and after any completed card an order placed within a comeback window you set (default 14 days) earns a bonus stamp on the new card. Customers see the exact deadline

The comeback option trades the permanent gift on later cards for a stamp the customer earns by coming back quickly, so the endowment keeps working without paying for it every cycle.

Because the starter stamps count, changing this setting changes your program economics: a card that used to pay out every 8 orders pays out every 6 once you gift 2 stamps on every card. Check the reward’s value against the shorter cycle before switching it on.

A punch card can grant any of:

RewardBehavior
Bonus pointsPoints land on the customer’s balance
Free productGranted via a Shopify Function discount
Amount offFixed-value discount code
Percentage offPercentage discount code
Free shippingFree-shipping discount code
Store creditShopify store credit on the customer’s account, with no code

Discount-type rewards are issued exactly once per completed card through the same battle-tested discount path redemptions use, and the customer gets the completion email automatically.

A minimum purchase on the reward. Amount-off, percentage and free-shipping card rewards can carry their own minimum purchase, the same field a redemption reward has. Without it a “€6.50 off” card reward can be spent on a €6.50 order where the customer pays shipping and nothing else.

A card whose reward is a free product has a How the reward is delivered choice:

OptionBehavior
Discount code (default)A one-time code goes out by email, redeemable on a later order
Add it to the completing order for freeThe product is added to the very order that fills the card, at 100% off

In-order delivery is the stronger moment — the customer gets the reward in the box rather than a code to remember. Orders that can’t be edited (already fulfilled, POS) fall back to a code automatically, so nothing is lost. Existing cards stay on Discount code until you change it.

They look similar but solve different jobs:

  • Order-count milestone — a one-time bonus the first time a customer reaches a threshold (e.g. “200 points on your 3rd order”).
  • Punch card — a repeating card that resets and runs again every cycle (e.g. “every 5th order is free, forever”).

Use a milestone to celebrate a one-off moment; use a punch card to build a durable buy-again habit. And for rewarding customers who stay subscribed, see subscription payment milestones.

The order-count milestone ladder carries the same Only count orders over a minimum switch, on the same subtotal basis, and its step rewards can carry a minimum purchase too.

A punch card counts orders, whatever is in them. To reward customers for buying from each of several collections instead, for example one item from every part of an outfit, use a Complete the set card. It shares the punch card’s rewards but has no head start or minimum order value.

Punch-card progress appears on the storefront widget and the customer account hub as a “{filled}/{N}” progress row, so shoppers always see how close the next reward is. Configure it under Program → Earning points → Digital punch card.