Skip to navigation Skip to main content
Free on WordPress.org 4.9 / 5 WordPress.org Explore both Plugins
Free on WordPress.org 4.9 / 5 WordPress.org Explore both Plugins
  • WordPress
    Products
    Smart Cycle DiscountsDiscount automation › TrustLensCustomer trust intel › Cycle AI AIPlain-English campaigns ›
    New pluginComing soon
    Resources & toolsDocs, pricing, support ›
    Smart Cycle Discounts

    Smart Cycle Discounts

    Automate WooCommerce discount campaigns — schedule, target, and measure.

    62%
    Free Pro $59 5 discount types Recurring
    Jump into the page
    How it works Capabilities Promo codes Pricing
    Docs
    Getting started Discount types Scheduling
    Explore Smart Cycle Discounts → Changelog
    TrustLens

    TrustLens

    Customer trust intelligence — score buyers, spot abuse, protect revenue.

    Trust 86
    Free Pro $79 6 segments Abuse detection
    Jump into the page
    How it works Detection Outcomes Pricing
    Docs
    Trust scoring Detection modules Card-testing defense
    Explore TrustLens → Verify a report Changelog

    Cycle AI inside Smart Cycle Discounts

    Describe a sale in plain English — Cycle AI builds the whole campaign.

    “20% off hoodies this weekend”
    Included in Pro Natural language Catalog-aware
    See it work

    Type a sentence, get a ready-to-launch discount campaign that already understands your products, prices, and schedule.

    Live demo How it works
    Meet Cycle AI →

    A new plugin Coming soon

    Something is loading in the lab. Join the list to get the reveal first.

    Notify me on launch →

    Resources & tools

    Everything around the plugins — docs, free tools, and help.

    Learn
    Documentation Pricing & bundle Support
    Free tools
    Discount Calculator Sale Calendar
    Stay current
    SCD changelog TrustLens changelog
    Compare all plans →
    Secure checkout WordPress.org 14-day refund View pricing →
  • Affiliate
    Program
    OverviewHow the program works How it works4 steps from apply to earn Commission details30% · 60-day cookie · recurring
    Get started
    Apply nowOpen Takes ~2 minutes Earnings calculatorEstimate your monthly income FAQPayouts, cookies, renewals
    Resources
    Brand kitLogos, banners, copy, social PlaybookTactics that actually convert FTC disclosureHow to disclose properly Affiliate termsFull program agreement Contact teamOpen the contact form
    Earn 30% recurring on every saleFree to join · 60-day cookie · monthly PayPal payouts Apply now
  • Blog
  • DOCS
    Docs & resources

    Guides, references, and answers for every Webstepper plugin.

    Smart Cycle DiscountsAutomated WooCommerce discount campaigns
    Getting started› Discount types› Cycle AI›
    TrustLensCustomer trust & fraud intelligence
    Trust scoring› Detection modules› Card-testing defense›
    Docs home Guides FAQ Pricing Support
    WordPress tools that solve real problems
  • Contact Us
  • About
    Company

    Our Story

    Founded 2020

    Built by store owners, for store owners. We make WordPress tools that solve real problems.

    Learn more
    Built from experienceTools we use ourselves
    Time is preciousSimple, intuitive UX
    Real supportTalk to the founders
    Legal & contact
    Contact us Privacy policy Terms of service Refund policy
    14-day money-backNo questions asked
Popular requests
  • smart cycle discounts
  • trustlens
  • chargeback protection
GET STARTED

Glossary

1
  • TrustLens Glossary

Detection Modules

9
  • Card Testing Defense
  • Chargeback Tracking
  • Shipping Anomalies
  • Linked Accounts Detection
  • Category Aware Risk
  • Coupon Abuse Detection
  • Order Pattern Analysis
  • Return Abuse Detection
  • Modules Overview

Card Testing Defense

9
  • Attack History
  • Allowlists
  • Geo Diversity
  • Auto Escalation
  • Fingerprinting
  • VIP Bypass
  • Panic Button
  • Velocity Thresholds
  • Overview

