What’s this blog about?
I post content around data layers (particularly the W3C standard), tag management, data visualization, Google Analytics, and Adobe Analytics, as the opportunity arises.
Currently much of my new content is released on the 33 Sticks blog instead of this blog.
Many of my posts aren’t necessarily intended to be subscribed to and read as each new post comes out (though you’re welcome to, of course). Rather, it is meant to provide reference information that you can then pull up as needed, often supplementing existing industry documentation.
I used to blog at Implementalytics.com from 2011 through 2013, then in 2015 moved to this newer, more pronounceable domain. While I do work for various agencies and clients, the thoughts and ideas on this blog are completely my own.
What is Digital Data Tactics?
Digital Data Tactics is my LLC, and I’m the Owner, Principal Consultant, and sole employee. I used this LLC to do independent consulting before signing on to 33 Sticks, and now use it as a repository for content and ideas, though again, most of my new content goes up on the 33 Sticks blog.
Who is Jenn Kunz?
I’m an industry expert on Adobe Analytics, Implementation, Tag Management, and Data Layers, currently based out of Marietta, Georgia. I’m currently a Principal Consultant for 33 Sticks (a boutique Analytics Consulting agency), with a focus on getting quality data into analytics tools.
I’ve been consulting in some way since starting at Omniture in 2006. I had the pleasure of working at Search Discovery just before Satellite (now known as Dynamic Tag Management) was acquired by Adobe, but I actually made the switch to Adobe consulting just before that acquisition, putting me in a unique role as a consulting Subject Matter Expert for the Adobe consulting org. That experience with tag management and data layers has put me in quite a few unique positions to see some of the best (and worst) of how tag management and data layers are used.
Before I worked in Analytics, I was a web developer, and I have experience in HTML/CSS/JavaScript (including jQuery, Bootstrap, the Ionic mobile framework, and Angular 1/2), and am learning Python, DJango, and SQL.
In my spare time, I like to indulge my inner developer and fill some of the gaps in our industry by building tools, such as the Beacon Parser or the pocketSDR mobile app. I also enjoy mentoring and spreading the word about what a wonderful industry this is to work in.
Find me on linkedin or twitter.
Jenn Kunz outside of work
My wonderful, supportive husband has been a stay-at-home dad since I re-entered the work force in 2010. I have a son in 6th grade, and a daughter in 3rd grade.
As for getting to know me personally, my favorite video game is currently Horizon Zero Dawn, my favorite board game is currently Ex Libris, and my favorite books are the Stormlight Archive by Brandon Sanderson.
Hi,
do you offer consulting services?
I would like to get in touch regarding discrepancies between URL shortener and analytics tools.
Best regards,
Claudia
I will appreciate if you can advise on following.
I have a single page application (called Insurance Proposal). This application is used by Agents.
It has an awfully long page with separate sections which can be visited by clicking links/carousals or just by scrolling.
Requirement is to measure “time spent on each sections of the page”.
I am planning to track separate sections as page loads.
If user visits the section by clicking links to each section, then it can be done easily.
I need some suggestions from you for the case when user scrolls to the section. I am using “enters viewport” event (and then fire page load – s.t).
It works fine for the first time, but if you visit the same section again by scrolling up or down, “enters viewport” does not trigger.
What am I doing wrong?
Since it is our test URL, you may not be able to access it.
Hello, Sameer! “enters viewport” is only going to fire once for when the conditions of the rule are met- so if you’ve firing it when “div.article” enters viewport, once “div.article” has entered the viewport once, DTM kinda checks that off as having been viewed, and won’t fire the rule more on that DOM. In some cases, this is really handy and prevents inflated data, but in your case when you have multiple separate elements you want to track, it is working against you.
IF you have a data layer or some data element that is changing as the user scrolls down, you may be able to change your rule condition to “Data element changed” and have it fire every time the page name or site section name data element changes.
Hello Jennifer,
Thanks for replying my “enters viewport” question. I was able to do it by hosting a customized code in DTM. It is working fine.
Regards
Hello Jennifer
I have a question about clearing variables in Direct Call Rules. I read an example about it at your site (http://www.digitaldatatactics.com/examples/DCR.html#).
I tried alternative way to do it. I want your opinion if this will work.
I created a data element pageName which gets call in setting page names in every DCR. I am clearing variables within this data element.
//pageName data element code.
s.clearVars();
switch (pageName) {
case ‘/’:
return ‘/successprofiles/home’;
case ”:
return ’empty’;
default:
return “/successprofiles” + pageName;
}
It seems to work fine. I want your opinion when you get time.
Regards
Oh interesting- so you’re setting s.clearVars in the pageName data element?
My only concern here is whether any other variables might try to be set before pageName. If you set s.channel or something like that in the interface for that direct call rule, is there a way to guaranteeit wouldn’t ever try to set before the pagename data element is referenced? I suspect that variables are always set in a specific order, but I would want to doulbe check that in both staging and production, that pageName data element was always run BEFORE I try to set any other variables.
Though to be honest, these days there may be easier ways to do it- if you use s.registerPostTrackCallback in, say, your global adobe analytics code, it will fire just after every beacon fires, so you can always be sure your variable “slate” is wiped clean after every beacon. See https://webanalyticsfordevelopers.com/2017/10/17/using-the-new-callbacks-for-tracking/ for some examples.
Thanks Jennifer for your reply. I will try s.registerPostTrackCallback.
Following is the order in image request: (pageNames comes before every custom variable settings.
AQB:1
ndh:1
pf:1
t:6/2/2018 10:7:57 2 360
D:D=
fid:2251DC9979C30F2B-34C9CF58F277E115
ce:UTF-8
pageName:Illustration Viewed
g:https://int.plan.nml.com/illustrations/?user=play7777
cc:USD
ch:Illustrations
events:event17
etc..etc
It is working fine, but I was not sure and wanted to check with you.
Regards
Hi Jenn,
today i accidentally had a thought to see what analytics data you are collecting on your site and was surprise to see my beacon which i parsed on your parse my beacon tool, is being captured in your beacon in eVar9.
Now this makes me curious to know why you are capturing beacon which user is parsing on your tool in ?
are we in safe hands when we are parsing beacon here ?
appreciate your response on this.
Hm, the only thing I’m using eVar9 for is to see what links users click that take them away from my site- standard exit link tracking. As for what I capture from the beacon parser, I do capture the beacon cname (eg, “jenniferkunz.d1.sc.omtrdc.net”) to get a general sense of who is using the tool (is it mostly my own clients?), and I might flag any variables that were on the beacon that I haven’t accounted for in my variable-friendly-names list (like if I see a beacon with “sdid”, I have tracking on the fact I need to look into sdid, but not what the value was that was passed), but I don’t capture any other specifics from the beacons being parsed.
Hello,
Once the website is loaded, my DTM library is loaded and I see an error
“VM19:1 SATELLITE: Cannot load sync the “a.js” script after DOM Ready.”.
This is a third party tag script written under the page load rule. Also, this script is asked to load sequentially. The page load rule loads at the “top of the page”.
I want to know why do I get this error? Could you please help me understand
I wonder if the error is misleading… I’ve seen similar errors when using sequential/page top because you’re trying to add something to the body BEFORE the body even exists. Does the error still happen if you use pageBottom?