Integration

Snippets to send Publifter revenue at the moment it happens: your own user id, the revenue value, currency and a precision label. Copy, paste, adjust the placement name.

Every snippet sends your own user id, never an advertising id. Publifter never asks for payment details or write access to your ad stack — the only write permission in the product is ads.txt / app-ads.txt hosting.

Callback snippets

Pick the SDK you use. Every snippet reports the same four fields.

func adDidRecordImpression(_ ad: GADFullScreenPresentingAd) {
  guard let value = ad.responseInfo?.adValue else { return }

  Analytics.report(
    userId: currentUser.publisherUserId,   // your own id, not an ad id
    revenue: value.value.doubleValue,
    currency: value.currencyCode,          // e.g. "USD"
    precision: value.precision == .precise ? "precise" : "estimated",
    source: "admob",
    placement: "rewarded_level_complete"
  )
}

Tags and pixels

Web and video inventory, no app release needed. Three tags, all pasted into your own ad server.

Minutes, no engineering
Where it goes

Third-party impression tracker on your Ad Manager creative

<!-- Paste as a third-party impression tracker on the GAM creative -->
<img
  src="https://px.publifter.io/i?
    pid=PUB-4821
    &placement=%%PATTERN:placement%%
    &cpm=%%CPM_MACRO%%
    &uid=%%PATTERN:publisher_user_id%%
    &cb=%%CACHEBUSTER%%"
  width="1" height="1" style="display:none" alt="" />

Counts the impression and, where your page sets a first-party user id, ties it to that user. It cannot carry a price for AdX or AdSense demand — those stay aggregate.

TagWorks withReports price per impressionTies to your user id
Impression pixelAd Manager creatives, direct dealsonly if the CPM macro is filledwhen the page sets one
JS tagPrebid.js, GPT display slotsyes, clearing priceyes
VAST wrapperVideo and CTV players, GAM video line itemsyes, via AUCTION_PRICEif the player passes an id

None of these change your Ad Manager setup. They sit on a creative or in your own wrapper and you can remove them yourself at any time. AdX and AdSense demand stays aggregate whichever tag you use, so those impressions are counted but never scored per user.

Live event stream

Impression-level revenue callbacks as they arrive, most recent first. Seeded demo data, not your live traffic.

TimeSourcePlacementUser id hashRevenuePrecision
1m agoAd ManagerNative — feed slot 3u_cb1c1650$0.0440precise
1m agoAppLovin MAXRewarded — level completeu_07c7c51e$0.0269estimated
1m agoAdMobRewarded — level completeu_fbd9b3a7$0.0317precise
1m agoAd ManagerNative — feed slot 3u_25ada490$0.0247precise
59s agoAd ManagerNative — feed slot 3u_8eab5359$0.0162precise
55s agoAdMobBanner — homeu_9a166a5b$0.0365precise
50s agoAppLovin MAXRewarded — level completeu_734a8bf2$0.0206estimated
46s agoAd ManagerApp openu_b65e2218$0.0217precise
42s agoAd ManagerApp openu_f0023b66$0.0402precise
38s agoAd ManagerApp openu_6c1493bb$0.0141precise
34s agoAd ManagerApp openu_385e98c5$0.0333precise
29s agoAd ManagerApp openu_5b023456$0.0150precise
25s agoAdMobRewarded — level completeu_661ab511$0.0023precise
21s agoPrebid.jsWeb — in-articleu_b1a184bf$0.0317precise
17s agoAd ManagerApp openu_f3a9154d$0.0127precise
13s agoAppLovin MAXInterstitial — session endu_c7028d64$0.0399estimated
8s agoLevelPlayRewarded — level completeu_a3c615d3$0.0106estimated
4s agoAdMobBanner — homeu_22d89be4$0.0324precise

Revenue precision breakdown

Share of impressions per source labelled precise, estimated or publisher-provided.

SourcePreciseEstimatedPublisher-providedWhy
AdMob90.9%9.1%Partner Bidding volume (9.1%) has no per-impression price; it is spread using the aggregate report.
Ad Manager96.4%3.6%AdX web demand served through GAM cannot report per-impression; modelled from placement-day aggregates.
AppLovin MAX100.0%SDK reports a network-level estimate at callback time, reconciled next-day by the API. Never exact at the moment of callback.
LevelPlay100.0%Same pattern as MAX: SDK estimate now, network reconciliation next-day.
Prebid.js100.0%Auction clearing price is known exactly at bid time.
Meta Audience NetworkNo impression-level revenue exists to label. Aggregate report only — excluded from this breakdown.

Precise means the price is known at the moment of the callback — an auction clearing price or a paid-event value from a network that reports exactly. Estimated means the SDK gives a network-side estimate that a next-day API reconciles later, which is how AppLovin MAX and LevelPlay work today. Publisher-provided means Publifter had no exact or estimated per-impression figure and spread an aggregate report across impressions instead. Meta Audience Network has no impression-level row at all, so it carries no precision label and is excluded from this chart — it only ever appears as an aggregate line in revenue totals.