shuki mann - lixfix (all things data 2015)

Post on 12-Aug-2015

109 Views

Category:

Marketing

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

#ATDconf

Google Tag Manager Awesomeness

Shuki Mann!!

@ShukiMann!shuki@allthingsdata.co.il

#ATDconf#ATDconf shuki@allthingsdata.co.il

What is Google Tag Manager?

#ATDconf#ATDconf shuki@allthingsdata.co.il

#ATDconf#ATDconf shuki@allthingsdata.co.il

source: builtwith.com

GTM market share VS. other vendors

#ATDconf#ATDconf shuki@allthingsdata.co.il

GTM Corner Stones:

what to do

when to do

#ATDconf

#ATDconf shuki@allthingsdata.co.il

–Avinash Kaushik

I.T.

#ATDconf#ATDconf shuki@allthingsdata.co.il

Business Question

First of All - Implementation Process

Defining KPIs

Requirements

Implementation-

QA

Implementation-

#ATDconf

#ATDconf shuki@allthingsdata.co.il

!The First Magic: Cohort Analysis by The Last Seen Post!

(in other words: how the last seen post affects the FTD!amount)

! Difficulty: 2

#ATDconf#ATDconf shuki@allthingsdata.co.il

What is “Cohort”Cohort analysis divides website users into groups (=cohorts) based on a common characteristic, and compares behaviour over time across those groups. !Cohort Types: • Date of first visit (retention by…) - default • Date of registration (churn rate by…) • Acquisition Campaign (sign ups by…) • App download date (in-app purchases by…) !and… • Last blog post they read (Avg. FTD amount by…)

#ATDconf#ATDconf shuki@allthingsdata.co.il

conversion rate by acquisition week

Problem: GA presents only “acquisition date” as the common characteristic.

#ATDconf#ATDconf shuki@allthingsdata.co.il

Our Business Question:!!

Whats the effect of the last post the user has read on the FTD amount by the number of days

passed since reading that post

#ATDconf#ATDconf shuki@allthingsdata.co.il

FTD

!Implementation Plan!

1. While the user reads a post - save this post name to a cookie 2. …and also save the current date. 3. When the user is performing his FTD - take the date that was

stored to the cookie, calculate the days/weeks/months passed since that date and send that with GA transaction tag.

!4. What would happen if the user reads another post? It will overwrite

the stored information in the cookie, aka last click attribution. (It can easily be adjusted to first-click-attribution)

PostA PostB

#ATDconf#ATDconf shuki@allthingsdata.co.il

1. Create cookies with the post’s URL and its reading time

#ATDconf#ATDconf shuki@allthingsdata.co.il

2. Create variables to get these values from the cookies when the FTD occurs

#ATDconf#ATDconf shuki@allthingsdata.co.il

3. Create Custom JS Variable that calculates the days passed since the date stored in the cookie

#ATDconf#ATDconf shuki@allthingsdata.co.il

3. Create Custom JS Variable that calculates the weeks passed since the date stored in the

cookie

#ATDconf#ATDconf shuki@allthingsdata.co.il

3. Create Custom JS Variable that calculates the months passed since the date stored in the

cookie

#ATDconf#ATDconf shuki@allthingsdata.co.il

4. Create session-scoped custom dimensions in GA

#ATDconf#ATDconf shuki@allthingsdata.co.il

4. Write down their index numbers…

#ATDconf#ATDconf shuki@allthingsdata.co.il

5. Send transaction with the calculated

CDs values

#ATDconf#ATDconf shuki@allthingsdata.co.il

Debugging with WASP inspector - all CDs are sent!

download chrome ext. from: bit.ly/wasp-inspector

#ATDconf#ATDconf shuki@allthingsdata.co.il

Create Custom Report in GA! (in our case use only Average Order Value)

#ATDconf#ATDconf shuki@allthingsdata.co.il

Export to Excel

#ATDconf#ATDconf shuki@allthingsdata.co.il

A little bit of Tableau work and…

Business insights (here comes the money): !1. After reading post3 you have an

opportunity window of 3 days to bring high valued FTDs

!2. Something interesting happens in the

second week after reading post1… We should investigate it further

#ATDconf#ATDconf shuki@allthingsdata.co.il

Another example: save the affiliate name (instead of post name) and monitor his traffic deposits across the

following weeks

FTDAff 1 Aff 2

#ATDconf#ATDconf shuki@allthingsdata.co.il

So what did we have?!1. We wanted to see how different groups of the same users

behave across the timeline. !2. What defines “the same user”? In our case we are referring to

users that originated from a specific affiliate or read post X before their FTD.

3. When a user reads a post, we store the post name and reading date to a cookie.

4. When the user performs an FTD we retrieve the days+weeks+months since the last post reading date, and send it through custom dimension to GA (plus the post name of course).

5. We create a custom report in GA, export the data and visualise it in Tableau (or any other software).

#ATDconf#ATDconf shuki@allthingsdata.co.il

More examples !!

1. e-Commerce - Store the registration date and see how these users convert through time. Maybe you will find that users that registered because of X converted less than users that registered because of Y.

!2. Apps - in-app purchases by installation date.

#ATDconf

#ATDconf shuki@allthingsdata.co.il

DONE

#ATDconf

#ATDconf shuki@allthingsdata.co.il

! The Second Magic: Optimizing Internal Site

!Search

Difficulty: 3

#ATDconf#ATDconf shuki@allthingsdata.co.il

Search Terms report in GA - we have lots of usersthat didn’t find what they’ve searched for

#FAIL