Chargeback Monitor

7
  • Ratio Email Alerts
  • Dispute Evidence Report
  • Chargeback Monitor
  • Manual Dispute Entry
  • Stripe WooPayments Ingestion
  • Card Network Thresholds
  • Chargeback Ratio Speedometer

Customer Management

7
  • Admin Notes
  • Checkout Enforcement
  • Order Trust Column
  • Bulk Actions
  • Blocking and Allowlisting
  • Customer Detail Profile
  • Customer List

Automation

7
  • Async Dispatch Retries
  • Webhooks and HMAC
  • Rule Inspector
  • Actions Reference
  • Conditions Reference
  • Triggers Reference
  • Automation Overview

Trust Scoring

5
  • Account Age Loyalty Bonus
  • Signals Explained
  • Six Customer Segments
  • The 0–100 Score
  • How Trust Scoring Works
View Categories
  • Home
  • Docs
  • Trustlens
  • Trust Scoring
  • How Trust Scoring Works

How Trust Scoring Works

6 min read

The TrustLens trust score is the single number that summarizes everything the plugin has learned about a customer. It’s calculated from the actual order, refund, coupon, dispute, and checkout data your store generates — no opaque machine learning model, no external data, no inference you can’t inspect. This guide explains how the calculation works end-to-end so you can predict scores, debug surprises, and justify decisions to customer service and finance teams.


The Core Formula #

Every score is the result of a simple deterministic calculation:

final_score = base_score + Σ(signal_scores) + account_age_bonus
clamped to the range 0–100
Term Value Source
base_score 50 Hardcoded — every customer starts neutral
signal_scores Variable per module Emitted by each active detection module — can be positive or negative
account_age_bonus 0, +5, +10, or +15 Tenure-based loyalty bonus
Clamp 0 ≤ score ≤ 100 Applied last, after all signals sum

There is no weighted average, no normalization, no z-score. The score is a sum, clamped. That’s deliberate — it means you can look at the signals list on the customer profile and add them up yourself to verify the result.


Calculation Walkthrough #

Here’s how a real customer’s score is computed, step by step.

Step 1: Check Allowlist #

If the customer is on the allowlist, the calculation short-circuits and returns score = 100, segment = VIP. No signals are computed. This is the kill-switch for protecting your top customers from false positives.

Step 2: Check Minimum-Orders Threshold #

If the customer has fewer orders than the configured minimum (default 3), the calculation short-circuits and returns score = 50, segment = Normal. A single system signal is recorded with the reason “Insufficient data (1/3 orders)” so the profile clearly shows why scoring hasn’t started yet.

This prevents new customers from being mis-classified as risky on the basis of one refund. Stores with strong signal quality can lower the threshold to 2; stores with very generous return policies sometimes raise it to 5.

Step 3: Collect Signals from Active Modules #

TrustLens iterates through every enabled detection module and calls its get_signal() method. Each module returns:

{
  score: integer (typically -50 to +15),
  reason: human-readable string ("Return rate 67%; 90%+ full refunds")
}

Signals with both a zero score and an empty reason are dropped. Anything else is kept and appended to the customer’s signal list.

Step 4: Add Account-Age Bonus #

Based on days since the customer’s first order:

Tenure Bonus Reason Text
1+ year (365+ days) +15 Long-term customer (1+ year)
6+ months (180+ days) +10 Established customer (6+ months)
3+ months (90+ days) +5 Regular customer (3+ months)
< 3 months 0 (no bonus signal recorded)

The bonus appears in the signals list under the account_age module so you can see its contribution explicitly.

Step 5: Apply Filter Hook #

Before summing, TrustLens runs the signals array through the trustlens/score_signals filter. Developers can use this to add, remove, or modify signals from custom code without forking the plugin.

Step 6: Sum and Clamp #

