Stanislav Galandzovskyi once asked for a script that would report disapproved extensions in your Google Ads Account. I had a spare hour so I wrote a tiny Google Ads script that just does the job: checks if there are any disapproved extensions and sends an email with the list if found anything. Hope you’ll find it helpful:


Oh, no gtag snippet here :(

Analytics documentation describes the usage of custom dimensions in a clear way: first, define a custom map with a config command and then pass values as parameters while sending events:

// Configures custom dimension<Index> to use the custom parameter
// 'dimension_name' for 'GA_MEASUREMENT_ID', where <Index> is a number
// representing the index of the custom dimension.
gtag('config', 'GA_MEASUREMENT_ID', {
'custom_map': {'dimension<Index>': 'dimension_name'}
});

// Sends the custom dimension to Google Analytics.
gtag('event', 'any_event_name', {'dimension_name': dimension_value});

However, this approach has some drawbacks. It doesn’t allow you to send custom dimension value alongside pageview hit, which may be crucial for some content…


While working on clients’ Google Analytics implementation I’m often requested to set the same goal configuration across multiple views. A task like this is usually boring, tedious and error-prone. Each goal requires numerous clicks and waiting for UI to respond to each update.

So I’ve written a simple script for managing Goals setup in bulk in Google Sheets. A script resides within Sheet template and allows you to quickly fetch existing event goals configuration, and performs only several simple tasks:

  • lists all your existing event-based goals:
  • provides neat dropdowns for adding up new event-based goals
  • adds newly created goals to…


Shopping Content API is a neat tool for every Google Ads developer. It allows you to manage your product feed programmatically and to build tools for monitoring and automation. Another convenient thing about this API is that there are two separate services for accessing it via App Scripts and via Google Ads Scripts. However, such convenience comes at a cost. I’ve been recently contracted to develop a script that tracks changes in product listings and occasionally makes changes to shopping campaigns whenever these changes are significant. The script worked well on test accounts but failed on large (20K+ products) feeds…


Google doc on analytics.js states it clearly:

Warning: Properly implementing cross-domain tracking is complex and error prone. This guide explains the concepts, but it’s strongly recommended that you use the official Linker plugin instead of trying to implement cross-domain tracking yourself.”

Luckily, we have a GTM that can handle setting up cross-domain tracking for us. Just add a few fields to your analytics settings variable, then add this to Google Analytics tag in GTM and you’re done. There is even a nice help page on how to set this up.

In practice, however, it’s not always so easy. For some…


Funnels can be quite complex: they may consist of several events on different pages which can be reached independently. In such case you can’t rely on standard tools anymore.

Consider the following flow:

Your visitor starts with a three section quiz on a landing page, then an email prompt pops up to deliver detailed results of the quiz, after that the visitor is directed to a recommendation page based on their quiz answers, where finally the visitor picks recommended items and proceeds to the checkout. Whenever the quiz, recommendation and checkout pages exist as separate pages, you can set them…


CSS and all the CSS people bring beauty to the boring world of HTML and make your pages spark and shine. But at the same time they bring pain to front-end developers and us, web analysts. Because often what was supposed to be a <button> element looks like a <span> inside a <div> inside a <table> and so on. And all they behave like a top-level button when clicked.
Consider the following example:

This is where most common web tracking fails. Usually, analytics events/hits are tied to some element’s click based on its attributes such as class, ID or…


There was a thought in my head right after I finished testing a dozen of Facebook Events in my GTM. Everything was fine except a length of GTM tags list. There were two tags for most triggers, one for Google Analytics and one for Facebook Pixel. So I started looking for some workaround to make things easier and faster to set up. The first solution that came to my mind was Google Analytics Tasks. This interface allows to hook many stages of Google Analytics tracking process and also there is a custom task that you can use as a trigger…


Many analysts’ headache is Facebook referrals in Google Analytics. For some reason, Facebook has multiple referring domains that make no particular sense for an analyst. Instead of single facebook / referral in source / medium reports there are usually three rows for l.facebook, m.facebook and facebook.com:

facebook sources mess

There is a simple trick to combine them in a single row if you do not need such a detailed view. All you need is just a ‘Search and Replace’ filter in your view. Select Campaign Source as a Filter Field and replace all the sub-domains values with plain facebook.com.


Many sites use social sign-up tools to make users’ registration seamless. But this turns into a headache for web analysts. Google Analytics relies on referrer value to identify traffic source and to distinguish between user sessions. If user reaches site from organic search results, the referrer includes search engine domain and page address so user can be tracked via Google Analytics as google/organic. If then user signs up with a social plug-in, she is automatically taken to a social platform authorization page to confirm sign-up and allow data access and then is sent back to site. At this moment Google…

Dmytro Bulakh

Marketing professional, Google Analytics and Google AdWords certified specialist at ppchead.com, beer lover and football aficionado

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store