Descripción
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.
Click one button to add the tracking fields to a form. From then on the plugin remembers where the visitor arrived from — the campaign parameters of the ad, or the search engine, social network or website that sent them — writes it into those fields when the form is sent, and Fluent Forms stores it with the entry: visible on the Entries screen, in exports and in Fluent Forms’ own reports.
What makes it different
- The values live in the Fluent Forms entry itself. No extra database table and no second dashboard: source, campaign and click ID are ordinary entry fields, so Fluent Forms’ own search, exports, reports and (with Fluent Forms Pro) Advanced Filter work on them, and they are kept, exported and erased with the entry.
- One click per form. The settings screen lists your forms and the tracking fields each one still needs. «Add missing fields» appends them to the form as Hidden Fields through Fluent Forms’ own save, the same way the editor does; nothing else in the form changes.
- Every lead gets a source, not only ad clicks. Without campaign parameters the source comes from the site that sent the visitor: search engines as «organic» (google, bing, duckduckgo…), social networks as «social» (facebook, instagram, linkedin…), any other site by its domain as «referral», and a typed-in address as «(direct)» / «(none)». Ad data always wins: an organic or direct visit never replaces the parameters or click ID of an ad. Only the referring domain is used, never the full address.
- The landing page is recorded too, without its query string, so you see which page the lead first arrived on.
- 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 else to configure. - 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 fields
utm_source, utm_medium, utm_campaign, utm_content, utm_term, gclid and landing_page. A field that is not on a form is simply not recorded, so you can leave out the ones you do not need.
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. The 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. Of a referring page only its domain is used. Recording organic, social, referral and direct visits can be switched off in the settings.
Translations
The interface is translation-ready, and translations are delivered through translate.wordpress.org. The author prepares Hungarian, German, French, Spanish, Japanese, Portuguese (Portugal), Italian, Russian, Turkish and Polish.
Trademarks
Fluent Forms, Google Ads, Meta, Facebook and Instagram are trademarks of their respective owners. This plugin is an independent add-on and is not affiliated with, endorsed by or sponsored by them.
Instalación
- Install and activate Fluent Forms.
- Install and activate Qaiyo UTM Tracker for Fluent Forms (Plugins Add New, or upload the ZIP).
- Open Fluent Forms UTM Tracker and click «Add missing fields» next to each form you want to track.
That is all: new entries record their source from now on. If you prefer to add the fields yourself, the screen also lists the field names: add one Hidden Field (Advanced Fields Hidden Field) per name in the Fluent Forms editor and type the name into its Name Attribute.
FAQ
-
Do I need Fluent Forms Pro?
-
No. The hidden fields and the entries are part of the free Fluent Forms plugin.
-
Why is utm_source empty for some Google Ads leads in my old entries?
-
Google Ads auto-tagging adds only a gclid to the link. The Entries screen already shows these entries as «google» / «cpc»; to have the value in exports and reports too, use Fluent Forms UTM Tracker Update older entries once.
-
Can I filter entries by source or campaign?
-
Yes. Fluent Forms’ search box finds any value across all entries. With Fluent Forms Pro, the Advanced Filter also works on the hidden fields (for example utm_source = google). The Advanced Filter reads the stored per-field data, so for older entries run Update older entries once; new entries are included automatically.
-
Is my form changed when I click «Add missing fields»?
-
Only by appending the missing tracking fields as Hidden Fields at the end. The form is saved through Fluent Forms’ own form service, so Fluent Forms checks and stores it exactly as when you press Save in the editor. If the form is open in the editor at the same time, reload the editor before you save it there, otherwise it saves its older copy without the new fields.
-
They describe visits that did not come through a tagged ad link: «(direct)» / «(none)» is a typed-in address or a bookmark, «organic» a search engine result, «social» a social network, and «referral» any other website (its domain becomes the source). They follow the usual Google Analytics conventions. You can switch this off under «Visits without campaign parameters»; then only visits with campaign parameters or a click ID are recorded.
-
An organic visit came after an ad click. Which one is recorded?
-
The ad. Organic, social, referral and direct visits never replace the parameters or the click ID of an ad; a new ad click does replace an older ad visit.
-
Can I get the campaign name for Google Ads leads as well?
-
Yes, by adding UTM parameters to your ads. In Google Ads, set a Final URL suffix (account, campaign or ad group level), for example: utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_content={adgroupid}&utm_term={keyword}. The gclid keeps working alongside it.
-
Where do the numbers in utm_content come from?
-
That is whatever your ad link puts there. Meta ads often use the ad ID ({{ad.id}}); use {{ad.name}} in the URL parameters of the ad if you prefer the ad’s name.
-
What if the visitor comes back through a different ad?
-
The newest campaign visit wins and replaces the previous values completely.
-
Can I record something other than «google» / «cpc»?
-
Yes, with the qfut_gclid_attribution filter, for example:
add_filter( 'qfut_gclid_attribution', function ( $values ) { $values['utm_source'] = 'google_ads'; return $values; } ); -
Does it slow down my site?
-
The front-end script is small, deferred, and does no work while the visitor browses; it only reads the address once and fills the form fields.
-
Does it work with page caching?
-
Yes. Everything happens in the visitor’s browser, so cached pages behave exactly like uncached ones.
Reseñas
No hay valoraciones para este plugin.
Colaboradores y desarrolladores
«Qaiyo UTM Tracker for Fluent Forms» es un software de código abierto. Las siguientes personas han colaborado con este plugin.
Colaboradores«Qaiyo UTM Tracker for Fluent Forms» está traducido en 1 idioma. Gracias a los traductores por sus contribuciones.
Traduce «Qaiyo UTM Tracker for Fluent Forms» a tu idioma.
¿Interesado en el desarrollo?
Revisa el código , echa un vistazo al repositorio SVN o suscríbete al registro de desarrollo por RSS.
Registro de cambios
1.1.0
- New: «Add missing fields» adds the tracking fields to a form in one click, saved through Fluent Forms’ own form service.
- New: visits without campaign parameters get a source from the referring site — organic search, social, referral — or «(direct)» / «(none)». Ad data always takes precedence. Can be switched off.
- New: the landing page (without its query string) is recorded in a landing_page field.
- Suggested privacy-policy text updated for the landing page and the referring domain.
1.0.0
- Initial release.