Event:page.visited· Destinations:IntercomSlackWebhook
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 someone to infer intent after the moment has already passed. Multiplied by every workspace that wants its own tutorial trigger, that becomes a maintenance problem.
Behavioral routing changes that timing. When visit_count crosses a threshold on a meaningful page, the destinations each workspace has connected can react while the user is still in the product and still showing intent.
The event flow
Meshes receives the source event once, maps it to the right destinations per workspace, and keeps delivery visible when downstream APIs fail.
Event payload
page.visited{
"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"
}Meshes tags the user or updates context via the workspace's Intercom connection so the right tutorial or in-app message can appear.
The product can respond inside each workspace while the user still has intent, instead of after a delayed analytics sync.
Meshes alerts the channel the workspace owner picked when high-intent page behavior crosses the threshold.
The right internal team sees meaningful revisit behavior in real time inside each workspace instead of waiting for a report.
Meshes forwards the visit event to any internal scoring or orchestration system each workspace registered.
Your own internal stack and your customers' internal stacks 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
page.visitedenters Meshes onceimport 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 — in any workspace.
Pricing views, setup revisits, and docs loops are not just dashboard metrics. They are inputs for product guidance and human follow-up inside each workspace.
If high-intent page signals are valuable, they need retries, replay, and visibility per workspace 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 per workspace.
Open linkIntegration
Launch tutorial and messaging context per workspace from the same visit signal.
Open linkIntegration
Send high-intent alerts directly to whichever channel each workspace monitors.
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 per tenant.
Open linkpage.visited through Meshes once and let each workspace's Intercom, Slack, and internal systems react while the user still has intent.