Feature docs

Loyalty programs on Vareons for online stores in Egypt: points, tiers, rewards, and customer retention

Loyalty on Vareons is the merchant's retention tool: it grants points for purchases and actions such as signup, first order, referral, and review, upgrades customers across multiplier tiers, and redeems points for discount, free-shipping, or gift rewards at checkout — all managed from /dashboard/loyalty-programs and read from the same customer balance in CRM.

Last verified: 2026-09-19

Loyalty is managed from /dashboard/loyalty-programs, a dedicated page with eight tabs: General for enabling the program and tuning points, Tiers for adding a level with Arabic and English names, minimum points, multiplier, benefits, colour, and icon, Rewards for creating a reward with Arabic and English titles, points cost, and type (discount, free_shipping, or gift) plus discount value and kind (percentage or fixed) or the gift product, Earning for bonus rules, Notifications, Display, Top Consumers, and Redemption Orders.

Points settings are precise: points per currency unit (pointsPerCurrency), minimum order amount (minOrderAmount), point value in currency (pointValue), maximum points usable in one order (maxPointsPerOrder), expiry in days (pointsExpiryDays, where 0 means no expiry), flat points per order (pointsPerOrder), and minimum and maximum earned points per order (minPointsPerOrder and maxEarnedPointsPerOrder). Earning rules cover signup bonus (signupBonus), first-order bonus (firstOrderBonus), referral bonus (referralBonus), birthday bonus (birthdayBonus), and review bonus (reviewBonus), with an enable-order-points switch (enableOrderPoints, on by default).

Each reward sets its display location (displayLocation): admin dashboard only (admin_dashboard), checkout only (checkout), or both, plus an active flag (isActive) and an auto-apply option (isAutoApply) that applies an eligible reward automatically at checkout. Notifications cover earn, redeem, tier upgrade, and near-expiry with an expiry-notice window (expiryNoticeDays). Display settings control showing points on the product, cart, and checkout pages with a custom Arabic and English message.

Storage spans two collections: LoyaltySettings with one settings document per tenant (tenantId and tenantSlug with indexes), and the CRMCustomer document carrying data.loyalty with the points balance (pointsBalance), tier, and earn and redeem histories (earnedHistory and redeemedHistory), indexed on data.loyalty.pointsBalance for ranking top consumers. At order completion the server computes points from the amount above the minimum, applies the tier multiplier, appends an earn entry, and upgrades the tier automatically, while a used reward's points are deducted from that same balance and recorded in redeemedHistory.

At checkout the useLoyalty hook reads the loyalty summary from GET /api/loyalty/summary with the tenant id plus email, phone, or customerId, the LoyaltySection shows the balance and eligible rewards (isEligible when the balance covers pointsCost), and the chosen reward applies as a loyalty-discount line (loyaltyDiscount) in the price breakdown, then travels inside discounts flagged isLoyalty at order creation. In CRM the loyalty tab shows the balance, tier, and both histories and supports earnPoints, redeemPoints, and updateTier actions via POST /api/dashboard/customers/loyalty, while the top-consumers and redemption-orders tabs surface the highest-point customers and orders that consumed loyalty rewards. The AI Copilot ships loyalty tools for summary, settings, rewards, add-points, redeem, redemptions, and top consumers, all under loyalty permissions and gated by confirmation. Permissions are enforced: viewing needs loyalty:view, while edits, creates, and deletes need loyalty:edit, create, and delete; the store owner holds all of them.

That is what makes loyalty a repeat-purchase retention tool for Egypt: the customer earns on every order paid cash or electronically, sees the balance at checkout and returns to redeem, tiers and auto-apply rewards lift basket value, and the CRM record identifies repeat buyers for WhatsApp or coupon follow-up.

