Your agent, every visitor, 24/7
Proactive chat opens the conversation on your rules and hands it to your own AI agent with the visitor’s whole journey: the pages they read, how long, how far they scrolled, what they clicked, where they came from, and whether they have been here before. Your agent answers through one API. DeskCrew carries the chat, captures the email, and gets out of the way.
Last updated: October 2026
Install once, set a rule, connect your agent
Install the widget once
Paste the one script tag, or use the plugin for your platform, and switch on journey capture on the Proactive chat page. From then on the widget records, for your site only, the pages a visitor views, time on each page, scroll depth, link and button clicks, the landing page, referrer, UTM tags, device class, language and timezone.
Set a rule
A rule is a few conditions and a fallback opener: path contains, seconds on page, pages this visit, number of visits, utm_source, exit intent. Every condition in a rule must hold. The chat opens at most once per visit, never on checkout, cart or payment paths, and never again after the visitor closes it.
Connect your agent
On the Proactive chat page, enter the https address your agent listens on and, if it wants a key on incoming requests, the header name and value. One click subscribes that address to the three signed events (visitor.engaged, chat.message, visitor.identified), mints an API key with the tickets:reply scope, and shows one block to give your agent: the webhook secret, the API key, the reply URL and the setup page. Your agent replies through the API; if it has not answered within 5 seconds the rule’s opener is shown.
The whole journey, in one payload
Three signed events, the same shape each time: visitor.engaged when a rule opens the chat, chat.message for every visitor message, visitor.identified when the visitor gives an email. Abbreviated here; the full shape with a worked example is on the agent setup page.
This visit
Landing page, referrer, UTM tags, every page with seconds and deepest scroll, every link or button clicked with its text, and the page the visitor is on right now.
The visitor
Whether they have been here before, how many visits, when they first came, country, device class, browser language, timezone and local time. The last five earlier visits with their source.
The conversation
The last twenty public messages on the ticket, the customer record with past ticket count once an email is known, and a ready-made reply descriptor: the URL, the method and the body to send.
{
"event": "visitor.engaged",
"delivery_id": 48213,
"data": {
"workspace": { "id": 12, "slug": "acme", "name": "Acme Outdoor" },
"ticket": { "id": 9041, "status": "active", "url": "https://deskcrew.io/dashboard/tickets/9041" },
"rule": { "id": "pricing-45s", "name": "Pricing page, 45 seconds" },
"visitor": { "returning": true, "visitCount": 3, "device": "desktop", "localTime": "14:12" },
"currentPage": { "path": "/pricing", "title": "Pricing", "secondsOnPage": 47 },
"visit": {
"landingUrl": "https://acme.example/tents/alpine-2",
"referrer": "https://www.google.com/",
"utm": { "utm_source": "google", "utm_medium": "cpc" },
"pages": [
{ "path": "/tents/alpine-2", "seconds": 80, "scroll": 90 },
{ "path": "/pricing", "seconds": 47, "scroll": 60 }
],
"clicks": [{ "text": "Compare sizes", "path": "/tents/alpine-2" }]
},
"previousVisits": [{ "startedAt": "2026-10-09T09:30:00Z", "pageCount": 4, "source": "direct" }],
"conversation": [],
"reply": {
"url": "https://deskcrew.io/api/v1/tickets/9041/reply",
"method": "POST",
"body": { "body": "", "mode": "send", "askEmail": false }
}
}
}What is recorded, and what never is
Recorded: pages, time on page, scroll depth, link and button clicks (visible text and link only), landing page, referrer, UTM tags, device class, language and timezone.
Never recorded: keystrokes, form fields, anything typed into an input, or query strings other than UTM tags.
Kept 90 days, then deleted. Stored under random visitor and visit IDs in that site’s browser storage.
Off until the owner turns it on. A site with a consent banner sets window.DeskCrewConsent = false and the widget records nothing.
The journey leaves the platform only through the owner’s own signed webhook. Every agent message is stored on the ticket.
The full wording is in the privacy policy and the cookie notice. The chat bubble itself can also be kept off listed pages; checkout and payment pages are off by default.
Any agent that can receive a webhook and call an API
Grok Bot and the other agent platforms, a Zapier or Make style automation, or your own code. The contract is three signed events and one reply endpoint; there is no SDK to adopt and nothing to install on the agent side beyond an https address.
Pro and above
Visitor journeys, proactive rules and the hand-off to your own agent are part of the Pro plan and above: $29 a month or $290 a year, flat per workspace, no per-seat fees. The trial every new workspace gets counts. See pricing.
Proactive chat, asked and answered
What does my agent actually receive?
One JSON payload per event with the workspace, the ticket and its dashboard link, the rule that fired, the visitor profile, the current page, the whole current visit (pages with seconds and scroll, clicks, landing page, referrer, UTM), the last five earlier visits, the customer record once an email is known, the last twenty messages, and a reply descriptor with the exact URL and body to post. The agent needs no second lookup.
When does the chat open on its own?
When every condition of one of your rules holds: path contains, seconds on page, pages this visit, number of visits, utm_source, exit intent. At most one proactive open per visit, never on an excluded path (checkout, cart and payment by default), and never again in that visit after the visitor closes the bubble.
What happens if my agent is slow or down?
The visitor is never left looking at a typing indicator. If no agent reply exists 5 seconds after the chat opens, the rule’s fixed opener is posted. Deliveries that fail are retried once after a second and then on the normal retry schedule. While the chat is handed off, DeskCrew’s built-in assistant stays silent on chat tickets, so your team is notified as usual and can answer from the dashboard.
Which agents can I connect?
Any agent that can receive a webhook and call an API: Grok Bot and the other agent platforms, a Zapier or Make style automation, or your own code. The contract is three signed events and one reply endpoint, documented in full on the agent setup page.
How is visitor privacy handled?
Journey capture is off until you turn it on. It records pages, time, scroll, clicks, landing page, referrer, UTM tags, device, language and timezone, never keystrokes or form fields, and deletes visits after 90 days. A consent banner can switch it off per visitor with window.DeskCrewConsent = false. The data leaves only through your own signed webhook.
Can I use the rules without my own agent?
Yes. With the hand-off switched off the rule’s opener is posted the moment the chat opens and DeskCrew’s built-in assistant answers from your help articles as it does today. The journey is still kept on the ticket for your team.
Which plan includes it?
Visitor journeys, proactive rules and the hand-off to your own agent are part of Pro and above: $29 a month or $290 a year, flat per workspace with no per-seat fees. The trial that every new workspace gets counts, so you can set everything up and watch it run before you pay. Below Pro the widget serves no rules and records no journeys.
In one sentence: DeskCrew proactive chat opens the website chat on the owner’s own rules and hands the conversation to the business’s own AI agent with the visitor’s whole journey: pages, time on page, scroll depth, clicks, landing page, source, device and past visits, delivered by signed webhook so the agent answers through the API with nothing to look up.