Ana içeriğe atla
Veri Akışları, gönderim anında API’lerinizden doğrudan mesajlara gerçek zamanlı veri çekmenizi sağlar. Bu, verileri OneSignal’e önceden yüklemeden son derece kişiselleştirilmiş içerik sunmanıza olanak tanır. Veri Akışlarını verileriniz sık sık değiştiğinde kullanın, örneğin:
  • Kullanıcının mevcut ödül bakiyesi
  • En son sipariş durumu
  • Kişiselleştirilmiş ürün önerileri
Diğer kişiselleştirme yöntemleri (etiketler veya dinamik içerik gibi) statik veriler için harikadır, ancak Veri Akışları canlı, hızla değişen değerler için en iyisidir.
Veri Akışları şu anda yalnızca Journeys aracılığıyla gönderilen e-posta mesajları için kullanılabilir. Başka bir kanala mı ihtiyacınız var? Bu kısa anketi doldurun.

Veri Akışları Nasıl Çalışır

  1. Bir Veri Akışı Oluşturun – OneSignal’in API’nize nasıl bağlanacağını yapılandırın.
  2. Veri Akışını bir mesaj şablonuna ekleyin.
  3. Yanıt alanlarını mesajınıza Liquid sözdizimi kullanarak ekleyin.
  4. Gönderim anında, OneSignal her alıcı için bir API çağrısı yapar, yanıtı ayrıştırır ve verileri mesajınıza enjekte eder.

Örnek: Ödül puanlarını gösterme

Diyelim ki her müşteriye ödül bakiyesini göstermek istiyorsunuz:
Hi {{ first_name }},

You have {{ data_feed.rewards.points }} points!
Your membership status is {{ data_feed.rewards.status_level }}.

Keep shopping to earn more points!
Sarah bu e-postayı aldığında, {{ data_feed.rewards.points }} ve {{ data_feed.rewards.status_level }} yerine gerçek puan bakiyesini ve üyelik durumunu görecektir. Aşağıda adım adım bir Veri Akışının nasıl kurulacağını size göstermek için bu örneği kullanacağız.

Veri Akışı oluşturma ve kullanma

1. Veri Akışı yapılandırmanızı ayarlayın

Mevcut Veri Akışlarının listesini görmek ve yeni bir tane oluşturmak için kenar çubuğunda Veri > Veri Akışları’na gidin. Her Veri Akışı şunlara sahip olmalıdır:
  • Ad: Akış listenizde ayırt etmenize yardımcı olması için “Müşteri Ödülleri API’si” gibi açıklayıcı bir ad. Bunların benzersiz olmasını öneririz, ancak zorunlu değildir.
  • Takma Ad: Liquid sözdiziminde kullanacağınız rewards gibi kısa bir ad. Bunlar benzersiz olmalı, boşluk içermemeli ve yalnızca özel semboller olmadan küçük harf alfasayısal karakterler içerebilir.
  • Yöntem: API’nize nasıl ulaşmamız gerektiği. Genellikle bu GET’tir ancak POST da desteklenir.
  • URL: API’nin adresi. Kullanıcıya özel verileri çekmek için API’yi çağırmamızı sağlayan Liquid sözdizimini dahil edebilirsiniz.
Örneğin, ödül uç noktanız bu şekilde biçimlendirilebilir; burada o kullanıcının ödül verilerini çekmek için harici kimliği (OneSignal’de depolanan) eklemek üzere bir veri etiketi kullanırsınız:
https://acme.com/customers/user_id={{ external_id }}/rewards
  • Başlıklar: API spesifikasyonlarınızın gerektirdiği şekilde başlık anahtar-değer çiftlerini girin. Tipik bir önemli kullanım, kimlik doğrulama bilgilerini dahil etmek olacaktır. Bu alanlar gerektiğinde Liquid sözdizimini de destekler.
  • Gövde: API’niz gerektiriyorsa, isteğe JSON formatında bir gövde dahil edebilirsiniz. Bu düzenleyici, tıpkı Journey Webhook’ları gibi Liquid sözdizimini destekler.
Örneğin, yukarıdaki gibi URL dizesinde değil, API’niz kullanıcının kimliğini isteğin gövdesinde belirtmenizi gerektirebilir:
{
	"customer_id": "{{ external_id }}"
}
Tam bir Veri Akışı yapılandırması şöyle görünebilir:

Veri Akışı yapılandırma örneği

Akışınızı kullanmadan önce test etmenizi öneririz. Test Aboneliklerini kullanarak test edersiniz, bu nedenle test abonelik özniteliklerinizin API’nizden gerçek bir sonuç döndüreceğinden emin olun. Son olarak, kullanıma hazır olması için yeni Veri Akışınızı Etkinleştirin.

2. Veri Akışını mesaj şablonunuza ekleyin

OneSignal’in bunu kullanması gerektiğini bilmesi için Veri Akışınızı mesaj şablonunuza ekleyin.
  1. Mesajlar > Şablonlar’a gidin
  2. Mesaj bölümünde Kişiselleştirme düğmesini seçin

Kişiselleştirme düğmesi seçenekleri

  1. Veri Akışları’nı açın ve akışınızı seçin

Mesaj düzenleyicisinde Veri Akışları bölümü

  1. Şablonunuzu kaydedin

3. Verileri mesajınızda kullanın

Yanıt verilerini mesajınızın herhangi bir yerine eklemek için Liquid sözdizimini kullanın. Örneğimizde, external_id’si 1a1-b2c3 olan Sarah için yanıtın şöyle basit bir JSON blob’u olduğunu varsayalım:
{
	"external_id": a1-b2c3,
	"points": 193,
	"status_level": "Gold"
}
Puan sayısını ve durum seviyesini mesaja eklemek istiyoruz, bu da tipik nokta notasyonu ile gerçekleştirilir:
You have {{ data_feed.rewards.points }} points!
Your membership status is {{ data_feed.rewards.status_level }}.
Bu, OneSignal’e şunu söyler:
  • Bir Veri Akışı kullan
  • rewards Veri Akışını kullan
    • Hatırlayın: rewards akışı, API’yi alıcının external_id’si ile çağırmayı bilir
  • Yanıttan, points öğesinin değerini (193) ve status_level öğesinin değerini (Gold) ekle

Gereksinimler ve Sınırlar

API’nizin şunları yapması gerekir:
  • Başlıklarda kimlik doğrulama belirteçleriyle tek adımlı kimlik doğrulamayı kabul etmek
  • Hızlı yanıt vermek. 250ms altı önerilir (bu, gönderim hızını doğrudan etkiler)
  • JSON döndürmek. Diğer formatlar şu anda desteklenmiyor.
  • Mesaj gönderme hacminizi ve oranınızı yönetmek. API’nizin düşük bir oran sınırı varsa, bu mesajlarınızı hızlı bir şekilde iletmemizi engelleyecektir.
  • Makul boyutlu yükler döndürmek. En iyi performans için yanıtları 50kb altında tutmanızı öneririz.
Mevcut sınırlar:
  • Şablon başına bir Veri Akışı. Bu sınırı gelecekte artırmayı bekliyoruz. Buna ihtiyacınız olduğunu bize bildirmek için bu kısa anketi doldurun.
  • Mesaj başına Veri Akışı başına bir API çağrısı. İhtiyacınız olan her şeyi tek bir çağrıda alın.
  • Yalnızca Journeys. Henüz diğer gönderim yöntemleri için kullanılamıyor. Buna ihtiyacınız olduğunu bize bildirmek için bu kısa anketi doldurun.
  • Çağrı zincirlemesi yok. Bir Veri Akışından gelen yük, başka birini çağırmak için kullanılamaz.

API’nizi ayarlama

Bir Veri Akışı oluşturmadan önce, API’nizin bu gereksinimleri karşılayabildiğinden emin olun:

Kimlik Doğrulama

API’niz başlıklar aracılığıyla kimlik doğrulamayı kabul etmelidir:
Authorization: Bearer YOUR_TOKEN
or
X-API-Key: YOUR_KEY

JSON İstek Gövdesi

İsteğe bir gövde eklemeniz gerekiyorsa, API’niz JSON’u kabul etmelidir. Bu, başlıklarınızın Content: application/json içermesi gerektiği anlamına gelebilir.

JSON Yanıtı

