Install the website widget
Add customer chat to your website and verify both messages and AI replies.
Updated 2026-10-10
A white-label chat bubble for your site
Send and receive through your own system
Bring customer email into one inbox
Connect WhatsApp Business to serve customers
Connect Facebook Pages and handle messages
Receive and reply to Instagram DMs
Connect a LINE official account to serve customers
Connect a Telegram bot for customer messages
Connect a Zalo Official Account
Receive and reply to comments
Connect official enterprise customer service accounts
Authorize securely with Facebook
No App Secret, verify token, or Page token to copy. YundaDesk lists manageable Pages and checks the connection automatically.
Authorize myself
The current staff member manages the Facebook Page.
Connect with FacebookSelect a Facebook Page
Complete authorization in the new tab. It closes automatically and returns the result to this workspace.
YundaDesk subscribes messages, postbacks, delivery, and read events, then runs a live connection check.
Finish connectionChoose your email provider
Microsoft OutlookConnect an Outlook or Microsoft 365 mailboxChannel maintenanceMail settings are filled in from your address. You can edit them.
No preset matched. You can enter the mail settings manually in the next step.
Advanced settings
imap.yourbrand.com · 993smtp.yourbrand.com · 465Save disabled first, test IMAP and SMTP, and enable the channel only after both pass.
Connect & enableSelect customer service accounts
Each selected account becomes an independent channel that is enabled immediately, with AI replies off by default.
DEMO_REDACTED_IDENTITY_KEYWhen off, customers wait for a team member.
View the customer identity signing key in channel settings. Your website backend signs an HS256 JWT for the current signed-in user. Keep the key on your backend only.
Include user_id, widget_key, iat, and exp; set aud to yundadesk-widget-identity. Use Unix seconds for timestamps. A 5-minute token lifetime is recommended.
Run this code after website login. Replace /support/identity with your website endpoint, which returns { token }.
const loginSupport = () => YundaDesk.login({
getToken: () => fetch('/support/identity', { credentials: 'same-origin' })
.then(response => {
if (!response.ok) throw new Error('Identity request failed');
return response.json();
})
.then(({ token }) => token),
});
if (window.YundaDesk?.login) loginSupport();
else window.addEventListener('yundadesk:ready', loginSupport, { once: true });Call YundaDesk.logout() before website logout or account switching to clear the customer identity in the Widget.
Optional fields: name, email, phone, avatar, locale. custom_attributes accepts enabled customer custom fields only; use their field keys.
<script src="https://cdn.yundadesk.com/widget.js" data-yd-key="yd_widget_main" async></script>- Widget Key
- yd_widget_main
- Script URL
- https://cdn.yundadesk.com/widget.js
- Direct link
- https://cdn.yundadesk.com/?widget_key=yd_widget_main
Telegram bot setup guide
Three steps: ① find @BotFather to create a bot and get the token → ② paste the token on the left → ③ save and enable; the system receives new messages automatically.
1. Create a Telegram bot
- In Telegram, search for @BotFather and open the chat.
- Send /newbot to create a new bot.
- Follow the prompts to set a display name and username (ending in _bot).
- Copy the bot token returned by BotFather.
2. Enter the token on the left and enable
- Paste the token into “Bot Token” on the left.
- Click “Save” at the top, then “Enable”.
- Click “Test connection” to verify the bot token works.
3. Test the bot
- Search for the bot username in Telegram and start a chat.
- Send any message and AI / an agent will reply automatically.
- See Telegram Bot API docs.
Inbound webhook URL
Copy this full URL into the webhook settings of the third-party console so customer messages reach YundaDesk.
https://api.example.invalid/hooks/channel/line/demo-onlyCopyLINE Official Account setup guide
1. Enable the Messaging API
- Sign in to LINE Official Account Manager, select the official account to connect, and enable the Messaging API under Settings > Messaging API.
- Copy the Channel ID and Channel Secret from the same page.
2. Save and enable in YundaDesk
- Enter the Channel ID and Channel Secret on the left and save. YundaDesk verifies them with LINE and then shows the matching LINE Official Account.
- Click Enable so the channel starts receiving messages.
3. Set up the webhook and test
- Copy the inbound webhook URL above, paste it into Webhook URL under Settings > Messaging API in LINE Official Account Manager, and save.
- Turn on Webhook under Settings > Response settings. We also recommend turning off auto-response and greeting messages so customers don't get duplicate replies.
- Back in YundaDesk, click Test connection. Once it passes, send a message to the official account from LINE and check that it appears in Chat.
The channel credential has expired. Please reauthorize and try again.
Connection failedBot receiving conflict
Bot webhook is active
Telegram bot setup guide
Three steps: ① find @BotFather to create a bot and get the token → ② paste the token on the left → ③ save and enable; the system receives new messages automatically.
1. Create a Telegram bot
- In Telegram, search for @BotFather and open the chat.
- Send /newbot to create a new bot.
- Follow the prompts to set a display name and username (ending in _bot).
- Copy the bot token returned by BotFather.
2. Enter the token on the left and enable
- Paste the token into “Bot Token” on the left.
- Click “Save” at the top, then “Enable”.
- Click “Test connection” to verify the bot token works.
3. Test the bot
Callbacks go through YundaDesk fixed secure egress. If your receiver restricts sources, add the egress IPs to its allowlist.
Callbacks go through YundaDesk fixed secure egress. Allowlist these IPs: 203.0.113.10, 203.0.113.11
View allowlist IPsCustom API setup guide
1. Create a Custom API channel
- Enter the channel name and “your system callback URL” on the left.
- After saving, the system generates a connection key and signing key to confirm message ownership and request authenticity.
- (Optional) Add an IP allowlist to restrict sources.
2. Forward customer messages to YundaDesk
- POST messages as JSON to the webhook URL above.
- Include the connection key, timestamp, signature, and idempotency key in the headers.
- A 200 response means received; other statuses are treated as failures and retried.
3. Receive reply pushes
- Once enabled, YundaDesk pushes agent / AI replies to the “your system callback URL” you entered on the left.
- Deduplicate by external message ID for idempotency.
| Event | Time | Status |
|---|---|---|
| message.created | 2026/07/28 14:20 | Delivered |
| message.created | 2026/07/28 14:06 | Timeout · retrying |
| conversation.assigned | 2026/07/28 13:41 | Signature rejected |
Publish a public help center so customers can find answers on their own and cut repeat questions.
Install one YundaDesk plugin to add live chat, AI support, and a secure Widget binding to a WordPress site.
Use the same YundaDesk WordPress plugin; after WooCommerce is detected and authorized read-only, sync store, customer, order, product, and current cart context.
Connect SHOPLINE to sync orders, customers, and products, and enable YundaDesk storefront chat in the theme when needed.
Connect a BigCommerce store, sync customer order context, and show recent orders in the workspace sidebar.
Can’t find what you need?
Store actions awaiting approval
Review the store-generated preview before approval. Approval triggers one controlled commit; changed inputs require a new preview.
Create recovery discount · DEMO-SAVE10Live store preview · 10% · Demo Yundastore
The store has not returned a definitive result. Do not submit it again; this control only queries the result and never repeats the action.
Check resultRequest
Inputs
Outputs
Usage rules
☑ Require verified customer identity
Only customers verified in the current conversation can use this function. Otherwise, execution pauses.
Request
Enable only if this POST endpoint queries data without changing it.
Inputs
Parameter settings
Sent as a JSON body field. Enter valid JSON and describe its structure in the parameter description.
Request
Inputs
Usage rules
Result verification (optional)Use the API response by default. Add a read-only check if further verification is needed.
View tests and Agent calls for this function.
Select tools for future use. Saving does not grant Agent execution permission.
Credentials are stored securely and never displayed.
Connectors
Choose the functions this Agent can use. Calls follow function settings and business rules in skills.
Search connections or functions
☑ lookup_order
☐ lookup_order Select the output fields available to the Agent first.
☐ lookup_refund Configuration changed. Select again to authorize.
| Customer | Channel / source | Location / language | Tags | Last interaction | Added | |
|---|---|---|---|---|---|---|
| MMaria Garciamaria@example.com | Web Widget | 🇪🇸 SpainSpanish | 05/22/2026 | 05/18/2026 | ||
| LLukas Schneider+49 30 123456 | Telegram | 🇩🇪 GermanyGerman | 05/20/2026 | 05/16/2026 | ||
| AAna Silva | 🇧🇷 BrazilPortuguese | 05/22/2026 | 05/16/2026 |
| Agent | Role | Reception channels | Readiness | Status |
|---|---|---|---|---|
| AAlexManaged AI | General reception | Website · WhatsApp | Ready | Running |
| NNovaManaged AI | General reception | Messenger | Ready | Running |
| SSamExternal AI | General reception | — | Setup incomplete | Draft |
Choose which tools and actions this Agent may call. These switches never replace runtime authorization, approval, or audit.
When a customer asks where an order is, look it up first, then reply in brand voice.
Yuna finds opportunities in real customer conversations. Nothing updates knowledge or skills until you approve it.
↳Yes, Brazil shipping usually takes 7-12 business days.
Human answered·1↳Auto-detect VIP customers · Detect VIP status and prompt agents to follow up first.
Human answered·1·L2 risk↳Opened items can be returned within 30 days if the package is complete.
Human answered·1↳If DHL has not updated for over 72 hours, check the order first, then hand off for compensation review.
You corrected·1·L2 riskManage how Agents handle customer-initiated requests. Skills affect live conversations only after simulation and publishing.
2 items| Skill | Status | Use case | Last 7 days | Actions |
|---|---|---|---|---|
| Order tracking lookupWhen a customer asks where an order is, look it up first, then reply in brand voice. | Active | Lookup | Used 12 times92% success | |
| Auto-detect VIP customersDetect VIP status and prompt agents to follow up first. | Testing | Triage | Not used yet |
Conversation volume, response efficiency, and AI service quality at a glance.
Last 7 daysLast 30 daysLast 90 days| Dimension | Conversations | Messages | Avg. first response | Resolved | Share |
|---|---|---|---|---|---|
| Web Widget | 712 | 4,128 | 38s | 496 | 60% |
| Telegram | 284 | 1,620 | 45s | 219 | 24% |
| 198 | 980 | 3m 12s | 146 | 17% |
Language & timezone
Local time 16:30 · UTC+00:00
Appearance
Account actions
Danger zone
The workspace is disabled immediately. Ops can restore it within 2 hours; after that it is permanently deleted.
Delete workspaceAgent identity
PNG, JPG, or WebP up to 5 MB
Project identity
Reply entries
Create your first quick reply; agents can invoke it by typing /.
New quick replyBrand configuration
256×256 PNG / SVG recommended; you can crop to a square after uploading
Notification permission
Notification settings
Notification scenes
Test notification
Send testSend a test notification to verify everything works.
Send key
Conversation handling
Translation settings
Create a subscription to push events to your own backend for integration or data archiving.
AI Credit
Buy AI CreditCurrent cycle resets on 09/30/2026
Plan quota 10,000
Knowledge import, parsing, and offline compilation do not consume AI Credit
Record list

Subscription active
Current cycle ends 09/30/2026.
AI Credit
Pro and Enterprise support connecting your own AI in Agents. External AI has no additional charge and uses no YundaDesk AI Credits. Third-party AI fees are paid separately; managed AI continues to use Credits.
2,400 used
Current cycle resets on 09/30/2026
1,000 used
Other usage
Seats used
3Channels connected
2Yuna requests completed this month
42New conversations this month
128Messages this month
580Documents indexed
12Deliveries this month
0These workspace-wide rules apply to proactive customer outreach. They do not affect internal reports sent to you.
Cooldown is 24 hours per customer; at most 2 touches in 7 days.
Quiet hours
Contact frequency
Team members
| Member | Role | Status & skills | Last sign-in | Last used | Actions |
|---|---|---|---|---|---|
| ACAnna ChenMeanna@yundadesk.testOnline | Admin | ActiveEnglishRefundsMax 12 concurrent | Today, 09:42 | 2 min ago | |
| LWLeo Wangleo@yundadesk.testOnline | Agent | ActiveEnglishAfter-salesMax 6 concurrent | Yesterday, 18:20 | Today, 10:06 | |
| MGMaria Garciamaria@yundadesk.testOffline | Agent | PendingSpanishPre-salesMax 8 concurrent | — | — |
Could not establish a secure connection. If the site is HTTP-only, crawl it again with an http:// URL
| Document | Size | Tags | Updated | Status | Actions |
|---|---|---|---|---|---|
| demo-owner/support-guide 2 | — | — | Updated Jun 3, 2026, 4:00 PM | Healthy |
| Document | Size | Tags | Updated | Status | Actions |
|---|---|---|---|---|---|
| https://tgo.ai/help/shipping· 47 pages | — | — | — | Searchable | ⋯ |
| Support knowledge · Notion · 128 docs | — | — | Last synced 2026/07/29 03:10 | Retrievable | ⋯ |
| Brazil shipping timelines | — | Updated Jun 3, 2026, 4:00 PM | Searchable | ⋯ | |
| EU customs & duties | — | Updated Jun 4, 2026, 2:30 PM | Indexing | ⋯ | |
| 30-day refund policy | — | Updated Jun 2, 2026, 8:00 PM | Searchable | ⋯ |
| Document | Size | Tags | Updated | Status | Actions |
|---|---|---|---|---|---|
| Brazil shipping timelineshttps://tgo.ai/help/shipping/brazil | — | shipping | 10/04 | Searchable | ⋯ |
| Load more | |||||
| Document | Size | Tags | Updated | Status | Actions |
|---|---|---|---|---|---|
| Brazil shipping policy | — | Updated Jun 3, 2026, 4:05 PM | Waiting to index | ⋯ | |
| EU customs & duties | — | Updated Jun 4, 2026, 2:30 PM | Indexing | ⋯ | |
| Brazil shipping timelines | — | Updated Jun 3, 2026, 4:00 PM | Searchable | ⋯ | |
| Import restrictions PDFError: The PDF contains no readable text | — | Updated Jun 7, 2026, 4:30 PM | Indexing failed | ⋯ |
| Document | Size | Tags | Updated | Status | Actions |
|---|---|---|---|---|---|
| https://tgo.ai/help/shipping · 0 pagesProcessed 3 / Discovered 50 pages | — | — | Crawl job running | Crawling | ⋯ |
| https://tgo.ai/help/shipping · 47 pagesLast sync succeeded · 47 pages | — | — | Last synced Jun 20, 2026, 4:00 PM | Searchable | ⋯ |
| Customer question | Standard answer | Source | Tags | Status | Actions |
|---|---|---|---|---|---|
| Do you ship to Brazil? | Shipping to Brazil usually takes 7-12 business days. | Compiled · Brazil shipping policy | Enabled | ⋯ |
Stop syncing and keep this source's 2 documents. Existing content can still be used in AI replies.
Stop syncing and move this source's 2 documents to Trash. They will no longer be used in AI replies. The remote repository and other sources will not be changed.
Separate with commas; * and ** are supported. Exclusions win. Select at least one file type.
2 files to import
- help/shipping.md
- help/returns.md
No files match. Adjust the selection or filters and preview again.
Connect Notion, choose the pages to sync, and import documents automatically.
Connect NotionNotion is not connected yet
Test the saved reception setup as a visitor without creating a real conversation.
What needs my attention today?
Three things: 2 learning suggestions to review and 1 outreach waiting for your confirmation. Yesterday's auto-resolution hit 84%, up 3 points.
Support Agent · External AI
External setup
Edit external AI- Connection
- OpenAI Chat Completions
- Endpoint
- https://api.example.com/v1
- Key
- Configured · DEMO-REDACTED
Maintain persona, knowledge, and reply logic in your external service. Use “Edit external AI” to update the endpoint or key, and the preview on the right to test replies.
External AI only handles auto-replies. It is not written into YundaDesk AI learnings and does not generate AI skills.
Your plan does not include external AI, so external reception is paused and its configuration is retained. Upgrade to Pro to resume, or create a managed Agent and reassign its channels.
Choose which tools and actions this Agent may call. These switches never replace runtime authorization, approval, or audit.
When a customer asks where an order is, look it up first, then reply in brand voice.
Both visitors and agents will see this name
Online queue, no-agents-online, and agent-joined notices apply only to messaging channels. Email channels do not send these three reception messages.
This Agent can only search explicitly selected content. Its reception focus never grants knowledge access.
Knowledge searchCould not generate suggested questions. Please regenerate them.
Selected channels are handled by the current AI. Channels not selected here will not use AI replies.
SelectOpen your connected Website Widget under Channels.
The website widget lets visitors start a conversation without leaving your site.
Install the widget#
- Open Channels and select Website.
- Enter a channel name and add every exact, trusted site origin that may use the widget. Leaving the list empty removes the origin restriction and is not recommended for production; if you use it temporarily for testing, add the production origins before publishing. Live preview in the YundaDesk tenant console remains available and does not need to be added.
- Save the configuration and copy the generated installation code.
- Add the code to every page where chat should appear, usually before the closing page tag.
- Publish the website and refresh the page.
When you install through a supported store app, the widget code may be added automatically. You should still test the real storefront.
Find the signed-in customer setup guide#
If the Website channel configuration shows Customer identity signing key and no key exists yet, start with Generate key on the right side of the field. For an existing key, select the eye icon on the right to reveal it. The icon then changes to Copy key; a successful copy hides the key and restores the eye icon.
Select the question mark beside the label to read the brief hint, then select Setup guide for the full instructions. You can also focus the question mark with the keyboard and press Enter. Continue to use Install code at the top of the page to view and copy the installation snippet.
Verify the connection#
Open the site in a private browser window, start a chat, and verify that:
- a new conversation appears in the Inbox;
- customer name and source are correct;
- a human reply reaches the widget;
- after AI reception is enabled, the AI reply reaches the real widget.
The preview on the channel settings page runs the same interactive widget, so you can type and send a message to verify reception; it is not a static mockup. The settings preview opens the chat panel by default, while the widget on a published site remains collapsed by default. Returning visitors see only their latest conversation. When no history exists, the same Home position shows Chat with support. Opening the widget does not ask for email automatically. When Ask for email is on (the default), the first-conversation email form appears only after the visitor selects Chat with support, then continues to the composer after submit or skip. Turn the switch off to open chat immediately. A closed conversation remains readable; sending again starts a new reception session for the same visitor instead of creating a duplicate customer. Opening the widget, reading history, or selecting the entry alone does not add an empty conversation to the queue.
Each Website channel has its own installation identifier, visitor identity, and conversation history. Previews for multiple Website Widgets in the same workspace do not share conversations. Always copy the installation code generated by the current Website channel instead of reusing another Widget's code on a different site. Closing and reopening the same Widget, or returning Home and reopening the same conversation, preserves the current content, reading position, and already loaded brand images instead of loading from a blank screen or the first message again; new history still refreshes in the background. If AI is still generating a reply, returning Home or reopening the same conversation restores the three-dot reply indicator; another conversation does not inherit it.
Complete AI and agent replies support Markdown formatting, including headings, lists, quotes, code, links, and tables. Wide tables and code blocks scroll inside the message bubble instead of expanding the chat window. For safety, raw HTML and remote Markdown images in replies are not loaded.
Set the Widget interface language#
Open Channels, select the Website Widget, and find Interface language in its configuration. Choose English for a fixed English interface, then save and refresh the published website. Reopen the channel configuration to verify the saved selection. This setting is also available on Free and applies only to the selected channel.
Choose Automatic to follow the language declared by the website, then the visitor's browser preferences if that language is missing or unsupported. Available fixed languages are English, Simplified Chinese, Traditional Chinese, Japanese, Korean, Spanish, Brazilian Portuguese, French, German, Indonesian, Thai, and Vietnamese. Automatic falls back to English when none match.
The live preview reflects your language selection before saving. With Automatic selected, the language switch beside Preview lets you simulate a visitor language without changing the saved setting. With a fixed language selected, the preview uses that language. Switching languages does not edit your source copy.
You can also ask Yuna to set a named Website Widget's interface to English or Automatic. Check the selected channel and proposed language before confirming the change. This is separate from AI reply language and the visitor default language under staff chat tools, which controls message translation rather than Widget buttons or interface text.
Ask for email#
Open Channels, select the Website Widget, and find Ask for email in website channel settings, above Hide attribution. It is on by default: when a visitor starts their first chat, the widget asks for an email and they can skip. Turn it off to open the conversation immediately.
You can also ask Yuna to turn visitor email collection on or off for a named Website Widget. Check the selected channel and the proposed setting before confirming. Turning it off does not delete emails already saved, and visitors can still share a contact later in the conversation.
When you create a Website channel, YundaDesk automatically generates its welcome message from the visitor's Widget language and the workspace brand name, not the channel name. Under Display settings, edit one source set for the Home title, Home description, and new-conversation welcome message. YundaDesk translates that copy for the visitor's Widget language, so you do not maintain separate language versions. The live Widget can preview unsaved edits in the source language; when you switch to another language, it loads that translation instead of continuing to show the source copy. Suggested questions also load for the preview language. If translation is temporarily unavailable, source-language merchant copy is not exposed to a visitor using another language. The Agent's automatic-question preview offers retry on a load failure rather than reporting an empty knowledge base.
Visitors can mute notification sounds with the speaker button in the chat panel. If a new notification appears without sound, check browser sound permissions; some browsers block playback until the visitor interacts with the site.
Manage contact methods in the separate Contact us setting for each Website Widget, rather than inside Display settings, with a maximum of eight items. Select Manage to:
- add an already connected Telegram, LINE, WhatsApp, email, or other supported channel;
- add a validated public link manually;
- upload a QR code or contact image for WeChat, LINE, and similar methods;
- use capsule switches to control visibility, reorder items, or remove them.
Editing requires the Manage channels permission. Read-only members can see the configuration but cannot change it. Other channel settings pages now show only which Website Widgets use that channel and provide an Open settings link; they no longer assign Widgets in reverse. If a provider public address is not ready, you can still add the contact manually from the Widget manager.
Visitors first see the public name you configure under Contact methods. A connected channel without a separate public name uses that channel's configured name. Only an empty name falls back to the standard channel type in the visitor's UI language, such as 微信 in Chinese and WeChat in English. The home screen shows Contact us only when at least one public contact method is enabled. Selecting it shows enabled options such as Email, Telegram, LINE, QR codes, or contact images inside the Widget. When Ask for email is on, the optional email form for identifying a visitor appears only after Chat with support is selected for the first conversation and never appears as a contact method; add a separate Email contact method when you want to publish a support address. The settings-page preview reflects enabled, ordered, and newly added contact methods before save, while sensitive configuration remains hidden from visitors. Telegram usernames appear as @username in channel settings; when one cannot be detected automatically, you can enter a valid public username manually.
Under Display settings → Suggested questions, enable Home or Empty chats, then save. The switches are independent; turning both off hides questions while keeping the saved content. Select Manage to open the reception Agent, edit the display list, or regenerate candidates. See Manage suggested questions.
Brief connection interruptions do not add a persistent error banner to the home screen. If “Restoring connection” appears above the message input, select it to retry; the hint disappears when the connection recovers. A sent message confirms that message was sent successfully. If replies do not arrive, check your network or contact the website’s support team.
If the visitor session is unavailable, select the notice to retry. Displayed messages and unsent text remain in place, and you can continue chatting after recovery. If the same notice keeps returning, copy any unsent text before refreshing the website page.
Troubleshooting#
- Widget is missing: If allowed domains are configured, verify that the site's scheme, host, and port match exactly. Also check deployment and browser cache.
- Inbound works but replies do not: Check channel state and delivery details.
- AI does not reply: Confirm that Website is enabled in Reception settings, AI usage is available, and knowledge processing has completed.
