Value & incrementality Economics & liability Member health Engagement Campaigns Operations

Member health

30-day window · vs. prior 30 days

Who's in the program, how engaged they are, and how they're moving between states. Active = earned or redeemed points in the last 90 days.

Identified user → member → active funnel
Identified users i
2,800,000
Account, app, or known identity
30.3%
penetration i
Members i
847,392
Opted into program
60.5%
active rate i
Active members i
512,890
Earned or redeemed in 90d
Members by state
847,392 total
60.5%
28.3%
11.2%
Active Earned or redeemed in last 90d 512,890
Dormant i Was active, now lapsed → win-back 240,000
↳ 91d–1yr Recent — high recovery potential 140,000
↳ 1–2yr Mid — moderate recovery 70,000
↳ 2yr+ Deep — recovery rare, marketing noise 30,000
Never activated i Opted in, never earned → onboarding 94,502
Total members i
847,392
+3.2%
Active members i
512,890
+1.8%
Active rate i
60.5%
+0.9pp
New opt-ins i
18,420
−4.1%
Member state flow
Movement in last 30 days
New opt-ins i
+18,420
Newly activated i
+14,250
Reactivated i
+6,890
Newly dormant i
−22,140
Opted out i
−480
Net active change i: −1,000
Tier distribution & movement
Near-tier i: 28,400
Tier Members Share Moved up i Moved down i
Bronze 412,000 80.3% +2,100 −4,800
Silver 78,500 15.3% +1,200 −900
Gold 19,200 3.7% +340 −180
Platinum 3,190 0.6% +45 −28
Cohort retention — active rate by months since opt-in i
Darker = higher retention
Cohort M0 M3 M6 M9 M12
Jan 2025 100% 68% 54% 48% 45%
Feb 2025 100% 71% 56% 50% 46%
Mar 2025 100% 73% 58% 52%
Apr 2025 100% 75% 61%
May 2025 100% 76% 63%
Jun 2025 100% 77% 64%

Reading this: Jun cohort holds 64% active at M6 vs. Jan's 54% — retention is improving for newer cohorts by ~10pp at the six-month mark.

Economics & liability

30-day window · TTM where noted

What the program is costing and what it's carrying on the balance sheet. Cost basis: 1 point = ¥1 (customer-perceived redemption value, ASC 606 liability basis). Points expire 24 months from issuance.

Outstanding liability i
¥487M
+1.8% MoM
Lifetime breakage i
22.4%
−2.1pp YoY
Cost / active (TTM) i
¥520
+8.4% YoY
Cost / member (TTM) i
¥315
+6.1% YoY
Points flow
Last 30 days
Issued i
+28.4M
+¥28.4M liability
Redeemed i
−16.2M
¥16.2M cash cost
Expired i
−3.5M
¥3.5M liability cleared
Net change i
+8.7M
+¥8.7M net liability
Outstanding liability by age
Total: 487M pts · ¥487M
0–6 months
195M pts
40% · ¥195M
6–12 months
142M pts
29% · ¥142M
12–18 months
105M pts
22% · ¥105M
18–24 months i
45M pts
9% · ¥45M

Reading this: ¥45M of liability is set to expire in the next 6 months. A use-it-or-lose-it campaign turns part of it into redemption cost (real cash out); the rest releases as breakage (a savings line).

Breakage trend i
Last 6 quarters
26.1%
Q3 '24
25.3%
Q4 '24
24.5%
Q1 '25
23.8%
Q2 '25
23.0%
Q3 '25
22.4%
Q4 '25

Reading this: breakage is falling steadily — members are redeeming more of what they earn. Good for engagement, bad for cost. Each 1pp drop adds ~¥4.87M to projected redemption cost on the current outstanding balance.

Unit economics — cost per active member (TTM)
¥520 per active
¥380 · 73%
¥100 · 19%
¥40 · 8%
Redemption cost i Triggered when points are exchanged for rewards ¥380
Welcome bonus i Awarded at program opt-in (one-time) ¥100
Promo bonuses i Campaign-driven bonus point awards ¥40

