v1.1.0

CF7 Booster

Supercharge Contact Form 7 with instant Telegram & Bale notifications, per-form message templates, smart automation rules, and a full submission management dashboard.

Problems This Plugin Solves

  • You only find out about new form submissions when you check your email - sometimes hours later.
  • Contact Form 7 sends one global email but gives you no way to route different forms to different people or channels.
  • There is no built-in submission log, so if an email bounces or goes to spam you lose the lead permanently.
  • Setting up a different message template for each form requires hacking CF7's mail tab every time.
  • Connecting multiple Telegram channels or Bale groups to different forms requires complex third-party automation tools.
  • You can't tell whether a notification was delivered, failed, or is waiting to retry - there is no visibility.
  • Routing form submissions by field value (e.g. budget > 5000 → VIP channel) is impossible without custom code.

One Plugin. Complete Notification Control.

CF7 Booster adds a native 🚀 CF7 Booster tab directly inside every Contact Form 7 form editor. From there you enable Telegram and Bale notifications for that specific form, write its own message template using real field placeholders, and point it to any chat ID or channel - all without leaving the CF7 editor. A global bot token is configured once. Everything else is per-form. An automation engine lets you write rules that route submissions by form, field name pattern, or field value using AND/OR logic with 13 operators including regex. Every delivery attempt is logged, retried automatically on failure, and visible in a management dashboard with CSV export.

  • Get notified on Telegram or Bale within seconds of every form submission.
  • Each form has its own message template - no more one-size-fits-all notifications.
  • Never lose a lead - every submission is stored in the database regardless of delivery status.
  • Route different forms to different channels, groups, or team members automatically.
  • Works across forms: use {radio} or {all_fields} instead of guessing auto-generated field IDs like {radio-289}.
  • Full delivery logs with retry, sensitive data masking, and resend-on-demand.
  • Zero external dependencies - uses WordPress-native WP-Cron and standard wp_remote_post.

How It Works

  1. Set your bot token once

    Go to CF7 Booster → Telegram (or Bale) in the WordPress admin menu. Enter your bot token from @BotFather and optionally set default destination chat IDs. This is a one-time global configuration.

  2. Open any CF7 form and click the 🚀 CF7 Booster tab

    Every Contact Form 7 form editor now has a new CF7 Booster tab. Open it to enable Telegram and/or Bale for that form, enter the destination chat IDs or @channels specific to this form, and write a custom message template.

  3. Build your message template with real field names

    Click any placeholder chip to insert it into the template at the cursor position. Use {name}, {email}, {phone}, {message} as universal aliases. Use {radio} or {checkbox} to capture any radio/checkbox field regardless of its auto-generated ID. Use {all_fields} to automatically list every field and its value.

  4. Optionally create automation rules

    Go to CF7 Booster → Automation to build condition-based routing rules. Example: IF field name contains 'radio' AND value contains 'sale' THEN send to the Sales Telegram channel. Combine multiple conditions with AND/OR logic and send to multiple destinations from a single rule.

  5. Submissions are delivered and logged automatically

    When a visitor submits any form, CF7 Booster intercepts the submission, stores it in the database, and dispatches notifications in the background via WP-Cron. Failed deliveries are retried automatically. View all submissions, filter, search, export to CSV, or manually resend from the Submissions dashboard.

