Reqdesk Widget
Embeddable bilingual support widget. Drop in a script tag, point at your workspace, get a real ticket conversation. RTL-aware. Theme-aware. CDN-pinned.
Install
<script async src="https://cdn.reqdesk.support/widget/latest/index.iife.js"></script>
<script>
window.addEventListener('load', () => {
window.ReqdeskWidget.init({
apiKey: 'your-project-api-key',
apiUrl: 'https://api.reqdesk.support',
language: document.documentElement.lang || 'en',
})
})
</script>
The Reqdesk widget is the fastest way to give end users a path into your support workspace. One script tag, no iframe sprawl. The widget renders into the host page, picks up your theme, switches RTL when the host’s dir does, and opens a real ticket on submit — not a “we will get back to you” form.
Configuration
The IIFE entry exposes window.ReqdeskWidget. Boot it with init(...):
| Field | Required | Description |
|---|---|---|
apiKey | yes | The platform API key issued for the project the widget should write into. |
apiUrl | no | Base URL of the Reqdesk API. Defaults to window.location.origin — set explicitly when embedding on a third-party site. |
language | no | en or ar. Defaults to the host page’s <html lang>. |
theme | no | Theme override object (colors, radii). Inherits brand defaults if omitted. |
customer | no | Pre-fill known-user metadata ({ email, name, externalId }). |
position | no | Launcher position (bottom-end, bottom-start, …). |
display | no | Display mode (sheet, dialog, inline). |
Programmatic API
After init() returns, window.ReqdeskWidget exposes:
ReqdeskWidget.open() // open the widgetReqdeskWidget.close() // close the widgetReqdeskWidget.toggle() // toggle open stateReqdeskWidget.setLanguage('ar') // switch locale at runtimeReqdeskWidget.setTheme({ /* … */ }) // override theme tokens at runtime
ReqdeskWidget.identify({ // attach known-user metadata email: 'customer@example.com', name: 'Customer Name',})
ReqdeskWidget.on('ticket-created', t => { /* … */ })ReqdeskWidget.destroy() // tear down completelyidentify() is optional — if your customer is already authenticated on your site, calling identify() saves them re-typing their email into the widget.
Versioning and the CDN
Widget bundles are served from cdn.reqdesk.support/widget/<version>/index.iife.js with a one-year immutable cache. Pin a specific version when you want to lock the surface; the latest alias updates on every release. The retention list at docker/reqdesk-cdn/retained-versions.txt is the canonical record of what is currently served.
Note: versions 1.2.20 and 1.2.21 ship a broken IIFE bundle and are intentionally absent from the CDN. Sites pinned to those versions should bump to 1.2.22 or
latest.
CSP
If your site uses Content-Security-Policy, allow:
script-src https://cdn.reqdesk.support https://challenges.cloudflare.comconnect-src https://api.reqdesk.support https://challenges.cloudflare.comframe-src https://challenges.cloudflare.com
Cloudflare Turnstile is required to prevent automated abuse of the public ticket-creation surface.