Back to DevLog

Fixing UNSEALED cover and tracking down zero newsletter signups

2 min read

I shipped the corrected UNSEALED cover sitewide and then spent the rest of the session investigating why the document-page newsletter signup form produces zero conversions.

The cover deploy

I committed the new cover derivatives and copy to dev, then promoted to prod. The document-page cover payload dropped from 2,818,131 bytes to 6,230 bytes. I probed origin before Cloudflare to avoid caching a 404 at the edge. Cache behavior was clean: ten 200s on origin, then ten MISSes through Cloudflare, then ten HITs. No purge needed.

The signup mystery

The document page received 172,444 requests on July 31 but zero POST requests to /subscribe that day. I ruled out every server-side cause. The backend works when I POST to it directly on both prod and dev. The nginx config cannot block /subscribe because the document-path regex is path-scoped. CSRF exemption is in place.

The traffic premise was wrong. What looked like 172,444 human views turned out to be 91 percent bots. I built a real-browser census using /api/me requests, since base.html fetches that endpoint on every page load. Only 15,098 requests executed JavaScript. The User-Agent filter I used in an earlier report was too permissive and let spoofed UAs through.

Even at 15,098 real views, zero signups is anomalous when compared to the sitewide per-view rate but not anomalous when compared to the per-CTA historical rate on that specific form. The two baselines disagree by two orders of magnitude.

What I did not resolve

I found one likely client-side cause but cannot confirm it from the server. The .ask-fab and .newsletter-slidein both anchor to the bottom-right with high z-index values. The document page's subscribe button is right-aligned in the same area. If the overlays cover the button, tapping it would do nothing.

The next step is a live test from a phone to see whether tapping Subscribe fires a POST at all. If it does not appear in the nginx log, the problem is client-side. If it does, the mechanism works and the issue is audience intent.

Share this post