İçeriğe geç
ceaksan
PREMIUM analytics

Shopify Metafield ile Custom Pixel Arası Köprü: Cart Attribute Pattern'i

Shopify custom pixel sandbox'ında Liquid metafield erişilmez. Cart attribute pattern ile customer metafield'i checkout pixel event'lerine ve sonrasında Flow'a taşıma. Consent state köprüsü ile server-side event'lerde doğru izin enforcement.

23 Nis 2026
TL;DR

Shopify custom pixel sandbox izole JS ortamı; Liquid template'ten okunan customer metafield'e doğrudan erişemiyor. Community'de yaygın localStorage önerisi consent ve cross-domain sebebiyle yarım çözüm. Doğru köprü cart attribute: theme.liquid metafield'i okuyup /cart/update.js ile cart'a yazıyor, checkout'a persist ediyor, pixel init.data.cart.attributes ve event.data.checkout.attributes üzerinden okuyor. Consent için iki katman var: pixel Customer privacy ayarı (Required purpose seçimi + Data sale) config-level enforcement'ı, init.customerPrivacy runtime-level okumayı sağlıyor. Flow server-side gate için Shopify.customerPrivacy state'i cart attribute'a köprüleniyor ve order.customAttributes üzerinden Flow condition'larına taşınıyor.

Üyelik Gerekli

Bu içeriğe erişmek için giriş yapmanız ve Premium aboneliğine sahip olmanız gerekmektedir.

Önemli Noktalar
  • 01 Custom pixel sandbox Liquid metafield'i okuyamaz. Cart attribute native bridge: functional data, checkout'a persist eder, event.data.checkout.attributes üzerinden erişilebilir.
  • 02 Theme.liquid /cart/update.js ile metafield değerlerini cart attribute'a yazar. Önce okuma/karşılaştırma guard'ı gereksiz update'i önler.
  • 03 Pixel consent iki katmanlı: Admin Customer privacy ayarı yüklenme kapısı, init.customerPrivacy pixel içinde runtime state.
  • 04 Consent state snapshot'ı için Shopify.customerPrivacy okuyup cart attribute'a köprüle. Sipariş zamanındaki izin durumu Flow condition'larında kullanılır.
  • 05 Underscore prefix (_b2b, _customer_id) cart attribute'u checkout UI'da gizler. PII cart'a yazılmaz; non-sensitive flag'ler ve ID'ler uygun.
Sık Sorulan Sorular (FAQ)
+ Shopify custom pixel içinden customer metafield'e doğrudan erişilebilir mi?

Erişilemez. Custom pixel sandbox izole JS ortamı; Liquid {{ customer.metafields... }} erişimine sahip değil. Doğru yol metafield'i theme.liquid'te okuyup cart attribute'a yazmak, pixel'in event.data.checkout.attributes üzerinden okuması.

+ Shopify staff'ın önerdiği localStorage workaround neden yetersiz?

İki kritik zayıflık: consent gate (analytics_storage denied olursa localStorage kullanımı sorunlu) ve cross-domain kopukluk (checkout domain'i farklı olunca localStorage paylaşılmaz). Cart attribute her iki sorunu da çözer; functional data kategorisinde çalışır ve Shopify altyapısında checkout'a native persist eder.

+ Cart attribute checkout UI'da görünür mü?

Underscore prefix'li attribute'lar (_b2b, _customer_id, _analytics_consent) müşteriye gösterilmez; yalnızca Shopify admin ve pixel/Flow tarafında erişilebilir. Underscore'suz key'ler checkout Additional details bölümünde görünür.

+ Pixel'in Customer privacy ayarı ile `init.customerPrivacy` arasındaki fark ne?

Ayar yüklenme kapısı: Required seçili purpose'lar (Marketing / Analytics / Preferences) için consent yoksa pixel hiç yüklenmez. init.customerPrivacy ise pixel yüklendikten sonra ziyaretçinin detaylı consent state'ini okuma katmanı: analyticsProcessingAllowed, marketingAllowed, preferencesProcessingAllowed, saleOfDataAllowed bool değerleri. Karışık amaçlı pixel'de event bazlı rotalama için kullanılır.

+ Consent state'ini neden cart'a yazmak gerekiyor?

Pixel client-side'da Shopify config-level izin enforcement'ını zaten alıyor. Fakat Flow server-side workflow'lar (GA4 Measurement Protocol, Klaviyo Track Event, Meta CAPI) sandbox dışında çalışıyor ve kendi consent gate'ini koymak zorunda. Shopify.customerPrivacy.getVisitorConsent() çıktısını cart attribute'a köprülemek sipariş zamanındaki snapshot'ı sağlıyor; Flow condition'ı order.customAttributes içinden _analytics_consent == "granted" key karşılaştırmasıyla bunu okuyor.