Attribution

Know exactly which video made the sale.

Every Ad Army video carries its own tracking code. First-party tracking on your site follows it from the ad to the checkout, and credits the sale to the video and the creator behind it.

  • First-party, on your domain
  • Last click by default
  • Meta CAPI and TikTok Events API
  • No IP addresses stored

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
  • Facebook
  • Instagram
  • TikTok
  • YouTube
  • Google Ads
  • LinkedIn
  • 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.

  1. Step 1

    The ad

    Every approved video gets its own code, and the video runs on Meta, TikTok, YouTube or LinkedIn.

    aa_k3x9p2
  2. Step 2

    The click

    The platform fills in its own ad id at click time, so the landing URL names the exact ad.

    ?aa_aid={{ad.id}}&fbclid=…
  3. Step 3

    Your site

    Our snippet saves a first-party visitor id, a cookie on your own domain, and a session.

    <script src="/t.js">
  4. Step 4

    The conversion

    A purchase, sign-up, lead or trial on your site, or an app install through AppsFlyer.

    Purchase $49.99
  5. Step 5

    Your reports

    The sale is credited to the video, and to the creator who made it.

    +1 sale · aa_k3x9p2
Meta
aa_aid={{ad.id}} in the URL parameters
TikTok
aa_aid=__CID__ and utm_content=__CID_NAME__
Google Ads and YouTube
aa_aid={creative} in the final URL suffix
LinkedIn, AppLovin, anything else
aa=aa_k3x9p2 on the landing URL

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.
Worked example28-day lookback

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.

Example journey · one $120 order on day 6

Last click: All credit to the last tagged ad click before the conversion.

  1. TikTok click

    Day 1 · aa_t1k7ok

    0%$0

  2. YouTube click

    Day 3 · aa_y0u7be

    0%$0

  3. Meta click

    Day 5 · aa_m3ta5x

    100%$120

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.

Ad Army, first-party

What actually happened on your site

  • Counts real tagged clicks that landed on your site
  • Each order counts once, deduplicated by order id or event id
  • One model across every platform, so TikTok and Meta are compared fairly
  • Credits the exact video and creator, not just the campaign
Platform reported

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.

Feeding the algorithms

Better signal back to Meta and TikTok

Ad blockers and browser limits hide conversions from the pixel. Ad Army sends every conversion straight to your Meta Pixel through the Conversions API, and to your TikTok pixel through the Events API, server to server.

  • Shares one event id with your browser pixel, so each platform counts the sale once
  • Carries the original click id (fbc, ttclid), even when the sale happens on another device
  • Sent after your page responds, so checkout never waits on Meta
  • Only hourly sent and failed counts are kept, never the payload

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.

Hook rate

31%

3-second plays over impressions (2-second views on TikTok). Did the opening stop the scroll?

Hold rate

24%

ThruPlays over 3-second plays (6-second over 2-second views on TikTok). Did it keep them?

Completion

The share of plays still watching at 25, 50, 75, 95 and 100%: the retention curve for every video.

Placement

  • 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.

  1. Step 1: Connect Meta ads

    Read spend, delivery and video metrics per ad, per day.

  2. Step 2: Install the snippet

    One script tag on every page, with guides for HTML, Google Tag Manager, Shopify, WordPress and Webflow.

  3. Step 3: Verify the install

    Open your site from an ad click, or add ?aa_aid=test to any page, and watch it arrive.

  4. 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.

  5. Step 5: Meta Pixel and Conversions APIOptional

    Optional. Send every conversion to your pixel from our server, deduplicated with the browser Pixel.

  6. 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.

Make videos you can measure

Every video you approve arrives with its own tracking code, ready to run, with full content rights.