Cost/active has risen from ¥480 to ¥520 over the last 4 quarters — almost entirely driven by lower breakage (members redeeming more of what they earn), not by richer promos.

Issuance cohort redemption — cumulative redemption rate by months elapsed i
Darker = more redeemed
Issuance cohort M0 M6 M12 M18 M24
Jan 2024 0% 41% 57% 66% 71%
Apr 2024 0% 43% 59% 68% 73%
Jul 2024 0% 45% 60% 70%
Oct 2024 0% 46% 62%
Jan 2025 0% 48% 64%
Apr 2025 0% 49%

Reading this: Apr 2024 cohort hit 73% redemption by M24 (= 27% breakage). Jan 2024 hit only 71% (= 29% breakage). Newer cohorts are redeeming faster at every age — same pattern as the headline breakage trend, but visible at the issuance level.

Engagement & behaviour

30-day window · 90d / TTM where noted

What members actually do. Earn cadence, redemption velocity, time-to-first-redemption, reward catalog mix, and tier-specific behavioural differences.

Earn events / active (30d) i
4.2
+7.7% YoY
Redemption rate (90d) i
38%
+2.1pp YoY
Median TTFR i
42d
−5d YoY
Top 3 reward share i
71%
−2.4pp YoY
Engagement segments i
512,890 active members
Segment Members Earn events/mo i ¥ earned/mo i 90d redeem rate ¥ redeemed/yr
Power users i 51,289 22 ¥280 92% ¥1,400
Engaged regulars 307,734 3 ¥38 38% ¥380
Light engagers i 153,867 0.8 ¥14 11% ¥80

Reading this: top 10% generate ~51% of all earn value (51,289 × ¥280 ≈ ¥14.4M of ¥28.4M monthly issuance). Light engagers are 30% of the base but only ~8% of value (¥2.2M), and 89% of them didn't redeem in the last 90 days. The strategic question: deepen power users (already loyal) or convert regulars upward (bigger pool, lower hit rate)?

Time to first redemption (TTFR)
Cumulative % of activated members
Within 30 days
28%
Within 60 days
47%
Within 90 days
58%
Within 180 days
67%
Within 365 days
73%
Still no redemption i
27%

Reading this: 58% redeem within 90 days; the curve flattens dramatically after that. The Day 0–90 window is where retention is largely won or lost. The 27% who never redeem accumulate liability without ever closing the loop — onboarding intervention here moves the needle on both engagement and economics.

Reward catalog mix i
Top 3 = 71% of redemption value
¥500 off coupon
32%
¥1,000 off coupon
24%
Free coffee (café partner)
15%
Amazon gift card
9%
Free snack item
6%
ANA mileage transfer
5%
Suica top-up
4%
Premium product upgrade
3%
Charity donation
2%

Reading this: cash discounts (top 2) drive 56% of redemption value — same shape as most JP point programs. "Free coffee" is the hero non-cash item. Healthy catalogs have a long tail; over-concentration (top 3 above ~80%) signals the program would survive on those 3 items alone, which is fragile if any one is discontinued.

Engagement by tier
Same tiers as Member health
Tier Members Earn events/mo i ¥ earned/mo i 90d redeem rate ¥ redeemed/yr
Bronze 412,000 2.5 ¥35 24% ¥200
Silver 78,500 8 ¥100 51% ¥720
Gold 19,200 18 ¥235 78% ¥2,050
Platinum 3,190 30 ¥500 93% ¥4,600

Reading this: Platinum (0.6% of active) redeems 23× more value per member than Bronze. Gold + Platinum together = 4.3% of active members but ~28% of all redemption value. Tiers aren't just status labels — they map to fundamentally different engagement intensities, which is why tier-specific economics in the Value tab will matter more than aggregate per-member numbers.

Value & incrementality

TTM · matched-cohort attribution

Does the program drive value, or pay loyal customers to do what they would have done anyway? Combines member transaction data (revenue side) with attribution analysis (incrementality side). Default method: matched-cohort comparison. Gross margin assumption: 25%.

Revenue / active (TTM) i
¥66k
+4.2% YoY
Naive lift i
+175%
selection-biased
Incremental lift i
+28%
95% CI: 23–33%
Program ROI i
7.0×
+0.3× YoY
Member vs non-member — raw comparison
Naive · selection bias not controlled
Metric Members Non-members Difference
Spend / customer / yr ¥66,000 ¥24,000 +175%
Avg basket size ¥1,300 ¥920 +41%
Visits / month 4.2 2.2 +91%
Gross margin / customer / yr (@25%) ¥16,500 ¥6,000 +¥10,500

Reading this: members spend 2.75× more than non-members. But the question isn't whether members spend more — they do — it's how much of that gap is caused by the program vs. self-selection (high-spending customers prefer programs). The next card unpacks that.

Attribution methods — estimating true lift i
Selected: matched cohort (+28%)
Naive comparison i
+175%
Pre / post enrollment i
+52%
Matched cohort i
+28%
Holdout experiment i

Reading this: methods disagree by a factor of 6×. Naive (175%) treats selection bias as program effect. Matched-cohort (28%) is our default — defensible but assumes we've matched on the right covariates. The only way to know for sure is a randomized holdout, which the program doesn't currently run. Worth considering — even a small holdout (1–2% of new opt-ins held out for 12 months) would validate or refute the matched-cohort number.

Net program value — annual P&L impact
Based on +28% matched-cohort lift
Total incremental margin i +¥1,874M
Total program cost i −¥267M
Net P&L impact +¥1,607M
ROI 7.0×

Reading this: assuming the +28% incrementality estimate is right, the program contributes ¥1.6B annually to gross margin after costs. Sensitivity: a ±5pp shift in incremental lift moves net P&L by ±¥335M. A more conservative GM assumption (20%) drops net P&L to ¥1.23B; a more aggressive one (30%) lifts it to ¥1.98B.

ROI by tier — where is the program's leverage strongest?
Per-member, annual
Tier Spend/yr Lift i Incr. margin/yr Cost/yr Net/yr ROI
Bronze ¥42,000 +32% ¥2,545 ¥340 ¥2,205 7.5×
Silver ¥120,000 +28% ¥6,560 ¥860 ¥5,700 7.6×
Gold ¥282,000 +22% ¥12,710 ¥2,190 ¥10,520 5.8×
Platinum ¥600,000 +18% ¥22,880 ¥4,740 ¥18,140 4.8×

Reading this: Bronze and Silver have the highest ROI (~7.5×); Platinum the lowest (4.8×). Counter-intuitive but real — high-tier members are already loyal, so the program has less behaviour to change. Platinum still contributes more absolute value per member (¥18,140 net vs Bronze's ¥2,205), so don't read this as "neglect Platinum." Read it as: the program's marginal leverage is strongest in mid-tier, which has implications for where to spend incremental promo budget.

Methodology & caveats. Gross margin: 25% (category-blended; adjustable in the model). Attribution: matched cohort on pre-enrollment behavior + demographics, refreshed quarterly. Confidence: 95% CI ±5pp on the incremental lift estimate. Cost basis: liability-released (¥520/active/yr). True cash impact may be lower if redemption rewards carry meaningful margin — see the fulfillment-cost note in Economics. The ROI shown is conservatively understated to that extent. Not running: randomized holdout. Single biggest data gap; would validate the matched-cohort estimate.

Reference · How matched cohort attribution works

The problem it solves

Members spend ¥66,000/yr. Non-members spend ¥24,000/yr. The naive read is "the program adds ¥42,000 per member." That's almost certainly wrong because of selection bias — people who join loyalty programs are systematically different from those who don't. They might be higher-income, more brand-loyal, or more frequent shoppers regardless of any program. If those factors alone explain the gap, the program adds nothing; it just attracts customers who were going to spend a lot anyway.

Matched cohort exists to strip out selection bias.

The core idea

For every member, find a non-member who looks just like them on everything observable — except program membership. Compare what the member did to what their matched counterpart did. If members systematically out-perform their matches, that difference is more plausibly attributable to the program.

The technique comes from epidemiology, where you can't randomize patients into "gets the drug" vs "doesn't" if the drug is already available. So you match treated patients to similar untreated ones on age, sex, severity, etc., and compare outcomes. Same logic here.

How matching actually happens

Pick a set of matching variables — things observable about a customer before they joined. Typical for retail loyalty:

  • Pre-enrollment spend (¥ in 6–12 months before join date)
  • Pre-enrollment frequency (visits per month)
  • Pre-enrollment basket size
  • Pre-enrollment category mix
  • Tenure as customer
  • Demographics (age band, postcode, gender if available)
  • Channel mix (store vs online)
  • Recency (when they last transacted)

Then run a matching algorithm. Two common approaches:

  • Nearest-neighbor matching — for each member, find the non-member with smallest distance across all variables.
  • Propensity score matching — compute each customer's "probability of being a member" given their characteristics, then match members to non-members with similar scores.

Both produce member–non-member pairs that look statistically indistinguishable on the matched variables. Example pair:

Variable Maki (member) Yuki (matched non-member)
Pre-enrollment annual spend¥38,000¥39,500
Visits / mo pre-enrollment1.41.5
Avg basket pre-enrollment¥2,300¥2,200
Age band30–4030–40
Postcode regionTokyo-23kuTokyo-23ku

These two look identical before the join date. The only meaningful difference: Maki joined the program in early 2024, Yuki did not. Repeat for every member.

Estimating lift from the matched set

Compare post-enrollment outcomes:

Members (matched) Non-members (matched)
Post-period annual spend¥66,000¥51,500
Matched-cohort lift = (66,000 − 51,500) / 51,500 = +28.2%

Notice the counterfactual jumped from ¥24,000 (whole non-member average) to ¥51,500 (matched non-member average). That ¥27,500 difference is the selection bias — the part of the original gap that wasn't program-caused. Matched cohort surgically removes it. The remaining ¥14,500 is what we attribute to the program.

What it controls for, and what it doesn't

Controls for: anything matched on. Differences on those dimensions are netted out by construction.

Doesn't control for: anything unobservable or not matched. The residual bias sources to worry about:

  • Unobservable preferences — a customer about to fall in love with the brand may join because they're about to spend more, not the reverse.
  • Concurrent life events — the member moved closer to the store, got a raise, had a baby. The matched non-member didn't.
  • Joining-moment commitment — at the moment of joining, the member is in "engaged mode." That energy alone might drive short-term lift independent of program mechanics.

This residual bias is why matched cohort tends to over-estimate true causal lift. The matchable variables are a partial proxy for the unmatchable ones. A program that genuinely drives +20% might show +28% in matched cohort and +175% naive.

Why ±5pp confidence interval, not narrower

Three sources of statistical noise:

  • Sample size — even with hundreds of thousands of pairs, sampling variance on the mean difference is ±1–2pp.
  • Matching imperfection — matches are close but not identical; residual within-pair difference adds noise.
  • Period sensitivity — a single 12-month window catches macro effects (seasonality, competitor moves). Different windows give different estimates.

The ±5pp confidence interval bundles these. Honest interpretation: "the true matched-cohort lift is between 23–33% — but the true causal lift could be different still, because methodological bias isn't captured in this CI."

Why it's still the standard

  • Uses data you already have — no experimental design needed.
  • Peer-reviewed methodology, defensible.
  • A step-change better than naive comparison.
  • Can be re-run quarterly without disrupting the program.

To do better, you need experiments — and most programs don't run them, because the operational cost of denying customers loyalty is real. The next reference unpacks that.

Operating posture

When the dashboard says "+28% lift, 95% CI 23–33%":

  • For planning (budgets, targets): use the point estimate, 28%.
  • For risk-aware decisions (will the program still be worth it under stress?): use the lower bound, 23%, which gives net P&L of ~¥1.27B instead of ¥1.6B.
  • For pushing back on the +175% naive number: the matched-cohort estimate is the defense — "yes, members spend 175% more, but most of that is who they are, not what we did."
  • For improving the estimate: argue for a small holdout (see next reference).
Reference · Holdout experiments — the gold standard

What it is

Randomly select a subset of customers who would qualify for the program (would see the sign-up prompt, fit the eligibility criteria, etc.) and exclude them from it entirely. Compare what these excluded customers do over time to comparable customers who did get the program. The difference is unambiguously program-attributable, because the only thing that differed between the two groups was random assignment.

Why it's the gold standard

Randomization eliminates all selection bias — observable AND unobservable. With matched cohort, you control for what you can measure. With a holdout, you control for everything by construction, because the two groups are statistically identical except for one variable: program access.

Same reason randomized controlled trials are gold standard in medicine. Observational studies can suggest causality; only randomization can prove it.

How it actually works

  • Pick the moment of exposure — every customer who hits the sign-up landing page, or every new transaction without a member ID, or every cart-completion event.
  • Apply randomization at that moment — e.g. 1% of those interactions are silently routed to a "no program" experience.
  • Track both groups over a fixed period (12 months is typical). Treatment group: enrolled in program. Control: never offered it.
  • At the end, compare any outcome metric: spend, frequency, retention, basket size.

The difference between treatment and control on that metric is the causal lift.

Why most programs don't run them

Three real costs:

  • Lost revenue / margin — customers in the control group might have spent more if they'd joined. You're deliberately leaving money on the table to learn.
  • Customer experience — some excluded customers will be confused or frustrated ("I tried to join but couldn't"). Requires careful UX to avoid creating real annoyance.
  • Political resistance — someone has to defend "we deliberately denied these customers the program" to executives, partners, and possibly regulators.

These costs are real. The dashboard flags "not running" rather than pretending the gap doesn't exist.

The hybrid approach (recommended)

You don't have to do a giant experiment to get value. Small holdouts work:

  • Hold out 1–2% of new opt-ins for 12 months (a few thousand customers depending on volume).
  • Track them as a control group.
  • Compare to a matched sample of joiners.
  • Once you have a holdout-based lift estimate, calibrate your matched-cohort estimate against it.

Example: matched cohort says +28%. Holdout says +21%. Calibration factor = 21/28 = 0.75. Future matched-cohort estimates can be multiplied by 0.75 to approximate the true causal estimate, without running a fresh experiment every time.

This pattern is becoming standard practice at retailers with mature data science teams. The small holdout doesn't have to be permanent — a single 12-month window gives you a defensible calibration factor.

Practical implementation considerations

  • Power calculation — how big does the holdout need to be? Depends on baseline spend variance and expected effect size. Typical retail loyalty: a few thousand customers per arm to detect lifts of 5pp or more.
  • Randomization point — must happen before the customer makes a join decision. Randomizing among existing members is too late.
  • Non-compliance — some control-group customers will find other ways to join (different channel, different store). Need to handle "intent to treat" vs "treatment received" properly.
  • Reporting — at the end of 12 months, the lift estimate has a confidence interval too — typically narrower than matched cohort's, but still non-zero.

The honest summary

Matched cohort is the best estimate from observational data. Holdout is the best estimate from experimental data. The deepest version of "what's the program worth?" is the holdout number — which is why "not running" is the single most consequential line on the methodology note above.

Campaigns

The operational layer · TTM where noted

Where insights become action. Lifecycle programs running today, recent A/B test learnings, channel performance, and member contact frequency. The three hooks from earlier tabs (onboarding, near-tier, use-it-or-lose-it) appear here as named lifecycle programs.

Active programs i
6
+2 vs prior yr
Aggregate response rate i
21%
+1.4pp YoY
Campaign-driven revenue (TTM) i
¥756M
+12% YoY
Campaign ROI i
18×
−2× YoY
Programs by funnel stage i
6 programs across 5 funnel stages
Campaign Type Audience (TTM) Response i Net contribution (TTM)
Stage 1 · Acquisition i
Sign-up promo i Continuous 412k 8.2% opt-in i +¥98M
Stage 2 · First earn i
Welcome / first-earn series i Always-on 221k 71% first earn i +¥84M
Stage 3 · First redemption i
First-redemption push i Triggered 87k 28% first redeem i +¥124M
Stage 4 · Habitual engagement i
Near-tier nudge i Always-on 113k 31% upgrade i +¥138M
Use-it-or-lose-it i Quarterly 49.6k 52% redeem i Liability mgmt
Stage 4b · Lapsed recovery i
Win-back i Quarterly 568k 9.4% reactivate i +¥312M

Reading this: organized top-to-bottom as a funnel from acquisition through to lapsed recovery. The shape of contribution by stage tells you where the program's leverage sits — Stage 4b (Win-back) generates the most absolute revenue because the dormant base is huge, but Stage 3 (First-redemption push) is the highest-leverage operationally — every member moved from "earned but never redeemed" into the active loop reduces future churn risk and converts dormant liability into engagement. Stage 1 (Sign-up promo) now appears explicitly — previously hidden as "pre-program" marketing. Use-it-or-lose-it isn't measured in revenue terms; it deliberately converts breakage savings into engagement spend, with the upside captured later in member retention rather than here.

Recent A/B test learnings i
Last 90 days · concluded
Test Winner Lift Significance
Onboarding push timing: Day 3 vs Day 7 Day 3 +4.1pp activation 95% CI
Email subject: bonus pts vs ¥ off framing Bonus pts +6.2pp open rate 99% CI
Win-back incentive: 200pt bonus vs ¥500 coupon ¥500 coupon +2.3pp reactivate 90% CI
Near-tier message tone: status vs value framing Value framing +5.0pp upgrade 95% CI

Reading this: the "¥500 coupon vs 200pt bonus" win is mathematically odd — both reward ¥500, but framing as a coupon outperforms framing as points. That's a real, measurable preference for concrete cash-value framing over abstract points. The ¥500 coupon is also cheaper to fulfill (single-use, doesn't sit in liability), so it's a double win. Worth replicating across other point-incentive campaigns.

