Linux 软件免费装

Qaiyo UTM Tracker for Fluent Forms

开发者 qaiyo
更新时间 2026年10月4日 03:27
PHP版本: 7.4 及以上
WordPress版本: 7.1
版权: GPLv2 or later
版权网址: 版权信息

标签

google ads utm attribution fluent forms meta ads

下载

1.0.0 1.1.0 1.2.0

详情介绍:

You run ads on Meta, Google, TikTok, LinkedIn or Microsoft, 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, and adds them up in a report inside Fluent Forms, with no external 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 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. Of the click IDs only gclid is kept; the others only name the platform. (Fluent Forms itself records the address of the page a form was sent from; that is Fluent Forms' own data and is not changed by this plugin.) Recording organic, AI, social, referral and direct visits can be switched off in the settings. The report reads the entries Fluent Forms already stores and shows totals only. 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, Gemini, Meta, Facebook, Instagram, Microsoft Advertising, Bing, Copilot, TikTok, LinkedIn, ChatGPT, Perplexity and Claude are trademarks of their respective owners. This plugin is an independent add-on and is not affiliated with, endorsed by or sponsored by them.

安装:

  1. Install and activate Fluent Forms.
  2. Install and activate Qaiyo UTM Tracker for Fluent Forms (Plugins → Add New, or upload the ZIP).
  3. Open Fluent Forms → UTM Tracker and click "Add missing fields" next to each form you want to track.
  4. Open Fluent Forms → Lead sources to see the leads by channel, source, campaign and landing page.
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.

升级注意事项:

1.2.0 Adds the lead-source report, recognition of Microsoft, TikTok and LinkedIn ad clicks and of visits from AI assistants. No change to your forms is needed. 1.1.0 Adds one-click tracking fields, organic / social / referral / direct sources and the landing page. Click "Add missing fields" on the UTM Tracker screen to add the new landing_page field to your forms.

常见问题:

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.

Which ad platforms are recognised without UTM parameters?

Google Ads (gclid, gbraid, wbraid), Microsoft Advertising (msclkid), TikTok (ttclid) and LinkedIn (li_fat_id). When the ad link carries one of these click IDs and no utm_source, the platform is recorded as source and medium. Under "Ad click detection" you choose the forms this applies to. With UTM parameters on the ad link you also get the campaign name, on every platform.

How do I track ChatGPT ads?

ChatGPT ads have no click ID, so they are tracked through UTM parameters like any tagged link: set them on the ad in the ad platform, for example utm_source=chatgpt&utm_medium=cpc&utm_campaign=your-campaign. The plugin stores them with the entry and the report counts them under "Paid ads". A visit from an ordinary ChatGPT answer (no ad) is recorded as "chatgpt" / "ai" when the browser sends the referring site; ChatGPT may also tag such links itself with utm_source=chatgpt.com, which is then stored as it is.

Why is a Facebook visit with fbclid not counted as an ad?

Meta adds fbclid to every link that leaves Facebook or Instagram, ads and ordinary posts alike, so it does not prove a paid click. The plugin uses it only to name the source ("facebook" / "social") when the browser sent no referring site. For ads, the UTM parameters you set on the ad decide, as before.

Where is the report and who can see it?

Under Fluent Forms → Lead sources, for administrators. To open it to another role, return a different capability from the qfut_report_capability filter, for example: add_filter( 'qfut_report_capability', function () { return 'fluentform_entries_viewer'; } ); The settings screen stays for administrators.

How does the report decide the channel?

From the medium first, as analytics tools do: cpc, ppc, paid… are "Paid ads"; "organic" is organic search; "social", "ai", "email" and "referral" their own channels; "(direct)" / "(none)" is "Direct"; any other tagged link is "Other campaigns". Entries without any source are "Not recorded": they were sent before tracking was set up, through a form without the hidden fields, or from a browser that blocked the script. Trashed and spam entries are not counted. Older Google Ads entries with a click ID but no source are counted as "google" / "cpc", the same as on the Entries screen.

What do "(direct)", "organic", "ai", "social" and "referral" mean?

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, "ai" an AI assistant such as ChatGPT or Perplexity, "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; } ); The other click IDs have the qfut_click_id_attribution filter, which can change their values, remove one, or add the click ID of another platform: add_filter( 'qfut_click_id_attribution', function ( $ids ) { $ids['twclid'] = array( 'utm_source' => 'x', 'utm_medium' => 'paid_social' ); return $ids; } );

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.

更新日志:

1.2.0 1.1.0 1.0.0