Real-Time Fraud Detection and Blocking

– by WolfPaw

for Miva Merchant

User Guide

—

Pre-payment fraud screening powered by MaxMind minFraud. Screens every checkout attempt before payment is captured, and records the MaxMind result on each order. Includes IP velocity protection, Google Storebot handling, query caching, proxy/CDN detection, whitelisting, screening statistics, and detailed email notifications. Ships in two installable variants — a System Extension and a Component — with identical screening.

WolfPaw Hosting and Development LLC
antifraud@wpcomp.com  |  https://www.wpcomp.com

Table of Contents

  1. Overview
  2. Requirements
  3. Installation
    1. Choosing a variant
    2. Installing the module
    3. Upgrading
    4. Verifying
    5. Database tables
  4. Quick Start
    1. What to expect
  5. Choosing Your Approach
    1. Automatic blocking
    2. Manual review
    3. Where to set the threshold
    4. Which service tier
  6. Configuration
    1. Card 1 — Module Information
    2. Card 2 — Screening Statistics
    3. Card 3 — Fraud Screening Status
    4. Card 4 — WolfPaw License
    5. Card 5 — MaxMind Configuration
    6. Card 6 — IP Velocity Protection
    7. Card 7 — Query Caching
    8. Card 8 — Email Notifications
    9. Card 9 — Cart Behind Proxy / CDN
    10. Card 10 — Whitelisting & Google Storebot
    11. Card 11 — Logging
    12. Card 12 — Risk Thresholds
    13. Card 13 — On Processing Error
  7. Reviewing Orders
    1. The MaxMind order fields
    2. Reading the technical response
    3. The Custom Fields toggle
    4. A note for integrations
  8. Admin Tools
  9. How Screening Works
  10. Email Notifications Reference
  11. Troubleshooting
  12. Uninstallation
  13. Support and Contact
  14. Tips and Best Practices
  15. Version History

1. Overview

WolfPaw Antifraud integrates MaxMind's minFraud service into your Miva Merchant store to screen orders before payment is captured. Every checkout attempt is evaluated against MaxMind's fraud-detection network, built on transaction data contributed by merchants worldwide.

Depending on the service tier you select, minFraud assesses dozens of data points across five areas:

Key capabilities

2. Requirements

RequirementDetails
Miva MerchantMiva Merchant version 10.x.
DatabaseMySQL / MariaDB recommended. MivaSQL is supported on a fresh install.
MaxMind accountA minFraud account at maxmind.com. minFraud queries are pay-as-you-go — you buy service credit; there is no subscription plan to choose. A free account with 1,000 risk score queries is currently available.
WolfPaw module registration codeProvided by WolfPaw when you purchase a license for this module.

3. Installation

The module is distributed as a compiled Miva module file (.mvc) in two variants. You install them through your Miva Merchant admin. If you already have a previous version installed, follow the upgrade instructions below, which preserve your configuration settings. To find out which variant — System Extension or Component — you are currently running, check the title box on the admin configuration screen.

Choosing a variant

Both variants run the same screening and share the same configuration screen, tables, order fields and email notifications. They differ only in how screening is triggered.

VariantFileHow it triggersChoose it for
System Extensionwp_antifraudv10903_module.mvcRuns at the beginning of the checkout (OUSL) page — no template editing.Standard Miva checkout.
Componentwp_antifraudv10903_component.mvcRuns when a page template renders the module's Fraud Check component item.One-page checkouts and highly customized stores where a global checkout hook is not available or appropriate.
Install one variant, not both. They screen the same orders the same way; running both would screen twice. If you are unsure, start with the System Extension — it needs no template changes.

Before you install

You need a WolfPaw module registration code — tied to your Miva Domain License number, shown under Settings › Domain Settings › Information on the License # line — and a MaxMind account with an Account ID and license key. Install one variant; the steps differ slightly.

Installing the System Extension

  1. Unzip the module package and locate wp_antifraudv10903_module.mvc, and note where you saved it on your PC.
  2. In the Miva admin, go to Settings › Domain Settings and open the Modules tab.
  3. Click Add Module, then Choose File and navigate to where you saved wp_antifraudv10903_module.mvc. Select the file, then click Open and Upload.
  4. Click Add to register the module, then Update and wait for the confirmation message.
  5. Go to Settings › Modules, find WolfPaw's Fraud Screening and Detection, and click Install.
  6. The configuration screen appears. Continue to Section 6 below to enter your credentials and settings.

No template changes are needed — the System Extension runs automatically at the beginning of the checkout (OUSL) page.

Installing the Component

