Okay so here's the problem,
Summary: Allow for DTM to load a tool but not output the "trigger" code.
Many sites are setup to output content and libraries and other resources in a progressive manner. For example, when you use angular.js framework.
The issue with this vs. DTM is that a lot of things happen after DTM does its thing, even pageBottom() stuff. This is particularly problematic as far as being able to set Data Elements.
For example, I add Adobe Analytics tag to DTM. I also add code to pop Data Elements so that I can in turn use the DTM forms to populate s.prop1 or whatever. However, because of the nature of certain frameworks like angular.js that make AJAX calls for resources after the page is fully loaded, DTM provides no way to hold off triggering the Adobe Analytics call until I explicitly specify it. My choices are to make it pop on page top or page bottom (when _satellite.pageBottom() is triggered) and that's it.
I *thought* I could just put _satellite.pageBottom() in a callback function withing the angular.js framework but this doesn't work. Apparently the core DTM code will trigger page bottom stuff on dom ready if pageBottom() hasn't already been called. Why it does this I have no idea but this would have been a simple solution if it didn't do it.
So my first suggestion would be to change the behavior of "page bottom" to only trigger when _satellite.pageBottom() is explicitly called. Maybe have a checkbox in DTM to specify this so that user gets an option for it?
Failing that, I suggest that a new "Custom" option be added that basically says "output the library, but do not make the "trigger" call until I explicitly say so". You don't even need to do much on this count, except just prevent DTM from outputting the "trigger" stuff. Then the "trigger" stuff can be done with a Direct Call rule and _satellite.track().
In the case of Adobe Analytics, I have found several workarounds so far, and both of them are not really acceptable.
1) Use a direct call rule to output a 2nd adobe analytics call in my angular.js loaded callback function. This is not acceptable because it doubles the adobe analytics requests, and those requests cost money and have implications on reports
2) Ditch having Adobe Analytics as a listed tool. Put the entire adobe analytics library into a direct call custom js code rule and just pop everything i need there, and call the direct call rule in my callback. This completely defeats the point of using a tag manager. At this point, DTM is just a useless wrapper bloating things.
3) put the DTM "top" code (the script include) into the angular.js callback as well. I'm not sure this will even work. I have no idea how DTM will react to being added after page load. Who knows what adverse side effects will occur from this. It will certainly destroy DTM's timing scope but who knows how deep that cut will be.