Retail
Quickly build an effective referral program to turn customers into advocates and to turn the passion they have for you into new customers.
Overview
This guide covers the necessary steps for setting up a successful referral program with Extole.
- Brand Your Program
- Tag Your Site
- Enable Site-to-Store
- Reward Your Customer
- Retrieve Your Opt-Ins
- Design Your Experience
Brand your Program
Create a CNAME for your Domain
Task Duration
This task will typically take an IT/Ops engineering team 10–15 minutes to complete.
You'll want to create a CNAME for your domain so that you can create branded Promotion Links and Share Links.
To set up your CNAME, please complete the steps outlined in Extole DNS Requirements.
Send from Your Branded Email
Improve Email Open Rates
We see a 5–15% improvement in the open rate of emails that from your domains.
The referral program will send program emails from you to your customers:
- Welcome Email
- Advocate Stats Email
- Earned Reward Email
The from address for this will typically be something similar to [email protected]
. Once this email has been identified, Extole can check if it is configured to allow Extole to send emails from this address.
For details on how to update your SPF DNS records and install Extole DKIM keys, please reference Extole DNS Requirements.
Tag your Site
Task Duration
This task typically takes a web developer 1–2 days to complete.
Extole works with your site using lightweight JavaScript tags. They can go anywhere in the HTML of the page and do not need to be loaded in any specific order. They are asynchronous to ensure fast page loading.
Add the Core Tag (Extole's JavaScript Library)
Extole's JavaScript (JS) library goes on all of your pages. It enables all Extole functionality: call-to-action delivery, sharing experience display, and event tracking.
Add Extole's JS Library as follows:
<!-- BRANDED -->
<script type="text/javascript" src="https://share.companyname.com/core.js" fetchpriority="high" async></script>
<!-- UNBRANDED until CNAME is complete -->
<script type="text/javascript" src="https://companyname.extole.io/core.js" fetchpriority="high" async></script>
Add Marketing Tags
Extole displays CTAs that promote the program directly. Marketing tags tell Extole where to serve CTAs on your website. They also enable tracking, so that you can monitor which marketing placements are driving participation in the program.
Your Extole referral campaign comes with standard marketing tags, which you can enable or disable in the Campaign Editor of your My Extole account:
global_header
global_footer
product
confirmation
overlay
To create other marketing tags, please contact [email protected].
For inline call-to-action, there is an HTML snippet to locate it on the page:
<span id="extole_zone_global_header"></span>
An example marketing tag looks like the following:
<script type="text/javascript">
(function(c,e,k,l,a){c[e]=c[e]||{};for(c[e].q=c[e].q||[];a<l.length;)k(l[a++],c[e])})(window,"extole",function(c,e){e[c]=e[c]||function(){e.q.push([c,arguments])}},["createZone"],0);
extole.createZone({
name: 'global_header',
element_id: 'extole_zone_global_header',
data: {
"partner_user_id": REPLACE, // RECOMMENDED IF AVAILABLE
"email": REPLACE, // RECOMMENDED IF AVAILABLE
"first_name": REPLACE, // RECOMMENDED IF AVAILABLE
"last_name": REPLACE // RECOMMENDED IF AVAILABLE
}
});
</script>
Important Note
The values listed above as REPLACE should be replaced with actual values surrounded by quotes. For example:
"email": "[email protected]"
.
Field | Value |
---|---|
first_name recommended | This should be passed to a marketing tag if the advocate is logged in and their first name is known. E.g., April |
last_name recommended | This should be passed to a marketing tag if the advocate is logged in and their last name is known. E.g., Advocate |
email recommended | This should be passed to a marketing tag if the advocate is logged in and their email is known. E.g., [email protected] |
partner_user_id recommended | This should be passed to a marketing tag if the advocate is logged in. This is YOUR unique identifier for this person such as an account ID or member ID. E.g., 00O40000004SA1AA |
Track Conversions
In order to reward your customers for completing a desired action, such as a conversion, you need to communicate to Extole that the event has happened by adding the conversion tag—typically to your order confirmation page. This passes information about the conversion to allow Extole to attribute the purchase to a referral when possible, run quality rules, and run reward rules.
Important Note
Make certain that you fire the Extole tag for all purchases so Extole will correctly detect referrals and manage the fraud and business rules. Extole ignores the purchases that are not attributed to a referral after processing rules.
An example conversion tag looks like the following:
<script type="text/javascript">
(function(c,e,k,l,a){c[e]=c[e]||{};for(c[e].q=c[e].q||[];a<l.length;)k(l[a++],c[e])})(window,"extole",function(c,e){e[c]=e[c]||function(){e.q.push([c,arguments])}},["createZone"],0);
extole.createZone({
name: 'conversion',
data: {
"first_name": REPLACE, // RECOMMENDED DYNAMIC VALUE
"last_name": REPLACE, // RECOMMENDED DYNAMIC VALUE
"email": REPLACE, // REQUIRED DYNAMIC VALUE
"partner_user_id": REPLACE, // REQUIRED DYNAMIC VALUE
"order_id": REPLACE, // REQUIRED DYNAMIC VALUE
"cart_value": REPLACE, // REQUIRED IF AVAILABLE
"products": REPLACE, // RECOMMENDED IF AVAILABLE
"coupon_code": REPLACE // REQUIRED IF AVAILABLE
}
});
</script>
Important Note
If you have a guest checkout flow, ensure the data is being passed properly. The logic used to pass the email address on the converted tag needs to accommodate both a logged in account as well as a guest checkout.
Field | Value |
---|---|
email required | On the conversion tag, it indicates the email address of the person making the purchase. This is used to help understand advocate recognition, referral quality, and allow promotion and customer support. E.g., [email protected] |
partner_user_id required | On the conversion tag, this is YOUR unique identifier for this person making the purchase such as an account id or member id. E.g., 12304qne46 |
order_id required | On the conversion tag, this is YOUR order number that uniquely identifies this transaction. |
cart_value required | On the conversion tag, this is the value of the purchase. Ideally, this is the gross cart value before coupons have been applied. E.g., 847.99 |
coupon_code required if available | On the conversion tag, this is the coupon code that may have been used to make the purchase. |
product recommended | On the conversion tag, this is the list of products included in the purchase. This is used for reporting and product specific programs. E.g., “sku03,sku02” |
Manage Site to Store
Task Duration
This task typically takes a web developer 1 week to design, build, and integration test with Extole.
In a typical web-to-store flow for a Refer A Friend program, the advocate shares to the friend online, the friend is redirected to your site and, on the friend landing experience, the friend will be asked to provide their email address. In Extole, this step is known as a signup or registration event, which serves the friend a single-use coupon that can either be redeemed online or taken into the store.
In order for Extole to properly reward advocates for the offline referral purchases, you will need to communicate when such purchases occur.
There are two options for sending offline purchase events to your referral program at Extole:
- API
- File upload
Track Offline Purchases - API
Extole requires API calls from the account systems to authenticate with an API identifier provided in the header (OAuth key). Your keys are managed through the Security Center of My Extole.
Create your first key via the "Create New Access Token" button. Our system will temporarily display the newly created random key for you.
Once your API key is created, you can test successful authentication using the Admin API method:
curl -H "Authorization: Bearer XXXX" https://api.extole.io/v2/me/clients
[
{
"client_id": "1",
"name": "<CLIENT_NAME>"
}
]
Event API Call
For each purchase that occurs in store, an API request is sent to Extole. It is fine for the same order to be sent by the tag as well as by the API as Extole will automatically deduplicate based on the order ID.
An example API call looks like the following:
{
"event_name": "purchased",
"data": {
"first_name": REPLACE, // RECOMMENDED DYNAMIC VALUE
"last_name": REPLACE, // RECOMMENDED DYNAMIC VALUE
"email": REPLACE, // REQUIRED DYNAMIC VALUE
"partner_user_id": REPLACE, // REQUIRED DYNAMIC VALUE
"order_id": REPLACE, // REQUIRED DYNAMIC VALUE
"cart_value": REPLACE, // REQUIRED IF AVAILABLE
"products": REPLACE, // RECOMMENDED IF AVAILABLE
"coupon_code": REPLACE // REQUIRED IF AVAILABLE
}
}
The response will be an ID like the following:
{
"id":"6747711822563808783"
}
Input Field | Value |
---|---|
email required | Idicates the email address of the person making the purchase. This is used to help understand advocate recognition, referral quality, and allow promotion and customer support. E.g., [email protected] |
partner_user_id required | This is YOUR unique identifier for this person making the purchase such as an account id or member id. E.g., 12304qne46 |
order_id required | This is YOUR order number that uniquely identifies this transaction. |
cart_value required | This is the value of the purchase. Ideally, this is the gross cart value before coupons have been applied. |
coupon_code required if available | This is the coupon code that may have been used to make the purchase. |
Output Field | Value |
---|---|
* id | Indicates the API input event at Extole that can be used for debugging. |
Track Offline Purchases - File Upload
If you are looking for a low-technical-lift alternative to API calls, then you can leverage Extole’s batch processing functionality. You can compile all your purchases onto a CSV file and upload the file for processing directly from your My Extole account.
To upload a file, complete the following steps:
- Go to Tech Center > Batch Jobs
- Click + New Batch Job
- Descriptively name your file
- Drag and drop or browse for your file (your file must have an extension of CSV, PSV, or JSON)
- Save the job (it may take some time for your file to process)
An example file looks like the following:
Event_name,first_name,last_name,email,order_id,partner_user_id,cart_value,coupon_code,product
purchased,Julio,Jones,[email protected],302002754,200728,654.35,RAF507509,“sku01,sku02”
purchased,Caitlyn,Wong,[email protected],304002876,201354,498.35,RAF507588,“sku03,sku02”
purchased,Debbie,Allman,[email protected],302001984,288753,1123.35,RAF988765,“sku03,sku02”
If you would like to upload your file programmatically, you can set up SFTP access. Navigate to the Tech Center main hub and click the + New Server button. You can follow the step-by-step instructions found in the Extole's SFTP Server guide.
Reward your Customers
Your Refer A Friend programs can be configured to reward your advocates and friends with any combination of reward types. These could be either coupons, account credits, gift cards, etc.
Reward Types
Read about Extole reward types in our Product Docs Rewards Overview.
To reward the friends with coupons, the coupon reward supplier will be created from the Rewards page in My Extole. Once the coupon reward supplier is created, coupons can be uploaded via a headless, single-column CSV. You have the ability to subscribe to reward alerts, which will notify you when the rewards fall below your threshold.
Retrieve your Marketing Opt-ins
Your referral program will typically have a checkbox on the advocate share experience and the friend email landing experience allowing the friend to opt in to marketing messages by accepting. After optin, you’ll be able to send additional marketing to these customers beyond the referral program.
Extole is able to push these new opt-ins to your email marketing platform by pushing a file via SFTP server or by calling out to your API at Braze, Klaviyo, etc.
Design your Experience
Your entire referral consumer experience can be configured in the My Extole Campaign Editor. This part of setting up the solution can be done entirely by your marketing and creative team and doesn't require technical involvement. Each template is a comprehensive guide for your designer or marketer to customize.
Creatives are organized in a manner that is easy to understand. For Refer A Friend programs, all creatives that are part of the advocate experience can be found under the advocate tab of your campaign. Similarly, those creatives the friends interact with can be found under the friend tab of your campaign.
Recommended Additional Steps
Product and Category Sharing
If you want to enable advocates to share specific products, then the product_page
marketing tag may be placed on your category and product pages to allow advocates to share specific categories or products. Extole will read the Facebook OpenGraph meta tags off of the page and incorporate the product name, description, and image into the share message.
Add Web Analytics Tracking Parameters
You can set up Extole to send web tracking information to various web and email analytics tools through the use of URL parameters.
URL parameters for Google Analytics, Adobe Analytics, etc. can typically be added directly by your marketing or IT team using the Campaign Edit screens.
When passing URL parameters for analytics, there are two configurable destination URLs that can be used:
- Promote Destination: This is where advocates go when they click on a promotion. You can send them to an Extole-hosted zone (such as the advocate Microsite) or to an external URL that you host.
- Share Destination: This is where friends go when they click on a share link. You can send them to an Extole-hosted zone (such as the Friend Landing Experience Microsite) or to an external URL that you host.
When sending advocates or friends to external URLs that you host, you will typically add parameters such as:
Parameter | Type | Description | Example Value(s) |
---|---|---|---|
utm_campaign | static | Specific marketing campaign - we recommend using the label of your Extole program | refer-a-friend |
utm_source | static | Where the traffic is coming from - we recommend including "Extole" for share links | extole_friend |
utm_medium | dynamic | Type of traffic - we recommend using the share channel for share links | EMAIL , SHARE_LINK , FACEBOOK |
Uncommon Additional Steps
Below are some of the topics regarding parts of the process that aren't requirements for most retail experiences, but might be for yours.
Cancellations and Returns
After a referred friend makes a qualifying purchase, Extole will automatically email the advocate a reward after a period of time (typically 3 days). If you have a high return rate for your business, you can send Extole the list of canceled transactions and those orders will not be rewarded. An alternative option would be to reward on shipped events.
To cancel a reward, provide Extole the order numbers that have been canceled before the pending window is over through our API. You can send Extole all cancellations and Extole will discard any that don't match a referral.
An example for sending a canceled event to Extole is as follows:
POST https://api.extole.io/v5/events
{
"event_name": "canceled",
"data": {
"order_id": REPLACE, // REQUIRED DYNAMIC VALUE
"partner_canceled_id": REPLACE // RECOMMENDED DYNAMIC VALUE
}
}
event_name | “Canceled” indicates this event cancels an order from being rewarded. If there is no matching referred purchase for the order_id the event is ignored. |
order_id required | In the event call, this is YOUR order number that uniquely identifies the purchase. This maps the canceled event to the purchase event. E.g., 122948302lala |
partner_canceled_id recommended | In the event call, this indicates the unique identifier of the returned or canceled event (depending on whether you are firing a returned or canceled event). E.g., 10000 |
Use Your Opt-out List
All emails sent by Extole are CAN-SPAM compliant and honor customer preferences. Referral programs are typically treated as their own segment of emails unique from the normal marketing opt-out list, making this step optional. Each email sent to an advocate or friend will include an unsubscribe link, managed by Extole, that will opt the customer out of the referral program.
If you need to do a more complex opt-out synchronization, Extole can check your opt-out list with a webhook API, or you can upload a list of opt-outs to Extole's SFTP server.
Updated 29 days ago