Analytify + Addons — A Practitioner’s Review & Technical Field Guide to GA4 on WordPress


Keywords from the product name used throughout: Analytify, Google Analytics Plugin.
This article blends an operator’s review (what business impact you’ll get) with a developer’s guide (how to wire, test, and harden). We’ll cover GA4 set-up in WordPress, event/eCommerce tracking patterns, dashboards that answer real questions, and reliability/performance tips. For transparency: we also maintain tooling catalogs at gplpal with a focus on practical outcomes.
download paid wordpress plugins for free
Analytify + Addons — A Practitioner’s Review & Technical Field Guide to GA4 on WordPress
1) TL;DR for busy teams
What you get: A WordPress-native UI for GA4 that surfaces the metrics editors and marketers actually use—traffic, sources, engagement, conversions—plus add-ons for eCommerce, campaigns, authors, and scheduled reports.
Who it helps: Site owners who want decision-ready dashboards without living inside the GA4 interface; developers who need clean hooks to extend tracking and avoid duplicate tags.
Where it shines: Dead-simple onboarding, post/page-level stats inside WP Admin, concise eCommerce views, and email/Slack-friendly summaries.
What to watch: Consent Mode v2, duplicate instrumentation (GTM + theme + plugin), and catalog size for eCommerce—each needs a short checklist (supplied below).
2) What Analytify does (review in plain English)
Most WordPress sites have GA4 “installed” but not “instrumented.” Analytify closes the gap by putting the key reports where your team already works (WP Admin), and by exposing clean settings for:
Measurement ID management (GA4 property), one source of truth.
Front-end pageview + engagement tracking, with toggles for roles to exclude.
Post/Page Stats panels so content teams see which articles drive what without opening GA.
Addons that layer eCommerce, campaign UTM breakdowns, authors’ performance, email digests, and more.
Operator take: within a day, non-technical teammates will quote traffic and conversions confidently.
Engineer take: a single plugin can replace multiple bespoke snippets and reduce “mystery JS” that bloats the theme.
3) GA4 under the hood (technical orientation)
GA4 is event-first. Every hit is an event
with parameters. Out of the box, GA4 auto-collects pageviews, scrolls, outbound clicks (enhanced measurement). For commerce, you must emit recommended events:
view_item_list
,view_item
,add_to_cart
,begin_checkout
,purchase
, plus rich parameters (item_id
,item_name
,price
,currency
, etc.).
Analytify + Addons gives WordPress-ready toggles to emit these without living in GTM, while keeping extensibility for custom events.
4) Installation & first-run (15–30 minutes)
Back up your site (always).
Install Analytify. Enter your GA4 Measurement ID (G-XXXX…).
Choose who to exclude (Admins/Editors/Authors) to keep data clean.
Enable Enhanced Measurement (if you aren’t using GTM for it already).
If you sell: enable the eCommerce/Shop add-on and map your store (WooCommerce recommended).
Confirm Realtime: open a private window → visit a page → watch the Realtime card in Analytify or in GA4 DebugView.
Quick smell test: Realtime shows 1 active user, page path is correct, and there’s only one pageview per navigation. If you see duplicates, jump to §10 (duplicate tag triage).
5) Dashboards that answer real questions (operator review)
Home: sessions, users, engagement time, top sources, top pages, devices, geography.
Posts/Pages: per-post stats right in the editor sidebar or a meta box (publishers love this).
eCommerce (addon): revenue, orders, AOV, top products, funnel stages.
Campaigns (addon): UTMs sliced by source/medium/campaign; landing pages joined to revenue.
Why it matters: Editors decide “write more like this” from post-level data; marketers decide “fund this channel” from campaign data; managers read emailed summaries.
6) Consent, privacy, and compliance (ship right the first time)
Consent Mode v2: set default denied (
ad_storage
,analytics_storage
), then update on banner accept.IP masking: leave enabled (safe default).
Regions: if you handle EU traffic, ensure your banner fires the consent update before pageview (or use “update on accept, delay first pageview”).
User deletion requests: respect them; store the GA4 User ID if you use it.
Minimal consent snippet (works with most banners):
<script>
// default deny
gtag('consent', 'default', {
'ad_storage': 'denied',
'analytics_storage': 'denied',
'region': ['AT','BE','BG','HR','CY','CZ','DK','EE','FI','FR','DE','GR','HU','IE','IT','LV','LT','LU','MT','NL','PL','PT','RO','SK','SI','ES','SE','IS','LI','NO','GB']
});
// call this on "Accept"
function acceptAll(){
gtag('consent', 'update', {'ad_storage': 'granted','analytics_storage': 'granted'});
}
</script>
7) Content analytics playbook (what to do week one)
Find the compounding pages: In the Posts dashboard, sort by Engaged sessions + Conversions; shortlist 10 posts to refresh.
Attach outcomes: Define what success is per landing page (form submit, demo click, add to cart).
Create a Content Score = (Engaged Sessions × Conversion Rate) to rank editorial priorities.
Update CTAs on top posts and retest after 7 days.
8) eCommerce event mapping (recommended pattern)
If you run WooCommerce, confirm these emit on the right actions:
PLP (product list):
view_item_list
withitem_list_name
and product IDs.PDP (product detail):
view_item
with price/brand/category.Add to cart:
add_to_cart
with selected variation attributes.Checkout begin:
begin_checkout
with items array + value.Purchase:
purchase
withtransaction_id
,value
,tax
,shipping
,currency
,coupon
.
Custom parameters to consider: stock_status
, is_sale
, category_depth
, list_position
. These power smarter merchandising reports later.
9) Developer hooks & extensions (code you can copy)
Block tracking for specific roles/capabilities
add_filter('analytify_should_track', function($track){
if (current_user_can('manage_options')) return false; // block admins
return $track;
});
Emit a custom GA4 event on key UI actions
// In your theme footer or a small JS file
document.addEventListener('click', e=>{
const btn = e.target.closest('[data-demo]');
if (!btn) return;
gtag('event', 'demo_click', {
placement: btn.dataset.position || 'hero',
page_type: document.body.dataset.template || 'unknown'
});
});
Server-side push (Measurement Protocol) fallback for purchase
add_action('woocommerce_thankyou', function($order_id){
$order = wc_get_order($order_id);
if (!$order) return;
$payload = [
'client_id' => $_COOKIE['_ga'] || '555.0', // minimal CID
'events' => [[
'name' => 'purchase',
'params' => [
'transaction_id' => (string)$order->get_id(),
'value' => (float)$order->get_total(),
'currency' => $order->get_currency()
]
]]
];
// send via wp_remote_post to GA4 MP endpoint (add API secret + measurement_id)
// ...redacted boilerplate...
});
Use this only if ad-blockers are a major issue; keep client-side too for richer context.
10) Duplicate tag triage (the #1 GA4 foot-gun on WP)
Symptoms: Realtime shows 2 pageviews for one navigation, or conversions double.
Checklist:
Inspect the source for two gtag.js or gtm.js includes.
If you use GTM, disable front-end pageview injection in Analytify (or vice versa).
Check your theme’s
header.php
/functions.php
for hard-coded snippets.WooCommerce checkout/order-received pages sometimes carry extra tags via extensions—test them separately.
Goal: exactly one pageview per navigation.
11) Performance considerations (keep analytics light)
Load the gtag script with
async
.If you use GTM, don’t also load gtag directly.
Cache WP pages; exclude admin and endpoints used by live stats.
For big catalogs, defer non-critical widgets on the dashboard to avoid admin bloat.
12) Building dashboards that drive decisions
Executive dashboard (5 cards):
Revenue (7/28 days)
New vs Returning Users
Top Landing Pages by Conversions
Top Channels (last-click)
Site Speed (Core metrics pulled from GA4 or your RUM)
Content dashboard (editor-facing):
Top posts by engaged sessions, scroll depth, conversions.
Author leaderboard (if you use the Authors add-on).
Internal search terms (what readers want but don’t find).
Merchandising dashboard (shop-facing):
Item views → add-to-cart rate by category.
Discount usage vs margin.
Wishlist/compare usage (if you run those flows).
13) Campaign discipline (UTMs without mess)
Always set source / medium / campaign; keep lowercase.
Create a shared UTM sheet with approved values (email, social, referral, paid).
In GA4, build Audiences for “Engaged but not purchased” to fuel remarketing (consent permitting).
Use landing page families:
/lp/ga4-workshop/
etc., to group analysis logically.
14) Attribution sanity checks
Check self-referrals (your own domain) → usually cross-domain or payment gateway issues.
Map payment gateways to referral exclusion if they interrupt sessions.
Compare last-click vs first-touch to set realistic channel budgets.
15) Reliability & QA routine (30-minute weekly)
Realtime smoke test: one visit from a private window, one conversion.
Ecommerce: place a test order (sandbox), confirm
purchase
event value/currency.Consent: test EU VPN path; ensure no pageview before consent if that’s your policy.
Email report (addon): skim KPIs; if a number looks “too good,” assume a duplicate tag or a new redirect.
16) Migration notes (UA → GA4 survivors)
UA goals don’t exist; recreate as GA4 conversions (event-based).
Rebuild audiences; naming parity helps training the team.
Expect different totals (engaged sessions vs sessions); align on definitions in your org.
17) Security & roles
Restrict analytics access to Editors/Managers who need it; keep raw settings to Admins.
Sanitize any IDs you print in templates; never echo raw query vars into inline JS.
Use nonces if you expose custom endpoints for analytics.
18) Editorial workflows that compound
Content refresh cadence: update 5% of your posts monthly (add FAQs, new data, improved CTAs).
Link intent: from top posts, add 1–2 high-intent internal links to money pages; track their click events.
Author retros: monthly review for each writer—what worked, what to try.
Topic pruning: de-index thin content; GA4 + Search Console hint at what to cut.
19) Minimal SOP (print this)
Before launch
One tag manager (GTM or gtag), not both
Consent defaults + update logic verified
purchase
event carries correct currency/valueAdmin/Editor traffic excluded
Weekly
Realtime smoke test
Revenue sanity check vs store backend
Top 10 landing pages reviewed
Campaign UTM hygiene audited
20) Where Analytify + Addons fits vs alternatives
If your team lives in WordPress and wants answers inside WP, Analytify is a strong bet.
If you already operate a GTM-heavy stack with custom schemas, you can still use Analytify for reporting in WP while letting GTM fire tags.
If you need BI-grade modeling, export GA4 BigQuery and keep WP dashboards for line-of-sight.
21) Final verdict
Analytify + Addons turns GA4 from a black box into a daily habit for WordPress teams. It’s opinionated in a good way: clear dashboards, eCommerce events without drama, and extension points for developers. Ship consent right, prevent duplicate tags, and you’ll move from “we have analytics” to “we make decisions” in a week.
Appendix A — Handy snippets
Defer analytics for editors (keep writers focused)
add_filter('analytify_should_enqueue_assets', function($enqueue){
if (current_user_can('edit_posts')) return false;
return $enqueue;
});
404 tracking as an event
add_action('template_redirect', function(){
if (is_404()) {
?>
<script>
gtag('event','page_404',{page_path: location.pathname, referrer: document.referrer || '(direct)'});
</script>
<?php
}
});
Scroll-depth sampling
<script>
let fired25=false,fired50=false,fired75=false;
window.addEventListener('scroll',()=>{
const d = document.documentElement, h = d.scrollHeight - d.clientHeight;
const p = Math.round((d.scrollTop / h)*100);
const mark = (t)=>gtag('event','scroll_depth',{percent:t});
if(p>=25 && !fired25){mark(25);fired25=true}
if(p>=50 && !fired50){mark(50);fired50=true}
if(p>=75 && !fired75){mark(75);fired75=true}
},{passive:true});
</script>
Appendix B — Glossary (short and useful)
Engaged session: ≥10 seconds, or 2+ pageviews, or a conversion.
Event parameter: extra fields on events, e.g.,
item_id
.Attribution model: rule for crediting channels (GA4 defaults to data-driven).
Consent Mode: GA behavior under consent states (
granted
/denied
).
Subscribe to my newsletter
Read articles from Kahn Carlon directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
