Harika bir soru! Checkout sayfası, bir e-ticaret sitesinin en kritik noktasıdır ve burada yapılacak küçük bir hata bile doğrudan gelir kaybına yol açabilir. Doğru loglama stratejisi, sorunları proaktif olarak tespit etmenizi ve kullanıcı deneyimini iyileştirmenizi sağlar.

Checkout için log alanlarını, İşlem Süreci, Kullanıcı Bilgileri, Ürün Detayları, Ödeme Bilgileri ve Teknik Performans olmak üzere 5 ana başlık altında toplayabiliriz .


1. İşlem Süreci (Transaction Funnel) Logları

Checkout sürecinin hangi aşamasında olduğunu ve kullanıcının ilerleyip ilerlemediğini anlamak için bu loglar kritiktir.

Log Alanı Örnek Değer Açıklama
checkout_step cart_view, shipping_address, payment, order_review Kullanıcının checkout'un hangi adımında olduğu
checkout_step_completed true, false Adımın başarıyla tamamlanıp tamamlanmadığı
checkout_abandoned true, false Kullanıcının checkout'u terk edip etmediği
time_spent_on_step_ms 45000 (45 saniye) Her adımda geçirilen süre
abandoned_field email, address Terk edilen alan (inaktivite ile tespit edilir)

Kod Örneği: Adım Değişimi Loglama

// Checkout adımı değiştiğinde
function logCheckoutStep(step, status) {
  logger.info('Checkout adım değişimi', {
    checkout_step: step,
    step_completed: status,
    session_id: sessionId,
    user_id: userId,
    time_spent_ms: stepStartTime ? Date.now() - stepStartTime : null,
    page_path: window.location.pathname
  });

  // Metrik olarak da kaydet
  metrics.increment('checkout.step.completed', { 
    step: step, 
    status: status 
  });
}

2. Kullanıcı Bilgileri Logları

Kimin alışveriş yaptığını anlamak, hem kişiselleştirme hem de güvenlik açısından önemlidir.