API’niz bir JSON nesnesi döndürmelidir. Tipik olarak bu, başlıklarınızın Accept: application/json içereceği anlamına gelir.

Kişiselleştirme Parametreleri

Genellikle kullanıcı tanımlayıcılarını URL’de şu şekilde geçireceksiniz:
https://api.example.com/users/{{external_id}}/data
https://api.example.com/rewards?email={{email | url_encode}}
Ve/veya gövdede:
JSON
{
	"customer_id": "{{ external_id }}",
	"email": "{{ subscription.email }}"
}
Bu verilerin OneSignal’de var olacağından emin olun (genellikle veri etiketleri olarak, ancak özel olay özellikleri gibi diğer seçenekler de mevcuttur).

Oran Sınırları

API’nizin oran sınırlarını göz önünde bulundurun. 10.000 kullanıcıya arka arkaya gönderim yapıyorsanız, 10.000 API çağrısı yapacağız. API’nizin bu hacmi kaldırabileceğinden emin olun.

Hata İşleme

API’niz bir hata döndürürse veya bir kullanıcı için veriye sahip değilse, mesaj o alıcıya gönderilmeyecektir. API’nizin beklenen tüm kullanıcılar için veri döndürdüğünden emin olun.

Başlangıç Kontrol Listesi

Veri Akışlarını uygulamadan önce şu soruları yanıtlayın:
  • Mesajımda hangi verileri göstermek istiyorum? API’nizden doldurulacak öğelerin tanımlandığı basit bir taslaktan geriye doğru çalışmak, düşüncelerinizi organize etmenize yardımcı olacaktır.
  • Bu veriler tek bir API uç noktası üzerinden kullanılabilir mi?
  • API isteklerini nasıl doğrulayacağım?
  • Kişiselleştirilmiş verileri almak için hangi tanımlayıcıyı veya diğer veri öğesini kullanacağım?
  • Bu tanımlayıcı zaten OneSignal’de depolanıyor mu? Değilse, nasıl doldurulacak?
  • API’m üreteceğim istek hacmini kaldırabilir mi?
  • API’m bir kullanıcı için veriye sahip değilse ne olur?

Örnekler ve gelişmiş kullanım durumları

Veri Akışları, Liquid sözdizimi ile veya daha karmaşık kişiselleştirme üretmek için diğer özelliklerle birlikte yaratıcı şekillerde kullanılabilir.

Döngülerle yineleme: terk edilmiş sepet

Diyelim ki kullanıcının sepetindeki öğelerin bir dizisini ve sepet toplam dolar tutarını döndüren bir cart Veri Akışınız var:
JSON
{
  "items": [
    {
      "name": "Blue Running Shoes",
      "price": 84.00,
      "image_url": "https://acme.com/blue-running-shoes.png"
    },
    {
      "name": "Protein Bar",
      "price": 5.99,
      "image_url": "https://acme.com/protein-bar.png"
    }
  ],
  "total": 89.99
}
Sepetteki her öğeyi ve sepet toplamını göstermek istiyorsanız, Liquid’de bir for döngüsü kullanabilirsiniz:
HTML
<ul>
  {% for item in data_feed.cart.items %}
    <li>
      <strong>{{ item.name }}</strong><br>
      ${{ item.price }}<br>
      <img src="{{ item.image_url }}" alt="{{ item.name }}">
    </li>
  {% endfor %}
</ul>

<p>Cart total: ${{ data_feed.cart.total }}</p>

Bu, şu sonucu verecektir:
- Blue Running Shoes
- $84.00
- <koşu ayakkabısı resmi>
- Protein Bar
- $5.99
- <protein bar resmi>
Sepet toplamı: $89.99
E-posta blok düzenleyicisini kullanıyorsanız, bu tür karmaşık Liquid sözdizimini eklerken, özellikle resimler veya bağlantılar eklemeniz gerekiyorsa, en iyi sonuçlar için özel HTML blok öğesini kullanın.

Özel olay özellikleri