All signal scores are summed and added to the base score of 50. The result is clamped to the range 0–100. Anything below 0 becomes 0; anything above 100 becomes 100. The final score is then passed through one more filter, trustlens/trust_score, in case an extension needs to override it.

Step 7: Determine Segment #

The final score is mapped to one of six segments using configurable thresholds (defaults shown):

Score Segment
90–100 VIP
70–89 Trusted
50–69 Normal
30–49 Caution
10–29 Risk
0–9 Critical

Thresholds can be overridden via the trustlens/segment_thresholds filter.

Step 8: Persist and Fire Hooks #

TrustLens writes the new score and segment to the customer’s database row, replaces the customer’s signal log with the fresh signals (one row per signal), and fires two action hooks:

  • trustlens/score_updated — always
  • trustlens/segment_changed — only if the segment actually changed

Pro automation rules subscribe to these hooks; that’s how a rule like “if segment changed to Critical, send Slack alert” fires.


A Worked Example #

Consider a customer named Sarah:

  • 14 orders placed
  • First order 8 months ago
  • 5 refunds (35% return rate)
  • Total refund value $1,200
  • 2 of those 5 refunds were coupon-then-refund cycles (applied a coupon, then refunded the order)
  • 0 disputes

Walking through the formula:

Step Source Contribution Running Total
Base — +50 50
Returns module 35% return rate (between 25% and 40% high threshold) -10 40
Returns module Refund value ≥ $1,000 -5 35
Coupons module 2 coupon-then-refund cycles -15 20
Coupons module First-order coupon + refund cycle present -10 10
Orders module 9 clean orders (14 − 5 refunds) — 5+ clean tier +10 20
Chargebacks module No disputes, but under 10-order clean-history threshold (only 14 total, 9 clean) 0 20
Account age 6+ months tenure +10 30
Clamp + segment — — 30 → Caution

Sarah lands at the floor of Caution. A third coupon-then-refund cycle would push her into Risk; a clean stretch of orders without coupons would dilute her rates and gradually move her toward Normal.

The Customer Detail page shows this same calculation: every row above appears as a signal with its score and reason, so any team member can reproduce the result by hand.


When Scores Recalculate #

TrustLens never recalculates synchronously during a customer-facing request. Instead, relevant events queue an Action Scheduler job:

Event Triggers Recalculation
Order completed Yes
Order refunded (partial or full) Yes
Coupon applied at checkout Yes
Dispute filed (Stripe/WooPayments webhook) Yes
Dispute manually recorded Yes
Linked account detected Yes (both accounts)
Card-testing event tied to customer fingerprint Yes
Shipping anomaly detected Yes
Manual recalculate button clicked Yes (immediate)
Allowlist toggled on/off Yes
Customer profile viewed No — read-only

Deduplication #

If the same customer triggers multiple recalculation requests in a short window (e.g. placing five orders within a minute), TrustLens collapses them into a single job. This keeps Action Scheduler queues efficient and avoids redundant database writes.

Latency #

Score updates typically land within 1–2 minutes of the triggering event, depending on how busy Action Scheduler is. For most stores this is sub-30-second. If you need a score updated immediately, use the Recalculate button on the Customer Detail page — that runs synchronously.


What Scoring Does Not Use #

To set expectations clearly:

  • No external data. TrustLens does not call IP geolocation services, email reputation services, or any third-party fraud API by default. All scoring is local.
  • No machine learning. The scoring is rule-based and deterministic. The same inputs always produce the same output.
  • No order amount weighting at the score level. A customer who refunds $10,000 worth of orders has the same return-rate signal as one who refunds $100 worth, if the rates match. (Order value does show up separately in the Top Returners dashboard card.)
  • No demographic data. Age, gender, region — none of these are inputs.
  • No identity verification. Email format checks, disposable email detection, and similar are out of scope; TrustLens focuses on behavior.

Inspecting a Calculation #

Three places show the inputs to every score:

1. The Customer Detail Page #