Use this variant for custom or one-page checkouts where the System Extension doesn't fire.

  1. Unzip the package and locate wp_antifraudv10903_component.mvc, and note where you saved it on your PC.
  2. In the Miva admin, go to Settings › Domain Settings and open the Modules tab.
  3. Click Add Module, then Choose File and navigate to where you saved wp_antifraudv10903_component.mvc. Select the file, then click Open and Upload.
  4. Click Add to register the module, then Update and wait for the confirmation message.
  5. Go to Settings › Modules, find WolfPaw's Fraud Screening and Detection, and click Install. The configuration screen appears.
  6. Go to User Interface › Templates › Pages and open OSEL Checkout: Shipping/Payment Selection (or your custom checkout page).
  7. Add this line at the top of the template, then click Update:
    <mvt:item name="wp_antifraud" param="fraud_check" />
  8. Click Items, find wp_antifraud in the list, and switch it On (it turns green).

Screening now runs wherever that item renders. Continue to Section 6.

Configuration screen overview [ Screenshot: configuration screen — full card view ]images/config-overview.png
Figure — the card-based configuration screen.

Upgrading from an earlier version

Upgrading from a previous version? Use these upgrade steps, not a fresh install, so your current module settings are preserved.
  1. Record your current settings first — a screenshot of the configuration screen is enough. Settings carry forward automatically, but keep a copy regardless.
  2. Identify your current variant: go to Settings › Domain Settings › Modules, click the antifraud module, then Information. If Module Features lists component, you have the Component; otherwise the System Extension. Upgrade to the matching variant.
  3. With the module selected, click Information, uncheck Active, and click Update.
  4. Click Files › Upload. Check Overwrite, click Choose File and navigate to the new v10.903 file that matches your variant, then click Open, Upload, and Update.
  5. Click Information, check Active, and click Update again.
  6. Your new version is now installed. Go to Payment Settings, verify your settings migrated correctly, and review Section 6 below for any new settings.

During the upgrade, database changes are applied automatically (including the cache, velocity, Storebot and statistics tables), your existing configuration is preserved, your current decline and processing-error screen messages are kept (the new HTML defaults are optional), separate IPv4/IPv6 whitelist fields are merged into one CIDR field, and screening statistics are carried across.

Upgrading on a busy store. On a store with a long order history, database changes are a real operation rather than an instant one. Run upgrades outside your trading hours.

Verifying the installation

Open the configuration screen and look at the Module Information card. It shows the installed version — WP_ANTIFRAUD v10.903 - Component Version or WP_ANTIFRAUD v10.903 - System Extension Module Version. This is the quickest way to confirm which variant and version are live.

Database tables

The module creates five tables (prefixed with your store table prefix). You never need to edit them directly; they are listed here for reference.

TablePurpose
WP_AMIModule configuration (all settings on the config screen).
WP_MinFraud_CacheCached screening results, so a retry on a cart with the same customer information does not consume a MaxMind query.
WP_IP_VelocityDeclined-attempt counts per IP address.
WP_Storebot_CacheGoogle crawler addresses confirmed by reverse DNS.
WP_Screening_StatsDaily counters behind the Screening Statistics card.

The two MaxMind results are stored as Order custom fields using Miva's native Custom Fields tables (CFM_Groups, CFM_OrderFields, CFM_OrderValues). The module only reads and writes those tables — it never creates or alters them.

4. Quick Start

After installing the module, follow these steps to configure and start screening orders.

  1. Create a MaxMind account — Go to maxmind.com and sign up for a MaxMind minFraud account or free trial. New accounts qualify for a free trial with 1,000 risk score queries.
  2. Get your credentials — Locate your MaxMind Account ID on the dashboard under Account › Account Information. Generate a License Key under Account › Manage License Keys.
  3. Enter your credentials — In the module's configuration screen, enter your MaxMind Account ID and License Key in the MaxMind Configuration card.
  4. Test the connection — Click Test Connection to confirm your credentials. A successful test shows a result panel with your account details and remaining balance.
  5. Choose your service tier — Still in the MaxMind Configuration card, select the minFraud service. Choose Risk Score Only if the module will decide everything. Choose Insights or Factors if you intend to review orders yourself, because Score returns a number and nothing to read. You can change this at any time.
  6. Install the order fields — Confirm the Custom Fields in Orders Table for MaxMind Results control (bottom of the MaxMind card) shows Currently Installed. These are created automatically on install; if it shows Not Installed, type install to create them.
  7. Enable query caching — Open the Query Caching card and enable it. This saves money by reusing results when customers retry with identical contact and address data.
  8. Check email notifications — Open the Email Notifications card and verify the From and To addresses. Make sure the To address is a mailbox you monitor.
  9. Configure proxy/CDN detection — Open the Cart Behind Proxy / CDN card. It displays your 1st Hop IP and Derived Browser IP. If these differ, set Cart Is Behind a Proxy or CDN to on.
  10. Whitelist your office IP — Open the Whitelisting card and add your office IP so staff and test orders don't consume queries or trigger IP velocity protection.
  11. Enable Google Storebot (if applicable) — If you list products on Google Shopping or Merchant Center, turn on Automatically Whitelist Google Storebot in the same card.
  12. Verify logging is enabled — Open the Logging card and make sure logging is on. Logs are invaluable for understanding how the module processes orders.
  13. Set risk thresholds — Open the Risk Thresholds card. Set the Email Notification Threshold to 0 so you receive an email on every screened order, and the Decline Threshold to 100 so no orders are declined initially. Section 5 covers where to take it from there.
  14. Configure error handling — Open the On Processing Error card. Make sure the disposition is set to Accept Order and the error notification is on.
  15. Enable screening — In the Fraud Screening Status card, set Enable Fraud Screening to on and save. Your store is now screening orders.

