A launch needs a spine: offer, proof, and a sentence people can repeat. Landing pages are not posters. They’re arguments. Every block should earn the next click — or get cut.
What moved the needle last launch
- 4.8% — visitor → demo (vs 2.1% prior)
- −36% — bounce on hero (after copy cut)
- 11 — blocks → 6 (same conversion+)
Page argument map
| Block | Job | Keep if… |
|---|---|---|
| Hero | Claim + CTA | Repeatable in a room |
| Proof | Numbers / logos | Third-party or measured |
| How | Mechanism | Removes a fear |
| Offer | Next step | One clear action |
Track the argument, not vanity
// funnel.ts
type LaunchEvent =
| { name: "hero_cta"; variant: "primary" | "secondary" }
| { name: "proof_expand"; section: string }
| { name: "demo_booked"; source: "landing" | "nav" };
export function scoreLaunch(events: LaunchEvent[]) {
const demos = events.filter((e) => e.name === "demo_booked").length;
const ctas = events.filter((e) => e.name === "hero_cta").length;
return {
ctaToDemo: ctas === 0 ? 0 : demos / ctas,
// Ignore scroll depth theatre. Care about booked conversations.
};
}
Sustainable voice beats a loud week. If you wouldn’t say it on a Tuesday call, don’t put it on the hero.
“Landing pages are arguments — not posters.”