1. Docs
  2. Install

Install on WordPress

Add the TalkingDot messenger to a WordPress site with the TalkingDot plugin — no code to paste — or by pasting your snippet into the site footer.

Option 1: the TalkingDot WordPress plugin (easiest)

The plugin adds the messenger to every page, can identify logged-in users (with identity verification) and shows WooCommerce customers’ number of orders and total spent in the inbox. The copy you download from your dashboard already contains your server address and workspace key.

  1. Download it. In your TalkingDot dashboard, open Settings → Installation and click Download WordPress plugin. You get a .zip file — don’t unzip it.
  2. Upload and activate. In WordPress, go to Plugins → Add New Plugin → Upload Plugin, choose the file, click Install Now, then Activate.
  3. Check the settings. Open Settings → TalkingDot, check the workspace key and click Save Changes. To verify signed-in users, paste your secret from Settings → Security into Identity verification secret (or define TALKINGDOT_IDENTITY_SECRET in wp-config.php).

Use Hide on these pages to keep the messenger off pages like /checkout (one path per line, * as a wildcard). Developers can add their own user details with the talkingdot_settings filter; extra text or number fields become custom attributes.

Prefer code? Options 2 and 3 use your snippet from Settings → Installation in your TalkingDot dashboard. It contains your workspace key and looks like this:

HTML
<script src="https://talkingdot.com/widget.js" data-key="YOUR_WORKSPACE_KEY" async></script>

Option 2: a header & footer code plugin

This option survives theme changes and updates. The steps below use WPCode (formerly "Insert Headers and Footers"), a free plugin from the WordPress.org directory. Any similar plugin with a footer box works the same way.

  1. Install the plugin. In WordPress, go to Plugins → Add New, search for WPCode, then click Install and Activate.
  2. Open its header and footer screen. In WPCode this is Code Snippets → Header & Footer. Menu names can change between plugin versions.
  3. Paste your snippet into the Footer box. Leave the Header and Body boxes as they are.
  4. Save. The messenger now loads on every page of your site.

Option 3: your child theme's functions.php

If you'd rather not add a plugin, print the snippet with the wp_footer action. Add this to your child theme's functions.php, or to a small site-specific plugin:

functions.php
<?php
// TalkingDot messenger: printed just before </body> on every front-end page.
add_action( 'wp_footer', function () {
    echo '<script src="https://talkingdot.com/widget.js" data-key="YOUR_WORKSPACE_KEY" async></script>' . "\n";
} );

Don't edit a parent theme. Changes to a theme you downloaded (Astra, GeneratePress, Twenty Twenty-Four and so on) are wiped out the next time it updates. Use a child theme, a site-specific plugin, Option 1 or Option 2.

Block themes and the Site Editor

Block themes (edited in Appearance → Editor) don't have a box for site-wide scripts. A Custom HTML block in the footer template part can work, but it's easy to lose when templates are reset or switched. WordPress also strips scripts for users without the unfiltered_html permission, for example on multisite. On block themes, use Option 1 or Option 2.

Caching and optimization plugins

If you use a caching plugin (WP Rocket, W3 Total Cache, LiteSpeed Cache, WP Super Cache and so on) or a CDN, purge its cache after adding the snippet. Otherwise visitors keep getting old pages without it. "Delay JavaScript" or "combine JavaScript" features can postpone or break the messenger. If it doesn't appear, or appears only after scrolling, exclude widget.js from those features.

Optional: identify logged-in WordPress users

For membership sites, WooCommerce stores and other sites with accounts, you can pass the signed-in user to TalkingDot. Your team then sees their name and email, and their conversations follow them between devices. The user_hash proves the identity is genuine, and it must be computed on the server with your workspace secret. Copy the secret from Settings → Security, and see Identity verification for how it works.

1. Store the secret in wp-config.php, above the line that says "That's all, stop editing!". Never put it in a theme file, a plugin's settings box or anywhere in the page.

wp-config.php
define( 'TALKINGDOT_IDENTITY_SECRET', 'paste-your-workspace-secret-here' );

Using the plugin (Option 1)? You only need to paste the secret into its settings. With Options 2 and 3, follow these two steps.

2. Replace the snippet from Option 2 or Option 3 with this code in your child theme's functions.php or a site-specific plugin. If the snippet is also in a footer plugin, remove it from there.

functions.php
<?php
add_action( 'wp_footer', function () {
    if ( is_user_logged_in() && defined( 'TALKINGDOT_IDENTITY_SECRET' ) ) {
        $user     = wp_get_current_user();
        $settings = array(
            'user_id'   => (string) $user->ID,
            'email'     => $user->user_email,
            'name'      => $user->display_name,
            'user_hash' => hash_hmac( 'sha256', (string) $user->ID, TALKINGDOT_IDENTITY_SECRET ),
        );
        echo '<script>window.TalkingDotSettings = ' . wp_json_encode( $settings ) . ';'
            . 'try{localStorage.setItem("talkingdot_wp","1")}catch(e){}</script>' . "\n";
    } else {
        // Signed out since the last page? Start a fresh, anonymous messenger session.
        echo '<script>try{if(localStorage.getItem("talkingdot_wp")){localStorage.removeItem("talkingdot_wp");'
            . 'window.TalkingDot=window.TalkingDot||function(){(TalkingDot.q=TalkingDot.q||[]).push(arguments)};'
            . 'TalkingDot("shutdown")}}catch(e){}</script>' . "\n";
    }
    echo '<script src="https://talkingdot.com/widget.js" data-key="YOUR_WORKSPACE_KEY" async></script>' . "\n";
} );

The else branch matters on shared computers. When someone signs out, it calls TalkingDot('shutdown') once, so the next person using that browser doesn't see the previous user's conversations.

Verify it works

  1. Open your site in a private window while logged out of WordPress. The launcher bubble appears in the bottom-right corner, or on whichever side you chose.
  2. Send a test message. It appears in your TalkingDot Inbox. Settings → Install also shows when the messenger was last seen on your site.
  3. If you added identification, log in and send another message. The conversation shows your WordPress name and email in the contact sidebar.

Troubleshooting

  • Nothing appears: view the page source (Ctrl+U or ⌘+Option+U) and search for widget.js. If it isn't there, purge your cache. If you used Option 3, make sure your theme calls wp_footer(); almost all themes do.
  • The snippet is in the source, but no launcher: check the browser console for TalkingDot: missing or invalid data-key. Also check whether a domain allow-list in Settings → Security leaves out this domain.
  • Security plugins with a Content-Security-Policy: allow https://talkingdot.com as described in Install on any website.
  • Users show up as anonymous visitors: if your workspace requires identity verification, a wrong user_hash is rejected and the browser console shows an "Identity verification failed" warning. Check that the secret in wp-config.php matches the one in Settings → Security exactly.

Next steps

Last updated October 4, 2026 Something unclear? Tell us