looks like I wrote some code that tested whether dataLayer was an object before sending tracking, but it's more often an array (i think it can be both?). Regardless, whoops. Should change to just checking if it's not undefined.
nevermind, arrays are objects too. digging in, seems like a lot of tracking is happening. Just not 100%. more like 68%.