Post-purchase survey: how did you hear about us?
Install and configure the DataFirefly post-purchase survey module: question on the confirmation page, email reminder and attribution report per channel.
The DataFirefly Post-Purchase Survey module asks “How did you hear about us?” on the order confirmation page, then compares every declared channel with the revenue it brings. This documentation covers installation, settings, the email reminder and how to read the report.
Installation
In the back office, go to Modules > Module Manager, click Upload a module and send the ZIP file. At install the module creates its tables, adds eleven ready-made answers in the languages of your shop and registers the Orders > Attribution survey tab.
Only orders placed after the installation appear in the report: the tracking row is created when the order is validated.
Survey settings
Open the module configuration (Configure button in the module manager).
- Question: the text shown above the answers, entered per language.
- Thank you message: replaces the block once the answer is sent.
- Ask: all customers, or new customers only (first order).
- Shuffle answer options: changes the order on every display to limit the bias toward the first options. Answers marked “Always last” stay at the end.
- Do not ask again for: number of days during which a customer who already answered is not asked again. Set 0 to ask on every order.
- Also show in order history: a customer who did not answer finds the question again in the order details of their account.
- Detect traffic source: see the dedicated section below.
A preview of the front-office block is shown under the form.
Managing the answers
The Manage answer options button, in the configuration page and in the report toolbar, opens the list of answers offered to the customer. For each answer:
- Label per language, up to 128 characters;
- Ask for details: opens a free text field when the customer picks that answer (useful for “Other”);
- Always last: the answer stays at the end of the list even when the order is shuffled;
- Color: used in the report charts;
- Enabled and position by drag and drop;
- Shops: in multistore, tick the shops where the answer is offered.
Deleting an answer does not delete the answers already received: they remain in the report under “Deleted answer”.
Email reminder
The reminder sends a single email to customers who did not answer. Every answer is a link: the click records the answer and opens a thank-you page, with no form and no login.
Settings
- Send a reminder: enables the feature.
- Email subject: entered per language.
- Send after: delay in hours after the order (72 by default).
- Ignore orders older than: prevents a mass mailing on your history the first time the reminder is enabled (30 days by default).
- Emails per run: cap for each cron execution.
- Paid orders only: skips orders that are not validated.
Cron task
The configuration page shows a token-protected URL. Call it once a day, for example:
0 9 * * * curl -s "https://your-shop.com/module/dfpostpurchasesurvey/cron?token=YOUR_TOKEN" >/dev/null
The response reports how many emails were sent, skipped and failed. Two buttons also let you send a test email to your employee address and run the queue manually.
A cart split into several orders triggers a single email, and the answer is recorded for every order of that cart.
Attribution report
Tab Orders > Attribution survey. Pick a period, the type of customers (all, new, returning) and the “Paid orders only” option.
Indicators
Tracked orders, answers, response rate, tax-excluded revenue and revenue of answered orders, each compared with the previous period of equal length.
Table per channel
- % of answers and % of revenue: the declared mix and the revenue mix.
- Index: the ratio between the two, based at 100. Above 100, the channel brings larger baskets than average.
- Estimated revenue: applies the observed mix to all tracked orders, including customers who did not answer.
Amounts are tax excluded, converted to the default currency of the shop. The Export CSV button produces one line per order with the declared channel, the details, the revenue, the detected source and the collection channel (confirmation page or email).
Traffic source detection
Disabled by default. Once enabled, the module keeps the first UTM source (utm_source, utm_medium, utm_campaign), the usual advertising click identifiers or the referring site of the visit, and stores them in the existing shop session cookie. No third-party script is loaded and no data leaves the shop.
The report then shows a cross table of declared channel against detected source, and the share of answers with no detectable source, which is exactly the sales volume that cookie-based tracking cannot see.
This option writes source information into a session cookie. Mention it in your cookie policy before enabling it.
Order page and dashboard
The back-office order page shows a panel with the customer answer, the details, a “First order” badge when relevant and the detected source. The PrestaShop dashboard shows the top 5 channels of the selected period.
GDPR
The module implements the official psgdpr hooks: a customer data export includes their answers, and an erasure request anonymises the matching rows (customer detached, free text and campaign cleared) while keeping the answer in the statistics.
Updating
Upload the new ZIP through the module manager. The upgrade scripts add the required columns and tables, register the new hooks and associate existing answers with every shop. No data is lost.
Troubleshooting
The block does not appear on the confirmation page
Check that the module is hooked on displayOrderConfirmation, that at least one answer is enabled for that shop, and that the customer has not already answered or skipped. If targeting is set to “New customers only”, a returning customer sees nothing.
Reminder emails are not sent
Test the sending first with the test email button: it uses the mail settings of the shop. Then check that the reminder is enabled, that the cron calls the URL with the right token, and that some orders match the delay and maximum age conditions.
The report is empty
Only orders placed after the installation are counted. Widen the period, and untick “Paid orders only” if your orders are awaiting payment.