Chat widget

One snippet on the page,
the assistant is there.

The widget answers questions from your own knowledge base – with sources, in the language they were asked in, around the clock. This page describes every function in detail.

HeyKurt widget on a website
Two places it lives

Where the widget sits

🏨

On a hotel's website

Guests ask about amenities, how to get there and free dates before they book. With a connected booking engine the chat leads up to a pre-filled booking form. Fullscreen on a phone — which is why the QR code at reception or in the room works too.

For hotels & holiday parks
📥

On your help page

Customers ask there before they write a ticket. The widget answers from the same manuals and solved tickets as the internal chat. Per widget you decide which sources are shared and whether the source links stay visible.

For support teams
Embedding

One snippet before the closing body tag

The ready-made code with your widget ID and key is in the app under Integrations → Chat Widgets → Embed Code. It loads widget.js asynchronously, so your page never waits for it.

<!-- HeyKurt Chat Widget -->
<script>
  (function() {
    var script = document.createElement('script');
    script.src = 'https://app.heykurt.de/widget.js';
    script.async = true;
    script.onload = function() {
      HeyKurtWidget.init({
        widgetId: 'WIDGET-ID',
        apiKey: 'wgt_API-KEY'
      });
    };
    document.head.appendChild(script);
  })();
</script>

Widget ID and key differ per widget – the code above shows the structure, not your values.

Configuration comes from the server

On load, the widget fetches its settings from the app. Colours, welcome message, quick suggestions and language are changed there – your website never has to be touched again.

Allowed domains

With the domain list filled in, the widget only works on those domains. Empty means: wherever the snippet sits.

A switch instead of removing code

A disabled widget no longer serves any configuration and does not appear. The snippet can stay on the page.

Message limit per session

The default is 10 messages per minute per session, adjustable from 1 to 120.

Several widgets per account

One per property or per audience, for example: own welcome message, own colours, own key – the same knowledge base.

Open on load

Optionally the chat starts expanded rather than as a bubble, for instance on a service page built around it.

In the conversation

What happens in the chat window

The flow is built so that nobody sits in front of a spinner and nobody gets an invented answer.

The answer appears as it is written

Text is streamed word by word instead of arriving in one block.

Visible intermediate steps

When the assistant looks something up – availability, timetables, prices – the step shows in the chat. Completed steps stay visible with a checkmark; alternatively a single line just shows the current state.

Stop

While an answer is running there is a stop button. The input field is editable again immediately afterwards.

Line break instead of send

Shift+Enter, Ctrl+Enter and Cmd+Enter insert a new line. Enter sends.

Sources under every answer

Clickable cards show which documents the answer came from. Can be switched off per widget where guests should not see your internal document structure.

Connection drops are caught

If the connection breaks, the widget retries up to twice and says so as a status line. After 90 seconds without an answer it stops and shows your phone number and website instead of leaving the chat empty.

Honest when there is nothing

If the answer is not in the knowledge base, the assistant says so instead of guessing. You set that text yourself.

Own name, own tone

The assistant can carry a name – "Anna", "Concierge Max". Additional instructions per widget steer tone, terminology and whether it asks for an email address at the end.

Proactive instead of asking back

Switched on, the assistant supplies related information straight away – contact details, for instance – instead of asking a follow-up question.

Rotating placeholders

The input field can rotate several example questions instead of showing one fixed placeholder.

Languages

Two languages in one widget

Guests arrive with the language they speak. The widget does not have to be embedded twice for that.

Answers in the language of the question

Ask in Dutch and the answer is Dutch – even when the source document is written in German.

Switcher in the header

Guests change the language inside the widget. The choice is passed on to connected systems, such as the booking engine.

Welcome and suggestions in both languages

Welcome message, quick suggestions and the no-answer text exist in both languages and switch along.

Auto-translated or written by you

When the primary text is saved, the second language follows automatically. If you want to control the wording yourself, switch that off and maintain both sides.

