Quickstart: Unify Your Customer Rewards
Define currency, configure VIP tiers, wire cross-module earning, build the catalog, enable referrals, launch campaigns — the full setup in 6 steps, in under 25 minutes.
Create Your Program
| Field | What it controls | Example |
|---|---|---|
| Currency name | What members see ("Points", "Miles", "Stars", "Coins") | "Stars" |
| Issuance ratio | Default: 1 point per $1 spent (configurable per earning rule) | 1:1, 10:1, 100:1 |
| Expiration policy | Rolling N months from earn, fixed annual reset, or none | Rolling 12 months |
| Currency floor | Minimum redemption (e.g., 100 points before redeemable) | 100 |
| Program visibility | Public (auto-enroll on signup) / Opt-in / Invite-only | Auto-enroll |
| Notification cadence | When members get balance / tier-progress emails | Weekly summary, instant tier-up |
Configure VIP Tiers
| Tier | Threshold (lifetime pts) | Multiplier | Common perks |
|---|---|---|---|
| Bronze | 0 | 1.0× | Welcome bonus, basic rewards |
| Silver | 1,000 | 1.25× | Birthday reward, free shipping > $50 |
| Gold | 5,000 | 1.5× | Early access, free shipping, 5% extra-off |
| Platinum | 15,000 | 2.0× | Concierge support, VIP events, surprise gifts |
Set Cross-Module Earning Rules
| Source module | Common triggers + rules |
|---|---|
| **Commerce** | Order completed: earn 1 point per $1 (excluding tax + shipping) |
| **Hospitality** | Reservation completed: 500 points per stay + 100 per night |
| **Dining** | Order completed: 10 points per $1 spent + 50 points per visit |
| **Events** | Ticket purchased: 100 points per ticket + 250 for VIP package |
| **Appointments** | Appointment completed: 50 points per visit + bonus on rebook |
| **Reviews** | Product review submitted: 25 points (verified-purchase only) |
| **Referrals** | Successful referral: 500 to referrer + 250 sign-up bonus to referee |
| **Birthday** | On member's birthday: 250 surprise points |
Build the Reward Catalog
| Reward type | Module that fulfills | Example |
|---|---|---|
| **Discount code** | Commerce | "$10 off your next order" = 1,000 points |
| **Free product** | Commerce | "Free travel mug" = 2,000 points |
| **Free shipping** | Commerce | "Free shipping voucher" = 500 points |
| **Restaurant comp** | Dining | "Free appetizer at any location" = 500 points |
| **Hotel night** | Hospitality | "1 free night, standard room" = 25,000 points |
| **Event ticket** | Events | "VIP ticket to next event" = 10,000 points |
| **Charity donation** | Finance | "$25 donation to partner charity" = 2,500 pts |
| **Experience** | Manual | "Backstage tour + meet artist" = 50,000 points |
| **Tier upgrade boost** | Loyalty | "Skip 30 days to next tier" = 5,000 points |
Enable the Referral Engine
In Settings → Referrals, toggle the program on. Configure:
- Referrer reward — points the existing member earns per successful referral (typical: 500-1,000)
- Referee bonus — points the new customer gets on sign-up (typical: 100-500)
- Conversion requirement — when does the referrer earn? On referee sign-up, first purchase, or after N days retention?
- Caps — max referrals counted per referrer per period (prevents abuse)
- Tier multiplier — Gold+ referrers earn double referral bonuses
Referral link generation:
- Each member gets a personal short URL:
acme.com/r/JANEDOE - Or per-channel codes:
JANEDOE-IGfor Instagram,JANEDOE-EMfor email - Track click-through, conversion rate, revenue attribution per referrer
Anti-fraud:
- IP / device fingerprint matching prevents self-referrals
- Email domain checking flags suspicious patterns (10 sign-ups from same domain in 24h)
- Referee email validation prevents disposable-email abuse
- Sentinel module monitors patterns; suspicious activity surfaces for admin review
Launch Segment-Driven Campaigns
Navigate to Marketing → Campaigns and create loyalty-targeted campaigns:
Common loyalty campaigns:
- Tier-up congratulations — when a member crosses a tier threshold
- Birthday + anniversary — surprise points drop with a personalized email
- Lapsing customer winback — "Use your 2,400 points before they expire next month"
- Reward catalog drops — announce limited-quantity rewards
- Bonus point promotions — "Earn 3× points this weekend on travel"
- Referral nudges — for high-engagement members likely to refer
Personalization variables:
{{currentBalance}},{{currentTier}},{{pointsToNextTier}}{{topRedeemedReward}},{{lastPurchaseDate}}{{favoriteCategory}}(from order history)
typescript
// Trigger a campaign on tier-up via the event bus
await aeion.events.subscribe("loyalty.tier.upgraded", async (event) => {
await marketing.api.post("/v1/campaigns/trigger", {
campaignId: "tier_upgrade_celebration",
audienceId: event.payload.userId,
variables: {
newTier: event.payload.newTier,
bonusPoints: event.payload.bonusPoints,
},
});
});
Built-in A/B testing — test subject lines, point-bonus amounts, or reward-card layouts. The Marketing engine routes more traffic to the winner once statistical significance is reached, so you don't need to eyeball raw percentages.
Integration Recipes
Commerce → loyalty stacking. Loyalty discounts stack with promotional codes via configurable precedence (additive 30% or multiplicative 28%). Cart shows the breakdown so customers see both.
Hospitality / Dining → unified wallet. Members earn + redeem across all module touchpoints with a single wallet balance. Stay at the hotel + dine at the restaurant in one trip → both earn into the same balance.
CRM segment-driven offers. Customer segments (e.g., "VIP wine drinkers") drive personalized reward catalogs. Members see rewards relevant to their preferences first.
Birthday surprise via Marketing. When a member's birthday hits, Marketing auto-fires a personalized email with a surprise points drop + curated reward list.
Referral fraud detection via Sentinel. Suspicious referral patterns (10 sign-ups from same IP in 24h, disposable-email referees, etc.) surface to the admin via the Sentinel module's fraud rule engine.
AeionClaw → personal recommendation engine. The aeion-loyalty skill drafts redemption suggestions ("You have 2,400 points — that's enough for the free spa treatment you saved last month"). Members get personalized AI-assisted nudges.
Troubleshooting
Points not crediting after a purchase. Check Admin → Loyalty → Transaction Log for the specific order. Common causes: (1) order in pending state (points credit on completion, not creation), (2) excluded product category, (3) earning rule's conditions not met, (4) member not enrolled in the program. The transaction log shows the rule evaluation trace.
Tier downgrade unexpected. Check the member's transaction history — tier evaluation runs on rolling-window lifetime points. If they earned a large bonus 13+ months ago and it dropped off, the rolling window may have crossed the threshold downward. Adjust window to "lifetime" if you don't want this behavior.
Reward stock zero unexpectedly. Limited-quantity rewards track real-time consumption. Check Admin → Rewards → [reward] → Redemption Log. Common cause: bot abuse — add a CAPTCHA on high-value rewards.
Referral attribution lost. Cookie-based attribution requires the referrer link to set the cookie. If the referee uses incognito or clears cookies between click + sign-up, the attribution breaks. Server-side fingerprinting catches most cases; manual attribution adjustment available in admin.
Expired points re-credited erroneously. Expiration ran but the customer says they earned points after the expiration cutoff. Run the manual "Recalculate Member Balance" tool — usually identifies a missed transaction or a manual adjustment that needs to be re-applied.
Campaign sent to wrong segment. Verify the segment definition in CRM. Common cause: segment criteria changed after the campaign was scheduled. The Campaign Audit Log shows the snapshot of segment membership at send time.
Frequently Asked Questions
Based on your Expiration Policy (Step 1), the system stamps an `expiresAt` date on every earned transaction record. A daily background job sweeps the ledger and safely debits expired points, creating an immutable audit record of the expiration.
Yes. From the Member profile, use "Adjust Points". Reason required (e.g., "Service Recovery"), audit-logged with the admin's identity. The adjustment posts as a transaction so the running balance + tier evaluation update correctly.
Yes — functions perfectly as a standalone e-commerce loyalty system replacing Smile.io or LoyaltyLion. Cross-module shines when you have Hospitality + Dining + Events but isn't required.
Yes. Multi-tenant Aeion deployments support parent-child tenant trees. Loyalty programs can be brand-specific or share a unified wallet across brands. Configurable per program.
Gift cards are monetary value (Aeion Giftcards module). Loyalty is points / status / tier. They stack at checkout — apply gift card + loyalty + promo code in one transaction. Each tracked independently for accounting.
Refunds auto-reverse earned points via immutable reversal ledger entries. Partial refunds reverse proportionally. If a member redeemed before the refund, the system may temporarily show negative balance — they can't redeem more until they earn back the deficit.
Loyalty redemptions are typically treated as a discount (reduces taxable subtotal) in the US, but some jurisdictions treat them as deferred income. Configurable per region. Aeion Finance handles the accounting math.
Yes if you configure it. Conversion ratios + minimums set per program. Common use: cash-back redemptions, gift-card purchases, charity donations. The reverse (cash → points) is also possible but less common (often regulated).
Using a statistically rigorous method that compares conversion rates with confidence intervals, avoiding the false-winner problem of naive percentage comparison. Marketing routes more traffic to the winner once significance reaches your configured threshold.
Yes. Admin → Loyalty → Members → [member] → Export. CSV or JSON with every transaction, redemption, tier change, expiration event, and adjustment. GDPR Article 20 portability compliant.