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.

How it works

  • 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.

Reward on a completed card

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

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.

Punch card vs. order-count milestone

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.

Where it shows up

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 Ways to earn → Digital punch card.