Under the score, a Signal Breakdown panel lists every signal that contributed, with module name, score delta, and reason text. The numbers shown there are the exact ones used in the formula.

2. The Database #

The {prefix}trustlens_signals table holds one row per signal per customer, refreshed on each recalculation. Developers can query it directly for offline analysis.

3. The REST API #

GET /wp-json/trustlens/v1/customers/{email_hash} returns the score, segment, and the full signals array. See REST API Reference.


Customizing the Calculation #

For developers who need to extend scoring without forking:

Hook When It Fires Use Case
trustlens/score_signals (filter) After modules emit signals, before summing Add custom signals, remove a module’s signal, modify reason text
trustlens/trust_score (filter) After summing and clamping Apply a global multiplier, force a minimum, or override based on external data
trustlens/segment_thresholds (filter) When mapping score → segment Shift thresholds (e.g. tighter VIP at 95)
trustlens/score_updated (action) After score is persisted Custom side effects — sync to CRM, log to external analytics
trustlens/segment_changed (action) Only when segment actually transitions Send “promoted to VIP” / “moved to Critical” notifications

See Hooks and Filters Reference for full signatures.


Why This Design #

The scoring engine intentionally favors transparency over sophistication. Trade-offs:

  • Deterministic over adaptive. A machine learning model might catch subtler patterns, but you couldn’t explain its decisions to a customer service team or a customer disputing a block. Rule-based scoring is explainable by design.
  • Sum over weighted average. A weighted average would smooth out signals; summing preserves the magnitude of each contribution so a single severe signal (large dispute, very high return rate) can dominate when it should.
  • Clamp at the end, not per signal. Clamping per signal would hide the true magnitude of compound abuse. Letting signals stack to -120 internally, then clamping to 0, ensures a customer with multiple severe signals reads as Critical, not just Caution.
  • Filters at every join. Every step of the pipeline has a hook so the engine can be customized without forking the plugin.

The result is a scoring engine that’s auditable, reproducible, and easy to reason about — which matters more than algorithmic sophistication when you’re using the output to make real customer-facing decisions.

Updated on June 18, 2026

What are your Feelings

  • Happy
  • Normal
  • Sad

Share This Article :

  • Facebook
  • X
  • LinkedIn
  • Pinterest
The 0–100 ScoreAccount Age Loyalty Bonus
Table of Contents
  • The Core Formula
  • Calculation Walkthrough
    • Step 1: Check Allowlist
    • Step 2: Check Minimum-Orders Threshold
    • Step 3: Collect Signals from Active Modules
    • Step 4: Add Account-Age Bonus
    • Step 5: Apply Filter Hook
    • Step 6: Sum and Clamp
    • Step 7: Determine Segment
    • Step 8: Persist and Fire Hooks
  • A Worked Example
  • When Scores Recalculate
    • Deduplication
    • Latency
  • What Scoring Does Not Use
  • Inspecting a Calculation
    • 1. The Customer Detail Page
    • 2. The Database
    • 3. The REST API
  • Customizing the Calculation
  • Why This Design
Newsletter

Insights that grow your business

Join thousands of WooCommerce store owners who get actionable tips, plugin updates, and industry news every week — plus 10% off either of our plugins as a welcome.

We respect your privacy. Unsubscribe at any time.

10% off welcome gift — A code for either plugin, on us
Weekly updates — Fresh content every Tuesday
Exclusive content — Tips you won't find on our blog
Early access — Be first to know about new plugins
Webstepper
Weekly WooCommerce Tips
Just now
This week: 5 proven strategies to boost your average order value using smart discount campaigns...
10% off inside
Webstepper

Tools for store owners who'd rather grow than grind.

Simple, powerful plugins that help WooCommerce store owners sell more — without the learning curve.

Products

  • Smart Cycle Discounts
  • TrustLens
  • Discount Calculator
  • Sale Calendar

Company

  • About Us
  • Blog
  • Contact
  • Affiliates
  • Log In

