Compatibility

Requirements

RequirementMinimumTested up to
WordPress5.37.1
WooCommerce7.011.0.1
PHP7.2—
WooCommerce SubscriptionsRequired — see below—
WooCommerce AnalyticsEnabled (included with WooCommerce)—

Without WooCommerce or WooCommerce Subscriptions the plugin does nothing and shows an admin notice until both are active.

Which subscriptions plugin is supported

Only the official WooCommerce Subscriptions extension is supported. The plugin checks for that specific extension by its exact plugin file, so alternative subscription plugins — including subscriptions provided by WooPayments / WooCommerce Payments, and any fork or renamed copy of WooCommerce Subscriptions — will not satisfy the dependency, and the reports will not run. All reporting is built on WooCommerce Subscriptions’ own data structures.

Add-ons that extend WooCommerce Subscriptions rather than replace it — such as gifting, or all-products extensions — do not affect the dependency check. Their subscriptions are ordinary WooCommerce Subscriptions records and are reported like any other.

Order storage — HPOS and legacy

The plugin supports both High-Performance Order Storage (wc_orders) and legacy post-based order storage (wp_posts), and works whichever mode your store is running. Every query has a variant for each. Switching between them does not require a re-import, though running one afterwards is harmless.

Multi-currency stores

Amounts are not currency-converted. If your store accepts more than one currency, figures in different currencies are added together as plain numbers and shown with your store’s base currency symbol — so 100 USD plus 100 EUR appears as 200. Order counts, subscriber counts and churn are unaffected; only the money columns are. On a single-currency store the reports are exact. On a multi-currency store, use the per-order export, where each row carries its own currency code, for anything that has to be right.

Caching and the storefront

The reports are admin-only and are fetched through the WordPress REST API, so page-caching plugins and CDNs do not cache them. Object caching does not affect them either — the figures come from the plugin’s own aggregation table.

The only thing this plugin adds to your storefront is the small first-touch attribution script described in Acquisition Sources, plus the optional cancellation-feedback prompt on the My Account page. Nothing else runs for your customers.

Background jobs matter more than caching here. The historical import runs on Action Scheduler, and churn scores and the nightly rollup run on WP-Cron. On a host where cron is disabled without a replacement, imports stall and scores go stale. See Importing Historical Data.

Known conflicts

PluginIssueStatus
Sales Report By Country (zorem)This plugin’s scripts and styles loaded on other analytics screens, affecting the filter dropdowns in the Sales by Country report.Fixed in 1.1.5. Assets now load only on subscription analytics pages. Update both plugins if you see it.

No other conflicts are currently known. If a report behaves oddly, a quick way to check is to deactivate other analytics-related plugins temporarily — anything that filters the WooCommerce Analytics screens is the most likely cause.

Developer filters

Data and behaviour

FilterWhat it controlsDefault
zorem_subs_report_order_statusesWhich subscription statuses the reports include.wc-active, wc-on-hold, wc-pending, wc-pending-cancel
zorem_subs_churn_signal_weightsThe point weight of each churn-risk signal. Full key list on Churn Risk.See Churn Risk
zorem_subscription_daily_snapshot_window_daysHow many recent days the nightly job recomputes.30
zorem_subscription_repair_window_daysHow many days Repair Last 30 Days covers. Capped at 90.30
aws_report_order_statusesDeprecated earlier name for zorem_subs_report_order_statuses, still applied first for backwards compatibility.—
There is no filter for the revenue-recognition paid statuses. Recognition counts orders in completed and processing only, and that list is fixed in this version. Earlier documentation referred to a zorem_subscription_recognition_paid_statuses filter — it does not exist, and code written against it will have no effect. There is also no filter for the forecast horizon or its 6-month lookback.

AI prompts and payloads

FilterWhat it controls
zorem_subs_ai_digestThe metrics payload sent for the Overview summary.
zorem_subs_ai_system_promptThe system prompt framing the Overview summary.
zorem_subs_ai_forecast_digestThe payload sent for the forecast summary.
zorem_subs_ai_forecast_system_promptThe system prompt for the forecast summary.
zorem_subs_ai_cancellation_digestThe answers payload sent for cancellation grouping.
zorem_subs_ai_cancellation_system_promptThe system prompt for cancellation grouping.

Summary cards (JavaScript)

FilterTab
woocommerce_admin_subscription_overview_chartsOverview
woocommerce_admin_upcoming_revenue_report_chartsUpcoming Revenue
woocommerce_admin_customer_subscription_report_chartsCustomers
woocommerce_admin_coupons_report_chartsOver Time, Products and Variations
The last one is a legacy name. The Over Time, Products and Variations charts are filtered through woocommerce_admin_coupons_report_charts — a name carried over from the report this feature was originally built from. It is not related to coupons. If you already filter WooCommerce’s own coupons report by that name, your callback will also receive these subscription charts, so check the data you are given before modifying it.

The plugin also honours the WooCommerce and WooCommerce Subscriptions filters wcs_reports_active_statuses, woocommerce_reports_paid_order_statuses and wcs_reports_customer_total_args, deliberately re-applying them so existing customizations carry through into these reports.

Frequently asked questions

Why do my reports show no data after activation?

Historical data needs to be imported once. Run the importer from WooCommerce → Settings → Subscription Analytics to backfill your existing subscriptions. New activity is tracked automatically after that.

Does the plugin slow my store down?

Reports read from a precomputed daily rollup table rather than querying orders live, which is why they stay fast on stores with large subscription histories. Nothing runs on the storefront except the small acquisition-attribution script and, if enabled, the cancellation prompt on My Account.

Does anything change for my customers?

Only if you enable cancellation feedback, which shows an optional question on the account page after a customer has cancelled. It is off by default and can never delay or block cancelling.

Is my data sent anywhere?

Not unless you enable AI Insights and supply your own API key, in which case aggregate totals go directly to the provider you chose. See AI Data and Privacy for the complete list.

What happens if I deactivate the plugin?

The reports and the scheduled jobs stop. Your subscriptions and orders are untouched — the plugin only ever reads them. Reactivating restores the reports from the aggregation table without a re-import.

Who can see the reports?

Anyone with the manage_woocommerce capability — normally Administrators and Shop managers. There is no separate read-only role, and the same capability governs the AI features, so anyone who can view the reports can also spend against your API key.