Configure Chat locations, coverage, and widgets
Reviewed by Customer Help Product Support on July 23, 2026. Verified for release 2026.07.
Use Chat Settings to choose which locations offer Chat, set human coverage hours, and customize and install each brand’s customer-facing widget.
Prerequisites
Section titled “Prerequisites”- Chat must be available for the business. If the Chat area is unavailable, contact support to confirm Chat availability.
- The business needs a saved brand and at least one active, billable location.
- Billing must show Active or Trial. After changing a location, wait for its status to confirm the change.
- Each Chat location should have a confirmed city or region time zone, such as
America/Chicago, before scheduled coverage is saved.
Enable Chat for locations
Section titled “Enable Chat for locations”Chat locations selects the active, billable locations where Chat should be available. Select the intended rows and Save changes. Chat is available at a location when its row reports Enabled.
A row can show:
| Status | Meaning |
|---|---|
| Enabled | Chat is on for the location. |
| Pending | The change is waiting for billing confirmation. |
| Retry needed | The change could not be confirmed. The previous setting remains in use. |
| Off | Chat is off for the location. |
A checkbox is disabled when the location is inactive, is not billable, or the main subscription is not active. Chat costs the displayed price for each enabled location. Disabling Chat may create a prorated billing adjustment; it does not delete conversation history.
Configure location coverage
Section titled “Configure location coverage”Availability mode controls when the expanded location offers human service:
- Always available — humans are considered available at all times, subject to actual agent presence and capacity.
- Weekly schedule — coverage uses the enabled day windows in the location’s saved time zone.
- Unavailable — live human coverage is never offered; the widget follows its offline behavior.
For a weekly schedule:
- Day enabled includes that weekday in human coverage. A disabled day remains outside human coverage even when time inputs contain old values.
- Open time starts a coverage window in the location’s local time. Up to four windows can represent split shifts.
- Close time ends the window and must be later than Open. Windows must be ordered and non-overlapping. Overnight windows are unsupported; split them across two calendar days.
- Select Save and confirm. A missing time zone disables that action—fix it in Locations.
Copy coverage to copies the saved weekly schedule to another location. Confirm the destination’s time zone: copying 09:00–17:00 sets 9 a.m.–5 p.m. in the destination’s local time.
If a widget still shows an older brand-level schedule, keep it accurate until you have confirmed a time zone and coverage schedule for every Chat location.
Open a brand widget
Section titled “Open a brand widget”Each brand has a public widget ID that stays the same when you edit its name, path, or theme. Preview opens the experience without publishing a change. Copy code copies the installation snippet. Edit opens six settings tabs. Changes update the preview immediately but do not reach customers until Save Chat Widget succeeds. If another Administrator saved first, reload the latest settings and reapply your edits.
Experience fields
Section titled “Experience fields”Copy is authored separately for each enabled business language. A blank secondary-language field falls back to authored primary-language copy; Customer Help does not invent a translation.
| Field | Limit and effect |
|---|---|
| Chat header | Up to 80 characters; the title at the top of the panel. Keep it recognizable at every location. |
| Welcome headline | Up to 100 characters; the main prompt before a conversation starts. State what help is available. |
| Greeting | Up to 240 characters; the introductory customer message. Do not imply that a human is online outside coverage. |
| Online message | Up to 60 characters; the availability label during human coverage. |
| Offline status | Up to 80 characters; a compact status shown outside human coverage. |
| Unavailable headline | Up to 100 characters; the heading of the offline panel. |
| Unavailable message | Up to 240 characters; directs visitors to alternatives. Do not promise a response time the team cannot meet. |
| Message placeholder | Up to 100 characters; the hint inside the composer. It disappears when the visitor starts typing. |
| Launcher label | Up to 40 characters; text used by a pill-style launcher. Keep the localized action short. |
| Suggested questions | One per line, up to 500 characters total and at most six questions. Selecting one starts a visitor message; it does not change AI behavior. |
| Privacy note | Optional, up to 300 characters. Show a concise collection notice and link to fuller policy where needed. |
| Ask for a name | Choose Do not ask, Optional, or Required before starting. Requiring it can reduce starts; collect only what the service needs. |
| Privacy policy link | Optional absolute HTTPS URL to the business’s public policy. Test it without signing in. |
Appearance fields
Section titled “Appearance fields”| Field | Values and consequence |
|---|---|
| Launcher style | Icon or Icon and label. The latter displays the launcher label and takes more page space. |
| Appearance launcher label | Up to 40 characters. Keep the same localized intent as the Experience label and check that it fits the selected style. |
| Panel size | Compact, Standard, or Spacious. Test small screens and zoom before choosing Spacious. |
| Header style | Minimal, Solid color, or Gradient. Review logo and text contrast in the resulting header. |
| Launcher position | Bottom right or bottom left. Check for overlap with cookie, accessibility, support, and navigation controls. |
| Color source | Use brand colors follows the saved brand palette; Custom colors lets this widget use different values. |
| Primary color | Hex color used for main actions and identity. Maintain readable text and focus contrast. |
| Accent color | Hex emphasis color for interactive details. Do not rely on color alone to communicate state. |
| Background color | Hex surface color behind widget content. Verify contrast with text, fields, and disabled controls. |
| Corner roundness | Integer from 8 through 28 pixels applied to widget surfaces. Preview the extremes before saving. |
| Show the brand logo | Uses the public logo already configured for the brand. A private or broken logo URL cannot render in the widget. |
| Show “Powered by Customer Help” | On by default. Turning it off removes the footer attribution and has no billing effect. |
Behavior fields
Section titled “Behavior fields”| Field | Values and consequence |
|---|---|
| Concurrent chats per agent | Integer 1–100; defaults to 3. This is the maximum number of active conversations assigned to one available agent. |
| Offline behavior | Show contact options prevents message collection; Collect a message lets a visitor start a conversation outside human coverage. Review the offline text for the selected behavior. |
| Visitor transcripts | Off or Visitor opt-in. Opt-in is off by default. A visitor can request one emailed transcript after the conversation closes. |
| Prompt an inactive visitor | Never (the default), 5, 10, 15, 30, or 60 minutes. The clock starts after the latest agent or AI reply—not while the team or AI owes the visitor a response. A new agent or AI reply restarts it; a visitor message clears it. |
| Close if they do not confirm | 1, 2, 5, 10, or 15 minutes after the prompt; defaults to 5. This field is disabled when prompting is Never. The durable deadline continues through page reloads, sleeping connections, and temporary network loss. Closure keeps the transcript under the normal retention policy. |
| Time zone for older schedules | Appears only for widgets that still use an older brand-level schedule. Choose the correct city or region time zone, then set coverage for each location when ready. |
Visitor form, verification, and messages
Section titled “Visitor form, verification, and messages”- Open Chat expands the launcher into the panel, clears its displayed unread count, and marks the latest visible conversation activity as read. It restores an available saved conversation instead of creating a new one.
- Close Chat collapses the panel back to the launcher and stops the visitor’s typing indicator. It does not end, delete, or unassign the conversation; opening the panel again returns to the same available session.
- Choose a location appears when the widget has more than one available location. The selection is required and sends the conversation to the team for that location; it does not change the visitor’s browser location or any business setting.
- Your name follows the configured Ask for a name mode and accepts up to 80 characters. Optional may be left blank; Required must be completed before the chat starts. The name is saved with the conversation, so visitors should not enter private information.
- Security verification is a one-time anti-spam check before a new conversation starts. Start Chat remains disabled until the check completes. If it expires or is rejected, complete it again. If it does not load, allow
https://challenges.cloudflare.comin network and content filters, reload the widget, and retry once. - Visitor message accepts required text up to 4,000 characters. Enter sends; Shift+Enter adds a line. Wait for the delivery state before resending after a connection interruption.
- Visitor attachment is available only when attachments are enabled. The same type and size rules apply to visitors and agents. Empty, oversized, and unsupported files are not accepted, even if their extension is changed.
- Transcript email appears after closure only when Visitor opt-in is enabled. It requires a valid address of up to 254 characters. The request sends at most one automatic transcript for that conversation; verify the address before submitting because the form does not change the account or conversation owner.
- Start chat / Leave a message validates the selected location, required name, and security check before creating the conversation. Leave a message follows the configured offline behavior; selecting the action does not promise an immediate human response.
- Talk to an agent / Leave for an agent appears only when the active AI mode permits human support. It records a human request and moves the conversation toward the eligible team; it does not guarantee that an agent is immediately available. Do not press repeatedly while the first request is pending.
- Email transcript submits the transcript address once. Wait for confirmation instead of repeating the request. If delivery cannot be confirmed, contact support with the conversation time, brand, and location.
- Start a new chat leaves the closed conversation and returns to the start form. It does not delete the conversation history, and a new security check may be required.
- Try again reloads Chat after a load error. Correct connection, allowed-origin, or content-blocking problems first; repeated retries do not fix an incorrect setting.
- Send message is enabled only for nonblank text in an open conversation. Wait for the Delivered or Failed status before deciding whether to retry.
- I’m still here appears only after the configured inactive-visitor interval. Selecting it confirms activity, hides the warning, and restarts the full prompt interval without adding a transcript message. Sending a regular visitor message has the same keep-open effect. If neither happens before the displayed grace period ends, Chat closes the conversation and offers a new chat.
While AI is thinking or streaming, Chat shows the AI typing state and does not replace it with a reconnect warning during brief socket changes. A reconnect warning means both live delivery and its short recovery window are unavailable; if a completed AI answer does not appear, keep the panel open, verify the network allows wss://widget.customer.help, and retry after connectivity returns.
File fields
Section titled “File fields”Allow file attachments controls visitors and agents together. When off, neither side can add a new file, but previously retained conversation files are not deleted.
Maximum file size (MB) accepts an integer from 1 through 25 and defaults to 10. Accepted types are JPG/JPEG, PNG, PDF, HEIC, and WebP. Renaming a file does not change its type.
Availability tab
Section titled “Availability tab”Most widgets manage coverage by location. A widget that still uses an older brand-level schedule may show these controls:
| Older schedule control | Effect |
|---|---|
| Use availability all hours | Makes the widget available at every hour and ignores its day rows. |
| Day enabled | Includes that weekday in the schedule. A disabled day has no coverage. |
| Start time | Starts availability in the selected time zone. |
| End time | Ends availability and must be later than Start. Split an overnight period across two days. |
Keep these settings accurate while they are visible. Confirm every location’s time zone and set coverage by location when that option is available.
Installation and approved origins
Section titled “Installation and approved origins” Allowed origin authorizes an external website to load this brand widget. Customer Help-managed pages are approved automatically. Enter the exact HTTPS origin, such as https://www.example.com, with scheme, hostname, and any nonstandard port, but no path, query, fragment, wildcard, sign-in information, or trailing content. https://example.com and https://www.example.com are different origins.
Install the copied snippet once, normally before </body>:
<script async src="https://widget.customer.help/v1/loader.js" data-widget-id="chw_public_..."></script>Content Security Policy requirements
Section titled “Content Security Policy requirements”If the external site sends a Content Security Policy (CSP), merge these sources into its existing policy. Do not replace the site’s other directives.
| Directive on the site that installs Chat | Required source | Why it is needed |
|---|---|---|
script-src |
https://widget.customer.help |
Loads /v1/loader.js. Keep the site’s existing sources, nonces, and hashes. |
script-src-elem, when the policy defines it |
https://widget.customer.help |
A defined script-src-elem governs the loader <script> instead of script-src, so the widget host must also appear here. |
frame-src |
https://widget.customer.help |
Displays the Chat panel. Add frame-src explicitly when a restrictive policy currently relies on child-src or default-src instead. |
A minimal host-page example is:
Content-Security-Policy: default-src 'self'; script-src 'self' https://widget.customer.help; frame-src https://widget.customer.helpIf the policy already defines script-src-elem, merge the same host into that directive as well:
script-src-elem 'self' https://widget.customer.helpFor a nonce-based policy using 'strict-dynamic', place the site’s current per-response nonce on the copied loader element. Generate a new unpredictable nonce for every response; never paste the placeholder or reuse a fixed value:
<script nonce="{{CURRENT_RESPONSE_NONCE}}" async src="https://widget.customer.help/v1/loader.js" data-widget-id="chw_public_..."></script>The host page does not need to add Customer Help to connect-src, img-src, font-src, or style-src, and it does not need to add Cloudflare Turnstile to its own script-src or frame-src. Do not add 'unsafe-inline' solely for Customer Help. If the site sends more than one enforced CSP header, every applicable policy must permit the loader and Chat panel; one permissive header does not override another restrictive header.
Network and content-filter allowlist
Section titled “Network and content-filter allowlist”The parent-page CSP and a firewall, secure web gateway, DNS filter, browser extension, or privacy tool are separate controls. Network controls used by visitor browsers must permit:
| Scheme and host | Used for |
|---|---|
https://widget.customer.help |
Chat loading, messages, transcripts, and attachments. |
wss://widget.customer.help |
Live Chat updates after a conversation starts. |
https://challenges.cloudflare.com |
The one-time anti-spam check before a new conversation. |
| The public HTTPS host of the configured brand logo, when used | Loading that logo inside Chat. |
Chat does not request camera, microphone, or geolocation permission. Do not approve a wildcard origin or add a private key to make a blocked installation work.
Verify the installation
Section titled “Verify the installation”- Save the site’s exact HTTPS origin under Allowed origin, including a nonstandard port when one is present.
- Open a real page in a private browser window and confirm that the Chat launcher and panel appear. If the browser reports
403for the Chat panel, verify the page’s exact Allowed origin; loosening CSP will not approve an incorrect origin. - Confirm that security verification completes, then start a test conversation and send and receive a message. Test an attachment too when attachments are enabled.
- Return to Chat Settings and confirm Last seen updates for the installed widget.
- Read CSP console errors literally: a blocked loader points to
script-srcorscript-src-elem; a blocked Chat panel points toframe-src; a security-check failure points to access tochallenges.cloudflare.com; and repeated reconnecting may indicate thatwss://widget.customer.helpis blocked. UseContent-Security-Policy-Report-Onlyto evaluate a proposed policy before enforcing it, but remember that a report-only policy does not grant access blocked by an enforced policy.
Chat remembers an active conversation when the visitor closes and reopens the panel. It receives the page title and path, but not query strings or page fragments. Never add a password, secret, or private key to the snippet. Last seen updates after a real page at an approved origin successfully loads the widget.
Permissions, billing, and customer visibility
Section titled “Permissions, billing, and customer visibility”Only Administrators can configure Chat. Enabling a location adds the displayed Chat charge after confirmation. Saved widget text, appearance, coverage, offline behavior, attachment availability, and transcript choice can affect customers immediately. Allowed origins and widget IDs may be shared with the people installing Chat, but never publish passwords, secrets, or private account details.
Troubleshooting
Section titled “Troubleshooting”- Location checkbox disabled: confirm the location is active and billable and the main subscription shows Active or Trial.
- Save and confirm disabled: set a valid location time zone.
- Widget does not appear: confirm the exact Allowed origin, copied widget ID, HTTPS, CSP permissions, and whether Last seen updates.
- Pending or Retry needed: the billing change has not been confirmed. Follow the action shown with the status without repeatedly changing the checkbox.
- Offline at the wrong time: verify the location time zone, coverage mode and hours, saved confirmation, agent availability, and any older schedule still shown in Availability.
- Save conflict: reload the newest widget settings, reapply changes, and save once.