FreeCLID
Open-source WordPress plugin for local offline conversion tracking and Google Ads CSV imports.
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/danielwte/freeclid/releases/download/v1.0.0/freeclid.zipReadme
FreeCLID
FreeCLID is a free, open-source WordPress plugin for offline conversion tracking. It captures ad click IDs on landing pages, ties them to Elementor Pro form submissions, stores everything in the site's own database, and serves a Google Ads ready CSV feed over HTTPS with HTTP Basic Auth.
No SaaS, no license server, no phone-home, no Composer dependencies, and no build step.
Author: WGST
Requirements
- PHP 8.1+
- WordPress 6.4+
- Elementor Pro for v1 form capture
- HTTPS for the scheduled Google Ads feed
What v1 Does
- Captures
gclid,gbraid,wbraid,fbclid, andmsclkidfrom URL parameters. - Stores click IDs in first-party cookies with a configurable lookback window.
- Reads click ID cookies server-side during Elementor Pro form submissions.
- Stores captured leads in
{$wpdb->prefix}freeclid_leads. - Exposes
/freeclid-feed.csvfor Google Ads Data Manager scheduled uploads. - Protects the feed with HTTP Basic Auth.
- Provides a Settings > FreeCLID admin page with feed credentials, conversion settings, click-ID toggles, feed URL display, uninstall behavior, and the last 10 captured leads.
Install
- Copy the
freeclidfolder intowp-content/plugins/. - Activate FreeCLID in WordPress.
- Go to Settings > FreeCLID.
- Set a feed username and password.
- Set the conversion name, value, currency, and lookback window.
- Copy the feed URL.
Releases
GitHub Actions builds a ready-to-install freeclid.zip on every push to main, on manual workflow runs, and on version tags.
To publish a downloadable GitHub Release, push a tag like:
git tag v1.0.0
git push origin v1.0.0
The workflow creates or updates the matching GitHub Release and attaches freeclid.zip.
Google Ads Setup
-
In Google Ads, enable auto-tagging first under Settings > Account settings.
-
Go to Tools > Data Manager.
-
Create a conversion action: Import > Other data sources > Conversions from clicks.
-
Name it exactly the same as the FreeCLID conversion name setting.
-
Add a scheduled HTTPS upload source pointing at:
https://example.com/freeclid-feed.csv -
Use the Basic Auth username and password from Settings > FreeCLID.
-
Schedule the upload, usually daily.
-
Test with a real ad click before scaling spend.
CSV Format
The feed emits Google-compatible click conversion rows:
Google Click ID,Conversion Name,Conversion Time,Conversion Value,Conversion Currency
TEST123,Lead,2026-06-07 12:30:00+0000,0,EUR
Rows are emitted in UTC with a +0000 offset. Email and phone are never included in the CSV.
Click ID Priority
FreeCLID stores one primary click ID per form submission using this priority:
gclid > gbraid > wbraid > fbclid > msclkid
Additional valid click IDs present at submission time are stored in row meta for future integrations. The Google CSV feed emits only gclid, gbraid, and wbraid rows.
Apache / PHP-FPM Authorization Header
If the feed returns 401 Unauthorized under Apache with PHP-FPM even when credentials are correct, add this to .htaccess so the Authorization header reaches PHP:
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [E=HTTP_AUTHORIZATION:%1]
REST Fallback
If pretty permalinks are disabled, use:
https://example.com/wp-json/freeclid/v1/feed.csv
Extending
Future form integrations should call the same Freeclid_DB::insert() path from their form-submit hook.
Future ad destinations can reuse the existing stored rows:
- Meta:
fbclidrequires Conversions API, not a pulled CSV. - Microsoft Ads:
msclkidcan use a CSV feed similar to Google's format.
License
GPLv2 or later.
Read the full README on GitHub →
Releases
| Tag | Published | Asset | Downloads |
|---|---|---|---|
| v1.0.0 | Jun 7, 2026 | freeclid.zip | 1 |