Event: page.visited · Destinations: Intercom, Slack, Webhook
The problem
Product-Led Growth (PLG) and onboarding-heavy products create intent signals long before a user submits a form or books a call. Revisiting a setup screen, a pricing page, or a feature detail page often means the user needs help or is moving closer to a decision right now.
Most teams still process those signals too late. They batch analytics, export lists, or ask an internal team to infer intent after the moment has already passed. That means tutorials, outreach, and internal visibility all arrive after the user has moved on.
Behavioral routing changes that timing. When visit_count crosses a threshold on a meaningful page, the right systems can react while the user is still in the product and still showing intent.
The event flow
Each use case follows the same product story: Meshes receives the source event once, maps it to the right destinations, and keeps delivery visible when downstream APIs fail.
Event payload
{
"user_id": "usr_8801",
"email": "sam@pipelineops.io",
"page_url": "/app/setup/salesforce-sync",
"page_title": "Salesforce Sync Setup",
"visit_count": 3,
"referrer": "/app/dashboard",
"plan": "growth",
"visited_at": "2026-03-21T16:02:00Z"
}Intercom
Meshes tags the user or updates routing context so the right tutorial or in-app message can appear.
The product can respond while the user still has intent instead of after a delayed analytics sync.
Slack
Meshes alerts the product or CS team when high-intent page behavior crosses the threshold you care about.
Internal teams can see meaningful revisit behavior in real time instead of waiting for a report.
Webhook
Meshes forwards the visit event to any internal scoring or orchestration system that also needs the signal.
Your internal stack can react to the same page-intent signal without building a separate event path.
How Meshes handles it
Instead of maintaining separate workers, retry logic, and visibility per destination, Meshes gives you one event path, destination-aware routing, and built-in delivery guarantees.
From your product
import MeshesEventsClient from '@mesheshq/events';
const meshes = new MeshesEventsClient(
process.env.WORKSPACE_PUBLISHABLE_KEY!,
);
await meshes.emit({
event: 'page.visited',
resource: 'page',
resource_id: 'salesforce-sync-setup',
payload: {
user_id: 'usr_8801',
email: 'sam@pipelineops.io',
page_url: '/app/setup/salesforce-sync',
page_title: 'Salesforce Sync Setup',
visit_count: 3,
referrer: '/app/dashboard',
plan: 'growth',
visited_at: '2026-03-21T16:02:00Z',
},
});Across destinations
On every delivery
Why this matters
A tutorial or alert only helps if it shows up when the user is still exploring the page that created the signal.
Pricing views, setup revisits, and docs loops are not just dashboard metrics. They are inputs for product guidance and human follow-up.
If high-intent page signals are valuable, they need retries, replay, and visibility just like any other business-critical event.
Related
Docs
See the event-ingestion pattern behind real-time behavioral routing.
Open linkDocs
See how threshold-based rules decide which destinations receive the visit signal.
Open linkIntegration
Launch tutorial and messaging context from the same visit signal.
Open linkIntegration
Send high-intent alerts directly to the teams that can respond fastest.
Open linkBlog
See why real-time event routing works better than waiting for analytics batches to catch up.
Open linkUse Case
See a related purchase-intent pattern built on repeated high-value page visits.
Open linkCompare
Compare real-time page-intent routing with hand-built webhooks, queues, and threshold logic.
Open link