The problem
If you sell subscriptions with WooCommerce Subscriptions, your analytics has a blind spot with a precise shape: the first order shows up, and every renewal after it does not.
The reason is mechanical, not a configuration mistake. A renewal payment is charged off-session: on the renewal date, WooCommerce and the payment gateway charge the saved payment method on your server. No customer visits the site. No page loads. No browser exists to fire a purchase event. Tag Manager, gtag.js and every other client-side tracking method are simply not present when the transaction happens.
The consequences compound over time:
- GA4 revenue shows first orders only. For a subscription business, that can be a small fraction of actual revenue.
- Lifetime value per customer and per acquisition channel is undercounted, so smart bidding optimises toward cheap one-off buyers instead of durable subscribers.
- Cancellations and expirations are invisible too, so nothing in your analytics distinguishes a subscriber who renewed for two years from one who churned after a month.
How to check whether this affects you
Compare two numbers for last month: renewal orders in WooCommerce (WooCommerce → Subscriptions → related orders, or the renewal orders report) and purchase events in GA4 for the same period. If you track purchases in the browser only, the GA4 number will be close to first orders alone, and the gap is your renewal volume.
The fix: track the subscription lifecycle server-side
Events that happen without a browser have to be sent without a browser. GTM Kit Premium tracks the full subscription lifecycle:
subscription_startedfires in the browser on the order-received page, like a normal conversion, and can also be dispatched server-side.subscription_renewed,subscription_cancelled,subscription_expiredandsubscription_reactivatedare dispatched server-side as webhook events to your server-side GTM container the moment they happen in WooCommerce. Each event type is individually switchable.
Attribution is snapshotted when the subscription is created, so renewal events carry the acquisition context of the original signup. The channel that acquired a subscriber keeps getting credit for the revenue it actually produced.
The webhook events arrive in your sGTM container like any other server event, so you can route them to GA4, or to any ad platform tag your container runs.
Related
- WooCommerce Google Tag Manager integration
- Server-side tracking with sGTM
- GTM Kit Premium — server-side webhooks for purchases and the full subscription lifecycle
Run a Tracking Health Check to see what your current setup captures, and what it does not.