Growth marketing · Interactive lesson
The Attribution Simulator
One user, one purchase, four reporting panels. Build the journey, press play, and watch who takes credit.
Pick a scenario, press Play, then tweak the settings.
"Via" = where did the user come from right before this event? If you pick an ad, a new ad touch is created and attribution windows move with it.
Window = how long after a click an event can still be credited to that ad.
Try this: set the Meta window to 1 day; a day-2 purchase disappears from Meta. Set it to 28; it comes back.
AFAppsFlyer
GGoogle Ads
fMeta
GAGA4 - "first source" report
1 · No view-through: Meta in reality uses 7-day click + 1-day view; the case where someone saw the ad, did not click, and Meta still counted it is not modeled here.
2 · Meta 28 days "(legacy model)": the 28-day click window was removed in 2021; it is kept here only as a teaching lever to exaggerate what windows do.
3 · The GA4 panel models the "first user source" report: GA4's default event attribution is actually "last click (excluding direct)" and session source can catch campaign sessions. But purchase sessions are often direct opens, so share drifts toward "direct" over time in both session and first dimensions - untracked and privacy-masked traffic sit in that pool too.
4 · On iOS, GA4 is not 100% direct: AppsFlyer to GA4 iOS feeds and improving measurement attribute some traffic to its real source (in our data the iOS Google share rose to ~9%); that is why the simulation softens the line to "mostly (direct)".
5 · AppsFlyer install attribution is permanent: once an install is written to a source, every later event for that user (including a day-113 purchase) stays tied to that source for life; the "re-attribution window" does not erase history - it only limits how long a new touch can take over the credit.
6 · Unclaimed-pool shares are illustrative: the composition bar is an educational estimate derived from the selected scenario, not a real measurement.
7 · Other simplifications: day-level time resolution, collapsing AppsFlyer's probabilistic/SKAN modeling on iOS into a single label, and excluding Google view-through conversions.
This is a simulation. Your account is not.
The same window mismatches, double counting, and unclaimed pools are running in your real data right now. VEOtool finds them and turns them into a fix list.
