Widget Customization
Tork Chat's embeddable widget is fully configurable via data-* attributes on the script tag. No JavaScript API required.
Attributes reference
| Attribute | Type | Description |
|---|---|---|
data-tenantrequired | string | Your unique tenant slug from the Admin Portal Install page. |
data-theme | "dark" | "light" | Widget colour theme. Inherits OS preference if omitted. |
data-accent-color | CSS colour | Primary brand colour applied to the send button, bubbles, and links. |
data-bot-name | string | Display name shown in the chat header. |
data-greeting | string | First message sent by the bot when the widget opens. |
data-position | "bottom-right" | "bottom-left" | Screen corner where the launcher bubble appears. |
data-language | BCP 47 tag | Forces a specific language. Supports en, pt, es, ar, zu. Omit for automatic detection. |
data-zindex | number | CSS z-index of the widget container. Increase if your site has higher-z elements. |
data-avatar-url | URL | Absolute URL to a custom bot avatar image (PNG or SVG, ≤ 64 px). |
Platform guides
<!-- Paste before </body> --> <script src="https://chat.tork.network/widget.js" data-tenant="your-slug" data-theme="dark" data-accent-color="#0077CC" data-bot-name="Aria" data-greeting="Hi! Ask me anything." async> </script>
// In functions.php or a site-specific plugin:
add_action('wp_footer', function() { ?>
<script
src="https://chat.tork.network/widget.js"
data-tenant="your-slug"
data-theme="dark"
async>
</script>
<?php });{%- comment -%} In theme.liquid before </body> {%- endcomment -%}
<script
src="https://chat.tork.network/widget.js"
data-tenant="your-slug"
data-theme="light"
data-accent-color="{{ settings.color_accent }}"
async>
</script>// components/TorkWidget.tsx
'use client';
import { useEffect } from 'react';
export default function TorkWidget() {
useEffect(() => {
const script = document.createElement('script');
script.src = 'https://chat.tork.network/widget.js';
script.setAttribute('data-tenant', 'your-slug');
script.setAttribute('data-theme', 'dark');
script.async = true;
document.body.appendChild(script);
return () => { document.body.removeChild(script); };
}, []);
return null;
}<!-- composables/useTorkWidget.ts -->
import { onMounted, onUnmounted } from 'vue';
export function useTorkWidget(tenant: string) {
let script: HTMLScriptElement;
onMounted(() => {
script = document.createElement('script');
script.src = 'https://chat.tork.network/widget.js';
script.dataset.tenant = tenant;
script.dataset.theme = 'dark';
script.async = true;
document.body.appendChild(script);
});
onUnmounted(() => document.body.removeChild(script));
}// Wix Editor → Settings → Custom Code → Add Code → Body (end) <script src="https://chat.tork.network/widget.js" data-tenant="your-slug" data-theme="light" async> </script>
Dark / Light mode
Set data-theme="light" or data-theme="dark". Omit the attribute entirely to automatically inherit the visitor's OS preference via prefers-color-scheme.
Dark mode (default)
data-theme="dark"bg-[#0a0e17], text-[#e8e6e1], bronze accents
Light mode
data-theme="light"bg-white, text-gray-900, brand-colour accents
Voice I/O
Voice input is off by default. Tork turns it on per tenant; there is no embed attribute for it. When it is on, the widget shows a microphone button. The recording is sent once, through Tork, to the transcription model (OpenAI whisper-1) and then discarded; the transcript fills the input box so the visitor can check it before sending, and the turn is recorded as spoken on its governance receipt. Spoken replies are a separate speaker button in the widget header, off until the visitor turns them on.
Mobile responsiveness
The widget is fully responsive. On viewports narrower than 480 px, the chat window expands to full-screen. The launcher bubble scales to 48 × 48 px for touch targets. Safe area insets are respected on iOS.