custom_data alanını kullanın.
custom_data:
- Mesaja özeldir
- Saklanmaz
- Yalnızca API isteği sırasında mevcuttur
- Bir
template_idile kullanılmalıdır
custom_data ne zaman kullanılır
Aşağıdaki durumlarda custom_data kullanın:
- Veriler mesaj başına değişiyorsa (sipariş toplamları, sepet ürünleri, bakiyeler)
- Dizilere ihtiyacınız varsa (ürün listeleri, satır öğeleri, öneriler)
- Veriler kalıcı olmamalıysa (tek kullanımlık kodlar, geçici URL’ler)
- Arka uçtan tetiklenen mesajlar gönderiyorsanız
- Tek bir API isteğinde toplu kişiselleştirme yapmak istiyorsanız
custom_data kişiselleştirmesi nasıl çalışır
Mesajlara custom_data eklemek birkaç adım gerektirir:
Bir şablon oluşturun
Liquid yer tutucuları ekleyin
API isteğinizde custom_data gönderin
template_id- Şablonun ID’sicustom_data- Veri nesnesi- Hedef kitle belirleme (
include_player_ids,include_aliasesveya segmentler)
Veri kalıpları
custom_data ile kullanabileceğiniz yaygın veri kalıpları örnekleri.
Düz JSON örneği
İsimler, ID’ler, URL’ler veya herhangi bir tek değerli veri gibi temel kişiselleştirme için basit anahtar-değer çiftleri kullanın. Kullanım senaryosu: Her alanın tek bir değer içerdiği işlemsel mesajlar (faturalar, makbuzlar, onaylar). Şablon:Dizi verisi örneği
Sepet ürünleri, sipariş satır öğeleri veya öneriler gibi birden fazla öğeyle çalışmak için nesne dizileri gönderin. Diziler hem doğrudan erişimi (indeksleme) hem de yinelemeyi (döngüler) mümkün kılar. Kullanım senaryosu: Ürün listelerini, sıralamaları, sipariş özetlerini veya herhangi bir çok öğeli veriyi görüntüleme. İndeksleme şablonu (ilk öğeye erişim):{{message.custom_data.cart_items.size}}— Dizideki öğe sayısı (bu örnekte2döndürür){{message.custom_data.cart_items.first.item_name}}— İlk öğenin adı ([0]ile eşdeğer){{message.custom_data.cart_items.last.item_name}}— Son öğenin adı
Toplu kişiselleştirme örneği
Her alıcınınexternal_id değerine göre kişiselleştirilmiş içerik gördüğü tek bir API isteğini birden fazla kullanıcıya gönderin.
Nasıl çalışır:
custom_datayapısını anahtarların external_id’ler, değerlerin kullanıcıya özel veriler olduğu bir nesne olarak oluşturun- Şablonda, geçerli alıcının verilerini aramak için
subscription.external_idkullanın - OneSignal, şablonu her alıcı için kendi özel verileriyle bir kez render eder
subscription.external_idgeçerli alıcının external_id değerini içerir (ör. “user123”)message.custom_data.users[subscription.external_id]custom_data nesnesinden o kullanıcının verilerini araruser, o kullanıcının verileri için bir kısayol değişkeni olur- Her alıcı yalnızca kendi kişiselleştirilmiş içeriğini görür
- John (user123): “Hi John, you have 150 points. Your level is Gold.”
- Sarah (user456): “Hi Sarah, you have 200 points. Your level is Platinum.”
- Tüm alıcıların OneSignal’da bir
external_iddeğeri ayarlanmış olmalıdır include_aliasesiçindeki herexternal_id,custom_data.usersiçinde eşleşen bir anahtara sahip olmalıdır- Bir alıcının external_id değeri
custom_dataiçinde yoksa, mesajında boş alanlar olacaktır
Örnek: custom_data ile terk edilmiş sepet
custom_data kullanarak hem e-posta hem de push için terk edilmiş sepet mesajları nasıl oluşturulur.
Bu yaklaşım ne zaman kullanılır:
- Sunucunuz sepet terkini algıladığında (ör. son aktiviteden 1 saat sonra)
- Gerçek zamanlı sepet verileri veritabanınızda olduğunda
- Resimler, isimler, fiyatlarla birden fazla ürün görüntülemek istediğinizde
- Her kullanıcının farklı ürünleri ve miktarları olabildiğinde
- Mesajı arka uçunuzdan yönetmek istediğinizde
Örnek custom_data payload
Bu, bu örnek için Create Message API isteğidir.
E-posta şablonu
Bu örnek, aşağıdakileri görüntüleyen bir e-posta şablonunun nasıl oluşturulacağını gösterir:- Sepet öğe sayısı
- Bir for-döngüsü kullanarak her ürünü resim, ad, miktar ve fiyatla birlikte
- Müşterinin benzersiz sepet URL’sine bağlanan bir buton

