Connect your WooCommerce store to Personyze with a REST API key, and keep Personyze in step with it: your products in the catalog that recommendations draw from, your orders as purchase history on each buyer’s profile, and your registered customers’ WooCommerce data on their visitor profiles. Your coupons can also make each visitor’s code in the store, so the checkout accepts it.
What it does
Three syncs, each switched on separately:
- Products into your catalog. Every published product that is not hidden from your shop, every 6 hours: name, description, picture, price and sale price, stock with the unit count where you manage stock, categories, tags and brand. Recommendations, product widgets and catalog-based targeting use them right away. A product that leaves your store goes out of stock in the catalog.
- Orders into purchase history. Each order’s products become purchases on the buyer’s visitor profile, matched by their email — a profile is created for a buyer Personyze has not seen yet, guest orders included — at the order’s own date. The first pass reads a year of orders; after that, new orders arrive every 15 minutes.
- Customers onto visitor profiles. Each registered customer’s name, whether they have paid for an order, and the date they became a customer, on their profile, matched by email, every hour.
And with a Read/Write key, coupon codes: a coupon linked to the store makes each visitor’s code as a WooCommerce coupon.
What you need
- A WooCommerce store on a public https address. Personyze connects to your store’s REST API from the internet.
- A WordPress admin user who can open WooCommerce → Settings → Advanced → REST API.
- The key is made for a user, and works with that user’s rights: pick an Administrator or a Shop manager, so every sync can read what it needs.
Step 1: Create the REST API key in WooCommerce
- In your WordPress admin, go to WooCommerce → Settings → Advanced → REST API → Add key.
- Give it a description (for example “Personyze”), pick an Administrator or Shop manager as its User, and set Permissions to Read — or Read/Write if your coupons should make their codes in the store.
- Click Generate API key.
- Copy the Consumer key (it starts with
ck_) and the Consumer secret (cs_). WooCommerce shows the secret only once — keep the page open until step 2.
Personyze only reads from your store, except to make coupon codes, which is what Read/Write is for.
Step 2: Connect it in Personyze
- In Personyze, go to Settings → Integrations and open WooCommerce — or What do you want to do? → Sync my store → WooCommerce.
- Enter:
- Store address — the address shoppers visit, for example
https://shop.example.com/. A store in a subfolder, likehttps://www.example.com/shop/, works too. - Consumer key and Consumer secret from step 1.
- Store address — the address shoppers visit, for example
- Click Connect.

