Analytics API Dökümantasyonu
Node.js, PostgreSQL, ClickHouse ve Redis mimarili; Kurumsal Analitik, Çoklu Metrik ve Müşteri Profil Servisi.
Genel Bakış
Bu sistem, yüksek trafikli web sitelerinden analitik verilerini toplamak, Redis kuyruğu üzerinde performanslı şekilde biriktirmek ve asenkron batch olarak ClickHouse veritabanına aktarmak üzere tasarlanmıştır.
Mimari Bileşenler
- Node.js (Express): Modüler yapılı API katmanı, Çoklu Metrik Paralel İşleme & Rate Limiter.
- PostgreSQL: Domain kayıtları ve ilişkisel veriler.
- ClickHouse: Yüksek hacimli analitik olay logları (Parameterized queries, TTL & Partitioning).
- Redis: Gelen verileri kuyrukta (LPOP/RPUSH) tutarak batch işleme ve canlı (realtime) takip alanı.
Kurulum & .env Ayarları
Portlar ve veritabanı bağlantı bilgileri .env dosyası üzerinden dinamik olarak değiştirilebilir.
PORT=5400
NODE_ENV=production
ADMIN_API_KEY=a8f9d7c6b5e4f3a210987654321abcdef
Tracker.js Entegrasyonu
Analiz edilmek istenen sitelerin <head> veya <body> etiketleri arasına aşağıdaki betik eklenmelidir:
<script
src="http://SUNUCU_IP:5400/tracker.js"
data-tracker-id="YOUR_DOMAIN_UUID">
</script>
SDK Yardımcı Metotları
// Müşteri Kimlik Tanımlama (Identify)
window.analyticsTracker.identify('user_98412');
// Müşteri Çıkış Yapma
window.analyticsTracker.logout();
// Site İçi Arama Takibi
window.analyticsTracker.trackSearch('kablosuz kulaklık', 14);
// API Yanıt Süresi Takibi
window.analyticsTracker.trackApiLatency('/api/v1/orders', 120, 200);
// E-Ticaret Gelir Gönderimi
window.analyticsTracker.trackRevenue(499.90);
Sayfalamalı Domain Listesi (Laravel Paginate) GET
Sistemdeki tüm kayıtlı domainleri Laravel tarzı sayfalanmış (paginated) JSON yapısında listeler. Arama (`search`), sayfa no (`page`) ve sayfa başına adet (`per_page`) parametrelerini destekler.
GET /api/domains?page=1&per_page=15&search=example (Header: x-api-key: YOUR_ADMIN_KEY)
{
"current_page": 1,
"data": [
{
"id": "e4b9d031-6b21-4f9e-9d22-123456789abc",
"domain_name": "example.com",
"enabled_metrics": ["*"],
"created_at": "2026-08-30T18:12:00.000Z"
}
],
"first_page_url": "http://localhost:5400/api/domains?page=1&per_page=15",
"from": 1,
"last_page": 1,
"last_page_url": "http://localhost:5400/api/domains?page=1&per_page=15",
"next_page_url": null,
"path": "http://localhost:5400/api/domains",
"per_page": 15,
"prev_page_url": null,
"to": 1,
"total": 1
}
Domain Ekleme POST
Yeni bir domain ve opsiyonel domain bazlı izin verilen metrikler (Feature Toggles) tanımlar.
POST /api/domains (Header: x-api-key: YOUR_ADMIN_KEY)
// Tüm metrikler aktif varsayılan domain ekleme:
{ "domain_name": "example.com" }
// Sadece belirli metriklerin takip edildiği kısıtlı domain ekleme:
{
"domain_name": "blogsite.com",
"enabled_metrics": ["overview", "paths", "referrers", "device_types", "realtime"]
}
Domain Metriklerini Güncelleme PUT
Bir domain'in izin verilen aktif metrik listesini günceller.
PUT /api/domains/:id (Header: x-api-key: YOUR_ADMIN_KEY)
{
"enabled_metrics": ["overview", "paths", "customer_lifetime_value", "top_js_errors"]
}
Domain Silme DELETE
DELETE /api/domains/:id (Header: x-api-key: YOUR_ADMIN_KEY)
Domain Veri Yeniden Atama & Otomatik Düzeltme POST
Karışmış veya yanlış domain ID'si ile kaydedilmiş geçmiş analitik olay verilerini düzeltir ve istenen domain ID'sine aktarır.
POST /api/domains/reassign-events (Header: x-api-key: YOUR_ADMIN_KEY)
// Otomatik karışan domain verisi düzeltme:
{ "run_auto_fix": true }
// Özel domain transferi:
{
"from_domain_id": "1127721e-abe7-4ec8-abe0-76021980b859",
"to_domain_id": "186d7202-3c70-40a6-a886-d67748b89ffe",
"condition": "path LIKE '%urun-mx%' OR referrer LIKE '%mobixsys.com%'"
}
Domain Geçmiş Analitik Verisi Temizleme (Purge) POST
Domain tanımını ve PostgreSQL kaydını silmeden, istenen domain'e ait geçmiş analitik log verilerini (ClickHouse events) tamamen veya belirli tarih aralığında siler.
POST /api/domains/clear-events veya POST /api/domains/:id/clear-events (Header: x-api-key: YOUR_ADMIN_KEY)
// 1. Tüm geçmişi temizleme (Tüm zamanlar):
{ "domain_id": "186d7202-3c70-40a6-a886-d67748b89ffe" }
// 2. Belirli tarih aralığındaki verileri temizleme:
{
"domain_id": "186d7202-3c70-40a6-a886-d67748b89ffe",
"start_date": "2026-08-01 00:00:00",
"end_date": "2026-08-15 23:59:59"
}
Veri Gönderimi (Track) POST
POST /api/track (Automated by tracker.js)
İstatistik Çekme (Stats) GET
Tarih aralığı ve istenen metrik parametreleri ile analitik verilerini sorgular.
GET /api/stats (Header: x-api-key: YOUR_ADMIN_KEY)
Query Parametreleri
| Parametre | Zorunlu mu? | Açıklama |
|---|---|---|
domain_id |
Evet | Sorgulanacak domain UUID bilgisi. |
start_date |
Evet | Başlangıç tarihi (Örn: 2026-08-01 00:00:00) |
end_date |
Evet | Bitiş tarihi (Örn: 2026-08-31 23:59:59) |
metric |
Evet | İstenen istatistik boyutu (Tekli veya çoklu virgülle: overview,paths). |
user_type |
Hayır | Kullanıcı segmentasyonu filtresi (logged_in | guest | all). |
user_id |
Hayır | Belirli bir müşteriye özel filtreleme (Örn: user_98412). |
country_code |
Hayır | Sadece metric=cities olduğunda belirli bir ülkeye filtrelemek için verilir (Örn: TR). |
Çoklu Metrik Sorgulama (Multi-Metric Batching)
Dashboard panellerinde tek bir HTTP isteği ile birden fazla metriği paralel çekmek için metrik isimlerini virgülle ayırarak gönderebilirsiniz:
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=overview,paths,device_types,referrers
Kod Örnekleri (cURL / Fetch / Axios / Laravel HTTP)
API endpoint'lerini projelerinize kolayca entegre edebilmeniz için hazır kod örnekleri:
1. cURL İstek Örneği
curl -X GET "http://localhost:5400/api/stats?domain_id=a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11&start_date=2026-08-01%2000:00:00&end_date=2026-08-31%2023:59:59&metric=overview,paths,device_types&user_type=logged_in" \
-H "x-api-key: a8f9d7c6b5e4f3a210987654321abcdef"
2. JavaScript (Fetch API) Örneği
const response = await fetch(
'http://localhost:5400/api/stats?domain_id=a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=overview,paths,device_types&user_type=logged_in',
{
method: 'GET',
headers: {
'x-api-key': 'a8f9d7c6b5e4f3a210987654321abcdef'
}
}
);
const result = await response.json();
console.log(result.data);
3. Axios (Node.js / Vue / React) Örneği
const axios = require('axios');
const response = await axios.get('http://localhost:5400/api/stats', {
params: {
domain_id: 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11',
start_date: '2026-08-01 00:00:00',
end_date: '2026-08-31 23:59:59',
metric: 'overview,paths,device_types',
user_type: 'logged_in' // Opsiyonel: logged_in | guest
},
headers: {
'x-api-key': 'a8f9d7c6b5e4f3a210987654321abcdef'
}
});
console.log(response.data);
4. Laravel HTTP Client (PHP) Örneği
use Illuminate\Support\Facades\Http;
$response = Http::withHeaders([
'x-api-key' => 'a8f9d7c6b5e4f3a210987654321abcdef',
])->get('http://localhost:5400/api/stats', [
'domain_id' => 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11',
'start_date' => '2026-08-01 00:00:00',
'end_date' => '2026-08-31 23:59:59',
'metric' => 'overview,paths,device_types',
'user_type' => 'logged_in', // Opsiyonel
]);
$stats = $response->json();
print_r($stats);
Dönüşüm Hunisi (Funnel) POST
POST /api/stats/funnel
{
"domain_id": "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11",
"start_date": "2026-08-01 00:00:00",
"end_date": "2026-08-31 23:59:59",
"steps": ["/", "/urunler", "/sepet", "/odeme_basarili"]
}
Unutulma Hakkı (KVKK / GDPR) POST
POST /api/stats/forget-visitor
{
"domain_id": "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11",
"visitor_id": "v_abc123xyz"
}
Giriş Yapmış Müşteri vs Misafir Kullanıcı Analizi
Tüm metrikleri user_type=logged_in veya user_type=guest parametresi ile filtreleyebilirsiniz.
metric=user_status_breakdown GET
Giriş yapmış müşteriler ile misafir kullanıcıların sayısal ve yüzdesel dağılımı.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=user_status_breakdown
Yanıt Örneği
{ "data": [ { "dimension": "Guest Users", "value": 6840 }, { "dimension": "Logged-in Users", "value": 3120 } ] }
metric=top_logged_in_users GET
En çok etkileşimde bulunan kayıtlı müşterilerin sıralı listesi.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=top_logged_in_users
Yanıt Örneği
{ "data": [ { "dimension": "user_98412", "value": 142, "total_revenue": 1250.5, "last_seen": "2026-08-30 16:45:10" } ] }
metric=user_profile GET
Bir müşterinin (`user_98412`) üzerine tıklandığında onun tüm oturum, harcama, cihaz ve son hareket geçmişini getirir. user_id zorunludur.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=user_profile&user_id=user_98412
Yanıt Örneği
{ "data": [ { "summary": { "user_id": "user_98412", "total_events": 142, "total_spent": 1250.5 }, "recent_activities": [...] } ] }
metric=visitor_profile GET
Giriş yapmamış herhangi bir misafirin (`visitor_id=v_3k9x0a1b2c3...`) tüm oturum, IP, şehir, ülke, cihaz ve sayfa gezinti geçmişini kronolojik zaman çizelgesiyle getirir. visitor_id zorunludur.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=visitor_profile&visitor_id=v_3k9x0a1b2c3
Yanıt Örneği
{
"data": [
{
"summary": {
"profile_id": "v_3k9x0a1b2c3",
"total_events": 14,
"total_sessions": 3,
"first_seen": "2026-08-15 14:02:10",
"last_seen": "2026-08-30 21:40:05",
"last_device": "Desktop",
"last_browser": "Chrome",
"last_country": "TR",
"last_city": "Istanbul",
"last_ip": "176.240.x.x"
},
"recent_activities": [
{ "event_name": "pageview", "path": "/urun-mx-mini", "prev_path": "/", "active_duration": 120, "city": "Istanbul", "created_at": "2026-08-30 21:40:05" }
]
}
]
}
metric=customer_lifetime_value GET
Kayıtlı müşterilerin kaydoldukları andan itibaren ürettikleri toplam LTV cirosu ve sipariş adetleri.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=customer_lifetime_value
Yanıt Örneği
{ "data": [ { "dimension": "user_98412", "value": 2450.0, "total_orders": 8, "customer_since": "2026-01-10 12:00:00" } ] }
metric=cart_abandonment_rate GET
Sepete ekleme olayları ile satın almayı tamamlayanların oranından sepet terk yüzdesini hesaplar.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=cart_abandonment_rate
Yanıt Örneği
{ "data": [ { "total_cart_additions": 1200, "total_checkouts": 450, "cart_abandonment_rate": 62.5 } ] }
metric=top_revenue_paths GET
En çok satış cirosu üreten sayfa/ürün yolları.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=top_revenue_paths
Yanıt Örneği
{ "data": [ { "dimension": "/urunler/laptop-pro", "value": 15800.0 } ] }
metric=revenue_overview GET
Toplam ciro, sipariş sayısı ve Ortalama Sepet Tutarı (AOV).
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=revenue_overview
Yanıt Örneği
{ "data": [ { "total_revenue": 45280.5, "total_orders": 182, "avg_order_value": 248.79 } ] }
metric=retention_cohorts GET
Haftalık kullanıcı sadakat ve geri gelme (Retention Cohort) analizi.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=retention_cohorts
Yanıt Örneği
{ "data": [ { "cohort_week": "2026-08-03 00:00:00", "initial_visitors": 450, "week_0": 450, "week_1": 180, "week_2": 95 } ] }
metric=active_time_on_page GET
Kullanıcının sayfada gerçek etkileşimde bulunduğu (fare/scroll/tuş) **odaklanma süresi (Focus Time)**.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=active_time_on_page
Yanıt Örneği
{ "data": [ { "dimension": "/blog/rehber", "value": 84.5 } ] }
metric=bounce_by_source GET
Pazarlama kanallarına veya referrer kaynaklarına göre hemen çıkma oranları.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=bounce_by_source
Yanıt Örneği
{ "data": [ { "dimension": "google_cpc", "value": 28.5 }, { "dimension": "instagram", "value": 54.2 } ] }
metric=read_completion_rate GET
Blog ve makale sayfalarında kullanıcıların içeriği %100 okuma tamamlanma yüzdesi.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=read_completion_rate
Yanıt Örneği
{ "data": [ { "dimension": "/blog/yaz-indirimleri", "value": 78.4 } ] }
metric=site_search_keywords GET
Sitenin arama kutusuna en çok yazılan kelimelerin sıralaması.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=site_search_keywords
Yanıt Örneği
{ "data": [ { "dimension": "kablosuz kulaklık", "value": 412 }, { "dimension": "akıllı saat", "value": 290 } ] }
metric=zero_result_searches GET
Aranıp da sitede 0 sonuç bulunan arama kelimelerinin listesi.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=zero_result_searches
Yanıt Örneği
{ "data": [ { "dimension": "oyuncu kulaklığı x1", "value": 84 } ] }
metric=next_page_after GET
Kullanıcıların bir önceki sayfadan sonra en çok tıkladığı devam sayfaları.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=next_page_after
Yanıt Örneği
{ "data": [ { "dimension": "/sepet", "value": 1420 }, { "dimension": "/odeme", "value": 850 } ] }
metric=user_flows GET
Ziyaretçilerin en çok tercih ettiği 2-3 adımlı sayfa geçiş rotaları (Akış Ağacı).
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=user_flows
Yanıt Örneği
{ "data": [ { "dimension": "/ -> /urunler -> /sepet", "value": 3120 } ] }
metric=outbound_links GET
Harici siteye tıklama sayıları.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=outbound_links
Yanıt Örneği
{ "data": [ { "dimension": "https://wa.me/905551234567", "value": 840 } ] }
metric=file_downloads GET
İndirilen dosya (.pdf, .zip vb.) tıklamaları.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=file_downloads
Yanıt Örneği
{ "data": [ { "dimension": "/katalog-2026.pdf", "value": 412 } ] }
metric=scroll_depths GET
Sayfa kaydırma derinlikleri (%25, %50, %75, %100).
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=scroll_depths
Yanıt Örneği
{ "data": [ { "dimension": "50% Scroll", "value": 3100 } ] }
metric=top_js_errors GET
Frontend JavaScript hata istisnaları.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=top_js_errors
Yanıt Örneği
{ "data": [ { "dimension": "Uncaught TypeError: Cannot read property 'id' of undefined", "value": 142 } ] }
metric=rage_clicks GET
Öfke tıklamaları yapılan sayfaların listesi.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=rage_clicks
Yanıt Örneği
{ "data": [ { "dimension": "/odeme", "value": 89 } ] }
metric=form_dropoffs GET
Terk edilen form kimlikleri.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=form_dropoffs
Yanıt Örneği
{ "data": [ { "dimension": "checkout_form", "value": 240 } ] }
metric=error_pages_404 GET
Kırık / 404 sayfalarının listesi.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=error_pages_404
Yanıt Örneği
{ "data": [ { "dimension": "/eski-sayfa", "value": 213 } ] }
metric=api_latency_breakdown GET
Frontend API uç noktalarının yanıt süreleri (ms) ve HTTP 5xx hataları.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=api_latency_breakdown
Yanıt Örneği
{ "data": [ { "dimension": "/api/v1/orders", "value": 240, "error_count": 3 } ] }
metric=slowest_pages GET
En yavaş açılan ilk 50 sayfa.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=slowest_pages
Yanıt Örneği
{ "data": [ { "dimension": "/raporlar/detay", "value": 4120 } ] }
metric=avg_load_times GET
Sayfa bazında ortalama yüklenme süresi.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=avg_load_times
Yanıt Örneği
{ "data": [ { "dimension": "/urunler", "value": 1240 } ] }
metric=core_web_vitals GET
LCP, FID, CLS, INP ve TTFB metrik ortalamaları.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=core_web_vitals
Yanıt Örneği
{ "data": [ { "avg_lcp_sec": 1.45, "avg_fid_ms": 12, "avg_cls_score": 0.015, "avg_inp_ms": 42, "avg_ttfb_ms": 110 } ] }
metric=period_comparison GET
Seçilen dönemin önceki eşit dönemle % karşılaştırması.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=period_comparison
Yanıt Örneği
{ "data": [ { "current": { "total_pageviews": 15420 }, "previous": { "total_pageviews": 12100 }, "change_percentage": { "total_pageviews": 27.44 } } ] }
metric=paths GET
En çok gezilen sayfalar.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=paths
Yanıt Örneği
{ "data": [ { "dimension": "/urunler/laptop", "value": 3410 }, { "dimension": "/", "value": 2890 } ] }
metric=referrers GET
Ziyaretçilerin geldiği kaynaklar.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=referrers
Yanıt Örneği
{ "data": [ { "dimension": "https://google.com", "value": 5210 } ] }
metric=entry_pages GET
Giriş sayfaları.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=entry_pages
Yanıt Örneği
{ "data": [ { "dimension": "/", "value": 4100 } ] }
metric=exit_pages GET
Çıkış sayfaları.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=exit_pages
Yanıt Örneği
{ "data": [ { "dimension": "/odeme_basarili", "value": 950 } ] }
metric=goals GET
Özel etkinlikler.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=goals
Yanıt Örneği
{ "data": [ { "dimension": "form_gonderildi", "value": 312 } ] }
metric=realtime GET
Canlı online ziyaretçi sayısı.
GET /api/stats?domain_id=UUID&metric=realtime
Yanıt Örneği
{ "data": [ { "dimension": "online_users", "value": 47 } ] }
metric=daily_trends (Günlük Trend / Grafikler İçin) GET
Belirtilen tarih aralığında verileri gün bazında gruplayarak sayfa gösterimi, ziyaretçi, oturum, hemen çıkma oranı ve ortalama oturum süresini dizi halinde döner. Grafik (Chart) çizimleri için idealdir. (Takma adlar: daily_overview, daily_breakdown)
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=daily_trends
Yanıt Örneği
{
"data": [
{
"date": "2026-08-23",
"formatted_date": "23 Aug",
"pageviews": 152,
"visitors": 60,
"sessions": 45,
"total_pageviews": 152,
"total_visitors": 60,
"total_sessions": 45,
"bounce_rate": 25.4,
"avg_session_duration": 48.2
},
{
"date": "2026-08-24",
"formatted_date": "24 Aug",
"pageviews": 62,
"visitors": 31,
"sessions": 28,
"total_pageviews": 62,
"total_visitors": 31,
"total_sessions": 28,
"bounce_rate": 30.1,
"avg_session_duration": 35.0
}
]
}
metric=hourly_breakdown GET
Günün saatlerine göre dağılım.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=hourly_breakdown
Yanıt Örneği
{ "data": [ { "dimension": "14:00", "value": 1840 } ] }
metric=day_of_week GET
Haftanın günlerine göre dağılım.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=day_of_week
Yanıt Örneği
{ "data": [ { "dimension": "Pazartesi", "value": 3200 } ] }
metric=utms GET
UTM Kaynakları (utm_source).
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=utms
Yanıt Örneği
{ "data": [ { "dimension": "google", "value": 4100 } ] }
metric=utm_mediums GET
UTM Mecraları (utm_medium).
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=utm_mediums
Yanıt Örneği
{ "data": [ { "dimension": "cpc", "value": 2800 } ] }
metric=utm_campaigns GET
UTM Kampanyaları (utm_campaign).
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=utm_campaigns
Yanıt Örneği
{ "data": [ { "dimension": "yaz_indirimleri", "value": 1540 } ] }
metric=utm_terms GET
UTM Kelimeleri (utm_term).
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=utm_terms
Yanıt Örneği
{ "data": [ { "dimension": "ucuz_laptop", "value": 420 } ] }
metric=utm_contents GET
UTM İçerikleri (utm_content).
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=utm_contents
Yanıt Örneği
{ "data": [ { "dimension": "banner_top", "value": 310 } ] }
metric=device_types GET
Desktop, Mobile, Tablet dağılımı.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=device_types
Yanıt Örneği
{ "data": [ { "dimension": "Desktop", "value": 6200 }, { "dimension": "Mobile", "value": 5100 } ] }
metric=screen_resolutions GET
Ekran çözünürlükleri.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=screen_resolutions
Yanıt Örneği
{ "data": [ { "dimension": "1920x1080", "value": 3200 } ] }
metric=screen_types GET
Ekran türü dağılımı.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=screen_types
Yanıt Örneği
{ "data": [ { "dimension": "Desktop Screen", "value": 6200 } ] }
metric=browser_names GET
Tarayıcı isimleri.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=browser_names
Yanıt Örneği
{ "data": [ { "dimension": "Chrome", "value": 7100 } ] }
metric=browser_versions GET
Tarayıcı sürümleri.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=browser_versions
Yanıt Örneği
{ "data": [ { "dimension": "Chrome 128.0", "value": 5400 } ] }
metric=browser_languages GET
Tarayıcı dilleri.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=browser_languages
Yanıt Örneği
{ "data": [ { "dimension": "tr-TR", "value": 5800 } ] }
metric=browser_timezones GET
Saat dilimleri.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=browser_timezones
Yanıt Örneği
{ "data": [ { "dimension": "Europe/Istanbul", "value": 4900 } ] }
metric=operating_systems GET
İşletim sistemleri.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=operating_systems
Yanıt Örneği
{ "data": [ { "dimension": "Windows", "value": 5400 }, { "dimension": "Android", "value": 3100 } ] }
metric=os_versions GET
İşletim sistemi sürümleri.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=os_versions
Yanıt Örneği
{ "data": [ { "dimension": "Windows 10.0", "value": 4200 } ] }
metric=themes GET
Dark / Light tema tercihi.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=themes
Yanıt Örneği
{ "data": [ { "dimension": "dark", "value": 6200 }, { "dimension": "light", "value": 4800 } ] }
metric=network_connection_types GET
İnternet bağlantı hız dağılımı (4G, 5G, Wi-Fi).
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=network_connection_types
Yanıt Örneği
{ "data": [ { "dimension": "4g", "value": 6120 }, { "dimension": "wifi", "value": 3410 } ] }
metric=continents GET
Kıta dağılımı.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=continents
Yanıt Örneği
{ "data": [ { "dimension": "Europe", "value": 7800 } ] }
metric=countries GET
Ülke dağılımı.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=countries
Yanıt Örneği
{ "data": [ { "dimension": "TR", "value": 4820 } ] }
metric=cities GET
Şehir dağılımı (country_code filtreli).
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=cities&country_code=TR
Yanıt Örneği
{ "data": [ { "dimension": "Istanbul", "value": 1420 } ] }
metric=visitor_types GET
Yeni vs Geri dönen ziyaretçi dağılımı.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=visitor_types
Yanıt Örneği
{ "data": [ { "dimension": "New Visitor", "value": 3140 }, { "dimension": "Returning Visitor", "value": 1680 } ] }
metric=pages_per_session GET
Oturum başına sayfa derinliği.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=pages_per_session
Yanıt Örneği
{ "data": [ { "dimension": "1 Page", "value": 2800 }, { "dimension": "2-3 Pages", "value": 1900 } ] }
metric=visit_durations GET
Oturum süre aralıkları.
GET /api/stats?domain_id=UUID&start_date=2026-08-01 00:00:00&end_date=2026-08-31 23:59:59&metric=visit_durations
Yanıt Örneği
{ "data": [ { "dimension": "1-3 min", "value": 2100 } ] }
Backend SDK'lar (Node.js & Python)
Sunucu taraflı (Server-Side) etkinlik takibi, arka plan işleri (cron), ödeme/sipariş olayları veya API webhook'ları için hazırlanan hafif kütüphaneleri kullanabilirsiniz.
1. Node.js SDK (sdk/node)
Node.js projelerinizde sıfır dış bağımlılık (dahili http/https modülleri) ile çalışır.
const AnalyticsClient = require('./sdk/node');
// Client Başlatma
const analytics = new AnalyticsClient({
domainId: 'YOUR_DOMAIN_UUID',
endpoint: 'http://localhost:5400/api/track' // Opsiyonel (Varsayılan: localhost:5400)
});
// Etkinlik Gönderimi (Async/Await)
async function trackServerEvent() {
try {
await analytics.track('order_completed', {
path: '/checkout/success',
user_id: 'usr_8921',
visitor_id: 'v_8921',
utm_source: 'google',
utm_campaign: 'yaz_indirimi'
});
console.log('Sunucu etkinliği başarıyla gönderildi.');
} catch (error) {
console.error('Etkinlik gönderilemedi:', error.message);
}
}
2. Python SDK (sdk/python)
Django, Flask, Fast-API veya Python scriptlerinizde harici paket yüklemeden (dahili urllib) kullanabilirsiniz.
from sdk.python.analytics import AnalyticsClient
# Client Başlatma
analytics = AnalyticsClient(
domain_id="YOUR_DOMAIN_UUID",
endpoint="http://localhost:5400/api/track" # Opsiyonel
)
# Etkinlik Gönderimi
success = analytics.track("payment_failed", {
"path": "/api/payment/process",
"user_id": "usr_4431",
"operating_system": "Linux",
"device_type": "Server",
"utm_source": "newsletter"
})
if success:
print("Python SDK ile etkinlik kaydı oluşturuldu.")
Desteklenen Tüm Metrikler Grid (Tüm Değerler)
metric parametresi için kullanabileceğiniz 58 metrik değerinin tüm listesi: