=== MultiContact Buttons ===
Contributors: techxabyte
Tags: contact routing, whatsapp, click to call, woocommerce, contact buttons
Requires at least: 6.3
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.4.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Route visitors to the best WhatsApp, call, SMS, email, Telegram, Messenger, or custom contact option for each page context.

== Description ==

Developed and maintained by Techxabyte: https://techxabyte.com/

MultiContact Buttons is a context-aware contact-routing toolkit. It can prioritize or isolate the most useful configured channel according to the current page type, WooCommerce product category, and business-hours status. It also supports separate floating buttons, an expandable launcher, an always-open contact card, a Gutenberg block, an optional Elementor widget, and a prefixed shortcode.

The plugin is self-contained. It uses local CSS, JavaScript, and SVG icons. It does not load remote fonts or icon libraries, create visitor cookies, use browser storage, or collect click analytics.


= Security-conscious design =

* Settings are available only to administrators with the `manage_options` capability.
* Settings are saved through the WordPress Settings API and sanitized before storage.
* Front-end attributes, URLs, labels, and generated markup are escaped for their output context.
* The plugin does not execute administrator-supplied PHP or JavaScript.
* No remote scripts, fonts, icon libraries, tracking pixels, or telemetry are loaded.
* Direct access to plugin PHP files is blocked.

= Contact channels =

* WhatsApp click-to-chat with a pre-filled message.
* Click-to-call using a standard `tel:` link.
* SMS using a standard `sms:` link with an optional pre-filled message.
* Email using a standard `mailto:` link with subject and body templates.
* Telegram profile or chat link using a public username.
* Messenger link using a public username or page ID.
* One custom link with selectable link, location, calendar, or support icon.

= Widget styles and integrations =

* Separate direct buttons.
* Expandable contact launcher.
* Always-open contact card.
* Automatic floating display or manual placement only.
* Dynamic Gutenberg block.
* Native Elementor widget when Elementor is active.
* Shortcode for classic editors, builders, templates, and widgets.

= Colorful settings experience =

* Five selectable settings-page themes: Violet Glow, Ocean Blue, Sunset Coral, Forest Green, and Midnight Dark.
* Tabbed settings interface with a colorful dashboard header and status cards.
* Sticky live preview that updates before saving.
* Five front-end color schemes plus a fully custom palette.
* Basic color-contrast warning for the preview.
* Separate colors for all seven channels, launcher, icons, labels, panel, and borders.

= Design and behavior =

* Vertical or horizontal direct-button layout.
* Bottom-left or bottom-right floating placement.
* Circle or rounded-square icons.
* Custom size, icon scale, spacing, offsets, border width, opacity, label size, and panel width.
* Four shadow levels and lift, zoom, brighten, or no hover effect.
* Icons only, labels on hover/focus, or always-visible labels.
* Optional reduced-motion-friendly pulse or bounce animation.
* Accessible channel-order controls.
* Optional launcher heading, description, availability badge, and notification badge.
* Optional agent or team profile with name, subtitle, and a WordPress Media Library avatar.
* Optional automatic launcher opening after a configured delay.
* Launcher closes when clicking outside or pressing Escape.
* Configurable mobile breakpoint and mobile label visibility.

= Smart Contact Routing =

* Prioritize one channel while keeping all other configured choices available.
* Or show only the preferred channel for a focused call to action.
* Set separate preferred channels for pages, posts, WooCommerce products, and other views.
* Choose a dedicated after-hours fallback channel.
* Route individual WooCommerce product categories with simple `category-slug=channel` rules.
* Automatically falls back to the normal configured order when a preferred channel is unavailable.

= Targeting and scheduling =

* Separate desktop and mobile visibility.
* Show to all visitors, logged-in visitors, or logged-out visitors.
* Limit automatic output by public post type.
* Include or exclude specific post, page, product, or custom-content IDs.
* Hide on the front page, posts page, archives, search results, or 404 pages.
* Business hours based on the WordPress site timezone.
* Outside hours: hide everything, show email only, or keep all channels visible.
* Supports schedules that continue past midnight.
* Optional display delay and scroll-depth trigger.

= Smart message placeholders =

WhatsApp, SMS, and email templates support:

* `{page_title}` - Current page or post title.
* `{page_url}` - Current page URL.
* `{site_name}` - WordPress site title.
* `{product_name}` - Current WooCommerce product name when available.
* `{product_sku}` - Current WooCommerce product SKU when available.
* `{product_price}` - Current WooCommerce product price when available.

WooCommerce is optional. Product placeholders remain empty outside a WooCommerce product page.

= Shortcode =

Basic usage:

`[txmcb_contact_buttons]`

Available attributes:

* `channels="all"` or a comma-separated list using `whatsapp`, `call`, `sms`, `email`, `telegram`, `messenger`, and `custom`.
* `style="inherit"`, `style="direct"`, `style="launcher"`, or `style="card"`.
* `layout="inherit"`, `layout="vertical"`, or `layout="horizontal"`.
* `labels="inherit"`, `labels="hidden"`, `labels="hover"`, or `labels="always"`.

Examples:

