Lifetimely: Post Purchase Survey
Post Purchase Survey
At a glance
Post-purchase survey collects one self-reported acquisition answer from customers on the Shopify Thank You page, then groups responses by answer with response, revenue, and order-value metrics. Use it to learn which discovery sources customers remember and compare that stated attribution with tracked attribution—not as a replacement for it.
Availability and data freshness
Availability and prerequisites: The report requires Attribution access through an included plan, access override, or active 90-day trial. To collect data, publish the survey and add the Lifetimely Attribution Survey block to the Shopify Thank You page in Shopify Admin's checkout configuration. The active implementation is Shopify-specific.
Freshness and history: The direct-navigation fallback is seven days ago through yesterday in the store timezone; a date range previously selected in another report can override it. Survey events are ingested asynchronously from the survey CDN, but no processing SLA or earliest historical date is published. The report query is cached in the browser for 60 seconds.
On this page
- Open and publish the survey
- Use the results controls
- Understand what goes into each number
- Interpret the metrics
- Resolve missing or different results
Open and publish the survey
- Open Attribution > Post Purchase Survey (
/attribution/post_purchase_survey). - Select Survey setup. A store with an active survey opens on Survey results by default; otherwise it opens on Survey setup.
- In Shopify Admin's checkout configuration, add the Lifetimely Attribution Survey block to the Thank You page. The setup screen links directly to the applicable Shopify Admin page and provides separate instructions for stores that have not upgraded to Shopify checkout extensibility.
- Configure the survey, select Preview, save the changes, and turn Publish on.
Survey setup controls
- Survey question: Defaults to “How did you hear about us?”.
- Answers: The initial choices are Facebook, Instagram, TikTok, Google Ads, Email, SMS, and Friend. Hide or reorder any choice. Choices added by the merchant can also be renamed or deleted and are limited to 48 characters; the initial choices can be hidden but not renamed or deleted in the current editor.
- Randomise order of answers: On by default. When enabled, the visible choices are shuffled for each survey load to reduce position bias; otherwise their configured order is used.
- Button text: Defaults to “Submit”.
- Confirmation message heading/body: Shown after a successful submission.
- Editor / Preview: Preview simulates the Shopify order-confirmation page and lets you test selecting one radio-button answer and submitting it. Preview activity does not create report data.
- Save changes: Saves edited content. Saving does not publish an inactive survey; changes to an already active survey are presented to subsequent checkout viewers.
- Publish: Makes or removes the survey configuration from the Shopify checkout experience. Publishing alone is insufficient if the Lifetimely block has not been added to the Thank You page.
A customer can select exactly one visible answer. The submit button remains unavailable until an answer is selected. The active collection implementation stores one latest survey record per order; submitting replaces that order's view-only state with its selected answer.
Caution: Renaming or deleting a merchant-created answer does not rewrite the answer text already stored with prior responses.
Use the results controls
Select Survey results. The page does not expose attribution model, window, platform, or complex report filters.
- Time period: Select custom dates or Last 6 months, Last 12 months, This year, or a “Since [year]” preset. Future dates are unavailable. The selected range is remembered and shared with other reports that use the common report date picker.
- Audience: All (default), New customers, or Returning customers. This audience classification is period-relative; see How dates and audience affect the result.
Other features available on this page
- Summary cards: Views, Responses, and Response Rate cover the selected period. Each card also shows change from the immediately preceding period of the same elapsed duration. The comparison is automatic and cannot be changed or hidden.
- Survey responses charts: A column chart ranks answers by response count; a donut chart shows each answer's share of submitted responses.
- Response table: One row per nonblank answer, ordered by response count descending. The current table has no visible sorting, drill-down, search, or pagination controls.
- CSV export: Exports all returned answer rows for the active time period and audience with Response, Count, % of total, Revenue, and AOV columns. Summary cards are not included.
- Ask AI: Passes the loaded report result to the embedded analyst so you can ask follow-up questions about the survey data.
Data contract: what goes into each number
The report uses Lifetimely's own Shopify post-purchase survey events and Shopify orders. It does not include answers imported from Fairing, KnoCommerce, Triple Whale, or another survey provider.
Where the data comes from
| Report section | Data used |
|---|---|
| Views and Responses cards | The latest stored Lifetimely survey event for each order. A view has a blank answer; a submission has a nonblank answer. Events are grouped by order, so the cards count orders rather than raw page-load events. |
| Response chart and Count / % of total | Nonblank answer text from survey submissions that can be joined to a Shopify order qualifying for the selected period and audience. One row represents one exact answer string. |
| Revenue and AOV | The joined Shopify order's current total price and order currency, converted to the store display currency using rates for the order processing date. |
Because storage keeps the latest event per shop and order, repeated Thank You page loads do not remain as independently countable impressions. A later submitted response replaces the earlier blank view for that order. Consequently, Views is effectively the number of distinct orders with a recorded survey event, and Responses is the subset whose latest event contains an answer.
How dates and audience affect the result
- Survey inclusion uses the event's
updated_at: initially the view time, or the later submission time after an answer is submitted. - The response breakdown additionally requires the associated Shopify order's
processed_atto fall within the same selected range. Revenue is therefore attached to the original surveyed order only; later orders from the respondent are not included. - Date boundaries sent by the page are constructed in the store timezone. The request includes a display timezone, but the current calculation does not otherwise apply that field.
- All card totals use survey-event time even when the order cannot be joined. This means Views or Responses cards can exceed the total represented by answer rows when a response was submitted in the range for an order processed outside it.
- New customers means the customer's earliest order within the selected range. It does not verify that this was the customer's lifetime first order.
- Returning customers means a later order by that customer within the selected range. A customer with only one order in the selected range is classified as New here even if they purchased before the range.
- Audience filtering cannot classify survey records without a qualifying joined order/customer. Changing the date range can therefore change both which orders qualify and whether the same order is labeled New or Returning.
- The automatic comparison uses an adjacent period with the same timestamp duration.
Caution: Do not use the New/Returning split as a lifetime customer-status report. It is calculated from orders inside the selected range and can materially misclassify established customers as New.
Check how a value was calculated
- Confirm the selected Time period, Audience, store, and display currency.
- Compare Responses with the sum of Count rows. If they differ, check whether submissions occurred in the range for orders processed outside it; cards and rows do not use identical order-join rules.
- For an answer row, identify the surveyed Shopify orders with that exact saved answer. Count each qualifying order once.
- Compare Revenue with those orders' current total prices, converted on each order's processing date. Divide that total by Count to verify AOV.
- If the audience split looks wrong, expand the range and check the customer's orders. The classification only sees orders in the selected period.
- Use UTM Explorer separately to compare tracked source attribution; do not expect its source rows to reconcile one-to-one with self-reported answers.
Metrics and calculations
| Field | Definition |
|---|---|
| Views | Count of distinct order IDs whose latest stored survey event falls in the selected period and audience. This is not a count of every page load. |
| Responses | Views whose latest stored survey event has a nonblank answer. One surveyed order can contribute at most one response. |
| Response Rate | Responses / Views × 100, displayed to two decimal places by the API. When Views is zero, the rate is 0. |
| Comparison % | (selected-period value − previous-period value) / previous-period value × 100, displayed as a rounded whole percent on the card. When the previous value is zero, the UI receives 0% change. Response Rate comparison applies the same formula to the two rates. |
| Response | Exact saved answer label. Blank answers are excluded. Labels that differ by spelling or case form separate rows. |
| Count | Number of qualifying submitted survey/order records with that answer. |
| % of total | Count / all qualifying nonblank responses × 100, displayed as a whole percent in the table and export. Rounded row percentages need not total exactly 100%. |
| Revenue | Sum of current_total_price for the original Shopify orders associated with the answer, converted to display currency on each order's processing date. The current query does not separately subtract later refunds. |
| AOV | Revenue / Count. Because one latest answer is stored per order, Count is the number of associated surveyed orders in the row. |
Example: Suppose 200 distinct orders have a latest survey event in the range and 80 contain an answer. Response Rate is 80 / 200 × 100 = 40%. If “Podcast” has 20 qualifying responses, its share is 20 / 80 × 100 = 25%. If those 20 original orders total $2,000 after conversion, Revenue is $2,000 and AOV is $2,000 / 20 = $100.
This result says 25% of respondents selected Podcast, not that 25% of all customers came from podcasts. Nonrespondents are excluded from answer share, and respondents are a self-selected subset of buyers.
Resolve missing or different results
The survey is published but customers do not see it
- Confirm the Lifetimely Attribution Survey block is installed on Shopify's Thank You page; publishing in Lifetimely does not install the block.
- Confirm Publish remains on and at least one answer is visible.
- Allow for the survey configuration's CDN cache, which is configured with a 60-second maximum age.
- Use Preview to validate content only. Preview does not prove that the Shopify block is installed and does not create views or responses.
Responses do not equal the table total
Cards group survey events by order and, for All, do not require the order to be inside the selected range. Table rows require both a nonblank response timestamp and its order processing timestamp inside the range. A late response to an older order can therefore appear in Responses but not in the table.
New and Returning totals look unexpected
The report finds each customer's earliest order only among orders in the selected range. Widening or moving the range can reclassify the same customer. Use a customer/order-history report when lifetime first-order status is required.
Revenue differs from sales or attribution reports
- Survey Revenue uses the current total price of the original order linked to each response. It does not distribute credit across touches or include respondents' later orders.
- UTM Explorer uses tracked Shopify visits plus an attribution model and window; survey answers are self-reported and can legitimately disagree because of recall, missing tracking, and different category names.
Data is missing or delayed
Confirm that the survey was active and installed during the selected period, then check for qualifying Shopify orders in that same range. Lifetimely does not publish an ingestion SLA or historical start date.
Next actions
- Compare survey answers with tracked sources in UTM Explorer.
- Keep answer labels stable long enough to build a useful sample, and report both Count and % of total before changing acquisition spend.