Tagsmith
The honest GA4 dashboard for WordPress
See how your site is doing, right inside WordPress. Tagsmith adds the Google Analytics 4 tag to your site and turns your GA4 reports into a dashboard you can actually read. The free plugin is complete, it never nags you, and your data stays yours.
Free and open source (GPLv2 or later) · WordPress 6.7+ · PHP 8.1+ · Version 2.1.0
Available on WordPress.org. Tagsmith 2.1.0 is in the plugin directory. Read the Tagsmith listing on WordPress.org or install it from your WordPress admin.
My pledges
These are in the plugin's readme too, so you can hold me to them.
- No nags. No upgrade prompts and no admin notices outside the plugin's own screens. The one exception is a notice that the plugin needs a newer PHP or WordPress, shown only to people who manage plugins.
- No bundled plugins. Tagsmith never installs or activates anything else.
- No telemetry. The plugin sends me no usage data. The sign-in relay sees your site address, your IP address and the email of the Google account you sign in with, only while you connect or refresh tokens, and keeps none of it on disk (see Your data stays yours below).
- Free stays free. Nothing in this plugin will be locked or removed later.
- Read-only access. Tagsmith can only view your Google data.
- Clean uninstall. Deleting the plugin removes its settings, saved reports, Clarity snapshots and tokens from the database and asks Google to revoke its access (you can turn this off in Settings, Sign-in & data). If your site cannot reach Google then, or is a copy whose address changed (Tagsmith does not ask Google to revoke), remove the access at myaccount.google.com/permissions. On a site with an external object cache, cached report copies expire by themselves within a week.
What you get
A dashboard in plain language. A What changed summary at the top, then visitors, views, engagement and more, compared with the previous period, with a trend chart, your top pages, where visitors come from and what devices they use. Content, Acquisition, Audience, Search and Realtime tabs are one click away when you want more detail.
Stats where you write. A views column in your Posts list, and a panel in the block editor that shows views, users, engagement, traffic channels and top Google searches for the post you are editing.
Search Console built in. The searches that bring people to your site, site-wide and for each post.
GA4 tracking done properly. The official Google tag, with Consent Mode v2 (Advanced or Basic), region-aware defaults for the EEA, UK and Switzerland, WP Consent API support, and role exclusions so your own visits do not count. Tracking stays off on staging and development sites until you turn it on.
Microsoft Clarity, if you want it. Enter your Clarity Project ID and Tagsmith adds Clarity's tag next to Google's, with the same consent decision, role exclusions and staging rules. Add a Clarity Data Export token and a Behavior tab shows scroll depth, rage clicks, dead clicks and quick-backs next to your GA4 views, with links to the page's heatmap and recordings in Clarity. Clarity is off until you turn it on.
Ad pixels, under the same consent gate. Meta, Google Ads, TikTok, LinkedIn, Microsoft Advertising, Pinterest, Snap and X, each off until you switch it on and enter its ID. Each platform gets the events it takes: page views, content views, searches, form leads and contact taps. They go out only after a visitor agrees to marketing cookies where your consent setting asks for it, and a preview shows exactly what each platform would receive before anything is sent.
A health check that answers "why doesn't this match GA?" It finds duplicate tags, a missing or different Measurement ID on your homepage, other analytics plugins that may double count, and connection problems, and tells you how to fix each one in plain English.
Sign-in that does not break. Connect with Google in a few clicks. Errors are explained in plain English, and if your site's address changes (a staging copy or a migration), Tagsmith notices and lets you keep or drop the connection.
Light on your site. The only things added to your front end are Google's own tag and, if you turn them on, Microsoft Clarity's tag and the ad pixels you choose. Reports are cached, and the last good numbers stay on screen if Google has a hiccup.
A dashboard widget. The last 28 days at a glance on the wp-admin home screen.
Your data stays yours
Here is exactly what leaves your site, and when.
| What | Where it goes | When |
|---|---|---|
| Report requests, with your access token | Google's Analytics and Search Console APIs, directly from your site | When you open reports |
| Sign-in codes and tokens, in transit, with your site address, your IP address and your Google account's email | My sign-in relay, connect.shivaatripathi.com | Only when you connect, and when your site refreshes its access token (about once an hour while you use the reports) |
| One empty request, with no token or data, to check that Google can be reached | Google's Analytics API, directly from your site | When the health checks run while you are connected to Google (Settings, Health, and the last setup step). Not in tracking-only mode |
| Page views and events from your visitors | Google Analytics, via Google's gtag.js | When tracking is on, for visitors you have not excluded |
| How your visitors use your pages (clicks, scrolling, recordings) | Microsoft Clarity, via Clarity's tag | Only if you turn Clarity on, for visitors you have not excluded |
| Page views and the events you choose (content views, searches, form leads, contact taps), plus what any web script reads: the page address, the referrer, the IP address and browser details | Each ad platform you switch on, through its own script: Meta, Google Ads, TikTok, LinkedIn, Microsoft Advertising, Pinterest, Snap or X. Hosts, terms and privacy links | Only for platforms you switch on and give an ID, for visitors you have not excluded, and after the visitor agrees to marketing cookies where your consent setting asks for it |
| Your Clarity Data Export token, to ask for behavior numbers | Microsoft's Clarity Data Export API, directly from your site | About once a day, only if you save a Clarity token |
Your analytics data never passes through my servers. The relay exists only because Google does not allow a plugin to ship the secret that one-click sign-in needs. It passes the sign-in code and tokens between Google and your site, and it does not store or log them. It uses your IP address only to limit how often it can be called, and it keeps nothing on disk. Read the privacy policy for the details, and the sign-in service terms for the rules of using the relay.
Prefer zero contact with me?
Two options:
- Tracking only. Paste your
G-Measurement ID and skip the Google sign-in. You get tracking with Consent Mode, without reports in WordPress. - Bring your own Google client. Under Settings, Sign-in & data, use your own Google OAuth client. Your site then talks only to Google, and my relay is never contacted.
Get started in two minutes
Tagsmith installs like any other plugin from WordPress.org:
- In your WordPress admin, go to Plugins, Add New, search for Tagsmith, then choose Install Now and Activate. You can also start from the listing on WordPress.org.
- Open Tagsmith, Settings. The setup wizard walks you through it.
- Connect with Google, pick your GA4 property, and you are done. The Measurement ID fills in for you.
Requirements: WordPress 6.7 or later and PHP 8.1 or later. Per-post stats need pretty permalinks.
On WordPress.org. wordpress.org/plugins/tagsmith
Questions
Is it really free?
Yes. Every feature in the plugin is free, with no limits and no upsell screens. If a paid add-on ever exists, it will add new things (like client reports for agencies), never take away what is free.
Does it work with my cookie banner?
Tagsmith shows no banner of its own. It uses Google Consent Mode v2 and follows the choices made in yours. If your banner supports the WP Consent API, Tagsmith picks up your visitors' choices automatically. The setting has three values:
- Advanced (the default). The Google tag loads for every visitor. Visitors whose default is "not agreed" (by default those in the EEA, the UK and Switzerland) send only cookieless pings, and nothing is stored on their device, until they agree.
- Basic. The tag loads only after a visitor agrees,
so nothing is sent to Google before that. Your banner needs WP Consent API support, or
it can call
window.tagsmithGrant()when a visitor accepts statistics cookies. - Off. No consent signals are sent.
Microsoft Clarity and the ad pixels follow the same setting.
How do the ad pixels work with consent?
In Advanced mode they wait for marketing consent from visitors whose default is "not
agreed". In Basic mode they wait for everyone. In Off mode they load for everyone. Without
a banner that supports the WP Consent API, or Google Consent Mode
(ad_storage), a visitor who has to agree never triggers a pixel. Where
visitors must agree, a banner that decides only in the browser (CookieYes) loses leads
from forms that send visitors to another page. Google Ads waits the same way and, in Basic
mode with the Google tag set up, also for the Google tag's grant.
Can I use my own Google OAuth client?
Yes. Go to Tagsmith, Settings, Sign-in & data, and choose "Use my own Google client". Then, in your Google Cloud project:
- Enable the Google Analytics Data API, the Google Analytics Admin API and, if you want Search Console reports, the Search Console API.
- Set up the OAuth consent screen and add the Google Analytics read-only scope (and Search Console read-only, if you use it).
- Set the consent screen's publishing status to In production. While it is "Testing", Google expires access after 7 days and your site disconnects every week. You do not need Google's verification for your own account. The "unverified app" warning when you sign in is expected.
- Create an OAuth client of the type "Web application" and add the redirect URI the plugin shows. Your site needs HTTPS.
In this mode your site talks only to Google, and my relay is never contacted. Your client ID is stored as it is (it is not a secret), and your client secret is stored encrypted in your WordPress database. Removing your client while connected with it also disconnects.
How do I set up Microsoft Clarity?
Microsoft Clarity is Microsoft's free tool for heatmaps and session recordings. In Tagsmith, Settings, Tracking, turn on Microsoft Clarity and enter your Clarity Project ID (in Clarity, under Settings, Overview). You do not need a Google Analytics Measurement ID to use Clarity.
If you already use Microsoft's own Clarity plugin, Tagsmith can use the same Project ID. After you turn Clarity on in Tagsmith, switch off Microsoft's plugin so the tag does not load twice. The Health tab checks for this.
To see Clarity's numbers in WordPress, create a Data Export token in Clarity (Settings, Data Export) and paste it into the Microsoft Clarity card on the Tracking tab. Clarity's API returns only the last three days, so Tagsmith saves a snapshot once a day to build up your history.
To link Clarity with Google Analytics, use Clarity's own setting (Settings, Setup, Google Analytics). Tagsmith does not change your Clarity or Google Analytics configuration.
Does it work on staging or development sites?
Yes, and it is careful there. Tracking is off by default when WordPress reports a non-production environment, so test traffic stays out of your reports. You can turn it on in Settings, Tracking. If you copy a connected site to another address, Tagsmith notices that the address changed and asks whether to keep the connection or disconnect.
Why is Search Console data a few days behind?
Google publishes Search Console data about two to three days late. Tagsmith ends Search Console ranges three days ago and keeps their length, so you never see a half-filled last few days. Your Google account needs access to the site in Search Console.
Who can see the reports?
Administrators and editors, by default. You can change the roles in Settings, Reports. Per-post stats are shown only to people who can also edit that post.
Why don't the numbers match Google Analytics exactly?
Mostly caching (up to an hour for past dates), time zones, or a second tag added by another plugin or your theme. Settings, Health checks for all of this. "Last 7 days" and the other rolling ranges end yesterday, like GA4's own. Tagsmith works out dates in your WordPress time zone, while GA4 uses your property's time zone, so set both to the same zone for numbers that match.
Where do I get help?
Ask in the Tagsmith support forum on WordPress.org. If you would rather not post in public, email [email protected].
Tagsmith is made by Shivaa Tripathi and is free software, licensed under the GPLv2 or later. Privacy policy · Sign-in service terms
Google Analytics and Search Console are trademarks of Google LLC. Tagsmith is not made or endorsed by Google. Microsoft Clarity is a Microsoft product, and Tagsmith is not made or endorsed by Microsoft. The ad platforms' product names belong to their owners, with no affiliation.