Heardabout
Ask how they heard about you, then see the revenue behind every answer.
A short survey on the thank-you page — how did you hear about us, an NPS question, a free-text box — with each answer tied to the order it came with, and counted only once Shopify confirms that order.

- Status
- In development
- Category
- Shopper input
- Built with
- Checkout UI extension · Webhooks · GraphQL Admin
What it does
- One live survey per store, up to three questions: multiple choice, a 0–10 NPS score, or free text
- Renders as a block on the thank-you page, and hides itself if the order has already answered
- Each answer is tied to its order, and counts only once the orders/create webhook has confirmed that order
- Revenue, share and response rate per answer, plus the NPS score with promoters, passives and detractors
- CSV export of confirmed answers with the order reference, total and currency
On this page
Heardabout puts a short survey on the order confirmation page and joins every answer to the order it belongs to. The dashboard then answers a question an ad platform cannot answer for you: of the people who actually paid, how many say they came from where, and what did they spend. It is in development and not yet on the App Store.
Every store eventually asks the same question about its marketing: where did these customers actually come from? Every ad platform has an answer, every answer is generous to the platform giving it, and the totals add up to more customers than the store has.
The problem this solves
Attribution software works from the outside in. It watches clicks, cookies and landing pages, and then assigns credit by a rule somebody chose. That works for the click that happened on the same device a minute before the purchase. It does not work for the podcast someone heard in the car, the friend who recommended the brand over dinner, or the video they watched on a phone and then remembered on a laptop a week later.
There is one person who knows how a customer heard about a store, and it is the customer. The cheapest attribution model there is, and the only one that reaches word of mouth, is to ask them — at the moment they are most willing to answer, which is right after they paid.
Heardabout asks. It puts a short survey on the thank-you page, keeps each answer against the order it came with, and reports the answers weighted by what those orders were worth.
What the first release does
A merchant builds one survey of up to three questions. Each question is one of three kinds:
- Multiple choice, with two to ten options. The default is “How did you hear about us?” with Instagram, Facebook, TikTok, Google search, Friend or family, and Other.
- NPS, the standard 0 to 10 “how likely are you to recommend us” score.
- Free text, up to 500 characters, for the answer no option list predicted.
Each question can be required or optional. One survey is live per store at a time: turning a survey on turns the others off, which keeps the dashboard from mixing answers to two different question sets.
The survey renders as a checkout UI extension block on the order confirmation page. It reads the order it is sitting under, asks the app whether that order already has an answer, and simply does not appear if it does, if no survey is live, or if anything goes wrong while loading. A broken survey that shows an error on a thank-you page costs more goodwill than a missing one.
Why an answer waits for its order
This is the part of the design that matters most, and it is invisible from the outside.
The thank-you page is a browser. Anything a browser sends can be sent again, sent twice, or sent for an order that does not exist. If the dashboard counted every answer the moment it arrived, its revenue figures would rest on the browser’s word.
So Heardabout keeps two separate records. The first is the answer, stored with
the order ID and confirmation number the checkout reported. The second comes
from Shopify itself: every time the store receives an order, the
orders/create webhook records that order’s ID, total and currency. The
dashboard joins the two when it reads them. An answer whose order has not
arrived through the webhook is shown as pending and is not counted — not in
the shares, not in the revenue, not in the CSV.
The order of arrival does not matter. If the answer lands first, it waits as pending and starts counting the moment the order is recorded. If the order lands first, the answer counts as soon as it is stored. If the webhook never arrives at all, the answer stays pending rather than being guessed into the totals.
Duplicates are refused at the same layer. The database allows one answer per order, so a second submission for the same order is acknowledged and dropped. A webhook that Shopify delivers twice is recorded once, because the job writes by order ID and the background queue ignores an event ID it has already seen.
What the dashboard reports
For the live survey, the dashboard shows the number of confirmed answers, the number still pending, the revenue of the orders that answered, and a response rate — confirmed answers divided by the orders the store received since the survey was created.
Then, question by question:
- Choice questions show each option’s count, its share of answers, and the revenue of the orders that picked it. This is the figure that changes decisions: a channel that brings few customers who spend a lot reads very differently from one that brings many who spend little.
- NPS questions show the score, with promoters (9 and 10), passives and detractors (0 to 6) counted separately.
- Text questions show the ten most recent answers.
The CSV export carries one row per confirmed answer: the date, the order reference, the order ID, one column per question, the order total and the currency. Cells are escaped so that a free-text answer beginning with an equals sign cannot run as a spreadsheet formula when the file is opened.
What it deliberately keeps small
The survey collects answers, not identities. It stores no name, email address or postal address. When the shopper is logged in to a customer account, the app keeps their Shopify customer ID next to the answer, so that a customer’s request to be forgotten can find every answer they gave. A guest checkout carries no customer ID; those answers are found through the order IDs Shopify lists in the same request.
The order record is the minimum the reporting needs: an ID, a total and a currency. No line items, no address, no payment detail. Even the background job that records it receives only those fields, rather than the whole order.
What it does not do yet
Being clear about the edges of a first release is cheaper than discovering them on a live store.
- The survey appears on the thank-you page only. The order status page, which a customer can revisit later, does not show it yet.
- The export holds the checkout’s confirmation number, which is not the same as the order name a merchant sees in the admin.
- Revenue is the total at the moment the order was placed. Refunds are not subtracted, and a store selling in several currencies sees totals that have not been converted to one.
- The settings page has toggles for email notifications and a weekly digest. Neither sends anything yet.
- It has been built and tested against a simulated Shopify, not yet against a live store, and it is not listed on the App Store.
How to judge a survey app like this
Whatever you install for this job, five questions separate a reporting tool from a vanity counter:
- Does an answer count before the order is confirmed? If it does, the revenue figures are the browser’s opinion.
- Can one order answer twice? If it can, a refreshed page doubles a channel’s share.
- Is revenue shown per answer, or only counts? Counts alone hide the difference between a channel that brings many small orders and one that brings a few large ones.
- What happens to the answers when a customer asks to be forgotten? There should be a specific answer, including for guest checkouts.
- What does it store that it does not need? A survey about how someone heard of a store has no use for their address.
Support and privacy
How to get help with Heardabout, and what it stores about your store and your customers.
Keep exploring
The catalogue in order — one step back, one step forward.
Heardabout isn't installable yet. Its progress lands in the changelog.