Plugin slug: goup-conditional-email-cc-bcc · Version: 1.0.5 · Author: GoUpWP · https://goupwp.com/plugins/conditional-email-cc-bcc
What it does
Adds CC and/or BCC recipients to WooCommerce transactional emails when an order matches your conditions: specific products (including variations), product categories (optionally with child categories), the email type, and optionally the order status. It never replaces the primary recipient — it only adds headers, with duplicate and header-injection protection.
Typical uses: BCC accounting on every completed-order email, CC a supplier when their products are ordered, CC the wholesale manager when a wholesale category ships.
Installation
- Download the plugin ZIP from your GoUpWP account (Account → Licenses → Download).
- In WordPress go to Plugins → Add New → Upload Plugin, choose the ZIP and click Install Now, then Activate.
- WooCommerce must be installed and active; the plugin shows a notice and stays idle until it is.
- Open WooCommerce → License: Conditional Email CC/BCC and paste the license key from your account. Activation unlocks
one-click updates and support for this site. A
localhost,*.test,*.localorstaging.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 → Conditional Email CC/BCC → Rules → Add rule.
- Name and Enabled switch.
- Conditions: pick products and/or categories. Include child categories matches sub-categories.
- Match logic: ANY (one selected product/category in the order is enough), ALL (every selected condition must be represented) or ALL ORDERS (ignore products and categories and apply to every order for the selected email types — use this for "BCC accounting on every order").
- Email types: any WooCommerce email, including those added by other plugins (customer account emails are excluded).
- Order status (optional): only apply when the order is in this status when the email is generated.
- CC and BCC address lists (comma or line separated). Addresses that already appear as the primary recipient or in an existing header are skipped; an address listed in both CC and BCC is sent as BCC. A rule supports up to 100 unique recipients, and one email adds at most 200 recipients as an amplification safeguard.
- Priority orders rule evaluation; all matching rules contribute recipients.
Rules can be duplicated, bulk enabled/disabled and exported or imported as JSON (Import / Export tab) to copy a configuration between staging and production. Imports validate the actual uploaded file, schema and all rows, accept no more than 500 rules, and never silently truncate an oversized rule set.
Testing
The Tester tab evaluates a rule set against chosen products, a category and an email type without sending anything, and lists the CC/BCC headers that would be added. The Diagnostics tab shows the discovered email types and statuses.
Developer hooks
goup_cecc_rules( array $rules )— alter the stored rules at runtime.goup_cecc_rule_matches( bool, Rule $rule, OrderContext $context, string $email_id )goup_cecc_matching_rules( array $rules, WC_Order $order, string $email_id )goup_cecc_cc_recipients( array, WC_Order, string $email_id, array $rules )/goup_cecc_bcc_recipients( … )goup_cecc_headers( string|array $headers, $original, WC_Order, string $email_id, array $rules )goup_cecc_include_child_categories( bool, Rule ),goup_cecc_order_context( OrderContext, WC_Order, string, WC_Email )goup_cecc_cc_bcc_duplicate_strategy( 'bcc_wins' )goup_cecc_max_recipients_per_rule( int $limit )— defaults to 100 and is clamped to 1–200.goup_cecc_max_added_recipients_per_email( int $limit )— defaults to 200 and is clamped to 1–500.
Troubleshooting
- Recipients not added — check the email type is ticked, the rule is enabled, and (for condition-based rules) that the ordered product or category is selected. Enable Debug logging in Settings and read WooCommerce → Status → Logs → goup-conditional-email-cc-bcc; every evaluation logs the matched rule IDs.
- Refund emails are matched against the parent order.
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
- Reliability: transactional emails now keep their original headers if rule evaluation or a third-party extension fails, with a sanitized diagnostic warning instead of a broken send.
- Performance: skip order-item and category analysis when no active rule targets the current email type, and cache discovered email types/statuses during the request.
- Rule integrity: enabled rules can no longer be saved with missing products, categories, email types or order statuses; disabled rules preserve unavailable references for repair.
- Import safety: verify actual upload size and upload status, reject malformed JSON, unsupported schemas and files over 500 rules instead of silently truncating them, while supporting valid empty exports.
- Delivery safety: normalize CC/BCC overlap, limit each rule to 100 unique recipients and cap one email at 200 added recipients to prevent accidental mail amplification.
- Administration: order diagnostics require permission for the selected order, unknown actions fail honestly, duplicate import IDs are preserved with new IDs, and logging uses an explicit safe context allowlist.
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.
- New "ALL ORDERS" match mode: apply CC/BCC recipients to every order for the selected email types (and status) without product or category conditions.
- Unit tests for the rule matcher, validator and header builder.
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
- Added the GoUpWP licensing and update client.
- Normalized plugin headers and code style.