Skip to Content
Dial v1 live 🎉
BeaconConfiguration

Configuration

Beacon configuration determines how the widget looks, what actions are available, and how it behaves. Configuration is managed in the Beacon Console  and delivered to the widget at runtime.

How Config Works

  1. You create and publish a config version in the Beacon Console
  2. When Beacon loads on your site, it fetches the config from api.dial.wtf/v1/beacon/config
  3. The config is validated against a Zod schema and defaults are applied
  4. The widget renders based on the resolved config

Configs are versioned — you can publish new versions and rollback to previous ones from the Console.

Config Modes

ModeDescription
remote (default)Fetches config from the Dial platform API, merges any local overrides on top
localUses only the provided overrides — no API fetch. Useful for development and testing

Remote Mode (Default)

<script data-dial-project="your-project-id" src="https://cdn.dial.wtf/beacon/v1/dial-beacon.min.js" async ></script>

Local Mode

<script src="https://cdn.dial.wtf/beacon/v1/dial-beacon.min.js" async></script> <script> window.addEventListener('load', () => { window.DialBeacon.init({ projectId: 'dev-project', configMode: 'local', overrides: { branding: { name: 'My App Support' }, lanes: { support: { enabled: true, label: 'Help' }, sales: { enabled: false, label: 'Sales' }, community: { enabled: false, label: 'Community' }, }, quickActions: [ { id: 'help', label: 'Get Help', lane: 'support', type: 'open_chat' }, ], }, }); }); </script>

Config Sections

The config is organized into sections:

SectionPurpose
brandingName, logo, colors, and theme
placementWidget position and z-index
triggersAuto-open rules (delay, path matching, exit intent)
lanesEnable/disable support, sales, and community lanes
quickActionsThe action buttons displayed in the panel
verifyWallet verification gates
handoffEmail capture, calendar booking, external links
faqCollapsible Q&A items
analyticsEvent tracking settings

Each section is covered in detail:

For the complete schema, see the Config Reference.

Config Overrides

When using remote mode, you can apply local overrides on top of the fetched config. Overrides are deep-merged, so you only need to specify the fields you want to change:

window.DialBeacon.init({ projectId: 'your-project-id', overrides: { branding: { // Override just the accent color, keep everything else from remote config accentColor: '#ff6600', }, }, });

ETag Caching

Beacon uses HTTP ETag caching when fetching config. The first request returns the full config with an ETag header. Subsequent requests include If-None-Match — if the config hasn’t changed, the server returns 304 Not Modified and Beacon uses the cached version. This minimizes bandwidth and latency on repeat visits.

If the network is unavailable, Beacon falls back to a locally cached config from localStorage.

Last updated on