Symptom

The krillswarm.com Jekyll site had GA4 (gtag.js) loading and firing page_view, but no instrumentation on any conversion click — download tiles, install-script copy buttons, store links — so there was no data on which CTAs convert. Separately, the social-share preview (og:image / twitter:image) pointed at an SVG avatar, which most social scrapers (Facebook, X, LinkedIn) silently refuse to render.

Root cause

Two distinct gaps. (1) No click-event layer existed at all — the only analytics include emitted the GA4 config and nothing more. (2) The social_preview_image was set to an SVG; SVG is not a valid social-card format. A subtler trap sits behind the fix: _includes/media-url.html prepends the cdn: host (cms.krill.systems) to any relative image path, but a value containing :// is returned verbatim. So a relative /assets/img/... path would resolve to the CDN (where the Pages-hosted asset does not exist), not to krillswarm.com.

Fix

Added one production-gated, delegated document click listener in _includes/analytics/firebase.html that maps href patterns and the .copy button class to GA4 download / copy_install_cmd / outbound_click events with transport_type: 'beacon'. Because it is delegated and lives in the shared include, it covers the home hero and every category/post link with no per-page markup. Replaced the SVG card with a generated 1200x630 PNG (plus a square 512px logo for JSON-LD), referenced by an absolute https://krillswarm.com/... URL to bypass the CDN-prefix behavior, and emitted og:image:width/height/type/alt. Also: noindex on internal lesson pages, robots Disallow for raw superpowers/ docs, reconciled a dangling Twitter sameAs, and added missing page descriptions.

Prevention