=== NotifyKit for MAX Messenger and Contact Form 7 ===
Contributors: notifykit
Tags: max messenger, bot notifications, cf7, form notifications, chat
Requires at least: 6.2
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 1.0.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: notifykit-for-max-cf7

Forwards Contact Form 7 submissions to MAX Messenger via the official Bot API. Unofficial, independent integration (not by VK).

== Description ==

**NotifyKit — уведомления о новых заявках с сайта сразу в чат MAX.**

NotifyKit — независимый (неофициальный) плагин, не связанный с командой мессенджера MAX (правообладатель — VK) и не связанный с проектом Contact Form 7. Плагин пересылает заявки из форм Contact Form 7 в чат мессенджера MAX через официальный MAX Bot API (`https://botapi.max.ru`). Команда видит каждую заявку в реальном времени, не перегружая почтовый ящик.

Если вы раньше использовали Telegram-боты для уведомлений о заявках, этот плагин закроет ту же задачу, но для MAX — российского мессенджера, доступного без VPN и ограничений.

**Кому подойдёт:**

* Клиники, салоны, сервисы — заявки сразу видит весь ресепшн в общем чате
* Интернет-магазины, сайты услуг — менеджеры реагируют быстрее, не ждут письма
* Агентства и фрилансеры — клиентские заявки в отдельном чате команды
* Любые сайты на WordPress + Contact Form 7, работающие с русскоязычной аудиторией

**Основные возможности:**

* Пересылка заявок из Contact Form 7 в групповой чат MAX
* Мгновенные push-уведомления членам команды в чате
* Настройка отдельного чата для каждой формы
* Гибкий шаблон сообщения с подстановкой полей формы
* Автоматический поиск и подстановка Chat ID — не надо искать вручную
* Пошаговый мастер настройки прямо в админке WordPress
* Журнал отправок с кодами ошибок
* Токен бота шифруется в базе (AES-256-GCM)

---

NotifyKit is an unofficial plugin developed independently. It is **not affiliated with**, endorsed by, or sponsored by the MAX Messenger team (the trademark "MAX Messenger" belongs to its owner, VK), nor is it affiliated with the Contact Form 7 project. The plugin only acts as a client of the official MAX Bot API (`https://botapi.max.ru`) — the same way an end user does — and integrates with Contact Form 7 through its public hooks.

When a visitor submits any CF7 form, the plugin delivers the submission to a chosen chat in MAX (in addition to the usual email notification). Team members added to that chat receive submissions in real time.

The plugin is an alternative to Telegram-based notification plugins for sites where MAX is the preferred channel.

**Features:**

* Sends CF7 form submissions to a MAX group chat using the official Bot API
* Per-form Chat ID override, plus a global default chat
* Flexible message template with CF7 placeholders (`[your-name]`, `[your-email]`, `[all-fields]`, etc.)
* HTML and Markdown formatting support
* "MAX Messenger" tab added to the CF7 form editor
* One-click bot verification (calls `/me` to validate your token)
* "Fetch chats" button — no need to look up chat_id manually; the first discovered chat is pre-filled automatically
* Step-by-step settings page that visually guides you through setup (token → chat → test send)
* Submission log with error details
* Bot token encrypted at rest (AES-256-GCM, key derived from wp-config.php salts)
* Optional `CF7_MAX_TOKEN` constant for storing the token outside the database
* Built-in step-by-step setup guide in Russian

**Who is this for:**

Site owners in Russia, CIS, and any market where MAX Messenger is used as a primary communication channel. Small businesses, clinics, service providers who want form submissions pushed instantly to a team chat.

