The 0–100 Score
8 min read
The trust score is a number from 0 to 100 attached to every scored customer in your store. It’s the headline metric you see on the Dashboard, the customer list, the orders list, and the customer detail page. This guide explains exactly what the number means, how to read it, what makes it move, and how to use it in day-to-day operations.
What the Number Means #
The trust score is a behavioral risk indicator. Higher numbers mean a customer’s pattern of orders, refunds, coupons, disputes, and checkout behavior looks more like a reliable shopper. Lower numbers mean it looks more like the patterns of abuse or fraud that TrustLens is designed to detect.
The number is anchored at 50 = neutral baseline. Every customer with enough data starts at 50 and moves up or down based on what their behavior actually looks like in your store.
| Score | What It Means |
|---|---|
| 100 | Maximum trust. Either an allowlisted customer (kill-switch lock at 100) or a long-tenured customer with a very clean record and strong positive signals. |
| 70–99 | Above-average trust. Established repeat buyers with low refund rates and no abuse signals. |
| 50–69 | Neutral to mildly positive. Most customers sit here. Insufficient data to score otherwise, or a balanced mix of small positive and negative signals. |
| 30–49 | Early-warning territory. One or two negative signals — elevated return rate, a coupon-then-refund pattern, a country mismatch. |
| 10–29 | Likely abuse. Multiple negative signals adding up. The behavioral pattern is consistent with serial returners, coupon abusers, or low-tier fraud rings. |
| 0–9 | Confirmed abuse across multiple modules — disputes plus high return rate, linked accounts plus coupon abuse, etc. These customers cost real money. |
Anchoring Points #
A few specific scores have explicit meanings worth memorizing.
Score = 50 #
The base score, and also the score returned for customers who have not yet met the minimum-orders threshold (default 3). On the customer profile you’ll see the signal “Insufficient data (1/3 orders)” if this is why the score is 50.
A real, scored customer can also land at exactly 50 — it just means the positive and negative signals balanced out. Look at the signal breakdown to tell the difference.
Score = 100 #
Maximum possible. Two paths get a customer here:
- Allowlist: Toggling the allowlist on locks the customer at 100 and skips signal calculation entirely. Recommended for known VIPs and protected accounts.
- Earned 100: A customer with strong positive signals and the maximum account-age bonus (+15) can reach 100 organically. This is rare and means they’ve been a customer for over a year with a clean record and accumulated positive signals across multiple modules.
Score = 0 #
Minimum possible. Score is clamped at 0, but the internal sum can be much lower — a customer with a 90% return rate, three filed disputes, and four linked risky accounts might internally compute to -80 before being clamped. The clamp is what you see; the magnitude underneath is reflected in how many severe signals appear on the profile.
How the Score Moves #
Scores change only when behavior changes. The Dashboard’s 30-day trend line is the easiest way to see movement at a glance for a single customer (on their profile) or store-wide (on the Dashboard).
Typical Score Changes #
| Event | Typical Score Delta | Notes |
|---|---|---|
| First refund on an established customer | 0 to -5 | Single refund usually doesn’t move the rate enough to trigger a tier |
| Refund pushing rate above 25% | -10 | Crosses the “elevated” tier threshold |
| Refund pushing rate above 40% | -25 | Crosses the “high” tier threshold |
| Refund pushing rate above 60% | -40 | Crosses the “very high” tier threshold |
| Multiple full refunds (wardrobing pattern) | -10 | Triggered when full-refund ratio >= 90% with 3+ refunds |
| 2nd first-order coupon used | -15 | Coupons module penalty for repeat first-order signups |
| 3rd+ first-order coupon used | -25 | Higher tier of same pattern |
| Dispute filed | -20 to -50 | Severity depends on dispute count and outcome |
| Linked to 1 risky account | -25 | Fraud-ring indicator |
| Linked to 3+ accounts | -30 | Higher tier |
| Card-testing event on customer’s fingerprint | varies | Depends on velocity and recency |
| Crossing 3 months tenure | +5 | Account-age bonus kicks in |
| Crossing 6 months tenure | +10 (replaces +5) | Tier upgrade |
| Crossing 1 year tenure | +15 (replaces +10) | Maximum age bonus |
| 10+ completed orders with low refund rate | +10 | Orders module loyalty bonus |
| Clean chargeback history with 5+ orders | +10 | Chargebacks module positive signal |
Exact deltas depend on the module configurations, but the table above reflects the shipped defaults.
Reading the Score in Context #
The raw number is most useful when combined with three pieces of context.
1. Segment #
The score-to-segment mapping is the fastest interpretation. A score of 28 always means Risk; a score of 72 always means Trusted. See Six Customer Segments for treatment recommendations per segment.
2. Trend Direction #
A customer at 45 (Caution) is very different depending on which way they’re heading:
- 45 trending down from 65: Something just happened — recent refund, recent dispute. Investigate.
- 45 trending up from 25: Customer is recovering from a past issue. Watch but don’t act yet.
- 45 stable over months: Steady-state mediocre customer. Probably no action needed.
The Customer Detail page’s score history chart shows the trend explicitly.
3. Signal Density #
Two customers can have the same score for very different reasons:
- Score 35, one signal: One refund spike pushed return rate above the high threshold. Manageable risk.
- Score 35, six signals across four modules: Coordinated pattern — refunds and coupon abuse and linked accounts and shipping anomalies. Higher confidence the customer is actually abusive.
The signal count and module spread are visible directly on the profile. More modules implicating a customer is a stronger signal than one module spiking.
Score Stability #
Trust scores aim to be stable — small fluctuations from normal customer behavior shouldn’t move them around constantly. The design choices that produce this stability:
- Tiered thresholds. Return rate signals only fire at 25%, 40%, and 60%. A customer whose rate moves from 22% to 24% doesn’t change score; one whose rate crosses 25% does. This produces visible “step changes” rather than continuous noise.
- Minimum orders. Until the minimum-orders threshold is met, the score stays at 50. New customers don’t bounce around on incomplete data.
- Account-age bonus tiers. +5 → +10 → +15 are stepped at 3-month, 6-month, and 1-year milestones, not continuous, so the bonus doesn’t drift daily.
- Insufficient-data signals. If a module can’t emit a meaningful signal, it returns zero rather than guessing. Modules don’t make up data.
For an active customer, expect 3–10 score changes per year as their tenure and behavior actually evolve. Multiple changes per day usually mean an active situation (a card-testing attack, a rapid refund spree) and warrant a look.
Common Score Patterns #
A few patterns recur across stores and are worth recognizing.
The “Healthy Repeat Buyer” #
Score 75–85, segment Trusted, score has crept up over time. 6+ orders, low single-digit return rate, account-age bonus at +10 or +15. No abuse signals. These are your bread and butter.
The “Quiet VIP” #
Score 92–100, segment VIP. Either allowlisted (locked at 100) or organically there from years of clean behavior. Allowlist these even if they’re already at 100 — it protects them from future signal noise.
The “Suspicious New Account” #
Score 50, segment Normal, but with 1–2 negative signals visible. The minimum-orders short-circuit is keeping their score at 50 even though they’ve already triggered signals. Watch — once they cross the minimum-orders threshold, their score will drop suddenly.
The “Wardrobing Returner” #
Score 25–45, very high full-refund ratio. 3+ refunds where 90%+ were full refunds. Classic wardrobing pattern: order, wear/use, return for full refund.
The “Coupon Abuser” #
Score 20–40, signals dominated by Coupons module. Multiple first-order coupon usages across different accounts, often combined with linked-account signals. Usually one person creating throwaway accounts to grab new-customer discounts.
The “Fraud Ring Member” #
Score 0–15, signals from Linked Accounts plus at least one other module. Linked to multiple already-risky accounts. The score is often pinned at 0 by compound penalties.
The “Disputed Customer” #
Score 0–20, dominant signal from Chargebacks module. One or more filed disputes. Score depends on dispute count and outcome (lost disputes are weighted heavier than won).
Using the Score Operationally #
The number itself isn’t the action — the segment and signals are. But the raw score is useful for a few specific operational tasks:
| Task | Use the Score By |
|---|---|
| Sorting the customer list | Sort ascending to find your highest-risk customers |
| Filtering the WooCommerce orders list | Filter by segment via the trust badge column |
| Setting automation conditions (Pro) | Use trust_score thresholds — e.g. trust_score < 30 instead of segment = Risk if you want different behavior at 29 vs 10 |
| Exporting cohorts | Filter on score range before exporting CSV |
| Auditing scoring changes | Compare the trend chart against your operational events (new policies, coupon launches) |
For human moderation decisions, the segment is usually more useful than the raw score. The score is for sorting and automation rules where you want fine-grained thresholds.
Score Display Locations #
The same score is shown in several places, always the same value:
- Dashboard — store-wide average and 30-day trend
- Customers list — sortable column
- Customer Detail page — large headline, trend chart, signal breakdown
- WooCommerce orders list — trust badge column (segment color + score)
- Order edit page — score and segment displayed in a TrustLens meta box
- REST API — included in the customer endpoint payload
Updates propagate everywhere within a few minutes of a recalculation. The Dashboard analytics cache (15-minute TTL) is the longest-lag display; everywhere else reflects the live customer-row value.
Score Privacy #
Customers do not see their own trust score. The score is admin-only, intended for store-side moderation decisions. If you want to surface trust to customers in some form — e.g. VIP discount eligibility — use a segment-based action (loyalty plugin integration, role assignment) rather than exposing the raw number.
For GDPR data export requests, the customer’s score and signals are included in the export, since they are processed personal data. See Privacy & GDPR FAQ.