Quick suggestions

Opening questions to tap

Suggestions take the first phrasing off the guest's hands and steer the conversation towards questions you can answer well.

Label and question are two things

The button says "Breakfast", what reaches the assistant is "When is breakfast served, what does it cost and how late can I come?".

Send at once or fill the field first

A click either sends the question straight away or only puts it into the input field so guests can adjust it.

Straight into the calendar

A suggestion like "Choose travel dates" opens the date and guest picker directly. For a button whose effect is always the same, there is no need to go through the assistant.

Visible after the click

Clicked suggestions do not disappear, they stay and are marked as chosen. The course of the conversation stays readable.

Appearance

The widget takes on your look

All settings apply per widget and take effect the next time the page loads, without touching the website code.

Colours

Primary colour, background, text, header text, message bubbles for guest and assistant, plus background and text of the suggestions – each set individually.

Type

Own font family and a base size from 12 to 18 px. Self-hosted font files are injected as @font-face – including house fonts that are not on Google Fonts.

Logo, hero image, avatar

Logo in the header, hero image above the welcome message, avatar for the answer bubbles – round, rounded or square.

Position and size

Bottom right, bottom left, as a top or bottom bar. The size is responsive: a minimum width in pixels and a preferred width in percent of the window, the same for height. Corner radius and the bubble's distance from the bottom edge are adjustable – useful where a cookie banner already sits there.

On the phone

Either fullscreen or as a sheet sliding up over the page, with adjustable height. Fullscreen is what makes the widget work behind a QR code at reception, in the room or at the pool.

Footer

The property name with a link to your own website on the left, the HeyKurt reference on the right – switchable off where the widget should carry no outside brand.

Colours from the booking engine

With a connected GauVendi booking engine, colours and type are read from there. Individual fields can be overridden deliberately while the rest keeps following automatically.

Booking in the chat

From the question to a pre-filled booking form

For hotels and holiday parks with a connected GauVendi Sales Engine. The assistant searches live availability and leads the conversation in stages up to the booking link.

Live availability instead of a price list

A request with dates and party size goes to the booking engine and comes back as an offer with the real price for exactly that stay.

Offers as cards in a carousel

Rooms appear as cards with image, price and features, not as a list in prose. The assistant can only show what the booking engine returned; an invented room is ruled out.

Capacity at a glance

Number of guests, bedrooms, size, extra beds and the pet policy are on the card.

Feature filter

Ask for a sauna, a balcony or a lift and only matching rooms come back, with the requested feature highlighted on the card. Synonyms such as lift and elevator are treated as one.

Calendar in the chat

Dates and party size are picked, not typed. The picker opens on request or straight from a quick suggestion.

Extras and rates

After the room is chosen, meal plans come as a single choice and other extras can be switched on one by one. Prices are for the actual stay rather than list prices, and the total updates with every click.

The link carries everything over

The booking form already holds room, rate, dates, party size, price and the chosen extras. Your guest lands at the point where all that is left is to confirm.

Order of the offers

For the first three slots you decide what goes there: cheapest, second cheapest, most expensive, most popular, recommended or random. Everything from slot four follows ascending, descending or randomly.

Location map

A map with the locations of the houses or apartments can sit under the welcome message. For spread-out holiday parks it answers the question about where a place is before it is asked.

Back to the overview

"See all offers" shows the last delivered cards again, without a new search. Change something fundamental – other dates, another party size – and a new search starts without losing the thread.

Knowledge base

Where the answers come from

The assistant answers exclusively from your sources. What is not in them, it does not invent.

Your website

Kurt follows the sitemap and internal links. Pages that build their content with JavaScript are detected and rendered in a browser – no configuration needed.

PDFs and manuals

Guest directory, user manual, price list. Images and screenshots inside them are described by image analysis and searched along with the text.

Your own pages

Short texts written directly in the app's editor, without going through a document first. A page is searchable about five minutes after saving, or immediately on request.

