Title: TalkDock — Floating Chat Button
Author: Markas Studio
Published: <strong>juin 1, 2026</strong>
Last modified: juin 1, 2026

---

Search plugins

![](https://ps.w.org/talkdock/assets/banner-772x250.png?rev=3556148)

![](https://ps.w.org/talkdock/assets/icon-256x256.png?rev=3556148)

# TalkDock — Floating Chat Button

 By [Markas Studio](https://profiles.wordpress.org/studiomarkas/)

[Download](https://downloads.wordpress.org/plugin/talkdock.1.1.6.zip)

 * [Details](https://tah.wordpress.org/plugins/talkdock/#description)
 * [Reviews](https://tah.wordpress.org/plugins/talkdock/#reviews)
 *  [Installation](https://tah.wordpress.org/plugins/talkdock/#installation)
 * [Development](https://tah.wordpress.org/plugins/talkdock/#developers)

 [Support](https://wordpress.org/support/plugin/talkdock/)

## Description

TalkDock adds a floating WhatsApp button to your site in under two minutes. Visitors
tap it and WhatsApp opens straight to your number — no forms, no redirects, no friction.

One settings panel covers everything. No accounts, no code, nothing to configure
outside WordPress.

#### What TalkDock does

 * **Floating chat button** — appears on every page; visitors tap it and WhatsApp
   opens directly to your number.
 * **Full color control** — solid colors or gradients via a built-in picker; matches
   any brand palette.
 * **Flexible positioning** — left or right, with fine-grained offset control.
 * **Pre-filled welcome message** — visitors arrive with a conversation starter 
   already typed.
 * **Animations & visibility rules** — choose bounce, pulse, shake, or none; show
   to all visitors, logged-in users, or guests only; hide on mobile with one toggle.
 * **Shortcode support** — embed `[talkdock_button]` anywhere in posts or pages.
 * **Live preview & clean uninstall** — see changes before saving; plugin removes
   its own data on uninstall.

#### Upgrade to TalkDock Pro

The free plugin covers everything you need to get a WhatsApp button live. TalkDock
Pro is the add-on for teams that want more control, more visibility, and more conversions.

**Free**

 * Floating chat button — all pages, all devices
 * Full color & gradient control with live preview
 * Flexible position and animation presets
 * Pre-filled welcome message
 * Visitor targeting by login state and device
 * Shortcode `[talkdock_button]` for inline embeds
 * Accessibility label and clean uninstall

**Pro — everything above, plus:**

 * **Page-level targeting** — show or hide the button by page ID, URL pattern, post
   type, or WooCommerce product
 * **Multiple agents & departments** — add unlimited agents with names, avatars,
   titles, and individual WhatsApp links; visitors pick the right person
 * **Business hours & offline routing** — set open/close windows per day; outside
   hours the widget auto-switches to a lead capture form
 * **Offline leads inbox** — missed enquiries saved server-side, reviewable in-dashboard,
   exportable as CSV
 * **Click analytics & conversion tracking** — day-by-day click chart per agent,
   7/30/90-day windows, Google Analytics and Meta Pixel event firing, CSV export
 * **Greeting bubbles & extra button styles** — pop-up greeting animations, agent
   typing indicators, and additional button presets
 * **Inline Gutenberg block** — drop a fully-styled « Chat with us » CTA anywhere
   in the block editor

👉 **[Get TalkDock Pro](https://studio.markashosting.com/plugins/talkdock/talkdock-pro/)**

#### About WhatsApp

TalkDock is not affiliated with WhatsApp or Meta. The button opens a standard `wa.
me` link — identical to any hand-coded WhatsApp link. The plugin never contacts 
WhatsApp’s servers on your behalf.

### Privacy & External Services

TalkDock transmits nothing in normal operation — no tracking, no telemetry, no background
requests. The floating button is a plain `wa.me` anchor tag; clicking it opens WhatsApp
in the visitor’s browser and nothing else. The only outbound connection is the optional**
Report a Bug** form, fired solely when an administrator clicks Send.

Data sent only when a bug report is submitted:

 * Report subject and message
 * Optional reply-to email address (only if you type one)
 * Up to three screenshot attachments (validated server-side; never stored in your
   media library)
 * Optional diagnostic info — opt-out, shown to you before sending: plugin, WordPress,
   PHP, and MySQL versions; active theme; locale; multisite flag; PHP memory limit
 * Never auto-collected: site URL, admin email, license keys, user list, active 
   plugin list, or any visitor data
 * A local copy is saved in `tlkd_feedback_log` (last 50 entries; removed on uninstall)

External service used:

 * **Service:** [Markas Studio Bug Report Receiver](https://projects.markas.cloud/wp-json/markas/v1/plugin-bug)
 * **Purpose:** Deliver administrator-submitted bug reports for support investigation.
   Data is sent only after clicking Send — never automatically.
 * **[Terms of Use](https://studio.markashosting.com/plugins/talkdock/terms/)** ·**
   [Privacy Policy](https://studio.markashosting.com/plugins/talkdock/privacy-policy/)**

WhatsApp `wa.me` links are standard browser anchor tags. The plugin makes no server-
side requests to WhatsApp or Meta.

## Screenshots

 * [[
 * General tab — enter your WhatsApp link, toggle the widget on or off, and set 
   the accessibility label. Live preview updates on the right.
 * [[
 * Design & Position tab — pick gradient colors, set horizontal alignment, adjust
   side and bottom distance, and choose a button animation.
 * [[
 * Message tab — enable and configure a pre-filled message so visitors land with
   a conversation starter already typed.
 * [[
 * Visibility tab — control who sees the button (all visitors, logged-in only, or
   guests) and hide it on mobile with one toggle.
 * [[
 * Pro Features tab (free plugin) — overview of the TalkDock Pro add-on with feature
   cards covering business hours, multi-agent, page targeting, analytics, greeting
   bubbles, and inline embeds.
 * [[
 * Pro License tab — active Pro workspace showing license details, plan, validity,
   and the full list of enabled Pro features.
 * [[
 * General tab with Pro active — the full Pro tab bar unlocked: Business Hours, 
   Offline Leads, Agents, Targeting, Analytics, Shortcode & Block, and Pro License.
 * [[
 * Design tab with Pro active — advanced animation options including Pro-exclusive
   motion styles; button preview reflects multi-agent bubble rendering.
 * [[
 * Message tab with Pro active — agent-aware prefill routing; assign prefilled messages
   to specific agents for personalised touchpoints.
 * [[
 * Visibility tab with Pro active — full visibility and targeting panel with device,
   page ID, URL pattern, and agent-specific display logic.
 * [[
 * Business Hours tab (Pro) — schedule-aware availability engine with per-day open/
   close windows, timezone selection, and automatic offline routing.
 * [[
 * Agents tab (Pro) — multiple agents and departments panel; assign names, titles,
   avatars, departments, and individual WhatsApp links with drag-to-prioritise ordering.
 * [[
 * Offline Leads tab (Pro) — captured offline lead messages with CSV export; visitor
   enquiries submitted outside business hours are stored and ready to review.
 * [[
 * Targeting tab (Pro) — page-level targeting with include/exclude rules by post
   ID and URL pattern; deploy the button on checkout pages, hide it everywhere else.
 * [[
 * Shortcode & Block tab (Pro) — inline embed tools showing the shortcode with inline
   and label variants plus a native Gutenberg block, with a live preview of the 
   styled CTA.
 * [[
 * Analytics tab (Pro) — click analytics dashboard with 7/30/90-day windows, a day-
   by-day bar chart, per-agent breakdown table, and CSV export.

## Installation

 1. Upload the plugin ZIP through _Plugins  Add New  Upload Plugin_, or upload the 
    plugin folder to `/wp-content/plugins/`.
 2. Activate the plugin via the _Plugins_ screen.
 3. Go to **TalkDock** in the admin sidebar.
 4. Enter your WhatsApp link in the format `https://wa.me/15551234567` and customize
    colors and position.
 5. Click **Save Changes**. The button will appear on your site.

## FAQ

### How do I find my WhatsApp link?

Use the format `https://wa.me/<country-code><phone-number>` — for example `https://
wa.me/15551234567`. No plus sign, no spaces.

### Will this work with my caching plugin?

Yes. TalkDock enqueues static assets and a sanitized generated stylesheet, so the
button renders correctly regardless of page caching.

### Can I show the button only on certain pages?

The free plugin supports targeting by login state and screen size (hide on mobile).
Per-page, per-product, and URL-pattern targeting is available in [TalkDock Pro](https://studio.markashosting.com/plugins/talkdock/talkdock-pro/).

### Will I lose my settings if I deactivate?

No. Deactivation leaves settings intact. Data is removed only when you delete the
plugin — and even then you can opt in to keep it.

### Where do I get support?

Free support is available through the WordPress.org support forum for this plugin.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“TalkDock — Floating Chat Button” is open source software. The following people 
have contributed to this plugin.

Contributors

 *   [ Markas Studio ](https://profiles.wordpress.org/studiomarkas/)

[Translate “TalkDock — Floating Chat Button” into your language.](https://translate.wordpress.org/projects/wp-plugins/talkdock)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/talkdock/), check out
the [SVN repository](https://plugins.svn.wordpress.org/talkdock/), or subscribe 
to the [development log](https://plugins.trac.wordpress.org/log/talkdock/) by [RSS](https://plugins.trac.wordpress.org/log/talkdock/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.1.6

 * Refreshed plugin description copy for clarity and readability.

#### 1.1.5

 * Resolved the Plugin Check nonce-verification warning in settings checkbox payload
   handling.
 * Reconfirmed AJAX no-refresh settings saving, persisted-value verification, and
   POST fallback.
 * Maintained save status feedback and live-preview refresh after successful saves.

#### 1.1.2

 * Added the TalkDock Pro integration hooks while keeping all free features fully
   functional without the add-on.
 * Hardened settings saves, feedback uploads, frontend asset enqueues, and generated
   CSS output for WordPress.org review.
 * Refined the admin UI, responsive tab layout, and shadow-free design system.
 * Preserved the existing privacy posture: no background telemetry and no visitor
   data sent by the free plugin.

#### 1.0.9

 * Fixed WordPress.org review blockers: all JavaScript is enqueued through WordPress,
   the text domain is consistently `talkdock` across plugin headers, gettext calls,
   and the POT template, external service disclosure is explicit, Report-a-Bug uploads
   are sanitized and validated at the boundary, and frontend design CSS is generated
   from validated values instead of printed as raw inline CSS.
 * Removed the remote Google Fonts admin dependency and uses the system font stack
   instead.
 * Cleaned admin/front-end markup output and tightened late escaping for dynamic
   values.
 * Normalized Markas Studio public links under `https://studio.markashosting.com/
   plugins/talkdock/`, including docs, support, TalkDock Pro, Terms of Use, and 
   Privacy Policy permalinks.
 * Removed the optional author homepage header because the plugin-specific URL is
   intentionally used as the Plugin URI; this avoids duplicate URL validation errors
   during WordPress.org submission.

#### 1.0.8

 * FIX (Report-a-Bug delivery): the modal showed « Thanks — your report has been
   recorded » even when the cross-site bug-report receiver returned HTTP 413 (payload
   too large). Two underlying issues: (a) the dispatcher treated any non-WP_Error
   response from `wp_remote_post` as success, so a 413 / 429 / 500 from the receiver
   slipped through as `ok = true`; (b) the receiver’s body cap was 1 MB while the
   plugin permits up to 3 × 5 MB images, so a typical multi-screenshot bug report
   exceeded the cap. The dispatcher now requires an actual 2xx status before reporting
   success; on non-2xx the modal shows an honest « Saved locally — receiver was 
   unreachable » warning and leaves itself open so the user can resend. The receiver-
   side cap (in the Markas Studio dashboard’s plugin-bug intake) has been raised
   to 12 MB to match the plugin’s spec’d wire budget with comfortable headroom.
 * FIX (response parsing — receiver entry_id): the cross-site receiver responds 
   with `{ success: true, id: <post_id>, message: '...' }` on a successful intake,
   where `id` is the reference number of the recorded report on the receiver side.
   The previous dispatcher discarded the body entirely on 2xx and returned only `{
   ok, status }` upstream, so the receiver’s reference number was lost between layers.
   The dispatcher now decodes the response body, extracts the `id` field (accepting`
   entry_id` as a forward-compat alias), and propagates it as `remote_entry_id` 
   through the dispatch result  local log row  AJAX response  modal history pill.
   The user-facing success message now includes the receiver-assigned reference («
   Thanks — your report has been recorded (ref #847). »), and the Previous Reports
   panel renders sent rows as « Sent · #847 » so the user has a number to cite in
   any follow-up. Pre-1.0.8 log entries that lack the field render as « Sent » with
   no reference, gracefully — no data migration required.
 * NEW (Smart auto-resize): screenshots are now optimized client-side before submission.
   Images larger than the per-image target are scaled to a 1920px longest edge and
   re-encoded as JPEG with progressive quality steps (0.85  0.72  0.6) until they
   fit. A typical 5 MB retina screenshot lands at ~400–600 KB without visible quality
   loss, and the 413 budget becomes practically unreachable from the UI.
 * NEW (Paste-from-clipboard): you can now paste a screenshot directly into the 
   open modal with Cmd / Ctrl + V. Captured images run through the same auto-resize
   pipeline. A timestamped filename is synthesized so multiple pastes don’t collide.
   Text pastes into the subject / message inputs are left untouched.
 * NEW (Previous reports panel): an opt-in « Show previous reports » disclosure 
   inside the modal lists the most recent submissions from this site with their 
   delivery status (`Sent` / `Local only` / `Not delivered`). Reads from the existing
   bounded local log; no new options are created. Lazy-loaded on first expand.
 * FIX (wp_options bloat): the local `tlkd_feedback_log` option no longer stores
   the base64-encoded attachment binary. With 50 entries × up to 15 MB raw attachments,
   the option row could theoretically reach ~750 MB and slow every admin page load.
   The log now stores per-attachment metadata only (name, MIME, byte count); the
   audit trail is preserved, the bloat hazard is gone.
 * FIX (privacy / wire format): the dispatcher’s outbound `User-Agent` no longer
   includes `home_url()`. The readme privacy section already promised the plugin
   never auto-attaches your site URL, but the previous header `TalkDock/1.0.7; <
   home_url>` shipped it on every dispatch. The receiver-side dashboard derives 
   the source host from the `Origin` / `Referer` header (unchanged), so the `User-
   Agent` is now plain `TalkDock/1.0.8`.
 * HARDENING (PHPCS hygiene): the `$_FILES` superglobal is read in three places 
   inside `process_attachments()` (existence check, raw-array capture, per-file 
   loop). The previous build used an inline `phpcs:ignore` that only covered one
   line and left the other two flagged. Replaced with a method-scoped `phpcs:disable`/`
   phpcs:enable` pair stacking both `WordPress.Security.NonceVerification.Missing`
   and `WordPress.Security.ValidatedSanitizedInput.InputNotSanitized`. Each suppression
   carries a one-line justification naming the mitigation. No behavioural change.
 * HARDENING (link-rel sweep): every `target="_blank"` link in the plugin’s admin
   views now uses `rel="noopener noreferrer"` (was `rel="noopener"`). `noopener`
   neutralizes reverse-tabnabbing; `noreferrer` additionally suppresses the `Referer`
   header so the destination site does not learn which `wp-admin/admin.php?page=…`
   page the click came from.
 * No change to the AJAX action names, the nonce, the option keys, the validation
   rules, the JSON payload schema, the diagnostic block, or what is opt-in vs opt-
   out. The 5 MB per-image cap and 3-image cap are unchanged. The set of fields 
   transmitted is unchanged — except that the outbound `User-Agent` header no longer
   contains `home_url()`, per the readme’s privacy guarantee.

#### 1.0.7

 * Polished the Report-a-Bug modal. The submit button now shows an inline spinner
   during dispatch and a brief checkmark on success instead of swapping its text;
   the form is disabled while the request is in flight so the loading state is clearly
   bounded.
 * Fixed a desktop layout regression where the modal could overflow the viewport
   once the « Sending… » status banner appeared, clipping the footer off the bottom
   of the screen. The dialog  wrapping form  body now form a proper flex column,
   so the body scrolls internally instead of pushing the dialog past its `max-height`
   cap. The status banner is also auto-scrolled into view when it appears. The dialog
   now also offsets for the WordPress admin bar (32px / 46px) so it never sits beneath
   it on desktop.
 * Replaced the fragile `backdrop-filter: blur(8px)` scrim with a solid dim (`rgba(
   15, 16, 20, 0.62)`) that renders deterministically regardless of WP admin chrome
   stacking contexts. The previous blur approach caused « ghost » rendering where
   tabs and buttons bled through the backdrop. Removed the associated defensive `
   isolation: isolate` and `z-index: 0` hacks that were only propping up the broken
   filter.
 * Switched the admin CSS and JS enqueue from a static plugin-version cache key 
   to a `filemtime()`-based version. Any byte-level change to `admin/css/admin.css`
   or `admin/js/admin.js` now forces an immediate browser refetch even when the 
   plugin version has not been bumped. The headline plugin version stays visible
   in `?ver=…` because the new format is `TLKD_VERSION.MTIME` with a graceful fallback
   to plain `TLKD_VERSION` if the file cannot be stat’d.
 * Refined the modal visuals toward a minimalist, system-style aesthetic: clean 
   solid-dim backdrop, tighter typography, larger corner radius on desktop, and 
   a primary-indigo Send action that matches the rest of the admin brand instead
   of the accent terracotta.
 * Mobile rendering hardened: switched the full-screen breakpoint to `100dvh` (fixes
   iOS Safari toolbar overlap), added safe-area-inset padding for notched devices,
   and reduced the body padding so all fields stay reachable on narrow screens.
 * Accessibility: animations honor `prefers-reduced-motion`; the spinner is hidden
   from assistive tech; the live status region continues to announce send/success/
   error.
 * No change to the AJAX endpoint, validation rules, payload shape, dispatcher behavior,
   or privacy posture.

#### 1.0.5

 * Suppressed five false-positive Plugin Check warnings in `TLKD_Feedback`. No behavioural
   change.

#### 1.0.4

 * Added an optional « Report a Bug » button on the settings page sidebar. Opens
   a modal that accepts a subject, message, optional reply-to email, and up to three
   image attachments.
 * The feedback flow is transparent: nothing is transmitted until the administrator
   clicks Send. Diagnostic environment info is opt-out and the full payload is shown
   to the user before submission.
 * Submissions are recorded locally in a bounded log (`tlkd_feedback_log`, 50 most
   recent entries, removed on uninstall unless data is preserved).
 * New `talkdock_feedback_payload` and `talkdock_feedback_dispatch` filters let 
   extensions modify the payload or replace the default dispatcher.
 * Added a `== Privacy ==` section to this readme describing exactly what the Report-
   a-Bug flow transmits.

#### 1.0.3

 * Renamed plugin to « TalkDock — Floating Chat Button » to comply with WordPress.
   org Plugin Check trademark rules.
 * Updated admin hero subtitle to match the new name.
 * No functional changes.

#### 1.0.2

 * Rebranded from the previous internal name to « TalkDock ».
 * Reworked description and admin copy to be factual rather than promotional.
 * Removed the red upgrade link from the plugins list row.
 * Added an explicit non-affiliation notice regarding WhatsApp.
 * Shortcode renamed to `[talkdock_button]`.

#### 1.0.0

 * First release.
 * Floating chat button with color, position, and animation controls.
 * Prefilled message support.
 * Visibility rules (login state, hide on mobile).
 * Accessibility-first markup.
 * Inline shortcode for placing buttons inside content.
 * Auto-migration from the legacy `custom_wa_*` standalone snippet.

## Meta

 *  Version **1.1.6**
 *  Last updated **1 jour ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.8 or higher **
 *  Tested up to **7.0**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/talkdock/)
 * Tags
 * [chat button](https://tah.wordpress.org/plugins/tags/chat-button/)[click to chat](https://tah.wordpress.org/plugins/tags/click-to-chat/)
   [customer support](https://tah.wordpress.org/plugins/tags/customer-support/)[floating button](https://tah.wordpress.org/plugins/tags/floating-button/)
   [whatsapp button](https://tah.wordpress.org/plugins/tags/whatsapp-button/)
 *  [Advanced View](https://tah.wordpress.org/plugins/talkdock/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/talkdock/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/talkdock/reviews/)

## Contributors

 *   [ Markas Studio ](https://profiles.wordpress.org/studiomarkas/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/talkdock/)