Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Analytics para Devs
Search
Marcus Ortense
April 28, 2020
99
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Analytics para Devs
Marcus Ortense
April 28, 2020
More Decks by Marcus Ortense
See All by Marcus Ortense
Concrete on Beer JavaScript - Offline first
ortense
0
140
Natura Meet Up PWA - Offline first
ortense
0
78
Escrevendo javascript testável
ortense
1
170
Serverless
ortense
0
87
Talk - let, const & arrow functions
ortense
0
71
Talk - JavaScript Isomórfico
ortense
0
86
Desenvolvimento vs Conversão
ortense
2
110
Featured
See All Featured
It's Worth the Effort
3n
188
29k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Rails Girls Zürich Keynote
gr2m
96
14k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
510
The SEO Collaboration Effect
kristinabergwall1
1
550
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
230
Between Models and Reality
mayunak
4
450
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Transcript
None
None
analytics para devs
1 DE SETEMBRO DE 2013
Por onde começar?
None
None
instalação <script async src="https://www.googletagmanager.com/gtag/js?id=UA-000000-X"> </script> <script> window.dataLayer = window.dataLayer ||
[]; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-000000-X'); </script>
instalação <script async src="https://www.googletagmanager.com/gtag/js?id=UA-000000-X"> </script> <script> window.dataLayer = window.dataLayer ||
[]; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-000000-X'); </script>
instalação <script async src="https://www.googletagmanager.com/gtag/js?id=UA-000000-X"> </script> <script> window.dataLayer = window.dataLayer ||
[]; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-000000-X'); </script>
instalação <script async src="https://www.googletagmanager.com/gtag/js?id=UA-000000-X"> </script> <script> window.dataLayer = window.dataLayer ||
[]; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-000000-X'); </script>
<script> (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true; j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl; f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-00000'); </script>
instalação
<script> (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true; j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl; f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-00000'); </script>
instalação
relatórios built-in
tempo real
None
navegadores
None
sistemas operacionais
None
resoluções de tela
None
regiões
None
dispositivos
None
visualizações & eventos
visualização de página gtag('config', 'UA-000000-X')
gtag('config', 'UA-000000-X', { page_title: 'homepage', page_path: '/home', }) visualização de
página
gtag('config', 'UA-000000-X') gtag('config', 'UA-111111-Y', { page_title: 'homepage', page_path: '/home', })
visualização de página
gtag('event', 'play', { event_category: 'videos', event_label: 'video promocional', }) eventos
gtag('event', 'auto play', { event_category: 'videos', event_label: 'video promocional', non_interaction:
true, }) eventos
tem mais?
avaliando tempo
user timing
gtag('event', 'timing_complete', { name: 'load', value: performance.now(), event_category: 'JS Dependencies',
}) carregamento
gtag('event', 'timing_complete', { name: 'load', value: performance.now(), event_category: 'JS Dependencies',
}) carregamento
carregamento
None
None
export function getUserByID(id) { return axios .get(`/users/${id})}`) .then(response => response.data)
} http request
export function getUserByID(id) { return axios .get(`/users/${id})}`) .then(response => response.data)
} http request
axios.interceptors.request.use((config) => { config.startTime = Date.now() return config }, error
=> Promise.reject(error)) http request
client.interceptors.response.use((response) => { const successfulRequestTime = Date.now() - response.config.startTime return
response }, (error) => { const failedRequestTime = Date.now() - error.config.startTime return Promise.reject(error) }) http request
client.interceptors.response.use((response) => { const successfulRequestTime = Date.now() - response.config.startTime return
response }, (error) => { const failedRequestTime = Date.now() - error.config.startTime return Promise.reject(error) }) http request
gtag('event', 'timing_complete', { name: response.config.url, value: successfulRequestTime, event_category : 'api
request', event_label: 'success', }) http request
gtag('event', 'timing_complete', { name: error.config.url, value: failedRequestTime, event_category : 'api
request', event_label: 'fail', }) http request
request time
None
exceções & crashs
gtag('event', 'exception', { description: 'exception', fatal: false, }) coletando erros
window.addEventListener('error', (event) => { gtag('event', 'exception', { description: `${event.error.name}: ${event.error.message}`,
fatal: false, }) }) coletando erros
None
coletando erros
coletando erros
coletando erros
coletando erros
measurement protocol
http api
debug mode
consumindo dados
serviços google
extraindo via api
poderoso não é mesmo?
MUITO OBRIGADO!