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ınNe zaman Tenant bir müşteriyi sildi (GDPR/KVKK) Geliştirici Bu customerId'ye ait TÜM PII'yi sil (zorunlu) Abonelik / gating Yok — bağlı (connected) her kuruluma her zaman gelir
Envelope (tüm lifecycle/event'lerde ortak)Alan Tip Zorunlu Açıklama id string ✓ Idempotency anahtarı. Aynı id tekrar gelebilir (retry) → dedup et. type string ✓ "customer.redact" — event mi lifecycle mı olduğunu bununla ayırt et. version string ✓ 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. tenantId string ✓ Hangi tenant (kurulum). İşlemini buna göre yap; cross-tenant doğrula. occurredAt number ✓ Oluşma zamanı (unix ms). data object ✓ Tipe özel gövde (aşağıda).
data alanlarıAlan Tip Zorunlu Açıklama customerId string ✓ Silinen müşterinin id'si. Kendi tarafında bu id ile eşleşen tüm PII kaydını sil. deletedAt number ✓ Silme zamanı (epoch ms).
Tam örnek payloadÖrnek webhook gövdesi (data alanı teyitli — webhook.site)
Kopyala{
"id": "evt_9f2a7c1b",
"type": "customer.redact",
"version": "1",
"tenantId": "tnt_123",
"occurredAt": 1780000000000,
"data": {
"customerId": "cust-123",
"deletedAt": 1781200000000
}
} En iyi pratikZORUNLU — 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).