Documentation

GoUp Conditional Order Email Recipients

Route WooCommerce order emails by purchased product or category, with precise control over recipients and email events.

Plugin slug: goup-conditional-order-email-recipients · Version: 1.0.5 · Author: GoUpWP · https://goupwp.com/plugins/conditional-order-email-recipients

What it does

Routes WooCommerce order emails to different people depending on what was purchased. Each rule targets one email type (for example New order or Processing order) and matches products (parent products can match their variations) or categories (optionally with children). A matching rule can add recipients or replace the default ones, add CC/BCC, and can send a matched-items-only version of the email so a warehouse, dropshipper or department only sees the lines that concern them.

Requires PHP 8.1.

Installation

  1. Download the plugin ZIP from your GoUpWP account (Account → Licenses → Download).
  2. In WordPress go to Plugins → Add New → Upload Plugin, choose the ZIP and click Install Now, then Activate.
  3. WooCommerce must be installed and active; the plugin shows a notice and stays idle until it is.
  4. Open WooCommerce → License: Conditional Order Email Recipients and paste the license key from your account. Activation unlocks one-click updates and support for this site. A localhost, *.test, *.local or staging. site counts as a staging activation and does not use your production seat.

The plugin keeps working if the license expires: only updates and support pause until it is renewed.

Setup

Open WooCommerce → GoUp Email Routing → Rules → Add rule.

  • Trigger: Product (choose products or variations; "parent matches variations" is on by default) or Category (choose categories; optionally include children).
  • Match: ANY selected item present, or ALL selected items present.
  • Email: the WooCommerce email this rule applies to.
  • Recipients: Add to the default recipient list or Replace it; plus optional CC and BCC. Full-order add rules may use CC/BCC without changing To. Replace and matched-items-only rules require a To recipient. One rule supports up to 100 recipients and one message routes to at most 200.
  • Content: Full order sends the normal email; Matched items only renders a separate copy containing only the matched line items, with switches for the product subtotal, shipping, tax, order total, payment method, billing/shipping address and customer note. Matched-only recipients are removed from the full-order message so they never receive the unfiltered order. Customer notes, line prices, Reply-To data and attachments are excluded unless explicitly enabled or supplied through the dedicated developer hooks.
  • Priority and Stop processing control how multiple rules combine.

Settings hold the defaults for new rules, the manage capability, debug logging and the uninstall policy. Rules can be exported/imported as JSON. Imports verify the real uploaded size (maximum 1 MB), schema and every rule, reject sets over 500 instead of truncating them, and disable rules whose products or email type are not available on the destination store.

Testing

Test rule in the editor evaluates a rule against an existing order number and shows the recipients that would result. The order screen has a Routing panel listing which rules matched that order.

Developer hooks

  • goup_email_routing_rules( array $rules ), goup_email_routing_rule_matches( bool, Rule, WC_Order, WC_Email, array $item_ids )
  • goup_email_routing_recipients( array $to, WC_Order, WC_Email, array $matches ), goup_email_routing_cc( … ), goup_email_routing_bcc( … )
  • goup_email_routing_matched_items( array $item_ids, WC_Order, WC_Email, Rule )
  • goup_email_routing_matched_headers( string|array $headers, WC_Order, WC_Email, Rule )
  • goup_email_routing_matched_attachments( array $attachments, WC_Order, WC_Email, Rule )
  • goup_email_routing_max_recipients_per_rule( int $limit ) and goup_email_routing_max_recipients_per_email( int $limit )
  • goup_email_routing_manage_capability( 'manage_woocommerce' )
  • Actions: goup_email_routing_before_apply, goup_email_routing_after_apply (WC_Order, WC_Email, Rule, item IDs).

Troubleshooting

  • Nothing changes — the rule's email type must be the one WooCommerce is sending (for example a paid order sends Processing order, not New order, to the customer). Enable Debug logging and read WooCommerce → Status → Logs.
  • CC/BCC missing but To works — fixed in 1.0.3; update the plugin.

Updates and licensing

  • Updates arrive through the normal Dashboard → Updates and Plugins screens. Every package is downloaded over a signed, time-limited link and verified against its SHA-256 checksum before WordPress installs it.
  • View details on the Plugins screen shows the changelog for the new version.
  • If the license is not active you still see that an update exists; the row explains that renewing restores one-click updates.
  • The license page shows the installed version, the environment this site was classified as (production or staging), your activation counts and the renewal date, and has a Check for updates button.
  • Deactivate on this site frees the seat so the key can be used on another site. Deleting the plugin from the Plugins screen also frees the seat automatically.
  • Nothing is sent to goupwp.com except the license key, an installation ID, the site URL and the WordPress, PHP and plugin versions used for compatibility checks.

Support and maintenance

  • Open a ticket from Account → Support on goupwp.com; include the output of the plugin's Diagnostics tab.
  • Keep WordPress, WooCommerce and the plugin updated and test changes on a staging site first.
  • The plugin declares compatibility with WooCommerce High-Performance Order Storage (HPOS) and the Cart and Checkout Blocks, and is translation-ready (languages/).
  • Uninstalling removes the plugin's data only when the Delete data on uninstall option is enabled, so a reinstall keeps your configuration; license data is always removed.

Release history

1.0.5 27 September 2026 · tested with WordPress 7.1

  • Data integrity: new rules always receive unique IDs, while existing empty or duplicate IDs are repaired once without losing rules.
  • Rule quality: enabled rules now validate names, products/categories, WooCommerce email types and recipient requirements; full/add rules may route through CC/BCC without forcing a To override.
  • Matched-only privacy: hide customer notes and line prices unless enabled, omit full-order attachments and Reply-To data by default, and prevent restricted recipients from leaking into the full-order message.
  • Reliability: consume routing header state once, prevent duplicate matched-only sends within a request, support string and array headers, preserve original delivery on routing failures, and reject malformed filter output.
  • Import security: verify PHP upload status and actual size, enforce the schema and a 500-rule ceiling, disable unavailable imported rules, and prevent an all-invalid import from overwriting working rules.
  • Performance: cache normalized rules, order/product/category context and descendant-category sets across rule evaluation in the same request.
  • Delivery safety: deduplicate recipients across To/CC/BCC, cap rules at 100 recipients and each email at 200, tighten target-order permissions, logging context and admin asset loading.

1.0.4 26 September 2026 · tested with WordPress 7.1

  • GoUpWP admin identity: every plugin screen now opens with a GoUpWP header showing the plugin name, version, documentation, support and licence status.
  • GoUpWP styling for settings, rule tables, tabs, cards and buttons, scoped to this plugin's screens so WordPress and other plugins are untouched.
  • GoUpWP mark on the Plugins screen, Documentation and Support links in the plugin row, and GoUpWP icons on the Dashboard → Updates screen.

1.0.3 20 September 2026 · tested with WordPress 7.1

  • Updates: the installer now fetches a freshly signed download link at install time and verifies the SHA-256 checksum, so "Update now" works hours after WordPress last checked for updates.
  • Updates: update checks are cached for six hours and the Plugins screen shows a clear message (with a link to the license page) when an update exists but the license is not active.
  • License screen: named per plugin in the WooCommerce menu, shows the installed version and a "Check for updates" button, and every string is translatable.
  • Plugins screen: Settings and License links on the plugin row.
  • Uninstall: releases the license seat on goupwp.com and removes all license data, regardless of the data-retention setting.
  • Code style: all source files expanded to readable, documented PHP.
  • Fixed CC and BCC recipients never being added: the plugin hooked a WooCommerce filter that does not exist. Recipients configured as CC/BCC now receive the routed emails.
  • Email filters attach when WooCommerce builds its mailer instead of loading every email class on each storefront request.

1.0.2 20 September 2026 · tested with WordPress 7.1

  • License screen now explains activation failures (unrecognised key, wrong plugin, site limit reached, expired) and shows the environment, activation counts and end date.
  • Activate and Deactivate always contact goupwp.com immediately instead of waiting out a network backoff.

1.0.1 20 September 2026 · tested with WordPress 7.1

Release 1.0.1.