Terk edilmiş sepet e-posta şablonu örneği
E-posta şablonunu oluşturun
Düzen yapısını ekleyin
- Satır 1, 2 ve 4: Paragraph bloğu olan tek sütun
- Satır 3: HTML | Paragraph | Paragraph | Paragraph olan dört sütun
- Satır 5: Button bloğu olan tek sütun

Terk edilmiş sepet için başlangıç e-posta şablonu
Öğe sayısını görüntüleyin
Döngüyü başlatın
cartdizisindeki her nesne üzerinde yineleme yapan bir döngü başlatır- Geçerli öğeyi temsil eden
productadında geçici bir değişken oluşturur {% for %}ve{% endfor %}arasındaki her şey sepet öğesi başına bir kez tekrarlanırproductyerine herhangi bir isim verebilirsiniz (ör.item,cartItem)—sadece tutarlı olun
Ürün detaylarını görüntüleyin
- Sütun 2:
{{product.product_name}} - Sütun 3:
{{product.product_quantity}} - Sütun 4:
{{product.product_price}}
- İlk yinelemede,
product= sepet dizisindeki ilk nesne {{product.product_image}}ilk öğenin resim URL’sini alır- İkinci yinelemede,
product= ikinci nesne - Satır tüm sepet öğeleri için otomatik olarak tekrarlanır
Döngüyü sonlandırın
{% for %} ifadesinin eşleşen bir {% endfor %} ifadesi olmalıdır. Bu eksik olursa e-posta render’ı bozulur.Sepet bağlantı butonu ekleyin

Stillenmemiş terk edilmiş sepet için tamamlanmış temel e-posta şablonu
Şablonu test edin
- Örnek
custom_datapayload kullanarak API isteğinizi ayarlayın - Kendinize e-postayı gönderin.
- Verilerin doğru görüntülendiğini doğrulayın.
Push şablonu
Push bildirimleri karakter sınırlarına ve işletim sistemi kısıtlamalarına sahiptir, bu nedenle tüm öğeleri göstermek yerine ilk ürünü görüntüleyin ve doğru dilbilgisiyle toplam sayıyı belirtin. İşte oluşturacağımız örnek push bildirimi:
Terk edilmiş sepet push şablonu örneği
template_id değerini custom_data özelliğiyle birlikte Create message API isteğinizde kullanın.Sorun giderme ve en iyi uygulamalar
- Basit tutun: Yalnızca şablonda gerçekten kullanacağınız verileri dahil edin
- 2KB altında kalın: Özellikle dizilerde payload boyutunuzu izleyin
- Tutarlı adlandırma kullanın: Baştan sona
snake_caseveyacamelCasekullanın - Göndermeden önce doğrulayın: Null değerleri, boş dizileri ve gerekli alanları kontrol edin
- İsteğe bağlı alanlar için her zaman default filtreleri kullanın:
Liquid
- Döngü yapmadan önce dizi boyutunu kontrol edin:
Liquid
- Uç durumlarla test edin: boş diziler, eksik alanlar, maksimum öğe sayıları
- Doğrulama hatalarını yakalamak için API yanıtlarını sunucu tarafında kaydedin
- Mesaj teslim oranlarını izleyin—ani düşüşler Liquid hatalarına işaret edebilir
- Kritik işlemsel mesajlar için yedek şablonları hazır bulundurun
- Karmaşık Liquid mantığı kullanmak yerine karmaşık verileri arka uçunuzda önceden biçimlendirin
- Şablonları önbelleğe alın ve birçok API çağrısında yeniden kullanın
- Yüksek hacimli işlemsel mesajları pazarlama kampanyalarından ayırmayı düşünün
Mesaj gönderiliyor ancak içerik boş
Mesaj gönderiliyor ancak içerik boş
- Alan adlarının
custom_datave şablon arasında tam olarak eşleştiğini doğrulayın (büyük/küçük harfe duyarlı) - Yazım hatalarını kontrol edin:
{{message.custom_data.name}}olmalı,{{message.custm_data.name}}değil - Eksik alanları yakalamak için default filtreleri kullanın
- Üretime geçmeden önce şablonları gerçek
custom_datayapısıyla test edin
API Hatası: İstek gövdesi çok büyük
API Hatası: İstek gövdesi çok büyük
custom_data 2KB sınırını aşıyorÇözümler:- Payload’ınızdan gereksiz alanları kaldırın
- Mümkün olduğunda alan adlarını ve değerleri kısaltın
- Dizileri ilk 3-5 öğeyle sınırlayın
- Büyük statik içeriği (tam HTML gibi) bunun yerine şablonunuza taşıyın
İlgili sayfalar
Mesaj kişiselleştirme
Create Message API
Liquid söz dizimi kullanımı
Templates
support@onesignal.com adresine e-posta gönderinLütfen şunları ekleyin:- Yaşadığınız sorunun ayrıntıları ve varsa yeniden üretme adımları
- OneSignal Uygulama Kimliğiniz
- Varsa Harici ID veya Abonelik ID
- Varsa OneSignal Panosunda test ettiğiniz mesajın URL’si
- İlgili günlükler veya hata mesajları