Connect it to wherever your sales actually happen

A feedback request has to be triggered by something. FeedbackHub takes that trigger from your store, your point of sale, or a webhook you fire yourself. If none of those exist, a printed QR code covers the gap without any integration at all.

How connections work

The same three steps regardless of platform

Create the integration

Add an integration in your account, choose the provider, and pick which published form the requests should point at and which channel to send on. The account generates a unique webhook URL containing a secret that identifies you.

Point your platform at the URL

Paste it into the WooCommerce plugin settings, into a Shopify webhook, or into whatever your own system uses to notify external services. Nothing else needs configuring on your side.

Orders start producing feedback requests

Each incoming order is parsed for the customer's contact details, the request goes out on your chosen channel, and the integration records an event count and the time of the last event so you can confirm it is live.

Generic webhook

If it can POST JSON, it can send feedback requests

The webhook endpoint accepts several payload shapes so that most platforms work without any transformation on your side. It reads the standard WooCommerce order shape, the standard Shopify order shape, and a plain generic shape for everything else.

The minimum requirement is a way to reach the customer. Send an email address, a phone number, or both. A name and an order reference are optional but recommended, because the name personalises the message and the order reference is stored against the response so you can trace feedback back to a specific transaction.

Requests are validated against your unique secret, checked against the suppression list and deduplicated before anything is sent, so a system that fires the same order twice will not produce two messages.

Which route suits your setup

Most businesses end up running two: one attached to sales, and QR codes for the customers who never leave contact details.

Your situation Use this Why
WordPress shop WooCommerce plugin Ten minute install, settings live inside WooCommerce, and you choose which order status triggers the request.
Shopify store Order webhook Configured entirely in the Shopify admin. No app to install, no permissions to grant, no marketplace review to wait for.
Cloud POS with an admin screen Browser extension Works with systems that expose no API, by watching the checkout action on the screen your staff already use.
Custom or in-house system Generic webhook One HTTP POST with an email or phone number. Nothing to install on your infrastructure.
Automation platform in use Zapier or Make Both can call the webhook URL as an action, which connects FeedbackHub to anything already in your automation stack.
Cash trade, no customer data QR codes No integration exists because no order record exists. A printed card collects feedback from customers you could never message.

Not sure which applies? Tell us what you sell on and we will tell you which route is cleanest, including whether it is worth integrating at all.

Keeping an integration healthy

Integrations fail quietly more often than loudly. A plugin gets deactivated during a site update, a webhook URL is left pointing at a staging site, an order status is renamed and the trigger stops matching. In each case nothing errors visibly, requests simply stop going out, and the first sign is a report that looks unusually quiet.

Each integration in your account keeps a running event count and the timestamp of the last event it received. That pair answers the only question that matters when feedback volume drops: is the store still calling us? If the last event was three weeks ago, the problem is upstream and you can go straight to the plugin or webhook settings rather than debugging the feedback platform.

Integrations can also be paused rather than deleted, which is the right move during a site migration or a seasonal shutdown. The configuration and its history stay intact and can be switched back on without regenerating URLs or reconfiguring anything at the other end.

One more habit worth adopting: after any significant change to your store, place a small test order using an address you control and confirm the request arrives. It takes two minutes and it is considerably cheaper than discovering a month later that nothing has been sent since the theme update.

Choosing which channel an integration sends on

Each integration is configured to send on one channel, and the right choice depends less on preference than on which contact detail your orders reliably contain.

Online stores almost always capture an email address and frequently make the phone number optional, which makes email the sensible default. Point of sale and booking systems often have the reverse problem: a mobile number is captured because it is needed to confirm the appointment, while the email field is left blank half the time. In that case SMS or WhatsApp will reach far more customers than email would.

If a payload arrives without any usable contact detail, no request is sent, but the event is still counted. That is deliberate, because the counter then tells you something useful: a store where events are arriving but requests are not going out has a data capture problem at checkout rather than an integration problem.

Running two integrations against the same store, one on each channel, is possible but rarely worth it. It doubles the chance of asking the same person twice, and the deduplication guard works on contact details rather than across channels. Pick the channel your orders actually carry.

What happens between the webhook and the message

An incoming order does not go straight out as a message. Several checks sit in between, and knowing what they are makes it much easier to understand why a particular customer was or was not contacted.

First, the secret in the URL is matched to an active integration. If the integration has been paused or deleted, the call is rejected. Second, the form the integration points at must be published; a draft form causes the request to be refused rather than sending customers to a page that cannot accept answers. Third, the payload is parsed for an email address, phone number, name and order reference. Fourth, the contact is checked against your suppression list. Fifth, deduplication looks for a recent request to the same person.

Only after all five does a message get created, and from that point it enters the normal dispatch pipeline with its own delivery status. The effect is that an integration cannot accidentally message someone who has opted out, cannot message the same customer twice for one purchase, and cannot send anyone to an unpublished form.

We will do the connecting

Setup includes the integration, a test order end to end, and confirmation that requests are arriving before anything goes live for real customers.