Features

  • Per-form Settings Tab

    A native 🚀 CF7 Booster tab appears inside every CF7 form editor. Enable Telegram/Bale, set destinations, and write a custom message template - all without leaving the CF7 editor. Settings are saved independently per form.

  • Telegram Notifications

    Send formatted notifications to any Telegram bot chat, channel, or group. Supports multiple destinations simultaneously. Bot token is configured once globally; destinations can be overridden per form.

  • Bale Messenger Notifications

    Full support for Bale Messenger with independent bot configuration, destinations, and message templates. Same architecture as Telegram - completely separate settings and delivery logs.

  • Smart Placeholder System

    Use {name}, {email}, {phone}, {message} as universal aliases. Use {radio}, {checkbox}, {select} to capture field values by type - works across all forms regardless of auto-generated IDs like radio-289. Use {all_fields} to dump every field automatically.

  • Clickable Placeholder Chips

    The message template editor shows chips for every system placeholder AND every actual field in that specific form. Click a chip to insert it at the cursor. No need to remember field names.

  • Automation Rules Engine

    Build condition-based routing rules with AND/OR logic. Match by form, exact field name, or field name pattern (e.g. name contains 'radio'). 13 operators: equals, contains, starts with, ends with, regex, greater/less than, empty, not empty, and more.

  • Multi-destination per Rule

    Each automation rule can send to multiple channels and destinations simultaneously. Each destination in a rule can have its own custom message template override.

  • Submission Storage

    Every form submission is stored in a custom database table with form ID, field values, IP address, user agent, referrer, and delivery status. Data is never lost even if notification delivery fails.

  • Management Dashboard

    Overview of total, today, weekly submissions and delivery success rates. Searchable, filterable submissions table with status badges, field preview, and one-click resend.

  • CSV Export

    Export all submissions or filtered results to CSV with a single click directly from the submissions table.

  • Async Queue with Auto-retry

    Notifications are dispatched in the background via WP-Cron so form submissions return instantly to visitors. Failed deliveries are retried automatically with configurable intervals and maximum attempt counts.

  • Delivery Logs

    Full per-channel delivery log with INFO, WARNING, and ERROR levels. Filter by channel or level. Sensitive fields (phone, email) are optionally masked in logs while full data is preserved in submissions.

  • Multilingual - RTL Ready

    Ships with complete Persian (fa_IR) and Arabic (ar) translations compiled and ready to use. A .pot template is included for any other language. All UI is RTL-compatible.

  • WordPress Security Standards

    Nonce verification on all forms and AJAX endpoints, capability checks (manage_options), input sanitization on every field, and output escaping throughout. Bot tokens are never exposed in the frontend.

  • No External Dependencies

    Uses WordPress-native functions exclusively: wp_remote_post for API calls, wp_schedule_single_event for the queue, and standard wpdb for storage. No Composer packages, no external SDKs.

Frequently Asked Questions

Reviews

5.0
1 ratings
inaser.ir

Exactly what CF7 was missing

We needed instant Telegram notifications for multiple forms routing to different team channels. CF7 Booster solved it completely - per-form templates, multiple destinations, automation rules, and a clean submission log. The placeholder chip system for the message editor is a genuinely nice touch.

Technical Details

WordPress Hooks

  • wpcf7_mail_sent
  • wpcf7_before_send_mail
  • wpcf7_mail_failed
  • wpcf7_save_contact_form
  • wpcf7_editor_panels
  • admin_menu
  • admin_enqueue_scripts
  • cf7on_process_queue
  • cf7on_retry_delivery
  • wp_ajax_cf7on_save_telegram
  • wp_ajax_cf7on_save_bale
  • wp_ajax_cf7on_save_settings
  • wp_ajax_cf7on_save_rules
  • wp_ajax_cf7on_save_form_settings
  • wp_ajax_cf7on_test_telegram
  • wp_ajax_cf7on_test_bale
  • wp_ajax_cf7on_resend
  • wp_ajax_cf7on_export_csv

