- Load the UI Kit Builder bundle on page load
- Initialize CometChat with your App ID, Region & Auth Key
- Automatically log in each visitor (using their Shopify
customer.idor “guest”) - Launch a docked chat UI on every page
What You’ll Build
A persistent, docked chat widget in your Shopify theme—fully configurable via Theme Settings or a snippet/app block.Quick Steps to Embed CometChat Widget
1
Register on CometChat & Gather Your Keys
Before you start, sign up at the CometChat Dashboard and create an app. Copy:
- App ID
- Region
- Auth Key
2
Paste the CometChat Embed Block
- In Shopify Admin, go to Online Store → Themes → … → Edit code.
- Open layout/theme.liquid (or the snippet/section where you want the widget).
- Near
</body>, paste the full block below. It loads the SDK, injects Shopify customer data, and initializes the widget:
3
Turn on Customer Accounts (recommended)
{{ customer.id }} and {{ customer.first_name }} only populate when Shopify customer accounts are enabled and the visitor is logged in.- In Shopify Admin, go to Settings → Customer accounts.
- Choose Classic customer accounts → Optional (or Required) and save.
- Log in as a test customer, reload your storefront, and confirm the widget now shows the real shopper name. If no one is logged in, the script safely falls back to
guest_<timestamp>.
4
(Optional) Expose Credentials in Theme Settings
To let non-developers manage credentials from the Shopify Theme Editor, add this section in config/settings_schema.json (just before the final
]):5
(Advanced) Use an Online Store 2.0 App Block
If your theme supports Shopify 2.0 app blocks, you can make a reusable section:
- Online Store → Themes → Edit code
- Under Sections, click Add a new section →
cometchat-widget.liquid - Paste the snippet from the previous step into that file.
- Save, then add it in Customize theme under App embeds or as a section on any template:
Advanced JavaScript Controls
The embed works out of the box. Use the helpers below only if you need to open a specific chat, listen for widget events, or change settings on the fly.Before you follow advanced setup steps
- Keep the standard widget snippet (from the Integration guide) on your page.
- Add another
<script type="module">right after it or inside your site builder’s “custom code” area. - Wrap your code in
window.addEventListener("DOMContentLoaded", () => { ... })so it runs after the widget loads. - Replace placeholder text such as
UID,GUID, andLANGUAGE_CODEwith your real values.
CometChatApp. Every example below shows a tiny recipe you can paste inside the script mentioned above.
Open a chat or start a call
Use these helpers when you want the widget to jump straight to a person/group or begin a call. Drop the snippet inside your custom script and replaceUID/GUID with real IDs from your CometChat app.
Listen for widget events
Run your own code when something happens inside the widget—new message, docked bubble opened, or someone switching chats. Keep the event names as shown; just change what happens inside each arrow function.Create/Update users on the fly
- This will only work with authKey
Create/Update groups on the fly
If you want to create groups directly from your page, use this snippet. Replace the placeholders and run the snippet after the widget loads.Log users in or out with code
Use an auth token if you have a backend, or fall back to a plain UID for quick tests. Run these helpers after the widget loads.Control where data is stored
Pick whether the widget should remember login info in the browser tab only (SESSION) or across visits (LOCAL). Update the placeholders, then drop this script right after the default widget embed.
Change the widget language
The widget auto-detects the browser language, but you can force it to any supported locale. Run the helper once after the widget loads and swap in the language code you need.| Language | Code |
|---|---|
| English (United States) | en-US |
| English (United Kingdom) | en-GB |
| Dutch | nl |
| French | fr |
| German | de |
| Hindi | hi |
| Italian | it |
| Japanese | ja |
| Korean | ko |
| Portuguese | pt |
| Russian | ru |
| Spanish | es |
| Turkish | tr |
| Chinese (Simplified) | zh |
| Chinese (Traditional) | zh-TW |
| Malay | ms |
| Swedish | sv |
| Lithuanian | lt |
| Hungarian | hu |
CometChatApp.localize("ko") for Korean).
Troubleshooting
- Widget not appearing?
- Confirm the embed script loads (check Network tab for
chat-embed@1.x.x) - Ensure the
<div id="cometChatMount"></div>exists once per page and is not hidden by theme CSS
- Confirm the embed script loads (check Network tab for
- Only guest IDs show up?
- Customer accounts must be enabled, and you need to preview as a logged-in shopper—not inside the Theme Editor preview
- Inspect
window.CURRENT_USER_ID/window.CURRENT_USER_NAMEin the console to confirm Shopify is populating them
- Login or user-creation errors?
- Use an App Auth Key (not REST API key) so
CometChatApp.createOrUpdateUsercan run - Check the Users tab in your CometChat Dashboard to ensure the UID being generated does not violate UID rules
- Use an App Auth Key (not REST API key) so