Site Key identifying your chat. Every integration method below is really just "a URL or snippet with your Site Key in it" — pick whichever fits how your site is built, and mix and match freely (e.g. a floating widget on most pages, a fullscreen embed on one dedicated "/chat" page).1Direct chat link
The simplest option — a plain link to your chat. Good for a "Join the chat" button, a link in an email, or bookmarking.
https://dialogoo.com/chat?site=YOUR_SITE_KEY
2Floating widget
A chat bubble in the bottom-right corner that opens a floating panel — like Intercom, Tawk.to or Crisp. One script tag, pasted once, right before </body>.
<script src="https://dialogoo.com/assets/js/embed.js" data-site="YOUR_SITE_KEY" async></script>
3Fullscreen embed
The chat fills an entire container or page — for a dedicated page like "yoursite.com/chat", rather than a floating widget. No bubble or close button: your page controls the iframe's placement itself.
<iframe src="https://dialogoo.com/chat?embed=1&mode=fullscreen&site=YOUR_SITE_KEY" style="width:100%;height:100vh;height:100dvh;border:0" allow="camera; microphone; autoplay; fullscreen" allowfullscreen title="Chat"></iframe>
The allow="...; fullscreen" and allowfullscreen parts matter: without them, a visitor clicking a room's fullscreen button gets a silent browser error instead — the iframe has no fullscreen permission at all unless your page explicitly grants it.
4Land visitors in a specific room
Have several rooms — support, general, VIP — and want a link that drops a visitor straight into one of them? Add &room=<slug> to any of the URLs above (find a room's slug in your panel under Rooms). An unknown or misspelled slug is silently ignored, falling back to your chat's normal default room — never a broken link.
https://dialogoo.com/chat?site=YOUR_SITE_KEY&room=general
This works everywhere a Site Key does — the widget's data-room="general" attribute, the fullscreen iframe's URL, the WordPress shortcode's room="" attribute, a plain query param on an SSO redirect, or a 'room' claim signed right into an SSO token alongside username/gender/age (see the SSO sample below).
5WordPress plugin
Running WordPress? Skip the manual embed code entirely — install the plugin, drop in your Site Key, and use a shortcode anywhere a page or post can go.
[dialogoo_chat site="YOUR_SITE_KEY" room="general"]
See the full WordPress webcam video chat guide for setup steps, full screen mode, and FAQs.
6Joomla plugin
Running Joomla? Install the system plugin, drop in your Site Key, and use a content tag anywhere an article, category description, or module can go.
{dialogoochat site="YOUR_SITE_KEY" width="100%" height="800px" room="support"}Get it from the Joomla Extensions Directory →
Also adds an optional sitewide floating chat bubble, a native fullscreen="1" attribute with a one-click "Create a full screen chat page" button in the plugin settings, and a "Dialogoo Chat" button right in the article editor's Insert menu — no need to memorize the tag. Joomla 5+ (built and tested on Joomla 6).
See the full Joomla webcam video chat guide for setup steps, full screen mode, and FAQs.
7SSO auto-login
Already know who your visitor is on your own site? Sign a short-lived token with a secret from your panel and send them straight into the chat under their own username, gender and avatar — no guest form to fill in.
<?php
// No Composer, no dependencies — plain PHP, works on any host.
function dialogoo_sign_token(array $payload, string $secret): string {
$b64url = fn(string $data) => rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
$header = $b64url(json_encode(['typ' => 'JWT', 'alg' => 'HS256']));
$body = $b64url(json_encode($payload));
$signature = $b64url(hash_hmac('sha256', "$header.$body", $secret, true));
return "$header.$body.$signature";
}
// Replace with your own already-logged-in visitor's data.
$currentUser = (object) ['id' => 42, 'username' => 'Alice', 'age' => 27];
$secret = 'YOUR_SSO_SECRET'; // from /chatadmin/developer — keep on your server only
$payload = [
'username' => $currentUser->username, // 3-20 chars, letters/numbers/_/-
'gender' => 'homme', // homme | femme | couple | autre
'age' => $currentUser->age, // 18-99
'external_id' => (string) $currentUser->id, // optional: same visitor keeps the same chat identity
'room' => 'exhib-en-cam', // optional: land in this room instead of the tenant's default — omit to use the default
'iat' => time(),
'exp' => time() + 60,
];
$token = dialogoo_sign_token($payload, $secret);
$chatUrl = 'https://dialogoo.com/sso-login.php?site=YOUR_SITE_KEY' . '&token=' . urlencode($token);
header('Location: ' . $chatUrl);
exit;8Live stats APIs
Two small JSON endpoints for showing live numbers on your own site — how many people are online, how many cams are currently streaming — without embedding the chat itself.
https://dialogoo.com/api/online-count?site=YOUR_SITE_KEY https://dialogoo.com/api/streaming-cams?site=YOUR_SITE_KEY
9JS hooks
Your own Custom JS (Panel → Developer → Embed) can listen for — and cancel — chat actions via window.DialogooChat, no build step or SDK needed. before* events are cancelable with event.preventDefault(); the message/PM ones also let you rewrite the text via event.text. after* events are informational.
// Block a message before it sends, e.g. a simple word filter. Fires for
// every send, room or private.
window.DialogooChat.on('beforeMessageSending', function (event) {
if (event.text.includes('spam-word')) {
event.preventDefault();
}
// Or rewrite it instead of blocking it:
// event.text = event.text.replace(/spam-word/gi, '***');
});
window.DialogooChat.on('afterMessageSending', function (event) {
console.log('sent:', event.text);
});
// Silently drop private messages from a blocked list your own script
// keeps. The sender's message still gets recorded server-side — this only
// controls whether it's shown to you locally.
window.DialogooChat.on('beforePrivateMessageReceiving', function (event) {
if (myBlockedUserIds.includes(event.fromUserId)) event.preventDefault();
});
// Gate your own webcam behind a custom check (age wall, paywall…).
window.DialogooChat.on('beforeWebcamStart', function (event) {
if (!userIsAllowedToStream()) event.preventDefault();
});
window.DialogooChat.on('afterWebcamStart', function () {
console.log('webcam is live');
});
// Watching someone else's webcam, as opposed to starting your own above.
window.DialogooChat.on('beforeWebcamWatchStart', function (event) {
console.log('about to watch', event.username);
});Also available: beforeWebcamStop / afterWebcamStop (your own cam), afterWebcamWatchStart / beforeWebcamWatchStop / afterWebcamWatchStop (watching someone else's), beforePrivateMessageSending / afterPrivateMessageSending / afterPrivateMessageReceiving. Use window.DialogooChat.off(type, handler) to remove a handler.
10License
The WordPress plugin and the Joomla plugin are each licensed under the GNU General Public License v2 or later (GPL-2.0-or-later) — the full license text ships inside each package as LICENSE.txt, and is declared in each plugin's own header (WordPress) or manifest (Joomla). Both are free, open-source client code: install them, read them, modify them.
That covers the plugin code itself, not the Dialogoo service the plugin connects to — the hosted chat platform (dialogoo.com) is a separate, proprietary service, the same distinction as any GPL WordPress/Joomla plugin that talks to a paid API.
My chat → Integration, and every snippet above becomes a working, live embed — no code changes beyond swapping the placeholder.