Channel performance
Last 30 days · across all campaigns
Channel Reach (active/mo) Open / view rate Response rate Cost / response
Email 462k 28% 5.2% ¥8
Push (app) 188k 41% 9.1% ¥3
In-app banner 145k 62% 12.4% ¥2
SMS 51k 88% 14.2% ¥35
In-store (receipt / POS) 198k n/a 18.5% ¥1

Reading this: in-store and in-app are highest-conversion, lowest-cost — but reach is constrained (only members who visit / open the app see them). Email is the workhorse — biggest reach, modest response. SMS converts well but costs 10× push; reserve for high-value moments. The strategic principle: match channel cost to campaign value. Don't SMS for a near-tier nudge; do SMS for an at-risk Platinum member.

Member contact frequency i
Last 30 days
Segment Avg msgs/mo 5+ msgs (% of segment) i
Power users 3.8 42%
Engaged regulars 2.1 8%
Light engagers 2.6 14%

Reading this: 18% of active members received 5+ messages last month, approaching the common fatigue threshold of 5–7/mo. The pattern is more interesting than the headline — Light engagers see more touches than Engaged regulars (2.6 vs 2.1) despite contributing far less value, because they trigger more "intervention" campaigns (win-back, first-redemption push, onboarding re-engagement). This is a known anti-pattern: members who don't respond keep getting messaged because they don't respond, accelerating their drift toward dormancy rather than reversing it.

