Skip to content

Points & rewards

Every customer has a points balance backed by an append-only ledger. Earning, redemption, manual adjustments, refunds, and migration imports are all ledger entries, so balance is always sum(signed entries) and every change is auditable (who, what, when, why).

  • Earning is driven automatically by your earning rules, most commonly when an order is paid. The base earn rate reads as “N points per Y spent”, and Y doesn’t have to be 1: on the spending rule, set Points earned and For every amount spent (e.g. 1 point per 10 € spent). Any bonus tiers share the same denominator, and storefront surfaces spell out the full “points per amount spent” phrasing.
  • Redemption deducts points and mints a discount code, store credit, or free product.
  • Refunds / cancellations reverse the points awarded for the affected order.
  • Manual adjustments require a logged reason and appear in the customer’s history.

Charm doesn’t store a separate cash value per point. Analytics prices your outstanding points at the fixed-value reward (an amount discount or store credit) that costs the fewest points, and when no reward has a fixed cash value it shows Unredeemed points instead of a money figure.

Earning rules live under Program → Earning points. Besides points for purchases, you can add:

Charm ships six reward types:

TypeBehavior
Amount discountA fixed amount off, auto-generated and emailed at redemption
Percentage discountA percentage off (store-wide or scoped to a collection)
Store creditNative Shopify store credit, applied at checkout (and at POS)
Free shippingFree-shipping discount applied at checkout
Product discountA free or discounted product, granted via a Shopify Function discount. Each code covers one item
Collection discountA percentage off items from a specific collection. With Apply to one item only, the code covers one item, the most expensive eligible one in the cart

Rewards support stack/exclusive flags, minimum-order requirements, expiry windows, and per-customer redemption caps. Require a minimum purchase works the same on a product discount and on a one-item collection discount: the discount applies only once the cart reaches the minimum. A one-item code covers at most 100 products and about 200 variants of a collection, and items beyond that get nothing from it, so keep those collections small and hand-picked. Each reward also carries a channel (redeemable everywhere by default, online only, or at the register only), so you can run in-store-exclusive rewards without extra apps.

When a customer spends points on a free product in the floating widget, on the landing page or in the cart, Charm puts the product straight into their cart. If the product has several variants, they pick one first. The reward code is still created and stays on the reward card as a fallback.

Points are the base layer. On top of them you can layer VIP tiers (earned cohorts with multipliers and perks), referrals, and paid memberships. They all resolve through the same checkout discount Function, so a customer can be in a tier and a paying member and get both, compounded, with no conflicts.