What’s this blog about?
I post content around data layers, 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.
Often, I post not to be seen as an expert on things, but I figured out how do to something that wasn’t well documented. My solutions don’t claim to be the “best”, so much as “here is a way that I found works that I hope others will benefit from, or teach me how to do better”.
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 have worked for various agencies and clients over the years, the thoughts and ideas on this blog are completely my own.
Who is Jenn Kunz?
I’m an industry expert on Adobe/Google Analytics, MarTech tracking, tag management, and data layers. I’ve been a Principal Consultant for 33 Sticks (a boutique agency specializing in strategic analytics and optimization) since 2018, helping enterprise clients improve their marTech architecture.
I’ve been consulting in some way since starting at Omniture in 2006. I was Search Discovery just before Satellite (now known as Dynamic Tag Management Launch Adobe Experience Platform Data Collection Tags) 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 React, Python, Django, and SQL.
When not working with clients, I partner with vendors to create webinars, speak at conferences, fills gaps in industry documentation with this blog, or 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 (which is not in the app stores at the moment). I love helping and collaborating with others in the industry, and most days can be found doing just that on #measure slack, the Test and Learn Community, linkedin , twitter or blueSky.
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.
Jenn Kunz outside of work
My wonderful, supportive husband Kenny has been a stay-at-home dad since I re-entered the work force in 2010. I have two incredible teenagers, Daniel and Cam. I’m currently based in Kennesaw, Georgia (just outside of Atlanta), though I was raised in Vancouver, Washington (just outside of Portland, Oregon).
As for getting to know me personally, I’m into nature, bird-watching, rock climbing, board games, video games, and baking. I play guitar, piano and harp, and am currently a member of the Georgia Symphony Chorus. My family has a rather extreme LEGO collection.
I make no secret of my ADHD, which has been both a big help and a major struggle in my career.
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?