FLYER Teado
Analytics & Tracking Admin
Mật khẩu nội bộ
teado2026
Internal only · không index
FLYER Teado
admin.teado.ai · analytics & tracking

7-Step B2B Funnel

Phễu chuyển đổi từ landing → mua account. Số liệu placeholder cho đến khi BigQuery export về data thật (~24h sau khi link GA4).

Last 30 days
Conversion funnel
Waiting for BigQuery data
End-to-end CVR
page_view → purchase
Signup CVR
page_view → sign_up
Activation rate
sign_up → qualified
ARPU
revenue / unique buyer
📝 Cách cập nhật số thật
  1. Chạy query trong file flyer-ga4-funnel.sql trên BigQuery Console
  2. Export CSV → upload vào folder Drive FLYER-GA4-Export
  3. Nhờ Claude cập nhật số vào array FUNNEL_DATA trong index.html
  4. Chạy ./deploy.sh để push lên admin.teado.ai

Event Taxonomy

Single source of truth cho dev — tên event, params, page nào fire. Mọi event mới phải thêm vào đây trước khi implement.

Install Status

Tracking pixel đã cài đến đâu trên từng surface. Cập nhật thủ công sau mỗi deploy.

IDs & Code Snippets

Copy-paste ready cho dev. Thay placeholder rồi paste thẳng vào codebase.

Tracking IDs (single source of truth)
GA4 Measurement ID
G-XXXXXXXXXX
⏳ Chờ anh paste vào
Meta Pixel ID
XXXXXXXXXXXXXXXX
⏳ Chờ anh paste vào
GA4 Property ID
XXXXXXXXX
Để query BigQuery dataset
Meta CAPI Access Token
●●●●●●●●●●● (secret)
Lưu ở env var server, không hardcode client

BigQuery Funnel Queries

9 query đã soạn sẵn cho phễu 7-step. Anh paste vào BigQuery Console, export CSV về Drive folder FLYER-GA4-Export.

flyer-ga4-funnel.sql
Local file: /Users/tungtony/Downloads/flyer-ga4-funnel.sql
Open BigQuery →

Ads Automation Setup

Checklist cấu hình conversion event ở Google Ads + Meta Ads Manager. Bỏ qua bước nào, ad sẽ không optimize được.

etc. fetch('snippets.json').then(r => r.json()).then(snippets => { let html = ''; snippets.forEach((s, i) => { const escaped = s.code.replace(/&/g, '&').replace(//g, '>'); html += '
' + '
' + '
' + s.title + '
' + '
' + s.desc + '
' + '' + '
' + '
' + escaped + '
' + '
'; }); document.getElementById('snippets').innerHTML = html; window._SNIPPETS = snippets; }).catch(err => { document.getElementById('snippets').innerHTML = '
Snippets file not loaded. Check snippets.json exists in same folder.
'; }); function copySnippet(i) { if (window._SNIPPETS && window._SNIPPETS[i]) { navigator.clipboard.writeText(window._SNIPPETS[i].code); if (event && event.target) { event.target.textContent = '✓ Copied'; setTimeout(() => { event.target.textContent = 'Copy'; }, 1500); } } }