What to expect

You will receive a merchant notification email on every order (unless the result is served from cache) showing the MaxMind-calculated risk score and whether the order was accepted or declined. Since the decline threshold is at 100, all orders will be accepted and every email will read "Order Accepted."

Familiarize yourself with the typical risk score for your customer base. This gives you an idea of where your decline threshold should end up. We've found most legitimate orders score under 3% to 5% — but, as they say, your mileage may vary depending on your industry, customer demographics, and geographic distribution.

5. Choosing Your Approach

You can let the module decide every order from the decline threshold, or review orders yourself before shipping. Which approach you take decides where that threshold belongs, and which minFraud service you need.

If the module decides everything

Set a decline threshold and leave it. Orders scoring at or above the threshold are stopped at checkout, before payment is processed. Nothing is held for review.

This takes no ongoing effort, and no money ever changes hands on a blocked order. A declined customer does see your decline message, which can invite them to check their billing details and try again or to call you — so the sale is not necessarily lost. But you never see the order yourself, and never get the chance to judge a borderline case that the threshold decided against.

Lower the decline threshold gradually to a value above your normal range. A common progression is:

100 (monitor only)  ->  50  ->  30  ->  15  ->  fine-tune from there

Because nothing is reviewed, the threshold is the only thing standing between a bad order and your warehouse — which is why it ends up close to your normal scores.

If you review orders manually before shipment

If you are accustomed to reviewing orders before they ship, and would rather the module declined only the most egregious and obvious fraud, set the Decline Threshold to around 75 and review everything below it yourself using the two MaxMind order fields described in Section 7.

You can afford the higher figure precisely because the orders that would have been false positives are now looked at rather than refused. This is the approach many merchants arrive at once they have watched real scores for a few weeks — it blocks what is obviously fraudulent without anybody looking at it, and puts a human judgement on the genuinely ambiguous middle, which is where almost all false positives live.

Why reviewing before shipping works. Screening happens before payment, so a declined order is never charged. An accepted order is charged — but the money is only truly lost once goods leave your warehouse. Between payment and shipment you can still cancel and void or refund. You may pay a processing fee, and you avoid the lost stock, the chargeback, and the chargeback fee.
Do not set the decline threshold too high. IP velocity protection, which blocks card-testing bots, counts declined attempts. At 100 nothing is ever declined, so nothing is counted and the block never fires — a card tester could then run unchecked, with every attempt costing you a minFraud query. If you are running in monitor-only mode to learn your score distribution, treat it as temporary.

Which service you need

Manual review needs Insights or Factors. A Score query returns a number and nothing else, so reviewing an order would mean judging it on the same figure the threshold already acted on. Insights returns the detail you actually read — and costs one cent more per order. Factors adds the specific reasons behind each score. The tier is a setting in the module's admin configuration screen, not a different plan, so you can change it whenever you like.

6. Configuration

The module's configuration screen is organized into cards, documented below in the order they appear. Changes are saved with the Update button.

If the module's Custom Fields tables are missing on your store, a dismissible Custom Fields Tables Missing warning appears above the cards when the admin screen is rendered. It is informational — it tells you the native Miva Custom Fields module is not installed. It would be highly unusual for this module not to have been installed automatically on your store. Go to Settings › Modules and look for Custom Fields to check its status; if it is missing, contact Miva support.

Card 1 — Module Information

Displays the installed module version, developer information, module description, and documentation links. No configuration needed. Use this to verify the correct variant and version are deployed.

Card 2 — Screening Statistics

A collapsible panel showing what the module has done, in three columns: Today, Yesterday and All Time. Click to expand it.

RowShows
Total screeningsOrders that went through the screening path
MaxMind queries consumedHow many of those actually cost a query
Queries savedBroken out by query cache, whitelist, Google Storebot and velocity protection
Risk decisionsAccepted and declined on risk score
Processing errorsAccepted or declined under your error policy

The gap between total screenings and queries consumed is what caching, whitelisting and velocity protection are saving you.

