Widget channel — Overview
The Widget channel receives support and quote requests from the website. Visitors open a chat on the site; messages arrive in Quoting24 as tickets and operators reply from the usual interface, with the same logic already used for the other channels.
The interface runs in an iframe. The host site only needs a script and, when the data is already known, a call to init(). Angular, a Supabase client, or direct access to the Quoting24 database are not required.
Which integration you need
Associating a company and restoring history are separate operations. external_id, company_name, name, phone, and email do not authorize access to another person’s conversations. A user already authenticated on the site remains a widget guest until the site passes a valid restore credential.
| Case | What to implement | Continuity | Section |
|---|---|---|---|
| Public site, unknown visitor | Script only. The visitor fills in the contact form. | Guest session in the same browser | Widget B2C |
| Site that already knows the profile and company | Script and init() with the profile and company data |
Prefilled guest session and company association | Widget B2C |
| Portal with personal history across devices | Also a backend integration for external_user_id and restore_id |
Personal history on the authorized widget channel | Widget B2B |
| Field contract, CSP, login/logout, provisioning | Developer guide | — | Technical integration |
What the widget does
- Shows a floating button or a chat embedded in the page
- For a new visitor, opens the form labeled Telephone and Name. In
init()the fields arephoneandname; the email, when the site knows it, isemail - If the site calls
init(), uses the data already available and can link the contact to a company throughexternal_id(web_code). If the company is missing andcompany_nameis also sent, it can create it - Opens a conversation managed in Quoting24 like the other channels
- Accepts PDF, DOC/DOCX, JPG/JPEG, and PNG attachments, up to 10 MiB per file and 100 MiB of referenced attachments per conversation
- Shows the greeting, the welcome message, and, outside working hours, the configured banner. Message composition stays available
The loader stores the guest credential in the site’s localStorage, separated by widget key. If storage is blocked, continuity may be limited to the current page. The guest session can reread its most recent conversation after the tab is closed, in the same browser. Another device requires authenticated restore.
Where to configure it in Quoting24
- Open Settings → Channels (Impostazioni → Canali)
- Select the Widget channel
- Open the configuration
From there you set:
- logo, primary color, button position
- greeting message, welcome message, out-of-hours message
- allowed domains
- embed code (full script URL and public widget key)
The channel hours determine the out-of-hours banner.
Ask the administrator for the embed code and the authorized domains, including staging and local development. Use the URL and key of the same environment. In the examples, replace WIDGET_HOST and PUBLIC_WIDGET_KEY with the values you received.
Authorized domains are host names, for example shop.example.com or localhost, without https://, port, path, or a *. prefix. example.com also authorizes its subdomains. An empty list applies no domain restriction. For local testing, serve the page over HTTP: opening it as a file is not enough.
Logo, color, position, and messages are configured in Quoting24. The company_name passed to init() is the customer’s legal name, not the widget title. There is no public language or locale parameter: the current interface is in Italian.
Two ways to show it on the site
Floating button
The script adds the button after the visual settings load. A click opens the chat. On mobile, the floating chat expands to fill the viewport.
See Widget B2C.
Embedded chat
The chat fills a page container with an explicit height. There is no floating button: the site provides layout and title. In this mode open(), close(), and toggle() have no effect. The site controls the container height and width.
See Widget B2C.
One instance per page: the loader exposes a single window.Quoting24Widget. A second script does not create a second widget.
Public key and secrets
| Value | Where it lives | What it is for |
|---|---|---|
| Public widget key | Script URL | Selects the channel. It is public: it is not a personal credential and not a backend integration secret |
| Private integration secret | Site backend only | Authorizes creating and reusing restore_id |
restore_id |
Private per-user store, in the backend | Credential used to restore that person’s history on that widget |
| Guest session credential | Site localStorage, managed by the loader |
Guest continuity in the same browser, per widget key |
Operator flow
- The visitor opens the chat on the site and sends a message
- Quoting24 creates or continues a ticket on the Widget channel
- If initialization resolved an
external_id, the contact is linked to the company with thatweb_code. A company just created by the widget has the legal name and, if sent, the email; an existing company is not renamed byinit() - The operator handles the request and replies from the chat
- The customer sees the replies in the widget
Widget messages can be deleted only for everyone.
The data comes from the browser and the visitor can change it. The company link does not prove identity and does not open the history of the other contacts of that company.
Where to start
- Configure appearance, hours, and domains in Settings → Channels → Widget
- Public site, or a portal that prefills the profile: Widget B2C
- The same person’s history on another browser: Widget B2B
- Fields, company creation, CSP, and checklist: Technical integration