Documentation Integration API Reference Android SDK SwedTrack Attribution Web SDK Publishers Advertisers Log in Get Started
SwedTrack Attribution

Track installs and events in your app, in real time.

Private mobile attribution SDK for advertisers running app campaigns on AdswedMedia. Conversions flow directly into the AdswedMedia publisher payout pipeline — no external MMP, no separate billing, no postback URLs to wire up.

Android SDKInstall ReferrerHMAC-SHA256Bridge to publisher payouts
Overview

What it is, what it isn't.

SwedTrack is a mobile attribution platform built into AdswedMedia, for AdswedMedia advertisers only. Like Adjust or AppsFlyer, it tracks installs and in-app events from your mobile apps. Unlike them, conversions don't fire postbacks to third-party ad networks — they bridge straight into the AdswedMedia campaign system that already credits and pays your publishers.

What SwedTrack does: measure installs, attribute them to the original click, fire your in-app events, and tell AdswedMedia internally so the publisher who sent the user gets paid.

What SwedTrack does NOT do: set payouts, manage budgets, expose your data to third parties, or send postbacks to external ad networks. Payout amounts continue to live in your campaign create flow — SwedTrack reads the configured bid and credits the publisher with exactly that amount.

Get started

Six steps from signup to first paid install.

StepWhat you doWhere
1Register your app — name, package name, platform/advertiser/swedtrack/apps/create
2Copy the app_token and app_secret shown after creationApp detail · SDK tab
3Define in-app events you want to track (purchase, level_5, registration…)App detail · Events tab
4Create one or more tracking linksApp detail · Tracking Links tab
5Integrate the SDK — Android: drop-in Kotlin module. iOS: fire signed HTTP calls directly (no native iOS SDK yet, see Custom HTTP integration in the Android guide for the request shape).Android guide
6Paste your tracking link with ?user_id=[[userId]] into the URL field of the ManualOffer publishers seeYour campaign / ManualOffer URL field
Step 6 is the bridge. Without it the SDK still fires installs, but no publisher will be credited because there's no upstream click to match. See how the bridge works below.
Architecture

How attribution decides who gets credit.

For every install, SwedTrack walks three matching strategies in order. The first match wins. No time windows — a click from any point in time matches if the device IDs line up.

1
Install Referrer (Android — gold standard)

The Play Store passes a referrer string to the freshly installed app containing the original click ID. The SDK reads it via Google's Install Referrer API and we attribute deterministically. No GAID needed.

2
Deterministic GAID / IDFA match

Click row carries the user's advertising ID; the SDK (Android) or your HTTP call (iOS) reports the same ID on first launch. Newest click wins on tie.

iOS note: only available if you fire a signed HTTP install with the IDFA — there is no native iOS SDK to capture it automatically yet.

3
Probabilistic fingerprint

If GAID is unavailable, match by hashed IP + hashed User-Agent. Newest click wins on tie.

0
Organic

No click matched. Install is recorded but no publisher is credited (there is none to credit).

One install per device per app, forever. The first install wins — uninstall + reinstall will be deduplicated against the original install row. This protects publishers from advertisers retroactively rejecting paid installs.
The bridge

How SwedTrack credits publishers automatically.

SwedTrack is built into AdswedMedia, so it skips the external-postback dance entirely. The publisher payout pipeline is the existing AdswedMedia ManualOffer system — SwedTrack just hands off conversions to it.

#StepWho
1Publisher's user clicks your offer in an offerwallAdswedMedia
2ManualOfferLog is created with a unique user_id token TAdswedMedia
3User is redirected to your SwedTrack tracking link with ?user_id=T substituted inAdswedMedia → SwedTrack
4SwedTrack /t/{token} stores T on the click row, redirects user to Play Store / App StoreSwedTrack
5User installs your app, SDK fires the install eventSDK
6SwedTrack attributes the install to the click, resolves the ManualOffer's configured payoutSwedTrack
7Bridge POSTs the conversion into AdswedMedia's manual-offer verifier → ClaimHistory row created → publisher's balance increasesSwedTrack → AdswedMedia

The URL macro is critical. When you create the ManualOffer that publishers see, paste your SwedTrack tracking link as the destination URL with the upstream token macro:

destination URL
https://pro.adswedmedia.com/t/{your_link_token}?user_id=[[userId]]

AdswedMedia replaces [[userId]] with the publisher's ManualOfferLog.token at click time. SwedTrack stores it, and the bridge uses it later to credit the right publisher. Without the macro, installs are recorded but no publisher is credited.

Per-event deadlines. For events with a deadline (e.g. "complete level 10 in 30 days"), late events are still logged for analytics but flagged is_late=1 and skipped by the bridge — publishers don't get paid for events that arrive past your deadline. Events without a deadline always count.
Anti-tamper

What protects you and your publishers.

RuleWhat it does
hmac_signatureEvery SDK request must be signed with your app_secret using HMAC-SHA256 over the canonical sorted query string plus |nonce|timestamp. Tampered or unsigned requests are rejected with 401.
timestamp_windowThe request timestamp must be within ±10 minutes of server time. Larger drifts are rejected (protects against captured-and-replayed bundles from days/weeks later).
replay_nonceEach request needs a unique nonce (8–40 chars). Reused nonces are rejected via a per-app UNIQUE constraint. Nonces expire after 30 minutes; expired rows are cleaned up opportunistically (~10% of requests).
first_install_onlyOne install row per (app, gaid|idfa). Uninstall + reinstall does not create a new conversion — the publisher who got the original install keeps the credit.
event_history_lockedOnce an event has fired at least once, the advertiser can no longer delete it (would lose history) and can no longer flip is_unique retroactively.
upstream_token_validatedThe ?user_id=… value is validated against a strict charset; unsubstituted macros and garbage are dropped (treated as organic).
payout_resolved_server_sideThe publisher payout amount comes from the ManualOffer's configured bid, not from anything the SDK or the bridge claims. Advertisers can't pay publishers less than the bid by lying in the SDK payload.
No time windows anywhere. SwedTrack does not impose 7-day, 30-day, or any other attribution window. The advertiser sets per-event deadlines explicitly when that's part of the offer (e.g. "level 10 in 30 days"). Otherwise, a real install always counts.
Compliance

GDPR + privacy by default.

The SDK is dormant until you call SwedTrack.setUserConsent(true). Before consent no data is collected and no network requests are made.

Stored data per click: ULID click id, link id, app id, GAID or IDFA (if opted in), device model, OS version, language, country code (from Cloudflare CF-IPCountry header), sha1(IP) binary hash, sha1(User-Agent) binary hash, optional pub-side sub1sub5, and the upstream publisher token. The raw IP and raw User-Agent are never persisted.

Stored data per install: ULID install id, attribution method (referrer/deterministic/fingerprint/organic), GAID/IDFA, device model, OS version, country, click-to-install time, and fraud flags.

Retention: rows are currently kept indefinitely — there is no scheduled cleanup job at this time. If you operate in a region with hard retention limits (GDPR Art. 5(1)(e), CCPA), open a ticket to coordinate deletion.