Preserve statistics on uninstall (checkbox, on by default) keeps the counters if the module is uninstalled or the variant is switched. Reset Statistics starts a new counting period — useful at the start of a quarter, or after changing your thresholds. Resetting clears counters only; orders, order fields and the daily log are untouched, and the action requires a second click to confirm.

Screening Statistics card [ Screenshot: Screening Statistics card (expanded) ]images/card02-stats.png
Figure — Screening Statistics, Today / Yesterday / All Time.

Card 3 — Fraud Screening Status

The master switch.

FieldDescriptionDefault
Enable Fraud ScreeningMaster switch. Turn on to activate pre-payment screening. Requires a valid WolfPaw license and MaxMind credentials.Off

The card header shows the current state unmistakably — a green Enabled or a red Disabled — so a store that is not actually screening is easy to spot at a glance.

Card 4 — WolfPaw License

FieldDescriptionDefault
Module Registration CodeYour WolfPaw registration code for the module.(empty)
I agree to the End User License AgreementMust be checked to operate the module.Unchecked

Card 5 — MaxMind Configuration

FieldDescriptionDefault
MaxMind Account IDYour numeric MaxMind account ID. Found on the MaxMind dashboard under Account › Account Information.(empty)
MaxMind License KeyA license key generated in your MaxMind account under Account › Manage License Keys.(empty)
Select minFraud Service TierWhich minFraud service each query uses. See below.Risk Score Only
minFraud Server URLThe MaxMind API endpoint. Change only if directed by MaxMind support.https://minfraud.maxmind.com/minfraud/v2.0/

There is no subscription or plan to choose. minFraud queries are pay-as-you-go — you buy service credit, and the service selected here determines what each query returns and what it costs. You can change it at any time; the change takes effect on the next order.

Service* Per queryReturns
Risk Score Only$0.005The risk score and an IP risk score. Enough to accept and decline orders automatically.
Risk Score + Insights$0.015Everything in Score, plus the detail: IP geolocation, network traits, email history, address distance checks. This is what you read when reviewing an order.
Risk Score + Insights + Factors$0.020Everything in Insights, plus the specific reasons a score came out high or low. Also useful when reviewing an order.

Use the Test Connection button (see Section 8) to verify your credentials before enabling screening. * Query prices as of October 2026.

Custom Fields in Orders Table for MaxMind Results

At the bottom of this card is the control that installs or removes the two MaxMind order fields (MM Risk Score and MM Technical Response). It shows the current state — Currently Installed or Not Installed — derived by checking whether the fields exist, so it stays correct even if the fields are changed directly in Miva.

The fields are created automatically on install and upgrade, so most stores never need this control — it exists so you can remove the fields cleanly (in case of conflicts with certain shipping or order integrations), or reinstall them if they were deleted. See Section 7.

MaxMind Configuration card [ Screenshot: MaxMind Configuration card ]images/card05-maxmind.png
Figure — MaxMind Configuration, including the Custom Fields control.

Card 6 — IP Velocity Protection

Tracks how many times a given IP address is declined. After exceeding the threshold within the configured time window, the IP is temporarily blocked from placing orders — no minFraud query is consumed during the block period. This is what stops card-testing runs.

FieldDescriptionDefault
Enable IP Velocity ProtectionTurn on IP-based velocity blocking.Off
Max AttemptsNumber of declined orders from the same IP before it is blocked. 0 means block on every decline.5
Time Window (minutes)Rolling window in which declined attempts are counted.10
Block Duration (minutes)How long a blocked IP must wait before attempting checkout again.60
Send Email Notification on Velocity BlockSend a notification email when an IP is velocity-blocked.On
Velocity Block Email SubjectSubject line for velocity block notification emails.Antifraud Alert - IP Velocity Block
Velocity Block Customer MessageMessage shown to blocked customers. Use [MINUTES] for remaining block time and [STORE_NAME] for your store name.(template)

Only declined attempts count. A customer who orders repeatedly and passes screening each time is never blocked.

Velocity protection needs your decline threshold to be doing something. If it is set to 100, nothing is ever declined, so nothing is ever counted and this feature never fires. See Section 5.

When an address reaches the attempt limit, the module also deactivates the basket session used for those attempts, so an attacker cannot continue with the same cart after clearing cookies. Adding an address to the whitelist clears any velocity block on it. Use View / Clear Velocity Table (Section 8) to inspect or reset the tracking data.

IP Velocity Protection card [ Screenshot: IP Velocity Protection card ]images/card06-velocity.png
Figure — IP Velocity Protection card.

Card 7 — Query Caching

When enabled, the module caches the risk-score result for each unique combination of customer and device identity data. If the same customer retries checkout with the same identity and device, the cached result is returned without consuming another minFraud query credit. Trivial differences such as capitalization or phone number formatting do not defeat it.

FieldDescriptionDefault
Enable minFraud Query CachingTurn on caching of minFraud results.Off
Prune Cached Queries After (minutes)How long a cached result remains valid. Expired entries are pruned automatically. Setting to 0 effectively disables the cache.10