API Integrations

  • Telegram Bot API - sendMessage (https://core.telegram.org/bots/api)
  • Bale Messenger Bot API - sendMessage (https://tapi.bale.ai)
  • WordPress wp_remote_post - HTTP delivery layer
  • WordPress wp_schedule_single_event - async queue via WP-Cron
  • WordPress wpdb - custom tables for submissions, deliveries, and logs

Performance Notes

All notification delivery runs asynchronously via WP-Cron after the form submission response is returned to the visitor. No API calls are made during the HTTP request/response cycle in the default async mode. Database writes are minimal: one INSERT per submission, one per delivery attempt. Logging can be disabled on high-traffic sites to further reduce writes.

Requirements

  • WordPress 5.8+
  • PHP 7.4+
  • Contact Form 7 (required, any recent version)
  • WordPress 5.8 or higher
  • PHP 7.4 or higher
  • WP-Cron enabled (for async queue mode)

Changelog

v1.1.0
  • Added: Native 🚀 CF7 Booster tab integrated directly into every CF7 form editor page (/wp-admin/admin.php?page=wpcf7&post=XXX&active-tab=cf7booster).
  • Added: Per-form Telegram settings - enable/disable, custom destinations, and message template per individual form.
  • Added: Per-form Bale settings - fully independent from Telegram, same per-form architecture.
  • Added: AJAX save button inside the form tab - saves CF7 Booster settings without leaving the CF7 editor; also works with CF7's own native Save button.
  • Added: Clickable placeholder chips in the per-form message template editor showing all system placeholders and every actual field from that specific form.
  • Added: FormTabModule class (app/Modules/FormTab/FormTabModule.php) with register(), addPanel(), renderPanel(), saveFormSettings(), ajaxSaveFormSettings(), and persistFormSettings().
  • Added: form-tab.php admin template (templates/admin/form-tab.php) with two-column Telegram/Bale layout and global bot status indicators.
  • Added: Priority resolution chain in QueueService - Automation Rules → Per-form settings → Global settings fallback.
  • Added: Per-form destinations fall back to global destinations if left blank in the form tab.
  • Changed: Renamed plugin from 'CF7 Omni Notifications' to 'CF7 Booster' throughout - plugin file, text domain, admin menu, constants, and all templates.
  • Changed: Main plugin file renamed from wp-cf7-omni-notifications.php to cf7-booster.php.
  • Changed: Text domain changed from cf7-omni-notifications to cf7-booster in all PHP files and templates.
  • Changed: Telegram global settings page - removed message template section; replaced with per-form status overview table with direct Configure links.
  • Changed: Bale global settings page - same restructuring as Telegram; template section removed, per-form overview table added.
  • Changed: Settings page refactored with a support/footer card showing plugin page URL (inaser.ir/plugin/cf7-booster), documentation link, and contact for support.
  • Changed: Admin menu icon updated to dashicons-megaphone.
  • Changed: admin_enqueue_scripts now also fires on CF7 editor pages (page=wpcf7) so form tab assets load correctly.
  • Added: proxyFormTabSave() method in DashboardModule to route wp_ajax_cf7on_save_form_settings to FormTabModule.
  • Added: Full Persian (fa_IR) translation - cf7-booster-fa_IR.po and compiled cf7-booster-fa_IR.mo - covering all 100+ translatable strings.
  • Added: Full Arabic (ar) translation - cf7-booster-ar.po - covering all strings.
  • Added: Master POT translation template (cf7-booster.pot) for community translators.
  • Added: languages/ directory with .pot, Persian .po/.mo, and Arabic .po files.
  • Added: cf7on-form-tab-wrap, cf7on-tab-two-col, cf7on-tab-channel-card, cf7on-channel-title, cf7on-global-badge, cf7on-toggle-label, cf7on-tab-field, cf7on-hint, cf7on-tab-save-row CSS classes.
  • Added: cf7on-info-banner CSS class for the yellow notice on Telegram/Bale global pages.
  • Added: cf7on-support-card, cf7on-support-inner, cf7on-support-logo, cf7on-support-body, cf7on-support-links CSS classes for the Settings page footer.
  • Added: JS handler for #cf7on-save-form-tab button - collects all named inputs in the form tab and POSTs via AJAX without page reload.
  • Updated: readme.txt to reflect new plugin name, per-form tab feature, and support URLs.
v1.0.3
  • Fixed: Automation Type dropdown change no longer requires a page reload - changing the type now immediately re-renders the correct condition inputs via a change event listener on .rule-cond-type.
  • Fixed: Automation Value field was always showing a form name dropdown regardless of the selected Type - each type now renders its own appropriate input (form dropdown, text field, or datalist autocomplete).
  • Fixed: THEN section in automation rules only fired a single delivery - multiple action rows now correctly send to all configured channels and destinations.
  • Fixed: Automation rules data model used a single condition object; migrated to a conditions array supporting multiple conditions per rule with AND/OR logic.
  • Fixed: ajaxSaveRules now correctly sanitizes and persists the conditions array instead of a single condition block.
  • Added: field_name condition type - matches fields by name pattern (e.g. name contains 'radio') plus a value condition, solving the cross-form {radio-289} vs {radio-389} problem without hardcoding field IDs.
  • Added: field_exact condition type - matches a field by its precise known name with a value operator.
  • Added: 4 distinct condition types: field_name (pattern), field_exact, form_id (dropdown), form_name (text match).
  • Added: 13 condition operators: =, !=, contains, not_contains, starts, ends, >, <, >=, <=, regex, empty, not_empty.
  • Added: AND/OR logic selector between multiple conditions on the same rule.
  • Added: Unlimited action rows per rule - each with channel selector, destination input, and optional custom message template override.
  • Added: Custom template per action row - each destination in a rule can override the global message template independently.
  • Added: cf7onBasetypes JavaScript variable passed from PHP to the automation template - populates the field name datalist with actual base types (radio, checkbox, select, etc.) from all published CF7 forms.
  • Added: cf7onFields JavaScript variable listing all field names and types from all published CF7 forms for datalist autocomplete in condition inputs.
  • Added: Visual toggle switches (cf7on-toggle-wrap / cf7on-slider) replacing plain checkboxes in rule headers.
  • Added: cf7on-cond-badge styling with IF/AND/OR colour coding.
  • Added: Explanatory info box at top of Automation Rules page describing how rules work, fallback behaviour, and field_name pattern usage.
  • Added: Value input auto-hides when operator is empty or not_empty.
  • Improved: collectRules() now reads DOM state into cf7onRules before every render, preventing stale data on re-renders.
  • Improved: renderRules() fully reconstructs the rule list from the data model on every change - no partial DOM updates.
  • Updated: AutomationEngine.php - added evaluateConditions() with AND/OR logic, conditionMatches() supporting all four types, compareValues() with all 13 operators including regex and mb_str* for Unicode support.
v1.0.2
  • Fixed: Radio button, checkbox, and multi-select field values were rendered as the literal string 'Array' in Telegram/Bale messages - fieldToString() now joins array values with ', '.
  • Fixed: Telegram and Bale message templates did not expose all CF7 fields - only fields matching hardcoded alias names were available as placeholders.
  • Added: {radio} base-type alias - resolves to the value of the first radio field on the form regardless of its auto-generated ID (radio-289, radio-389, etc.).
  • Added: {checkbox} base-type alias - resolves to the first checkbox field value, arrays joined with ', '.
  • Added: {select} and other CF7 base-type aliases - any field base type is now available as a placeholder.
  • Added: {all_fields} placeholder - dumps every submitted field as 'Label: Value' on separate lines, works on any form with no per-field configuration.
  • Added: {form_id}, {ip_address}, {referrer} system placeholders.
  • Added: {subject} semantic alias (your-subject and variants).
  • Added: Every raw CF7 field available as {field-name} with exact name match - covers all field types.
  • Added: Unmatched placeholders are silently stripped from the output instead of appearing as literal {text} in the message.
  • Added: CF7 form tag scanning via WPCF7_ContactForm::get_instance() and scan_form_tags() to resolve base-type aliases at render time.
  • Added: Telegram and Bale settings pages now display live placeholder chips - one set for system placeholders and one set for every actual field in every published CF7 form.
  • Added: Chips are colour-coded: blue for system placeholders, green for form fields with field type shown as a subtitle.
  • Added: Clicking a chip inserts the placeholder at the cursor position in the nearest textarea with visual 'inserted' flash feedback.
  • Changed: Template rendering in ChannelAdapter::renderTemplate() completely rewritten to support all placeholder categories.
  • Updated: Telegram template page layout changed to two-column: bot configuration left, template editor with chips right.
  • Updated: Bale template page updated to match Telegram layout.
v1.0.1
  • Fixed: Queue mode setting label was ambiguous - Settings page now shows a full plain-language explanation of Async vs Sync with use-case guidance and a WP-Cron warning.
  • Fixed: Submissions table Value field showed raw form dropdown options in automation regardless of selected condition type.
  • Fixed: Admin JS save handler failed silently when data-map attribute was a JSON string - now safely parsed with try/catch.
  • Fixed: Test connection buttons on Telegram and Bale pages were using hardcoded element IDs that conflicted - corrected to #tg_token and #ba_token respectively.
  • Added: Automation Rules page - cf7onForms variable passed from PHP to provide the form dropdown options.
  • Added: Submissions page search bar with form filter, status filter, and Export CSV button.
  • Added: Submissions table pagination using WordPress paginate_links().
  • Added: Resend AJAX handler (cf7on_resend) - manually re-dispatches notifications for any stored submission.
  • Added: Export CSV AJAX handler (cf7on_export_csv) - streams all submissions as a downloadable CSV file.
  • Added: Logs page with channel and level filter dropdowns and colour-coded row classes (cf7on-log-error, cf7on-log-warning, cf7on-log-info).
  • Added: Dashboard page recent submissions feed with delivery channel badges.
  • Added: Sensitive data masking in LogService - phone numbers masked to 0912******34 pattern, emails masked to us***@domain.com pattern.
  • Added: DashboardModule::getAllForms() helper to populate form dropdowns across all admin pages.
  • Improved: All admin pages now show an #cf7on-notice div for AJAX success/error feedback with auto-dismiss after 4 seconds.
  • Improved: cf7on-badge CSS classes cover all submission statuses: delivered (green), pending/partial (yellow), failed (red).
  • Updated: Settings page queue mode description now explains WP-Cron dependency and DISABLE_WP_CRON warning.
v1.0.0
  • Initial release of CF7 Omni Notifications (later renamed CF7 Booster).
  • Added: CF7Integration module hooking into wpcf7_mail_sent (primary) and wpcf7_before_send_mail (alternative) and wpcf7_mail_failed.
  • Added: extractSubmissionData() - captures all posted CF7 fields, strips internal CF7 keys, and records IP, user agent, and referrer.
  • Added: Submission model with save(), find(), findAll(), updateStatus(), and count() methods using custom wp_cf7on_submissions table.
  • Added: Delivery model with create(), find(), markSuccess(), markFailed(), incrementAttempt(), and forSubmission() methods using wp_cf7on_deliveries table.
  • Added: LogService with write() and getRecent() methods using wp_cf7on_logs table.
  • Added: Three custom database tables created on activation via dbDelta(): wp_cf7on_submissions, wp_cf7on_deliveries, wp_cf7on_logs.
  • Added: Installer class with activate() (creates tables, sets default options) and deactivate() (clears WP-Cron hooks).
  • Added: Plugin singleton service container (Core/Plugin.php) with PSR-4 autoloader and dependency injection.
  • Added: ChannelAdapter abstract base class with send(), renderTemplate(), and fieldToString() - shared by all channel adapters.
  • Added: TelegramAdapter - sends to api.telegram.org/bot{token}/sendMessage with HTML parse mode, includes testConnection().
  • Added: BaleAdapter - sends to tapi.bale.ai/bot{token}/sendMessage, includes testConnection().
  • Added: QueueService with dispatch() (async via wp_schedule_single_event or sync), processJob(), retryDelivery(), and scheduleRetry().
  • Added: AutomationEngine with resolveTargets(), evaluateConditions(), conditionMatches(), and compareValues().
  • Added: DashboardModule registering all admin menus, sub-pages, assets, and AJAX handlers.
  • Added: Admin menu 'CF7 Omni' with sub-pages: Dashboard, Submissions, Telegram, Bale, Automation, Logs, Settings.
  • Added: Admin CSS (assets/css/admin.css) with stat cards, two-column card layout, badges, filters, log table, and placeholder chip styles.
  • Added: Admin JS (assets/js/admin.js) with generic save handler, test connection, resend, and automation rule builder.
  • Added: Default options set on activation: cf7on_telegram, cf7on_bale, cf7on_engine, cf7on_automation_rules.
  • Added: Nonce verification, capability checks (manage_options), input sanitization, and output escaping on all endpoints.
  • Added: Template placeholders: {name}, {email}, {phone}, {message}, {subject}, {form_name}, {submission_date}.

Roadmap

  • WhatsApp Business API integration
  • Slack channel notifications
  • Discord webhook support
  • Webhook engine - send submission data to any URL
  • REST API for external submission retrieval
  • AI-based spam detection before notification dispatch
  • Lead scoring and automatic priority tagging
  • CRM connector (HubSpot, Zoho, Salesforce)
  • Scheduled digest emails (hourly / daily summary)
  • Submission notes and status management for teams

Community Reviews & Questions (2)

Leave a Review or Question