Log Alanı Örnek Değer Açıklama
user_id 12345 Üye ise kullanıcı ID'si
is_guest true, false Misafir kullanıcı mı?
session_id sess_abc123 Oturum kimliği
email user@example.com E-posta adresi (hash'lenmiş olabilir)
account_creation_date 2025-01-15 Hesap oluşturma tarihi (fraud tespiti için)
ip_address 192.168.1.1 Kullanıcı IP adresi
user_agent Mozilla/5.0... Tarayıcı bilgisi

Önemli: KVKK/GDPR Uyumu

Kişisel verileri (email, adres vb.) loglarken mutlaka KVKK ve GDPR kurallarına uyun. Hassas verileri hash'leyerek veya maskeleyerek saklayın.

// Hassas verileri maskele
function maskEmail(email) {
  const [localPart, domain] = email.split('@');
  return `${localPart[0]}***@${domain}`;
}
// "ahmet@example.com" -> "a***@example.com"

3. Ürün ve Sepet Detayları Logları

Ne satın alındığı, stok sorunlarını ve envanter yönetimini anlamak için gereklidir.

Log Alanı Örnek Değer Açıklama
cart_id cart_789 Sepet kimliği
cart_items_count 3 Sepetteki ürün sayısı
cart_items[] Dizi Ürün detayları listesi
item.id prod_456 Ürün ID'si
item.name Akıllı Telefon Ürün adı
item.quantity 2 Ürün adedi
item.unit_price 999.99 Birim fiyat
item.sku SM-G998B Stok kodu
inventory_available true, false Stok durumu
inventory_check_time_ms 150 Stok kontrolü süresi

Kod Örneği: Sepet Loglama

function logCartContents(cart) {
  logger.debug('Sepet içeriği', {
    cart_id: cart.id,
    cart_total: cart.totalAmount,
    items_count: cart.items.length,
    items: cart.items.map(item => ({
      product_id: item.productId,
      quantity: item.quantity,
      price: item.price,
      category: item.category,
      // Hassas olmayan bilgiler
    })),
    // Stok kontrolü sonuçları
    inventory_status: cart.items.map(item => ({
      sku: item.sku,
      available: item.inStock,
      check_duration_ms: item.stockCheckDuration
    }))
  });

  // Stok hatası varsa hemen alert
  if (cart.items.some(item => !item.inStock)) {
    alertService.send('Stok hatası tespit edildi', cart);
  }
}

4. Ödeme ve Fatura Bilgileri Logları

En hassas alan burasıdır. Kredi kartı numarası, CVV gibi bilgileri ASLA loglamayın! PCI-DSS uyumluluğu için ödeme bilgileri maskelenmelidir.

Log Alanı Örnek Değer Açıklama
payment_method credit_card, paypal, bank_transfer Ödeme yöntemi
payment_provider iyzico, paytr, stripe Ödeme sağlayıcı
payment_status pending, success, failed Ödeme durumu
payment_error_code insufficient_funds, card_declined Hata kodu (varsa)
authorization_code AUTH123 Yetkilendirme kodu (maskeli)
bin_number 555555 Kartın ilk 6 hanesi (sadece BIN)
last_four_digits 4444 Kartın son 4 hanesi
avs_result Y, N Adres doğrulama sonucu
cvv_result M, N CVV doğrulama sonucu
3ds_status authenticated, failed 3D Secure durumu
billing_address Maske lenmiş adres Fatura adresi
tax_amount 18.50 Vergi tutarı
shipping_cost 15.90 Kargo ücreti

Kod Örneği: Güvenli Ödeme Loglama

// ASLA YAPMAYIN - Bu şekilde loglamayın!
logger.info('Ödeme bilgileri', {
  card_number: '5555 5555 5555 4444', // ASLA!
  cvv: '123', // ASLA!
});

// DOĞRU KULLANIM - Maskelenmiş ve güvenli
logger.info('Ödeme işlemi', {
  payment_method: 'credit_card',
  provider: 'stripe',
  status: 'success',
  bin: '555555', // Sadece BIN (ilk 6 hane) - PCI uyumlu
  last_four: '4444', // Sadece son 4 hane - PCI uyumlu
  auth_code: 'AUTH_' + mask(authCode),
  avs_result: 'Y',
  cvv_result: 'M',
  transaction_time_ms: 2340,
  // Hassas bilgi yok!
});

5. Teslimat Bilgileri Logları

Ürünün nereye gideceği, lojistik ve kullanıcı deneyimi için önemlidir.

Log Alanı Örnek Değer Açıklama
shipping_method ground, express, same_day Kargo yöntemi
shipping_address Maskelenmiş adres Teslimat adresi
shipping_city İstanbul İl (analiz için)
shipping_district Kadıköy İlçe (analiz için)
shipping_phone +90*** *** ** ** Maskelenmiş telefon
shipping_email Maskelenmiş email Dijital teslimatlar için
delivery_type physical, digital, pickup Teslimat tipi
pickup_location Mağaza-İstinyePark Mağazadan teslim alınacaksa

6. Teknik Performans ve Hata Logları

Sistemin sağlığını ve performansını izlemek için teknik metrikler.

Log Alanı Örnek Değer Açıklama
total_time_ms 3450 Checkout'un toplam tamamlanma süresi
payment_time_ms 1230 Ödeme işleminin süresi
shipping_calculation_time_ms 450 Kargo hesaplama süresi
tax_calculation_time_ms 120 Vergi hesaplama süresi
error_type validation, timeout, service_unavailable Hata tipi
error_message Payment gateway timeout Hata mesajı (hassas değilse)
retry_count 2 Yeniden deneme sayısı
third_party_service tax_cloud, shipping_api Kullanılan 3. parti servis
service_response_time_ms 890 3. parti servis yanıt süresi

7. Pazarlama ve Kampanya Logları

Hangi kanalın dönüştüğünü anlamak için UTM parametreleri.

Log Alanı Örnek Değer Açıklama
utm_source google Trafik kaynağı
utm_medium cpc Pazarlama kanalı
utm_campaign yeni_yil_indirimi Kampanya adı
utm_content banner_1 İçerik detayı
utm_term akilli+telefon Arama kelimesi
first_touch_utm Obje İlk tıklamadaki UTM'ler
last_touch_utm Obje Son tıklamadaki UTM'ler
referrer_domain google.com Yönlendiren site
landing_page /urun/akilli-telefon Açılış sayfası
coupon_code INDIRIM20 Kupon kodu (maskelenebilir)
discount_amount 50.00 İndirim tutarı

Standart Checkout Log Formatı Örneği (JSON)

Tüm bu alanları birleştiren örnek bir log:

{
  "timestamp": "2026-02-28T14:30:45.123Z",
  "level": "INFO",
  "service": "checkout-service",
  "trace_id": "trace_xyz789",

  "checkout": {
    "order_id": "ORD-2026-001234",
    "checkout_step": "payment",
    "step_completed": true,
    "time_spent_step_ms": 23500,
    "abandoned": false
  },

  "user": {
    "user_id": "user_45678",
    "is_guest": false,
    "session_id": "sess_abc123",
    "email": "a***@example.com",
    "ip_address": "192.168.1.1",
    "user_agent": "Mozilla/5.0..."
  },

  "cart": {
    "cart_id": "cart_789",
    "items_count": 2,
    "total_amount": 1250.00,
    "currency": "TRY",
    "items": [
      {
        "product_id": "prod_111",
        "quantity": 1,
        "unit_price": 999.99,
        "category": "electronics"
      },
      {
        "product_id": "prod_222",
        "quantity": 1,
        "unit_price": 250.01,
        "category": "accessories"
      }
    ]
  },

  "payment": {
    "method": "credit_card",
    "provider": "stripe",
    "status": "success",
    "bin": "555555",
    "last_four": "4444",
    "auth_code": "AUTH_xxx",
    "avs_result": "Y",
    "cvv_result": "M",
    "transaction_time_ms": 1850
  },

  "shipping": {
    "method": "express",
    "city": "İstanbul",
    "district": "Kadıköy",
    "cost": 29.90,
    "type": "physical"
  },

  "marketing": {
    "utm_source": "google",
    "utm_medium": "cpc",
    "utm_campaign": "yeni_yil",
    "referrer_domain": "google.com",
    "landing_page": "/products/phone",
    "coupon_code": "YENIYIL20",
    "discount_amount": 250.00
  },

  "performance": {
    "total_time_ms": 3450,
    "shipping_calculation_ms": 450,
    "tax_calculation_ms": 120,
    "inventory_check_ms": 230
  }
}

Özet: Checkout Log Kontrol Listesi

  • [ ] Her adımı logla: Kullanıcı nerede, ne kadar kaldı, nerede terk etti?
  • [ ] Sepet içeriğini kaydet: Ne alınıyor, kaç adet, ne kadara?
  • [ ] Kullanıcı tipini belirle: Üye mi, misafir mi?
  • [ ] Ödeme durumunu logla: Başarılı, başarısız, beklemede?
  • [ ] Kart bilgilerini MASKELE: Sadece BIN + son 4 hane!
  • [ ] Hata kodlarını yakala: Hangi servis, hangi hata?
  • [ ] Performans metriklerini ekle: Her işlem ne kadar sürdü?
  • [ ] UTM parametrelerini koru: Hangi kanaldan geldi?
  • [ ] Trace ID ekle: Hata durumunda uçtan uca takip için
  • [ ] Alert kur: Ödeme hatası, stok hatası gibi kritik durumlarda anında bildirim

Unutmayın: Checkout logları sadece hata ayıklama için değil, aynı zamanda dönüşüm optimizasyonu (CRO) için de en değerli veri kaynağınızdır. Doğru loglarla, kullanıcıların neden terk ettiğini anlar ve süreci iyileştirebilirsiniz .