Opens and Clicks Aren't Revenue: Attribution on Shopify
Alexander Mercer
Sep 2, 2026
Ask most Shopify merchants which of their marketing tools produced revenue last month and you get an uncomfortable pause.
They can tell you open rates. They can tell you how many people finished the quiz, how many emails were captured by the popup, how many clicks the campaign got. None of those are money, and everyone in the room knows it.
The gap is not a reporting problem. It is an architecture one — and it is fixable.
Why the usual stack cannot answer
A typical setup has a popup app capturing emails, an email platform sending campaigns, an automation tool running sequences, and Shopify holding the orders. Four systems.
The popup app knows it captured an address. The email tool knows it sent a message and that someone clicked. Shopify knows an order was placed. Nothing knows all three.
So attribution gets approximated. The usual approximation is the discount code — if the order used code WELCOME10, credit the welcome popup. It is better than nothing, and it is wrong in both directions.
Why discount codes are the wrong signal
Discount codes undercount, because plenty of people who were genuinely influenced never use the code. They took the quiz, got the recommendation, thought about it for a week and came back and bought at full price. That is a conversion your attribution missed entirely.
They also overcount, because codes get shared. A code intended for one subscriber ends up on a voucher site, and every order using it is credited to a popup those customers never saw.
Any attribution model resting on whether a code was applied is measuring code usage, not influence. They are different things and they diverge most for the customers you care about most — the ones who buy without needing the discount.
The signal that actually works
Shopify sends an orders/paid webhook when an order is paid. The payload contains the customer's email address. If you have a record of that email interacting with something — a quiz submission, a popup capture, a campaign send — you can match the two.
That is the whole mechanism. It sounds obvious written down, and the reason more tools do not do it is that it requires one system to hold both sides. If the quiz submissions are in one vendor's database and the orders arrive at another's webhook endpoint, no match is possible.
The systems that can answer the revenue question are the ones that own the capture and receive the order. That is an architectural property, not a feature you can add later.
Getting the details right
Look for the email in more than one place
Shopify may put the customer's email in several fields depending on how the order was placed — the top-level email, the customer object, a contact email, or the billing address. Matching on only the first will silently miss a share of orders.
Normalise before matching
Trim whitespace and lower-case both sides. A surprising number of near-misses are a capitalised address on one side and a lower-case one on the other.
Read the current total, not the original
Orders get edited and partially refunded. current_total_price reflects what the order is actually worth now; total_price may be what it was when placed. Reporting the second inflates your numbers.
Decide your attribution window
If someone took a quiz eight months ago and bought today, is that the quiz's revenue? There is no universally right answer, but there is a wrong one: not deciding, and letting the default be forever.
Handle guest checkout
Not every order has a customer record. Email-based matching still works for guests, which is one of its advantages over customer-ID matching.
“Attribution that depends on a discount code being applied is measuring code usage, not influence.”
HelloDevs
What else the order event should trigger
Once you are handling orders/paid properly, attribution is only one of the things that should happen. The order is a fact that several parts of a marketing system need to know about.
The abandoned-cart record for that shopper should be closed — otherwise you are counting a recovered cart as still abandoned. Any discount issued to them should be marked as redeemed, which is what makes reissue rules enforceable. And critically, any automation still running for that shopper should stop.
That last one is the one customers notice. Being chased for three more days to buy something you bought on Monday is the most common way an otherwise good email programme annoys the people it just converted.
What this changes about how you spend
The practical value is not the dashboard. It is that you can stop guessing about budget.
A quiz that converts fewer people but produces higher order values is worth more than one with better completion rates. A popup with a modest capture rate whose subscribers buy repeatedly beats one that collects addresses that never convert. None of those comparisons are possible with engagement metrics.
It also settles internal arguments quickly, which has its own value. "The quiz produced this much revenue last month" ends a conversation that open rates keep alive indefinitely.
We built this attribution path into our own quiz app — the order event does six things at once. See Shopify app development or our work.
What to ask your vendors
One question, and the answer is revealing: "Can you show me revenue attributed to a specific quiz answer, popup or campaign — not clicks, revenue?"
Tools that own both the capture and the order webhook will show you. Tools that do not will offer you a proxy — code usage, last-click, a UTM report — and describe it as attribution.
The proxy is not useless. But knowing which one you are looking at changes how much weight you should put on it.
If you want a second opinion on what your current stack can actually prove, get in touch.
Alexander Mercer
Senior Tech Writer at HelloDevs
Alexander covers software engineering culture, design systems, and frontend developer experience. When not writing, you can find him debugging React or exploring typography design.
Stay Updated
Get raw, honest dev-first tutorials and tech blog articles delivered straight to your inbox once a week.
Our guide
- A Shopify development agency builds and maintains the parts of a store Shopify does not give you out of the box. That means custom themes, apps, integrations with your other systems, and ongoing fixes. HelloDevs does all of this and also publishes its own Shopify apps.
- Yes. We work with merchants across North America, Europe, and Asia. Our process is async-first with scheduled overlap hours, so time zones have never been a blocker for a project.
- It depends on scope. Theme customisations typically start in the low four figures; custom apps and full builds range higher. After a free audit we give you a fixed quote — no hourly surprises.
- Absolutely. Private (custom) apps are a large part of our work — from small workflow automations to full ERP integrations that only your store uses.
- Every project ships with a support window, and most clients stay on a maintenance retainer: monitoring, Shopify update compatibility, and a direct line to the same developers who built it.
- Continuity and coverage. An agency gives you review processes, backup when someone is unavailable, and accumulated platform experience across many stores — with one point of accountability.
Didn't Got your answer?
If you still have questions or need further assistance, feel free to reach out to our team. We're here to help you every step of the way.
Our talk
Let's Connect!
Tell us your requirements and get a professional developer response.