Resources

  • Help Center
  • Guides
  • Verify a report
  • Affiliate Program
  • Become a Partner

Questions? We actually answer.

Real humans, real help. No bots, no runaround. Usually within a few hours.

Get in touch
Operated by Setmood LLC · 7901 4th St N, St Petersburg, FL 33702 · United States

© 2026 Webstepper. All rights reserved.

Privacy Terms Refunds
Visa Mastercard PayPal Apple Pay Google Pay & more
Limited Time Offer

Get 10% off
Smart Cycle Discounts or TrustLens

Drop your email and we’ll send you a unique, single-use code — works on either plugin at checkout. New customers, first payment.

23 hours
:
59 minutes
:
59 seconds

No spam. Unsubscribe anytime.

  • WordPress
    Back
    Products
    Smart Cycle DiscountsDiscount automation › TrustLensCustomer trust intel › Cycle AI AIPlain-English campaigns ›
    New pluginComing soon
    Resources & toolsDocs, pricing, support ›
    Smart Cycle Discounts

    Smart Cycle Discounts

    Automate WooCommerce discount campaigns — schedule, target, and measure.

    62%
    Free Pro $59 5 discount types Recurring
    Jump into the page
    How it works Capabilities Promo codes Pricing
    Docs
    Getting started Discount types Scheduling
    Explore Smart Cycle Discounts → Changelog
    TrustLens

    TrustLens

    Customer trust intelligence — score buyers, spot abuse, protect revenue.

    Trust 86
    Free Pro $79 6 segments Abuse detection
    Jump into the page
    How it works Detection Outcomes Pricing
    Docs
    Trust scoring Detection modules Card-testing defense
    Explore TrustLens → Verify a report Changelog

    Cycle AI inside Smart Cycle Discounts

    Describe a sale in plain English — Cycle AI builds the whole campaign.

    “20% off hoodies this weekend”
    Included in Pro Natural language Catalog-aware
    See it work

    Type a sentence, get a ready-to-launch discount campaign that already understands your products, prices, and schedule.

    Live demo How it works
    Meet Cycle AI →

    A new plugin Coming soon

    Something is loading in the lab. Join the list to get the reveal first.

    Notify me on launch →

    Resources & tools

    Everything around the plugins — docs, free tools, and help.

    Learn
    Documentation Pricing & bundle Support
    Free tools
    Discount Calculator Sale Calendar
    Stay current
    SCD changelog TrustLens changelog
    Compare all plans →
    Secure checkout WordPress.org 14-day refund View pricing →
  • Affiliate
    Back
    Program
    OverviewHow the program works How it works4 steps from apply to earn Commission details30% · 60-day cookie · recurring
    Get started
    Apply nowOpen Takes ~2 minutes Earnings calculatorEstimate your monthly income FAQPayouts, cookies, renewals
    Resources
    Brand kitLogos, banners, copy, social PlaybookTactics that actually convert FTC disclosureHow to disclose properly Affiliate termsFull program agreement Contact teamOpen the contact form
    Earn 30% recurring on every saleFree to join · 60-day cookie · monthly PayPal payouts Apply now
  • Blog
  • DOCS
    Back
    Docs & resources

    Guides, references, and answers for every Webstepper plugin.

    Smart Cycle DiscountsAutomated WooCommerce discount campaigns
    Getting started› Discount types› Cycle AI›
    TrustLensCustomer trust & fraud intelligence
    Trust scoring› Detection modules› Card-testing defense›
    Docs home Guides FAQ Pricing Support
    WordPress tools that solve real problems
  • Contact Us
  • About
    Back
    Company

    Our Story

    Founded 2020

    Built by store owners, for store owners. We make WordPress tools that solve real problems.

    Learn more
    Built from experienceTools we use ourselves
    Time is preciousSimple, intuitive UX
    Real supportTalk to the founders
    Legal & contact
    Contact us Privacy policy Terms of service Refund policy
    14-day money-backNo questions asked
We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.
More info More info Accept