This plugin requires the [Contact Form 7](https://wordpress.org/plugins/contact-form-7/) plugin to be installed and active.

== Installation ==

1. Upload the plugin folder to `/wp-content/plugins/notifykit-for-max-cf7/` or install it through the WordPress Plugins screen.
2. Activate the plugin.
3. Make sure Contact Form 7 is installed and active (the plugin requires it).
4. Go to **MAX Messenger** in the admin menu and open the **Setup guide** tab — a step-by-step walkthrough is built into the plugin: registering at business.max.ru, creating a bot, building a group chat, adding your bot to it, and obtaining the chat_id.
5. On the Settings tab, paste the bot token and click **Save token**.
6. Click **Fetch chats** — the first chat your bot is a member of is automatically set as the default.
7. Click **Send test message** to verify everything works.
8. Open any Contact Form 7 form — a new **MAX Messenger** tab appears in the form editor where you can set a per-form Chat ID or message template.

== Frequently Asked Questions ==

= How do I get a MAX bot token? =

Register at [business.max.ru](https://business.max.ru/self), create a bot, pass moderation, and copy the token from the bot's "Integration" section. The plugin ships with a full step-by-step guide (admin menu: **MAX Messenger → Setup guide**).

= How do I find a chat_id? =

Add your bot to a group chat, then open the plugin settings and click **Fetch chats** — the plugin retrieves all chats your bot is a member of and automatically picks the first one as the default. You do not need to write in the chat beforehand — the MAX Bot API returns all chats the bot participates in.

= Can I route different forms to different chats? =

Yes. Each Contact Form 7 form gets a **MAX Messenger** tab in its editor where you can override the Chat ID and message template.

= Is the bot token safe in my database? =

The token is encrypted using AES-256-GCM with a key derived from `AUTH_KEY` and `SECURE_AUTH_KEY` from your `wp-config.php`. The plugin requires PHP's OpenSSL extension — if it is unavailable, the plugin refuses to store a token rather than storing it in plain form. For extra safety you can define a `CF7_MAX_TOKEN` constant in `wp-config.php` — the plugin will use it and skip the database entirely.

= What happens if MAX API is unreachable? =

The error is recorded in the submission log (admin menu: **MAX Messenger → Log**). The CF7 email delivery continues as usual and is not affected. The HTTP timeout is short (8 seconds by default, adjustable via the `cf7_max_request_timeout` filter) so a slow API does not block form submissions.

= Does the plugin work on multisite? =

Yes, activate it per site. Network activation works but each site has its own token and settings.

= Does it support WPForms, Gravity Forms, WooCommerce? =

Not in this version. This plugin integrates only with Contact Form 7.

= Как получить токен бота MAX? =

Зарегистрируйтесь на [business.max.ru](https://business.max.ru/self), создайте бота, пройдите модерацию и скопируйте токен из раздела «Интеграция» в карточке бота. В плагине есть встроенная пошаговая инструкция (меню админки: **MAX Messenger → Инструкция**).

= Это замена Telegram-бота? =

Да, если вашей аудитории удобнее MAX. Плагин делает то же, что популярные Telegram-плагины для CF7 (отправка заявок в чат), но через MAX Bot API. Можно использовать оба плагина одновременно.

= Как добавить несколько форм в разные чаты? =

У каждой формы Contact Form 7 появляется отдельная вкладка «MAX-мессенджер» в редакторе формы. Там можно указать свой Chat ID и свой шаблон сообщения — только для этой формы.

= Как выглядит сообщение в чате? =

Плагин берёт шаблон из настроек писем Contact Form 7 (вам не придётся настраивать заново) или использует свой шаблон. В сообщение попадают все заполненные пользователем поля формы, с подписями на русском.

= Можно ли отключить превью ссылок? =

Да, по умолчанию превью отключено — чтобы в чате не подтягивалась страница отправки с картинкой. Настройка доступна в режиме разработчика.

== External services ==

This plugin connects to **MAX Messenger Bot API** (`https://botapi.max.ru`), operated by the MAX team (VK group of companies).

**What data is sent and when:**

* When a visitor submits a Contact Form 7 form on your site, the plugin sends a single HTTPS request to `https://botapi.max.ru/messages` containing the message text (compiled from your configured template plus the submitter's form data, which may include name, email, phone, and any other fields you collect) together with the target `chat_id`. The visitor's IP address and User-Agent are included only if your template uses the `[_remote_ip]` or `[_user_agent]` placeholders.
* When an administrator clicks **Verify bot** in settings, a request is sent to `https://botapi.max.ru/me` (returns bot name/username only, no visitor data).
* When an administrator clicks **Fetch chats** in settings, a request is sent to `https://botapi.max.ru/chats` (returns the list of chats your bot is in, no visitor data).
* When an administrator clicks **Send test message** in settings, a static test message (site name + fixed text) is sent to the selected chat. No visitor data is involved.

The bot token you provide is sent in the `Authorization` header of every request. It is stored encrypted in your database (or as a `wp-config.php` constant if you choose).

**Service documentation, terms, and privacy policy:**

* API documentation: https://dev.max.ru/docs-api
* MAX Messenger terms of service: https://max.ru/legal/terms
* MAX Messenger privacy policy: https://max.ru/legal/privacy

By configuring this plugin and pointing it to your bot, you agree to MAX Messenger's terms of service and privacy policy.

== Privacy ==

This plugin does not store or transmit any data to the plugin author. All form data is sent directly from your WordPress site to the MAX Bot API endpoint under your own bot token.

The plugin stores:

* The encrypted bot token in the `cf7_max_settings` option.
* A submission log in the custom table `{prefix}cf7_max_log` (each entry: timestamp, level, event, form ID, chat ID, HTTP code, short message). Log entries do not contain the submitted form data itself, only delivery metadata. The log size is limited (default: 100 entries) and old entries are pruned automatically.

On uninstall (not just deactivate), the plugin removes its options, its log table, and the per-form post meta. No data is retained.

== Screenshots ==

1. Settings page with the three-step guided flow: token, chat, test message.

== Changelog ==

= 1.0.4 =
* Shortened the Short Description to fit the WordPress.org 150-character limit.
* Shipped a complete Russian translation (`languages/notifykit-for-max-cf7-ru_RU.po` / `.mo`) covering all admin UI strings.
* Regenerated the `.pot` template so all translatable strings used in the plugin are now exposed for translators (217 entries).

= 1.0.3 =
* Project site moved from `notifykit.grast.dev` to `notifykit.grast.tech`. Plugin URI and Author URI updated accordingly.

= 1.0.2 =
* Renamed the plugin to "NotifyKit for MAX Messenger and Contact Form 7" to clearly indicate it is an unofficial, independent integration. Slug and text domain changed to `notifykit-for-max-cf7`.
* Author URI and Plugin URI now point to the project site `https://notifykit.grast.tech/`.
* Added explicit non-affiliation notice in the readme and plugin header — the plugin is not affiliated with the MAX Messenger team (VK) or the Contact Form 7 project.
* Removed `assets/icon-*.png` and `screenshot-*.png` from the plugin zip (these belong in the WordPress.org SVN `assets/` folder, not in the plugin code).

= 1.0.1 =
* Link previews in MAX messages are now disabled by default so the submission page URL is not previewed in the chat. A new "Disable link preview" option is available in the advanced settings.
* Auto-detect field labels from the CF7 mail template for the `[all-fields]` placeholder — messages to MAX now inherit readable Russian labels (Имя, Телефон, etc.) defined in the CF7 mail settings.
* New `cf7_max_field_label` filter for custom field label mapping.
* Better filtering of CF7 internal fields (`wpcf7tg_*`, `g-recaptcha-response`) in the auto-generated message body.

= 1.0.0 =
* Initial release.
* Contact Form 7 integration via `wpcf7_before_send_mail` hook.
* MAX Bot API client for `/me`, `/messages`, and `/chats`.
* Per-form settings tab in the CF7 form editor.
* Step-by-step guided settings page with visual state (token added → chat selected → test send).
* Auto-fill of the first discovered chat as the default.
* Built-in step-by-step setup guide in Russian.
* AES-256-GCM encryption of the bot token at rest.
* Submission log with automatic rotation.

== Upgrade Notice ==

= 1.0.4 =
Short description now fits the WP.org 150-character limit; full Russian translation bundled.

= 1.0.2 =
Plugin renamed for compliance with WordPress.org plugin name guidelines. Slug and text domain changed.

= 1.0.1 =
Link previews in MAX messages are now disabled by default and field labels are inherited from the CF7 mail template.

= 1.0.0 =
Initial release.
