Bu rehberde: Dijital ürün ve SaaS aboneliklerini sattığınız Lemon Squeezy hesabını bir API anahtarıyla bağlarsınız. Yeni sipariş, yeni abonelik ve abonelik iptali olayları iş akışı başlatır; akış içinden siparişleri listeleyebilir ve müşteri bilgisini okuyabilirsiniz.
⏱ 5 dakika
Kimlik kartı
| Alan | Değer |
|---|---|
| Sağlayıcı anahtarı | LEMON_SQUEEZY |
| Kategori | E-ticaret (dijital ürün / abonelik) |
| Kimlik doğrulama | API anahtarı (Authorization: Bearer) |
| API | https://api.lemonsqueezy.com/v1 (JSON:API) |
| Kapsam | Proje bazlı |
| Webhook | Evet – bağlarken her mağaza için otomatik kurulur (HMAC-SHA256 imzalı) |
| Kutu | Lemon Squeezy (app.lemonSqueezy) |
| Tetikleyici | Entegrasyon olayı → LEMON_SQUEEZY · Order created, Subscription created, Subscription cancelled |
Ne işe yarar?
Tetikleyiciler:
| Olay | Ne zaman |
|---|---|
| Order created | Bir müşteri satın almayı tamamladığında (tek seferlik ürün veya aboneliğin ilk siparişi) |
| Subscription created | Yeni abonelik başladığında (deneme süreli abonelikler dahil) |
| Subscription cancelled | Abonelik iptal edildiğinde – müşteri dönem sonuna (endsAt) kadar erişimini korur |
Sipariş olayında orderId, orderNumber, status (paid, refunded …), total, currency, customerId, customerName, customerEmail, items, productName, variantName, storeId, receiptUrl, testMode, createdAt gelir. Abonelik olaylarında subscriptionId, orderId, customerId, customerName, customerEmail, productName, variantName, subscriptionStatus (on_trial, active, cancelled …), renewsAt, endsAt, trialEndsAt, portalUrl (müşteri portalı) bulunur. Ödeme sayfasına checkout[custom][…] ile eklediğiniz özel veriler customData alanında gelir. Tutarlar kuruş/sent cinsinden gelir ve OrqLabs bunları ana birime çevirir (2900 → 29).
Lemon Squeezy kutusunun işlemleri:
| İşlem | Ne yapar | Etki |
|---|---|---|
| List orders | En yeni siparişleri listeler; isteğe bağlı alıcı e-postası veya mağaza kimliğiyle süzer. Her sipariş ayrı öğe olur. | Okuma |
| Get customer | Müşteriyi kimliğiyle okur: toplam gelir, aylık yinelenen gelir (MRR), abonelik durumu, ülke, müşteri portalı bağlantısı. | Okuma |
Ön koşullar
- Bir Lemon Squeezy hesabı ve en az bir mağaza (store).
- Canlı satışlar için mağazanın etkinleştirilmiş olması. Test modunda üretilen API anahtarı yalnızca test verilerine erişir; canlıya geçince canlı modda yeni anahtar üretin.
Adım adım kurulum
A) Lemon Squeezy'de API anahtarı
- Lemon Squeezy panelinde Settings → API sayfasına gidin.
- + düğmesiyle yeni anahtar oluşturun, ad olarak
OrqLabsyazın. - Gösterilen uzun anahtarı kopyalayın; yalnızca bir kez gösterilir.
B) OrqLabs'ta bağlama
- Entegrasyonlar → Lemon Squeezy → Bağla → Proje seçin.
- API key alanına anahtarı yapıştırın → Bağla.
Bağlantı kurulunca OrqLabs hesabınızdaki her mağaza için order_created, subscription_created ve subscription_cancelled olaylarını dinleyen bir webhook'u kendi gizli anahtarıyla otomatik oluşturur. Webhook'ları Settings → Webhooks sayfasında görebilirsiniz; silmeyin.
Örnek iş akışları
1) Satın alma sonrası hoş geldin e-postası
Entegrasyon olayı (LEMON_SQUEEZY · Order created) → Eğer ({{ $json.testMode }} eşittir false) → Metin üret ({{ $json.productName }} satın alan {{ $json.customerName }} için kısa bir hoş geldin ve kullanım ipuçları e-postası yaz.) → E-posta gönder ({{ $node["Entegrasyon olayı"].json.customerEmail }}).
2) İptal eden aboneyi geri kazanma
- Entegrasyon olayı –
LEMON_SQUEEZY · Subscription cancelled. - Aday oluştur – e-posta
{{ $json.customerEmail }}, etiketiptal. - Metin üret – iptal nedenini soran,
{{ $json.endsAt }}tarihine kadar erişimin sürdüğünü hatırlatan kısa bir mesaj. - E-posta gönder ve Ekibe bildir.
3) Yeni aboneliği ekibe duyurma
Entegrasyon olayı (LEMON_SQUEEZY · Subscription created) → Lemon Squeezy → Get customer (Customer id {{ $json.customerId }}) → Ekibe bildir (Yeni abone: {{ $json.customerName }} – toplam gelir {{ $json.totalRevenue }}).
Tetikleyiciler nasıl çalışır?
- Lemon Squeezy her teslimatı webhook'un gizli anahtarıyla imzalar (
X-Signature, hex HMAC-SHA256). OrqLabs imzayı ham gövde üzerinden doğrular; imzasız veya hatalı teslimatları reddeder. - Aynı sipariş veya abonelik için tekrar gelen teslimatlar ikinci kez akış başlatmaz.
- Test modundaki satışlar da olay üretir;
testModealanıtrueolur. Canlı akışlarda Eğer kutusuyla süzün. - Bağlantıdan sonra açtığınız yeni bir mağaza için webhook kendiliğinden oluşmaz; entegrasyonu silip yeniden bağlayın.
Limitler
| Konu | Sınır |
|---|---|
| List orders | İstek başına en fazla 100 sipariş |
| API hız sınırı | Lemon Squeezy'nin dakika başına istek sınırı; aşılırsa RATE_LIMIT ve otomatik yeniden deneme |
| Sipariş kalemleri | items siparişin ilk kalemini içerir (Lemon Squeezy siparişleri tek ürünlüdür) |
| Diğer olaylar | Lisans anahtarı, ödeme başarısız, iade olayları bu sürümde tetikleyici değildir |
Bağlantıyı test etme
Bağlantıyı test et hesap adını, e-postasını ve mağazalarınızı (kimlik, ad, para birimi) gösterir. Webhook'ları denemek için test modunda bir satın alma yapın ya da Settings → Webhooks sayfasında webhook'u açıp test olayı gönderin.
Kimlik bilgilerini yenileme
Settings → API sayfasında yeni anahtar oluşturun → OrqLabs'ta ayrıntı panelinden Kimlik bilgileri → Güncelle → eski anahtarı silin. Webhook'lar kendi gizli anahtarlarını kullandığı için etkilenmez.
Sık karşılaşılan hatalar
| Hata | Olası neden | Çözüm |
|---|---|---|
AUTH – 401 "Unauthenticated" | Anahtar silinmiş, süresi dolmuş veya yanlış | Yeni anahtar girin |
CONFIG – "the account has no store yet" | Hesapta mağaza yok | Önce bir mağaza oluşturun, sonra yeniden bağlayın |
INVALID – "customerId must be a number" | Müşteri kimliği yerine e-posta girildi | {{ $json.customerId }} kullanın |
NOT_FOUND – 404 | Müşteri başka bir hesaba ait ya da test/canlı modu farklı | Anahtarın modunu (test/canlı) kontrol edin |
| Canlı satışlar gelmiyor | Anahtar test modunda üretildi | Canlı modda yeni anahtarla yeniden bağlayın |
Sık sorulan sorular
Abonelik iptal edilince erişim hemen kesilir mi?
Hayır. Lemon Squeezy iptal edilen aboneliği dönem sonuna kadar sürdürür; bitiş tarihi endsAt alanındadır.
Ödeme sayfasından gelen özel veriyi (ör. kampanya kaynağı) kullanabilir miyim?
Evet. Ödeme bağlantısına checkout[custom][kaynak]=instagram eklerseniz değer customData.kaynak olarak gelir.
Para birimi ne olur?
currency siparişin ödendiği para birimidir; total aynı para birimindedir.