Title: Ghizo Attribution Tracker
Author: Ghizo Labs
Published: <strong>October 17, 2026</strong>
Last modified: October 17, 2026

---

Search plugins

![](https://ps.w.org/ghizo-attribution-tracker/assets/banner-772x250.png?rev=3751400)

![](https://ps.w.org/ghizo-attribution-tracker/assets/icon-256x256.png?rev=3751400)

# Ghizo Attribution Tracker

 By [Ghizo Labs](https://profiles.wordpress.org/dghizoni/)

[Download](https://downloads.wordpress.org/plugin/ghizo-attribution-tracker.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/ghizo-attribution-tracker/#description)
 * [Reviews](https://wordpress.org/plugins/ghizo-attribution-tracker/#reviews)
 *  [Installation](https://wordpress.org/plugins/ghizo-attribution-tracker/#installation)
 * [Development](https://wordpress.org/plugins/ghizo-attribution-tracker/#developers)

 [Support](https://wordpress.org/support/plugin/ghizo-attribution-tracker/)

## Description

A form submission tells you someone is interested. It does not tell you which
 ad,
email or search brought them, and by the time they get in touch the referrer is 
long gone.

**Ghizo Attribution Tracker** records how every visitor found your site, keeps it

across visits, and attaches it to the form they submit and the order they place.
Each lead arrives with its campaign on it: where they first found you, and what 
finally made them get in touch.

#### Features at a glance

 * **First and last touch**, stored separately: the campaign that found the visitor
   and the one that converted them
 * **UTM parameters**, the newer GA4 set, and ad click IDs from Google, Meta and
   Microsoft
 * **Channel classification**: Paid Search, Organic Social, Email, Direct and more,
   worked out for you
 * **Six form plugins**: Gravity Forms, Contact Form 7, WPForms, Fluent Forms, Ninja
   Forms and Elementor Pro
 * **WooCommerce**: attribution saved on every order and shown on the order screen
 * **Works behind any page cache or CDN**: nothing visitor specific is ever printed
   into the page
 * **Full retention on Safari and iPhone**, where most trackers lose the visitor
   after seven days
 * **Your own parameters**: track partner IDs, promo codes or anything else in the
   URL
 * **No external requests and no personal data**: everything stays on your site
 * **A debug panel and a test visit**, so you can see exactly what was captured 
   and why

#### Every lead arrives with its campaign

Add the tracking to your forms the way each form plugin already works, and the
 
values fill themselves in.

 * **Gravity Forms.** Add the tracking fields to any form in one click. A server
   
   side safety net fills any field that arrives empty, so a lead is never missing
   its source because JavaScript was blocked.
 * **Contact Form 7.** Write `[wpat_last_source]` or any other token in the mail
   
   template. There is also a hidden field tag, `[wpat_hidden last_source]`, for 
   the form itself.
 * **WPForms.** Use `{wpat_last_source}` anywhere WPForms accepts a smart tag: a
   
   notification, a confirmation, or a stored entry.
 * **Fluent Forms.** Use `{wpat.last_source}` in a notification, a confirmation 
   or
    an integration, or name a hidden field after a token and it fills itself.
 * **Ninja Forms.** Use `{wpat:last_source}` in a notification, an action, or a
   
   hidden field’s default value.
 * **Elementor Pro.** Write `[wpat_last_source]` in the form’s email, alongside
   
   Elementor’s own field references.
 * **WooCommerce.** First and last touch are copied onto each order at checkout,
   
   through the classic checkout or the checkout block, so the record outlives the
   cookie.

#### Works with any page cache or CDN

Most attribution plugins decide on the server, which breaks the moment a page is

cached: one visitor’s campaign ends up served to the next. Ghizo Attribution Tracker
captures everything in the visitor’s own browser and keeps it in a first party cookie,
so WP Rocket, LiteSpeed, Cloudflare or any other cache can serve the same page to
everybody and the attribution still arrives.

#### Built for how people really buy

People rarely convert on their first visit. They click an ad, leave, and come
 back
weeks later through an email or a search. Attribution is kept for 90 days by default
and can be set to anything up to 730, and the window restarts on every new campaign
visit.

Safari and every browser on iPhone delete a cookie set by JavaScript after seven

days. This plugin also sets the cookie from the server, which those browsers do 
not cut short, so the window you choose is the window you get.

#### What it captures

 * UTM parameters: `utm_source`, `utm_medium`, `utm_campaign`, `utm_term`, `utm_content`
 * The GA4 set: `utm_id`, `utm_source_platform`, `utm_creative_format`, `utm_marketing_tactic`
 * Ad click IDs: `gclid`, `gbraid`, `wbraid`, `fbclid`, `msclkid`
 * Your own query parameters, as many as you need
 * The referrer and the landing page of each visit
 * A classified channel, for example Paid Search, Organic Social or Direct

#### Privacy

No personal data is collected, no external service is contacted and there is no

telemetry of any kind. The only thing stored in the visitor’s browser is one first
party cookie holding the campaign values listed above. Deleting the plugin removes
its settings.

#### Documentation and support

 * [Documentation](https://ghizolabs.com/attribution-tracker/docs/): setup for every
   form plugin, every token, and hooks for developers. The same guide ships inside
   the plugin.
 * [Support forum](https://wordpress.org/support/plugin/ghizo-attribution-tracker/):
   questions and bug reports.

#### In the paid add-on

Attribution Tracker Pro is a separate plugin for teams that want the numbers in

WordPress:

 * Revenue and orders by source, medium, campaign or channel
 * First touch against last touch, side by side
 * Form conversions reported alongside revenue
 * An attribution column and filters on the WooCommerce orders list
 * CSV export of any report

Available from [ghizolabs.com](https://ghizolabs.com/attribution-tracker/).

## Screenshots

[⌊Every lead arrives with its campaign: a real submission, with the first and last
touch filled in.⌉⌊Every lead arrives with its campaign: a real submission, with 
the first and last touch filled in.⌉[

Every lead arrives with its campaign: a real submission, with the first and last
touch filled in.

[⌊Works behind any page cache: capture happens in the visitor's browser, after the
cached page loads.⌉⌊Works behind any page cache: capture happens in the visitor's
browser, after the cached page loads.⌉[

Works behind any page cache: capture happens in the visitor’s browser, after the
cached page loads.

[⌊The debug panel shows exactly what was captured for a visit, and how it was classified.⌉⌊
The debug panel shows exactly what was captured for a visit, and how it was classified
.⌉[

The debug panel shows exactly what was captured for a visit, and how it was classified.

[⌊Gravity Forms: add the tracking fields to any form in one click. They fill themselves.⌉⌊
Gravity Forms: add the tracking fields to any form in one click. They fill themselves
.⌉[

Gravity Forms: add the tracking fields to any form in one click. They fill themselves.

[⌊Contact Form 7, WPForms, Fluent Forms, Ninja Forms and Elementor Pro: add a token
to the email and it is filled in.⌉⌊Contact Form 7, WPForms, Fluent Forms, Ninja 
Forms and Elementor Pro: add a token to the email and it is filled in.⌉[

Contact Form 7, WPForms, Fluent Forms, Ninja Forms and Elementor Pro: add a token
to the email and it is filled in.

[⌊WooCommerce: first and last touch saved on every order.⌉⌊WooCommerce: first and
last touch saved on every order.⌉[

WooCommerce: first and last touch saved on every order.

[⌊The Status screen: run a test visit and see what this browser has stored.⌉⌊The
Status screen: run a test visit and see what this browser has stored.⌉[

The Status screen: run a test visit and see what this browser has stored.

[⌊Settings: retention up to 730 days, the cookie name, and your own parameters.⌉⌊
Settings: retention up to 730 days, the cookie name, and your own parameters.⌉[

Settings: retention up to 730 days, the cookie name, and your own parameters.

## Installation

 1. Install and activate the plugin from **Plugins  Add New**.
 2. Open **Attribution  Status** and press **Run a test visit** to see capture working.
 3. For Gravity Forms, go to **Attribution  Gravity Forms**, pick your forms and add
    the tracking fields.
 4. For every other form plugin, add the tokens you want to the email or the notification.
    The Status screen lists every token, in each plugin’s own syntax.

## FAQ

### Does this work with a caching plugin or a CDN?

Yes, and that is the point. Capture and storage happen in the browser, so no
 cached
page can ever hold or leak one visitor’s attribution.

### What is the difference between first and last touch?

First touch is the campaign that introduced the visitor to your site. Last touch

is the one they arrived through when they finally converted. Both are kept, so you
can credit the ad that found them and the email that closed them.

### Why is nothing recorded when I visit directly?

A direct visit is recorded, as a Direct channel touch. If nothing at all appears,

JavaScript did not run, or the browser had cookies blocked.

### How long does the attribution last?

90 days by default, and up to 730 under **Attribution  Settings**. Safari and
 every
browser on iPhone cap a cookie written by JavaScript at seven days, so the plugin
also has the server set the same cookie, which is not capped. That request goes 
to a small endpoint that is never part of the cached page, and if it ever fails 
the next page view simply tries again.

### How do I get attribution into a Contact Form 7 email?

Write the token in the mail template with a `wpat_` prefix, for example
 [wpat_last_source],`[
wpat_first_campaign]` or `[wpat_last_channel]`. Contact Form 7 does not store submissions,
so the email is where the value is kept. To put it in the form itself instead, add`[
wpat_hidden last_source]` to the form template.

### How do I get attribution into a WPForms notification?

Write the token as a smart tag, for example `{wpat_last_source}`. It works
 anywhere
WPForms accepts text. Smart tags are used rather than a hidden field because WPForms’
Hidden Field is only available in WPForms Pro.

### How do I get attribution into a Ninja Forms notification?

Write the token as a merge tag, for example `{wpat:last_source}`. To store it on

the submission, add a Hidden field, set its key to the token, for example last_source,
and type the matching merge tag as its default value.

### How does the Elementor Pro integration work?

The email tokens use Elementor’s documented mail filter. Filling a hidden field

relies on Elementor’s submission record, so the plugin checks it is available first
and otherwise leaves the field empty. A form never breaks because of it.

### Does it record attribution on WooCommerce orders?

Yes. The first and last touch are copied onto the order at checkout and shown on

the order screen. Orders created in the admin are not attributed.

### Can I track a parameter that is not a UTM?

Yes. Add them under **Attribution  Settings**, one per line, and each is
 captured
and exposed as a form token like everything else.

### Does deleting the plugin remove my data?

Deactivating changes nothing. Deleting removes the plugin’s own settings. Values

already written into form entries and orders belong to those records and are left
alone.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Ghizo Attribution Tracker” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ Ghizo Labs ](https://profiles.wordpress.org/dghizoni/)

[Translate “Ghizo Attribution Tracker” into your language.](https://translate.wordpress.org/projects/wp-plugins/ghizo-attribution-tracker)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/ghizo-attribution-tracker/),
check out the [SVN repository](https://plugins.svn.wordpress.org/ghizo-attribution-tracker/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/ghizo-attribution-tracker/)
by [RSS](https://plugins.trac.wordpress.org/log/ghizo-attribution-tracker/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.0

First release.

 * Capture of UTM parameters, the GA4 set, ad click IDs, referrer and landing
    page,
   in the browser, so page caching is unaffected.
 * First and last touch stored separately, with channel classification.
 * Gravity Forms, Contact Form 7, WPForms, Fluent Forms, Ninja Forms and
    Elementor
   Pro, with a server side fill for fields that arrive empty.
 * WooCommerce, with first and last touch recorded on each order.
 * The full retention window on Safari and iOS, through a server set cookie.
 * A front end debug panel for administrators, and a Status screen with a test
    
   visit.
 * Documentation bundled with the plugin, in the admin or on its own.

## Meta

 *  Version **1.0.0**
 *  Last updated **2 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 8.0 or higher **
 * Tags
 * [attribution](https://wordpress.org/plugins/tags/attribution/)[forms](https://wordpress.org/plugins/tags/forms/)
   [lead source](https://wordpress.org/plugins/tags/lead-source/)[marketing](https://wordpress.org/plugins/tags/marketing/)
   [UTM](https://wordpress.org/plugins/tags/utm/)
 *  [Advanced View](https://wordpress.org/plugins/ghizo-attribution-tracker/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/ghizo-attribution-tracker/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/ghizo-attribution-tracker/reviews/)

## Contributors

 *   [ Ghizo Labs ](https://profiles.wordpress.org/dghizoni/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/ghizo-attribution-tracker/)