orders / sessions. Sessions sourced from analytics sibling if connected; else Jetpack Stats fallback. Below 1.5% on a Woo store usually = checkout / page-speed issue, not traffic.
At a glance
Orders divided by sessions. The funnel-health number for Woo. Below 1.5% on a Woo store usually signals a checkout, page-speed, or trust-friction issue, not a traffic problem.
| What it counts | COUNT(orders WHERE status IN ('completed', 'processing')) / COUNT(sessions) x 100. Sessions are sourced from a connected analytics integration (GA4, Jetpack Stats, or Matomo plugin); orders come from the Woo REST API. |
| REST API endpoint | Orders: GET /wp-json/wc/v3/orders filtered by status and date. Sessions: GA4 sessions metric, or Jetpack Stats views, or Matomo nb_visits. |
| VAT / tax treatment | Not applicable, this is a count ratio. |
| Status filter | Numerator is completed + processing (the realised-revenue orders). Denominator is all sessions in the window. |
| Shipping / discounts | Not applicable. |
| Refunds | Not deducted, refunds happen post-conversion. |
| Cancelled / failed orders | Excluded from the numerator, customers who attempted checkout but failed do not count as “converted”. |
| Currency | Currency-agnostic ratio. |
| Channels / sources | Not filtered. The denominator measures all sessions on the storefront; the numerator counts every payment channel. POS plugin orders are excluded from the numerator (no web session) which means heavy POS stores see this card under-report by 5-10%. |
| Self-hosted vs managed-Woo | Self-hosted on slow shared hosting structurally suppresses conversion (page-speed correlation; every 100ms of TTFB drops conversion ~1%). Managed-Woo on enterprise-grade hosts shows higher baseline. |
| Session source dependency | If GA4 is connected, GA4 sessions are used. If only Jetpack Stats, fallback. If neither, the card cannot compute and shows “no data”. |
| Time window | 30D vsP |
| Alert trigger | <1.5% (Tier-1 Woo baseline) |
| Roles | owner, marketing |
Calculation
Calculated automatically from your WooCommerce data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A UK fashion brand on self-hosted Woo with GA4 connected. The 30-day window covers 14 Mar 26 to 12 Apr 26.| Metric | Value | Source |
|---|---|---|
| Sessions (GA4) | 142,400 | GA4 sessions metric |
Orders (completed + processing) | 2,152 | Woo REST API |
| Conversion Rate | 1.51% | Computed |
- Sessions grew but orders did not. Sessions up 14.7%, orders down 2.6%. The funnel got less efficient. Common cause on Woo: a recent theme or page-builder update added 200ms+ of TTFB (pre-fix the host was at 800ms, now at 1.05s). Pair this card with Pagespeed Cart Loss for the speed-correlation view.
- Self-hosted server slowness is a structural drag. This brand’s Bluehost host averages 1.0s TTFB on the cart page. A 200ms reduction (achievable with a CDN like Cloudflare or a host upgrade to managed-Woo) would lift conversion by approximately 2%. The merchant currently leaves about 4-6 orders / month on the table for every 100ms of avoidable TTFB.
- GA4 is the trustworthy session source on Woo. Jetpack Stats undercounts compared to GA4 because it does not track ad-blocked sessions either, but uses a different sampling model. If you switched the session source mid-period, conversion rates appear to jump artificially.
- POS orders are missing from the numerator. This brand runs occasional pop-up POS events (~30 orders/month). Those orders have no web session, so they do not appear in the numerator. The headline 1.51% is the web-only conversion rate; the merchant’s blended number across all channels would be slightly higher.
Sibling cards merchants should reference together
| Card | Why pair it with Conversion Rate |
|---|---|
| WC Total Orders | The numerator. Always check the absolute number on small samples. |
| WC Total Revenue | Conversion times AOV times sessions = revenue. Read together for the full picture. |
| WC Failed Order Rate | A spike in failed orders shows up as a conversion drop first. |
| WC Pagespeed Cart Loss | The speed-conversion correlation. Self-hosted Woo brands almost always have headroom here. |
| BC Channel Conversion Rate | Cross-platform peer for agencies. |
| Shopify Conversion Rate | SaaS-platform peer. |
Reconciling against the vendor’s own dashboard
Where to look in WooCommerce Admin: WooCommerce does not ship a native conversion-rate report. The closest views:- WP Admin → Analytics → Overview (WC 4.0+) shows orders alongside Visitors if a connected analytics integration is configured.
- WP Admin → Jetpack → Stats gives session counts; divide by Woo orders manually.
- GA4 → Reports → Engagement → Pages and screens for sessions; cross-multiply against Woo orders.
| Reason | Direction of divergence |
|---|---|
| Session source mismatch. GA4 vs Jetpack Stats vs Matomo each count sessions differently (timeout windows, bot filters, sampled vs unsampled). | Either |
| Time-zone. WP-site timezone for Woo vs reporting-timezone for analytics. | Boundary effects |
| Self-hosted server uptime. During outages, sessions are zero (no pages loaded), but the analytics integration may sample differently. | Self-resolves |
| Plugin-version compatibility. Some caching plugins serve cached pages without firing the analytics tag, undercounting sessions. | Ours higher than analytics-derived rates |
| Multi-currency. Currency switches can fire duplicate session events on some plugins. | Either; investigate per-merchant |
| Card | Expected relationship |
|---|---|
google_analytics.ga_ecommerce_conversion_rate | GA4 rate <= this card’s rate (GA4 misses 10-25% of orders due to ad blockers; numerator under-reports more than denominator). |
Known limitations / merchant FAQs
Self-hosted vs managed-Woo, does it affect conversion rate? Yes, structurally. Self-hosted Woo on slow shared hosting has higher TTFB, which suppresses conversion. Every 100ms of TTFB drop is ~1% conversion lift. Managed-Woo (Pressable, Kinsta, Woo.com Cloud) typically runs 200-400ms TTFB; budget hosting (Bluehost, GoDaddy shared) runs 800-1,500ms. Status-filter selection, why excludeon-hold?
On-hold means BACS or bank-transfer payment-pending. From a conversion-rate perspective the customer “converted” (placed an order). But excluding it follows the convention that conversion = revenue-realised, BACS may never settle. If you want to count BACS as a conversion, the rate would be ~5-10% higher.
Refund-object accounting, does it affect conversion rate?
No, conversion is pre-refund. Refunds happen after conversion.
Plugin-induced data shape variance, what should I watch?
- Caching plugins (WP Rocket, W3 Total Cache) serve cached pages without firing GA4 tags by default; configure them to bypass cache for logged-in users and dynamic pages.
- AMP plugins use a different page set; sessions split between AMP and non-AMP versions.
- Multi-currency plugins fire spurious session events on currency switch; configure the plugin to suppress.
- Confirm session source (GA4 vs Jetpack vs Matomo) and ensure the same source is used in both views.
- Match the date range exactly.
- Match the order status filter.
- Confirm caching plugin is not blocking the analytics tag.