Proves money can still move. Checkout, gateways, stock, orders and the queue behind them.
Why this one exists. The only part of a site where being broken costs a specific amount per hour.
17Playbooks
103Steps written out
5That change anything
0Free on every plan
Every playbook it holds
Checkout Probe
agencyDailyDec 2026
Buy something from the store, prove it worked, and take the purchase back out. Every morning.
1
Pre-flight
Decide whether to probe at all. If WooCommerce is not active, if the site is already down, or if a previous probe order is still open, it exits here and creates nothing.
Stops the run
2
Read the revenue path
Which payment gateways are actually switched on, whether shipping zones still cover where the store sells, whether a database update is pending, and how deep the background job queue is. Most broken stores fail here and never reach step four.
Reads only
3
Write down what to undo
Record the exact stock level, order number and queue depth it is about to move, so the cleanup is precise rather than best effort. Nothing is created until that record exists.
Stops the run
4
Buy something
Adds a hidden, virtual probe product to a fresh cart and completes checkout through the store own pipeline, with its own tax and shipping rules, paid by a method that exists only while the request is running.
Writes
5
Prove it landed
The order exists, it has the right status, stock moved the way it should have, and the confirmation email left the site.
Reads only
6
Take the purchase back out
Cancels, restocks and removes the probe order and everything it created. Runs whether the probe passed or failed, and says so loudly if it cannot finish.
Reversible write
7
Confirm the store is as it was
Stock, order sequence and queue depth back where step three recorded them. Any drift is reported rather than swallowed.
Reads only
8
Report with the money attached
Not that checkout failed, but that checkout has been failing since 06:12 and this store took a known amount in the same window last week. Totals only. It never reads a real order or a real customer.
Reads only
8 steps · changes the site, behind a restore point
Gateway Health
agencyDailyDec 2026
Confirm every payment method the store offers is switched on, configured and answering, without ever putting a real card through it.
1
Read what is switched on
Every gateway WooCommerce lists, which of them are enabled, and which ones the checkout page actually offers a customer.
Reads only
2
Ask the provider about the keys
Where a gateway publishes a credential test, Protuno calls it and reports the provider's own answer. Nothing is charged and no card is used at any point.
Reads only
3
Look for live mode on sandbox keys
A gateway left in test mode, or enabled with sandbox credentials after a migration, is the commonest silent way a store takes no money.
Reads only
4
Check the provider is reachable
Request the gateway endpoint from our network and record the status and the time it took. A gateway that times out breaks checkout the same way a wrong key does.
Reads only
5
Say what this does not prove
It proves the store can talk to the provider with the credentials it holds. It does not prove a real card would be accepted, because nothing here charges one.
Reads only
6
Report
Ordered by how much of the checkout each finding blocks. It changes no setting on the store and none at the provider.
Reversible write
6 steps · reads only, never writes
Failed Order Rate
agencyDailyDec 2026
Watch the share of checkouts that end in a failed order, and tell you the morning it moves rather than at the end of the month.
1
Count by status
Totals by order status for the last day and the four weeks before it. Counts only. It never opens an order and never reads a customer.
Reads only
2
Work out the normal rate
Every store fails some checkouts. The number worth alerting on is the change from this store's own baseline, not the raw figure.
Reads only
3
Split the failures by payment method
Counts per gateway, never the orders themselves. A rate that moves on one method and not the others names the cause on its own.
Reads only
4
Alert on the change
The hour the rate crosses the band, not on the next scheduled report.
Reads only
5
Put the money on it
Not that failures are up, but that failures are up eleven points since 06:12 and this store took a known amount in the same window last week. Totals only.
Reads only
6
Report
It reads totals. It cancels nothing, retries nothing and changes no order.
Reversible write
6 steps · reads only, never writes
Stuck Orders
agencyDailyDec 2026
Find the orders that stopped halfway, where the customer paid and the store never noticed.
1
Count what is sitting in each status
How many orders are pending, on hold or failed, and how old the oldest of each is. Counts and ages only.
Reads only
2
Separate abandoned from stuck
A pending order twenty minutes old is a customer still typing. One four days old is money that never landed.
Reads only
3
Test the payment callback
A pile of pending orders is usually the provider's callback not arriving. Request the callback address and confirm it answers and rejects an unsigned request.
Reads only
4
Check the job behind it
Whether the scheduled action that moves an order on from pending is still running, because a stalled queue looks exactly like a stalled gateway.
Reads only
5
Name the likely cause
A blocked callback address, a scheduler that stopped, or a gateway failing to confirm. Each one is a different fix.
Reads only
6
Report
Ages, counts and the endpoint to fix. It never opens an order, never reads a customer and never changes a status.
Reversible write
6 steps · reads only, never writes
Oversell Risk
agencyDailyDec 2026
Find the products the store can sell more of than it holds, before a customer buys one you cannot ship.
1
Read stock as the store holds it
Every product with stock management on, its level, its backorder setting and its low stock threshold.
Reads only
2
Find what can go negative
Products with stock management switched off, or backorders quietly allowed, sell past zero and nothing warns anybody.
Reads only
3
Compare against the source of truth
Where a stock system is connected, hold its figure against the store's. A drift of one is a returns process. A drift of forty is a broken sync.
Reads only
4
Check the sync is still running
The last time it completed, because a sync that stopped last Tuesday looks identical to a sync that works.
Reads only
5
Rank by what it costs
A product that can oversell only matters in proportion to how often it sells.
Reads only
6
Report
It reads levels and reports drift. It never writes a stock number, in either direction.
Reversible write
6 steps · reads only, never writes
Sold Out Pages
agencyWeeklyLater
Stop sending search traffic to products you cannot sell, and give the visitor somewhere else to go.
1
Pre-flight
List the products out of stock past the window you set that still sit in the sitemap and still take search traffic. If there are none it exits here and creates nothing.
Stops the run
2
Write down what to undo
Record the catalogue visibility, the stock status and the address of every product it may touch, so the change can be put back exactly. Nothing is edited until that record exists.
Stops the run
3
Wait
The list, the proposed action for each product and the replacement page you chose. There is no timeout and no default yes.
Stops the run
4
Apply what you approved
Hide the product from the catalogue, or send its address to the replacement you picked. One product at a time, through post revisions.
Writes
5
Put it back
Restores every product to the visibility and the address step two recorded, in one action. No product is deleted at any point.
Reversible write
6
Verify
Request each changed address and confirm it answers the way you asked for, and that nothing else in the catalogue moved.
Reads only
6 steps · changes the site, behind a restore point
Shipping Gaps
agencyWeeklyDec 2026
Find the places the store takes orders from but has no shipping method for, so checkout ends in an apology.
1
Read the zones
Every shipping zone, the regions inside it, and the methods inside each one.
Reads only
2
Compare against where the store sells
The countries the store's own selling settings allow. Anywhere allowed but not covered is a checkout that offers nothing at the last step.
Reads only
3
Look for the empty fallback
A zone with no method in it, and a rest of the world zone that does not exist, both end the same way for the customer.
Reads only
4
Price a basket into each gap
Run the store's own shipping calculation for each uncovered region and record what comes back. It creates no cart and no order.
Reads only
5
Report
The regions, the missing methods, and the zone each one should sit in. It edits no zone and no rate.
Reversible write
5 steps · reads only, never writes
Tax Setup Check
agencyMonthlyDec 2026
Check the tax settings still match how the store actually sells, before an accountant finds out they do not.
1
Read the settings
Whether tax is on, whether prices are entered with it or without it, which address the rate is based on, and the rounding rule.
Reads only
2
Read the rate tables
Every rate, its country, its class, and any row sitting at zero that looks like it was left half finished.
Reads only
3
Compare against where it ships
A shipping zone with no matching tax rate collects nothing in that region, and the shortfall is only visible at the year end.
Reads only
4
Check the maths matches the table
Price a basket through the store's own calculation and hold the tax it returns against the rate the table says applies.
Reads only
5
Flag what changed
A rate table that moved without a release behind it is worth a question the same week, not the same quarter.
Reads only
6
Report
The finding and the setting to change. It never edits a rate, because getting tax wrong is expensive in both directions.
Reversible write
6 steps · reads only, never writes
Queue Health
agencyDailyDec 2026
Watch the background queue that sends the emails, syncs the stock and finishes the orders, because when it stalls nothing on the site looks broken.
1
Measure the queue
How many actions are pending, how many are running, and how long the oldest one has been waiting.
Reads only
2
Group the failures
Failed actions counted by what they were trying to do, rather than listed one at a time.
Reads only
3
Check it is moving at all
Completed actions in the last hour against the same hour last week. A queue at zero throughput is a stopped store with a working homepage.
Reads only
4
Check what triggers it
Whether the queue runs on the site's own scheduler, and whether that scheduler is being reached from outside at all.
Reads only
5
Name what stopped
Not that the scheduler is behind, but that order confirmation emails have not been sent since 03:40.
Reads only
6
Report
It reads the queue. It does not retry, cancel or delete an action, because a retried action can send a second email to a real customer.
Reversible write
6 steps · reads only, never writes
Store Database Update
agencyOn demandLater
Run the database update WooCommerce is waiting for, after a backup, one batch at a time.
1
Pre-flight
Read the store's schema version against the plugin version. If no update is pending it exits here and changes nothing.
Stops the run
2
Size the job
Which tables the update touches and roughly how many rows, so the length of the job is known before it starts rather than halfway through.
Reads only
3
Back up the database
A full database backup labelled for this run, confirmed readable. No row is migrated before this succeeds.
Stops the run
4
Run it in batches
Through WooCommerce's own updater, one batch at a time, with the shop page, a product and the cart requested after each.
Writes
5
Restore on any failure
If a batch errors, or the checkout stops answering, the database goes back to the backup from step three immediately and the run stops there.
Reversible write
6
Verify
Schema version current, the shop, a product, the cart and the checkout all answering, and the background queue draining again.
Reads only
7
Report
What was migrated, how long it took, and the backup it can still be rolled back to.
Reads only
7 steps · changes the site, behind a restore point
Template Drift
agencyWeeklyDec 2026
Find the store templates the theme copied years ago and never updated, which is how a checkout quietly loses a field.
1
List the overrides
Every WooCommerce template the theme or a child theme carries its own copy of.
Reads only
2
Compare the versions
The version header on each copy against the version the plugin ships today.
Reads only
3
Say what changed in between
The lines the plugin added since that copy was made, so the finding is a difference you can read rather than a version number.
Reads only
4
Rank by what the template does
An out of date checkout template is money. An out of date product tab is not, much.
Reads only
5
Report
It reads files. It edits no template, because an override is somebody's deliberate work and overwriting it breaks the design.
Reversible write
5 steps · reads only, never writes
Cart Fragments
agencyWeeklyDec 2026
Measure the uncached request the store makes on every page load, which is the commonest reason a shop feels slow to the person browsing it.
1
Check whether it is running
Whether the cart fragments request is enabled, and which templates ask for it.
Reads only
2
Time it
Request the endpoint the way a browser does and record how long the server took to answer, measured from our network.
Reads only
3
Count where it fires
It is only expensive where there is no cart. Request a sample of templates and record which ones call it anyway.
Reads only
4
Check what sits in front of it
Whether the cache or the CDN passes it straight through, which it must, and whether anything else has been made uncacheable alongside it.
Reads only
5
Report with the number
The measured time and the pages it runs on, not a grade out of a hundred. It changes no setting.
Reversible write
5 steps · reads only, never writes
Product Schema
agencyMonthlyDec 2026
Check the product markup search engines read still matches what the store actually sells today.
1
Collect the markup
Read the product structured data from a sample of product pages exactly as they are delivered.
Reads only
2
Validate it
Required fields present, types correct, and the offer block complete rather than half filled.
Reads only
3
Hold it against the store
Price, currency and availability in the markup against what WooCommerce holds right now. A sold out product still marked in stock is a click somebody pays for and wastes.
Reads only
4
Find the duplicates
Two plugins each writing their own product block is one page described twice, and the search engine picks one of them without telling you which.
Reads only
5
Report by revenue
Ordered by what the product sells, with the field to change. It publishes nothing and edits no page.
Reversible write
5 steps · reads only, never writes
Currency Consistency
agencyMonthlyDec 2026
Make sure one price is not described three different ways, which is how a store ends up charging in the wrong currency.
1
Read the store's currency
The base currency, its symbol position, its separators and how many decimal places it uses.
Reads only
2
Compare against the gateways
Every enabled payment method and the currency each is configured to accept. A gateway that cannot take the base currency fails at the last step of checkout.
Reads only
3
Compare against the markup and the feeds
The currency in the product schema and in any connected product feed against the base currency the store charges in.
Reads only
4
Check the switcher
If a multi currency plugin is installed, whether every currency it offers has a rate, a rounding rule and a gateway that accepts it.
Reads only
5
Report
Each mismatch and where a customer would see it. It changes no price and no exchange rate.
Reversible write
5 steps · reads only, never writes
Coupon Expiry
agencyWeeklyLater
Find the discount codes that outlived their campaign, and close the ones you say to close.
1
Pre-flight
Read every coupon, its expiry, its usage limit and how often it was redeemed in the last month. If nothing is open past its campaign it exits here and changes nothing.
Stops the run
2
Separate the costly from the untidy
A code with no expiry and no limit that is still being redeemed is money leaving the business. A stale code nobody uses is housekeeping.
Reads only
3
Write down what to undo
The exact expiry date and usage limit on every coupon it may touch, so any change can be put back to the value it had.
Stops the run
4
Wait
The list, with the date proposed for each code. Nothing is changed until you approve it, and there is no default yes.
Stops the run
5
Set the dates you approved
One coupon at a time, the expiry date only. No coupon is deleted, and no discount already applied to an order is altered.
Writes
6
Put it back
Restores every coupon to the values step three recorded, in one action.
Reversible write
7
Verify
Read each coupon back and confirm it holds the date you approved and nothing else moved.
Reads only
7 steps · changes the site, behind a restore point
Subscription Renewals
agencyDailyLater
Watch the renewals that pay the client's bills, and notice the day they stop going through.
1
Count what is due
Renewals scheduled for today and for the week, as totals by status. Counts only, never a customer and never an order.
Reads only
2
Check they are actually queued
A renewal with no scheduled action behind it will never run, however healthy the subscription looks on screen.
Reads only
3
Count what failed
Failed and on hold renewals for the period, grouped by payment method and by the reason the gateway gave.
Reads only
4
Watch the expiring cards
How many stored payment methods expire inside the next two months, as a number. It never reads a card and never reads a customer record.
Reads only
5
Compare against last month
The figure that matters is the change in the failure rate, because every subscription store has a floor it never gets under.
Reads only
6
Report with the money
The value at risk in the window, from totals alone. It retries nothing, cancels nothing and emails no customer.
Reversible write
6 steps · reads only, never writes
Refund Path Probe
agencyWeeklyLater
Prove a refund and a cancellation still work, using orders Protuno created itself and never a real one.
1
Pre-flight
Check WooCommerce is active, the store is answering, and no earlier probe is still open. If any of that fails it exits here and creates nothing.
Stops the run
2
Write down what to undo
Record the stock level, order sequence and queue depth it is about to move, so the cleanup is exact rather than best effort. Nothing is created until that record exists.
Stops the run
3
Create two probe orders
A hidden virtual product bought twice through the store's own pipeline, paid by a method that exists only while the request is running. No real payment processor is charged.
Writes
4
Cancel one and refund the other
Run the store's own cancellation path and its own refund path against the two orders this run created, and record exactly what each returns.
Writes
5
Prove the state moved
Statuses changed, stock came back, and the emails the store sends on a refund and on a cancellation left the site.
Reads only
6
Take both purchases back out
Removes both probe orders and everything they created. Runs whether the probe passed or failed, and says so loudly if it cannot finish.
Reversible write
7
Confirm the store is as it was
Stock, order sequence and queue depth back where step two recorded them. Any drift is reported rather than swallowed.
Reads only
8
Report
Whether a refund can be issued today, and the exact error if it cannot. It never reads, refunds or cancels a real order.
Reads only
8 steps · changes the site, behind a restore point