This guide is for stores on Wix, Squarespace, Ecwid, PrestaShop, OpenCart, Shift4Shop and custom platforms.
A referral programme rewards two people: the friend who clicks your customer’s link, and the customer who shared it.
Two things work differently on these platforms:
- Your store has to send us your orders. That is how we know a referral turned into a sale.
- Your store has to hold the discount codes. We cannot create coupons in your store, so either you upload a batch, or we create each code and send it to your store to set up.
Step 1 — Connect your store
Nothing in the referral programme works until orders reach WiserReview.
Go to Integration in the sidebar and connect your store. Once connected, your orders come to us automatically and you can skip to Step 2.
If your platform is not listed
Two options, both under Integration:
- Zapier — connect your store to WiserReview through a Zap, with no code
- Custom webhook — your store, or whatever sits in front of it, sends us each order as JSON
For the custom webhook, the Integration screen gives you your own URL, which already contains the identifiers for your store. Copy it from there rather than building it by hand, and keep it private — anyone with that URL can send us data for your store.
What to send
Send one request per completed order, as JSON. Plain text, HTML and XML are rejected.
| Data | Needed? | Why |
|---|---|---|
| Customer email | Required | Nothing is processed without it |
| The discount code used | Required for referrals | This is how we match the order to a referral |
| Order id | Recommended | Identifies the order in your report |
| Order total | Recommended | Without it, referral revenue shows as 0 |
| Customer name | Optional | Used in emails |
On the custom webhook you map your own field names to ours on the Integration screen. Email is the only field that must be mapped.
How we find the referral code
You do not need a specially named field for it. We look through the whole order for any text that matches a code we gave out.
- Case does not matter
- The code can sit anywhere in the order, including inside nested objects
- It must appear as a text value, not as a field name
Things worth knowing
- Each code is credited once. Sending the same order twice does not reward the customer twice.
- We do not read the order status. Only send orders you consider complete, because the reward is issued as soon as the order reaches us.
- We do not read currency or line items. Amounts are shown in the currency set in WiserReview.
Step 2 — Turn the programme on
- Go to Referrals in the sidebar
- Press Turn on next to Referral widget
Referrals are a paid add-on. You are asked to buy it if it is not already active, and rewards are not issued until it is.
Step 3 — Add the widgets
On-site referral widget — a tab on your storefront customers can open at any time. Press Add widget on the On site card, name it, then set colours and wording in the editor.
Post-purchase referral widget — shown after checkout, when customers are most likely to share.
Friend reward page

