Skip to content
All articles

Product guides

WooCommerce recent sales notifications from real orders

How to show WooCommerce recent sales notifications built only from paid orders: which statuses count, how the webhook is created, and what each popup shows.

Provedly team··5 min read

WooCommerce recent sales notifications can come straight from your real orders: when an order is paid, WooCommerce sends it to the notification service over a signed webhook, the service checks the signature, and the order becomes a popup with the buyer's first name, city, product and the real time of purchase. Nothing is typed in by hand, and an order that was never paid never appears. This guide shows how that works with the free Provedly plugin for WordPress, which creates the webhook for you.

If you would rather wire it up without a plugin, our older guide on WordPress and WooCommerce without a plugin covers the code route.

What "from real orders" means

Many sales popup plugins for WordPress fill the corner of the screen with whatever they are given: orders read from the database, entries typed into a settings form, or generated names when the store is quiet. They look the same to a shopper.

The stricter version has three properties:

  1. The order comes from WooCommerce itself, delivered by a webhook, not copied from a form.
  2. The message is signed. WooCommerce signs each delivery with a secret you choose, and the receiving end rejects anything whose signature does not match.
  3. Only paid orders count. A cart, a failed payment or an unpaid order is not a sale.

When all three hold, the popup can say "Verified purchase" and mean it. Our explainer on webhook signing secrets covers how the signature check works.

Which orders become notifications

WooCommerce moves each order through statuses. Provedly records an order only when it arrives with a status that means money changed hands:

WooCommerce status Becomes a notification?
Processing (paid, not yet shipped) Yes
Completed Yes
Pending payment No
On hold (for example, waiting for a bank transfer) No, until you mark it paid and it moves to Processing
Failed, Cancelled No
Draft (checkout started) No

Each order is recorded once. WooCommerce sends an update every time an order changes, such as when you add a note or mark it shipped, but a second delivery for the same order is recognised as a duplicate and ignored. The time shown is when the order was paid, or when it was created if WooCommerce did not record a payment time.

Setting it up with the plugin

You need WordPress with WooCommerce 7 or newer, and a free Provedly account.

  1. Install the plugin. In WordPress, go to Plugins, Add New, search for Provedly and install it. It is also on WordPress.org.
  2. Create the source in Provedly. Open your widget, then the Data tab, Verified sources, Add, WooCommerce. Copy the webhook URL it gives you.
  3. Choose a signing secret. Any value of at least 8 characters. Paste it into the Provedly source so each order is signature-checked.
  4. Fill in the plugin page. In WordPress, open Provedly in the admin menu. Paste the widget token from the widget's Embed tab, the webhook URL and the same signing secret. Bar tokens are optional.
  5. Save. Saving creates a WooCommerce webhook named "Provedly – order updates" on the order updated event, pointed at your Provedly URL and signed with your secret. The plugin page then shows a status list: WooCommerce detected, widget loading, webhook active.
  6. Place a test order and pay for it. It should appear in Provedly within seconds with the verified mark.

The same plugin loads the widget and any countdown or announcement bars on every page, so you do not need to edit your theme.

What a notification shows, and what is sent

The webhook carries the order as WooCommerce builds it. From that, Provedly keeps:

  • the buyer's name, shown in the format you choose for the widget, such as first name only
  • the city, state and country, taken from the shipping address, or the billing address if there is no shipping city
  • the first product in the order
  • the total and currency
  • the order id, so the same order is never recorded twice

Card numbers and full street addresses are never sent. Our post on name and location formats helps you choose how much of the name and place to show.

The plugin also copies the widget's anonymous visitor id onto the order. That lets Provedly count proof-assisted orders: orders from visitors whose browser saw a notification in the 30 days before buying. The id is random and contains no personal data. More on that in measuring proof-assisted orders.

When orders do not appear

Symptom Likely cause Fix
Test order paid, nothing in Provedly The webhook is paused or disabled in WooCommerce WooCommerce, Settings, Advanced, Webhooks: check its status is Active
The webhook's delivery log shows a reply saying WooCommerce sent an API error instead of the order The webhook has no WordPress user with permission to read orders Edit the webhook and choose an administrator as its user
The delivery log shows "Invalid signature" The secret in WordPress and in Provedly differ Paste the same secret in both places and save
Bank transfer orders missing They are On hold Mark them as paid; they appear when they move to Processing
The plugin page says WooCommerce is not active WooCommerce is deactivated Activate it; order sync needs WooCommerce 7 or newer

Our guide to WooCommerce webhooks for store owners goes through the webhook screen field by field.

Frequently asked questions

Can I add a notification for an order that came in by phone?

You can add it by hand, and it will carry a "Sample" tag, not the verified mark. There is no field to type an order in as verified. If phone orders go into WooCommerce as real, paid orders, they arrive through the webhook like any other.

Will old WooCommerce orders show up after I install the plugin?

The webhook delivers orders as they change from then on, so older orders do not arrive on their own. You can import past orders from a CSV; they show with an "Imported" tag. See importing past orders from CSV.

Does the plugin slow down my store?

It prints one or two script tags that load asynchronously, and the widget renders in a Shadow DOM so it does not touch your theme's styles. Order sync happens in WooCommerce's own webhook system, not on your shoppers' page loads.

Show only real, paid WooCommerce orders on Provedly's free plan, with 2,000 impressions a month, by creating an account.

woocommercewordpresssales notificationsverified purchases

Get new articles by email

Honest social proof, verified purchases and what actually moves conversion. A few emails a month at most; leave with one click.

We email you once to confirm. Your address is used only for this newsletter; see the privacy policy.

Show proof you can stand behind.

Free plan, one site, 2,000 impressions a month, verified purchases included. The badge on the free plan links to your verification page, which is the point.