It’s lovely to see small, incremental, quality-of-life improvements to Google Tag Manager amid the behemothian feature releases such as custom templates in 2019 and server-side tagging in 2020.

This time around, we’ll take a look at the upgraded search functionality of the Google Tag Manager user interface, which makes search an actually useful tool. In addition to this, we’ll take a look at one of the most requested features in the history of Google Tag Manager, which we finally have access to: bulk actions!

Both are relatively small updates compared to what’s been coming into Google Tag Manager over the past year or so, but that doesn’t diminish their importance one bit.


The Simmer Newsletter

Subscribe to the Simmer newsletter to get the latest news and content from Simo Ahava into your email inbox!

NEW: Bulk actions

One of the pain points of the Google Tag Manager UI has been the lack of bulk actions. If you wanted to delete multiple tags, you had to open each tag separately and then click to delete them.

With bulk actions, this process has improved quite a bit. Take a look:

Bulk actions are available for tags, triggers, variables, clients, zones, and templates. The actions you can do depend on where you are in the UI.

Asset Bulk actions available
Tags Pause/unpause, Move to Folder, Delete
Triggers Move to Folder, Delete
Variables Move to Folder, Delete
Clients Move to Folder, Delete
Zones Delete
Templates Delete

If you try to delete an item that has references, such as a variable that is referenced from a tag, you will see a warning:

It takes a few clicks, but to proceed you basically have to remove all references to the item before retrying the deletion. Easiest way is to open the item itself (by e.g. clicking its name in the overlay), and then clicking through the links in the References to this <type> section. Remove the links, save everything, and then retry deletion.

Yes, the workflow could be a bit smoother.

Also, I would love to see the Abandon Changes option as a bulk action, allowing you to roll back changes in bulk, especially in the Overview screen of GTM (where no bulk actions are currently available).

All in all, a very welcome addition to Google Tag Manager’s user interface.

Until now, the “search” functionality in GTM has been limited to searching by item name and/or type and filtering tables by the available columns, like this:

Well, we finally have a proper search feature, which digs into the actual settings and fields in the items as well, rather than just the metadata.

For example, in the image above I’ve searched all references to customTask within the container. I get four results:

  • GAS - Local settings - a Google Analytics Settings variable that has a set field named customTask.

  • JS - customTask - Local settings - a Custom JavaScript variable that has the term in its name.

  • UA - Page View - a tag where a field named customTask is set.

  • UA - Page View - SGTM - a tag where a field name customTask is set.

As you can see, not only does the search look at the metadata (name, type), it also drills into the actual fields and settings the user has configured!

The cool thing is that it also indexes Custom HTML tags and Custom JavaScript variables based on the JavaScript code. So searching for console returns this result:

That particular Custom HTML tag utilizes the console.log() method.

With templates, the search can also drill down to template name and description, as well as any field names in the template.


Nothing pleases me more than to see such a huge and popular tool like Google Tag Manager get these small, incremental improvements that directly address pain points and pet peeves of the community.

It must be difficult to prioritize these smaller updates, especially since there’s a pull to work on the larger and more impactful stuff.

Remember to use the Send Feedback feature in the Google Tag Manager user interface (you can find it in the overflow menu in the top right corner of the page) if you have feature requests. The feedback is monitored by the team and is likely used to prioritize the feature backlog as well.