Personyze checks the key with your store before saving it — a key that does not work is never stored — and finds out what it may do: read products, orders and customers, and make coupon codes. The secret is kept encrypted and never shown again: from then on its field reads “(unchanged)”. The drawer then reads Connected to your store’s name.
To change something later, edit the fields and click Check and save. For the same store and Consumer key you can leave the secret empty to keep the saved one.
Two things Personyze handles by itself: a site without “pretty” permalinks, whose API has no /wp-json/ address, and a server that drops the Authorization header — then the key is sent the other way WooCommerce allows.
Step 3: Switch on what to sync
Under What it syncs, switch on each sync you want: Products into your catalog, Orders into purchase history and Customers onto visitor profiles. Each row shows what it reads — Products, Orders or Customers — in green when the key may read it, and in red, with “Not allowed for the key’s user”, when it may not (see Troubleshooting).
A sync you switch on reads “Starting within 5 minutes”. After a pass, each row says what it did, for example “120 products · Oct 2”, “340 purchases since Oct 2” or “85 profiles · Oct 2”. Sync now runs a sync on the next pass, within 5 minutes, without waiting for its schedule.
How the data is used
Products
Each product is one catalog item, identified by its WooCommerce product ID, with its own page address (its permalink) and its first picture.
- Which products: published ones that are not hidden from the shop — the ones a shopper can find.
- Prices: while a product is on sale, the price is its regular price and the sale price its sale price. WooCommerce applies the sale’s dates itself.
- Variable products (for example a T-shirt in sizes) are one catalog item, priced at their cheapest variation. The variations are not synced as products of their own: an order’s line counts for the product.
- Stock: in stock, or on backorder (still for sale), counts as in stock; the unit count is kept where you manage the product’s stock.
- Categories and tags by name. Brand: the product’s first brand from WooCommerce’s own Brands (WooCommerce 9.6 and later).
- Up to 50,000 products are synced: a larger store has its first 50,000 in the catalog.
Purchases
An order’s purchases are its products (a variation counts as its product), with the quantity ordered and the line’s total after its discounts, before tax. Orders that are not a sale bring no purchases: pending payment, failed, cancelled, refunded, drafts and the bin, and orders without an email address. A partly refunded order counts whole.
Customers
The customers sync reads your registered customers — WordPress users with the Customer role. A guest’s purchases arrive with the orders sync. Each one’s name goes on their profile, with three visitor attributes you can target: WooCommerce customer ID, WooCommerce paying customer and WooCommerce customer since. A customer without an email address is left out.
Product feeds
If your account also imports a product feed, or the WordPress plugin’s Product recommendations switch syncs your products, a product in both can appear twice in the catalog. Keep one source per product — the Products row warns you when the account has a feed.
Coupon codes
Under the syncs, Coupon codes says whether your coupons can make their codes in this store: green, “Coupons can make their codes in this store”, with a Read/Write key; red, “Needs a Read/Write key”, with a Read key.
- Link a coupon to this store on its Store step (Promotions → Coupons). Each visitor’s code is then made as a WooCommerce coupon, good for one use, copying the store coupon you pick — its discount, the products it applies to and its minimum spend — or with the coupon’s own discount, like 15% or $10.
- The codes your orders use are counted as redemptions every 10 minutes.
See Coupon codes for linking a coupon to a store, and Promotions for the offers that hand the codes out.
Disconnecting
Click the bin icon next to “Connected to …” in the drawer. Disconnect WooCommerce? says that its products, orders and customers stop syncing, and that what was already synced stays. It also asks about the people its customers sync brought in:
- Keep the … people it brought in (the default) — they stay as profiles and in your lists, and anyone who opted out of email stays opted out.
- Also remove the … of them nothing else knows — anyone who visited your site, is on another list, filled in a form or got a campaign message stays.
The key stays in WooCommerce — revoke it there if you no longer need it.
Troubleshooting
“There is no WooCommerce REST API at …”
Enter the store’s own address, the one shoppers visit, like https://shop.example.com/, and check that WooCommerce is active on it.
“WooCommerce did not accept this REST API key.”
Check the Consumer key and Consumer secret in WooCommerce → Settings → Advanced → REST API, or make a new key. “That Consumer key is not whole” or “That Consumer secret is not whole” means part of it was left behind when you copied it.
“WooCommerce did not receive the key.”
Make sure the key was made in this store. If it was, your server drops the Authorization header in a way Personyze could not get around: ask your host to pass it on to WordPress.
“The REST API key may read nothing Personyze uses.”
The key’s user may not manage the shop. Make a new key for an Administrator or Shop manager.
A sync row is red and says “Not allowed for the key’s user”
The user the key was made for may not read what the row names. Make a key for an Administrator or Shop manager, enter it, and click Check and save.
Coupon codes reads “Needs a Read/Write key”
In WooCommerce, edit the key and set its Permissions to Read/Write (or make a new Read/Write key and enter it), then click Check and save.
“Personyze cannot connect to …”
Personyze reaches your store over the internet, on https only. A store on a private network or on plain http cannot be connected.
“The store redirected to …”
The address you entered sends visitors on to another one (for example from example.com to www.example.com). Enter the address it redirects to.
The drawer shows WooCommerce’s refusal instead of “Connected to”
WooCommerce refused the key during a sync — it was revoked, or its user was deleted. Personyze stops using the connection at once instead of retrying, and the drawer says why. Make a new key, enter it and click Check and save. A reconnected store keeps its syncs as they were.
The store’s firewall blocks the connection
If your store sits behind a firewall that blocks automated requests, allow requests with the user agent Personyze/1.0 (+https://www.personyze.com).
Related
- Integrations — every other connection, and the Integrations screen.
- BigCommerce Integration — the same three syncs for a BigCommerce store.
- Shopify Integration (connect by API) — the same for a Shopify store.
- Magento Integration — the same for a Magento store.
- WordPress plugin — installs the Personyze tag on a WordPress site.
- Recommendations — Start Here — widgets built on the synced catalog and purchases.
- Coupon codes — coupons whose codes are made in the store.
- Troubleshooting: an integration stopped syncing