A cache entry applies only to the cart information it was created for, with the exception of order amounts and contents, so a customer's second, separate order (a new basket) is always screened afresh. If the customer materially changes their address, the cache does not apply and a new query is made — which is correct, because it is a different transaction to assess.

Automatic cache purge: when the IP whitelist is changed, cached whitelist entries are purged. When the decline or email threshold is changed, the query cache is also purged. This ensures cached decisions always reflect current settings.

Card 8 — Email Notifications

FieldDescriptionDefault
Email From AddressThe sender (From:) address for all fraud notification emails.antifraud@<your store domain>
Email To Address(es)Recipient address(es) for fraud alerts. Your store email by default. Separate multiple addresses with commas.(store email)
Use a From address on your own domain. Notifications are more likely to reach your inbox when the From address is on a domain whose SPF, DKIM and DMARC records authorize your store's mail. A mismatched From address is the most common reason alerts land in spam.

Card 9 — Cart Behind Proxy / CDN

If your store is behind a CDN (CloudFlare, AWS CloudFront) or a reverse proxy (Nginx, Varnish), the client's real IP may be in a forwarded header. Enable this setting so the module reads the correct IP from CF-Connecting-IP, True-Client-IP, X-Real-IP, or X-Forwarded-For headers.

FieldDescriptionDefault
Cart Is Behind a Proxy or CDNTurn on if your store is behind any proxy, load balancer, or CDN.Off
Only enable this if your store is genuinely behind a proxy. Forwarded headers can be set by anyone when there is no proxy to overwrite them, which would let a visitor choose which address gets screened — bypassing both velocity protection and your whitelist.

The card displays a Current IP Detection Results box with your 1st Hop IP and Derived Browser IP. If these differ, your store is behind something and this setting should be on. If the module reports a private address such as 10.0.0.5 or 192.168.1.20 as the customer's IP, you will receive a processing error notification naming the cause.

Cart Behind Proxy / CDN card [ Screenshot: Cart Behind Proxy / CDN card ]images/card09-proxy.png
Figure — Proxy/CDN card showing 1st Hop and Derived Browser IP.

Card 10 — Whitelisting & Google Storebot

Whitelisted IPs bypass fraud screening entirely. No minFraud query is consumed.

FieldDescriptionDefault
Whitelisted IP AddressesIP addresses to whitelist, comma-separated. Supports IPv4, IPv6 and CIDR ranges.(empty)
Automatically Whitelist Google StorebotRecognize and bypass verified Google Storebot requests. See below.Off
Send Email Notification for Whitelisted OrdersSend a notification email when a whitelisted IP places an order.On
Whitelisted Order Email SubjectSubject line for whitelist notification emails.Antifraud Report - IP Whitelisted
203.0.113.9
198.51.100.0/24
2001:db8::/32
Whitelisting means no screening at all for those addresses — not a relaxed threshold. Use it only for addresses you genuinely trust.

Google Storebot

If you list products on Google Shopping or Google Merchant Center, Google runs periodic automated checkout verification tests against your store. These are not real orders and not fraud attempts — but they look like repeated automated checkouts, so without special handling they consume MaxMind queries, and repeated declines can accumulate in the velocity table until Google is blocked outright. Your Shopping listings would then fail verification, with nothing in the admin explaining why.

With Automatically Whitelist Google Storebot on, requests are identified by user agent and then confirmed by address — the user agent is only a gate, so every request is confirmed independently before it is trusted.

StepWhat happens
Published rangesThe address is checked against Google's published crawler ranges (IPv4 and IPv6). No lookup needed.
Cached resultAn address confirmed previously is recognized immediately.
Reverse DNSAddresses outside the published ranges are confirmed by a reverse-DNS lookup whose result is validated back to the connecting address, then cached. This is the only step that adds any delay, and only the first time a particular address is seen.
A request claiming to be Storebot from an address that cannot be confirmed as Google's is screened normally, and the attempt is recorded in the daily log. Claiming to be Google is not enough to bypass your fraud screening.

When enabled, the module sends at most two Storebot emails per active day: an alert when verified Storebot activity first begins that day, and a summary the following morning showing the day's total checkout tests, the number of unique addresses, and how each was confirmed.

Card 11 — Logging

FieldDescriptionDefault
Enable LoggingWrite screening activity to a daily log file.On
Log Retention (days)Automatically delete log files older than this many days (1–365).30

Logs are written to the wp-antifraud.logs/ directory, one file per day named antifraud-YYYY-MM-DD.log. The card includes a built-in Log Files viewer so you can read a day's log without leaving the admin. Log entries are prefixed with basket and pending-order identifiers, so all lines for one transaction can be traced together. When contacting support about a specific order, those identifiers from the alert email are the quickest way to locate it.

Logging card with log viewer [ Screenshot: Logging card + Log Files viewer ]images/card11-logging.png
Figure — Logging card with the built-in daily log viewer.

Card 12 — Risk Thresholds

FieldDescriptionDefault
Risk Threshold for Email NotificationSend a fraud report email when the risk score is at or above this percentage. Set to 0 to receive email on every screened order.0
Email SubjectBase subject for fraud report emails. The risk percentage and disposition are appended automatically.Antifraud Report -
Risk Threshold for Order DeclineAutomatically decline orders with a risk score at or above this percentage. Set to 100 to disable automatic declining.100
Screen Message on Order DeclineMessage shown to the customer when their order is declined. Use [STORE_NAME] for your store name.(template)

The risk score is a probability, not a verdict. A score of 10 means MaxMind estimates roughly a 10% chance the transaction is fraudulent — so about one order in ten at that score genuinely is. There is no score at which fraud is impossible, and no threshold that blocks all fraud without also blocking legitimate customers. Section 5 covers where to set it.

Because declines can sometimes be legitimate customers rather than fraudsters, the wording of the decline message matters: a message that invites them to check their billing details and try again recovers sales that a blunt refusal loses. Include a phone number or email address so they can reach you.

The decline and error messages accept HTML and are shown on your store's checkout screen. Keep them simple and test how they render in your theme.
Risk Thresholds card [ Screenshot: Risk Thresholds card ]images/card12-thresholds.png
Figure — Risk Thresholds card.

Card 13 — On Processing Error

Controls what happens when MaxMind is unreachable, returns an error, or the module encounters an unexpected problem during screening.

FieldDescriptionDefault
Order Disposition on Processing ErrorAccept Order (recommended): allow the order to proceed so you don't lose sales. Decline Order: block it.Accept
Send Email Notification for Processing ErrorsSend an email alert when a processing error occurs, so you're aware screening was skipped.On
Processing Error Email SubjectSubject line for processing error emails.Antifraud Processing Error
Screen Message on Processing Error DeclineMessage shown to the customer if orders are declined on error. Use [STORE_NAME] for your store name.(template)

Leave notification enabled with either choice. A silent screening failure is far worse than the failure itself — without an alert, you could go weeks unscreened without knowing.

7. Reviewing Orders

The module writes the MaxMind result to two Order custom fields, shown on your Miva admin's Orders page and in the Additional Order Information section on the order detail page. If these fields do not appear, you may need to enable them: on the Order Processing › Orders page, click the plus (+) at the right of the column headers, scroll down to Show/Hide Columns, and click Show/Hide Custom Fields. Make sure MM Risk Score and MM Technical Response are checked.

Field (display name)What it holds
MM Risk ScoreThe risk score for the order, or blank on a whitelist, Storebot, velocity-block or error outcome (where no score applies).
MM Technical ResponseA plain-text summary of the full MaxMind result, or a short status label for the non-screened outcomes.

Fields display alphabetically by field code within the group, so MM Risk Score appears above MM Technical Response. You can add MM Risk Score as a column on your order list from Miva's order-list column controls, so you can scan scores across many orders at once.

MM Risk Score column on the Orders list [ Screenshot: MM Risk Score + MM Technical Response columns on the Orders list ]images/order-list.png
Figure — the MaxMind fields as columns on the Order Processing › Orders list, for scanning scores at a glance.
MaxMind fields on an order [ Screenshot: MM Risk Score + MM Technical Response on an order ]images/order-custom-fields.png
Figure — the two MaxMind fields in Additional Order Information.

Reading the technical response

With the Insights or Factors service tier, the technical response is a flat, readable record — no raw JSON. It begins with the MaxMind transaction ID and a direct link to that transaction in your MaxMind dashboard, followed by the risk score and the sections MaxMind returned (IP address and traits, email, billing and shipping address checks, phone). With the Risk Score Only tier, the technical response shows the score and little else. These are some of the risk indicators merchants find most useful when deciding whether to ship an order:

SignalWhat it tells you
Distance to billing addressA few miles is ordinary. A different continent on a domestic order is not.
Email first seenAn address created today is a far weaker sign of a real customer than one first seen years ago.
In IP countryWhether billing and shipping match the country the customer is connecting from.
Free or disposable emailDisposable addresses on a high-value order deserve a second look.
High risk flagsMaxMind's own judgement on the email address or the shipping address.

For the non-screened outcomes, the technical response is a short two-line label: Whitelisted, Google Storebot, Velocity Block, a Cached prefix on a replayed result, or Error with the cause — each followed by the relevant IP address.

A declined checkout does not become an order on your Orders list — in Miva the order is written only once payment completes. So you review declines in the alert email and the daily log, not on the Orders page. (Insights or Factors gives the detail worth keeping there.)

The Custom Fields toggle

