We currently run the following set of rules:
1. Standard Variables are set, including s.campaign
2. If virtual page view event is pushed to the dataLayer, additional variables are set
3. s.t() beacon gets send
What I see in my data is that the visit is correctly attributed for both Marketing Channel and Marketing Channel Detail (=s.campaign), but the virtual page views within the visit get Marketing Channel Detail "None". Interestingly, s.campaign seems to be available in the virtual page views and I also see "Marketing Channel Instances". (see attached screenshot)
My expectation would be that everything happening within a visit (30 minutes time frame) should have the last known Marketing Channel AND Marketing Channel Detail.
What can be reasons why the latter might change during a visit? And even if it changes, why would the simple rule Marketing Channel Detail = s.campaign result in "none" when s.campaign is available?
Solved! Go to Solution.
Oh, one more thought... if this is just a small inset SPA in a larger transitional website.. let's say a purchase flow:
Where this actually represents multiple pages in the flow... a selection, a make payment and a purchase complete (for instance)
In this case, the URL technically doesn't need to be updated, since the user should never be trying to load the second or third step directly..
But a trick here is to have one rule for actual "Page Loads", and a separate rule for the virtual page progression.. on these separate rules, you can modify the the URL to not include the UTMs (strip them), not track s.campaign at all (let the attribution do its thing), and you can modify a few other things into these "virtual page loads" for these specific pages....
Can you show us your Marketing Channel Management, or at least confirm that you aren't overriding your Marketing Channels in subsequent hits in your visit?
Views
Replies
Total Likes
Hello Jennifer,
thank you for taking the time.
The Marketing Channel stays "Display" throughout the Visit. The processing rule for Display is either an eVar with the full URL contains "display" or s.campaign contains "display". Only the Marketing Channel Details are missing from the virtual page view hits. Interestingly, when I look at the metric "exits" Marketing Channel Detail is correctly attributed. I would take that as an indicator that the original marketing information is not overruled.
I have also looked at this discussion in detail but I am looking at events that happen within one visit exclusively, so expiration should not interfer. We set s.campaign = s.getValOnce(campaign, 's_campaign', 0); with the data element "Campaign" refering to utm parameters.
My understanding was that Adobe stitches all events in one visit to the last known Marketing Channel and I do not understand why that would not be the case for Marketing Channel Detail as well.
Views
Replies
Total Likes
My understanding was that Adobe stitches all events in one visit to the last known Marketing Channel and I do not understand why that would not be the case for Marketing Channel Detail as well.
Technically that's not correct, there can be multiple Marketing Channels within the same visit... if I come to the Site from a Paid Search, then 5 mins later open a Marketing Email, I will have Paid Search for the first few pages of my visit, then Marketing Email for the rest... all in the same Visit. However, the Marketing Channel and Marketing Channel Details should be in "lock-step" with one another.
It sounds like you have a bit of a mix between traditional site and some in-set SPA pages? In theory, this shouldn't cause issues, but this is a delicate balance and there are lots of potential impacts.
I think the first thing is to actually dig into the tracking that occurs as the user transitions between the sections of your sites.... usually the "Show Post-Processed Data" in the Experience Debugger will show this, right now it's not working for me on my sites.. it seems to be stuck infinitely loading.. you can try on your side and see if you have better luck...
What is happening may require a deep dive into your tracking and your rules to really understand what is happening
Views
Replies
Total Likes
Thanks for pointing out the post process data option!
I guess that means more debugging for me
Unfortunately, Marketing Channels can be one of the harder things to debug...
Views
Replies
Total Likes
It might be helpful to use a flow diagram on marketing channel detail, including repeat instances.
Here's an example from our sandbox. Start with Display channel, then pathing by detail. (Scope is visit, with Repeats turned on). Could be helpful to add segment to the panel for the pages you're having issues with as well.
And wouldn't it be nice if there was a Marketing Channel Rule Test feature, similar to the Classification Rules?
Almost there...
I think the problem comes from the combination of s.campaign being set as s.getValOnce and our Marketing Channel Processing Rules relaying on the URL parameters.
On entry the URL contains utm parameter. S.campaign is set correctly and saved to a session cookie. Marketing Channel Processing Rules identify the channel thanks to the utm parameters and Marketing Channel Detail is set as s.campaign.
On virtual page view or reload on this initial URL, there are still utm parameters present in the URL. Based on s.getValOnce the campaign information from the URL is compared with the information from the session campaign cookie. To prevent identical campaign information from being recorded multiple times in the same session, s.campaign is not set again. For this second page view s.campaign is undefined!
The second page view runs through the Marketing Channel Processing Rules again and based on the still present UTM parameters the second page view is attributed to the same Marketing Channel as the first page view. Marketing Channel Detail is set as s.campaign which at this moment is undefined -> "None"!?
Domain.com/utm_source=google&utm_medium=search
1st page view
s.campaign based on URL = google|search
s.campaign cookie = google|search
final s.campaign = google|search
Marketing Channel based on URL= Paid Search
Marketing Channel Detail based on s.campaign = google|search
Reload or Virtual Page View
s.campaign based on URL = google|search
s.campaign cookie = google|search
final s.campaign = undefined, because of s.getValOnce
Marketing Channel based on URL = Paid Search
Marketing Channel Detail based on s.campaign = NONE
My takeaway from this would be that on SPAs s.getValOnce should not be used. I wonder if I'm missing something obvious here, as I cannot find any articles or best practices on this and I would think I’m not the first person to run into this problem.
Views
Replies
Total Likes
Oh, is the whole site an SPA? Or just those pages?
Regardless, your developers should be updating the URL of the site on each page, the UTMs shouldn't remain on the next page, and the path of the URL and Browser History should be updated...
If they don't do that, then the normal site navigation doesn't work:
Unless I am misunderstanding.. but it sounds like the way the SPA is designed is a fundamental hurdle right now...
Oh, one more thought... if this is just a small inset SPA in a larger transitional website.. let's say a purchase flow:
Where this actually represents multiple pages in the flow... a selection, a make payment and a purchase complete (for instance)
In this case, the URL technically doesn't need to be updated, since the user should never be trying to load the second or third step directly..
But a trick here is to have one rule for actual "Page Loads", and a separate rule for the virtual page progression.. on these separate rules, you can modify the the URL to not include the UTMs (strip them), not track s.campaign at all (let the attribution do its thing), and you can modify a few other things into these "virtual page loads" for these specific pages....
I think that's it.
While we set a new page name and URL path for virtual page views, we do not update the eVar which captures the query string parameters based on window.location.search.
If a user enters the application with tracking parameters in the URL, with each virtual page view these query string parameters are set again. Marketing Channel Processing Rules will set the Marketing Channel accordingly on each step, but Marketing Channel Detail will be undefined as s.campaign is not set repeatedly to the same value due to s.getValOnce.
I added a condition to only set the eVar for query string parameters on regular page views and will monitor the incoming data closely.
Thanks again for your help!
You're welcome.. we have a few of these "in-set" behaviours... I had to get creative to fix the same issues that you are experiencing.
Views
Replies
Total Likes
Hello, it's me again
The first couple of days show an improvement of the data. None share went down for Email from 67% to 24%, for Social Cmapaigns 52% to 39% and for Display 41% to 23%.
BUT it stays more or less the same for marketing channels, that either use the automated detection rules provided by Adobe and/or the referrer info. Document.referrer stays the same throughout the SPA, so I'm wondering: Is it recommended to update the document.referrer for virtual page views? After the initial page view the document.referrer should be an internal URL and therefore not trigger the processing rules.
Views
Replies
Total Likes
Yes.. you should do that...
For both scenarios:
(Scenario 1: coming from an internal page, standard web to the SPA inset)
You can see here that Page B is always listed as the referrer, but the second and third loads, using the SPA should now reference itself (Page C)
(Scenario 2: coming from an external page)
Here the External Referrer is carried forward from the initial page load...
If on your SPA Load Rule, you set the referrer to the "current" URL, you should get:
(Scenario 1)
(Scenario 2)
I hope this helps
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies