From 3f48bdfd9953fc9cfdc460684ba17d0ab75fa825 Mon Sep 17 00:00:00 2001 From: martbost Date: Sun, 30 Aug 2026 06:37:41 -0500 Subject: [PATCH] Traffic Desk: tag ad destinations so clicks are attributable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Traffic Desk has been unmeasurable since it shipped. track.js reads ?v= before it reads document.referrer, so every angle-linked ad click was filed under "angle:graveyard" (or two/phone/pocket) and the referring domain was discarded. Ad clicks, flyer QR scans, massifly angle links and Telegram angle links all collapsed into the same four buckets — about 11,400 landings with no attributable source between them — while networkadspace.com showed one single visit against roughly 45,000 served impressions. That reads as "the ads produce nothing." What it actually means is that nothing carried a source. Destinations now carry src=nas-banner or src=nas-text. `src` is checked before `v` in track.js so it wins cleanly, and the landing page reads ?v= separately so the angle hook is untouched. Split by format because we have believed text outperforms banners for weeks without being able to show it. This is the prerequisite for everything else here: pooled Ad Intel benchmarks, judging which placements are worth expanding, and telling a member what their impressions bought. Co-Authored-By: Claude Fable 5 --- suite-traffic.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/suite-traffic.js b/suite-traffic.js index 8df8ec9..7714b40 100644 --- a/suite-traffic.js +++ b/suite-traffic.js @@ -183,6 +183,20 @@ async function launch(opts) { if (!opts.hasPage) throw new Error('Build your personal page first, then you can point ads at it.'); target = 'https://rmcircle.team/p/' + opts.id; } + // Tag the destination so a click can be traced back to this network. + // + // Without this the Traffic Desk is unmeasurable: track.js reads ?v= BEFORE + // it reads the referrer, so every angle-linked ad click was filed under + // "angle:graveyard" and the referring domain thrown away. Ad clicks, flyer + // QR scans and massifly angle links all landed in the same four buckets, + // and networkadspace.com showed a grand total of 1 visit across ~45,000 + // served impressions — not because the ads produced nothing, but because + // nothing carried a source. + // + // `src` wins over `v` in track.js, and the landing page still reads ?v= + // separately, so the hook keeps working. Split by format because we believe + // text outperforms banners and have never been able to show it. + target += (target.indexOf('?') === -1 ? '?' : '&') + 'src=nas-' + (isText ? 'text' : 'banner'); const idem = 'rmc-' + opts.id + '-' + monthKey() + '-' + crypto.randomBytes(6).toString('hex'); const payload = {