Setup steps in Vareons

  1. Open the loyalty-programs page and enable the program

    In the dashboard open /dashboard/loyalty-programs from the sidebar (Loyalty). In the General tab switch the program on with the enabled toggle, then save. Viewing needs loyalty:view and saving needs loyalty:edit, and a loyalty-notification badge appears in the menu when eligible customers exist.

  2. Tune the points formula and expiry

    In General set pointsPerCurrency, minOrderAmount, pointValue, maxPointsPerOrder, and pointsExpiryDays (0 means no expiry), plus pointsPerOrder, minPointsPerOrder, and maxEarnedPointsPerOrder for per-order floors and caps, then save via POST /api/loyalty-settings/update.

  3. Create tiers with their multipliers

    Open the Tiers tab and add a tier: enter the Arabic and English names, minPoints, multiplier (for example 1.5 for 50% extra points), benefits, colour, and icon. Order tiers ascending (bronze, silver, gold, platinum) so the server upgrades the tier automatically when the balance passes the threshold.

  4. Create rewards and set their visibility

    Open the Rewards tab and add one: enter the Arabic and English titles, pointsCost, and type (discount, free_shipping, or gift), set discountValue and discountType or the gift product, then choose displayLocation (checkout or both to appear at checkout) and switch isActive and isAutoApply on as needed. Saving goes through POST /api/loyalty-settings/rewards under create, edit, and delete permissions.

  5. Enable earn bonuses, notifications, and display

    In the Earning tab set signupBonus, firstOrderBonus, referralBonus, birthdayBonus, and reviewBonus, and keep enableOrderPoints on so every order earns. In Notifications switch on earn, redeem, tier-upgrade, and near-expiry alerts with expiryNoticeDays. In Display switch on product, cart, and checkout visibility with a custom message.

  6. Tie loyalty to the customer profile and watch top consumers

    Open /dashboard/crm, then the customer profile and its loyalty tab to review pointsBalance, tier, and both histories, using earnPoints, redeemPoints, and updateTier when needed. Review the Top Consumers and Redemption Orders tabs on the loyalty page for the highest-point customers and orders that consumed rewards (GET /api/dashboard/loyalty-programs/top-consumers and GET /api/loyalty/redemption-orders).

  7. Test redemption at checkout and watch the order

    Place a test order with a customer email that holds a balance: the loyalty section shows the balance and eligible rewards, pick one to see a loyaltyDiscount line in the total, complete the order, then confirm pointsCost was deducted from data.loyalty with an entry in redeemedHistory and in redemption orders flagged isLoyalty.

Frequently asked questions

Where is the loyalty-program page in the dashboard?

At /dashboard/loyalty-programs in the sidebar (Loyalty). The page has eight tabs — general, tiers, rewards, earning, notifications, display, top consumers, and redemption orders — with stat cards and a save action.

How are each order's points calculated?

When the amount passes minOrderAmount, points come from pointsPerCurrency times the tier multiplier, plus pointsPerOrder, respecting minPointsPerOrder and maxEarnedPointsPerOrder, then they are added to pointsBalance with an earn entry and an automatic tier upgrade.

What reward types exist and how do they appear at checkout?

Three types: discount with a percentage or fixed value, free_shipping, and gift with a set product. Only active rewards with a checkout or both display location appear at checkout, marked isEligible when the balance covers pointsCost, with auto-apply supported through isAutoApply.

Is loyalty linked to the customer profile in CRM?

Yes. The balance, tier, and both histories live in data.loyalty on the same CRMCustomer document that checkout reads, and the profile's loyalty tab shows them with add-points, redeem, and tier-change actions.

How does loyalty drive repeat purchase?

The customer earns on every order, so a visible balance pulls them back to redeem, tiers with multipliers and auto-apply rewards lift basket value, and the top-consumers and redemption-orders tabs reveal repeat buyers for WhatsApp or coupon follow-up.

Can the AI assistant manage points?

Yes, within your permissions. The Copilot loyalty tools cover summary, settings, rewards, add-points, redeem, redemptions, and top consumers; reads need loyalty:view, writes need loyalty:edit, and every mutation waits for confirmation.

What happens to points when a reward is used?

Its pointsCost is deducted from pointsBalance on the same customer document and recorded in redeemedHistory, the order appears in redemption orders with an isLoyalty loyalty discount, and the tier can step down automatically if the balance falls below the threshold.

Troubleshooting

1) If the loyalty page does not appear, check the staff loyalty:view permission; saving, adding, and deleting need loyalty:edit, create, and delete, and the store owner holds all of them. 2) If a reward does not appear at checkout, confirm isActive and that displayLocation is checkout or both, and that the customer balance covers pointsCost (isEligible). 3) If an order earned no points, confirm the program is enabled, enableOrderPoints is on, the amount passed minOrderAmount, and the customer matched by email or phone inside the same store and is not archived. 4) If the checkout loyalty section disappears, the program is usually disabled or the customer has neither balance nor rewards; the section stays hidden when both are zero. 5) A dash in the customer risk gauge means the result is unavailable, not low risk, and it is unrelated to the loyalty balance. 6) Redemption orders are read from orders carrying an isLoyalty discount; an ordinary order without a reward never appears there. 7) If WhatsApp cannot reach loyalty customers, confirm a WhatsApp Business account is connected; loyalty itself does not send WhatsApp automatically.

Important limitations

• Points are earned only on orders above minOrderAmount, not on every store interaction. • A reward redeems only with a sufficient balance; there is no partial redemption with short points. • Archiving does not delete the balance, but it removes the customer from search and checkout matching, so the next purchase creates a fresh record without the old balance. • Delivery of business-initiated WhatsApp messages depends on Meta and requires a connected WhatsApp Business account. • The risk score is a cash-on-delivery evaluation signal, not an automatic blocker and not part of the points math.

Related links

تواصل معنا على واتساب