While Google Analytics is documented really well, the Google Tag Manager system does not ‘advertise’ its limits.
Google’s message is that GTM is limited by common sense and browser capabilities.
However, during its lifetime, certain Google Tag Manager container limits were made public.
On 18 March 2014, the constant string macro: Google Tag Manager limit was increased to 1024 characters. GTM v1 had a limit of 1000 rules and the lookup table stopped working correctly with more than 253 rows.
Google Tag Manager Container Limits
Luckily for us, most of the limits were lifted even in the free version of GTM v2.
Today, the number of tags in a GTM container is limited but the specifics of the limit have never been advertised. Most browsers will not open more than six to eight simultaneous HTTP requests to a single domain which will limit the number of the “tracking pixels” you could fire to the same system.
In the free version of Google Tag Manager, you can have three Workspaces active at the same time.
Custom HTML Tag – probably the most commonly used tag has a limit of 100k characters in a free version of GTM and is unlimited in its enterprise version GTM 360.
There is no limit to the number of rows in the Lookup Table variable, except for common sense. If you really need a lookup table with more than 10 values, think about nesting Lookup Tables – otherwise, it is pretty messy to manage.
The number of triggers is limited to 1000 in the free version of GTM and is unlimited in GTM 360.
There is no limit on container size in both the free version of GTM and GTM 360.
And talking about limits, Google Tag Manager exposes a really useful API with the following limits and quotes;
- 10,000 requests per project per day
- 0.25 queries per second (QPS) per project
Read more on GTM API limits here.
Practically speaking, I have yet to see a container getting close to these limits and I would prefer to have an even smaller limit on the Custom HTML Code tag type and no limit for GTM 360 of course. Enterprise Clients deserve it.
Due to the way the Internet works, it is much more efficient to deliver 50+KB scripts as a standalone file (preferably in async mode) rather than as part of a GTM container.
If a script is delivered as a file, it will be cached locally and you still have control in GTM whether to include it or not.