1. Determine when a tag fires (eg is there a good callback function like this one for GTM)
2. Get a copy of the payload that the tag sends (how can you scalably get a copy of the data the tag sends to the vendor for any tag)?
If anyone knows of any functions or methods withing utag js or otherwise that would assist us to achieve these two goals that would be great.
Ad. 1: You can create a tag scoped extension that will send the network request when each assigned tag will run. In most tags nowadays you can use the variable u.id within these extensions to get the UID of the tag that is being executed. Note: this might be also covered by solution described in next point.
Ad. 2: You can use Tealium Collect tag. In it you can place any URL you want it to send data to. Included data contain but are not limited to current data layer state, information on which tags have been executed during current utag.view/link call. Please note that to get a full picture of what have been executed you need to place it as a last tag in the execution order. So with that you could have some webserver that is ingesting the data storing them in a database and later you could analyze them.
Example payload with execution state