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.
while I mostly agree with the previous answers, I would like to write some words about those solutions and write, why I prefer a good data layer instead of direct call rules.
first, lets have a look at the two solutions:
direct call rules with additional parameters
direct call rules are very useful, since you can just trigger a specific rule in Adobe Launch and providing additional information (parameters). this additional data can then be used within the rules to set the Adobe Analytics variables/events just as needed.
having done some implementation both with DCR and the data layer manager, I strongly believe that the EDDL (event driven data layer) is my preferred solution.
here are just some points why I would go this way:
1) independent: the data layer lives in the application without a connection to the analytic tools. IT really loves it to skip the analytic tool and doesn't have any impact on the website. and if you once change your analytic tool, you do not have any impact on the website itself (just exchange the data layer manager)
2) access event stack: I love the "computedstate" of the data layer manager. basically it gives you the last value of a certain variable at any point. this would be much more work with DCRs.
I'm sure there are points for both solution, but I recommend using a data layer. and this doesn't mean the other solution is a "no go", just my preference.