#ATDconf#ATDconf shuki@allthingsdata.co.il

Action Plan!!1. Grabbing the search term query from the URL !2. Return an HTML and inject it to the post’s feed code

for each search query

Business Goal!!

We want to provide more relevant search results or promote certain items that would of not been showed organically.

#ATDconf#ATDconf shuki@allthingsdata.co.il

When searching for “adwords” youwould see a boring post:

#ATDconf#ATDconf shuki@allthingsdata.co.il

…but after the injection, you can see a promoted post for my

AdWords Workshop

#ATDconf#ATDconf shuki@allthingsdata.co.il

Step 1: grab the search query from the URL

#ATDconf#ATDconf shuki@allthingsdata.co.il

Step 2: return a specific HTML code to inject for each search query:

#ATDconf#ATDconf shuki@allthingsdata.co.il

Step 3: When the user is in the search results page - inject the returned

HTML to the main post feed (div withclass “columns” in our case)

#ATDconf#ATDconf shuki@allthingsdata.co.il

<div class=“columns”>…

#ATDconf#ATDconf shuki@allthingsdata.co.il

#ATDconf#ATDconf shuki@allthingsdata.co.il

Try it yourself: search for “adwords”

#ATDconf#ATDconf shuki@allthingsdata.co.il

Try it yourself: search for “google analytics”

#ATDconf#ATDconf shuki@allthingsdata.co.il

But…!Lookup Table works only with “equals” operator. If someone is searching for “google adwords” and

not “adwords” it won’t work :-/

#ATDconf#ATDconf shuki@allthingsdata.co.il

until…

#ATDconf#ATDconf shuki@allthingsdata.co.il

RegEx Lookup Table

take the search look if the phrase in return the right cell

#ATDconf#ATDconf shuki@allthingsdata.co.il

Take the returned value from our RegEx lookup table, and return the promoted

post HTML we want to inject

#ATDconf#ATDconf shuki@allthingsdata.co.il

#ATDconf#ATDconf shuki@allthingsdata.co.il

What did we have so far?

#ATDconf#ATDconf shuki@allthingsdata.co.il

Try it yourself: search for “adwords”

#ATDconf#ATDconf shuki@allthingsdata.co.il

Try it yourself: search for “google analytics”

#ATDconf

#ATDconf shuki@allthingsdata.co.il

Thank You :) !

All Things Data Rocks! !

shuki@allthingsdata.co.il

#ATDconf

#ATDconf shuki@allthingsdata.co.il

The Third Magic:!Fight with Gibberish URLs!

!

Difficulty: 3

#ATDconf

#ATDconf shuki@allthingsdata.co.il

As seen on…

#ATDconf

#ATDconf shuki@allthingsdata.co.il

How will these URLs look in the GA reports?!

#ATDconf#ATDconf shuki@allthingsdata.co.il

#ATDconf#ATDconf shuki@allthingsdata.co.il

The problem:!Ecommerce shop with gibberish URLs - no way to analyse

with GA

alternatives before GTM:!!

1. 301 redirects (very risky) 2. Search & replace filters in GA (no way. thousands of products)

#ATDconf#ATDconf shuki@allthingsdata.co.il

What are we going to do? - Solution #1

We want to be able to see more meaningful URLs in GA reports !1. Grabbing the “ugly” parameter from the original URL with a

GTM variable (macro) !2. Replace this old parameter with a new and more

meaningful one !3. Send virtual pageview to GA with the new parameter

#ATDconf#ATDconf shuki@allthingsdata.co.il

Grab the itemId parameter with URL-Query variable

#ATDconf#ATDconf shuki@allthingsdata.co.il

Return a new itemId for each ugly itemId!for example: “{8317F274-701D-46A3-A8D1}” >>> “Blue T-shirt -

Men”

#ATDconf#ATDconf shuki@allthingsdata.co.il

Solution #1: Lookup Tables

The lookup table takes the value from the {{Old Item Id}} variable, and returns a new value to the {{New Item Id}} variable. !“if {{Old Item Id}} value is “ItemA” return “NewItemIdA” to the New Item Id”

#ATDconf#ATDconf shuki@allthingsdata.co.il

Create Custom JS Variable that returns the {{New Item Id}} !only if the ItemId is in the URL

#ATDconf#ATDconf shuki@allthingsdata.co.il

Send the New Item Id with virtual PV within the GA tag

#ATDconf#ATDconf shuki@allthingsdata.co.il

But wait, we have 10,000+ products!!!

How can we create 10,000 rows more easily?

bit.ly/lookup-table-builder

#ATDconf#ATDconf shuki@allthingsdata.co.il

Paste the code in the console and… hopa!

bit.ly/lookup-table-builder

#ATDconf#ATDconf shuki@allthingsdata.co.il

Still - it takes a lot of time to create the lookup table, so I’ve looked for

an easier way

#ATDconf#ATDconf shuki@allthingsdata.co.il

Solution #2: DOM scrapping

I need this part

#ATDconf#ATDconf shuki@allthingsdata.co.il

(Houston, you have duplicate GA tag)

#ATDconf#ATDconf shuki@allthingsdata.co.il

Step 1: Custom JS variable to get the last element on the breadcrumbs

#ATDconf#ATDconf shuki@allthingsdata.co.il

Step 2: Fire GA tag with virtual PV

#ATDconf

#ATDconf shuki@allthingsdata.co.il

DONE

#ATDconf

#ATDconf shuki@allthingsdata.co.il

Thank You :) !

All Things Data Rocks! !

shuki@allthingsdata.co.il

top related