The two custom order fields — MM Risk Score and MM Technical Response — are created automatically on install and upgrade. The control at the bottom of the MaxMind Configuration card (Section 6, Card 5) lets you remove them — values and definitions — or reinstall them, by typing remove or install to confirm. Removing them leaves the Additional Order Information group in place; reinstalling recreates the fields empty. But be careful — removing the custom fields deletes the entire risk score and MaxMind response history for your orders, and it cannot be undone.

A note for integrations

The two custom order fields are standard Miva Order custom fields. A system that reads orders through Miva's order API or templates will see them alongside any other custom fields that exist. If an integration cannot tolerate additional order custom fields, use the toggle above to remove them — screening continues to run and to log and email MaxMind results; only the on-order record is omitted.

8. Admin Tools

The configuration screen includes interactive tools in addition to the configuration cards.

Test Connection

Verifies that your MaxMind Account ID and License Key are valid. The module sends a test query to the minFraud API and displays the response, along with your remaining account balance. A successful test shows a green result panel; a failure shows red with the error message. A failure here is almost always one of: a mistyped license key, a key generated for a different MaxMind service, or outbound HTTPS blocked by a firewall. (The test always uses a Score query, whatever tier you have selected.)

View / Clear Velocity Table

Log Files viewer

View a day's log file directly in the admin panel (Logging card). Logs are stored in wp-antifraud.logs/ and rotate daily.

Reset Statistics

Clears the screening counters and starts a new counting period. Requires a second click to confirm. Orders, order fields and the daily log are not affected.

9. How Screening Works

Screening runs at checkout — on the order checkout screen (OUSL) for the System Extension variant, or wherever the Fraud Check component item renders for the Component variant. The flow is the same for both:

  1. Trigger — The customer reaches checkout and screening begins.
  2. Enabled check — If fraud screening is disabled, the module exits immediately.
  3. Basket & data guard — Empty or expired baskets are skipped. If essential data is missing (IP, email, billing postal or country), the order is handled as a processing error under your error policy rather than sent to MaxMind.
  4. Whitelist check — If the client IP is whitelisted, the order is allowed through and any velocity block on that address is cleared. No query is made.
  5. Google Storebot check — If enabled and the request is confirmed as Google's verification crawler, the order is allowed through without a query. This runs before velocity so Google's own testing cannot trip the block.
  6. Velocity check — If the IP is currently velocity-blocked, the order is declined without consuming a query, and the checkout session is cleared.
  7. Cache check — If caching is enabled and a cached result exists for this cart, the cached decision is used — no query.
  8. minFraud query — The module sends order data (IP, email, billing and shipping address and names, phone, order amount, currency, browser, and a hashed session identifier) to MaxMind.
  9. Risk evaluation — The returned risk score is compared against your thresholds. If it meets or exceeds the decline threshold, the order is declined.
  10. Velocity update — If declined and velocity protection is enabled, the IP's decline counter is incremented.
  11. Result recorded — Checkout proceeds (accepted) or shows the decline message (declined). The result is written to the two order fields, an email is sent per your notification threshold, and the outcome is logged.

10. Email Notifications Reference

The module sends up to seven types of email notification. Each is a detailed HTML report with color-coded severity for instant inbox identification.

Email TypeWhen SentDefault Subject
Fraud Report (Accepted)Risk score meets the email threshold but is below the decline thresholdAntifraud Report - <risk%> - Order Accepted
Fraud Report (Declined)Risk score at or above the decline thresholdAntifraud Report - <risk%> - Order Declined
Processing ErrorMaxMind unreachable or an error during screeningAntifraud Processing Error
Whitelist NotificationA whitelisted IP placed an order (if enabled)Antifraud Report - IP Whitelisted
Velocity BlockAn IP was blocked by velocity protection. Sent once, when the IP first enters the blocked state.Antifraud Alert - IP Velocity Block - <IP>
Storebot AlertFirst confirmed Google Storebot activity of the dayGoogle Storebot Alert - <store> - Checkout testing underway
Storebot SummaryNext-morning summary of the previous day's Storebot activityGoogle Storebot Summary (<date>) - <N> tests from <M> IPs

Fraud report emails include customer name, email, billing and shipping addresses, IP address, risk score, order total and currency, the MaxMind response detail (which varies by service tier), and the screening decision. The subject on a fraud report shows the risk percentage and whether the order was accepted or declined, so you can triage from the inbox.

Sample fraud notification email [ Screenshot: fraud notification email ]images/email-fraud-alert.png
Figure — a fraud report notification email.

11. Troubleshooting

