When to use S2S impressions
A click link only credits users who tap your ad. Many users see an ad, don’t tap it, and install the app later from the store. Without impression data, those installs look organic. Your server reports each impression (the ad was shown) to Linkrunner. If the same device installs the app within the view-through window and there is no click to credit, Linkrunner credits the install to your impression. This is view-through attribution. It works like impression tracking in AppsFlyer and accepts the same parameter names.View-through is off by default. The advertiser turns on S2S traffic and view-through for each partner separately, and sets your view-through window. Ask them, or Linkrunner support, before you send impressions. Until then, requests are rejected with
partner_not_enabled or view_through_disabled.How it works
Postbacks work as for clicks. Your postback templates, event mapping and postback logs apply unchanged, and
{touch_type} is impression for view-through installs.
Set it up
1
Start from your campaign link
Create the link in your affiliate dashboard as usual. See Create a campaign link. You get a tracking link like this:
2
Turn it into the impression URL
Keep your parameters, and send them to
https://s2s.linkrunner.io/v1/impression/<app_id>. <app_id> is the app’s Android package name (com.example.app) or its App Store ID (id1234567890).Then add the device ID (gaid or idfa, required), the time of the impression, and optionally a shorter view-through window:tid is your ID for this impression. Use a value that is unique per impression, not your click ID.3
Fire it from your server when the ad is shown
Replace your macros and call the URL with
GET when the impression happens. A 200 with "status":"accepted" means the impression is recorded. See retries for the other responses.4
Test it end to end
Send one impression with the GAID of a test device. Don’t tap any ad on that device. Install and open the app within the window. The install postback arrives with your
tid and {touch_type} = impression. Check it in Postback logs.Coming from AppsFlyer
If you already send impressions to AppsFlyer, you can reuse that template. Only the host andc change.
An AppsFlyer template like this:
Retries
Retrying is safe. The sametid for the same campaign always returns the same impression_id and is stored once.
- Retry
429and503, after theRetry-Afterdelay. - Don’t retry other
4xxresponses. Fix the request instead. Thereasontells you what’s wrong.
Troubleshooting
Requests returnmissing_device_id.
Impressions need a gaid or idfa. Unlike S2S clicks, an IP address alone is not enough. An all-zero ID counts as missing.
Requests return partner_not_enabled or view_through_disabled.
The advertiser hasn’t turned on S2S traffic, or view-through, for your partner account on this app. Changes take up to 5 minutes to apply.
Requests return impression_too_old.
impression_time is more than 24 hours ago. Send impressions as they happen.
Requests return invalid_viewthrough_lookback.
Use whole hours (6h, 24h, or 6) or 1d. Fractions, weeks and 0 are rejected.
Impressions are accepted but installs aren’t credited to them.
Check that the impression carries the user’s real GAID or IDFA and arrives before the install. A click from any source, or a more recent impression, takes priority. The install must also fall inside the view-through window the advertiser set for you.
Need help? Contact support@linkrunner.io