| 开发者 | qaiyo |
|---|---|
| 更新时间 | 2026年10月4日 03:27 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
facebook / cpc / your campaign name / the ad ID. Nothing else to configure.No. The hidden fields and the entries are part of the free Fluent Forms plugin.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
The newest campaign visit wins and replaces the previous values completely.
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; } );
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.
Yes. Everything happens in the visitor's browser, so cached pages behave exactly like uncached ones.