Önceki terk edilmiş sepet örneğine devam edersek, o belirli sepeti ilk etapta nasıl alacağımızı nasıl bilebiliriz? Bir yöntem, özelliklerin bir cart_id içerdiği bir cart_abandoned özel olayı tarafından tetiklenen bir Journey oluşturmak olabilir. Bu örnekte o olay API aracılığıyla OneSignal’e gönderiliyor:
curl
curl --request POST \
  --url https://api.onesignal.com/apps/{app_id}/custom_events \
  --header 'Accept: application/json' \
  --data '{
  "events": [
    {
      "name": "cart_abandoned",
      "external_id": "user_12345",
      "properties": {
        "cart_id": 98765
      }
    }
  ]
}'

Journey girişi için özel olay

Kullanıcı user_12345, bu olay tetiklendiğinde journey’ye girer, ardından e-posta gönderen bir düğüme ulaşır. Bu e-posta şablonu, URL’nin belirli bir sepetin içeriğini almak üzere ayarlandığı cart Veri Akışı ile kurulmuştur:
https://acme.com/carts/{{ journey.event.cart_abandoned.data.cart_id }}
Böylece, bu belirli olay alındığında ve Journey’yi tetiklediğinde:
  1. 98765 olan cart_id değeri Journey’ye depolanacaktır
  2. E-posta adımına ulaşıldığında, cart Veri Akışı bu cart_id değerine referans verecek ve onu sepet API’sini çağırmak için kullanacaktır
  3. Döndürülen JSON özellikleri, yukarıdaki önceki örnekteki gibi ayrıştırılacak ve e-postaya eklenecektir

Koşullu görüntüleme: sipariş durumu

Diyelim ki bir müşterinin siparişinin durumunu eklemek istiyorsunuz, ancak yalnızca sipariş sevk edilmişse bir takip numarası bağlantısı eklemek istiyorsunuz. Bunu yapmak için bir if ifadesi kullanabilirsiniz:
Your order is {{data_feed.order.status}}!

{% if data_feed.order.tracking_number != empty %}
Track it here: {{data_feed.order.tracking_url}}
{% endif %}
Burada, takip bağlantısı yalnızca tracking_number mevcutsa görüntülenecektir.

Kişiselleştirme olmadan otomasyon

Veri Akışları, alıcı başına kişiselleştirilmeye gerek kalmadan mesajlarınıza güncel bilgileri otomatik olarak eklemek için kullanılabilir. Örneğin, belki e-postalarınızın üstüne bir banner resmi eklersiniz ve tatiller ve diğer aylık olaylarla güncel kalmak için onu aylık olarak değiştirirsiniz. Her ay yeni bir resmi OneSignal’e yüklemeyi ve tüm şablonlarınızı değiştirmeyi hatırlamak yerine, CMS’inizden veya diğer varlık yönetimi konumunuzdan mevcut banner resim URL’sini alan bir Veri Akışı kurabilirsiniz. URL’de herhangi bir değişken olmadan bir uç noktaya işaret eden bir banner Veri Akışı kurarsınız:
https://acme.com/assets/email-banner
Bu, mevcut banner URL’si ile bir yanıt döndürür:
JSON
{
	"banner_url": "https://acme.com/assets/email-banner/2025july.png"
}
E-posta şablonunuzu resim kaynak URL’si olarak {{ data_feed.banner.banner_url }} kullanacak şekilde ayarlarsınız ve bu süreci ileriye dönük otomatikleştirirsiniz.

Sorun Giderme

Verilerim görünmüyor

  1. Veri Akışınızın şablona eklendiğini kontrol edin
  2. Liquid sözdizminizin JSON yapınızla tam olarak eşleştiğini doğrulayın
  3. API uç noktanızı veri döndürdüğünden emin olmak için manuel olarak test edin
  4. Kullanıcının gerekli veri etiketlerine (external_id gibi) sahip olduğunu kontrol edin

Mesajlar yavaş gönderiliyor

  1. API yanıt sürenizi kontrol edin
  2. API’nizin eş zamanlı istekleri işleyebildiğinden emin olun

Bazı alıcılar mesaj almıyor

  1. API’niz bu kullanıcılar için veriye sahip olmayabilir
  2. 404’ler veya hatalar için Veri Akışı yapılandırmasındaki hata günlüğünü kontrol edin
  3. 404’ler veya hatalar için API günlüklerinizi kontrol edin
  4. Bu kullanıcıların OneSignal’de gerekli tanımlayıcılara sahip olduğunu doğrulayın