One landing page. Infinite variants.
Swap headline, subhead, hero image, CTAs and the inline form on the same URL — by UTM, referrer, country, or HubSpot list. Without ever duplicating a page.
One landing page. Infinite intent-matched variants. Swap headline, subhead, hero image, CTAs and inline form by UTM parameters, referring domain, country, or HubSpot list — without duplicating pages.
Each click reloads this page with a different URL parameter. Each demo evaluates its own rules against that parameter and swaps content live. Append &scsdebug=1 to any URL to see the rule-evaluation panel.
Atelier-Noire-grade luxury. Italic Cormorant at 220 px display, weight 300, near-zero leading. Gold capitalised eyebrow letter-tracked at 0.32 em. Solid gold pill CTAs on warm-black. Edge-to-edge cinematic stage. Three UTM-driven variants flip the headline.
A clean SaaS LP — no bg image, no clipping. A brand wordmark sits above the eyebrow so the page reads as a real product hero. Saturated indigo→violet gradient, Manrope 800 at 76 px. The white form panel sits on a tinted gradient surface (never on top of an image — that's the rule). ?utm_campaign=enterprise / =smb swaps heading + form pitch.
A daylight counterpoint to Demo 1's noir. Soft peach→cream gradient surface, large 4:5 portrait image on the LEFT (the inverse of every other demo here), Fraunces 100 px regular italic with optical-size adjusted, generous 40 px section radius. Country-driven variants for DE / RO / FR.
A bold typographic poster — white sheet, jet-black Space Grotesk 800 at 156 px, monospaced eyebrow, square image cropped to 1:1 on the right, lime-on-black CTA. Sharp 0 px corners on the section AND the image. Two referrer-driven variants for G2 — open with g2.com referrer or fake with ?utm_source=g2&utm_medium=referral.
Full-bleed 92 vh stage, auto-playing 4K video, vignette overlay (50%), brand wordmark at the top so it reads as a real campaign hero, Italiana 168 px (a vertical Vogue-grade serif distinct from Demo 1's Cormorant), pill primary CTA + ghost secondary CTA. ?industry=saas / =ecom swaps the campaign.
Not every personalised module is a hero. Drop this contained 48 px serif banner into the middle of an article or pillar — H3 tag (so it doesn't compete with your real H1), 24 px section radius, warm sand surface, gold pill CTA on hover. ?industry=saas / ?industry=ecom swaps the offer.
A personalization hero for HubSpot CMS that swaps headline, subhead, hero image / video, CTAs and inline form on the same URL based on UTM parameters, referring domain, country, HubSpot list membership, custom URL parameters or cookies. One module, infinite intent-matched variants — no duplicate pages, no Mutiny / RightMessage subscription. Works on CMS Starter.
rule_priority wins.sessionStorage so the visitor sees the same variant across navigations.scs_variant_match to window.dataLayer with the matched variant name and source.Each variant has an optional logo image field that renders above the eyebrow. Use it on LP-style heroes (Demo 2, Demo 5) so the page reads as a proper campaign hero instead of a generic content block. The logo height + the gap between the logo and the eyebrow are both editable in the Style tab.
Each module instance picks its own heading and body font from the HubSpot font picker. The six demos here are intentionally disjoint — different fonts, different scales, different layouts, different colour worlds — to show the breadth of the same module:
Each variant picks its own tag from H1 / H2 / H3 / H4. Use H1 when the module is the page hero.
?scsdebug=1 to any URLShows a fixed debug panel in the bottom-right of the page that logs every rule evaluation per module instance — the rule type, operator, expected value, the actual context value the JS read, and whether it matched.