WooCommerce sync explained

Last updated: May 19, 2026

WooCommerce sync explained

WooCommerce data syncs to Wevion via REST API polling every 15 minutes + optional real-time webhooks. The Customer Data Model (CDM) normalizes customer fields across WooCommerce installations that use different themes / plugins. Health check runs hourly to detect connection 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_attribution if 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, every 15 min)

woocommerce-sync.service.ts runs every 15 minutes:

  • Pulls products updated since last sync

  • Pulls orders updated since last sync

  • Pulls customers updated since last sync

  • Pulls refunds created since last sync

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_lookup tables

  • 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 hourly:

Check

What it tests

Failure means

Site reachable

HTTP GET to REST API root returns 200

Site down or DNS issue

REST API enabled

Standard endpoints return JSON

Permalinks disabled or REST API plugin broken

Credentials valid

Authenticated test call succeeds

Consumer key/secret rotated or revoked

WooCommerce active

WC endpoint returns expected schema

Plugin deactivated or downgraded

If any check fails, the connector card turns yellow with the specific failure reason. You're alerted via email + Telegram (if connected).

Sync frequency in practice

Event

When Wevion sees it

New order via webhook

< 1 minute

New order without webhook

< 15 min (polling)

Order status update

Same as new order

Refund

Same

Product update

< 15 min (polling — no webhook for products in default setup)

Customer registration

< 15 min

Conversion attribution

When a customer places an order:

  1. Customer landed via UTM-tagged URL (e.g. ?utm_source=facebook&utm_campaign=summer_sale_2026)

  2. WooCommerce stores UTM in order metadata (if Order Attribution plugin enabled)

  3. Wevion's pixel/CAPI also tracks the conversion event with same UTM

  4. On sync, Wevion correlates order to ad campaign via UTM match

  5. Revenue attributed to the campaign in Wevion analytics

  6. 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

Store size

Initial sync

< 100 products + 1k orders

5-10 min

500 products + 10k orders

20-40 min

5k+ products + 50k+ orders

1-3 hours

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

  • /catalogs shows 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.

Related