October 4, 2015

Fjerne wicket sideversjon med Tag Manager

Wicket URLĂ©r er litt vanskelige Ă„ fjerne fordi sideversjoner har formen ?1, ?2, ?3 osv. Vi kan ikke bruke den innebygde parameter-fjerningen i Google Analytics fordi den forutsetter parametere i formen nĂžkkel=verdi.

Vi kan heller konfigurere et filter med regulÊre uttrykk, fordi vi mÄ ivareta andre parametere og sprÄket/syntaksen er ikke regulÊr.

En oversikt over prosessen for Ă„ implementere filtreringen i Tag Manager er som fĂžlger.

Utvilking og test:

  • Opprett en Custom JavaScript-variabel i GTM for filtrering.
  • Lag en ny trigger for sidene som trenger denne filtreringen.
  • Lag en ny GA tag som inkluderer triggeren
  • legg til triggeren pĂ„ den originale slik at det ikke blir dobbelt med GA-tags. Triggingen mĂ„ vĂŠre MECE.

Preprod

  • Verifisere at lĂžsningen fungerer.
  • Dokumentasjon

Produksjon:

  • Publiser ny versjon (Trykk publish)

Samme teknikken brukes pÄ events:

  • Lag en click trigger
  • Opprett Universal Analytics event tag

Resultatet som Ăžnskes er at fĂžlgende URLĂ©r:

https://tovare.com/tovare/gtm/pageversion.html?1
https://tovare.com/tovare/gtm/pageversion.html
https://tovare.com/tovare/gtm/pageversion.html?1&k=v
https://tovare.com/tovare/gtm/pageversion.html?2=&k=v
https://tovare.com/tovare/gtm/pageversion.html?3=&k=v&k=v2

Blir endret til:

https://tovare.com/tovare/gtm/pageversion.html
https://tovare.com/tovare/gtm/pageversion.html
https://tovare.com/tovare/gtm/pageversion.html?k=v
https://tovare.com/tovare/gtm/pageversion.html?k=v
https://tovare.com/tovare/gtm/pageversion.html?k=v&k=v2

#1. Utvikling og test

Opprett en Custom JavaScript-variabel i GTM for filtrering.

For testing fra kommandolinjen med nodejs:

/* wicketFilter.js */
var url = "https://tovare.com/tovare/gtm/pageversion.html?1"


exports.wicketFilter = function(url){
    var expr  = /\?[0-9]+\=?/,
        hasPageVersion = url.match(expr);
    var expr2  = /\?[0-9]+\=?\&/, 
        hasPageVersion2 = url.match(expr2);
    
    if(hasPageVersion2) {
        url = url.replace(hasPageVersion2[0],'?');
    }else if(hasPageVersion) {
        url = url.replace(hasPageVersion[0],'');
    }
    return url;
}

Jeg bruker Tape for test-drevet utvikling fordi internettene sa det var awesome.

Testscript for Tape:


/*
 * babel-node testWicketFilter.js 
 */

import test from 'tape';

var st = require('./wicketFilter.js');


// For each unit test you write,
// answer these questions:
test('Test filter', assert => {
  const input = [
    "https://tovare.com/tovare/gtm/pageversion.html?1",
    "https://tovare.com/tovare/gtm/pageversion.html",
    "https://tovare.com/tovare/gtm/pageversion.html?1&k=v",
    "https://tovare.com/tovare/gtm/pageversion.html?2=&k=v",
    "https://tovare.com/tovare/gtm/pageversion.html?3=&k=v&k=v2" ];
  const expected = [
    "https://tovare.com/tovare/gtm/pageversion.html",
    "https://tovare.com/tovare/gtm/pageversion.html",
    "https://tovare.com/tovare/gtm/pageversion.html?k=v",
    "https://tovare.com/tovare/gtm/pageversion.html?k=v",
    "https://tovare.com/tovare/gtm/pageversion.html?k=v&k=v2"
      ];

    input.forEach(function (value, i) {
        assert.equal(st.wicketFilter(value),expected[i],"Rewrite ")
    });

  assert.end();
});

Resultat av testing:

tovare@tovare:~/tovare/gtm$ babel-node testWicketFilter.js 
TAP version 13
# Test filter
ok 1 Rewrite 
ok 2 Rewrite 
ok 3 Rewrite 
ok 4 Rewrite 
ok 5 Rewrite 

1..5
# tests 5
# pass  5

# ok

Endring av det ferdig testede scriptet til GTM. Den stÞrste endringen er at {{Page Path}}-variabelen brukes. Denne variabelen er forhÄndsdefinert som standard i GTM.

Den definerte variabelen kan ogsÄ brukes for events.

Lag en ny trigger for sidene som trenger denne filtreringen

Lag en ny GA tag som inkluderer triggeren

Lag en ny tag ved Ă„ kopiere den eksisterende, deretter konfigurer med trigger og sett “page” med variabel.

Konfigurer gammelt tag til Ă„ ekskludere triggeren.

Du vil enkelt se i oversikten at det ikke er overlapp, ved at unntakene i hovedtaggen matches


#2. Preprod

Verifisere at lĂžsningen fungerer.

Velg preview i GTM, gĂ„ til en passende URL og velg “pageview” og variables for Ă„ sjekke hva som har blitt satt:

Dette kan ogsÄ verifiseres med GA Debug for Chrome i javascript console:

Til slutt kan den ogsÄ verifiseres i realtime-display i GA og i rapporter.

Dokumentasjon

Fordi containeren er dokumentasjonen og endringsloggen gir endringene som er gjort, er det nyttig Ă„ skrive i notatfeltet til containeren i “twitter”-stil hva som er nytt pĂ„ et veldig overordnet nivĂ„.


#3. Produksjon

Trykk publish


Filtrering av URL i Analytics Events

Det er like gunstig Ä lage rene URLer i events fordi man gjerne er interessert i Ä fokusere pÄ events produsert pÄ en gitt side.

Lag en click trigger

Opprett Universal Analytics event tag

Legg merke til at page-feltet settes til JavaScript variablen som vi lagde tidligere.


Kilder til inspirasjon og fakta:

Luna Metrics - Strip Query parameters Google Analytics En fin gjennomgang av forskjellige teknikker.

JavaScript Scene - Why I use Tape instead of Mocha so should you Artikkel som forklarer hvorfor Tape er sÄ fortreffelig til testing i JavaScript.

Developer Google - Pages Foretrukket metode Ă„ fjerne personopplysninger, rett fra kilden.

Google Tag Manager - Built-in variables Dokumenterer de innebyggede variablene.

Chrome store - Google Analytics Debugger

Test side tovare/gtm/pageversion.html Skru pÄ javscript console og GA debugger i Chrome, refresh og trykk i vei.

© Tov Are Jacobsen 1997-2020 Privacy and cookies