`[txmcb_contact_buttons channels="whatsapp,call" style="launcher"]`

`[txmcb_contact_buttons channels="telegram,messenger" style="card"]`

`[txmcb_contact_buttons channels="email,sms,custom" layout="horizontal" labels="always"]`

= Developer filters =

* `txmcb_should_display` filters automatic visibility.
* `txmcb_available_channels` filters the final channel definitions.

== External services ==

External services are opened only after a visitor actively clicks a configured button. No request is sent to WhatsApp, Telegram, Messenger, or a custom destination when a page merely loads.

= WhatsApp =

The WhatsApp button uses `https://wa.me/`. After a click, the configured number and expanded message are included in the destination URL.

* Terms: https://www.whatsapp.com/legal/terms-of-service
* Privacy: https://www.whatsapp.com/legal/privacy-policy

= Telegram =

The Telegram button uses `https://t.me/` followed by the administrator-configured public username.

* Terms: https://telegram.org/tos
* Privacy: https://telegram.org/privacy

= Messenger =

The Messenger button uses `https://m.me/` followed by the administrator-configured public username or page ID.

* Terms: https://www.facebook.com/legal/terms
* Privacy: https://www.facebook.com/privacy/policy/

= Custom links and device handlers =

The custom button opens the administrator-configured HTTP or HTTPS URL. Call, SMS, and email buttons open the visitor's selected telephone, messaging, or email application. Each destination or application may have its own terms and privacy practices.

MultiContact Buttons is not affiliated with, sponsored by, or endorsed by WhatsApp, Telegram, Meta, Facebook, Elementor, or WooCommerce. Product and service names are used only to describe optional integrations and remain trademarks of their respective owners.

== Privacy ==

MultiContact Buttons stores administrator-selected configuration in the WordPress options table.

The plugin does not:

* Set visitor cookies.
* Use local storage or session storage.
* Record button clicks.
* Create visitor profiles.
* Send analytics or telemetry.
* Load remote JavaScript, fonts, icons, or styles.

External services receive information only after a visitor actively clicks the corresponding link. Suggested privacy-policy text is added to WordPress under Settings > Privacy.

== Installation ==

1. Upload the plugin ZIP from Plugins > Add New Plugin > Upload Plugin, or install it from the WordPress.org Plugin Directory.
2. Activate MultiContact Buttons.
3. Open Settings > MultiContact Buttons.
4. Enable and configure at least one contact channel.
5. Open the Design tab to choose the settings-page theme, front-end palette, widget style, and profile options.
6. Configure Smart Routing, targeting, business hours, and display triggers as needed.
7. Save the settings and test each routing context on mobile and desktop.


== Frequently Asked Questions ==

= What makes Smart Routing different from ordinary floating-button plugins? =

Smart Routing can change the primary contact method based on whether a visitor is viewing a page, post, WooCommerce product, matching product category, or an after-hours view. It can move the preferred channel first or show only that channel, while falling back safely when it is unavailable.

= How should I enter a WhatsApp number? =

Enter the complete international number with country code using digits only, without a plus sign, spaces, or dashes. Example: `923001234567`.

= How do I use the Elementor widget? =

Activate Elementor, edit a page, search the Elementor widget panel for "MultiContact Buttons", and drag it into the page. Numbers, messages, and global design settings remain under Settings > MultiContact Buttons.

= Can I use the plugin without Elementor? =

Yes. Elementor is optional. You can use automatic floating output, the shortcode, or the Gutenberg block.

= Can I create a contact card instead of round floating icons? =

Yes. Select Always-open contact card under Widget style, or use `style="card"` in a shortcode or block.

= Does it work with WooCommerce? =

Yes. WooCommerce is optional. When it is active, product placeholders can add the current product name, SKU, and formatted price to message templates.

= Why might business-hours changes appear late on a cached site? =

Business-hours visibility is evaluated when WordPress generates the page. A full-page cache can continue serving an older generated page until that cache expires or is purged.

= Does the plugin track conversions? =

No. It intentionally does not record clicks or send analytics.

= Who develops and maintains MultiContact Buttons? =

MultiContact Buttons is developed and maintained by Techxabyte. Company website: https://techxabyte.com/

== Changelog ==

= 1.4.1 =

* Improved the settings-saved notice contrast for every admin color theme.
* Prevented duplicate success notices when WordPress runs the Settings API sanitize callback more than once.

= 1.4.0 =

* Added Smart Contact Routing for pages, posts, products, product categories, other views, and after-hours fallbacks.
* Added prioritize and single-channel routing modes with safe fallback behavior.
* Standardized PHP declarations, stored data, script handles, filters, block namespace, Elementor widget ID, CSS classes, and JavaScript globals with the unique `txmcb_` / `TXMCB_` prefix.
* Replaced legacy and generic shortcodes with the distinctly prefixed `[txmcb_contact_buttons]` shortcode.
* Removed private-development migration aliases and obsolete brand compatibility code.
* Updated the readme to describe the plugin's context-aware routing workflow.

== Upgrade Notice ==

= 1.4.1 =
Improves the admin success-notice contrast and prevents duplicate saved messages.