SymptomLikely cause and remedy
Test Connection failsCheck the Account ID is the numeric ID of your MaxMind account (not your email) and the license key has not been revoked. Confirm the key is for minFraud, and that your server can reach minfraud.maxmind.com over HTTPS.
Orders are not being screenedConfirm Enable Fraud Screening is on (the status card header shows green Enabled), the WolfPaw registration code is entered and valid, and the MaxMind credentials are saved. For the Component variant, confirm the Fraud Check item is in the checkout template. Check the customer's IP is not whitelisted.
All orders are declinedYour decline threshold is too low. Raise it, set the email threshold to 0, and review real scores for a week before choosing a new value.
Emails are not being receivedVerify the From and To addresses in Card 8. Confirm the From domain's SPF/DKIM/DMARC authorize your store's mail, check your store's mail settings under Settings › Domain Settings › Domain Details › Mail Settings, and check your spam folder — a handed-off email that is spam-filtered will still be recorded as sent in the daily log.
Every order produces a processing error naming a private IPYour store is behind a proxy or CDN. Enable Cart Is Behind a Proxy / CDN in Card 9.
Staff cannot place orders in the adminYour office address may be blocked by velocity protection. Clear the velocity table (Section 8), then add your office IP to the whitelist.
Velocity blocks are not workingVelocity counts declined attempts only. If your decline threshold is 100, nothing is ever declined and the block never fires. Also confirm velocity protection is enabled in Card 6.
Cache is not reducing minFraud queriesEnable query caching and set a TTL greater than 0. A TTL of 0 prunes entries immediately. The cache only reuses a result when the customer's shipping and billing addresses, contact info, session ID and device data are unchanged.
MM Technical Response shows only a few linesYou are querying the Score service, which returns only the risk score. Change the service tier to Insights or Factors in Card 5.
The MaxMind custom order fields are missing from the Orders pageOpen Card 5 and check the Custom Fields control — if it shows Not Installed, type install. Confirm Miva's native Custom Fields feature is present (the warning banner flags this).
Statistics show zero after reinstallingIf "Preserve statistics on uninstall" was off when you uninstalled, the counters were cleared. Upgrading in place does not clear them.

12. Uninstallation

To stop screening without removing the module, set Enable Fraud Screening to off in Card 3. To remove the module entirely, uninstall it from the Miva admin module manager. For the Component variant, also remove the Fraud Check item from your template.

Uninstalling leaves your order data intact: the two MaxMind order fields and their recorded values remain on your orders, and your screening statistics are preserved when Preserve statistics on uninstall is on (the default).

To remove the MaxMind order fields, do it before uninstalling. Use the Custom Fields control in Card 5 (type remove) while the module is still installed. Uninstalling the module does not remove those fields. You can also remove them later from Settings › Utility Settings › Custom Fields in your Miva admin.

13. Support and Contact

ChannelDetails
Emailantifraud@wpcomp.com
Websitehttps://www.wpcomp.com
MaxMind Documentationhttps://dev.maxmind.com/minfraud/

When contacting support, please include your Miva Merchant version, which variant and module version are shown on the Module Information card, your Miva Domain License number, and any relevant lines from the daily log — from the module's built-in log viewer or the wp-antifraud.logs/ directory. The basket and order identifiers from an alert email are the quickest way for us to locate a specific transaction.

14. Tips and Best Practices

Getting started

Understanding risk scores

The minFraud risk score is a percentage from 0.01 to 99 representing the probability that a transaction is fraudulent. A score of 5.00 means roughly a 5% chance the order is fraudulent.

Recommended starting thresholds

ScenarioEmailDeclineRationale
Conservative start0100Monitor only. Review emails to learn your score distribution. Temporary — velocity protection does not fire while nothing is declined.
Moderate2 – 510 – 20Good general-purpose range for merchants who do not review orders.
Aggressive1 – 25 – 10Tighter screening for merchants with thin margins.
Manual review0 – 575Block only obvious fraud; review the rest before shipping.

Margins and risk tolerance

Your ideal decline threshold depends heavily on your gross profit margin. The fundamental question is: does the cost of a fraudulent chargeback outweigh the cost of a lost sale?

As a rule of thumb: the lower your margin, the lower your decline threshold should be — unless you review orders manually, in which case you can set it higher and judge the middle ground yourself.

Velocity protection recommendations

Country blocking

You can block orders from specific countries through your MaxMind account — this is done on MaxMind's side, not in the module:

  1. Log in to your MaxMind account at maxmind.com.
  2. Go to minFraud › Country Block List.
  3. Change any country to "Block" to automatically assign a 100% risk score to orders originating from that country. The module will then decline them if your decline threshold is set below 100.

15. Version History

Version 10.903 — October 2026

Version 10.902 — October 2026

Version 10.803 — earlier

Version 10.712 — earlier

Version 10.512 — earlier

Version 10.401 — earlier

Version 10.301 — earlier

Copyright © WolfPaw Hosting and Development LLC. All rights reserved.
Real-Time Fraud Detection and Blocking is proprietary software. Unauthorized distribution is prohibited.