{"id":323356,"date":"2026-06-10T14:38:49","date_gmt":"2026-06-10T14:38:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/tagflux\/"},"modified":"2026-08-15T18:58:12","modified_gmt":"2026-08-15T18:58:12","slug":"tagflux","status":"publish","type":"plugin","link":"https:\/\/bcc.wordpress.org\/plugins\/tagflux\/","author":23512796,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.6","stable_tag":"1.2.6","tested":"7.0.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"TagFlux","header_author":"Equipo TagFlux","header_description":"Auto-detect your WordPress forms and track their submissions as Google Ads conversions \u2014 no code or Tag Manager needed.","assets_banners_color":"f9ded0","last_updated":"2026-08-15 18:58:12","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/tagflux.io\/tagflux-plugin","header_author_uri":"https:\/\/tagflux.io","rating":5,"author_block_rating":0,"active_installs":0,"downloads":563,"num_ratings":1,"support_threads":1,"support_threads_resolved":1,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"tagflux","date":"2026-06-10 14:38:39"},"1.0.1":{"tag":"1.0.1","author":"tagflux","date":"2026-06-25 10:52:39"},"1.0.2":{"tag":"1.0.2","author":"tagflux","date":"2026-06-26 15:12:49"},"1.1.0":{"tag":"1.1.0","author":"tagflux","date":"2026-07-13 10:12:48"},"1.2.0":{"tag":"1.2.0","author":"tagflux","date":"2026-07-22 20:59:32"},"1.2.1":{"tag":"1.2.1","author":"tagflux","date":"2026-08-07 16:16:27"},"1.2.2":{"tag":"1.2.2","author":"tagflux","date":"2026-08-07 17:11:42"},"1.2.3":{"tag":"1.2.3","author":"tagflux","date":"2026-08-13 18:36:06"},"1.2.4":{"tag":"1.2.4","author":"tagflux","date":"2026-08-14 10:15:11"},"1.2.5":{"tag":"1.2.5","author":"tagflux","date":"2026-08-14 20:20:14"},"1.2.6":{"tag":"1.2.6","author":"tagflux","date":"2026-08-15 18:58:12"}},"upgrade_notice":{"1.2.6":"<p>Ninja Forms conversions no longer count twice in dual mode, and Complianz banners now work out of the box: the visitor&#039;s consent choice reaches TagFlux even when Complianz has no Google service configured. Recommended update.<\/p>","1.2.5":"<p>Consent fixes: declining after having accepted now releases the click identifier everywhere, forms that appear after page load keep conversion deduplication, and custom consent banners that emit Google Consent Mode v2 are honoured automatically. Recommended update.<\/p>","1.2.4":"<p>Conversions are no longer lost when a visitor declines cookies: the click identifier is now also read from the submission request, which stores nothing on the visitor&#039;s device. On sites with a consent banner, the click identifier cookie now waits for advertising consent. Recommended update.<\/p>","1.2.3":"<p>Adds Divi 5 support and fixes conversion tracking on pages that embed a WPForms block \u2014 those pages were not loading the tracking script, so the browser-side conversion was lost. Recommended update.<\/p>","1.2.2":"<p>Google Ads accounts are now listed as a hierarchy, and &quot;Link&quot; is only offered for accounts that can actually record conversions \u2014 manager (MCC) and cancelled accounts explain why instead of failing after you click.<\/p>","1.2.1":"<p>Housekeeping release: uninstalling the plugin now clears all of its settings, so a reinstall really does start from scratch. No functional changes.<\/p>","1.2.0":"<p>Adds an optional &quot;help me set it up&quot; banner: leave your email and the TagFlux team helps you activate the plugin for free. Explicit opt-in, dismissible, no data sent unless you ask.<\/p>","1.1.0":"<p>Adds server-side conversion tracking (dual mode) with Consent Mode v2 and optional Enhanced Conversions \u2014 recovers conversions lost to blocked scripts, deduplicated via order ID. Also fixes the Spanish admin translations not loading. Recommended update.<\/p>","1.0.2":"<p>Clearer setup docs and an expanded FAQ for Google Ads conversion tracking. No functional changes.<\/p>","1.0.1":"<p>Improves error reporting when connecting to Google Ads. Recommended update.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3567692,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3567692,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3567692,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3567692,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.1.0","1.2.0","1.2.1","1.2.2","1.2.3","1.2.4","1.2.5","1.2.6"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3567702,"resolution":"1","location":"assets","locale":"","width":1219,"height":1264},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3567702,"resolution":"2","location":"assets","locale":"","width":1100,"height":451},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3567702,"resolution":"3","location":"assets","locale":"","width":1093,"height":1277}},"screenshots":{"1":"Dashboard with Google Ads metrics (clicks, CPC, conversions, cost) and breakdowns by form and campaign.","2":"Onboarding: the explicit \"Connect to TagFlux\" opt-in, disclosing exactly what data is sent before anything leaves your site.","3":"Settings: connect your Google Ads account, set the cookie consent mode, and disconnect the site whenever you want."}},"plugin_section":[],"plugin_tags":[1152,986,30680,985,219244],"plugin_category":[],"plugin_contributors":[266527],"plugin_business_model":[],"class_list":["post-323356","plugin","type-plugin","status-publish","hentry","plugin_tags-contact-form-7","plugin_tags-conversion-tracking","plugin_tags-form-tracking","plugin_tags-google-ads","plugin_tags-server-side-tracking","plugin_contributors-tagflux","plugin_committers-tagflux"],"banners":{"banner":"https:\/\/ps.w.org\/tagflux\/assets\/banner-772x250.png?rev=3567692","banner_2x":"https:\/\/ps.w.org\/tagflux\/assets\/banner-1544x500.png?rev=3567692","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/tagflux\/assets\/icon-128x128.png?rev=3567692","icon_2x":"https:\/\/ps.w.org\/tagflux\/assets\/icon-256x256.png?rev=3567692","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/tagflux\/assets\/screenshot-1.jpg?rev=3567702","caption":"Dashboard with Google Ads metrics (clicks, CPC, conversions, cost) and breakdowns by form and campaign."},{"src":"https:\/\/ps.w.org\/tagflux\/assets\/screenshot-2.jpg?rev=3567702","caption":"Onboarding: the explicit \"Connect to TagFlux\" opt-in, disclosing exactly what data is sent before anything leaves your site."},{"src":"https:\/\/ps.w.org\/tagflux\/assets\/screenshot-3.jpg?rev=3567702","caption":"Settings: connect your Google Ads account, set the cookie consent mode, and disconnect the site whenever you want."}],"raw_content":"<!--section=description-->\n<p>TagFlux is a server-side Google Ads conversion tracking plugin for WordPress forms. It auto-detects the forms already installed on your site, lets you choose which submissions count as conversions, and sends them to Google Ads through the TagFlux backend using the Google Click Identifier (gclid) \u2014 no code, no Google Tag Manager, no manual event setup.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Server-side Google Ads conversion tracking for WordPress forms<\/li>\n<li>Conversion submission through the TagFlux backend using the Google Ads API<\/li>\n<li>Google Ads connection via OAuth<\/li>\n<li>GCLID capture and first-party cookie storage<\/li>\n<li>Auto-detection of supported WordPress forms<\/li>\n<li>Support for Contact Form 7, WPForms, Elementor Pro Forms, Ninja Forms and Divi Forms<\/li>\n<li>Choose which forms to track from the WordPress admin<\/li>\n<li>Track form submissions from Google Ads traffic<\/li>\n<li>Dashboard with clicks, CPC, conversions and total cost<\/li>\n<li>Breakdowns by form, campaign and landing page<\/li>\n<li>No Google Tag Manager setup required<\/li>\n<li>No custom JavaScript required<\/li>\n<li>Built for Google Ads lead generation campaigns<\/li>\n<li>Consent Mode v2 aware: reads the visitor's real consent state from your consent banner and forwards it with each server-side conversion<\/li>\n<li>Optional Enhanced Conversions: email\/phone sent as SHA-256 hashes, only if you enable it and the visitor granted consent<\/li>\n<li>Compatible with consent managers (GDPR-friendly)<\/li>\n<li>Available in English and Spanish<\/li>\n<\/ul>\n\n<h4>Server-side Google Ads conversion tracking for WordPress<\/h4>\n\n<p>TagFlux uses server-side conversion tracking to send WordPress form submissions to Google Ads through the TagFlux backend.<\/p>\n\n<p>When a visitor arrives from a Google Ads click, TagFlux picks up the Google Click Identifier (gclid) from the ad URL and, where consent allows it, keeps it in a first-party cookie. If that visitor submits a tracked WordPress form, TagFlux sends the conversion event to Google Ads through the backend instead of relying only on browser-side tags \u2014 and if there is no cookie, it recovers the identifier from the submission request itself, so declining cookies costs you the visit-to-visit bridge but not the conversion.<\/p>\n\n<p>This is useful for lead generation websites that want more reliable Google Ads conversion tracking without maintaining a custom Google Tag Manager or gtag setup.<\/p>\n\n<h4>Why TagFlux instead of Google Tag Manager?<\/h4>\n\n<p>Setting up Google Ads conversion tracking by hand usually means editing gtag snippets, configuring triggers in Google Tag Manager, and testing events one by one.<\/p>\n\n<p>TagFlux skips the manual tag setup. It detects your WordPress forms, captures the Google Click Identifier (gclid), and reports form submissions to Google Ads server-side through the TagFlux backend using the Google Ads API.<\/p>\n\n<p>That means no GTM container to maintain, no custom JavaScript, no manual event setup, and fewer moving parts between your WordPress forms and Google Ads conversion actions.<\/p>\n\n<h4>Supported form plugins<\/h4>\n\n<p>TagFlux currently supports:<\/p>\n\n<ul>\n<li>Contact Form 7<\/li>\n<li>WPForms<\/li>\n<li>Elementor Pro Forms<\/li>\n<li>Ninja Forms<\/li>\n<li>Divi Forms<\/li>\n<\/ul>\n\n<p>If your Google Ads traffic lands on a WordPress page using one of these form plugins, TagFlux can help track those form submissions as Google Ads conversions.<\/p>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>Install and activate the plugin \u2014 activation contacts no external service.<\/li>\n<li>Click \"Connect to TagFlux\" and connect your Google Ads account via OAuth.<\/li>\n<li>Select which forms to track. From then on, every submission is sent to Google Ads as a conversion automatically.<\/li>\n<\/ol>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to two external services to provide conversion tracking. It does not work without them.<\/p>\n\n<p><strong>1. TagFlux backend (api.tagflux.io)<\/strong><\/p>\n\n<p>TagFlux relays conversion data to Google Ads through its own backend.<\/p>\n\n<ul>\n<li><strong>When you connect the site:<\/strong> activating the plugin sends nothing. Only after you explicitly click \"Connect to TagFlux\" on the plugin settings screen does it send this site's URL and name to <code>https:\/\/api.tagflux.io\/api\/auth\/register<\/code> to register the site and obtain an API key. No personal data is sent at this step.<\/li>\n<li><strong>When you ask for setup help (optional):<\/strong> while the plugin is not yet connected, an admin-only banner offers free help activating TagFlux. Nothing is sent unless you type an email address and explicitly click \"Yes, help me\" \u2014 then the plugin sends that email address plus your site URL and name, site language and WordPress\/plugin versions to <code>https:\/\/api.tagflux.io\/api\/support\/help-requests<\/code> so the TagFlux team can contact you. Dismissing the banner sends nothing and it will not be shown again.<\/li>\n<li><strong>When a tracked form is submitted:<\/strong> it sends a Google Click Identifier (<code>gclid<\/code>\/<code>wbraid<\/code>\/<code>gbraid<\/code>, taken from the submission request, from a hidden form field, or from a first-party cookie tagged as <code>marketing<\/code> \u2014 which on a site with a consent banner is only written once advertising consent is granted), the visitor's Consent Mode v2 state, an order ID used for deduplication, the form\/campaign identifiers and the conversion event to <code>https:\/\/api.tagflux.io<\/code>. The contents of the form fields (names, emails, messages) are <strong>not<\/strong> sent \u2014 with one exception: if you enable the optional Enhanced Conversions setting <strong>and<\/strong> the visitor has granted ad consent, the email and\/or phone number from the submitted form are sent as SHA-256 hashes (never in plain text).<\/li>\n<\/ul>\n\n<p>TagFlux terms: https:\/\/tagflux.io\/plugin-terms\/ \u2014 privacy policy: https:\/\/tagflux.io\/plugin-privacy-policy\/<\/p>\n\n<p><strong>2. Google Ads \/ Google OAuth<\/strong><\/p>\n\n<p>To connect your Google Ads account the plugin uses Google's OAuth flow, and the backend reads\/writes conversion data via the Google Ads API on your behalf.<\/p>\n\n<p>Google terms: https:\/\/policies.google.com\/terms \u2014 privacy policy: https:\/\/policies.google.com\/privacy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>tagflux<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install it from the WordPress plugin repository.<\/li>\n<li>Activate the plugin from the WordPress \"Plugins\" menu. Activation does not contact any external service.<\/li>\n<li>Go to \"TagFlux\" in the admin sidebar and click \"Connect to TagFlux\". This registers your site with the TagFlux service (api.tagflux.io) and is the first and only time the plugin sends anything (your site URL and name) \u2014 and only after you click. See the \"External services\" section below.<\/li>\n<li>Connect your Google Ads account.<\/li>\n<li>Select the forms you want to track.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20tagflux%20support%20server-side%20tracking%3F\"><h3>Does TagFlux support server-side tracking?<\/h3><\/dt>\n<dd><p>Yes. TagFlux sends tracked WordPress form submissions to Google Ads through the TagFlux backend using the Google Ads API. It captures the Google Click Identifier (gclid) from Google Ads traffic and uses it to report the conversion server-side.<\/p><\/dd>\n<dt id=\"is%20this%20the%20same%20as%20google%20tag%20manager%20server-side%20tracking%3F\"><h3>Is this the same as Google Tag Manager server-side tracking?<\/h3><\/dt>\n<dd><p>No. TagFlux does not require you to set up a server-side Google Tag Manager container. It provides a simpler server-side tracking flow for WordPress form submissions and Google Ads conversions.<\/p><\/dd>\n<dt id=\"do%20i%20still%20need%20google%20tag%20manager%3F\"><h3>Do I still need Google Tag Manager?<\/h3><\/dt>\n<dd><p>No. TagFlux is designed to track Google Ads form conversions without Google Tag Manager, gtag snippets or custom JavaScript. It auto-detects supported WordPress forms and sends conversions to Google Ads through the backend.<\/p><\/dd>\n<dt id=\"which%20wordpress%20form%20plugins%20does%20tagflux%20support%3F\"><h3>Which WordPress form plugins does TagFlux support?<\/h3><\/dt>\n<dd><p>TagFlux currently supports Contact Form 7, WPForms, Elementor Pro Forms, Ninja Forms and Divi Forms.<\/p><\/dd>\n<dt id=\"what%20does%20tagflux%20track%3F\"><h3>What does TagFlux track?<\/h3><\/dt>\n<dd><p>TagFlux tracks WordPress form submissions that come from Google Ads traffic. It captures the gclid from the ad click, keeps it in a first-party cookie where consent allows, and sends the conversion to Google Ads through the TagFlux backend when a tracked form is submitted. Without a cookie it falls back to the identifier carried by the submission request.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20google%20ads%20account%3F\"><h3>Do I need a Google Ads account?<\/h3><\/dt>\n<dd><p>Yes, you need an active Google Ads account to track conversions.<\/p><\/dd>\n<dt id=\"how%20is%20it%20different%20from%20tracking%20google%20ads%20conversions%20with%20gtm%20or%20gtag%3F\"><h3>How is it different from tracking Google Ads conversions with GTM or gtag?<\/h3><\/dt>\n<dd><p>With Google Tag Manager or gtag you build triggers and tags by hand and maintain them over time. TagFlux auto-detects your forms, maps each one to a conversion action, and sends submissions to Google Ads automatically \u2014 no container, no code.<\/p><\/dd>\n<dt id=\"can%20i%20track%20more%20than%20one%20conversion%20action%3F\"><h3>Can I track more than one conversion action?<\/h3><\/dt>\n<dd><p>Yes. You can choose multiple forms to track, and every submission of each tracked form is reported to Google Ads.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%3F\"><h3>Does it work with WooCommerce?<\/h3><\/dt>\n<dd><p>Not yet. TagFlux currently tracks form submissions (contact, lead and quote forms). WooCommerce checkout and purchase tracking is on the roadmap, not in this version.<\/p><\/dd>\n<dt id=\"which%20page%20builders%20and%20themes%20are%20supported%3F\"><h3>Which page builders and themes are supported?<\/h3><\/dt>\n<dd><p>Any theme. Form detection currently covers Contact Form 7, WPForms, Elementor Pro, Ninja Forms and Divi forms \u2014 both the Divi 4 builder and Divi 5 \u2014 regardless of the theme you use.<\/p><\/dd>\n<dt id=\"is%20it%20gdpr%20compliant%3F\"><h3>Is it GDPR compliant?<\/h3><\/dt>\n<dd><p>Yes. On a site where TagFlux detects a consent banner, the tracking cookie is not written until the visitor grants advertising consent, and declining removes it; the cookie is also tagged as <code>marketing<\/code> so consent managers can control it themselves. Server-side conversions carry the visitor's real Consent Mode v2 state (read from your consent banner), and Enhanced Conversions data is only sent when the visitor has granted ad consent. See the \"External services\" section below for exactly what data is sent and where.<\/p><\/dd>\n<dt id=\"what%20is%20server-side%20%28dual%29%20conversion%20tracking%3F\"><h3>What is server-side (dual) conversion tracking?<\/h3><\/dt>\n<dd><p>In dual mode each tracked submission is reported twice: by the classic gtag script in the browser and by your server through the TagFlux backend. Google Ads deduplicates the two with a shared order ID, so conversions are never double-counted \u2014 but they are recovered when an ad blocker or strict browser blocks the gtag script. You can turn it off in Settings at any time.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20any%20data%20when%20i%20activate%20it%3F\"><h3>Does the plugin send any data when I activate it?<\/h3><\/dt>\n<dd><p>No. Activation only creates local options; no request is made to any external service. Your site is registered with api.tagflux.io only after you explicitly click \"Connect to TagFlux\" on the settings screen, where the data to be sent (your site URL and name) and the links to our Terms and Privacy Policy are shown beforehand.<\/p><\/dd>\n<dt id=\"how%20do%20i%20disconnect%20or%20remove%20my%20data%3F\"><h3>How do I disconnect or remove my data?<\/h3><\/dt>\n<dd><p>Click \"Disconnect site\" on the TagFlux settings screen to clear the local registration and the Google Ads connection stored in WordPress; you can connect again afterwards. Deleting the plugin removes all TagFlux options from your database (via <code>uninstall.php<\/code>).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>Fix: Ninja Forms conversions were counted twice in dual mode. Ninja Forms submits its own field model instead of the page form, so the shared order ID never reached the server and Google saw two different transactions for the same lead. The order ID now travels through Ninja Forms' own extra-data channel and both paths deduplicate again.<\/li>\n<li>New: Complianz support without extra setup. Complianz only emits Google Consent Mode v2 when a Google service is configured in its wizard; without one, the visitor's choice never reached TagFlux and conversions were uploaded without a real consent signal (no Enhanced Conversions data, ever). TagFlux now also listens to Complianz's public consent API, so accepting or declining the banner works out of the box. A real Consent Mode v2 signal, when present, always takes precedence.<\/li>\n<li>New: a settings notice when a consent banner has been active for a week but no consent signal has ever reached the site \u2014 the case where a site believes it is measuring consent and is not. The existing \"your consent manager does not emit Consent Mode v2\" notice now also stands down when the site demonstrably does receive the signal.<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Fix: declining consent after having accepted it now releases the click identifier everywhere \u2014 the value already painted in the hidden field, and carried by links clicked afterwards, stops travelling; not just the cookie. A click identifier arriving in the URL of the current request is kept, as it reads nothing from the visitor's device.<\/li>\n<li>Fix: forms that appear after the page loads (popups, modals, AJAX tabs) now receive the click identifier and the shared order ID at submit time, so dual-mode conversions keep deduplicating instead of counting the same lead twice.<\/li>\n<li>New: TagFlux now obeys the Google Consent Mode v2 signal even when the consent banner is not one of the recognised plugins \u2014 a custom banner that emits Consent Mode is honoured automatically. <code>ad_storage<\/code> governs the cookie, the visitor's choice survives navigation between pages, and region-scoped consent defaults are no longer misread as global.<\/li>\n<li>New: <code>tagflux_consent_managed<\/code> filter so custom banners can declare themselves in code, and a settings notice when the detected consent manager does not emit Consent Mode v2 \u2014 on those sites the attribution cookie waits for a signal that never arrives, which was working as designed but silently.<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>New: conversions are no longer lost when a visitor declines cookies. The click identifier is now also read from the submission request itself \u2014 the query string or the referring URL \u2014 which reads nothing from, and stores nothing on, the visitor's device. Measured against real submissions: WPForms posts to the page itself, Contact Form 7 and Ninja Forms only carry the referrer.<\/li>\n<li>New: internal links carry the click identifier while no cookie is available, so the attribution survives a visit that lands on one page and submits on another. Links to other domains, <code>mailto:<\/code>, <code>tel:<\/code> and anchors are left alone, and nothing is added once the cookie is in place.<\/li>\n<li>Privacy: on sites with a consent banner, the click identifier cookie now waits for advertising consent, and is written as soon as consent is granted \u2014 including later in the same visit. Declining removes it and stops it being read. Sites without a banner are unaffected. Visitors who never accept keep their attribution through the URL, the referrer and the decorated links; only the bridge between separate visits is lost.<\/li>\n<li>Fix: the click identifier is validated and length-limited whatever its source, so a crafted link or a tampered form field cannot inject arbitrary content into the conversion upload.<\/li>\n<li>Fix: a site served both with and without <code>www<\/code> no longer discards its own referrer and loses the conversion.<\/li>\n<li>Fix: links added to the page after it loads are now handled too, and relative links stay relative instead of being frozen to one scheme and host.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>New: Divi 5 support. Divi 5 builds its contact forms as blocks instead of shortcodes, so on a Divi 5 site no form was detected at all \u2014 nothing to select, nothing to track. Divi 4 and Divi 5 forms are now detected side by side, which is what a site migrated to Divi 5 actually looks like.<\/li>\n<li>Fix: pages embedding a WPForms block did not load the tracking script, so the browser-side conversion was never fired. With server-side tracking enabled the conversion still reached Google Ads; without it, the submission was lost entirely.<\/li>\n<li>Fix: the \"used on these pages\" list of a form no longer misses block embeds, and no longer confuses one form with another whose ID starts with the same digits (form 2 was matched by form 23).<\/li>\n<li>Fix: Divi form identifiers are now resolved on the server in document order, so a page holding more than one Divi form reports the right one.<\/li>\n<li>Internal: every form-detection pattern now lives in a single place and is validated every night against the real form builders, including Divi 4 and Divi 5.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>New: the Google Ads account list is now shown as a hierarchy. Manager accounts (MCC) head their own group and the client accounts underneath are listed indented, so it is clear where conversions are actually recorded.<\/li>\n<li>Fix: the \"Link\" button is only offered for accounts that can record conversions. Manager accounts and cancelled or suspended accounts now explain why they cannot be linked, instead of offering a button that fails afterwards.<\/li>\n<li>Fix: auto-linking now only considers linkable accounts. A site whose only visible account was a manager could end up linked to it, which silently records nothing.<\/li>\n<li>i18n: new strings translated (es_ES).<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Fix: uninstalling the plugin now removes every setting it created. Four options survived deletion (server-side tracking mode, Enhanced Conversions, and the setup-help opt-in state and email), so reinstalling inherited the old configuration instead of starting clean.<\/li>\n<li>i18n: plugin headers are now translatable and the Spanish (es_ES) catalogue has been updated.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>New: optional setup-help banner for administrators while the plugin is not connected (Dashboard, Plugins and TagFlux screens). Leave your email and the TagFlux team contacts you to set everything up, free of charge.<\/li>\n<li>Privacy: the banner is strictly opt-in \u2014 nothing is sent unless you explicitly submit it; dismissing it is permanent and sends nothing. Disclosure added to the External services section.<\/li>\n<li>i18n: banner fully translated (es_ES).<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: server-side conversion tracking (dual mode). Submissions are also reported through the TagFlux backend using the Google Click Identifier, recovering conversions lost when the gtag script is blocked. Google Ads deduplicates both paths via a shared order ID.<\/li>\n<li>New: first-party capture of <code>gclid<\/code>\/<code>wbraid<\/code>\/<code>gbraid<\/code> in a cookie and a hidden form field (cookieless fallback).<\/li>\n<li>New: Consent Mode v2 support \u2014 reads the visitor's real consent state from the consent banner (dataLayer) and forwards it with each server-side conversion.<\/li>\n<li>New: optional Enhanced Conversions \u2014 email\/phone are SHA-256-hashed before leaving the site, and only sent if you enable the setting and the visitor granted ad consent.<\/li>\n<li>New: \"Server-side conversions\" dashboard card with upload status (sent\/failed\/pending) and failure reasons, including a notice when the Enhanced Conversions terms are pending acceptance in Google Ads.<\/li>\n<li>New: non-blocking configuration warnings in Settings when server-side tracking is misconfigured (no Google account connected, no forms selected, or Enhanced Conversions without a consent manager).<\/li>\n<li>Fix: the admin now displays in Spanish on Spanish sites \u2014 the plugin never loaded its textdomain; all strings extracted and translated (es_ES).<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Docs: clearer setup guide and an expanded FAQ for Google Ads conversion tracking with Contact Form 7, WPForms, Elementor, Ninja Forms and Divi.<\/li>\n<li>No functional changes.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix: Google connection errors (e.g. missing permissions) are now shown in the admin panel instead of failing silently.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release on WordPress.org<\/li>\n<li>Google Ads OAuth<\/li>\n<li>Form detection: WPForms, Divi 4, Contact Form 7, Elementor Pro, Ninja Forms<\/li>\n<li>Metrics dashboard (clicks, CPC, conversions, cost)<\/li>\n<li>Breakdowns by form, campaign and landing page<\/li>\n<li>Site ownership verification via REST API<\/li>\n<li>Privacy: explicit opt-in (\"Connect to TagFlux\") before any data leaves the site; activation makes no remote calls. \"Disconnect site\" button and uninstall cleanup<\/li>\n<li>Privacy: external-services disclosure + suggested privacy policy content<\/li>\n<li>Upgrade routine (version-gated migrations via plugins_loaded)<\/li>\n<li>Available in English and Spanish<\/li>\n<\/ul>","raw_excerpt":"Server-side Google Ads conversion tracking for WordPress forms. Track leads from Contact Form 7, WPForms, Elementor, Ninja and Divi.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/323356","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=323356"}],"author":[{"embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/tagflux"}],"wp:attachment":[{"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=323356"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=323356"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=323356"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=323356"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=323356"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bcc.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=323356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}