=== Contact Forms, Live Support, CRM, Video Messages ===
Contributors: videowhisper
Author: VideoWhisper.com
Author URI: https://videowhisper.com
Plugin Name: Contact Forms, Live Support, CRM
Plugin URI: https://consult.videowhisper.com/
Donate link: https://videowhisper.com/
Tags: helpdesk, support tickets, live chat, contact form, crm
License: GPLv3
License URI: https://www.gnu.org/licenses/gpl-3.0.html
Requires at least: 5.7
Requires PHP: 7.4
Tested up to: 7.1
Stable tag: trunk

Streamline support with integrated CRM, live chat, and custom contact forms for enhanced user interaction.


== Description ==

Revamp your customer service with this powerful tool that combines contact forms, support tickets, chat, and a comprehensive CRM system to enhance interaction and efficiency. Manage conversations front and back end, attach multimedia files, webcam recordings and customize contact forms for specific needs. A floating icon and reporting buttons on content facilitate communication, making it ideal for any business aiming to improve responsiveness and customer satisfaction.

= Benefits = 
* Unified Communication Platform: Integrates contact forms, support, chat, CRM into a single, efficient workflow.
* Enhanced Multimedia Support: Users can send messages with webcam, screen, and microphone recordings, enhancing interactive support.
* Customizable Contact Forms: Tailor contact forms with custom fields to collect specific information needed for various departments.
* Advanced Conversation Management: Manage and monitor conversations from both frontend and backend, improving service responsiveness.
* Email Confirmation for Security: Protects against spam by requiring email confirmation from visitors before starting conversations.
* Multilanguage Support: Offers real-time translation of messages with DeepL integration, catering to a global audience.
* Monetization Options: Integrates with the MicroPayments Plugin for paid support options, allowing for flexible revenue models.
* Comprehensive Reporting Tools: Easily report and manage content directly from posts with configurable buttons, enhancing content control.

= Features =
* Support pages in website frontend for starting/accessing conversations
* Members can open a conversation directly, while visitors have to confirm their email first
* Admins can see and access open Conversations from backend
* Report Content button for any post types (configurable)
* Contact Owner button for any post types (configurable)
* Contact Creator in BuddyPress/BuddyBoss profile for configurable roles
* My Conversations page to website frontend, to access own tickets by logged in users
* Custom support departments for website / report content / contact content owner / contact user
* Floating support buttons (contact, new messages) on all pages (can be disabled)
* Message counter in backend (site support) and frontend (for creators)
* Send webcam/screen/microphone recordings and file uploads in conversations
* Protected software/resource downloads catalog with optional plan-based access control
* Secure download gateway with short-lived signed links (no direct file URL exposure in frontend)
* API endpoint for updater/client plugins to list authorized downloads by contact credentials
* Custom contact forms with custom fields (text, dropdown, toggle) and data saved per contact
* Custom form per department enables custom fields per conversation (ticket)
* Invite by email to fill a form, contact a department or join a new conversation
* Can messages, add to later messages for quick replies
* Integrates with [MicroPayments Plugin](https://wordpress.org/plugins/paid-membership/ "MicroPayments – Paid Author Subscriptions, Digital Assets, Downloads, Membership") for paid support (per conversation, message)
* Registration forms:  register accounts in an external MySQL database, in example for [VideoWhisper WebRTC server](https://github.com/videowhisper/videowhisper-webrtc "VideoWhisper WebRTC Server")
* Multilanguage conversations with DeepL integration for translating messages on request
* Support Wiki pages with Markdown rendering for headings, lists, tables, images, code blocks, quotes, dividers, links, Fomantic UI-compatible classes when Fomantic is available, and a lightweight stylesheet loaded only on pages that render Support Wiki/Markdown content
* Integration hooks for VideoWhisper Site Manager / Site Manager Pro, enabling AI tools to read conversations, send CRM messages with native notifications, retrieve CRM stats, include external account counts when configured, and identify contact lead activity from conversation/message/account counts


More features to come ...

== Screenshots ==
1. Conversation (Ticket) View with Insert Files, Webcam/MicroPhone/Screen recordings
2. Custom Form with custom fields: text, dropdown, toggle
3. Buttons on content page
4. Report content support form
5. Floating support button on all pages

== Frequently Asked Questions ==

= How does system prevent bulk submissions from "visitor" bots? =

A visitor needs to register a contact and confirm email to create a new ticket.

= How are tickets secured ? =

Each contact (email) has a code to access ticket.

= How are downloads secured ? =

Downloads are served through a protected gateway endpoint. Public items are allowed when the download access key is empty; protected items require matching organization plan properties and valid contact authentication.

= Can Support Wiki pages render Markdown? =

Yes. Support Wiki pages can render agentic Markdown content automatically, and the `[videowhisper_support_markdown]` / `[vws_markdown]` shortcodes can render Markdown in regular content. The renderer supports headings, paragraphs, ordered and unordered lists, pipe tables, block images, fenced code blocks, blockquotes, dividers, inline code, bold, italic, absolute links, and relative wiki links. Rendered output includes Fomantic UI-compatible classes such as `ui table`, `ui list`, `ui header`, `ui message`, `ui image`, and `ui breadcrumb` where appropriate, plus a lightweight stylesheet for breadcrumbs, tables, lists, quotes/citations, code blocks, and figures on pages that need it.

= How does this integrate with VideoWhisper Site Manager? =

When VideoWhisper Site Manager is active, site admins can enable read-only AI access for users to retrieve their own CRM conversations. VideoWhisper Site Manager Pro can additionally enable message writes, admin CRM stats, contact retrieval, and new conversation creation. This plugin exposes integration hooks so Site Manager Pro can use the current CRM notification templates, cooldown settings, contact activity summaries, and external account database counts without exposing database passwords.

Site Manager's dynamic agent guide documents CRM tools when this plugin and the relevant Site Manager settings are active. User tools include `crm_list_my_conversations` and `crm_get_my_conversation_messages`; Pro can add `crm_send_my_conversation_message`, `crm_admin_get_stats`, `crm_admin_list_conversations`, `crm_admin_get_conversation_messages`, `crm_admin_send_conversation_message`, `crm_admin_list_contacts`, and `crm_admin_open_conversation`.

== External services ==

* DeepL: when a site administrator supplies an API key and enables translations, authenticated translation requests send message text and source/target languages to https://api.deepl.com or https://api-free.deepl.com. Updating the supported-language list sends the API credential. Service: https://www.deepl.com/ ; Terms: https://www.deepl.com/en/pro-license ; Privacy: https://www.deepl.com/en/privacy .
* Email: normal notifications use WordPress wp_mail and the site's configured transport. If the administrator selects Postmark or Brevo and supplies credentials, notification/test requests send sender/recipient addresses, subject, message and configured headers to https://api.postmarkapp.com/email or https://api.brevo.com/v3/smtp/email. Postmark terms/privacy: https://postmarkapp.com/terms-of-service and https://postmarkapp.com/privacy-policy . Brevo terms/privacy: https://www.brevo.com/legal/termsofuse/ and https://www.brevo.com/legal/privacypolicy/ . No test email is sent automatically.
* Google reCAPTCHA: only when enabled with site/secret keys, covered forms load https://www.google.com/recaptcha/api.js and submit the response token (and visitor IP when supplied) to https://www.google.com/recaptcha/api/siteverify for spam checks. Service: https://cloud.google.com/security/products/recaptcha ; Terms: https://cloud.google.com/terms ; Privacy information: https://cloud.google.com/terms/cloud-privacy-notice . Site owners must configure any required visitor consent.
* Analytics: configured event names are sent to an existing window.gtag/dataLayer integration when present, including form/conversation event metadata. The plugin does not create a Google Analytics account. Site owners control analytics loading and consent. Google Analytics terms: https://marketingplatform.google.com/about/analytics/terms/us/ ; Privacy: https://policies.google.com/privacy .
* Optional streaming/account providers: only when their database/API/server settings are supplied, the plugin exchanges account, organization, plan, authentication, schedule, stream and usage information with those configured destinations. These may be self-hosted. Provider URLs, terms and privacy policies are determined by the administrator's selected provider. VideoWhisper's server project: https://github.com/videowhisper/videowhisper-webrtc . VideoWhisper service terms/privacy: https://www.videowhisper.com/view.php?p=Terms+of+Use and https://www.videowhisper.com/view.php?p=Privacy+Policy .

Geolocation now uses local server GeoIP data only. The former automatic third-party IP lookup is removed. Trusted reverse proxies can be declared with the vws_support_trusted_proxy_ips filter; otherwise rate limits use the validated connecting IP address.

== Bundled libraries ==

Fomantic UI 2.9.4 (MIT), https://github.com/fomantic/Fomantic-UI , and Chart.js 4.4.0 (MIT), https://github.com/chartjs/Chart.js , are served locally. Their license notices are included in semantic/LICENSE.md and static/vendor/chartjs/LICENSE.md. The legacy CDN setting no longer offloads these libraries.

== License ==

This plugin is released under a GPL license.

== Changelog ==

= 1.12.10 =
* Resolve Plugin Check output/input findings, bind account property writes and combined account search filters, keep shortcode parameters as data, and protect provider diagnostics and client IP rate limits.
* Bundle UI/chart libraries locally, document optional services, and remove automatic external IP lookups. Local server GeoIP remains supported.
* Keep Wiki and lead-form constants compatible with PHP 7.4 by defining them on the plugin class.
* Security: authenticate translation requests with ticket/contact proof, protect language refresh with an administrator nonce, bound translation use, and disable object instantiation in legacy metadata readers. Rebuild the Support app with ticket PIN authentication.

= 1.12.9 =
* Setup: authenticated account settings include callback fingerprints so connected plugins can detect a different selection without disclosing private callback URL values.
* Security: log Remote Connect updated property names only; private callback URL values are not written to the update log. Advertise private_callback_push support so connected sites can migrate private callbacks safely.
* Security: escape login form values, discard unverified submitted usernames and never reflect passwords.

= 1.12.8 =

* Fixed external Lead Form embeds to load their REST configuration from the Support CRM origin, rather than from the plugin directory.
* Added GA4/dataLayer form-view, form-start, and recorded-lead events; first-party landing/referrer/campaign attribution; cross-domain click-ID forwarding; mobile-friendly multi-select chips; and native input validation.

= 1.12.7 =

* Added an approved Lead Form integration API for Site Manager Pro agents, including configured field validation and safe embed-shortcode retrieval.

= 1.12.6 =
* Added per-lead-form editable defaults for selected departments and custom fields, including text, textarea, select, multiselect, and toggle controls.

= 1.12.5 =
* Added centrally managed, JavaScript-embedded Lead Forms with configurable CRM fields, opaque redirect prefills, analytics, retention controls, rate limiting, and reCAPTCHA support.

= 1.12.4 =
* Moved screenshots to SVN assets and updated WordPress.org support metadata.
* Replaced direct asset file tags with WordPress enqueue APIs in app and admin loaders.

= 1.12.3 =
* Improved Support Wiki Markdown rendering for tables, images, relative links, dividers, Fomantic UI-compatible classes, page-scoped Markdown styling, and WordPress auto-paragraph normalization
* Documented Site Manager agent-guide discovery for Live Support Tickets CRM tools
* Added VideoWhisper Site Manager integration hooks for CRM message notifications, safe account DB metadata, and external account statistics
* Added Site Manager contact summary support for account ownership counts used in admin CRM contact lists

= 1.12.2 =
* Fix: DB migration bump to add missing organizationId column to vws_contacts table

= 1.10 =
* Google tracking gtag for main events: contact view/new/confirm, conversation view/new, message new, form view/submit 
* Tags

= 1.9 =
* Option to allow visitors start conversation before confirming contact (resulting in pending conversation)
* Counters for new and pending conversations in conversation list
* Support can see how many conversations a contact openeded and browse these
* Filter conversation list by status, department, contact
* Sort conversation list by status, created, updated

= 1.8 = 
* Add/Remove contacts from conversations
* Reply to messages in tickets
* Set custom conversation/message price for MicroPayments support with videowhisper_support_micropayments
* Unsupported email provider domains (disable domains with email issues or common for spammers)
* Access contact fields from backend conversation view, by clicking contact

= 1.7 = 
* Multilanguage conversations (each message can be in different language)
* DeepL integration for translating messages on request

= 1.6 = 
* Create new converation for specific contact (registered or not registered) and send notification to join
* Invite by email to fill form, open conversation with specific department
* Sort contacts by last form update
* Canned messages/responses

= 1.5 = 
* Insert audio/video recordings in conversations: webcam, screen, microphone
* Insert file uploads in conversations

= 1.4 =
* Custom fields can be added to departments and filled when starting conversations or associated to contacts with forms
* Link parsing in conversation messages & custom fields
* Forms enable contacts to fill and update contact fields

= 1.3 =
* MicroPayments integration for paid support: clients pay on request and providers when they answer
* Conversation management (close, delete)

= 1.2 =
* Custom support departments for website / report content / contact content owner / contact user
* Integrate Report Content for any post types
* Integrate Contact Owner for any post types
* Contact Creator in BuddyPress/BuddyBoss profile for configurable roles
* Floating support buttons (contact, new messages) on all pages (can be disabled)
* New message counter in backend (site support) and frontend (for creators)

= 1.1 =
* First release


== Upgrade Notice ==

= 1.12.10 =
Security update for translation access and PHP compatibility. Reload open Support application tabs.
