Chip Bellfort sends a proposal to four people at one account, each on a tracked link of their own. By morning the analytics show one careful read, one return visit, one stop at 42%, and one view that landed three seconds after the email went out. Read well, those four lines tell him who to call and what to say. Read badly, they send him into a meeting with the wrong story. HTML link analytics for sales is the practice of telling the two apart.
This guide covers what to measure on proposals and dashboards, how to set links up so a number belongs to a person or a channel, how to turn a view into the next step, and where the data stops.
What link analytics can and cannot tell a sales team
A tracked URL records that a page was requested and what the browser reported while it was open. An HTML proposal behaves less like an attachment than a room someone walks through: they scroll, leave, come back, and forward it to a colleague who opens it on another device. The useful question is what happened after the open.
What analytics can tell you: that the page was reached, how far a visitor scrolled, how long they stayed, whether they came back, roughly where from, on what device, and, if the links are set up for it, through which distribution path. HTMLvault records total views, unique and repeat visitors, country and city, device and browser, referrer, scroll depth, time on page and server-side channel attribution on every link.
What it cannot tell you: who exactly was in the room, what they thought, or whether they will buy. Shared inboxes, forwarded URLs, VPNs and corporate proxies blur identity, so a unique visitor is an estimate, not a sworn statement about one human being. Ten opens sounds promising until you learn it was one curious intern refreshing between meetings; one open from the right procurement lead at the right moment can outweigh a hundred top-of-funnel clicks.
Four layers of engagement: reach, attention, context, identity
Most misreadings start with treating every view as the same event. Engagement has four layers, and each answers a different question:
- Reach: total views, unique visitors, and the share of intended recipients who opened the page at all.
- Attention: time on page, scroll depth and repeat visits, which together say whether anyone read it.
- Context: referrer, channel, geography, device and browser, which say how and from where people arrived.
- Identity: the known recipient a visit belongs to.
The first three come with every link. Identity does not, and no analysis recovers it afterward: the only way to tie a visit to a person is to give that person their own URL. One link sent to a whole buying committee shows that the committee is reading. It cannot show that the CFO is.
Reach and context are enough for broad distribution, such as a campaign page, a newsletter or a partner placement. Identity is for the short list where timing matters: a proposal's buying committee, an executive sponsor reviewing a forecast. Use it where someone will act on the difference, and where named tracking fits what the recipients would reasonably expect.
What to measure
Start with five questions rather than a dashboard. Did the intended buyer open it? Did they come back? Did anyone else at the account open it? Which sections held them? Did it arrive through the path you think it did?
Each metric answers one of those and nothing more:
- Total views: activity on the link. Useful as a trend, misleading as a verdict.
- Unique visitors: a rough count of distinct people or devices. Rising uniques on a proposal usually mean it is circulating inside the account, an underrated buying signal.
- Repeat visits: someone came back on purpose. Second and third visits are where evaluation happens.
- Time on page: the reality check on every other number. Depth without time is skimming.
- Scroll depth: the furthest point a visitor reached, as a percentage of the page's length.
- Channel: which distribution path delivered the visit, recorded server-side.
Read depth with time and returns, never alone. A visitor who reaches 80% in eight seconds used the scrollbar; one who reaches 80% over six minutes read something. A second or third return usually means internal review, a comparison against another vendor, or a buyer back with a specific question.
Act on patterns, not single readings. Do not call someone because they hit 92% at 2:13 a.m. A known stakeholder who returns twice, spends real time in the commercial section and reaches the next step justifies a relevant follow-up, not an announcement that you have been watching their scrollbar.
Read scroll depth against your sections, and when not to
Generic thresholds (25, 50, 75, 100) are a starting point, but a percentage becomes actionable only when it corresponds to a real section. Open the rendered page and write down what sits at each threshold. In a six-section proposal, 25% may cover the summary and the business problem, 50% the recommended solution, 75% implementation and security, and the last stretch pricing and the next step. Now "the CFO reached 42%" is a sentence about content instead of arithmetic. In the proposal from the worked example below, pricing begins at 88%:
Page length changes the scale. A two-screen proposal hits 100% in seconds; a dense enterprise proposal takes real reading to pass 50%. Compare similar formats, and sort visits into three bands: shallow visits that stop before the recommendation, substantive visits that reach the technical or commercial sections, and deep visits that reach the decision material.
Depth also needs a page built for it. A PDF forced into one very tall page produces numbers that describe scrolling, not reading. If an AI tool builds the page, ask for clear sections with an id on each (id="pricing", id="rollout"); the same anchors let an agent patch one section later without the URL changing. If several decision-makers across several proposals stop before pricing, move pricing up, and note the date, because depth recorded before and after the change maps to different sections.
Interactive dashboards
A dashboard is rarely read top to bottom. People open it to check one number, change a filter or compare a chart with last week's. If it fits on one screen, scroll depth can read 100% as soon as it loads; if it is long, depth shows which panels someone scrolled past, not which ones they used. On a dashboard, lead with repeat visits and time on page and treat depth as little more than a load check. The interactions that carry the meaning happen inside the page, where the link layer does not look.
One tracked URL per path: channels and per-recipient links
Engagement data answers "what did they do." Attribution answers "how did they get here," and it usually fails at naming, not math: five people label one channel linkedin-paid, LinkedIn Ads, paid_social, LI and final FINAL.
Pick a small taxonomy and write it down. utm_source names the platform or partner, utm_medium the distribution method, utm_campaign the initiative; keep values lowercase and hyphenated. An outbound link might carry utm_source=outreach, utm_medium=email, utm_campaign=enterprise-prospecting. If your CRM cannot tell that email, Email and e-mail are one channel, your channel report becomes a small museum of preventable ambiguity. The mechanics live in the channel attribution guide.
Then give each distribution path its own tracked URL: one for paid social, one for the newsletter and, for sales, one per stakeholder whenever individual engagement matters, since that is the only route to the identity layer. The create_recipient_links tool on the MCP server turns one proposal into a tracked URL per person, so a ten-person buying committee becomes ten links in one call from Claude, ChatGPT, Gemini or Cursor. Zapier, Clay and your own scripts create links through the REST API with an API key, and when each recipient should also see their own name or figures, create_links (POST /api/v1/links/batch) publishes up to 100 personalized pages from one template in a single call.
Create a variant only when it changes an action: a rep follows up differently, marketing moves budget, an analyst classifies pipeline correctly. Beyond that, extra variants are clutter with a URL.
The channel is recorded server-side because browsers are unreliable narrators. Email clients strip referrers, privacy tools block scripts, redirects lose parameters, and forwarded URLs arrive with no history at all. The channel belongs to the URL, so it survives the trip: a proposal forwarded inside the prospect's company still reads outbound email, while the visitor data shows the extra people and devices. Do not relabel that as paid social because a later touch happened elsewhere.
Channels need Pro or above: Free links record views without a channel breakdown and are capped at 50 links a month, while Pro ($12/mo, $10/mo annual) and above allow unlimited links and unlimited channels per link. The tracked URL can sit on a branded subdomain or your own domain (Pro and Teams include one custom domain, Enterprise three), so the prospect sees your name in the link rather than a shared host's. Your own GA4, Meta or HubSpot tracking code can run on the page as well. It complements the link record rather than replacing it, because pixels are subject to consent prompts and blockers that server-side attribution is not.
Worked example: from send to follow-up
Chip's proposal goes to four people at the account, each on their own recipient link: the operations lead, an IT reviewer, the CFO and a procurement contact. The rollout plan and security sections come before pricing, which starts at 88% of the page. Before any link existed, the publish was checked for API keys and secrets and for personal data, as every publish and edit is.
A week later, the operations lead has reached 78% and stayed seven minutes, in one visit. The IT reviewer reached 88%, returned the next day and used a different browser the second time. The CFO opened once, reached 42% and left after forty seconds. Procurement's link logged one view three seconds after sending, with no scrolling, which is what an email security scanner checking the link looks like.
The honest read is not "IT is our champion." Technical scrutiny is underway, so the follow-up should be about rollout, access or retention rather than another lap around the value proposition. For the CFO, 42% in forty seconds says the commercial outcome sits too deep; a three-line note that leads with the number beats resending the whole proposal. The operations lead read it properly and has no reason to come back yet. Procurement, whatever the view count says, has probably not opened it.
Next, take the analytics page out of the loop. Link events reach other tools through webhooks as they happen: point recipient.viewed at a Zapier or Clay workflow, or at your own code, and have it create a task on the opportunity naming the recipient who opened the link. Pro allows up to five webhook endpoints, Teams and Enterprise 20. Each event is tried once and, if delivery fails, retried three times, after 60 seconds, 15 minutes and an hour; webhook delivery retries has the details.
The ROI dashboard is the second half of the example, sent after the first call with one link per person again. Here depth says almost nothing and repeat visits do the work: the CFO opening hers three times in two days, about four minutes each, says the payback math is under review, so the next follow-up is about payback assumptions, not features. Which inputs she changed stays invisible unless the dashboard records them itself.
What the link layer cannot see
The link layer sees requests for the page and what the browser reports while it is open. It does not see what someone does inside the page: a filter changed, a tab switched, a chart point selected, a form submitted. On a dashboard those are usually the point, so instrument them. A published page runs its own scripts exactly as written, which means event tracking can live in the HTML itself, or you can add your own approved GA4, Meta or HubSpot tracking code and send the events there. A third-party pixel changes where viewer data goes, so clear it with whoever owns your privacy commitments before it goes on a page sent to customers.
The link layer also cannot tell people from machinery, or attention from presence:
- Email security scanners. Many corporate mail systems open each link in an incoming message to check it. That registers as a view within seconds of sending, usually with no scrolling and no return.
- Tabs left open. A long time on page can be a careful read or a laptop left open through a call. Trust it when depth and a return visit agree with it.
- VPN and proxy geography. VPNs, corporate proxies and mobile networks place a visitor where their traffic leaves the network, not where they sit. Use country and city for patterns across many views, never to decide who one viewer was.
- Forwarding. A per-recipient URL identifies the person it was sent to, not everyone who opens it. When unique visitors climb on one person's link, it has been passed around: often good news, but no longer identity.
Attribution is directional in the same way. A prospect can see an ad, attend a webinar, get an outbound email and return through a forwarded link, and first-touch, last-touch and influenced models will each tell a defensible but different story. Pick the model that matches the decision, and keep the channel values clean so it has something accurate to count.
Engagement is evidence, not a verdict. A procurement analyst may scroll deeply out of routine; a skeptical executive may read the first third and still be the person who moves the deal. Weigh the numbers against replies, meetings and what you know about the account before they change a deal strategy.
Keep the data as long as you need it, and no longer
Two settings decide how long a sent page and its analytics last: the link's expiry and the account's retention window.
Expiry ends access to the page. Expiry comes in fixed steps, from 1 hour to 30 days, 1 year or never on Pro and above; Free links expire after 30 days. You can change or extend an expiry after sending, so a deal that slips keeps its link and its history. Match the expiry to the decision date: a proposal due for signature this month does not need to be live next year. Links are never indexed, and a page that needs a gate can carry a password, which you set on the web.
Retention sets how long HTMLvault keeps a link's content and view data after the link expires. It is one setting for the whole account (for an organization member, the owner's setting applies): 7 days to 2 years on paid plans, 7 to 90 days on Free, counted from each link's expiry. When it runs out, the page content and the per-visitor view data are deleted together. There is no per-link retention, and the setting is changed in the web app, not through MCP or the API. Longer is not automatically better: a data-retention window that outlasts every forecast review keeps reading data on named buyers that nobody will use, which is the case data minimization in practice makes.
Attribution does not outlive the views it is built from. When retention runs out, the record of which channel brought each visit and which recipient read which section goes with the page. Export what you need first: copy the numbers into the opportunity, have an agent pull them with the get_analytics MCP tool, or rely on the events your webhooks already delivered, which sit in the CRM tasks they created rather than in HTMLvault. Then the next forecast review can still see why Chip called the IT reviewer when he did, months after the proposal page is gone.