The page the friend lands on when they click the link. It always exists — press Configure to change how it looks.
Step 4 — Set the rewards
Friend reward — what the new customer gets. This is the offer shown in the shared link, so make it worth clicking.
Customer reward — what the person who shared gets once their friend buys, or No incentive for a one-sided programme.
These values decide what your codes need to be worth, so set them before you generate any.
Step 5 — Set the rules
Requirement — a minimum order value.
Validity — whether codes never expire or expire after a set number of days.
Fraud protection
- Prevent advocate self-rewards — stops a customer rewarding themselves by using their own link. Leave this on.
- 30-second redeem delay — blocks instant fake orders.
A referral is also blocked when the friend’s order comes from the same computer that created the link. Blocked referrals appear in the report with the reason.
Press Save after any change.
Step 6 — Where your discount codes come from
On the Referrals page you will see a Discount codes section. Choose one of two ways to supply the codes.
| Upload a CSV | Call my endpoint | |
|---|---|---|
| Who makes the code | You, in your store admin | We do, and your endpoint creates it in your store |
| Setup | No code needed | A developer builds a small endpoint |
| Upkeep | Top up before codes run out | Keep your endpoint running |
| Can it run dry? | Yes — rewards stop | No |
Option A — Upload a CSV
Two lists: Friend reward codes for the friend who uses the link, and Customer reward codes for the customer who shared it. Each card shows what the codes should be worth and how many are left.
- In your store admin, generate a batch of single-use discount codes at the value shown on the card
- Export them, or paste them into a spreadsheet, one code per row. Press Download sample CSV to see the format
- Press Upload codes (CSV) on the matching card and choose your file
- Repeat for the second list, unless your customer reward is No incentive
Rules for your codes
- Single use only. A reusable code can be shared publicly and used by anyone
- Match the value to the reward shown on the card
- Do not put the same code in both lists. Duplicates are skipped on upload
- Check the expiry in your store — an expired code will not work
- Upload plenty. One code is used per reward, and they are never reused
Set Warn me when fewer codes remain than to a number that gives you time to react. Rewards stop being issued when a list runs out.
Option B — Call my endpoint
Instead of uploading codes in advance, we create each code ourselves when it is needed and send it to your URL. Your endpoint creates a coupon in your store with exactly that code. Nothing to top up, and codes never run out.
This needs a developer. Give them this section.
When we call your endpoint
- Friend code — when a customer creates their referral link. The friend sees this code on the reward page and enters it at checkout.
- Customer code — when the friend’s order reaches us. It is sent to the customer who shared the link, in the reward email.
1. Add your URL
The address we should call. It must start with https:// and be publicly reachable.
2. Set a code prefix (optional)
Every code we create starts with your prefix, followed by 8 random letters and numbers. For example, the prefix REF gives codes like REF-7KQ2M9XA. Up to 20 letters, numbers, - or _. Without a prefix, codes look like WR7KQ2M9XA.
3. Copy the signing secret
Your signing secret is created for you and shown on the page. Press Copy and add it to your endpoint. We use it to sign every request so your endpoint can confirm the call came from us, and not from someone who guessed your URL. Treat it like a password.
Regenerate stops the old secret working immediately, so update your endpoint at the same time.
4. What we send
A POST with a JSON body and two headers:
POST https://yourstore.com/wiserreview/create-coupon
Content-Type: application/json
X-WiserReview-Timestamp: 1790000000
X-WiserReview-Signature: <hex HMAC-SHA256>
{
"type": "friend", // or "customer"
"value": 10,
"valueType": "percentage", // or "fixed_amount"
"currency": "USD",
"email": "[email protected]",
"referralId": "WR_8HD2KQ1",
"discount": {
"code": "REF-7KQ2M9XA",
"value": 10,
"valueType": "percentage",
"currency": "USD",
"usageLimit": 1
}
}
- type — who the code is for: the friend, or the customer who referred them
- discount.code — the code to create in your store. Use it exactly as sent
- discount.value and discount.valueType — what the code should be worth
- discount.usageLimit — always 1. The code must be single use
- discount.minSubtotal or discount.minQuantity — sent only when you set a requirement in Step 5
- email — the customer the request relates to, useful in your own logs
- referralId — the referral link the code belongs to, useful in your own logs
- test —
trueonly when you press Test connection. Do not create a real coupon for these
Expiry and start delay are not sent. If you want codes to expire, set that in your endpoint when you create the coupon.
5. Check the signature
To confirm a request came from us, your endpoint should:
- Read the
X-WiserReview-Timestampheader and the raw request body - Compute an HMAC-SHA256 of
timestamp + "." + rawBodyusing your signing secret, as hex - Compare it with the
X-WiserReview-Signatureheader, and reject the request if they differ - Optionally reject requests whose timestamp is more than a few minutes old
6. What you do and reply
- Create a single-use coupon in your store with
discount.codeand the value indiscount - Reply with any 2xx status within 5 seconds, for example
{ "ok": true }. You do not need to send a code back
Important: we give the code to your customer straight away, without waiting for your reply. If your endpoint is down or fails to create the coupon, the customer still receives the code, but it will not work at checkout. Keep your endpoint reliable.
7. Test it
Press Test connection. We send a sample code with "test": true and show the status your endpoint replied with, before any real customer depends on it.
Step 7 — The social media image
The picture, title and description people see when the link is shared. Press the pencil icon to change them. {{DISCOUNT_VALUE}} and {{BARAND}} are filled in automatically.
The emails we send
Three emails, all automatic.
1. The referral link email — to your customer
Sent: immediately, when a customer enters their email in the referral widget.
Contains: their personal referral link, what their friend gets, and what they get. Your logo and colours come from your branding settings.
Edit it with Edit referral link email on the Referrals page.
2. The reward email — to your customer
Sent: when their friend’s order reaches us and the referral is approved.
Contains: their reward and the discount code to use.
Edit it with Edit customer reward email.
It is not sent if:
- your customer reward is set to No incentive
- the referral was blocked as a self-referral
- you use uploaded codes and your customer reward list is empty
3. The low codes warning — to you
Sent: once, when either uploaded list drops below the number you set. Only for uploaded codes.
Sent to: your admin email, or your reply-to address.
Uploading more codes resets it, so you will be warned again next time.
There is no reminder email to customers who received a link but never shared it.
Step 8 — Read the report
- Referral orders — orders placed using a referral link
- Revenue from referrals — what those orders were worth
- Rewards paid out — what the discounts cost you
- Conversion rate — orders divided by clicks
The funnel shows where people drop off. Many shares but few clicks means the share image needs work. Many clicks but few orders usually means the friend’s reward is too small.
What each status means
| Status | What it means |
|---|---|
| Shared | A link was created but nobody has clicked yet |
| Clicked | A friend opened the link but has not ordered |
| Pending | The friend ordered; the reward is being processed |
| Completed | The order counted and the reward was issued |
| Blocked | Stopped by a fraud rule, with the reason shown |
| Expired | The code passed its expiry without being used |
Export CSV downloads the list.
Troubleshooting
Nothing is being tracked at all
- Check your store is connected under Integration and orders are arriving
- Check the referral add-on is active
The friend’s discount did not work
- CSV: check your friend reward code list has codes left
- Endpoint: check your endpoint created a coupon with the exact code we sent
- Check the code has not expired in your store admin
- Every code is single use — confirm it had not been used already
The customer never received their reward
- CSV: check your customer reward code list has codes left
- Check the order reached us, and that the discount code appears in it
- Check the report — it may be marked blocked or pending
Codes from my endpoint do not work at checkout
- Your endpoint must create the coupon using
discount.codeexactly as we send it — do not make up your own code - Check your endpoint is reachable and replies within 5 seconds
- Check the signature check is not rejecting our requests — use the secret currently shown on the Referrals page
- Use Test connection to see the status your endpoint replies with
Referral revenue shows as 0
- Your orders are arriving without an order total. Include it in what you send
A referral shows as blocked
- The customer used their own link, or the order came from the same computer that created it
Things worth knowing
- Every referral code is single use and is never given out twice
- With uploaded codes, rewards stop when a list runs out
- With your endpoint, codes never run out, but your endpoint must create each one
- The programme stops issuing rewards if the add-on is cancelled
- Changing a reward value does not change codes you already uploaded — upload a new batch at the new value
- Keep your webhook URL and signing secret private