Overview
wpezo Smart Upsell helps WooCommerce stores increase average order value through multiple offer surfaces that run inside WordPress and WooCommerce. The plugin combines Frequently Bought Together bundles, checkout bumps, product add-ons, post-purchase offers, next-order coupons, campaign targeting, margin-aware discounts and local analytics.
Requirements
| Requirement | Version / note |
|---|---|
| WordPress | 6.9 or later, as declared by the plugin header. |
| WooCommerce | 10.8 or later, as declared by the plugin header. |
| PHP | 8.2 or later. |
| Database | MySQL/MariaDB supported by WordPress and WooCommerce. |
| WooCommerce features | HPOS compatible. Classic cart/checkout and Cart/Checkout Blocks are supported. |
For best results, test the plugin on a staging copy of the store before installing it on a production site.
Installation
From the installable ZIP
- Download or extract the installable plugin ZIP named
wpezo-smart-upsell.zip. - Go to WordPress admin > Plugins > Add New Plugin > Upload Plugin.
- Choose the ZIP and click Install Now.
- Click Activate Plugin.
- Open Smart Upsell from the WordPress admin menu.
Updating
When an update package is available, the WordPress updater can show it after a valid purchase code has been activated. You can also update manually by uploading the new ZIP and choosing to replace the existing plugin.
Quick start
- Open Smart Upsell > Frequently Bought Together and enable the widget.
- Choose the recommendation source: automatic, manual or hybrid.
- Set a bundle discount if you want to reward shoppers for buying the complete set.
- Open Recommendation Engine and click Recompute recommendations.
- Enable Order Bumps or create a targeted campaign for a specific product or category.
- Visit a product page, cart and checkout as a shopper to confirm the surfaces are visible.
- Open Analytics after traffic starts to review impressions, clicks, add-to-cart events and attributed conversions.
Dashboard map
| Tab | Purpose |
|---|---|
| Overview | Revenue summary, quick actions, status and resource links. |
| Frequently Bought Together | Product-page and cart bundle settings. |
| Order Bumps | Checkout bump and Double the Order settings. |
| Upsells | Recommended products and exit-intent popup behavior. |
| Smart Bundles | Autopilot bundle generation from recommendation data. |
| Next Coupon | Post-order coupon generation and email output. |
| Campaigns | Targeted offers with conditions, schedule and priority. |
| Analytics | Attribution, funnel, holdout and product performance reports. |
| Design | Widget copy, CTA labels, colors and A/B copy. |
| Recommendation Engine | Market-basket thresholds and recompute schedule. |
| Settings | Privacy, cleanup, margin protection and advanced behavior. |
| License | Optional purchase-code activation for updates and support entitlement. |
Frequently Bought Together
The FBT widget shows a set of related products and lets shoppers add selected items to the cart together. The bundle discount is applied server-side in the WooCommerce cart.
Sources
- Automatic: uses market-basket recommendations generated from completed orders.
- Manual: uses products selected by the merchant.
- Hybrid: starts with manual selections and fills missing slots with automatic recommendations.
Product-level manual bundles
Edit a WooCommerce product and use the wpezo FBT metabox to choose manual related products for that product. This is useful for curated kits, accessories and bundles that must stay stable regardless of order history.
Smart Bundle Autopilot
Smart Bundle Autopilot can turn strong recommendation pairs into active FBT campaigns. It is designed for merchants who want the store to keep surfacing strong bundles without hand-curating every offer.
- Uses recommendation metrics such as support, confidence and lift.
- Can create bundle campaigns from the admin interface.
- Can refresh top bundles after recommendation recomputes when enabled.
Campaigns
Campaigns let you run targeted offers with their own type, products, audience rules, schedule and priority. When more than one campaign matches a shopper, the highest-priority campaign wins.
| Campaign type | Where it appears | Typical use |
|---|---|---|
| FBT | Product page or cart surfaces | Curated bundles for a product or category. |
| Upsell | Recommended-products surfaces | Show premium alternatives or complementary products. |
| Order bump | Checkout | Offer one low-friction add-on before payment. |
| Post-purchase | Thank-you page | Offer a related product immediately after checkout. |
| Add-on | Product/cart add-on surfaces | Gift wrap, warranty, insurance, setup services or accessories. |
Order bumps and Double the Order
Order bump
The checkout order bump displays a highlighted add-this offer in classic checkout and block checkout. The selected product is added to the cart and the discount is applied server-side.
Double the Order
Double the Order shows a checkout offer that adds a discounted second copy of each current cart item. It is useful for consumables, repeat purchases and low-complexity products.
Upsells and exit intent
Upsell surfaces can recommend additional or alternative products on product, cart and checkout-related contexts. The exit-intent popup can show a last-chance offer when a desktop shopper appears to be leaving.
- Use upsells for premium alternatives, add-on accessories or product discovery.
- Use exit intent carefully; keep the message short and the offer relevant.
- Disable exit intent for stores where popups conflict with theme or compliance requirements.
Post-purchase offers
Post-purchase offers appear on the WooCommerce thank-you page after an order is placed. For pay-later/offline gateways, accepted offers can be added to the existing order. For prepaid gateways, the default behavior adds the product to cart and sends the shopper through checkout unless a supported off-session charge integration is added with filters.
Product add-ons
Add-ons appear as opt-in selections on product and/or cart surfaces. Each selected add-on is added to the cart as a normal WooCommerce product.
- Recommended for gift wrap, warranty, protection, installation or accessory products.
- Use clear product names and prices because the add-ons become cart line items.
- Campaigns can target add-ons by product, category or broader cart conditions.
Next-order coupons
Next-order coupons encourage repeat purchases by generating a WooCommerce coupon after an order. Coupons can be locked to the buyer email, single-use and set to expire automatically.
- Enable Next Coupon.
- Set the coupon amount and expiry window.
- Optionally set a minimum order amount.
- Place a test order and check the thank-you page and customer email.
Analytics
The analytics tab reports impressions, clicks, add-to-cart events, attributed conversions and revenue. A small holdout group can be used to compare exposed shoppers with shoppers who did not see offers, giving a conservative estimate of lift.
- Use attribution data to identify surfaces that produce add-to-cart and revenue.
- Use holdout data as directional, not as a full experimentation platform.
- For low-traffic stores, allow enough time before reading conversion-rate changes.
Recommendation engine
The recommendation engine analyzes completed WooCommerce orders and scores product pairs using market-basket metrics.
| Metric | Meaning |
|---|---|
| Support | How often a pair appears across analyzed orders. |
| Confidence | How often product B is bought when product A is bought. |
| Lift | How much stronger the pair is than random co-occurrence. |
If recommendations are empty, use manual or hybrid bundles until the store has enough completed order data.
Design and A/B copy
The Design tab controls storefront wording, button labels and visual accents. Variant B copy can be used to compare add-rate against the default copy.
- Keep headings short and specific to the offer.
- Use CTA text that describes the shopper action, such as "Add all" or "Add selected".
- Test copy changes over enough traffic before selecting a winner.
Shortcode and block
The plugin includes a shortcode and a Gutenberg block for rendering the FBT widget where supported.
[wpezo_su_fbt]
Use the shortcode in product-aware contexts. If used outside a product context, the plugin may not have enough information to resolve recommendations.
The Gutenberg block is dynamic; storefront output is rendered server-side and hydrated by the frontend script.
Privacy and licensing
Local store features
Recommendations, campaign matching, storefront rendering and analytics storage run inside WordPress/WooCommerce. Analytics session identifiers are hashed and should not be treated as customer profiles.
Optional license/update service
License activation is optional for store functionality. When a merchant activates a purchase code, the plugin sends the purchase code, site URL and plugin version to the wpezo license/update service. Active licenses may then check for update metadata.
Compatibility
- WooCommerce HPOS: supported through WooCommerce CRUD APIs.
- Cart/Checkout Blocks: supported through frontend integration and REST hydration.
- Classic checkout: supported through WooCommerce hooks.
- Cache plugins: storefront placeholders hydrate through REST, which helps with page caching. Always test the final cache setup.
- Themes: the frontend CSS is scoped, but theme CSS can still affect spacing and typography. Test product, cart, checkout and thank-you templates.
Uninstall and data cleanup
Deactivation is a soft stop: scheduled tasks are cleared, but plugin settings and custom tables are preserved. Full cleanup happens only when uninstalling and when the merchant has enabled the plugin's data removal setting.
Developer hooks
Product cost for margin protection
add_filter( 'wpezo_su_product_cost', function ( $cost, $product_id ) {
if ( $cost > 0 ) {
return $cost;
}
return (float) get_post_meta( $product_id, '_my_cost_field', true );
}, 10, 2 );
Post-purchase offline gateways
add_filter( 'wpezo_su_post_purchase_offline_gateways', function ( $gateways ) {
$gateways[] = 'cod';
$gateways[] = 'bacs';
return $gateways;
} );
Custom post-purchase charge integration
add_filter( 'wpezo_su_post_purchase_charge', function ( $charged, $order, $product, $amount ) {
// Return true only after your gateway has successfully charged the customer.
return $charged;
}, 10, 4 );
License/update configuration
add_filter( 'wpezo_su_envato_item_id', function () {
return 'YOUR_ENVATO_ITEM_ID';
} );
add_filter( 'wpezo_su_license_server', function ( $endpoint ) {
return $endpoint;
} );
add_filter( 'wpezo_su_license_signature_key', function ( $key ) {
return $key;
} );
Lifecycle actions
wpezo_su_activatedfires after plugin activation tasks.wpezo_su_deactivatedfires after plugin deactivation tasks.wpezo_su_bootedfires after the plugin container has booted.wpezo_su_logfires when the internal logger records an event.
Troubleshooting
Recommendations are empty
- Confirm there are enough completed WooCommerce orders.
- Lower support/confidence/lift thresholds temporarily.
- Run Recompute recommendations.
- Use manual or hybrid bundles for important products.
Widgets do not appear
- Check that the relevant surface is enabled.
- Confirm the product or campaign targeting rules match the current cart/product.
- Clear object/page cache and click Clear widget cache.
- Check the browser console and WordPress debug log.
Checkout offer discount does not match expectation
- Review coupons, taxes, shipping, custom fees and other discount plugins.
- Check margin protection settings and product cost data.
- Test with only WooCommerce and wpezo Smart Upsell active on staging.
Support checklist
When requesting support, include:
- WordPress, WooCommerce, PHP and plugin versions.
- Theme name and version.
- Whether HPOS is enabled.
- Whether checkout uses Blocks or classic shortcode checkout.
- Exact page URL and steps to reproduce.
- Relevant screenshots, console errors and debug log entries.