Bu rehberde: Shopify mağazanızı bir özel uygulama (custom app) ile bağlarsınız. Yeni sipariş, ödenen sipariş, yeni müşteri ve terk edilen sepet olayları iş akışı başlatır; akış içinden sipariş okuyabilir, müşteriye etiket ekleyebilir ve indirim kodu oluşturabilirsiniz.
⏱ 15 dakika
Kimlik kartı
| Alan | Değer |
|---|---|
| Sağlayıcı anahtarı | SHOPIFY |
| Kategori | E-ticaret |
| Kimlik doğrulama | Admin API erişim anahtarı (shpat_…) veya Dev Dashboard uygulamasının Client ID + Client secret bilgisi |
| API | GraphQL Admin API, sürüm 2026-07 |
| Kapsam | Proje bazlı |
| Webhook | Evet – bağlarken otomatik kaydedilir (HMAC-SHA256 imzalı) |
| Kutu | Shopify (app.shopify) |
| Tetikleyici | Entegrasyon olayı → SHOPIFY · Order created, Order paid, Customer created, Checkout abandoned |
Ne işe yarar?
Tetikleyiciler (Entegrasyon olayı kutusunda hesap ve olay seçilir):
| Olay | Ne zaman | Nasıl gelir |
|---|---|---|
| Order created | Yeni sipariş verildiğinde | orders/create webhook'u |
| Order paid | Siparişin ödemesi alındığında | orders/paid webhook'u |
| Customer created | Müşteri hesabı oluştuğunda | customers/create webhook'u |
| Checkout abandoned | Alışverişçi iletişim bilgisini girip ödeme yapmadan ayrıldığında | 5 dakikada bir kontrol (Shopify'da bu olayın webhook'u yoktur) |
Akış şu alanlarla başlar: orderId, orderNumber (#1001), status (ödeme durumu: pending, paid …), fulfillmentStatus, total, currency, customerId, customerName, customerEmail, customerPhone, items (name, quantity, price), productName (ilk ürün), tags, orderUrl (sipariş durum sayfası), createdAt ve Shopify'ın gönderdiği verinin kısaltılmış hâli raw. Terk edilen sepette ayrıca checkoutId ve recoveryUrl (sepeti geri getiren bağlantı) bulunur.
Shopify kutusunun işlemleri:
| İşlem | Ne yapar | Etki |
|---|---|---|
| Get order | Tek siparişi numara (5512345678901), gid://shopify/Order/… kimliği veya sipariş adıyla (#1001, 1001) okur. | Okuma |
| List orders | En yeni siparişleri listeler; isteğe bağlı Shopify arama söz dizimiyle (financial_status:paid, created_at:>2026-10-01). Her sipariş ayrı öğe olur. | Okuma |
| Add customer tags | Müşteriye (kimlik veya e-posta ile bulunur) virgülle ayrılmış etiketler ekler; mevcut etiketler korunur. | Değişiklik |
| Create discount code | Tüm ürünlerde ve tüm alışverişçilerde geçerli yüzde indirim kodu oluşturur (bitiş tarihi, toplam kullanım sınırı, müşteri başına bir kez). | Değişiklik |
Editördeki test çalıştırmalarında etiket ekleme ve indirim kodu oluşturma çalıştırılmaz; kutu ne yapacağını çıktıya yazar. Okuma işlemleri çalışır.
Ön koşullar
- Shopify mağazasında sahip veya uygulama geliştirme izni olan bir personel hesabı.
- Mağazanın
magazaniz.myshopify.comadresi (Ayarlar → Alan adları'nda görünür). Kendi alan adınız (www.magazaniz.com) Admin API'de çalışmaz. - Uygulamada şu erişim kapsamları (scopes):
| Kapsam | Ne için |
|---|---|
read_orders | Sipariş okuma, sipariş webhook'ları, terk edilen sepetler |
read_customers | Yeni müşteri webhook'u, müşteriyi e-postayla bulma |
write_customers | Add customer tags |
write_discounts | Create discount code |
Adım adım kurulum
Shopify, 1 Ocak 2026'dan bu yana mağaza yönetiminde yeni "eski tip" özel uygulama oluşturmaya izin vermiyor. Daha önce oluşturduğunuz bir özel uygulama varsa A yolunu, yoksa B yolunu izleyin.
A) Mevcut özel uygulama (shpat_ anahtarı)
- Shopify yönetiminde Ayarlar → Uygulamalar ve satış kanalları → Uygulama geliştir → uygulamanızı açın.
- Yapılandırma → Admin API entegrasyonu'nda yukarıdaki kapsamları işaretleyip kaydedin.
- API kimlik bilgileri sekmesinde Admin API erişim anahtarını (
shpat_…) ve API gizli anahtarını (API secret key) kopyalayın. Erişim anahtarı yalnızca bir kez gösterilir; kaybettiyseniz uygulamayı yeniden yükleyerek yenisini alın.
B) Dev Dashboard uygulaması (Client ID + Client secret)
- dev.shopify.com → Apps → Create app → bir ad verin (
OrqLabs). - Uygulamanın yeni bir sürümünde (Versions) Admin API kapsamlarını seçin ve sürümü yayınlayın (Release).
- Uygulamayı mağazanıza yükleyin (Install). Mağaza ile uygulama aynı Shopify organizasyonunda olmalıdır; aksi hâlde anahtar alınamaz.
- Müşteri adı, e-posta ve telefonunu görebilmek için API access requests → Protected customer data bölümünden ilgili alanlara erişim isteyin.
- Settings sayfasından Client ID ve Client secret değerlerini kopyalayın.
OrqLabs bu bilgilerle Shopify'dan 24 saat geçerli bir erişim anahtarı alır (client credentials) ve süresi dolunca kendiliğinden yeniler.
C) OrqLabs'ta bağlama
- Entegrasyonlar → Shopify → Bağla → Proje seçin.
- Store domain:
magazaniz.myshopify.com(yalnızcamagazanizyazmanız da yeterli). - A yolunda Admin API access token alanına
shpat_…anahtarını, B yolunda Client ID alanına Client ID'yi girin (erişim anahtarını boş bırakın). - API secret key / client secret: A yolunda API gizli anahtarı, B yolunda Client secret → Bağla.
Bağlantı kurulunca OrqLabs orders/create, orders/paid ve customers/create webhook'larını mağazanıza otomatik kaydeder. Kayıt başarısız olursa entegrasyon kartında Webhook kaydı başarısız: … uyarısı görünür; sorunu giderip entegrasyonu silerek yeniden bağlayın.
Örnek iş akışları
1) Ödeme sonrası teşekkür mesajı
Entegrasyon olayı (SHOPIFY · Order paid) → Metin üret (istem: {{ $json.customerName }} adlı müşterimize {{ $json.productName }} siparişi için kısa ve sıcak bir teşekkür mesajı yaz.) → E-posta gönder (alıcı {{ $json.customerEmail }}) veya onaylı şablonla WhatsApp Mesaj gönder ({{ $json.customerPhone }}).
2) Terk edilen sepete indirimli hatırlatma
- Entegrasyon olayı –
SHOPIFY · Checkout abandoned. - Eğer –
{{ $json.customerEmail }}boş değil. - Shopify → Create discount code – Code
GERI{{ $json.customerId }}, Discount10, Expires at iki gün sonrası, Total usage limit1. - E-posta gönder – alıcı
{{ $node["Entegrasyon olayı"].json.customerEmail }}, metin{{ $json.code }} koduyla %10 indirimle siparişinizi tamamlayın: {{ $node["Entegrasyon olayı"].json.recoveryUrl }}.$jsonbir önceki kutunun (indirim kodu) çıktısıdır; sepet bilgileri için tetikleyici kutusunu adıyla çağırın.
3) Yeni müşteriyi etiketleyip aday listesine ekleme
Entegrasyon olayı (SHOPIFY · Customer created) → Aday oluştur (ad, e-posta, telefon) → Shopify → Add customer tags (Customer {{ $json.customerId }}, Tags orqlabs, hosgeldin).
Tetikleyiciler nasıl çalışır?
- Webhook'lar: Shopify her teslimatı uygulamanın API gizli anahtarıyla imzalar (
X-Shopify-Hmac-Sha256); OrqLabs imzayı ham gövde üzerinden doğrular, imzasız ya da hatalı teslimatı reddeder. Aynı sipariş veya müşteri için tekrar gelen teslimatlar ikinci kez akış başlatmaz. - Terk edilen sepet: OrqLabs etkin bir iş akışı bu olayı dinliyorsa 5 dakikada bir
abandonedCheckoutssorgusuyla açık (tamamlanmamış) sepetleri sorar. Bir sepet, oluşturulduktan yaklaşık 60 dakika sonra hâlâ tamamlanmamışsa olay üretilir; bu süre içinde ödenen sepetler atlanır. - İlk kontrol yalnızca başlangıç noktasını kaydeder; bağlamadan önceki sepetler akış başlatmaz.
- Yalnızca alışverişçinin iletişim bilgisi (e-posta veya telefon) girdiği sepetler Shopify'da "terk edilmiş" olarak listelenir.
Limitler
| Konu | Sınır |
|---|---|
| List orders | İstek başına en fazla 100 sipariş, sipariş başına ilk 5 ürün satırı (Get order: 50) |
| API hız sınırı | Shopify'ın sorgu maliyeti sınırı; aşılırsa RATE_LIMIT ve otomatik yeniden deneme |
| Terk edilen sepet gecikmesi | Sepet oluştuktan ~60 dakika sonra + en fazla 5 dakika kontrol aralığı |
| İndirim kodu | Yalnızca yüzde indirim, tüm ürünler ve tüm alışverişçiler; ürün/koleksiyon bazlı indirimler Shopify yönetiminden |
| Webhook yanıtı | Shopify 5 saniye içinde yanıt bekler; OrqLabs teslimatı hemen onaylar, akış arka planda çalışır |
Bağlantıyı test etme
Bağlantıyı test et mağaza adını, myshopify.com adresini, para birimini ve kullanılan kimlik doğrulama türünü (access_token / client_credentials) gösterir. Webhook'ları denemek için mağazada bir test siparişi oluşturun (ör. Bogus Gateway test ödeme sağlayıcısıyla) ve iş akışının Çalıştırmalar sekmesine bakın.
Kimlik bilgilerini yenileme
- A yolu: Uygulamanın API kimlik bilgileri sekmesinden anahtarı yenileyin (rotate) → OrqLabs'ta ayrıntı panelinde Kimlik bilgileri → Güncelle.
- B yolu: Dev Dashboard'da Client secret'ı yenilerseniz yenisini girin. Erişim anahtarını OrqLabs kendisi yeniler.
API gizli anahtarı değişirse webhook imzaları da yeni anahtarla gelir; OrqLabs'taki değeri hemen güncelleyin.
Sık karşılaşılan hatalar
| Hata | Olası neden | Çözüm |
|---|---|---|
CONFIG – "use the store's yourstore.myshopify.com domain" | Kendi alan adınız girildi | magazaniz.myshopify.com adresini girin |
CONFIG – "enter an Admin API access token … or the Dev Dashboard app's client ID" | Ne shpat_ anahtarı ne Client ID var | A veya B yolundaki bilgileri girin |
AUTH – 401 | Anahtar geçersiz, uygulama kaldırılmış | Uygulamayı yeniden yükleyip yeni anahtar girin |
AUTH – "client credentials refused" | Client ID/secret yanlış, uygulama mağazaya yüklenmemiş ya da mağaza başka organizasyonda | B yolunun 3. adımını kontrol edin |
FORBIDDEN – "missing access scope" / ACCESS_DENIED | Kapsam eksik (ör. write_discounts) | Kapsamı ekleyin; B yolunda yeni sürüm yayınlayıp mağazada onaylayın |
FORBIDDEN – 402 / 423 | Mağaza dondurulmuş, ödenmemiş veya kilitli | Shopify faturalandırmasını kontrol edin |
NOT_FOUND – "order … not found" | Sipariş adı/numarası yanlış | #1001 biçimini veya uzun sipariş numarasını kullanın |
INVALID – "Code must be unique" | Aynı indirim kodu zaten var | Kodun içine {{ $json.customerId }} gibi benzersiz bir parça ekleyin |
| Müşteri adı/e-posta boş geliyor | Dev Dashboard uygulamasında protected customer data erişimi yok | B yolunun 4. adımı |
Sık sorulan sorular
Shopify App Store'da bir OrqLabs uygulaması var mı? Hayır. Bağlantı, sizin mağazanızda oluşturduğunuz özel uygulamayla kurulur; veriler yalnızca sizin mağazanızla OrqLabs arasında akar.
Sipariş tutarı hangi para biriminde?
total ve currency mağazanızın ana para birimidir (shop currency).
Terk edilen sepet olayının süresini değiştirebilir miyim? Varsayılan 60 dakikadır. Daha geç hatırlatma için tetikleyiciden sonra Bekle kutusu ekleyin ve gönderimden önce siparişin tamamlanmadığını List orders ile kontrol edin.