

The admin page under WooCommerce - Marketing, showing the schedule selector, per-country URL table, and backfill controls.
Build Google Ads Customer Match lists from your WooCommerce orders: one CSV file per billing country, updated automatically on a schedule. Each country file is downloadable via a private and secure (tokenized) URL — ideal for marketing teams that run per-country campaigns and want clean, single-market audience lists.
The values are hashed with the same SHA-256 normalization used by both Google Ads Customer Match and Meta Ads Custom Audiences, so the same file can also be uploaded manually to Meta Ads Manager (see FAQ).
Why this export?
Not all purchases are captured by Google Ads tracking; periodic uploads of Customer Match Lists help targeting and campaign performance. Even Google’s automatic conversion-based customer lists (auto-enabled for eligible accounts from August 2026) only contain tag-tracked conversions — this plugin exports from the order database itself, so ad-blocked, phone, offline and historical orders are included too (see FAQ). The export reflects your order database as-is — applying your store’s consent choices and legal requirements to it is your responsibility as the merchant (see the GDPR / privacy FAQ).
Why per-country files?
Marketing teams optimize Google Ads campaigns per country. Mixing a German audience into a Romanian campaign’s match list pollutes the targeting. This plugin keeps each market in its own file.
--days=N, --since, --until), dry-run, and batch-size control.Email, Phone, First Name, Last Name, Country, Zip.+ — the same hashing Meta Ads Custom Audiences accept.wp-content/uploads/customer-match-list-google-ads/ with filenames containing a 64-bit hash derived from the token.nocache_headers().JOIN on wc_orders + wc_order_addresses (or posts+postmeta on classic). Designed for stores with tens of millions of orders.WooCommerce Marketing Customer Match List.
From there you can:
wp cmls backfill — one-time backfill of historical orders, split by country. Flags: --statuses=completed (default), --all-statuses, --days=N, --since=YYYY-MM-DD, --until=YYYY-MM-DD, --dry-run, --batch-size=5000, --force.wp cmls run-now — runs the incremental writer immediately (same code path as the scheduled cron).wp cmls status — prints a table with one row per country: row count, file size, URL.wp cmls reset-token — regenerates the token and renames every country file to match.wp cmls delete-file — deletes every country CSV and truncates the dedup table.