Platforms
Runs everywhere your ads do
Every video carries its own tracking code, so you see what it earned on Meta, TikTok, YouTube, LinkedIn and AppLovin, measured on your own site.
- Meta
- TikTok
- YouTube
- Google Ads
- AppLovin
- AppsFlyer
- Shopify
- Google Tag Manager
- WordPress
- Webflow
- Meta Conversions API
- TikTok Events API
How it works
Every video gets a code. The code follows the sale.
A short code like aa_k3x9p2 rides along from the ad to the click to your checkout. No guessing from ad names, no spreadsheets.
The ad
Every approved video gets its own code, and the video runs on Meta, TikTok, YouTube or LinkedIn.
The click
The platform fills in its own ad id at click time, so the landing URL names the exact ad.
Your site
Our snippet saves a first-party visitor id, a cookie on your own domain, and a session.
The conversion
A purchase, sign-up, lead or trial on your site, or an app install through AppsFlyer.
Meta
TikTok
Google Ads and YouTube
LinkedIn, AppLovin, anything else
Click ids (fbclid, ttclid, gclid, li_fat_id and AppLovin and AppsFlyer ids) are picked up automatically.
Last click, by default
The last ad they clicked gets the credit
When someone buys, Ad Army looks back over their tagged ad clicks and credits the most recent one inside your lookback window.
- The window is 28 days by default. Pick 1, 7, 14, 28, 60 or 90 days in Setup.
- Only tagged ad clicks count. A direct visit or an organic post never steals the credit.
- A sale with no tagged click in the window is shown as Unattributed, not guessed.
TikTok click
Meta click
Purchase
The Meta video gets 100% of the $120. It was the last tagged click before the purchase. The TikTok click is still in the window, and other models can give it a share.
Attribution models
Switch the lens, keep the data
Same clicks, same sales, six ways to share the credit. Pick a model in Reports and every number updates. Try it on this journey: TikTok on day 1, YouTube on day 3, Meta on day 5.
Last click: All credit to the last tagged ad click before the conversion.
TikTok click
0%
YouTube click
0%
Meta click
100%
Credits always add up to the one order: $120, split across the videos that earned it, and each video's creator.
Time decay halves a click's weight for every 7 days before the sale. Position based gives 40% to the first click, 40% to the last, and splits 20% across the middle.
Two sources, side by side
Why our numbers and Meta's don't match
They are measuring different things. Reports show both for every video, so a gap tells you something instead of starting an argument.
What each platform claims
- View-through
- Someone saw the ad, never clicked, and bought later. Platforms count it; a click-based tracker cannot see it.
- Modeled conversions
- When people opt out of tracking, platforms estimate the conversions they would have seen.
- Cross-device
- Platforms match their own logged-in users across phone and laptop.
- Overlap
- Every platform credits itself, so one sale can show up in three dashboards.
Cross-device
Clicked on a phone, bought on a laptop
When someone logs in or checks out, the snippet hashes their email with SHA-256 right in the browser. Devices that share a hash become one person, and the laptop purchase is credited to the phone click.
Ad Army only ever receives the hash. The raw email never leaves the page, and a server event can send a hashed email or a hashed user id instead.
Monday, phone
Wednesday, laptop
Credited to the TikTok video on the phone
Creative metrics
See why a video works, not just that it did
Pulled daily for every ad from the platforms that report video data (Meta and TikTok), and rolled up to the video and the creator.
31%
3-second plays over impressions (2-second views on TikTok). Did the opening stop the scroll?
24%
ThruPlays over 3-second plays (6-second over 2-second views on TikTok). Did it keep them?
The share of plays still watching at 25, 50, 75, 95 and 100%: the retention curve for every video.
- Instagram Reels
- Facebook Feed
- Instagram Stories
Which placement each video wins, from the click's placement parameter and the platform's own breakdown.
Privacy
Built to need no personal data
Respects Do Not Track and GPC
Browsers with Do Not Track or Global Privacy Control send nothing. adarmy.optOut() wires into your consent banner.
No IP addresses or user agents
We keep only a device class (phone, tablet or desktop), and only the attribution parameters from each URL.
Hashes only
Identities arrive as SHA-256 hashes. Raw emails are never accepted, and event properties that look like contact details are dropped.
400-day retention
Clicks, sessions and site events older than 400 days are deleted automatically.
Honest limits
What it can't see
View-throughs
Someone who watched but never clicked leaves no trail on your site. The platform-reported column covers that side.
iOS app installs without AppsFlyer
Installs happen in the App Store, not on your site. Connect AppsFlyer and put the code in the ad name, and installs match by name.
Ad blockers and opted-out browsers
Some blockers stop the snippet, and we send nothing for opted-out browsers by design. Sending purchases from your server keeps your totals complete.
Setup
Live in minutes
A six-step wizard in your Ad Army workspace walks you through it, and checks off each step as the data starts arriving.
Step 1: Connect Meta ads
Read spend, delivery and video metrics per ad, per day.
Step 2: Install the snippet
One script tag on every page, with guides for HTML, Google Tag Manager, Shopify, WordPress and Webflow.
Step 3: Verify the install
Open your site from an ad click, or add ?aa_aid=test to any page, and watch it arrive.
Step 4: Paste the URL parameters
Once per Meta ad, or once before you duplicate it. TikTok, Google and LinkedIn strings are ready to copy too.
Step 5: Meta Pixel and Conversions API
Optional. Send every conversion to your pixel from our server, deduplicated with the browser Pixel.
Step 6: Send videos to Meta
Push approved videos into your ad account, already named with their tracking code.
Attribution FAQ
Questions about attribution
Do I have to rename my ads?
No. Paste the Ad Army URL parameters into each Meta ad once (or into one ad before you duplicate it) and every click names the exact ad id, even after renames. Videos you send to Meta from Ad Army are already named with their tracking code.
Will the snippet slow down my site?
No. It is about 3 KB, loads async, has no dependencies, and nothing loads from anyone but Ad Army.
Does it replace the Meta Pixel?
No, it runs alongside it. If you turn on the Conversions API, Ad Army and your browser Pixel share one event id, so Meta counts each sale once.
Which attribution model should I use?
Start with last click, the default: it is the easiest to act on. Switch to first click, linear, time decay or position based in Reports to see which videos open journeys and which close them. Nothing is re-tracked when you switch.
How long is the lookback window?
28 days by default. You can choose 1, 7, 14, 28, 60 or 90 days in Setup.
Can I send purchases from my server?
Yes. Server-to-server events take a visitor id, a hashed email or a hashed user id. The same order id or event id is never counted twice, so the browser and your server can both send a purchase.
Does it work for app installs?
Yes, through AppsFlyer. Put the video's code in the ad name on your OneLink and installs match to the video by name.