Controls for Contact Form 7 (Redirects, Analytics & Tracking)
NEW: Subscribe to the 🚀 PRO version for advanced analytics and tracking features, and professional support by the plugin author. This is an addon for the Contact Form 7 plugin with the following features: Track form submissions, errors and completions with Google Analytics (GA4), Google Tag (gtag.js), Google Tag Manager (GTM), Matomo (formerly Piwik) and Facebook Pixel. Redirect to URL on form submission. Enable native WordPress shortcodes in form content. Disable AJAX form submissions. Disable default form CSS. Disable automatic paragraph formatting. Disable HTML5 input field types or enable the HTML5 input type fallback. Specify the Google reCAPTCHA language. Store form submissions in Storage for Contact Form 7 or TablePress. Please note that some settings work on the per-page level and will apply to all forms on the same page. For example, disabling AJAX form submissions for one form will disable AJAX submissions on all forms on the same page. Requirements Contact Form 7 version 4.3 or later for features related to submission tracking and redirects. Usage The plugin adds a new “Controls” tab for each Contact Form 7 form in the WordPress administration area. Form Submission Storage Setup the official companion plugin Storage for Contact Form 7 plugin for capturing the form submissions safely in the WordPres database. Alternatively, there is also a basic integration with the TablePress plugin. Select the TablePress table where to store the form submissions. The plugin will add any missing columns for each form field, and append the form entries as rows to the table. Additionally, fields cf7_time (submission time as ISO 8601) and cf7_url (URL where the form was submitted) are stored along with the form data. Analytics Tracking The plugin automatically triggers analytics events for the following services: Google Analytics (GA4) using Google Tag Manager and Global Tag (gtag.js) with ga(), _gaq.push() and dataLayer.push() implementations, Matomo (formerly Piwik), Facebook Pixel Conversion Tracking. It passes the following data with the event: “Contact Form” as the event category, “Submit”, “Sent”, “Error” or “Spam” as the event action, and the form title as the event title. Facebook Pixel The standard Contact event is used for Facebook Pixel with content_category property set to the event type (Submit, Sent, Error, Spam) and content_name set to the form title. Contribute Report issues and suggest improvements on GitHub. Add a translation to your language.
Top keywords
- form24×6.11%
- contact7×1.78%
- submissions7×1.78%
- contact form6×1.53%
- event6×1.53%
- form submissions6×1.53%
- google6×1.53%
- analytics5×1.27%
- disable5×1.27%
- facebook4×1.02%
- facebook pixel4×1.02%
- pixel4×1.02%
Pagemetrics for Matomo
Pagemetrics for Matomo adds privacy-friendly, server-side analytics to WordPress by leveraging the pagemachine/matomo-tracking PHP library. When enabled, the plugin sends page view and optional download events from your WordPress site directly to a Matomo instance without loading Matomo’s JavaScript tracker. Key benefits: Track page views on the server with full control over attributes such as title, URL and referrer. Optional download tracking rewrites file links and records the click before redirecting visitors. Optional AI assistant bot tracking detects crawls from ChatGPT, Claude, Perplexity and others and forwards them to Matomo’s dedicated AI Assistants report. Multisite aware – network admins can define defaults, individual sites can override them. Respects Do Not Track and Global Privacy Control headers through the underlying library. Logs issues to the WordPress debug log when WP_DEBUG is enabled. Looking for expert help with Matomo or server-side tracking? Pagemachine offers consulting, implementation and ongoing support via our Pagemetrics solution. More info: Pagemetrics.eu Developer Hooks Page view tracking: pm_matomo_tracking_should_track_request — Return false to skip page view tracking for the current request. pm_matomo_tracking_visitor_ip — Override the visitor IP forwarded to Matomo as cip (defaults to REMOTE_ADDR; used for page views and downloads when an auth token is set). Return an empty string to skip IP forwarding. Download tracking: pm_matomo_tracking_should_rewrite_downloads — Return false to keep original download URLs for the current post. pm_matomo_tracking_is_download_url — Decide whether a specific URL should be rewritten (receives URL and default extension list). pm_matomo_tracking_download_extensions — Adjust the list of file extensions that count as downloads. pm_matomo_tracking_download_url — Customize the generated redirect URL used for download tracking. pm_matomo_tracking_download_redirect_status — Change the HTTP status code used when redirecting to the original file. AI assistant bot tracking: pm_matomo_tracking_ai_bot_user_agents — Extend or replace the list of User-Agent substrings used to detect AI bots. General: pm_matomo_tracking_log_message — Listen to debug messages emitted while WP_DEBUG is enabled. Example usages // Skip tracking for administrators. add_filter('pm_matomo_tracking_should_track_request', static function ($shouldTrack) { return current_user_can('manage_options') ? false : $shouldTrack; }); // Keep original download URLs on the privacy policy page. add_filter('pm_matomo_tracking_should_rewrite_downloads', static function ($shouldRewrite) { return is_page('privacy-policy') ? false : $shouldRewrite; }); // Force CDN assets to be treated as downloads. add_filter('pm_matomo_tracking_is_download_url', static function ($decision, $url) { return str_contains($url, 'cdn.example.com/assets/') ? true : $decision; }, 10, 2); // Add extra file types to download tracking. add_filter('pm_matomo_tracking_download_extensions', static function ($extensions) { $extensions = array_merge($extensions, ['svg', 'heic']); return array_unique($extensions); }); // Append a checksum to rewritten download URLs. add_filter('pm_matomo_tracking_download_url', static function ($trackingUrl, $target, $label) { $checksum = substr(hash('sha256', $target . $label), 0, 12); return add_query_arg('pm_checksum', $checksum, $trackingUrl); }, 10, 3); // Use a 307 redirect instead of the default 302. add_filter('pm_matomo_tracking_download_redirect_status', static function () { return 307; }); // Add a custom bot to AI assistant tracking. add_filter('pm_matomo_tracking_ai_bot_user_agents', static function (array $substrings): array { $substrings[] = 'MyCustomBot'; return $substrings; }); // Behind a reverse proxy: forward the real client IP from X-Forwarded-For. add_filter('pm_matomo_tracking_visitor_ip', static function ($ip, $request) { $forwarded = $request->getHeaderLine('X-Forwarded-For'); if ($forwarded === '') { return $ip; } // Use the first (client) address in the list. return trim(explode(',', $forwarded)[0]); }, 10, 2); // Forward debug messages to the PHP error log while developing. add_action('pm_matomo_tracking_log_message', static function ($level, $message) { if (!defined('WP_DEBUG') || WP_DEBUG !== true) { return; } // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log error_log(sprintf('[Pagemetrics for Matomo][%s] %s', strtoupper((string) $level), $message)); }, 10, 2);