Loyalty Program Overview
The loyalty program rewards customers for riding with your fleet. Customers earn points for rides, achieve tiers for additional benefits, and can refer friends for bonus rewards.
Navigation
Access the Loyalty Program from Dashboard > Loyalty in the sidebar.
Program Components
The loyalty program is made up of five independent pieces. You can enable points-only and stop there, or layer in the rest as you grow.
| Component | What it does | Where to configure |
|---|---|---|
| Points | Customers earn points on every ride and redeem them as wallet credit | Loyalty → Settings |
| Tiers | Frequent-rider status levels with per-ride discounts and benefits | Loyalty → Tiers |
| Achievements | Permanent badges for lifetime milestones (first ride, 100 rides, 100 km, etc.) | Loyalty → Achievements |
| Challenges | Time-limited goals that drive specific behavior (weekend rides, etc.) | Loyalty → Challenges |
| Referrals | Riders earn wallet credit for inviting new riders | Loyalty → Referrals |
See the linked guides for the deeper detail on each.
Enabling the Loyalty Program
Setup
- Navigate to Loyalty in the sidebar
- Click Settings (top right of the main Loyalty page)
- Toggle Enable Loyalty Program on
- Set your earn rate, redemption rate, and any optional limits
- Save changes
A loyalty_settings row is automatically created the first time you open the page. Until you flip the toggle on, no points are awarded — riders can ride normally, you're just not running a program yet.
Basic Configuration
These are the only settings that live on the main Loyalty settings modal. Tier benefits, achievement rewards, challenge rewards, and referral payouts are all configured on their own tabs.
| Setting | Description | Default |
|---|---|---|
| Earn rate (points per dollar) | Points awarded for each $1 of ride cost | 10 |
| Redemption rate | Dollar value of one point when redeemed (0.01 = 100 pts → $1) | 0.01 |
| Min redemption | Minimum point balance required to redeem | 100 |
| Max redemption | Optional cap on points redeemed per transaction | — |
| Points expiration (days) | Points expire after this many days of account inactivity (leave blank for never) | — |
| Streak bonus | Optional daily bonus points for consecutive ride days | Off |
Defaults are conservative
Settings start at sensible values, but the program does nothing until you toggle "Enable" on. You can tune the numbers first and flip it on once you're happy.
Earning Points
Points are awarded automatically when a ride ends. There are four places points can come from:
1. Ride spend (always on)
The base earn rate from Settings:
Points = Ride Cost × Earn rate per dollar
Example: A $4.50 ride at the default 10 pts/$ earns 45 points.
If the rider's tier includes a points multiplier (e.g. 1.5×), it's applied here.
2. Parking zone bonus (optional)
Zones can be marked as preferred parking and given a per-ride bonus. When a rider ends a ride inside that zone's geofence, the bonus points are added on top of the ride-spend points. Configure per zone in Zones → Edit zone → Parking reward points. See the Parking rewards guide for details.
3. Streak bonus (optional)
If you enable streak bonuses in Settings, riders earn an extra fixed amount of points for each consecutive day they take a ride, up to a daily cap.
4. Achievements & challenges (optional)
Achievements award one-time bonuses for hitting milestones (first ride, 100 rides, 100 km, etc.). Challenges award time-limited bonuses for specific behaviors (5 weekend rides this month, etc.). Both fire automatically — riders don't have to claim anything.
5. Referrals (optional)
Successful referrals pay out wallet credit directly (not points) when the new rider completes their first qualifying ride. See the Referrals guide.
Loyalty Dashboard
What riders see in the mobile app
The Loyalty screen in the rider app shows:
- Current points balance
- Current tier, with a progress bar to the next tier
- Free unlocks remaining this month (if their tier includes any)
- Recent transactions (earn / redeem / bonus / expiration)
- Redeem button to convert points to wallet credit
- Referral code and share sheet
What operators see in the dashboard
The main Loyalty page (/dashboard/loyalty) gives you:
- Program status (enabled / disabled), with a button to open Settings
- Headline stats: total members, points in circulation, lifetime issued, lifetime redeemed
- Leaderboard of top earners
- Customer search — open any rider to see their balance, tier, and full transaction history
- An Adjust Points button on each customer (add or subtract, with a required reason)
The tier / achievement / challenge / referral tabs each have their own management UI.
Audit Trail
Every manual point adjustment is recorded in loyalty_transactions with the operator's note. Use clear reasons — they're visible to anyone who reviews the customer later.
How Redemption Actually Works
There is no rewards catalog to configure. The redemption model is intentionally simple: points convert to wallet credit at a flat rate, and tier benefits handle ride-level perks.
Converting points to wallet credit
A rider opens the Loyalty screen in the app, taps Redeem, chooses how many points to convert, and the equivalent wallet credit is added instantly.
Wallet credit = Points redeemed × Redemption rate
Example: At the default 0.01 redemption rate, 500 points → $5.00 of wallet credit. The wallet credit then applies to the rider's next ride automatically.
You control:
- Redemption rate — how much one point is worth in dollars
- Min redemption — smallest redeemable amount (prevents 1-point redemptions)
- Max redemption — optional cap per transaction
Tier-based perks (no points spent)
Tier benefits are applied automatically at ride start — riders don't spend points to get them:
- Per-ride unlock fee discount (% off)
- Per-minute rate discount (% off the time charge)
- Free unlocks per month (waive the unlock fee N times per calendar month)
- Points multiplier on what they earn from rides
These are configured per tier in Loyalty → Tiers. See the Tiers guide and the Free Unlocks guide.
Bonus rewards from challenges
Challenges can pay out a wallet credit or free unlock bonus on completion in addition to points. Configure these on each challenge. See the Challenges guide.
Points Expiration
Configuring Expiration
Set Points expiration (days) in Settings:
- Leave blank → points never expire.
- Set to a number (e.g. 365) → points expire that many days after the rider's last loyalty activity (any earn, adjustment, or redemption resets the clock).
A daily cron job runs the expiration sweep and writes an expiration transaction to each affected rider's history, so you always have an audit trail of what expired and when.
No advance notifications yet
We don't currently send "your points are about to expire" emails or push notifications. If you set an expiration window, surface it clearly to riders in your own onboarding or marketing comms. We're tracking proactive expiration reminders as a future enhancement.
What keeps points from expiring
The expiration clock resets whenever the rider has any loyalty activity:
- A completed ride that earns points
- A points redemption
- A manual adjustment (positive or negative)
Program Analytics
Key Metrics
Monitor program health:
| Metric | Target |
|---|---|
| Enrollment Rate | >80% of customers |
| Active Rate | >40% monthly |
| Redemption Rate | 30-50% |
| Points Value | Track liability |
Where to find these in the dashboard
- Points in circulation / lifetime issued / lifetime redeemed: top of the main Loyalty page
- Active members: leaderboard view shows recent earners; full transaction filtering is on each customer's loyalty detail
- Tier distribution: counts shown next to each tier in Loyalty → Tiers
- Achievement / challenge completion counts: shown on each item in their respective tabs
Best Practices
Point Value
Keep points valuable:
- Not too easy to earn
- Not too hard to redeem
- Clear value proposition
- Competitive with alternatives
Engagement
Drive ongoing engagement:
- Regular point-earning opportunities
- Achievable rewards
- Tier progression motivation
- Special promotions
Communication
Keep members informed:
- Points balance and tier progress are always visible in the rider app
- If you set an expiration window, surface it in your own onboarding / marketing comms (we don't send expiration warnings automatically yet)
- Announce new challenges in your operator channels — the mobile app shows featured challenges, but a push from your side drives more participation
Fraud Prevention
Protect the program:
- Monitor unusual point activity
- Limit referral abuse
- Cap daily earnings
- Review manual adjustments
Troubleshooting
Points Not Earned
If a rider didn't receive points for a ride:
- Confirm the ride completed normally (it ended, wasn't void/cancelled)
- Check that Enable Loyalty Program is on in Settings
- Check Earn rate per dollar isn't 0
- If everything looks right, open the rider in Loyalty and use Adjust Points to credit them with a clear reason
Redemption Failed
If a redemption didn't add wallet credit:
- Confirm the rider has at least the Min redemption balance
- Confirm the amount being redeemed is below the Max redemption cap, if you've set one
- Check the rider's transaction history in the dashboard — a
redeemrow will be there even if the wallet credit appears to be missing
Wrong Points Balance
If a balance seems off, the transaction history is the source of truth:
- Open the rider in Loyalty and review the full transaction list
- Look for
expirationrows (these reduce balance silently from the rider's perspective) - Look for
adjustmentrows from other operators - Use Adjust Points with a clear reason if you need to correct the balance
Need Help?
For loyalty program assistance, contact support@levyelectric.com.