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
Liquid
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
Panelde veya Create Template API aracılığıyla bir Push, E-posta veya SMS Şablonu oluşturun.
API isteğinizde custom_data gönderin
Create Message API çağrısını şunlarla yapın:
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:Liquid
JSON
Text
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):Liquid
Liquid
Text
{{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.”
Toplu kişiselleştirme gereksinimleri:
- 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.
JSON
| Alan | Tür | Amaç |
|---|---|---|
cart_url | string | Müşterinin benzersiz sepet bağlantısı (butonlar/açılış URL’leri için) |
cart | array | Ürün listesi—sayma, döngü ve detay görüntülemeyi destekler |
product_image | string | Ürün görseli (dizideki her öğe için) |
product_name | string | Ürün adı (her öğe için) |
product_quantity | string | Miktar (her öğe için) |
product_price | string | Biçimlendirilmiş fiyat (her öğe için) |
Alanlara istediğiniz ismi verebilirsiniz—sadece şablonunuzdaki Liquid söz diziminin eşleştiğinden emin olun.
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

E-posta şablonunu oluşturun
Messages > Templates > New Email Template bölümüne gidin ve Sürükle ve Bırak Düzenleyiciyi açın.
Düzen yapısını ekleyin
Beş satır oluşturun:
- 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

Öğe sayısını görüntüleyin
Satır 1’e şunu ekleyin:Daha iyi dilbilgisi için “1 item” ve “2 items” şeklinde koşullu ifade kullanabilirsiniz, ancak terk edilmiş sepet e-postaları için çoğul genellikle kabul edilebilir.
Liquid
Liquid
Döngüyü başlatın
Sepetteki her öğe için ürün görüntüleme satırını tekrarlamak üzere bir for-döngüsü kullanın.Satır 2’de (döngü başlangıcı) Metin bloğuna şunu ekleyin:Bunun yaptığı:
Text
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
Bu 4 sütunlu satır resim, ad, miktar ve fiyatı gösterir. Döngünün içinde olduğu için her sepet öğesi için tekrarlanır.Satır 3’te (ürün detayları) yapılandırın:Sütun 1 - HTML bloğu (ürün görseli):Sütun 2–4 - Metin blokları (ürün adı, miktar, fiyat):
HTML
- 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
Tekrarlamanın nerede durduğunu belirlemek için döngüyü kapatın.Satır 4’te (döngü sonu) şunu ekleyin:
Liquid
Her
{% for %} ifadesinin eşleşen bir {% endfor %} ifadesi olmalıdır. Bu eksik olursa e-posta render’ı bozulur.Ş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.
Başarılı! Artık şablona kendi stilinizi uygulayabilirsiniz. Sürükle ve bırak ile e-posta tasarlama bölümüne bakı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:
Liquid
Daha fazla bilgi için Liquid söz dizimi kullanımı bölümüne bakın.
Liquid
Daha fazla bilgi için Bildirim görselleri ve zengin medya bölümüne bakın.
Liquid
Başarılı! Şablonu kaydedin ve test etmek için
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ş
Neden: Liquid söz dizimi hataları veya eşleşmeyen alan adlarıÇözümler:
- 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
Neden:
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
Data Tags, kullanıcı nitelikleri ve segmentasyon dahil OneSignal’daki tüm kişiselleştirme seçeneklerine genel bakış.
Create Message API
custom_data, hedefleme seçenekleri ve mevcut tüm alanlarla mesaj göndermek için eksiksiz API referansı.
Liquid söz dizimi kullanımı
Filtreler, koşullar, döngüler ve dize işleme dahil tam Liquid söz dizimi referansı.
Templates
Push, E-posta, SMS ve Uygulama İçi kanalları için yeniden kullanılabilir mesaj şablonları oluşturun ve yönetin.
Yardıma mı ihtiyacınız var?Destek ekibimizle sohbet edin veya
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ı