Operations

Systems health · last 30 days

The hygiene layer. Transaction processing, customer service tickets, fraud signals, and partner integrations. Everything analytical in the other tabs breaks silently if the operational layer underneath fails — point awards that don't post become CS tickets become unsubscribes.

System uptime (30d) i
99.94%
above 99.9% SLA
Earn success rate (30d) i
99.87%
+0.04pp MoM
CS tickets (30d) i
4,820
−3% MoM
Open fraud cases i
142
+8% MoM
Transaction processing health
Last 30 days · all integration points
Integration Volume (30d) Success rate Avg latency Top failure cause
POS in-store 12.4M 99.91% 142ms Network timeout (62%)
Mobile app 8.2M 99.95% 89ms Auth expired (44%)
Web checkout i 3.1M 99.83% 218ms Backend timeout (51%)
Partner sync i 184k 99.42% 1.2s Partner API errors (78%)

Reading this: 99.x% looks fine until you multiply by volume. 0.09% failure on 12.4M POS transactions = ~11,000 failed point-earns per month, which is roughly the volume showing up as "didn't get my points" tickets in the next card. The headline ratio is healthy; the absolute count drives operational load.

Recent incidents: 14 May POS sync delay (43m, ~8k members affected). 22 May partner API timeout cascade (12m, ~800 members). Both within recovery SLA.

