Description
Your store’s email only makes money if it reaches the inbox. PostBeagle is email marketing built for WooCommerce, from the checkout opt-in through to abandoned cart recovery and revenue attribution – and it shows you whether your mail is actually landing, instead of leaving you to guess.
Turn on the checkout opt-in and customers join your list as they buy, tagged first-time or repeat, with their lifetime value and order count synced across. From there you can send newsletters, run welcome and win-back flows, recover abandoned carts, and see which campaigns produced which orders.
Why store owners switch
- Deliverability you can see. Most email tools hand you an open rate and nothing else. PostBeagle shows your sending reputation and explains what moved it, so a drop is something you can act on rather than something you notice three campaigns later. You can check any domain free, no account needed, with our deliverability checker.
- Built for WooCommerce, not ported to it. Order data, product blocks, lifetime value and revenue attribution are native, not a bolt-on integration.
- No surprise contact penalties. Unsubscribed, bounced and suppressed contacts are free. You never pay for a contact you cannot email.
- Start free. 2,500 subscribers and 5,000 emails a month, no card required.
Features
- Add opt-in checkbox to WooCommerce checkout
- Customize opt-in checkbox text
- Automatically sync opted-in customers to PostBeagle, tagged first-time vs. repeat
- Map WooCommerce order data to PostBeagle custom fields (incl. customer lifetime value and order count)
- One-time bulk import of existing customers with lifetime value
- WooCommerce automations: welcome, first purchase, repeat purchase, product purchased, abandoned cart, and win-back — each can tag the customer and trigger a PostBeagle automation
- Email capture anywhere: [postbeagle_signup] shortcode, Gutenberg block, and Elementor widget
- Form integrations: Contact Form 7, WPForms, Fluent Forms, and Gravity Forms (add contact, apply tags, trigger automations)
- Support for double opt-in workflows
- Abandoned cart recovery, revenue attribution and browsing-behaviour tracking are all off by default — you choose what data leaves your store (see External Services below)
- Comprehensive error logging and debugging
- Secure API key storage
- Never disrupts the checkout process
Requirements
- WordPress 5.8 or higher
- WooCommerce 8.9 or higher
- PHP 7.4 or higher (PHP 7.2+ with the sodium PECL extension, or PHP 7.2+ compiled with –with-sodium)
- PHP sodium extension (libsodium) — included by default in PHP 7.2+; required for secure API key encryption. The plugin will fall back to a weaker encoding method if sodium is unavailable, but this is not recommended.
- A PostBeagle account. The free plan covers 2,500 subscribers and 5,000 emails a month with no card – create one.
External Services
This plugin is a client for PostBeagle, a third-party email marketing service. It sends data to https://api.postbeagle.com and does not function without a PostBeagle account.
Nothing is transmitted until you enter an API key and enable the plugin.
Always active once configured
POST /api/contacts— when a customer ticks the newsletter opt-in checkbox at checkout (unchecked by default). Sends: email, first name, last name, tags, and any custom fields you have mapped (which may include order total, products, categories, lifetime value and order count).POST /api/events— automation events you have explicitly enabled (welcome, first purchase, repeat purchase, product purchased, win-back). Sends: email plus the relevant order or product data.GET /api/email-lists— retrieves your lists for the settings screen. Sends: no customer data.GET /api/suppressions/changes— retrieves unsubscribes so they can be honoured locally. Sends: no customer data.POST /api/webhooks/automation/{id}andPOST /api/automation-recipes/install— used by the form integrations and the one-click automation setup button. Sends: email and tags.
Failed requests are retried from a local outbox table.
Off by default — you must enable these
- Abandoned cart recovery (Settings Data Collection). In the recommended “capture during checkout” mode, the shopper’s email address is sent as they type it at checkout, together with their cart contents, before the order is placed. This is how abandoned cart recovery works, and it means personal data is processed before purchase — review your local privacy obligations before enabling. Switch to “only after a completed order” to avoid pre-purchase capture entirely, or turn on Privacy mode to capture only shoppers who ticked the opt-in checkbox. Endpoints:
POST /api/events,GET /api/carts/{token}/snapshot. - Revenue attribution (Settings Data Collection). Reports every paid order — including orders from customers who did not opt in — so campaigns can be credited with the sales they drove. Sends: billing email, order id and number, total, currency, status, timestamp, coupon codes, and line items (product id, SKU, name, categories, quantity, price).
- Browsing behaviour (Settings Data Collection). Sets a first-party
pb_cidcookie (90 days, HttpOnly) when a subscriber clicks through from a PostBeagle email, so the visit can be credited to the campaign that sent it, and reports the products that visitor views toPOST /api/events. Only visitors already identified by that cookie or by being logged in are tracked; anonymous visitors are never tracked. When this setting is off no cookie is written and no product views are sent — this is the plugin’s only use of cookies.
Terms and privacy
Screenshots





Blocks
This plugin provides 1 block.
- PostBeagle Signup
Installation
- Install and activate the plugin (search for it under Plugins > Add New, or upload it to
/wp-content/plugins/postbeagle-for-woocommerce/) - Create a free PostBeagle account if you do not have one – it takes a minute and needs no card
- In PostBeagle, go to Settings > API, click Generate API Key, and copy it
- Back in WordPress, open the PostBeagle menu in the admin sidebar and paste the key
- Select the email list new customers should join
- Customize the opt-in checkbox text (optional)
- Configure field mappings (optional)
FAQ
-
Do I need a PostBeagle account?
-
Yes – the plugin is a client for the PostBeagle service, so it needs an account to send to. The free plan covers 2,500 subscribers and 5,000 emails a month and does not ask for a card, so you can connect the plugin and send a real campaign before deciding anything. Create an account.
-
How do I know my emails are actually being delivered?
-
This is the part most email plugins leave you guessing about. PostBeagle tracks your sending reputation and tells you what changed it and why, rather than showing you a number with no explanation.
You can see the same idea before signing up for anything: our free deliverability checker reads your domain’s public DNS and tells you whether your SPF, DKIM and DMARC records are set up to reach the inbox. No account, no email address required. A surprising number of stores fail it without knowing – a broken SPF record produces no error, no bounce and no warning, it just quietly costs you delivery.
-
Will this slow down my checkout?
-
No. Requests to PostBeagle use a short timeout and are retried in the background from a local queue, so the checkout never waits on them and never fails because of them.
-
When exactly is data sent?
-
Out of the box, only when a customer ticks the newsletter opt-in checkbox at checkout, and only after the order is placed.
Three optional features send more than that, and each is off until you switch it on under PostBeagle Data Collection:
- Abandoned cart recovery in “capture during checkout” mode sends the shopper’s email and cart contents before the order is placed. Choose “only after a completed order” to avoid that entirely.
- Revenue attribution sends every paid order, including from customers who did not opt in.
- Browsing behaviour sets a cookie when a subscriber clicks through from a PostBeagle email, and reports the products they view.
See the External Services section below for the full detail.
-
What happens if the API call fails?
-
The checkout process continues normally. Failed syncs are logged for review in the WordPress debug log.
-
Does this support double opt-in?
-
Yes, the plugin respects double opt-in settings configured in your PostBeagle account.
-
Can I map custom fields?
-
Yes, you can map WooCommerce order data (order total, products, categories, etc.) to PostBeagle custom fields.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Email Marketing & Abandoned Cart for WooCommerce – PostBeagle” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Email Marketing & Abandoned Cart for WooCommerce – PostBeagle” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.6.0
Security and privacy
* Hardened how plugin log files are stored, and old log files are removed automatically on upgrade
* Hardened the signup form against tampering with the values it submits
* The saved API URL is now held to the same https requirement as the Test Connection button
* Tightened validation of the pb_cid click-through cookie
* “Require explicit consent” now applies to every capture path
Abandoned cart recovery
* Completing a purchase now ends the recovery series in all configurations. Previously a customer who checked out could still receive the remaining reminder emails
* Recovery links now rebuild the cart reliably, and clicking one is reported back to PostBeagle so recovered carts are recorded
* Recovery emails now always carry the cart contents and a working button link
* Emptying a cart no longer triggers a reminder, reopens tracking after checkout, or produces an empty reminder
* Shoppers are no longer enrolled twice when both cart-tracking methods are switched on
Reliability
* Suppression sync can no longer get stuck repeating the same request
* Queued events are no longer delivered twice when two retry runs overlap, and are no longer discarded when the API key is temporarily unavailable
* Customer import now reads orders in pages, which keeps memory use flat on large stores
* Uninstall now also removes the cart recovery signing key, saved cart contents and log files
* The settings page is now listed only for administrators — the only role that could save it
1.5.1
- Product view tracking and the
pb_cidclick-through cookie are now off by default behind their own Browsing behaviour setting — no cookie is written and no browsing data is sent unless the store owner turns it on - Clarified in the readme exactly when data is sent, and corrected an FAQ answer that contradicted the External Services section
- Hardened settings validation
1.5.0
- Security: the account API key is no longer available to the browser. Product view events now go through an authenticated admin-ajax endpoint, and the key stays on the server
- Abandoned cart recovery is now off by default, with a capture mode choice (“during checkout” or “only after a completed order”) and an optional Privacy mode that captures only shoppers who ticked the opt-in checkbox
- Revenue attribution (sending every paid order, including from customers who did not opt in) is now off by default and controlled by its own setting
- The
pb_cidcookie is no longer set on a site that has not been enabled and connected to an account - Rewrote the External Services disclosure to list every endpoint, every data category, and the exact consent model
- Fixed a fatal error on sites running Elementor, caused by a stale file path left over from the 1.4.0 rename
- Fixed a translation call that ran before the text domain was ready, which triggered a notice on WordPress 6.7+
- Fixed abandoned cart recovery links, which could not be redeemed. Links already in circulation are still accepted
- Fixed abandoned cart and win-back timing on sites not set to UTC, which skewed schedules and inactivity comparisons by the site’s UTC offset
- Custom table schema changes now apply on plugin update, not only on activation
- Log directory is now protected on nginx as well as Apache
- Suppression sync now writes to the plugin log instead of the PHP error log
1.4.0
- Renamed all plugin identifiers from the
pb_prefix topostbeagle_for WordPress.org coding-standards compliance — classes, constants, options, transients, AJAX actions, cron hooks, script handles, and the three custom tables - Added a one-time upgrade migration that moves existing settings, pending abandoned-cart timers, and custom table data to the new names — no reconfiguration required
- Order meta keys (
_pb_*) and thepb_cididentity cookie are intentionally unchanged, so historical order data and links in already-delivered emails keep working PB_ENCRYPTION_KEYin wp-config.php is still honoured alongside the newPOSTBEAGLE_ENCRYPTION_KEYname
1.3.0
- Added HPOS (High-Performance Order Storage) compatibility — plugin now works correctly with WooCommerce custom order tables
- Added block checkout support via the WooCommerce Additional Checkout Field API (WC 8.9+)
- Added consent record storage for GDPR compliance (records label, timestamp, checkout type, plugin version)
- Upgraded API key storage to sodium encryption (auto-migrates from legacy format)
- Masked API key display in settings — key never appears in page source
- Implemented automation tag steps (add_tag, remove_tag) in the worker
- Added External Services disclosure for WP.org compliance
- Fixed uninstall to use batched HPOS-safe cleanup
- Updated minimum WooCommerce requirement to 8.9
- Various security and coding standards improvements for WP.org Plugin Check compliance
1.1.0
- WooCommerce sync: products, categories, SKUs, order value, customer lifetime value and order count as custom fields
- First-time vs. repeat customer tagging at checkout
- One-time bulk import of existing customers (batched) with lifetime value
- WooCommerce automations: welcome, first purchase, repeat purchase, product purchased, abandoned cart, win-back
- Email capture: [postbeagle_signup] shortcode, Gutenberg block, and Elementor widget
- Form integrations: Contact Form 7, WPForms, Fluent Forms, Gravity Forms (contact + tags + automation trigger)
- Implemented the previously-missing PB_Field_Mapper and a shared contact-sync service
- Added a self-contained unit test suite (tests/run.php)
1.0.0
- Initial release
- API credential configuration
- List selection
- Checkout opt-in checkbox
- Custom field mapping
- Error logging and debugging
- Double opt-in support
