Connecting WooCommerce
Give Supportify access to your WooCommerce store so the chatbot can look up orders, answer product questions and issue refunds.
WooCommerce connects with a pair of REST API keys that you generate in your own WordPress admin. There is no plugin to install. The whole thing takes a few minutes — and there is one WordPress setting further down this page that will silently break things if it is wrong, so it is worth reading to the end before you start.
Create a REST API key
In your WordPress admin, go to WooCommerce → Settings → Advanced → REST API and click Add key.
- Description — something a colleague will recognise later, e.g. "Supportify AI".
- User — an administrator account.
- Permissions — choose Read/Write.
Click Generate API key. WooCommerce shows you a Consumer Key and a Consumer Secret.
Copy both now
WooCommerce shows the consumer secret exactly once. If you navigate away without copying it, you will have to revoke the key and generate a new one.
Read-only is a valid choice
If you would rather the chatbot only ever answered questions, pick Read instead of Read/Write. We detect that the key cannot write and simply stop offering cancellations, refunds and discount codes — the chatbot will not try and fail in front of a customer.
Check your permalink setting
Go to Settings → Permalinks in WordPress and make sure it is set to anything other than "Plain" — "Post name" is the usual choice.
This sounds unrelated and is not. WooCommerce serves its API under `/wp-json`, and with plain permalinks WordPress does not route requests there properly.
Why this one gets its own step
With plain permalinks, a store does not return a clean error — it returns its home page with a success code. We check for that now and refuse to treat it as success, but the underlying store still cannot accept a refund or a coupon until permalinks are fixed. Changing this setting is safe and takes one click.
Connect in Supportify
Open Settings → Store connection in Supportify and enter:
- Store URL — the address customers visit, e.g. `https://your-store.com`
- Consumer Key
- Consumer Secret
We test the credentials against your store before saving them, so a wrong key or an unreachable URL is rejected immediately with the reason, rather than being accepted and failing later.
Tip
Some hosts strip authentication headers from incoming requests. If yours does, we fall back to a different authentication method automatically — you should not need to do anything, and a store that works in a browser generally works here.
What your chatbot can do on WooCommerce
Supportify only offers the tools your platform genuinely supports, so the chatbot never promises a customer something it cannot deliver.
Available
- Look up an order by number or email
- Look up a customer and their order history
- Give a customer their tracking number and a link to the carrier — if you use a shipment tracking plugin, see the note below
- Tell a customer what has shipped, parcel by parcel on a split delivery
- Search products and answer questions about them, including sizes, colours and fabrics from your product variations
- Browse a product category by name, the way a customer asks for it ("what is in your sale?")
- Narrow a search by your own categories and attributes — the chatbot is told which ones your store actually uses
- Look up and create discount codes — WooCommerce coupons work well
- Place an order for a customer and send them a payment link — see the note below
- Cancel an order
- Issue a refund
- Correct a customer address or phone number
- Change what is on an order — swap a size, remove an item — see the note below
- Correct a delivery address before the parcel goes out
- Send a free replacement when something arrived damaged, wrong or not at all — see the note below
- Flag an order or a customer for your team — see the note below
- Everything that does not need your store at all: knowledge-base answers, support tickets, ratings
Not available
- A delivery confirmation. WooCommerce records that you marked an order complete, never that the parcel arrived — so the chatbot says an order has shipped, and will not claim it was delivered.
- Returns as a formal process. Core WooCommerce has no return object, and the returns plugins have no reliable way for us to write to them. The chatbot can refund an order or raise a ticket instead.
- Subscriptions and gift cards, unless you run the extension. Neither is part of WooCommerce. See the note below.
Which categories and attributes the chatbot can filter by
The chatbot is given your product categories and your global attributes — the ones you set up once under Products → Attributes and reuse — together with how many products carry each. That is what lets it answer "do you have this in blue?" with the colours you really stock rather than guessing.
Two things it deliberately leaves out. Attributes typed onto a single product, rather than defined globally, cannot be filtered on in WooCommerce at all, so they are never offered as a choice. And a category or a value with nothing published in it is dropped, because suggesting one only leads the chatbot to an empty result.
If a category the chatbot should know about never comes up, check that it has published products in it.
Your own pages become the chatbot's knowledge
Questions that are not about a specific order or product — delivery times, returns, sizing, materials — are answered from your knowledge base. On WooCommerce there is no API to read your policy pages from, so Supportify builds it by reading your storefront's sitemap when you connect, and indexing the content pages it finds.
Product pages are deliberately skipped: the chatbot already reads those through the API, in more detail than the page shows.
You can see exactly what was indexed, add pages, or upload documents under Knowledge base in your dashboard. If your site publishes no sitemap — rare, but it happens on very custom setups — nothing is indexed automatically and you can add the pages yourself there.
If you use custom or sequential order numbers
WooCommerce has two numbers per order: an internal id, and the number the customer sees. By default they are the same and everything just works.
If a plugin numbers your orders separately, WooCommerce's own search still looks a number up as an id — so asking for order 14672 can land on a completely different order. The chatbot refuses to show an order whose number does not match what the customer asked for, which means it will say it could not find the order rather than showing the wrong one.
Most of these plugins can register their number with WooCommerce search (the `woocommerce_shop_order_search_fields` filter), and when they do, lookups work normally. If your customers are told their order cannot be found even though the number is right, this is the setting to check with your plugin.
Orders the chatbot places for a customer
When a customer wants to order through the chat, the chatbot creates the order in WooCommerce with the status Pending payment and gives them a payment link. Nobody is charged until they pay it, and paying moves the order to Processing by itself — exactly as if they had checked out normally. Orders created this way are tagged so you can tell them apart.
The link does not last forever. WooCommerce cancels unpaid orders after the time set in WooCommerce → Settings → Products → Inventory → Hold stock (minutes), which defaults to 60. That is a WooCommerce setting, not ours — if you want customers to be able to pay a link the next morning, raise it or clear it there.
Unlike Shopify, WooCommerce has no way for us to trigger its invoice email, so the chatbot gives the customer the link in the conversation rather than by email.
Where is my parcel?
Usually the most common question a store gets, and WooCommerce has no field of its own for the answer — so it depends on how your tracking numbers are stored.
- Using a shipment tracking plugin? WooCommerce Shipment Tracking and Advanced Shipment Tracking both work with no setup on your side. The chatbot reads the tracking number off the order and gives the customer a link to the carrier. If your carrier is not one it recognises, the customer still gets the number and the carrier name — just not a link.
- Using one of our carrier integrations? Connect it under Integrations and the chatbot answers from the carrier itself, which works regardless of what your store stores.
- Neither? The chatbot can say an order has shipped, and will raise a ticket for anything more.
Refunds on bank transfer, cash on delivery or cheque
Refunding through the payment gateway only works when there is a gateway involved. On an order paid by bank transfer, cash on delivery or cheque, WooCommerce cannot send money back, and asking it to will fail. Those refunds are recorded in WooCommerce as a refund — so your books and the customer's order both reflect it — while the money itself is moved by you, the way it came in.
A note on coupon codes
WooCommerce stores every coupon code in lower case, and matches them exactly. `SUMMER20` and `summer20` are the same coupon to WooCommerce, so do not be surprised when a code you created in capitals comes back lower case.
Free replacements
When a customer reports a damaged, wrong or missing item, the chatbot can prepare a replacement at no charge. It never sends one by itself — the request lands in your Replacements queue, and nothing is picked or shipped until somebody on your team approves it.
WooCommerce has no draft orders, so the replacement is created as an ordinary order held at Pending payment: nobody is charged, no stock moves, and it does not appear in your fulfilment list. Approving it moves it to Processing, which is when your stock comes off the shelf and your warehouse sees it. Rejecting it sends the order to the trash, where it stays recoverable.
The goods and the postage are both set to zero explicitly on the order, so the customer is never invoiced for an apology. Both orders are tagged — as order notes, since WooCommerce has no order tags — so you can see which parcel replaced which.
When the chatbot changes what is on an order
The chatbot can remove an item, reduce a quantity or swap one thing for another of the same price, and WooCommerce recalculates the order total and tax itself when it does.
It will never change what an order costs without the customer agreeing to the exact amount first. An edit that moves money is stopped, the amount is put to the customer, and only once they say yes is the change made — whether they end up owing more or being owed a refund.
It will not add a paid item to an order. WooCommerce works out what a new line costs only once the line exists, so there is no exact figure to give the customer beforehand, and an approximate one is not something anybody should be charged against. Removing and reducing stay exact, because the price of what is already on the order is known, and a same-price swap or a free gift changes nothing to agree to. For anything else the chatbot hands the case to your team.
WooCommerce has no way for us to trigger its own customer emails, so a customer is not emailed about an edit — the conversation is the record.
Subscriptions and gift cards depend on your extensions
Neither is part of WooCommerce. Both arrive as separate extensions, so Supportify asks your store which ones it has rather than assuming — it reads the list of endpoints your store publishes, once a day.
- WooCommerce Subscriptions lets the chatbot send a customer a checkout link that starts a subscription, and answer how often a subscription product is delivered. The link builds a cart on your storefront exactly as the buy button does, so nothing is charged until the customer completes checkout.
- Gift Cards lets the chatbot issue a gift card as compensation. Note the extension emails the card to the customer — the chatbot tells them to check their inbox rather than reading the code out in the chat, and a card can only be issued to an address the customer has verified.
If you install one of these, it becomes available within a day without you doing anything. If you have neither, the chatbot is never offered them and will not mention either to a customer.
Flagging an order for your team
On Shopify this is a tag. WooCommerce has no tags on orders or customers — only on products — so the chatbot writes the flag as an order note instead, which appears in the notes panel on the order screen where you already look. Notes written this way are internal and are never emailed to the customer.
The difference that matters: a WooCommerce order note is something you read, not something you can filter or search your orders by. If you need to pull up every order the chatbot flagged, do it from your Supportify inbox rather than from WooCommerce.
Customers get the flag recorded against their record too, but with no notes panel of their own it is only visible to us.
Putting the widget on your site
Open Embed code in Supportify, copy the snippet, and add it to your WordPress site so it loads on every page.
The simplest route on most themes is Appearance → Customize → Additional CSS/JS if your theme offers it, or any "header and footer scripts" plugin. If your theme has a child theme, adding it to the footer template works too. The snippet carries your own widget key, so nothing else needs configuring.
See Deploying the Chat Widget for what the widget looks like and how to style it.
If something stops working
Self-hosted WordPress varies enormously — plugins, hosts, versions and security rules all differ — so a connection that worked can stop for reasons that have nothing to do with Supportify. The usual suspects, in the order worth checking:
- The key was revoked in WooCommerce → Settings → Advanced → REST API.
- Permalinks were changed back to Plain.
- A security or firewall plugin started blocking API requests.
- The store moved to a new domain, so the saved URL no longer resolves.
Settings → Store connection shows the current state, and you can paste fresh keys there at any time without losing your knowledge base, conversation history or settings.