WordPress / WooCommerce
The Flowproof plugin gives your WordPress or WooCommerce site a signed cleanup endpoint, keeps test users out of your lists and reports, and can stop a staging copy from emailing real customers.
Requires WordPress 6.4+ and PHP 8.1+. WooCommerce is optional. Your site keeps its own credentials: Flowproof sends a signed request naming the addresses to remove, and the plugin deletes them and replies with a receipt.
Set it up
Install the plugin
In WordPress, go to Plugins → Add New → Upload Plugin, choose the Flowproof zip and activate it.
Connect it to your project
Open Settings → Flowproof and fill in Project connection:
- Enable: on.
- Project slug: your Flowproof project name. For
acme.s7k2ab.alice@flowproof.devit’sacme. - Root domain: leave it as
flowproof.dev. - Hide test users: on, to keep them out of the user list and WooCommerce reports.
Add the site to Flowproof
Create the connection with your site’s address (see how to connect a system for loading your API key):
Terminalread -rs FLOWPROOF_API_KEY # paste your fp_ key, press Enter (nothing is shown) export FLOWPROOF_API_KEYTerminalcurl -s -X POST https://mcp.flowproof.dev/api/projects/acme/adapters \ -H "Authorization: Bearer $FLOWPROOF_API_KEY" \ -H "Content-Type: application/json" \ -d '{"label": "Shop (production)", "config": {"system": "wordpress", "siteUrl": "https://shop.example.com"}}'The reply contains a
secret. It is shown once: copy it now.Paste the secret into WordPress
Back in Settings → Flowproof → Shared secret, paste it and click Save secret. Then click Test connection under Endpoints; it should say “Connected.” If you lose the secret, remove the connection and add it again.
Test, preview and arm
Run the test, preview and arm requests from Cleanup with the connection’s id. From then on, every run in the project removes its test users from this site.
What gets removed
- Users whose email is on the run’s list, with their meta.
- WooCommerce orders for those addresses, through WooCommerce’s own API so line items and lookup tables are cleaned up too.
- Comments left with those addresses.
Orders and comments go first, then the user. An address that belongs to an administrator is skipped and reported, never deleted: a test address should never be an admin, so if one is, something upstream is wrong.
If the same request arrives twice (a retry after a timeout), the plugin replays its first receipt rather than reporting everything as not found.
Hiding test users
Registrations from your project’s test addresses are flagged as they sign up. With Hide test users on, they’re left out of the default Users list, its counts, and WooCommerce Analytics. They are never unreachable: the Users screen always has a Flowproof test users view listing every one, and the settings page shows how many there are. After runs have cleaned up, that number should be zero.
Newsletter and CRM syncs. If your code pushes new users to a mailing list, skip test addresses with:
if ( function_exists( 'flowproof_should_suppress_sync' )
&& flowproof_should_suppress_sync( $email ) ) {
return; // Flowproof test address: do not sync.
}Staging mail guard
A staging copy of a live shop is full of real customers, which is why staging sites usually run a “stop all emails” plugin. But that also blocks the emails Flowproof is testing. The mail guard replaces it: only emails to this project’s test addresses are sent; everything else is suppressed and logged.
Switch it on in Settings → Flowproof → Staging mail guard, or pin it in the staging site’s wp-config.php so that copying the production database over staging can’t switch it off:
define( 'FLOWPROOF_MAIL_GUARD', true );- An email is sent only if every recipient (To, Cc and Bcc) is a test address. One real address anywhere and the whole email is held back.
- With no project configured, every email is suppressed: the guard fails safe.
- While it’s on, every admin screen shows a notice and the admin bar says Mail guard ON.
Test checkout (WooCommerce)
The plugin can also let your agent check out for $0 as a verified test user, so it can test order and receipt emails on a live store. Real customers always pay. Set-up is one token: Testing paid signups → WooCommerce.
Off switches
To stop all deletion on a site in a way a compromised admin login can’t undo, add to wp-config.php:
define( 'FLOWPROOF_TEARDOWN_DISABLED', true );Uninstalling the plugin removes its settings and flags. It never removes users.