WooCommerce sync explained
WooCommerce sync: order polling every 15 min, product refresh every 12 h, optional real-time webhooks. CDM normalizes customer fields across themes.
Written By Salvatore Sinigaglia
Last updated About 5 hours ago
WooCommerce sync: order polling every 15 min, product refresh every 12 h, optional real-time webhooks. CDM normalizes customer fields across themes.
WooCommerce sync explained
WooCommerce data syncs to Wevion via REST API polling (orders every 15 minutes, product refresh every 12 hours) + optional real-time webhooks. The Customer Data Model (CDM) normalizes customer fields across WooCommerce installations that use different themes / plugins. A webhook-health check runs every 24 hours to detect delivery issues.
Who is this for
Mediabuyers running WooCommerce stores trying to understand:
- When data appears in Wevion
- Why some custom fields are/aren't synced
- How conversion attribution from WooCommerce works
Data synced from WooCommerce
Products
- Product ID, name, slug, description
- Type (simple, variable, grouped, external)
- Variants (for variable products): size, color, SKU per variation
- Regular + sale price per variant
- Stock quantity per variant
- Categories + tags
- Images (URLs)
- Updated timestamp
Visible at /catalogs after sync.
Orders
- Order ID + number
- Status (pending, processing, on-hold, completed, cancelled, refunded, failed)
- Line items (product + variation + quantity + price)
- Totals: subtotal, tax, shipping, discount, total
- Currency
- Customer email + name
- Billing + shipping address (city, country)
- Created + completed timestamps
- Customer notes
- UTM parameters (from
_wc_order_attributionif WooCommerce Order Attribution plugin enabled, else captured via Wevion's pixel/CAPI)
Customers
- Customer ID + email
- Name + billing address
- Order count + lifetime value
- Created date
- Custom fields (via CDM — see below)
Refunds
- Refund ID + parent order ID
- Refunded amount
- Reason (if provided)
- Created timestamp
Sync mechanisms
REST API polling (primary)
Order polling runs every 15 minutes and product refresh every 12 hours (apps/backend/src/cron/woocommerce-crons.ts):
- Pulls orders updated since last sync (every 15 min)
- Refreshes products (every 12 h)
- Fetches refunds when an order indicates refund activity
Uses WooCommerce REST API standard endpoints + Basic Auth header.
Webhooks (real-time, optional)
If webhooks configured in WP Admin (com-104 step 6):
- New events delivered within seconds
- WooCommerce signs payloads with secret (HMAC-SHA256)
- Wevion verifies signature before processing
- Failed deliveries retried by WooCommerce per its config (configurable in WP)
With webhooks + polling combination, you get real-time freshness + missed-event recovery.
Customer Data Model (CDM)
woocommerce-cdm.service.ts normalizes customer fields across diverse WooCommerce installations. WooCommerce stores have varied schemas:
- Default
wp_users+wc_customer_lookuptables - Custom fields added by themes (Storefront, Astra, Divi, etc.)
- Plugin-added fields (WooCommerce Subscriptions, Memberships, B2B, etc.)
- Custom registration forms
CDM extracts:
- Standard fields (email, name, billing/shipping address, phone)
- Common custom fields (newsletter opt-in, account type, B2B flags)
- Last order details
Output: a normalized customer record Wevion can use consistently across stores.
Connection health monitoring
woocommerce-connection-health.service.ts runs as part of the WooCommerce crons (order polling 15 min, product refresh 12 h, webhook health 24 h — apps/backend/src/cron/woocommerce-crons.ts):
If a check fails, the failure reason is available on the connector card. Automatic email/Telegram notification of a health failure is not yet implemented (a TODO in the current code) — check the connector card.
Sync frequency in practice
Conversion attribution
When a customer places an order:
- Customer landed via UTM-tagged URL (e.g.
?utm_source=facebook&utm_campaign=summer_sale_2026) - WooCommerce stores UTM in order metadata (if Order Attribution plugin enabled)
- Wevion's pixel/CAPI also tracks the conversion event with same UTM
- On sync, Wevion correlates order to ad campaign via UTM match
- Revenue attributed to the campaign in Wevion analytics
- Deduplicated against pixel events using event_id
For best attribution: enable WooCommerce Order Attribution plugin (free, official) OR use Wevion's pixel/CAPI for browser-side capture.
Initial sync timing
Performance depends on:
- Your WordPress server speed
- Wevion's API call rate (configured to avoid hammering your server)
- Network latency
Manual force-sync
If you need fresh data RIGHT NOW (e.g. demo for client):
/connect/woocommerce→ store detail → Force sync button- Triggers immediate full sync (not just incremental)
- Use sparingly — heavy on your WordPress server
Performance considerations for your WordPress server
Wevion's polling makes 5-20 REST API calls per 15-min cycle (depending on store size). Each call typically < 1 second. Negligible load for most stores. For very busy stores (10k+ orders/day):
- Wevion auto-throttles to avoid spikes
- Consider using webhooks (less load than polling)
- Monitor your server via WP plugin (e.g. Query Monitor) if concerned
What you'll see in Wevion
After healthy sync:
- Dashboard shows WooCommerce revenue attributed to campaigns
/catalogsshows product catalog- Per-store, per-campaign, per-product breakdowns
- Health badge: green Healthy
Common questions
- "Custom fields not synced": CDM covers common fields. For specific custom fields, contact support for mapping setup.
- "Subscription orders showing wrong total": WooCommerce Subscriptions stores differently. Wevion respects WC's reported total; check if WC plugin is set up correctly.
- "Variable products showing only parent": variations are pulled separately. Check
/catalogs→ product detail → variations tab. - "Order status 'On hold' missing from reports": by default Wevion includes only Completed + Processing orders in revenue. Configurable per workspace — contact support.
FAQ
How often does WooCommerce data sync to Wevion?
Wevion polls the WooCommerce REST API every 15 minutes for orders (product refresh runs every 12 hours), and you can add optional real-time webhooks for instant events. With webhooks configured, a new order appears in under a minute; without them, it appears within 15 minutes via polling. A webhook-health check runs every 24 hours to detect delivery issues.
What is the Customer Data Model (CDM) in WooCommerce sync?
The CDM is Wevion's normalizer that unifies customer fields across WooCommerce installations using different themes and plugins. Because stores have varied schemas — default tables, theme-added fields like Storefront or Astra, and plugin fields from Subscriptions or B2B — the CDM extracts standard fields, common custom fields, and last-order details into one consistent customer record Wevion uses across stores.
How does Wevion attribute WooCommerce orders to my ad campaigns?
When a customer lands via a UTM-tagged URL and places an order, WooCommerce stores the UTM in order metadata (with the Order Attribution plugin), and Wevion's pixel/CAPI tracks the same event. On sync, Wevion correlates the order to the ad campaign via UTM match, attributes revenue in analytics, and deduplicates against pixel events using event_id.
Which WooCommerce order statuses count toward revenue in Wevion?
By default, Wevion includes only Completed and Processing orders in revenue reporting. Other statuses like On hold are excluded from revenue by default. This behavior is configurable per workspace — contact support if you need statuses such as On hold included. Refunds propagate on sync, reducing attributed revenue accordingly.
Can I force an immediate WooCommerce sync in Wevion?
Yes. Go to /connect/woocommerce, open the store detail, and click Force sync to trigger an immediate full sync rather than the usual incremental one — useful before a client demo. Use it sparingly, since a full sync is heavier on your WordPress server. Regular polling every 15 minutes already keeps data fresh.
Steps
- Customer landed via UTM-tagged URL (e.g. ?utmsource=facebook&utmcampaign=summersale2026)
- WooCommerce stores UTM in order metadata (if Order Attribution plugin enabled)
- Wevion's pixel/CAPI also tracks the conversion event with same UTM
- On sync, Wevion correlates order to ad campaign via UTM match
- Revenue attributed to the campaign in Wevion analytics
- Deduplicated against pixel events using event_id
Last updated: 2026-05-17