Customer service tickets
4,820 tickets last 30 days · loyalty-tagged
Category Tickets % of total Avg resolution Preventable?
"Didn't receive points" 1,842 38% 2.4d Largely — POS reliability
"Can't redeem" 712 15% 1.1d Some — partner sync issues
"Account access" 685 14% 0.8d Mostly — auth UX
"Points expired" i 528 11% 1.2d Yes — communications
"Tier change question" 418 9% 0.5d Sometimes — tier transparency
Other 635 13% 1.6d Various

Reading this: 38% of all loyalty tickets are "didn't receive points" — and the math from the previous card explains why: ~11k failed earns × a fraction that complain ≈ ~1,800 tickets. The single biggest customer service investment isn't more agents — it's POS reliability. Every 0.01pp improvement in earn success rate eliminates ~120 tickets/month at the source.

Fraud & abuse signals
TTM losses · ¥8.2M (0.05% of reward value)
Pattern Flagged (30d) Investigating Confirmed (TTM) Loss (TTM)
Welcome bonus abuse i 1,840 89 412 ¥412k
Receipt manipulation i 290 31 67 ¥3.1M
Account takeover i 142 28 71 ¥2.8M
Coupon abuse / coordination 78 8 22 ¥1.9M

Reading this: welcome bonus abuse is the most common (high volume, low value per incident); receipt manipulation is the most expensive (low volume, high value per incident). The ¥8.2M TTM loss is small relative to the ¥267M annual program cost (3%) — but it's also a sign the controls are working. Programs with zero fraud signals usually aren't catching anything, they're just blind.

Partner integration health
Last 30 days · external redemption partners
Partner Transactions Success rate Avg fulfillment SLA status
Amazon gift cards 84k 99.71% 4 min Within SLA
ANA mileage transfer i 26k 99.32% 2.1d At threshold
Suica top-up 51k 99.94% 7s Within SLA
Charity donations 8k 99.98% Instant Within SLA

Reading this: ANA mileage transfer's 2.1-day fulfillment is by design (daily batch) but at the edge of what members tolerate. The other partners all settle in seconds to minutes, which sets the implicit member expectation — ANA looks slow by comparison even though it meets its own SLA. The fix isn't technical, it's communications: tell members upfront "delivered within 48 hours" rather than letting them wonder.

Data freshness & reconciliation. Loyalty platform data current as of dashboard sync (top right). POS data lag: <15 min. Partner sync lag: 1–24 hr depending on partner. Liability reconciliation last completed: 25 May 2026 (variance: −0.2% vs reported). Next scheduled: 28 Jun 2026. Identity dedup: 2,103 duplicate-member candidates in review (0.25% of base). Resolution pipeline operating normally.