How scoring works
Every WooCommerce order that passes through the checkout flow is evaluated by the WooFraudGuard risk engine before payment is processed. The engine produces a single 0–100 score and a corresponding decision: approve, review, hold, or cancel.
The pipeline
- OrderContext — every signal we know about the order (email, IP, device fingerprint, billing/shipping, BIN+last4, behavioural payload, customer ID) is collected into one structured value object.
- Evaluator — each enabled rule receives the context and returns a RuleResult (base score 0–100 + per-rule metadata). The evaluator multiplies each base score by the rule\’s configured weight.
- Decision engine — the weighted scores are summed and capped at 100. The total is matched against the three thresholds (Cancel first, then Hold, then Review) to produce the final decision.
- Action dispatcher — depending on the decision, the order is approved silently, flagged, placed on hold, or auto-cancelled. The customer sees the corresponding message.
- Persistence — the score, the decision, and every rule contribution are written to
wfg_risk_scores+wfg_rule_hitsfor the dashboard, reports, and chargeback rebuttals.
Worked example
Suppose your Balanced preset has Blocklist 1.0, IP risk 0.6, and Behavioural 0.7. An order comes in with:
- Blocklist hit (base 100):
100 × 1.0 = 100 - IP risk from a datacenter range (base 60):
60 × 0.6 = 36 - Behavioural rule: paste-on-card + fast checkout (base 65):
65 × 0.7 = 45.5
Raw total: 181.5 → capped at 100 → matches the Cancel threshold (≥80) → order auto-cancelled.
What about disabled rules?
A rule weight of 0 means the rule still evaluates (its metadata is recorded for debugging) but the weighted contribution is 0 × base = 0. To completely skip a rule\’s database lookups, leave its license feature gated — the engine then doesn\’t register the rule at all.
What\’s next
Read about Decisions explained for what each verdict actually does to the order, then dive into the Rules Reference chapter to see exactly what each rule looks at.