What I'm wondering is if I need to bother with the data layer approach or if I can just direct call everything with `window._satellite.track` and configure in the portal which one is a page and which is an event/link? Currently I've got code that will use the data layer to track pages and a direct call to track things like specific click events. Ideally I can just do it all one way.
Great question. I want to clarify a few points to check my understanding and ensure I am addressing your question.
A Direct Call rule is essentially a type of page event to trigger a Launch Rule. Whereas the data layer is meant to make the data you would send on the request more easily accessible. SPA implementations prefer Direct Call rules because the normal hooks, such as page load or page top, are less applicable as the page is not refreshing as the end user navigates the site. So a direct call rule placed in your code that simulates a new page load for example can help to track user navigation on an SPA.
In short they do not need to be mutually exclusive options. If you are able to access the data and set the variables within the rule without a data layer then that is fine.