Free WordPress plugin

Choice Universal Form Tracker

Five form plugins, one event shape. This plugin detects whichever form plugins are active on a site and emits a single, consistent form_submit event for all of them, with campaign attribution attached, so one Google Tag Manager tag covers the whole site.

Why This Exists

Every form plugin fires its submissions differently. A site running Contact Form 7 for one form and Gravity Forms for another ends up with a different tag, a different trigger, and a different set of field names for each one. We hit that gap running client sites with several form plugins active at once, each needing its own analytics plumbing, and built one plugin that normalizes all of them.

What It Does

  • Detects whichever form plugins are active automatically. No configuration beyond activating the plugin, and nothing loads for a form plugin that is not installed.
  • Supports Contact Form 7, Gravity Forms, Ninja Forms, Elementor Pro forms, and Avada / Fusion Builder forms.
  • Emits form_submit on every detected submission, carrying the form type, form ID, and the email and phone number entered.
  • Emits generate_lead when a submission includes a valid email address, and qualify_lead when it carries an email, a phone number, and an advertising click ID.
  • Fires phone_click when a visitor clicks a tel: link.
  • Captures UTM parameters and advertising click IDs (gclid, gbraid, wbraid, fbclid, msclkid, ttclid, twclid, rdt_cid, li_fat_id, snap_click_id, pclid) on a visitor's first landing and holds them for 30 days, so a form submitted a week after the ad click still reports the campaign that produced it.
  • Marks every event with cuft_tracked: true, one reliable condition to build every GTM trigger on.

Shared Lead Identity

Each event can carry a lead_id: the SHA-256 hash of the visitor's email address, lowercased and trimmed, or of their phone number in E.164 form when no email was given. The same hash is computed server-side, so an analytics event and a downstream CRM record derived from the same person produce the same identifier without any raw personal data reaching your analytics. The normalization matches what Google Enhanced Conversions and Meta CAPI expect, so the value doubles as a match key for offline conversion imports.

Built to Stay Out of the Way

  • No jQuery dependency. The tracking scripts are plain JavaScript.
  • No third-party CDN requests. Every library the plugin needs ships with it, including its own SHA-256 implementation.
  • Framework scripts load only for the form plugins actually present on the site.
  • Tracking failures are contained and never block a form submission.

What It Can Optionally Connect To

Everything below is off until configured, and the plugin tracks forms to the dataLayer without any of it. Google Tag Manager loads only once a container ID is set. Google Analytics Measurement Protocol sends a server-side event only when both a GA4 Measurement ID and an API secret are supplied. A Choice OMG click collector, or your own, receives a POST only when you enter a host for it. Full detail on what each integration transmits and under whose terms is in the plugin's readme.txt.

Requirements

WordPress 5.0 or newer, PHP 7.4 or newer. No WooCommerce or e-commerce platform required, since this plugin tracks form submissions, not orders.

Who Maintains It

Choice OMG maintains this plugin. We are a digital marketing and web agency in Edmonton, Alberta, running SEO, Google Ads, and web work on flat monthly fees since 2010. This plugin came out of client work, which is where most of our tooling comes from.

If you are running a WordPress site with more than one form plugin and want one clean attribution signal instead of five, talk to us.