The first thing I tell teams during onboarding is this: your documents are already talking to you. Most teams just aren't listening yet.
When a prospect opens your proposal once, that's expected. Twice, maybe they're being thorough. But three times? That's not casual browsing. Someone is building a business case, comparing you against a competitor, or pulling your pricing into a decision meeting you don't know about yet.
That third view is a buying signal. And if your CRM doesn't surface it in time, you miss the moment that turns quiet interest into a real conversation.
I've helped dozens of teams set up this exact workflow in HubSpot using Portant's Document Object. It takes about fifteen minutes, and it consistently turns a piece of data that used to sit unnoticed into one of the most reliable follow-up triggers in the pipeline.
Why repeated views matter in B2B sales
In B2B, buying decisions rarely happen in one sitting. A proposal moves between people. It gets reviewed by procurement, checked by legal, and scrutinized by finance. Each of those reviews shows up as a view.
When someone comes back to your proposal a second or third time, they're doing something active. They're not filing it away. They might be:
- Pulling specific numbers to justify the purchase internally
- Comparing your pricing against another vendor's offer
- Showing it to someone with signing authority who wasn't in the original conversation
- Looking for terms they want to negotiate before committing
Most CRMs track email opens and link clicks, but those signals are broad. A document view is more specific. It tells you exactly which file the prospect looked at, when they looked at it, and how many times.
That's the kind of signal a rep can act on. Not "someone clicked a link," but "Sarah at Acme opened the renewal proposal for the third time at 2:15pm today."
What Portant's Document Object tells you
When Portant creates a document from a HubSpot deal, whether through a workflow or manually, it saves that document as its own record inside HubSpot. This is the Document Object. It sits on the deal timeline and carries properties that update automatically as the prospect interacts with the file.
The properties that matter for this workflow:
- Number of Times Viewed: how many times the document has been opened via the shared link
- Date Last Viewed: the timestamp of the most recent open
- Document Status: where the document sits in its lifecycle (created, sent, viewed, signed)
- Document Link: the shareable URL that Portant generates for each output
These are live HubSpot properties. You can filter on them, report against them, and use them as workflow enrollment triggers. That last part is what makes this whole approach work.
Because Portant is a HubSpot Certified App, these properties behave like any native HubSpot property. They show up in lists, reports, and the workflow builder without any custom API work. You can read more about how Portant properties work as triggers in the Portant documentation on triggering HubSpot workflows.
Building the hot prospect workflow step by step
Here's how I walk teams through setting this up. It takes about fifteen minutes if your Portant integration is already installed.
Step 1: Create a deal-based workflow
In HubSpot, go to Automation > Workflows and choose Deal-based as the type. This ensures the workflow fires based on what's happening at the deal level, not on a specific contact or company record.
Deal-based is the right choice here because the Document Object lives on the deal. You want the alert to carry deal context, like the deal name, amount, and stage, not just a contact name.
Step 2: Set the enrollment trigger
Under enrollment triggers, look for the Portant Document Object properties. Set the trigger to:
Portant > Number of Times Viewed is equal to 3
Use "equal to" rather than "greater than or equal to." You want this alert to fire once, the moment the threshold is crossed, not repeatedly on every view after that. If you use "greater than or equal to," re-enrollment settings become important, and you risk notification noise that reps will start ignoring.
Step 3: Add your alert actions
I recommend three actions, in this order:
- Send a Slack message to the deal owner. Use the HubSpot Slack integration action and include the deal name, contact name, and document link. Something like: "[Contact name] has viewed [Deal name] proposal 3 times. Last viewed: [Date Last Viewed]. Link: [Document Link]." The Slack message is the fastest channel. Most reps see it before they check their HubSpot task queue.
- Create a HubSpot task. Set the subject to "Call within 1 hour: proposal viewed 3 times" and assign it to the deal owner. Include the deal name, contact name, document link, and view count in the task notes. This ensures the follow-up shows up in the rep's task queue even if they miss the Slack ping.
- Create a HubSpot notification. This is the in-app alert that appears in the bell icon. It catches reps who are already working inside HubSpot and might not have Slack open.
Three channels sounds like a lot, but each serves a different moment. Slack catches the rep in real time. The task persists until it's completed. The notification covers anyone working inside HubSpot directly. I've found this combination gives the best follow-through without feeling like spam.
Step 4: Add context to every notification
This is the detail that most teams skip, and it's the one that matters most. Every message in the workflow should include:
- Deal name
- Contact name
- Document link (so the rep can see exactly what the prospect is looking at)
- View count
- Date last viewed
The difference between "someone viewed your proposal" and "Sarah Chen at Acme viewed your Q1 renewal proposal three times, most recently 20 minutes ago" is the difference between a cold call and a warm one. Context turns an alert into a conversation starter.
How to follow up without being awkward
The alert is only as useful as what the rep does with it. I've seen teams set up great workflows and then ruin the follow-up with a message that sounds like surveillance.
Lead with value, not with "I saw you." A message like "Wanted to check in on the proposal, anything I can help clarify?" works. "I noticed you've been reviewing our proposal multiple times" does not. The first is helpful. The second feels like you're watching them through a window.
Keep it short. This is a check-in, not a new pitch. One or two sentences. "Hi Sarah, wanted to touch base on the proposal. If any section needs adjusting or you'd like to walk through the pricing together, happy to jump on a quick call."
Match the channel to the relationship. If the rep already has a Slack Connect channel or WhatsApp thread with the prospect, use that. If not, email works. A phone call works best when the relationship is warm enough that it won't feel intrusive.
Time it within an hour. The signal decays fast. If the prospect viewed the proposal at 2pm and the rep follows up at 5pm, the context is stale. The task subject says "call within 1 hour" for a reason. That window is when the prospect's attention is still on your deal.
Common pitfalls and how to avoid them
Alert fatigue. If every document type triggers an alert at three views, reps will start ignoring all of them. Be selective. Focus on proposals, contracts, and quotes. Internal documents, receipts, or certificates probably don't need this workflow. You can add workflow filters based on document type or deal stage to keep the signal clean.
Threshold set too low. Setting the trigger at one or two views catches too much noise. One view is expected. Two could be a quick double-check. Three is the number that consistently tells me someone is actively engaging with the deal, not just opening the email one more time.
Threshold set too high. Setting it at five or ten means the prospect might have already made their decision. By that point, you're not catching the buying window. You're reacting after it closed. Three is the sweet spot for most mid-market B2B sales cycles. Enterprise teams with longer procurement processes sometimes adjust to four or five, but I always recommend starting at three and raising it only if the data says so.
No context in the notification. An alert that says "proposal viewed" with no deal name, contact, or link forces the rep to go hunting through HubSpot. That friction kills follow-through. Always include the five fields I mentioned: deal name, contact name, document link, view count, and last viewed date.
Treating every alert as a must-call. Some prospects view documents many times as part of their normal review process, especially in enterprise deals where procurement and legal both need to read the terms. The workflow gives reps a signal, not a script. Judgment still matters. If the deal is already in active negotiation, a "saw you reviewing" message might feel redundant. If the deal has gone quiet for two weeks and suddenly gets three views, that's the moment to call.
Beyond three views: other signals worth watching
Once you have the basic workflow running, you can extend it. The Portant Document Object has other properties worth building on.
Date Last Viewed is useful for stale deal detection. If a proposal hasn't been viewed in two weeks, that's a different kind of signal. A separate workflow can flag those deals for the rep or notify a manager during pipeline review. I've seen this catch deals that would have died silently in a "proposal sent" stage.
Document Status changes are another trigger worth using. When a document moves from "sent" to "signed," you can fire an internal celebration notification, update the deal stage automatically, or kick off an onboarding workflow. The point is to let your CRM surface the right information at the right time so reps spend less time checking dashboards and more time talking to buyers.
If you're running Portant workflows connected to HubSpot deal stages, these document signals layer well on top. The deal stage tells you where the sale is. The document view tells you whether the buyer is still paying attention. Together, they give your team something most pipelines lack: a real-time read on buyer intent.
Frequently asked questions
Does the view count track unique viewers or total opens?
The Number of Times Viewed property counts total opens of the shared document link. If the same person opens it three times, or three different people each open it once, both register. In practice, multiple views from the same link usually indicate genuine review activity either way.
Can I use a different threshold besides three?
Yes. Three is a sensible starting point based on what I've seen across teams, but your sales cycle might call for a different number. Enterprise teams with longer review processes sometimes use five. Test the threshold and adjust based on how often reps report that the alert led to a useful conversation.
Will this work for documents other than proposals?
Yes. The Document Object properties apply to any document Portant generates, whether it's a quote, contract, statement of work, or invoice. Be thoughtful about which document types deserve an alert. A three-view trigger on a proposal or contract carries real buying signal. The same trigger on a receipt probably doesn't.
What if a prospect downloads the document repeatedly?
Downloads count as views. If this creates noise, pair the view count trigger with other conditions, like the deal being in a specific pipeline stage. That way, alerts only fire when the deal is actively being worked. You can also add a workflow filter to exclude certain document types that tend to get downloaded and saved locally.