İçeriğe geç
ceaksan
PREMIUM analytics

Shopify Flow ile B2B Etiketleme ve Otomatik Hediye: Koşullu Workflow Tasarımı

Shopify Flow ile B2B müşteriye sepet tutarı ve sipariş sayısına göre otomatik hediye. Tester / non-tester branch'i, metafield enrichment, GA4 Measurement Protocol ve Klaviyo Track Event server-side emit, consent condition gate.

23 Nis 2026
TL;DR

Shopify Flow'un order_paid trigger'ı B2B müşteriye ürün tester flag'i, sepet tutarı ve önceki sipariş sayısına göre farklı free gift ekleyebiliyor. İlk ayrım customer tag veya metafield bazlı tester / non-tester branch'i, ikinci ayrım sepet tutarı ve customer.numberOfOrders kombinasyonu; iki koşul birlikte hediye varyantını seçiyor. First-order detection için numberOfOrders yerine custom.has_ordered_before metafield guard'ı bogus test sipariş sayımını by-pass ediyor. Server-side event emit (GA4 Measurement Protocol, Klaviyo Track Event) için Flow'un send_http_request action'ı Plus/Advanced/Grow planlarına özel; Klaviyo connector tüm planlarda mevcut. Downstream action'lar Yazı 1'deki cart attribute consent bridge üzerinden order.customAttributes._analytics_consent == "granted" condition'ı ile gate ediliyor.

Üyelik Gerekli

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

Önemli Noktalar
  • 01 Tester / non-tester ayrımı customer tag veya metafield guard'ı; aynı workflow içinde iki ana branch + sepet tutarı ve numberOfOrders alt branch'leri ile hediye varyantı seçilir.
  • 02 add_order_line_item + add_for_free: true + parent_uuid ile trigger edilen sipariş üzerine hediye satırı attach edilir; Boolean value_type ve key isimleri JSON format hatasına duyarlı.
  • 03 First-order detection için custom.has_ordered_before metafield guard'ı bogus test ve iptal/iade sipariş sayımına karşı numberOfOrders'dan daha dayanıklı.
  • 04 send_http_request action Plus, Advanced ve Grow planlarına özel; Basic ve Starter için Klaviyo Track Event connector free tier'da mevcut ve event'i downstream platformlara köprüleyebilir.
  • 05 Downstream server-side event'ler (GA4 MP, Klaviyo) Yazı 1'deki cart attribute consent bridge üzerinden order.customAttributes condition'ı ile gate edilir; internal metafield/tag action'ları consent'siz çalışabilir.
Sık Sorulan Sorular (FAQ)
+ Flow'un `send_http_request` action'ı tüm planlarda var mı?

Hayır. send_http_request ve send_admin_api_request yalnızca Shopify Plus, Advanced ve Grow planlarında mevcut. Basic, Starter, Standard planlarda yok. Workaround olarak Klaviyo 'Track an event' connector tüm planlarda çalışıyor; Klaviyo'dan downstream GA4 / Meta / SMS yönlendirmesi yapılabilir veya Shopify Webhook üzerinden CF Worker / self-hosted endpoint ikinci seçenek.

+ İlk sipariş tespiti için `customer.numberOfOrders` yerine neden metafield kullanıyoruz?

Test ve geliştirme aşamasında atılan bogus order'lar, iptal edilmiş ve iade olan siparişler numberOfOrders sayımına dahil oluyor. Gerçek 'first real paid order' için custom.has_ordered_before (boolean) metafield'i daha güvenilir: ilk başarılı ödenmiş sipariş sonrası Flow action'ı bu flag'i true yapıyor, sonraki order'larda guard olarak kontrol ediliyor. Test ortamında flag'i temizlemek de kolay.

+ Tester flag'ini customer tag mı yoksa metafield olarak mı tutmalı?

İkisi de pratikte çalışıyor. Tag avantajı: Flow condition editor'da tek-tık UI desteği, admin filter'larıyla uyumlu, görsel olarak admin customer detayında görünür. Metafield avantajı: typed (boolean), GraphQL Admin API ve Storefront'ta structured access, third-party app'lerin tag namespace'ini kirletmesine karşı koruma. Tester flag kararı bir iş mantığı olduğu için tag (kolay görünür, operasyon ekibinin de düzenleyebileceği) pratikte daha yaygın tercih; metafield ise programmatic entegrasyonun ağır olduğu senaryolarda tercih edilmeli.

+ GA4 MP client_id için hangi strateji?

İki seçenek, trade-off farklı: order.customer.id | md5 deterministic (aynı müşteri her zaman aynı client_id) ama GA4'ün gerçek web client_id'siyle eşleşmiyor, bu nedenle web journey ve server-side event ayrı sessionlarda görünür. Alternatif: pixel'den _ga_cid cookie değerini cart attribute'a yazmak, Flow'dan order.customAttributes üzerinden okuyup MP'ye geçirmek; bu durumda web + server journey tek sessionda stitch olur ama setup iki katlı olur. Klasik öneri: purchase event pixel tarafında gerçek client_id'yle atılır, server-side MP event'i b2b_first_order gibi ayrı bir event name ile emit edilir ve duplicate saymaz.

+ Flow'da consent condition nasıl yazılır?

Order trigger'lı workflow'da order.customAttributes array'inden key-match aranır. Flow condition editor'da order.customAttributes.any(key: "_analytics_consent", value: "granted") pattern'i veya For each loop içinde attribute.key == "_analytics_consent" AND attribute.value == "granted" şeklinde yazılır. Condition evaluate true döndüğünde send_http_request branch'i çalışır, aksi halde sadece internal action (tag/metafield) tarafı geçer.