Full Answer
The GA4 BigQuery Export is the most common starting point. Once linked in GA4's admin panel, it streams every event — including purchase, begin_checkout, and add_to_cart — into a BigQuery dataset as raw event rows. Each row carries the event name, parameters (transaction_id, value, currency, items array), user pseudo-ID, and timestamp. That gives you query-level access to data GA4's interface aggregates away.
The limitation is that GA4 can only export what it collected in the first place. If a visitor's browser blocks the GA4 tag — which ad blockers, Safari ITP, and consent rejection all cause — the purchase event never fires, and the BigQuery export has the same blind spot. A SignalBridge benchmark found server-side tracking captures 20–40% more events than client-side alone, precisely because the collection happens on your server, outside the browser.
Direct server-side integration skips the browser entirely. Purchase events are captured at the WooCommerce woocommerce_thankyou or woocommerce_payment_complete hook, structured as BigQuery-compatible rows, and written via the Storage Write API. Tools like Transmute Engine handle this as one of several destinations alongside GA4 and Meta CAPI, routing the same event to multiple endpoints from a single server-side capture point.
For most WooCommerce stores, the practical path is both: GA4 export for historical continuity and direct server-side for completeness. Related: How to connect WooCommerce to BigQuery.