You run Meta and Google Ads, the enquiries arrive through Fluent Forms, and the question is always the same: which source and which campaign brought this lead? Qaiyo UTM Tracker for Fluent Forms answers it on every entry, with no reporting tool in between.
Add six hidden fields to a form once. From then on the plugin remembers the campaign parameters of the page where the visitor arrived, writes them into those fields when the form is sent, and Fluent Forms stores them with the entry — visible on the Entries screen, in exports and in Fluent Forms’ own reports.
What makes it different
- Meta (Facebook and Instagram) Ads work out of the box. Meta appends the UTM parameters you set on the ad — source, medium, campaign, content, term — to the landing URL, and the plugin stores them with the entry as they are, for example
facebook / cpc / your campaign name / the ad ID. Nothing to configure beyond the hidden fields.
- Survives the way people really convert. Visitors rarely send the form on the page they land on. UTM parameters are kept for the browser session; the Google Ads click ID is kept in a first-party cookie (90 days by default, adjustable), because it is only in the address of the very first page and people often come back days later.
- Google Ads without tracking templates. Google Ads auto-tagging adds only a click ID (gclid) to its links, no UTM parameters, so most trackers record these leads with an empty source. This plugin records them as source “google”, medium “cpc” — on the server, just before Fluent Forms stores the entry, so it works even when the visitor’s browser blocks scripts. A source the ad link does set always wins.
- Fixes your older entries too. Entries saved before the plugin that carry a click ID but no source show “google” on the Entries screen straight away. A one-click, batched tool writes it into those entries for exports and reports as well, the way Fluent Forms itself stores an edited entry, and never overwrites an entry that already has a source or that someone edits in the meantime.
- Last touch wins, campaigns never mix. A new campaign visit replaces the values of the previous one, so a Google Ads click after a Facebook visit is not recorded as Facebook, and a new source never travels with an old utm_content.
- Consent-aware. With the WP Consent API plugin (used by Complianz, CookieYes, Cookiebot and others), nothing is stored until the visitor allows marketing cookies, and stored values are removed when consent is withdrawn. Suggested privacy-policy text is added to the WordPress Policy Guide.
- Works with the free Fluent Forms. Hidden fields and entries are part of Fluent Forms itself; Fluent Forms Pro is not required.
Tracked parameters
utm_source, utm_medium, utm_campaign, utm_content, utm_term and gclid. Add only the fields you need: a field that is not on a form is simply not recorded.
Built to stay out of the way
The capture script is a few kilobytes, loads deferred in the footer, has no dependencies and does not watch the page: it fills the fields when the page loads, when Fluent Forms opens a form (popups, AJAX-loaded forms) and at the moment the form is sent. The plugin does not touch Fluent Forms’ Entries screen markup, so nothing shifts or breaks when Fluent Forms updates its interface.
Privacy
The plugin does not connect to any external service and sends nothing anywhere. Campaign values stay in the visitor’s browser (sessionStorage and the qfut_gclid cookie) until a form is sent; after that they are part of the Fluent Forms entry and are kept, exported and erased with it.
Translations
The interface is translation-ready. Translations for Hungarian, German, French, Spanish, Japanese, Portuguese (Portugal), Italian, Russian, Turkish and Polish are maintained by the author.