The ticket always gets through. A network error, a selector that stopped
matching, an answer nobody wanted, a request still in flight when the reader
loses patience — every one of them ends with the form submitting exactly as it
would have if the script had never loaded. A deflector that eats a support
request is worse than no deflector.
What the reader sees
1
They fill in your form as usual
Nothing changes until they press submit. If you set one, a short notice sits
next to the button saying an answer will be checked first.
2
The submission is held
The button disables, a progress line appears, and retrieval runs against your
knowledge base. There is a way past it at every moment.
3
An answer appears — or it does not
Below the confidence threshold, or with nothing in the corpus to answer from,
the modal never opens and the ticket is filed. Nobody is shown a guess.
4
They decide
That answered my question closes the modal and files nothing. Continue to
submit ticket re-fires their own submit event untouched. They can ask
follow-ups first, and rate the answer 👍/👎.
Where to go next
Quickstart
Create a deflector, paste three attributes, point it at your form.
Behaviour reference
Every option: selectors, events, copy, caching, timing, scope.
Styling
Colour, dark mode, typography — the modal renders inside your page.
Conversation hand-off
Carry what the reader already saw onto the ticket they filed anyway.
Deflection rates
How the number is defined, and what the skip reasons tell you.
User tracking
Anonymous by default; attribute a deflection to whoever filed the ticket.
Works wherever you can reach the form
The deflector runs entirely in the browser and attaches to markup, so it needs no integration with your helpdesk at all: Zendesk Guide, Freshdesk portals, Front, Salesforce Experience Cloud, WordPress, Webflow, Shopify and hand-built HTML forms are the same job — name the form, name the field that holds the question. Two things have to be true: you can add a<script> tag to the page (a few
portals restrict custom JavaScript — Jira Service Management is the usual one),
and the form is not inside a cross-origin iframe, which no script on your
page can read into. See the FAQ for what to do in
that case.
Where it is configured
Create a deflector under Workspace → Integrations → Support form deflector. The embed is then three attributes, and everything else — selectors, copy, thresholds, styling — is fetched at runtime:data-* attribute on the script tag still overrides the stored value, which
is what makes a one-page exception possible without creating a second deflector.
How the decision is made
The answer comes from the same retrieval pipeline as everything else in the product, run non-streaming, and it is checked twice before it is offered:- Retrieval assesses itself. How well the passages answer this question is
scored and normalised so that 0.5 is always the answerable boundary. A verdict of
not_coveredwithholds the excerpts and the citations — the model cannot assemble a plausible answer out of passages it was never given. - The answer is checked against its own sources. Claims the passages do not support drop the confidence to zero, and no modal opens. Retrieval scoring cannot catch this on its own: the passages can be right while the answer states a default value or a flag name that appears in none of them.
Limits worth knowing
Every deflection persists a conversation and messages like any other answer, so
it is rateable, appears in analytics, and is logged
as a
deflection trace. Retrieval excludes restricted documents: a support form
faces the public, unlike the Slack and Discord bots.