One loyalty balance, web and counter.
Charm runs natively inside Shopify POS. Staff earn points, redeem any reward, and see tier and membership status at the register — the same engine, the same balance, no second app or login.
What it is
Most loyalty apps stop at the storefront. But a returning customer who shops both online and in person has one relationship with your brand — and expects one balance. Charm's POS extension closes that gap.
It's a thin in-store surface over the exact same points engine, reward catalog, VIP tiers, and memberships that power the web. Nothing to reconcile, nothing that drifts: the counter reads and writes the same ledger.
How it works
Four moving parts.
The configuration surface is small on purpose. Most stores set this up in one sitting.
- 1
Look up any member at the register
A Smart Grid tile and a customer block surface the attached customer's loyalty state instantly: points balance, current tier and its perks, active membership, and store-credit balance.
Staff see the rewards the customer can actually afford right now, plus the next reward they're working toward — so the upsell ('you're 200 points from a free product') is a glance, not a calculation.
- 2
Redeem every reward type
The redeem modal handles all three reward types in person: mint a discount code, issue store credit, or grant a free product. Points are deducted server-side through the same redeem path as the web, so the existing reconcile and claw-back logic just works.
Store credit redeems as Shopify's native tender, so it settles cleanly through the POS payment flow.
- 3
Earn automatically on every sale
POS orders earn points on the same rules as online orders — no separate configuration. A post-sale block confirms the points earned and the new balance on the receipt screen, so the customer sees the reward land before they leave.
Earning is idempotent and self-healing: it reconciles regardless of webhook timing, so a flaky connection at the counter never costs a customer their points.
- 4
Built for the shop floor
The extension is localized in seven languages and reacts to the device's active language. It's tolerant of the offline moments real registers have, and it authenticates through the POS session automatically — there's no token plumbing or extra sign-in for staff.
Because it reuses Charm's existing resolvers, anything you change online — a new reward, a tier perk, a membership — shows up at the counter with no extra setup.
Examples
Three configurations to steal.
Ready-to-copy patterns we see in production. Tune the numbers to your margin and audience.
Pattern 1
Pop-up + online parity
A customer earns online all year, then redeems a free-product reward at your holiday pop-up. One balance, one tap.
Pattern 2
Counter store-credit
Issue store credit at the register as native tender — settles through the POS payment flow, no manual workaround.
Pattern 3
In-store enrollment
Create the customer in POS as usual; the signup rule fires and the welcome bonus is waiting next time they shop.
Use cases
What it looks like in the wild.
Beauty: omnichannel regulars
Counter staff see the customer's tier and affordable rewards instantly, turning a checkout into a recognized, rewarded moment.
Apparel: flagship + web
Members shop the flagship and online interchangeably; the multiplier and member discount apply identically at both.
Food: fast line, real rewards
A glance at the tile shows the balance; redeeming a reward is one modal, so the line keeps moving.
FAQ
Common questions.
Is this a separate app my staff have to install?
Do in-store and online points share one balance?
Which rewards can be redeemed at the register?
What languages does the POS extension support?
Does it cost extra?
Related
The rest of the platform.
Loyalty works best when the pillars work together.
When you're ready
Free up to 150 orders / mo.
Every feature on this page is included in Free. Upgrade only when your order volume crosses the threshold.