Attribution Surveys
Ask buyers how they found you and see which marketing channels actually drive sales
An attribution survey asks your customers a simple question: "How did you find out about us?" This gives you reliable first-party data about which marketing channels are actually working, beyond what pixel data and ad platform reports tell you.
Why Use Attribution Surveys?
Ad platforms grade their own performance, which can be inaccurate
Some channels like word of mouth are impossible to measure with pixels
First-party survey data helps you validate and optimize your marketing spend
Setting Up an Attribution Survey
Go to Surveys → New Survey.
Select the Attribution template (under Attribution & Discovery), or build your own.
Add a question like "How did you hear about us?" with your marketing channels as answer options.
Include an open-ended "Other" option so customers can fill in channels not listed.
Optionally add a reward question to incentivize responses.
Where to Place Your Attribution Survey
Post Purchase Page — Tracks the customers who convert and gets a high engagement rate.
First Landing Page — Casts a wide net to understand where all traffic comes from.
Post-purchase email — Reach customers after they've had time to reflect on their purchase experience.
Interpreting the Data
Once you have a meaningful number of responses:
Compare the survey results to your existing pixel data
Identify which channels actually convert to customers
Identify which channels are underperforming or overperforming
Use this data to reallocate your marketing budget
Reported Channel and Source
Zigpoll reads every answer to your attribution question and files it under a channel. There is nothing to set up. A few minutes after a response comes in, Zigpoll adds two metadata keys to it:
attribution_channel: one value from a fixed list, such asinstagram,search,podcastorword_of_mouth.attribution_source: the name the customer gave, when there is one, such as "The Daily", "@somehandle", "Wirecutter" or "ChatGPT".
Your fixed answers are mapped from their wording. "Google Search" becomes search, "Friends or family" becomes word_of_mouth, and "ChatGPT / Claude" becomes ai_assistant. This works in whatever language your options are written in. No AI model is used, and your sentiment and AI settings don't affect it.
On the Charts page the two keys are Reported Channel and Reported Source in the Answers by picker (see Reported channel and source). They are also in the Responses filter, in CSV exports as Survey Metadata: attribution_channel and Survey Metadata: attribution_source, in the Reporting API and the analyze_attribution MCP tool, and in every integration that receives response metadata: webhooks, Zapier, Make, n8n, Klaviyo, Customer.io, Iterable, Braze, Attentive, Omnisend, Segment, Shopify Flow and Google Sheets, where they arrive as two new columns. The full list of values is in Special Variables.
"Other" Write-Ins Are Read Automatically
What customers type into "Other" is read the same way as your fixed answers, so a write-in lands on the channel it belongs to instead of staying in an "Other" pile.
insta
instagram
chat gpt
ai_assistant
ChatGPT
bin schon Kunde
existing_customer
costco
retail_store
Costco
Something that matches no channel
other
The cleaned-up text of what they typed
me, don't remember, or a single period
unknown
Follow-Up Questions for the Named Source
"Podcast" tells you the channel. To learn which podcast, ask a follow-up question that only the people who picked that answer see. Zigpoll uses the follow-up's answer as the Reported Source.
For example, to send the Podcast answer to a "Which podcast?" question:
Add the follow-up directly after your attribution question. Use a Short Answer question titled "Which podcast?", or an Autocomplete question listing the shows you sponsor, with a Write-in Answer for the rest. Autocomplete keeps the spelling of the listed shows consistent.
Open the follow-up (Questions → the question → Details) and click Add Presentation Logic.
Set it to show when the attribution question = (is equal to) Podcast. For a Multiple Choice attribution question use includes any.
Click Update Question.
Do the same for any other answer that has a name behind it, such as Instagram to "Which account did you see?" or Influencer to "Who recommended us?". See Branching for how follow-ups are built.
Zigpoll recognizes a follow-up when its Presentation Logic names an answer to the attribution question. A follow-up reached through Action Logic on the attribution question (when the answer is Podcast, Skip to "Which podcast?") is recognized too, so surveys built that way need no changes. A question shown to everyone who answered the attribution question, whatever they picked, is not treated as a follow-up.
Follow-ups can be chained. If A creator on social media leads to "Where did you see the content?" (YouTube, Instagram, TikTok) and that leads to "Which creator?", the creator's name becomes the Reported Source, and the platform is used when no name was given. The deepest answer wins.
When the picked answer is only a bucket, such as Other, Social media or I don't remember, and the follow-up names a channel, the follow-up sets the Reported Channel: Other followed by "youtube" is reported as youtube. A specific pick keeps its channel; the follow-up only supplies the source.
A follow-up answer that names a platform or a tool Zigpoll knows is spelled its usual way, so "fb", "Facebook" and "FACEBOOK" are one row, and "chat gpt", "Chatgpt" and "gpt" are all ChatGPT.
Small spelling differences are folded together so one source is one row in your reports:
"the daily", "The Daily" and "THE DAILY" all become "The Daily".
"@Some.Creator" and "saw @some.creator" both become "@some.creator".
An answer longer than 40 characters, an email address or a phone number never becomes a source. Keep follow-ups short and specific ("Which podcast?") so the answers are names and not sentences.
If Your Question Isn't Detected
Zigpoll treats a question as an attribution question when three or more of its fixed answer options read as distinct channels: Instagram, Google, a friend, a podcast and so on. The title of the question doesn't have to be worded any particular way. A question that asks about habits instead of discovery, such as "Which platforms do you use most?", is not treated as one.
If Reported Channel isn't offered on the Charts page after new responses have come in, check the question's options:
Give it at least three options that each name a recognizable channel. "Instagram", "Google Search" and "Friend or family" count. "Option A", a list of product names, or a single "Social media" option next to "Other" does not.
Use a fixed-choice question. A question that is only a text box has no options to read.
If the survey has more than one attribution question, only the first one in the survey's order is used. Put the one you want reported first. A choice question that is only shown after an answer to the first one, such as "Where did you see the content?", counts as a follow-up, not as a second attribution question.
Multi-Select Attribution Questions
If customers can pick more than one answer:
When everything they picked belongs to one channel, that channel is the Reported Channel.
When they picked several different channels, the Reported Channel is
multiple, and a third key,attribution_channels, holds the channels as a comma-separated list (for exampleinstagram, podcast).
A single-choice question gives a cleaner report, because each customer names the one channel they credit most. Use multi-select when you care about every touchpoint.
Anonymous Surveys
When a survey has Anonymous mode turned on, Zigpoll writes attribution_channel only. attribution_source is never written, because it is the respondent's own words.
When the Data Appears
The keys are written about a minute after a completed response, and up to ten minutes after a partial one, so reports and integrations trail new responses by that much. Responses collected before this feature was released don't have the keys unless Zigpoll support runs a backfill for your account. Contact support if you want your history included.
Using "Other" to Decide Which Options to Add
A write-in that matches no channel is kept as other, with the cleaned-up text as its source. That turns the "Other" pile into a ranked list:
On the Charts page, open your attribution question and click the filter icon next to the date picker. Under Attribution, choose Reported Channel, then the
othervalue.In the Answers by picker, choose Reported Source.
Each row is something customers typed, with its responses, share and, where there is an order behind the response, revenue and AOV.
When the same source keeps showing up near the top, add it as a fixed answer option. If a channel such as podcast or influencer has a long list of sources under it, that answer is a good candidate for a follow-up question. Check again after a few weeks to see whether the Other row has shrunk. On the Charts page the channels are shown with readable names, so other appears as Other and word_of_mouth as Word of mouth.
For the deeper version of this — separating discovery from conversion, reconciling survey answers against your pixel data, and knowing the limits of self-reported attribution — see the full guide:
How to Measure Marketing AttributionLast updated

