customer.redact✓ Canlıkritik

Tenant bir müşteriyi sildiğinde gönderilir — o customerId'ye ait tüm PII'yi (isim, telefon, adres, e-posta, notlar) kendi tarafında SİLMELİSİN (Shopify customers/redact paritesi; marketplace sözleşmesinin parçası). PII scope'u onaylı + tenant consent vermiş TÜM kurulumlara gelir — eklenti o tenant'ta devre dışı/borçlu olsa bile (veriyi tutuyorsan sinyali alırsın). Uninstall edilmişsen gelmez (app.uninstalled zaten tüm tenant verisini silme sinyaliydi). Critical sınıf: breaker/cap'ten muaf, 6 denemeli retry.

← Lifecycle Webhook'ları

Ne zaman & ne yaparsın

Ne zamanTenant bir müşteriyi sildi (GDPR/KVKK)
GeliştiriciBu customerId'ye ait TÜM PII'yi sil (zorunlu)
Abonelik / gatingYok — bağlı (connected) her kuruluma her zaman gelir

Envelope (tüm lifecycle/event'lerde ortak)

AlanTipZorunluAçıklama
idstring✓Idempotency anahtarı. Aynı id tekrar gelebilir (retry) → dedup et.
typestring✓"customer.redact" — event mi lifecycle mı olduğunu bununla ayırt et.
versionstring✓Envelope şema versiyonu ("1").
environment"sandbox" | "production"✓Teslimin ortamı (test/dev mağazası = "sandbox") — imzalı gövdede. Header kopyası imzasızdır; gövdedekini kullan.
tenantIdstring✓Hangi tenant (kurulum). İşlemini buna göre yap; cross-tenant doğrula.
occurredAtnumber✓Oluşma zamanı (unix ms).
dataobject✓Tipe özel gövde (aşağıda).

data alanları

AlanTipZorunluAçıklama
customerIdstring✓Silinen müşterinin id'si. Kendi tarafında bu id ile eşleşen tüm PII kaydını sil.
deletedAtnumber✓Silme zamanı (epoch ms).

Tam örnek payload

Örnek webhook gövdesi (data alanı teyitli — webhook.site)
{
  "id": "evt_9f2a7c1b",
  "type": "customer.redact",
  "version": "1",
  "tenantId": "tnt_123",
  "occurredAt": 1780000000000,
  "data": {
    "customerId": "cust-123",
    "deletedAt": 1781200000000
  }
}

En iyi pratik

  • ZORUNLU — bu customerId'ye ait tüm PII'yi gerçekten sil (isim/telefon/adres/e-posta/not). Teslim logu denetim izidir.
  • İdempotent işle: aynı customerId birden çok kez gelebilir → envelope id ile dedup, silme tekrarı no-op.
  • Eklenti o tenant'ta pasif/borçlu olsa bile gelir — veriyi tutuyorsan silmekle yükümlüsün.
  • shop.redact henüz yok; tenant-silme app.uninstalled ile gelir (tüm tenant verisi).