Skip to content

Points & rewards that respect margin.

Eleven earning rules, three reward types, and the controls (expiry, anti-fraud, redemption caps) to keep your loyalty liability honest. Native to every Shopify surface, none of it iframed.

Points history

20+ entries
Reward redeemed
Amount discount · Jun 3
−500
Reward returned
Amount discount · Jun 3
+500
Reward redeemed
Percentage off · Jun 3
−1,000
Reward redeemed
Amount discount · May 29
−2,000
Order #1031
1,875 points · May 29
+1,875
View all activity →

What it is

A loyalty points program is a closed-loop economy: customers earn points by behaving the way you want (placing orders, leaving reviews, referring friends), then spend those points on rewards that cost you less than acquiring a brand-new customer would.

Charm's points engine ships with eleven pre-built earning rules and three redemption types out of the box. You define the math, Charm handles the bookkeeping — including expiry, anti-fraud cooldowns, and full per-customer adjustment history.

How it works

Four moving parts.

The configuration surface is small on purpose. Most stores set this up in one sitting.

  1. 01

    Pick your earning rules

    Earning rules are the levers that decide which behaviors get rewarded. Stack as many as fit your program — most stores use 3-5 in production.

    Available rule types: order placed (with optional minimum), signup bonus, birthday bonus, nth-order milestone, collection-specific multipliers, product-specific multipliers, subscription start, review submitted (via Judge.me / REVIEWS.io / Okendo / Yotpo / Stamped / Loox / Fera / Air Reviews), social follow (TikTok / Instagram / Facebook), email signup, and referral conversion.

    Each rule has its own caps and cooldowns. A birthday bonus can be capped to once per year. A review reward can require a verified purchase. A social follow can require the platform to confirm the action via OAuth.

    Milestone and punch-card rules aren't limited to points, either: each step can hand out a free product, an amount or percentage off, or free shipping — so "every 3rd order earns 10% off" or "free shipping on the 5th order" is a single rule.

  2. 02

    Choose how customers redeem

    Three reward types cover virtually every loyalty pattern: discount codes (fixed amount or percentage), store credit (applied at checkout), and free products (catalog-curated).

    Rewards can be stackable or exclusive, have minimum order requirements, and expire after configurable windows. Per-customer redemption caps prevent abuse.

    Customers redeem in three places: the floating widget on any storefront page, the customer account hub, or by applying a code at checkout. The latter is auto-generated and emailed when they redeem.

  3. 03

    Expiry and anti-fraud

    Points expire by inactivity (the default — 12 months since last activity), absolute date, or per-rule lifetime. The expiry policy applies retroactively to existing balances so you can tighten the screws without rebuilding the program.

    Anti-fraud cooldowns block double-dipping on review rewards (one per order), referral rewards (one per friend), and signup bonuses (one per device fingerprint). Manual review queues catch the rest.

  4. 04

    Bulk admin & ledger

    Adjust any customer's balance manually (with a required reason logged to the ledger). Bulk-import balances from a CSV during migration. Export the full per-customer history at any time.

    Every change is journaled: who, what, when, why. Restoration after uninstall + reinstall is a single click on the data-migration screen.

Examples

Three configurations to steal.

Ready-to-copy patterns we see in production. Tune the numbers to your margin and audience.

01

Birthday bonus

500 pts on the customer's birthday, max once per year, requires a registered date of birth on the customer account.

02

Reviewer bonus

Award 100 pts per Judge.me review (cap one per order). Add a 50 pt bonus if the review includes a photo.

03

Subscription welcome

Award 1,000 pts when a customer starts a Recharge subscription. Deduct half if they cancel within 30 days.

Use cases

What it looks like in the wild.

01Beauty

DTC beauty: signup-to-second-order

200 pt signup bonus + 5× points on second order. Designed to flip browsers into repeat buyers within 30 days. Typical lift: +35% second-order conversion.

02Food & Beverage

Coffee subscription: birthday + review

Birthday bonus (500 pts) + review bonus (100 pts/photo). Quiet engagement program built around moments people already enjoy.

03Apparel

Apparel: collection multipliers

2× points on full-price seasonal collections, 1× on basics. Lifts AOV on the lines you actually want to push.

FAQ

Common questions.

Can customers earn points on discounted orders?
Yes by default; you can exclude orders below a threshold or with specific discount codes via the earning-rule conditions.
Do points show up in Shopify customer-account pages?
Yes — Charm renders a native customer-account block showing balance, tier, recent activity, and earned rewards. No iframes.
Can I import a points balance from another loyalty app?
Yes. CSV import of balances, per-customer earned history, tier status, and outstanding redemption codes is available on every plan, with dedicated migration assistance included.
Are points liability tracked anywhere?
Charm exposes a running liability report: total outstanding points × your configured point value = open liability. Export to CSV for your accounting team.
Can I retroactively change point values?
Yes — point values are a separate setting from earning rules, so changing the value updates the liability calculation without rewriting earn history.
Does the earn rate have to be one point per dollar?
No. The order-placed rate takes an 'N points per Y spent' ratio — 1 point per $1, 1 point per $10, whatever suits your margin — and you can re-frame the same ratio at any time without rewriting earn history.

When you're ready

Free up to 250 orders / mo.

Every feature on this page is included in Free. Upgrade only when your order volume crosses the threshold.