WooCommerce.
Connect your WooCommerce store to award points on orders and let members redeem points as store coupons.
Early Access: The WooCommerce integration is available for early access. Try it out and share your feedback. Your input shapes how this feature evolves. Some functionality may change as we refine the experience.
Connect your WooCommerce store to your loyalty program. When a customer completes an order, the platform credits points to their wallet using your loyalty card rules. When a member redeems points, the platform creates a single-use coupon on your store. One balance covers your counter and your webshop, the core promise of the shared wallet.
There is no WordPress plugin to install. The connection runs through the WooCommerce REST API and a single webhook, so there is nothing to update and nothing that conflicts with your theme or page builder.
Who Does What
- Admin enables the feature flag: add
FEATURE_WOOCOMMERCE=trueto the.envfile and runphp artisan config:clear. Until then, the integration is invisible everywhere - Partner creates a REST API key in their WordPress admin and connects the store from Integrations → WooCommerce
- Customers earn points on orders. New customers get a loyalty account created for them
- Members convert points into store coupons from their card page, when the partner enables the points discount
Before You Begin
You'll need:
- The feature flag enabled (see above)
- At least one active loyalty card in the club you want to connect
- A WooCommerce store served over HTTPS. The WooCommerce REST API only accepts key authentication over HTTPS
- Admin access to your WordPress dashboard
💡 Currency: the coupon discount is created in your store's currency. Use the same currency on the linked loyalty card and the store, so balances and discounts read consistently everywhere.
Connecting Your Store
First, create an API key in your store:
- In WordPress admin, go to WooCommerce → Settings → Advanced → REST API
- Click Add key and describe it, for example "Reward Loyalty"
- Set permissions to Read/Write. Write access lets the platform register the webhook and create coupons for you
- Click Generate API key and keep the page open. WooCommerce shows the secret once
Then connect:
- Navigate to Integrations → WooCommerce in the partner sidebar
- Select the loyalty card that orders should earn points on
- Enter your store URL (for example
https://your-store.com), the consumer key, and the consumer secret - Click Connect WooCommerce
The platform verifies the credentials against your store, saves them encrypted, and registers a single "Order updated" webhook for you. When that succeeds, the Overview tab shows Webhook registered automatically and the connection is live. Place a test order to see the first points arrive.
If the webhook needs manual setup
A read-only API key can verify the connection but cannot create the webhook. The connection still completes, and the Overview tab switches to manual instructions with copy buttons for the delivery URL and the secret. In your WordPress admin:
- Go to WooCommerce → Settings → Advanced → Webhooks and click Add webhook
- Name it "Reward Loyalty" and set the status to Active
- Select the topic Order updated
- Paste the delivery URL and secret from the Overview tab, then save
One webhook covers everything: orders and refunds. WooCommerce has no "Order completed" webhook topic; the platform reads the order status from each update and decides what to do. Do not create extra webhooks for other topics.
How Points Are Earned
When an order reaches the awarding status, the platform matches the customer by the billing email address on the order:
- An existing member gets the points on their balance and a notification email
- A new customer gets a loyalty account created from their billing details, plus a welcome email explaining their points and how to sign in. See New members from store orders
- A guest checkout without an email address earns nothing. The order is skipped and the reason is visible on the Activity tab
Points follow the linked card's point rules exactly as an in-store purchase would: the points-per-amount ratio, rounding, and the minimum and maximum per purchase. Points are calculated on the order total as WooCommerce reports it, which includes shipping and taxes. If the card awards welcome bonus points, the customer's first order on that card awards them too, as a separate entry in their history.
Note: Membership tier point multipliers apply to purchases that staff record at the counter. They do not apply to online orders in this version.
When points land
The Award points on setting on the Settings tab decides the moment:
| Setting | Behavior | Choose it when |
|---|---|---|
| Processing or completed (default) | Points arrive as soon as the order reaches "processing" or "completed". Most payment gateways set "processing" right after payment | You want customers to see their points right after paying |
| Completed only | Points arrive when the order reaches "completed" | You mark orders completed after fulfillment and want points to wait for it |
Every order is processed once. An order that moves from "processing" to "completed" never awards twice, and a webhook that WooCommerce retries never double-credits. Orders in other statuses (pending, on hold, cancelled, failed) award nothing, and the Activity tab names the status that was ignored.
Refunds
A full refund (the order status changes to "refunded") takes back the points the order awarded, including the welcome bonus when it was part of that order. If the member already spent some of those points, the balance stops at zero; the member's history still records the full deduction.
Partial refunds do not deduct points in this version. WooCommerce keeps the order status unchanged for partial refunds, so the platform never sees them. Refund the full order when the points must come back.
New members from store orders
A first-time customer becomes a member automatically:
- The account uses the order's billing name and email address
- They sign in with their email address and a one-time code. No password exists or is needed; this is the same OTP login every member can use
- Their emails arrive in the language you pick under Customer email language on the Settings tab
- The welcome email explains the points they earned and how to sign in
- The new member appears in your member list right away, like a customer whose card was scanned for the first time
These customers receive loyalty emails about their own activity: the welcome message, points received, and coupon codes. Every email carries the standard opt-out, and members can switch emails off in their account. You remain responsible for whether this fits the consent rules in your jurisdiction; see Privacy, Consent & Integrations.
Points Discount: Redeeming as Store Coupons
Enable the points discount on the Settings tab to let members turn points into store coupons. You define the conversion:
| Setting | What it does | Default |
|---|---|---|
| Discount per point | The value of one point, in your store currency | 0.05 |
| Minimum points to redeem | The smallest redemption a member can make | 1,000 |
| Maximum points per redemption | Optional cap per redemption. Empty allows the member's full balance | Empty |
| Coupon code prefix | Codes look like POINTS-AB12CD34 |
POINTS |
| Coupon valid for (days) | How long a coupon stays usable after redemption, 1 to 90 days | 7 |
A live preview translates your numbers while you type, for example "1,000 points = 50.00 store discount". Save, and the redemption block appears on the linked card's page for your members.
How members redeem
- The member opens their card page in the wallet. A Store discount block shows their balance and what it is worth at your rate
- They choose how many points to redeem, within your minimum and maximum and their balance
- The platform creates the coupon on your store and deducts the points
- The member sees the code with a copy button, its value, and the expiry date, and receives the same by email
- They paste the code at your store's checkout like any coupon
Each coupon is single use, restricted to the member's own email address, and applies a fixed discount to the cart. The bounds members see are enforced again on the server, so nothing outside your configuration can be redeemed.
💡 Points are deducted when the coupon is created, not when it is used. A coupon that expires unused does not restore the points by itself. Members should redeem amounts they plan to spend; you can always compensate a member manually by awarding points if a coupon went to waste.
The email loop
Members do not need to remember the wallet exists. Every points email from the store carries the loop:
- The new balance and its value in store discount, for example "You now have 1,200 points = 60.00 in store discount"
- When the balance is below your minimum, progress toward the first redemption, for example "Only 180 more points until your first 50.00 discount"
- A Redeem my points link that signs the member in and lands on the redemption block, no password prompt. The link expires after seven days; an expired link sends the member to the normal login with a friendly note instead of an error
The sign-in link grants the same access as an email one-time code. Sensitive account actions, like changing the email address or privacy requests, still require fresh verification.
Redeeming for a member
For phone orders and support cases, redeem on a member's behalf from the Overview tab: enter the member's email address, member code, or member number, choose the points, and share the coupon code that appears. The same rules and bounds apply. The member must already be part of the linked card's program.
Monitoring the Connection
The Overview tab answers "is it working?" at a glance:
- Webhook status: registered automatically (with its ID), or the manual setup instructions
- Last webhook: when the most recent delivery arrived. While empty, the panel suggests placing a test order
- 24-hour counts: processed, ignored, and failed deliveries
- Most recent failure with a hint. A signature error means the webhook secret in WooCommerce does not match; recreate the webhook with the secret from the Overview tab
The Activity tab lists recent webhook deliveries with their outcome and the reason whenever an event was ignored or skipped, for example an order status that does not award points or a duplicate delivery.
Connections, disconnections, settings changes, and redemptions are recorded in the activity log. Sign-ins through the email link appear there as their own event, separate from code logins.
Email Sender Identity
Member emails from this integration use your business identity from Business Settings: your business name as the sender name and your business email as the reply-to address. The Settings tab shows the current values read-only with a link to change them. There are no separate sender settings to maintain for the integration.
Pausing and Disconnecting
| Action | Effect |
|---|---|
| Pause | The connection stays, processing stops. Webhook deliveries are logged and skipped, and members cannot redeem coupons |
| Resume | Processing picks back up. Orders placed while paused are not back-filled |
| Disconnect | The platform deletes the webhook from your store, deletes the stored API keys, and stops everything |
Members keep every point they earned, whatever you do with the connection. After disconnecting, also revoke the API key in your WordPress admin under WooCommerce → Settings → Advanced → REST API; the platform cannot revoke it for you. Reconnecting the same store later resumes with the same integration rather than creating a duplicate.
Data and Privacy
This integration is partner-scoped: it belongs to one club of one partner, and partner isolation applies to everything it touches.
| Question | Answer |
|---|---|
| What is sent to your store | Coupon creation requests (code, discount amount, the member's email address as a usage restriction) and webhook management calls |
| What is received from your store | Order webhooks: order ID, status, total, currency, and the billing name and email used for member matching |
| Which credentials are stored | The consumer key and secret, encrypted at rest, plus a per-integration webhook secret. Disconnecting deletes the stored keys |
| How errors are logged | Each webhook delivery gets a receipt with its outcome. Receipts store order metadata and a hashed email, never the address itself |
| How to disconnect | The Disconnect button on the Overview tab, then revoke the API key in WordPress admin |
For the operator-level picture, including your consent responsibilities, see Privacy, Consent & Integrations.
Troubleshooting
| Symptom | Likely cause and fix |
|---|---|
| "Could not connect to the WooCommerce store" | The URL has a typo, the store is not HTTPS, or a key was pasted wrong. Generate a fresh Read/Write key and try again |
| "Store URL must use HTTPS" | The REST API requires HTTPS for key authentication. Install a certificate on the store first |
| Webhook shows "Manual setup required" | The API key is read-only. Create the webhook by hand using the instructions shown, or reconnect with a Read/Write key |
| Orders arrive but award nothing | Open the Activity tab. An "ignored" entry names the order status; compare it with your Award points on setting |
| 401 errors on the Activity tab | The webhook secret in WooCommerce does not match. Recreate the webhook with the secret from the Overview tab |
| A customer earned nothing | Guest checkouts without a billing email are skipped. The order needs an email address |
| The customer used a different email | Points landed on the account matching the billing email of the order. The customer can keep both accounts or use one email consistently going forward |
| The Store discount block is missing on the card page | The points discount is disabled, the integration is paused, or the member is viewing a different card than the one linked to the store |
If the dashboard itself returns a 404, the feature flag is off. Add FEATURE_WOOCOMMERCE=true to the .env file and run php artisan config:clear.
Frequently Asked Questions
Can I connect more than one store? Each club holds one connection per store URL. Use separate clubs to connect separate stores, each with its own linked card and settings.
Can the webshop and the counter share one balance? Yes, that is the point. Link the store to the same card your staff use at the counter and both channels feed one balance. See Shared Wallet Concept.
Do customers need to install anything? No. They order in your store as always. Points and coupons live in the loyalty wallet, which runs in the browser.
What about my existing Shopify connection? Shopify and WooCommerce run side by side as separate integrations. See Connecting Your Shopify Store.
Is there a storefront widget like Shopify's? Not yet. In this version the member portal and the emails carry the full earn-and-redeem loop. A storefront widget for WooCommerce is planned.
I built my own integration with the Agent API. Should I switch? The Agent API e-commerce guide remains the right tool for custom storefronts and platforms without a native integration. For a standard WooCommerce store, the native integration needs no development at all.
Related Topics
- Integrations Overview - All available integrations
- Managing Loyalty Cards - Point rules, welcome bonus, card setup
- Earning Points - The member's view of earning
- Business Settings - Sender identity for member emails
- Customer Accounts - How accounts and sign-in work
- Activity Logs - The audit trail behind the integration