- A post-purchase survey asks buyers how they heard about you, so it can credit channels that leave no click, such as podcasts, creators and word of mouth.
- Ask one neutral, closed question right after the order, with answer options that do not overlap and an "Other" option at the end.
- Survey answers are self-reported and not every buyer answers, so read them next to click data, not instead of it.
- Blend the two per order, so every order still counts once and the channel totals add up to your real sales.
- In the ROASaurus Total Impact model, the survey answer gets 50% of an order when there are also clicks, and the clicks share the other 50%.
Post-purchase survey attribution means asking buyers "How did you hear about us?" right after they order, and using their answers to credit your marketing channels. It finds what click tracking cannot see: a podcast mention, a creator video, a recommendation from a friend, or an ad someone saw but did not click.
This guide explains why surveys find these channels, how to write the question and the answer options, which biases to expect, and how to combine survey answers with click data. It ends with how the Total Impact model in ROASaurus uses the survey, with a worked example.
Why do surveys catch what clicks miss?
Click-based attribution needs a trace in the browser: a click id such as fbclid or ttclid, or UTM parameters on the landing page URL. When a buyer arrives without that trace, the order looks like direct traffic, even when your marketing caused it.
Several common paths to a purchase leave no trace:
- Podcasts and radio. A listener hears the brand name and types it into a search engine days later.
- Creators and influencers. A video without a tracked link, or with a link the viewer did not use, sends people to search instead.
- Word of mouth. A friend mentions the shop over dinner. There is no URL at all.
- Dark social. Links shared in messaging apps and email often arrive without referrer data or UTM parameters, so analytics tools count them as direct visits. Marketers call this traffic dark social.
- Ads that were seen, not clicked. Meta attributes purchases to an ad when they happen within a set number of days after someone viewed or clicked it. Your own click data only sees the clicks.
- Ad clicks with a click id
- Visits with UTM parameters
- Email clicks with tracked links
- The exact campaign and ad
- Podcast and radio mentions
- Creator videos without a tracked link
- Recommendations from friends
- Ads people saw but did not click
A survey does not replace click data. Clicks are exact about which campaign and ad a visitor came from. Survey answers are vague about campaigns, but they include channels that clicks never show. Each one fills a gap in the other. For how click models split credit, see attribution models for ecommerce.
How to write the question
The standard wording is "How did you hear about us?". It is short, neutral and easy to answer on a phone. Avoid wording that suggests an answer, such as "Which of our ads did you see?". Some brands ask "Where did you first hear about us?" to focus on discovery. That works too, as long as you keep the same wording over time, so answers from different months stay comparable.
Ask on the order confirmation page, right after the purchase. The buyer has just finished checkout and the memory is fresh. A question sent days later by email depends on a memory that has faded, and on the buyer opening the email.
Choosing the answer options
Use a closed list of options rather than a free-text field. Free text is hard to count, because buyers write the same channel in many ways. The format also changes the answers themselves: in a Pew Research Center poll after the 2008 US presidential election about the issue that mattered most to voters, 58% chose the economy when it was on a list, but only 35% named it in an open question. Pick one format and keep it.
- One option per channel you spend money or time on.
- No overlap. "Social media" next to "Instagram" splits the same answer over two options.
- The words buyers use. "Facebook or Instagram" is clearer to a buyer than "Meta".
- "Other" at the end, so nobody has to pick a wrong answer.
- A short list that fits on a phone screen without scrolling.
| Answer option | Channel | Note |
|---|---|---|
| Facebook or Instagram | Meta | One option for both apps: both are Meta, and buyers may not remember which app it was. |
| TikTok | TikTok | |
| Google search | Can include people who heard about you elsewhere and then searched for your name. | |
| YouTube | YouTube | |
| A friend or family | Word of mouth | Has no click equivalent at all. |
| Email or SMS | Mostly people who already know you. | |
| Podcast or radio | Podcast | |
| Other | None | Keep it last. |
Response rates and bias: what to keep in mind
Survey answers are useful, but they are not a measurement of every order. Keep these points in mind when you read them.
Not every buyer answers
The question is optional. Only buyers who see the confirmation page and choose to answer are counted. Response rates differ by store, device and design, so measure your own: divide the number of answers by the number of orders in the same period. If many orders have no answer, the answers describe the buyers who replied, not all buyers.
Memory favors the most recent touch
Buyers answer from memory. They may remember the most recent or the most visible touch better than the first one. Someone who heard a podcast, saw three Instagram ads and then searched for your name could honestly give any of the three answers.
The order of the options
In surveys that people fill in themselves, options near the top of a list tend to be chosen more often. Pew Research Center calls this a primacy effect, and it rotates or randomizes the order of the options to reduce it. If your survey tool can randomize, use it and keep "Other" at the end. If the order is fixed, compare answer shares over time rather than reading one week as exact.
Small numbers
Ten answers are not a trend. Wait until each option has enough answers before you move budget. A change from 4 to 6 answers is noise. A change from 400 to 600 answers is a signal.
How to combine survey answers with click data
There are three common ways to use survey answers next to clicks.
- Read them side by side. Compare the share of answers per channel with the share of orders each channel gets from clicks. A channel with many answers but few clicks, such as a podcast, gets too little credit in click models.
- Check platform claims. If an ad platform reports far more purchases than the share of buyers who name it, find out why before you raise the budget.
- Blend them per order. Give each order a share for the channel the buyer named and a share for the clicks you recorded.
Blending per order keeps each order at exactly one unit of credit. The total stays equal to your real order count, which makes channels comparable. That is the problem behind the gap between Ads Manager and Shopify sales: every platform claims the same order for itself.
How ROASaurus uses the survey in Total Impact
Total Impact is one of the twelve attribution models in ROASaurus, next to last click, first click, linear, data-driven and other models. For each order it reads the ad clicks recorded for that visitor inside your lookback window (1 to 90 days, 7 by default, or unlimited) and the survey answer for the order. Then it splits the order like this:
| Situation | Survey answer gets | Clicks get |
|---|---|---|
| The answer names a channel and there are clicks | 50% | 50%, split evenly over the clicks |
| The answer names a channel and there are no clicks | 100% | Nothing |
| No answer, or the answer is Other | Nothing | 100%, split evenly over the clicks |
| No answer and no clicks | Nothing | Nothing. The order counts as direct (unattributed). |
The survey share goes to the channel the buyer named, in a row called "(survey)", because the answer names a channel but not a campaign. The click shares go to the campaigns the clicks came from.
A worked example
Here are four orders from one week, with a 7-day lookback window:
| Order | Clicks in the window | Survey answer | Credit in Total Impact |
|---|---|---|---|
| A, $120 | Meta, then Google | Podcast or radio | Podcast $60, Meta $30, Google $30 |
| B, $80 | None | A friend or family | Word of mouth $80 |
| C, $100 | TikTok | Other | TikTok $100 |
| D, $90 | Meta | Facebook or Instagram | Meta $90: $45 as "(survey)", $45 on the campaign |
Under last click, Google gets all $120 of order A, because the buyer searched just before buying. The survey shows that a podcast started it. Total Impact does not ignore the search: it keeps $30 on Google and $30 on Meta. Order C keeps its click credit, because "Other" names no channel. The total is $390 in both models, so no order is counted twice.
Which answers count
ROASaurus maps each answer to a channel by its words. "Facebook or Instagram" becomes Meta, "Google search" becomes Google, "Podcast or radio" becomes podcast, "A friend or family" becomes referral (word of mouth) and "Email or SMS" becomes email. Answers sent through the API that name Snapchat, Pinterest, Reddit, Bing or Microsoft are mapped as well. "Other", and answers that name no known channel, are not used: those orders are credited by their clicks alone. More in how attribution works.
How to set up the survey
On Shopify
ROASaurus has a survey block for the Shopify Thank you page. App blocks for that page are added in Shopify's checkout and accounts editor (Settings › Checkout, then Edit, then the Thank you page). According to Shopify, apps for the Thank you page work on the Basic plan and higher. The block asks "How did you hear about us?" with the eight options in the table above, and sends the answer with the order id to ROASaurus through a Shopify app proxy, which Shopify signs. The question and the options are fixed, which keeps the answers comparable from month to month. If you already use another survey app, you can send its answers to the surveys API described below instead.
In the attribution report, choose the model Total Impact (survey + clicks). The other models ignore the survey. Setup for the rest of the tracking is in the Shopify integration.
On other webshops
If your webshop collects the answer itself, send it to the surveys API. Create an API key under Settings › Orders API and post one request per answer:
POST /api/v1/surveys
X-Roasaurus-Key: <store key>
Authorization: Bearer <API key>
Content-Type: application/json
{
"order_id": "10482",
"question": "How did you hear about us?",
"answer": "Podcast or radio"
}Use the same order id that the order has in ROASaurus. Instead of the order id, you can pass the visitor id from the _tl cookie as visitor_id. Free-text answers are mapped by the same keyword rules as the Shopify options. See other webshops for the rest of the setup.
Sources
- Shopify Help Center: Customizing your checkout and customer accounts with apps
- Meta Business Help Center: About actions attributed to your ad
- Pew Research Center: Writing Survey Questions