Marketing

View pricing

Where it fits

The page is ready. The sprint is not.

The page is already built. Claude wrote the launch teaser, or ChatGPT drafted the event microsite, or the partner one-pager came out of a template this morning. None of them need a repository or a release window, and all of them wait for one anyway. The copy is approved on Tuesday and the page ships in the sprint after next.

HTMLvault does not replace your CMS or your ESP. It replaces the deploy queue. The CMS still owns the site and the ESP still owns the send. It takes the page your tools already produce and does the two things neither of them does quickly: puts it at a URL on your own domain the afternoon the copy is signed off, and reports back who arrived, from which channel, and how far down they read.

Nothing changes for the audience. No vendor chrome, no sign-in wall, and no tracking parameters cluttering the link they click. UTMs attach server-side so the URL you post is short enough to read out loud, your pixels ride along at render time, and the page retires itself on the date the campaign ends.

ONE STEP BETWEEN APPROVED COPY AND A LIVE URL

YOUR STACK, UNCHANGEDVAULT ITYOUR AUDIENCEYOUR BRIEFthe brief, the brand kit,the approved copyYOUR TOOLSClaude, ChatGPT, Gemini,already making the pageHTMLVAULTa URL on your domain,one clean link per channelEVERY VISITORclicks a clean link,reads on your domainLINK.VIEWED FIRESATTRIBUTED PER CHANNEL

How it works

From approved copy to attributed traffic

Step 1

Vault it

Take the page straight from Claude or ChatGPT to a live URL. The copy approval is the only gate left.

Step 2

Split by channel

One page, one clean URL per channel. UTM parameters attach server-side and stay out of sight.

Step 3

Measure everything

Geo, device, referrer, and per-channel performance in one dashboard, per link and per view.

Step 4

Retire it on schedule

Set the expiry to the campaign end date and the page stops existing on time. No ticket, and nobody has to remember to take it down.

Worked example · A launch that goes out five ways

One page, five channels, no UTMs in the URL.

A launch teaser shipping five ways on the same afternoon: the newsletter, an organic social post, a paid test, a partner’s list, and the sales team’s own outbound. Five attribution stories, and historically five URLs that each look like a database error.

Publish the page once, then mint a channel per destination. Every channel is a clean URL that carries its UTM parameters server-side, so what you paste into a social post is short and readable and still lands correctly in your analytics.

By the next morning the readout is per channel rather than per session. The paid test drove the most clicks and the least reading. The partner list drove a third of the traffic and twice the scroll depth, which is the number that decides where the next round of budget goes.

  • The URL stays clean. UTMs attach server-side, so nothing in the link announces to the reader that they are being measured.
  • Clicks are not reading. Scroll depth and time on page per channel separate the audience that arrived from the audience that stayed.
  • It retires itself. Set the expiry to the campaign end date and the promo page stops existing on schedule, with no ticket.
ONE PAGE, ONE CLEAN URL PER CHANNEL
EVENT LOG7 EVENTS · 21 HR
TIMEStateEVENTTOOL / SOURCEDETAIL
THU11:04HTMLvault stepPublish the pagecreate_linklive on a domain you own
THU11:06HTMLvault stepMint five channelsChannels · v1 APIemail, social, paid, partner, outbound
THU11:20Step completedShip itthe ESP, the scheduler, the ad accountfive clean URLs, nothing to explain
THU11:41Signal receivedFirst viewlink.viewedyour pixels fire at render
THU16:02Signal receivedPaid test landslink.viewedmost clicks, 22% scroll depth
FRI08:15HTMLvault stepRead the splitget_analyticspartner list: twice the read time
FRI08:16Step completedMove the budgetthe ad accounttoward the channel that read it

Use cases

Ship the campaign the day it is approved

  • Microsites with an end date

    Event pages, product teasers, seasonal promos. Live when the copy is approved, gone when the campaign closes, without anyone filing a ticket to take them down.

    • Auto expiry
    • Edit after publish
  • Attribution without the ugly URL

    Channels hold the UTM parameters server-side. The link you post is short and readable, and your analytics still receives the full string.

    • Channels
    • UTM tracking
  • Your pixels, injected at render

    Google Analytics, Meta Pixel, HubSpot. Tracking rides along at view time instead of being baked into the page, so you can swap or remove it without republishing.

    • Tracking codes
  • White-label all the way down

    Pages serve from your own domain with no vendor branding anywhere your audience looks. The page reads as yours because it is.

    • Custom domains
    • White-label viewer
  • Which channel found the readers

    Country, region, device, referrer, and browser language per view. Clicks tell you who arrived. Scroll depth tells you who stayed.

    • Link analytics
    • Engagement metrics
  • Same page, two audiences

    Tag each channel with the persona it targets, then compare how practitioners read the page against how executives skim it. One page, segmented readout.

    • Channels
    • Persona targeting

What actually changes

Five things that stop being your problem.

“it is in next week’s sprint”
live this afternoon
“?utm_source=li&utm_medium=social…”
one clean URL per channel
“someone should take the promo down”
it expired with the campaign
“the pixel never made it into the build”
tracking injected at view time
“clicks looked good, I think”
scroll depth, by channel

Stop waiting on the deploy queue.

The page your AI wrote this morning can be live before lunch.