Traffic Desk: say "delivered" when a banner has served what was bought

Marty asked why banners still show "running" with 0 left. They genuinely are
running — banners on this network have no cap. The counter runs past the
purchase and the ad keeps rotating until its 365-day expiry, so a
fully-delivered banner is still serving. #2707 is at ~6,129 on a 2,500 buy.

"running / LEFT 0" reads as broken though, so the row now says "delivered —
still serving as a bonus, Stop to end it", and the footnote explains it once:
the extra costs nothing further against their allowance, and Stop actually
ends it on the network.

Worth flagging what this does NOT do: nothing auto-stops a banner at its
purchased amount. Members get free over-delivery, which is fine on our own
inventory, but it means every banner ever launched keeps rotating for a year
unless someone stops it. If that becomes noisy, the fix is a scheduled job
that deactivates ads once served >= bought — deliberately not built now,
since it needs a cron and the over-delivery currently costs nothing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
martbost
2026-08-30 05:18:31 -05:00
parent 37c9fc615c
commit 1b5ae64905
2 changed files with 12 additions and 2 deletions
+1 -1
View File
@@ -95,7 +95,7 @@
<div class="table-wrap"><table><thead><tr><th>Size</th><th>Sends to</th><th>Bought</th><th>Served</th><th>Left</th><th>Clicks</th><th>Status</th><th></th></tr></thead><tbody id="tfLive"></tbody></table></div> <div class="table-wrap"><table><thead><tr><th>Size</th><th>Sends to</th><th>Bought</th><th>Served</th><th>Left</th><th>Clicks</th><th>Status</th><th></th></tr></thead><tbody id="tfLive"></tbody></table></div>
</div> </div>
<p class="tf-note"><strong style="color:var(--text)">What this is, honestly:</strong> display advertising is <strong style="color:var(--text)">awareness volume</strong> — it puts your link in front of people browsing the network. It is not a lead list, and click rates on display inventory are low by nature. The conversations you have with people you know are still what actually builds a team; this runs quietly in the background while you do that. <br><br>All banners use approved team creative, so every ad on the network stays on-brand. Independent team resource · No income is guaranteed · Cryptocurrency involves risk.</p> <p class="tf-note"><strong style="color:var(--text)">A note on "delivered":</strong> banner placements on this network have no hard stop — once a banner has served the impressions you bought it keeps rotating until it expires, at no further cost to your allowance. That extra is a bonus, not something you paid for. Hit Stop whenever you want it to end. <br><br><strong style="color:var(--text)">What this is, honestly:</strong> display advertising is <strong style="color:var(--text)">awareness volume</strong> — it puts your link in front of people browsing the network. It is not a lead list, and click rates on display inventory are low by nature. The conversations you have with people you know are still what actually builds a team; this runs quietly in the background while you do that. <br><br>All banners use approved team creative, so every ad on the network stays on-brand. Independent team resource · No income is guaranteed · Cryptocurrency involves risk.</p>
</main> </main>
<script src="/suite-traffic.js"></script> <script src="/suite-traffic.js"></script>
<script src="/tool-video.js" data-video="/tv/suite-traffic-desk.mp4" data-secs="· 74 sec" data-title="Watch the Traffic Desk walkthrough" data-key="traffic" defer></script> <script src="/tool-video.js" data-video="/tv/suite-traffic-desk.mp4" data-secs="· 74 sec" data-title="Watch the Traffic Desk walkthrough" data-key="traffic" defer></script>
+11 -1
View File
@@ -190,9 +190,19 @@
if (rawRem == null) { servedShown = Number(served) || 0; left = null; } if (rawRem == null) { servedShown = Number(served) || 0; left = null; }
else if (c.kind === 'text') { left = Math.max(0, Math.min(rawRem, bought)); servedShown = bought - left; } else if (c.kind === 'text') { left = Math.max(0, Math.min(rawRem, bought)); servedShown = bought - left; }
else { servedShown = Math.max(0, Math.min(rawRem, bought)); left = bought - servedShown; } else { servedShown = Math.max(0, Math.min(rawRem, bought)); left = bought - servedShown; }
// "running" with 0 left reads as broken. It is not: banners have no cap on
// this network — the counter runs past the purchase and the ad keeps
// serving until its expiry, so a fully-delivered banner is genuinely
// still going. Say that plainly, and keep Stop available so a member can
// actually end it rather than wonder why it never finishes.
var delivered = servedShown >= bought && bought > 0;
var statusCell = c.stopped var statusCell = c.stopped
? 'stopped <span style="opacity:.7">(' + Number(c.refunded || 0).toLocaleString() + ' returned)</span>' ? 'stopped <span style="opacity:.7">(' + Number(c.refunded || 0).toLocaleString() + ' returned)</span>'
: (l.live ? '<span style="color:var(--teal)">running</span>' : 'finished'); : !l.live ? 'finished'
: delivered
? '<span style="color:var(--teal)">delivered</span>' +
'<br><span style="font-size:11.5px;color:var(--muted)">still serving as a bonus — Stop to end it</span>'
: '<span style="color:var(--teal)">running</span>';
var label = c.kind === 'text' var label = c.kind === 'text'
? '<b>Text</b><br><span style="font-size:12px">' + esc(c.subject || '') + '</span>' ? '<b>Text</b><br><span style="font-size:12px">' + esc(c.subject || '') + '</span>'
: '<b>' + c.size + '</b>'; : '<b>' + c.size + '</b>';