Wiki

Outline and Wiki.js are read, never written to. What you delete or move there stops appearing in answers.

Helpdesk tickets

Freshdesk, Zoho Desk and Odoo supply resolved tickets. Every solution your team once wrote becomes findable again.

ViCo Manager

For holiday parks running ViCo Manager, info, amenities, spa, check-in and FAQ are imported automatically.

One search across all sources

Meaning and keyword are combined: semantic search finds "the door won't close" under "hinge adjustment", keyword search hits article numbers and product names exactly. A re-ranking step then scores the candidates against the actual question.

Live data next to the archive

Plugins add what changes constantly: train and public transport routes with real timetables, availability from the booking engine, reservations and online check-in links from apaleo.

Analytics

What you see after the conversation

Every widget session can be read back in the app – not as a row of numbers, but as what the guest actually asked and clicked.

Sessions verbatim

The full conversation, filtered to the widget. From every card in the overview you jump straight into the session behind it.

What guests clicked

Which card was opened, which button pressed, which booking link followed – shown at the matching point in the transcript.

Traceable lookups

For every tool call, input and output can be inspected, down to the individual calls to the booking engine. Where an answer looks odd, the cause is visible rather than guessed at.

Knowledge gaps

Every question that could not be answered from existing sources is collected, grouped and sorted by frequency. If 15 guests ask the same thing in a week, it sits at the top.

Weekly report with a recommendation

A report analyses the most frequent gaps and proposes what to do: write an FAQ, update a document, pass it to the product side. The draft can be taken into the knowledge base as your own page with one click.

Operations & privacy

What happens on the guest's side – and what does not

No cookies

The widget sets no cookies and writes nothing to browser storage. The session identifier lives in memory and is gone when the page reloads.

Loaded asynchronously

The script is loaded asynchronously. Your page does not wait for it to render.

Hosted in Germany

Built and operated in Germany, data stays in the EU, GDPR-compliant.

Separated tenants

Every account has its own knowledge base with its own namespace in the vector database. Nothing flows between accounts.

Keys and domains

Every widget has its own key, which can be regenerated at any time, and a list of allowed domains.

Common questions about the widget

Do I need a developer to embed it?
No. The snippet is pasted once before the closing body tag. In WordPress, TYPO3, Webflow, Shopify or Wix that goes into the field for custom HTML in the footer. Anyone who maintains their own website manages it in a few minutes.
Does the widget set cookies?
No. It sets no cookies and writes nothing to browser storage. The session identifier exists only in memory and disappears when the page reloads.
Which pages does the widget run on?
Every page that carries the snippet. The list of allowed domains additionally decides on which domains it may work at all.
How quickly do changes take effect?
Changes to colours, texts and quick suggestions apply the next time the page loads. New content in the knowledge base is searchable about five minutes after saving, or immediately on request.
What happens when the assistant does not know something?
It says so instead of guessing – with a text you define yourself. The question is collected as a knowledge gap so you can add the answer.
Does the widget work on phones?
Yes. On small screens it opens fullscreen or as a sheet over the page. That is what makes it work behind a QR code at reception, in the room or at the pool.
Can I run several widgets?
Yes. Each widget has its own colours, welcome message, language and key. The knowledge base behind them is the same.
Can guests book in the chat?
With a connected GauVendi Sales Engine the chat leads up to the booking form, with room, rate, dates, party size, price and chosen extras already filled in. The booking itself is completed in your own booking engine.
What does the widget cost?
It is part of the plans and is not billed separately. Prices are on the pricing page; hotels and holiday parks have one of their own.
Can we run the widget without a HeyKurt reference?
Yes, the footer reference can be switched off. Logo, colours and type can be set entirely to your own look.

Try the widget on your own site

Create an account, point it at your website or a PDF, paste the snippet. 30 days free, no credit card needed.

Try for free

By the way: the widget in the bottom right of this page is the one described here. Ask it something.