OrderGuard
Stop risky uncollected orders and serial returners before you ship.
Solid choice
OrderGuard is a solid plugin choice in 2026, with a few things worth checking first. It runs on 200+ sites and was last updated 2 days ago, and scores 69/100 on our health check.
- Actively developed β last update 2 days ago
- Tested with the latest WordPress (7.1)
- Small user base (200+ active installs)
- Very few reviews so far
- Needs PHP 8.2 or newer
How does it stack up?
Side-by-side on installs, updates, ratings & supportDaily downloads
Download spikes usually follow a new release β each site that auto-updates counts as a download.
Rankings
Where OrderGuard stands todayWordPress.org search rankings
Live position in the plugin search, top 100| Keyword | Position |
|---|---|
| cash on delivery | #65 |
| fraud prevention | #42 |
| returns | >100 |
| shipping | >100 |
| woocommerce | >100 |
About OrderGuard
From the official readme Β· v0.3.0Description
Stop risky uncollected orders and serial returners before you ship.
OrderGuard relies on an external cloud service (api.orderguard.net) to work β the risk scores come from a network shared between merchants. Full details of what is sent and when are in the External services section below.
Powered by a shared merchant network, OrderGuard shows collection and return risk before you ship. Built-in automations save time and protect your margins β without slowing down reliable customers.
Cash on delivery loses money two ways: parcels that are never collected, and orders that come straight back as returns. OrderGuard scores both β so you can spot the no-shows and the serial returners before a parcel goes out.
When an order arrives, OrderGuard shows two numbers right inside the WooCommerce order: a collection risk and a return risk. Every order with a usable phone number or email is checked, not only cash-on-delivery ones β except for customers on your exclusion list, who are never checked and never sent β the scores matter most for COD, but a serial returner is worth knowing about whatever they paid with. You decide what to do β ship as normal, confirm by phone, or offer prepayment instead. OrderGuard never cancels or holds an order by itself.
Privacy-first by design
Phone numbers and email addresses are converted into SHA-256 hashes inside your own website, before anything is transmitted β these contact fields leave your site only as hashes, and the raw values never reach OrderGuard’s servers. The service also receives the order facts listed below, such as status, outcome, billing country and references; those facts may be sent even when no usable contact hash can be produced. Names, customer IP addresses, street addresses, cities or regions, postal codes, order amounts and payment-card or payment-credential details are never transmitted.
Two things we would rather state plainly than gloss over. Those hashes are pseudonymous data, not anonymous data. And if you flag or block a customer, their name, email and phone are stored locally, on your own site, so that your blocked-clients list is readable by you β that data stays on your server and is not sent to OrderGuard.
What you get
- Collection risk and return risk on every COD order, from a shared merchant network.
- Serial-returner detection β a first-time buyer with a poor return record shows up before you ship.
- Report or block a customer at three levels: report (a private record on your own site β and a signal to the network too, but only if you switch Merchant Signals on, which is off by default), block cash on delivery only (they can still order, but prepaid), or block entirely.
- Automatic COD hiding (optional, off by default) β hide cash on delivery at checkout when a customer crosses the limits. On the free plan the limits are fixed defaults (5 not-collected parcels or 12 returns); setting your own limits is a Pro feature. Works on both the classic and the block-based checkout.
- Courier delivery sync β reads tracking data made available by courier integrations. Courier adapters are included for Econt, Speedy, BOX NOW and Pigeon Express. Live-store verification has covered Econt through mreja.net’s WooCommerce Econt plugin, Speedy through Extensa’s woocommerce-speedy plugin, and BOX NOW. Econt’s official plugin, Econt and Speedy through Bulgarisation, and Pigeon Express have not yet been verified on a live store. API-based adapters query the courier directly; the mreja.net WooCommerce Econt adapter reads that plugin’s local tracking tables. When the available data gives an unambiguous final result, OrderGuard records the shipment as kept, returned or not collected instead of inferring the outcome from order statuses alone. Anything unclear is left open and re-checked later.
- Order history import β checks your last 24 months of orders in the background, so the scoring is useful from day one.
- Insights β local activity counts showing what the plugin checked, flagged or blocked.
External services
This plugin connects to the OrderGuard API at https://api.orderguard.net, operated by Fregata Group Ltd (Bulgaria, EU). This is required for the plugin to function: the reliability scores come from a shared network that no single store could build alone.
When data is sent:
- When you connect your store to the service on the OrderGuard screen (this is separate from activating the plugin in WordPress, which sends nothing), to verify that you control the store domain: your store domain and the fact that you accepted the Terms, Privacy Policy and DPA. Nothing about any customer is sent before this is complete. If your key is ever reissued, the same domain-control verification runs again (only your store domain is sent then β the acceptance was already recorded when you connected).
- When a non-excluded order is created, except for a checkout attempt that OrderGuard itself rejects. This is not limited to cash-on-delivery orders. If a usable phone number or email exists, its hash is sent; even without a usable contact hash, the order’s billing country, order reference and item references may still be sent.
- At checkout, if you have switched on automatic COD protection: the plugin asks the server whether to offer cash on delivery. This happens before an order exists.
- Whenever an order’s WooCommerce status changes β including statuses such as
processing,on-hold,completed,cancelledorfailedβ when a refund is recorded, and when the plugin records a kept, returned or not-collected result from your courier. - When you open an order in the admin: with the Pro add-on and live scoring switched on, to refresh the score; on any plan, if Merchant Signals is enabled, to count how many other stores have flagged that customer; and on any plan, if automatic COD protection is on, to show whether cash on delivery is currently hidden for that customer β the same decision request the checkout makes.
- During the automatic history import β each imported order is sent with its original creation date, so past orders are weighed by their real age β and during the hourly reconciliation sweep that retries anything the server has not acknowledged.
- When you flag or block a customer from one of their orders, if you have switched Merchant Signals on. A blocked-client record you type in by hand stays on your site and sends nothing. Removing a flag withdraws the signal your store sent earlier β and that withdrawal is sent even if you have since switched Merchant Signals off, so a signal you retract does not linger on the network.
- When you exclude someone by phone or email: their hashes are sent so the matching records your store contributed can be erased from the server. An exclusion by name only stays on your site β names are never transmitted, so there are no name records on the server to erase; to erase past signals, exclude their phone or email too.
- When you look up or erase a customer’s data from the Legal tab.
- When you erase a customer’s personal data with WordPress’s Tools β Erase Personal Data and OrderGuard’s owned-storage erasure engine is active on your site: an erasure request, so that the records your store contributed can be erased on the server. It contains the SHA-256 hash of the requester’s email address, the internal references of the orders in scope with a SHA-256 hash of each order’s key, the time cutoff, random installation and namespace identifiers, the WordPress request ID, an operation identifier, and a digest of the local evidence. The customer’s phone number and other order contact details are not sent in this request. The plugin also checks that the service is ready, sending a random challenge and the store’s API key. Receipt acknowledgements resend the full erasure request described above together with the receipt digest. Restart-approval requests resend that full request together with the proposed new operation identifier. A proof request made from Tools β OrderGuard erasure proofs sends the full request and a fresh random challenge. All these calls carry the store’s API key. Pending acknowledgements and restart-approval requests are checked by scheduled hourly jobs; those jobs send nothing when no eligible local request is pending.
- When the plugin checks which plan your store is on or shows your subscription details on the Plan tab; when you request the Pro add-on download (your browser is then sent to a personal download link on api.orderguard.net that stays valid for a few minutes; WordPress itself does not download or install anything); when you open the billing portal, switch your billing interval or open an invoice; and, if the Pro add-on is installed, when it checks for updates. Each of these sends your store’s API key and nothing about any customer.
- When you start an upgrade to Pro from the Plan tab: the plugin asks the service to create a checkout for the billing interval you chose (monthly or annual), then asks it to confirm that the checkout belongs to your account, and then sends your browser to the checkout page on orderguard.net, where payment is handled by Paddle. These two requests send your store’s API key, the chosen interval and the checkout’s transaction identifier β nothing about any customer.
- When you press Contact Support on the Support tab (Pro): the plugin asks the service for a support pass, sending your store’s API key, and then opens the OrderGuard support page on orderguard.net in your browser with that pass, so the page knows which store you are. The pass-generation call sends no order data, customer data or diagnostic report. Opening the support website and submitting the form are separate website interactions, covered by the website privacy policy.
- If you join the waiting list from inside the plugin, your own email address is sent.
What is sent:
- SHA-256 hashes of the customer’s phone number and email address β computed on your server, before transmission. The raw values are never sent.
- The order outcome (kept, returned, not collected), an internal order/item reference, and the order’s billing country β the country is used to format the phone number correctly before hashing, and it is also transmitted and stored with the order’s record on the server.
- The order’s WooCommerce status as it changes, in WooCommerce’s own words (for example
processing,completed,cancelled), whether the order was cash on delivery, and β for a refund β what proportion of the order was refunded. - When a courier reports an outcome: which courier it was and that the outcome came from a courier rather than from you.
- Your store domain and API key, so the request can be authenticated.
- When automatic COD protection is on: the not-collected and returned limits in effect on your site. On the free plan these are the fixed defaults; custom limits require the Pro add-on, and the server β which knows your plan β honours custom values only for Pro accounts.
- Where you use them: a flag or block signal type, and a plan check so the plugin knows whether this store is on Free or Pro.
- If you join the waiting list: your own email address, your store domain and your country.
- If you open a Pro invoice from the Plan tab: the identifier of that payment transaction, so the invoice can be fetched.
- If you start an upgrade to Pro: the billing interval you chose and the checkout’s transaction identifier.
- For an erasure through WordPress’s privacy tools: the hashed requester email, hashed order keys with internal order references, and the identifiers, challenges and digests described above.
What is never sent about your customers: names, customer IP addresses, street addresses, cities or regions, postal codes, order amounts, or payment-card data β nothing readable that identifies a shopper. The billing country is the only address field sent, as disclosed above. (Your own email address is sent if you choose to join the waiting list, and your store domain identifies your shop. Those are yours, not your customers’.)
Data is processed and stored within the EU. Your use of the service is subject to:
- Terms of Service: https://www.orderguard.net/terms/
- Privacy Policy: https://www.orderguard.net/privacy/
- Data Processing Agreement: https://www.orderguard.net/dpa/
No third-party payment or checkout script is embedded in your site, and no card data ever touches your WordPress admin: the Pro upgrade button asks the OrderGuard service to prepare a checkout, as described above, and then sends your browser to orderguard.net to pay. OrderGuard does run its own code during checkout when you switch on automatic COD protection β that call is described above; it sends the customer’s identity hashes, your store’s API key, and the applicable not-collected and returned limits.
Courier delivery sync (optional)
If you switch on courier sync, most adapters ask that courier directly what happened to your own shipments. They read the API credentials already saved by the courier’s own WordPress plugin and use them to make that call on your behalf. Those credentials are never sent to OrderGuard’s servers and are never stored by OrderGuard. Apart from those authentication fields, the only shipment-specific value sent to the courier is your shipment’s tracking or order reference. The courier’s reply may contain more than the delivery status; OrderGuard uses only the response fields needed to identify the matching shipment, handle the API result and derive its delivery outcome. It does not store or forward the full response.
The mreja.net WooCommerce Econt variant is different: OrderGuard does not use its credentials and does not contact Econt. It reads tracking already present in that plugin’s local database tables. That courier plugin refreshes those tables only when an unsettled order is opened in the WordPress admin, so automatic coverage can remain incomplete if orders are not opened there.
Each courier is contacted only if you enable and configure it:
- Econt β the official Econt plugin uses https://delivery.econt.com (https://delivery-demo.econt.com in demo mode); the Bulgarisation integration uses https://ee.econt.com/services/ (https://demo.econt.com/ee/services/ in demo mode). With the mreja.net WooCommerce Econt plugin, OrderGuard makes no Econt request and reads only that plugin’s local tracking tables, as described above.
Terms: https://www.econt.com/econt-express/common-terms β Privacy: https://www.econt.com/econt-express/privacy-policy - Speedy β https://api.speedy.bg
Terms: https://www.speedy.bg/bg/terms-and-conditions β Privacy: https://www.speedy.bg/bg/gdpr - BOX NOW β https://api-production.boxnow.bg
Terms: https://boxnow.bg/terms-of-use-for-shipping-services β Privacy: https://boxnow.bg/personal-data-processing-notice - Pigeon Express β https://api.pigeonexpress.com (https://api-demo.pigeonexpress.com in sandbox mode)
Terms: https://pigeonexpress.com/terms β Privacy: https://pigeonexpress.com/privacy
Your use of each courier’s API is governed by your own agreement with that courier.
Installation
- Install and activate the plugin (WooCommerce must be active).
- Go to OrderGuard in the admin menu and complete activation for your store.
- Your last 24 months of orders are imported automatically once activation completes, so scoring is useful straight away. Progress is shown in OrderGuard β Settings β Account. All payment methods are included, not only cash on delivery.
- Review the settings in OrderGuard β Features. The privacy-sensitive options β automatic COD hiding and cross-store Merchant Signals β ship switched off; enable them only if you want them.
Frequently asked questions
Do my customersβ phone numbers or emails leave my store?
Not in readable form. They are converted into SHA-256 hashes on your own server first, and only those hashes are transmitted; the raw originals never leave your site. The hashes are still pseudonymous personal data, as explained below. We do not claim those hashes are anonymous. A hash of a phone number is pseudonymous personal data β the range of possible mobile numbers is small enough that a plain hash could be guessed at. That is why OrderGuardβs server applies HMAC-SHA256 with a secret key of its own before storing anything, so that someone holding only a copy of the database cannot testβ¦
Does OrderGuard block orders automatically?
Not unless you switch it on. By default the scores are advisory β you decide. Automatic COD hiding is off by default, and even then it only hides the cash-on-delivery option; the customer can still buy using another payment method.
Does it work with the new block-based checkout?
Yes. COD hiding works on both the classic checkout and the block-based (Gutenberg) checkout.
What do I have to tell my own customers?
Because the plugin processes personal data on your behalf, you should mention it in your storeβs own privacy notice. OrderGuard provides ready-made disclosure text in the pluginβs Legal tab that you can copy.
What happens when a customer asks me to erase their data?
OrderGuard automatically processes the records within the requestβs scope that meet its identity-matching checks. Manual flags that match the customer only through a phone number or an alternative email address are not proof that the flag belongs to that customer, so OrderGuard lists them for you to review. It records a review notice and does not report the erasure as complete. Very common phone numbers or email forms are counted rather than listed, and those counts still need investigating. The merchant guide explains what to do and how quickly to answer the customerβ¦
Which couriers does delivery sync cover?
Courier adapters are included for Econt, Speedy, BOX NOW and Pigeon Express. Live-store verification has covered Econt through mreja.netβs WooCommerce Econt plugin, Speedy through Extensaβs woocommerce-speedy plugin, and BOX NOW. Econtβs official plugin, Econt and Speedy through Bulgarisation, and Pigeon Express have not yet been verified on a live store. API-based adapters ask the courier directly, using credentials already saved by the courierβs own WooCommerce plugin. The mreja.net WooCommerce Econt adapter instead reads that pluginβs local tracking tables and does not contact Econt. Everyβ¦
Is it really free?
Yes. The core Free-plan features described above β including Merchant Signals and automatic COD hiding with fixed limits β are free. Custom limits and live order-screen re-scoring require the optional OrderGuard Pro add-on, distributed separately from orderguard.net.
How does the network decide the scores?
Only resolved order records feed the risk scores: kept, returned or not collected. Their age, the fraction refunded and the amount of resolved history affect the numerical result. A courier-reported result can settle what an orderβs outcome was, but it feeds that same order record β it is not a separate scoring input. Merchant reports never change the risk score at all: they are shown alongside it as a separate advisory count, and in the order panel, reports from other stores are shown only after at least two independent stores agree β so a single mistaken report can never follow a shopperβ¦
What does Pro add?
The Free plan includes the core features above, including automatic COD hiding with fixed limits. OrderGuard Pro is a separate add-on (installed from orderguard.net) that adds live re-scoring on the order screen and custom risk thresholds. The free plugin contains no locked code.
Does OrderGuard work on multisite?
Multisite network activation remains on OrderGuardβs established erasure engine in this release. The new owned-storage erasure engine and its supervised cutover are qualified only for individual WordPress sites.
Changelog
Existing stores must follow the documented stop-the-workers and supervised takeover procedure. Do not force activation by editing lifecycle records.
0.3.0
- Moves OrderGuard personal-data erasure onto the reviewed owned-storage engine. Existing stores require a supervised cutover after their workers are stopped; fresh stores activate the new engine during plugin activation.
- Exclusion checks now fail closed, signal changes use a durable outbox, and uninstall refuses while protected privacy work is unfinished or its authority records are damaged.
- New Support tab for contacting OrderGuard support in Bulgarian or English, Monday to Friday. No system data is sent automatically. Pro includes priority support.
- Start an upgrade to Pro from the Plan tab.
- Guided recovery for eligible interrupted customer erasures, with owner approval handled by OrderGuard and an attention page under Tools.
- Clearer erasure screens and messages, with Bulgarian translations.
0.2.23
- WordPress.org resubmission hardening: stored-data, scheduled-work and configuration identifiers now use the full OrderGuard namespace throughout the public plugin.
- The public package contains no private migration code. Existing private pilot stores use a separately controlled compatibility build to copy and verify their earlier rows before that schema is retired.
- Clarified that customer contact hashes leave the store in pseudonymous, non-readable form rather than implying that no customer-derived data is transmitted.
0.2.22
- Admin scripts and styles are now loaded through WordPress’s enqueue APIs instead of being printed inline.
- Existing Free-plugin settings are carried forward automatically to the renamed storage keys during the update.
- Renamed scheduled tasks are repaired during the update. If an older history import was left running without a pending batch, OrderGuard may restart it after a safety delay of at least five minutes, using its saved position when one exists or starting from the beginning otherwise.
- Courier identifiers are now normalized consistently. Stores that previously recorded courier health or resume state under a non-standard identifier may rebuild those local counters once after updating; recorded order outcomes and customer data are unaffected.
0.2.21
- The order panel now shows what your own records say about a customer β imported order history included β alongside the network view. Your own evidence no longer hides behind withheld network counts.
- When your own records show enough not-collected or returned orders, that now surfaces where you already look: as a badge in the orders list, in the Review queue, and β on a new cash-on-delivery order β as a private order note. These are your own numbers, read from your own records β nothing new is sent anywhere.
- The “detailed counts stay locked” note now says what actually lifts the lock, instead of promising that a customer’s first order will unlock the counts when your imported history already holds their completed orders.
0.2.20
- The order panel no longer says a customer is “new to the network” when OrderGuard has actually seen their orders but none of them reached a result it can score. It now tells you which of the two it is looking at.
0.2.19
- Bulgarian stores: the “no history yet” note in the order panel was showing in English. It is now translated like the rest of the panel.
Screenshots
For developers
Is this your plugin? Show off the numbers.
Add a live badge to your site, docs or GitHub README. It updates on its own β no account needed.
Best OrderGuard alternatives
All cash on delivery plugins βFAQ
OrderGuard: quick answers
Straight answers, pulled from live WordPress.org data.
Live data from WordPress.org Β· checked Oct 16, 2026
Is OrderGuard free?
Yes. OrderGuard is free to download and use from the official WordPress.org plugin directory.
Is OrderGuard safe to use in 2026?
OrderGuard is a solid plugin choice in 2026, with a few things worth checking first. It runs on 200+ sites and was last updated 2 days ago, and scores 69/100 on our health check.
How many websites use OrderGuard?
OrderGuard is active on 200+ WordPress websites and has been downloaded 84 times since it launched in October 2026. It was downloaded 72 times in the last 30 days.
Does OrderGuard work with WordPress 7.1?
Yes. The developer has tested OrderGuard up to WordPress 7.1.3, the latest release. It requires WordPress 6.5 or newer.
What PHP version does OrderGuard need?
OrderGuard requires PHP 8.2 or higher. Most hosts run PHP 8.x today, so it works on any modern WordPress hosting.
When was OrderGuard last updated?
The latest version, 0.3.0, was released on October 14, 2026 (2 days ago).
Who makes OrderGuard?
OrderGuard is developed and maintained by orderguard.
What are the best alternatives to OrderGuard?
The most popular alternatives to OrderGuard are Smart COD for WooCommerce (30K+ installs), Shiprocket (10K+ installs) and PiWeb Disable payment metho⦠(4K+ installs).
Powered by PageForge
Want thousands of pages that rank like these? Build them in an afternoon.
This directory runs on the same engine as PageForge. Turn any spreadsheet, CSV or API into thousands of fast, SEO-ready WordPress pages β with schema, internal links and AI-written copy baked in.
- CSV, Google Sheets & API data sources
- AI content, schema & internal links per page
- Works with Elementor, Gutenberg, Yoast & Rank Math
- Free on WordPress.org β no credit card