TL;DR: Tally'nin ücretsiz planı nativ webhook içerir — bunları kullanarak form verilerini doğrudan Whapi.Cloud REST API'sine gönderin ve her gönderimden saniyeler içinde WhatsApp bildirimi iletin. Zapier hesabı gerekmez. İhtiyacınız olanlar: dağıtılmış bir alıcı (Node.js veya herhangi bir HTTP sunucusu), bir Whapi.Cloud API tokeni ve bağlı bir WhatsApp numarası. Kurulum 30 dakikadan az sürer. No-code'u tercih ediyor musunuz? Zapier ve Make bölümüne atlayın — ancak ücretsiz katmanı aştıktan sonra görev başına ücret hızla birikir.
Tally'nin ücretsiz nativ webhook'u, bir form gönderildiği anda WhatsApp bildirimi iletmek için yeterlidir. Zapier hesabına gerek yok, ücretli otomasyon katmanına gerek yok. Whapi.Cloud'a tek bir doğrudan REST çağrısı yeterli. Bu rehber, Tally'nin gönderdiği tam payload yapısını, çalışan bir Node.js alıcısını ve yük altında bildirimlerin sessizce kaybolmasını önleyen hata işlemeyi açıklar.
Bu Entegrasyonda "Middleware Yok" Ne Anlama Gelir
Middleware yok, webhook alıcınız doğrudan Whapi.Cloud'u çağırır demektir: form verileri Tally'den WhatsApp'a tek bir HTTP atlamasıyla iletilir, arada hiçbir üçüncü taraf platform bulunmaz.
Doğrudan REST çağrısı aynı zamanda iletim gecikmesini de azaltır: bir Tally gönderimi genellikle iki saniyeden kısa sürede WhatsApp mesajı olarak ulaşır; çok adımlı bir otomasyon hattının eklediği 3–15 saniyelik gidiş-dönüşe kıyasla.
Ödün vermek gerekiyor ama küçük: minimal bir HTTP sunucusu veya serverless fonksiyon yazıyorsunuz, ancak görev başına faturalamayı ve harici bağımlılığı ortadan kaldırıyorsunuz. Üç adım, tek veri yolu: Tally webhook'u tetikler, alıcınız Whapi.Cloud'u çağırır, WhatsApp mesajı iletir — hiçbir adımda ücretli aracı yok.
Başlamadan Önce Gerekenler
Üç ön koşul: bağlı bir WhatsApp numarasıyla Whapi.Cloud hesabı, alıcınız için herkese açık bir HTTPS endpoint'i ve herhangi bir planda Tally formu.
-
Bağlı numarayla Whapi.Cloud hesabı: panel.whapi.cloud/register adresine kaydolun, QR kodu tarayarak bir WhatsApp numarası bağlayın ve panelden API tokeninizi kopyalayın. QR tarama yaklaşık iki dakika sürer — resmi API katılımından farklı olarak Meta iş doğrulaması gerekmez.
-
Herkese açık HTTPS endpoint'i: Tally, webhook payload'larını göndermek için erişilebilir bir URL gerektirir. Herhangi bir bulut sunucusu, VPS veya serverless fonksiyon işe yarar. Yerel test için, dağıtmadan önce payload'ları incelemek üzere ngrok veya webhook.site kullanın.
-
Tally formu: Herhangi bir Tally planında herhangi bir form; webhook'lar yükseltme gerektirmeksizin ücretsiz planda kullanılabilir.
Tally Form Verilerini Nasıl Gönderir: Webhook Payload'ını Anlama
Bir form gönderildiğinde Tally, webhook URL'nize HTTP POST aracılığıyla tek bir JSON nesnesi gönderir. Kritik kısım data.fields: her nesnenin alan etiketi, benzersiz anahtar, alan türü ve gönderilen değeri içerdiği bir dizidir.
Üç alanlı bir iletişim formu için tipik bir Tally webhook payload'ı şöyle görünür:
{
"eventId": "3c679025-76b0-4a17-a4e5-f54ac2c5d7e0",
"eventType": "FORM_RESPONSE",
"createdAt": "2026-05-04T08:30:00.000Z",
"data": {
"responseId": "mApVL4",
"submissionId": "mApVL4",
"formId": "wkaBcd",
"formName": "Contact Form",
"createdAt": "2026-05-04T08:30:00.000Z",
"fields": [
{
"key": "question_mLpNx3",
"label": "Full Name",
"type": "INPUT_TEXT",
"value": "Jane Smith"
},
{
"key": "question_Bq7kL2",
"label": "Email",
"type": "INPUT_EMAIL",
"value": "[email protected]"
},
{
"key": "question_Kp2mQ9",
"label": "Phone",
"type": "INPUT_PHONE_NUMBER",
"value": "+1 415 555 1234"
}
]
}
}
Her alanın key'i, forma özgü benzersiz bir kimlik (ör. question_mLpNx3) olup formdan forma değişir. Kendi formunuzun payload'ını inceleyip belirli anahtarları sabitlemediğiniz sürece alıcı kodunuzdaki aramalarda label alanını kullanın.
Etiketle arama daha okunabilirdir ve Tally form düzenlemelerinden sağ çıkar. Sabit kodlanmış anahtarlar biraz daha hızlıdır ama bir alanı yeniden adlandırırsanız bozulur. Lead bildirim alıcısı için etiketle arama pratik varsayılandır.
Tally Alanlarını WhatsApp Mesajına Eşleme
En basit model: data.fields'i yineleyin, label'e göre bulun ve value'yu bir mesaj şablonu dizesine enterpolasyon yapın. Çoklu seçim alanları ve dosya yükleme alanları diziler döndürür — formunuz bu türleri içeriyorsa bunları ayrıca işleyin. Tally alan etiketlerini WhatsApp mesaj değişkenlerine eşlemek, ölçekte kişiselleştirilmiş lead uyarılarını mümkün kılar: her gönderim genel bir ping yerine adlandırılmış bir bildirime dönüşür.
Adım Adım: Tally Formlarını Whapi.Cloud Üzerinden WhatsApp'a Bağlama
Entegrasyonun iki bileşeni vardır: Whapi.Cloud WhatsApp teslimini yönetir, Tally veri gönderimini tetikler. Tally ayarlarını açtığınızda webhook URL'si hazır olsun diye önce Whapi.Cloud'u yapılandırın.
Tally webhook'u ücretsiz planda mevcuttur — özel bir webhook URL'si yapılandırmak için ücretli yükseltme gerekmez.
Adım 1: WhatsApp Numaranızı Whapi.Cloud'a Bağlayın
Whapi.Cloud paneline giriş yapın, yeni bir kanal oluşturun ve bildirimleri gönderecek WhatsApp hesabıyla QR kodunu tarayın. Bağlandıktan sonra, kanal sayfasında gösterilen API tokenini kopyalayın. Bu token her API isteğinin Authorization: Bearer başlığına gider.
Tokeni koda sabitlemek yerine bir ortam değişkenine (WHAPI_TOKEN) kaydedin. Panel, numarayı yeniden bağlamadan istediğiniz zaman tokeni yeniden oluşturmanıza izin verir.
Adım 2: Webhook Alıcınızı Dağıtın
Aşağıdaki kod bölümündeki Node.js alıcısını, herkese açık HTTPS URL'li herhangi bir sunucu veya serverless platforma dağıtın. Alıcı, yapılandırılan yolda POST isteklerini kabul etmeli ve birkaç saniye içinde 200 yanıtı döndürmelidir — Tally, 2xx olmayan herhangi bir yanıtı iletim hatası olarak kabul eder. Hızlı test için, dağıtmadan önce webhook'u webhook.site'a yönlendirin veya yerel bir sunucuyu açmak için ngrok http 3000 kullanın.
Adım 3: Tally'de Webhook URL'sini Yapılandırın
Tally formunuzu açın, Entegrasyonlar → Webhook'lar bölümüne gidin ve alıcınızın HTTPS URL'sini yapıştırın. Tally, her form gönderiminde bu URL'ye bir POST isteği gönderir. Tally tarafında kimlik doğrulama başlığı yapılandırması gerekmez — güvenlik, istekleri kabul edip Whapi.Cloud'u Bearer tokeninizle çağıran alıcınızda yer alır.
Alıcınız bir güvenlik duvarının veya IP izin listesinin arkasındaysa, Tally'nin statik bir giden IP aralığı yayımlamadığını unutmayın. Üretim dağıtımları için açık bir herkese açık endpoint veya özel bir giriş proxy'si kullanın.
Adım 4: Gerçek Gönderimle Test Edin
Tally'nin Webhook'lar panelindeki Test gönderimi gönder düğmesine tıklayın. Alıcınız gelen payload'ı kaydedecektir. data.fields'in kodunuzun beklediği etiketleri içerdiğini doğrulayın, ardından WhatsApp mesajının hedef numarada ulaştığını kontrol edin. Mesaj gelmiyorsa, başka bir şeyi ayarlamadan önce Whapi.Cloud yanıt durumu için alıcı günlüklerini kontrol edin.
Webhook Alıcı Kodu: Node.js Uygulaması
Aşağıdaki alıcı tam olarak bir iş yapar: Tally'nin payload'ından ilgili alanları çıkarmak ve Whapi.Cloud'un /messages/text endpoint'i aracılığıyla biçimlendirilmiş bir WhatsApp mesajı göndermek. Express ile Node.js kullanır, 50 satırdan az, SDK gerekmez.
Çalıştırmadan önce bağımlılıkları yükleyin: npm install express node-fetch. Node 18+ yerleşik nativ fetch'e sahiptir, bu nedenle modern bir runtime kullanıyorsanız node-fetch importunu atlayabilirsiniz.
const express = require('express');
const fetch = require('node-fetch'); // omit if Node 18+ (native fetch available)
const app = express();
app.use(express.json());
const WHAPI_TOKEN = process.env.WHAPI_TOKEN; // Whapi.Cloud API token from dashboard
const NOTIFY_PHONE = process.env.NOTIFY_PHONE; // Recipient number, e.g. 14155551234
// Find a submitted value by field label inside Tally's fields array
function getField(fields, label) {
const found = fields.find(f => f.label === label);
return found ? String(found.value ?? '') : 'N/A';
}
app.post('/webhook', async (req, res) => {
const fields = req.body?.data?.fields ?? [];
const name = getField(fields, 'Full Name');
const email = getField(fields, 'Email');
const phone = getField(fields, 'Phone');
// Compose the WhatsApp notification body
const messageBody = `New Tally submission:\n\nName: ${name}\nEmail: ${email}\nPhone: ${phone}`;
let whapiStatus = 'sent';
try {
const response = await fetch('https://gate.whapi.cloud/messages/text', {
method: 'POST',
headers: {
'Authorization': `Bearer ${WHAPI_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
to: NOTIFY_PHONE, // phone number with country code, no leading +
body: messageBody
})
});
if (!response.ok) {
const err = await response.json().catch(() => ({}));
console.error('[whapi] error', response.status, err);
whapiStatus = 'failed';
// Still return 200 to Tally; Whapi errors do not benefit from Tally retrying
}
} catch (networkErr) {
console.error('[whapi] network error', networkErr.message);
whapiStatus = 'failed';
}
res.json({ received: true, whatsapp: whapiStatus });
});
app.listen(process.env.PORT || 3000, () =>
console.log('Webhook receiver listening')
);
Authorization: Bearer başlığı Whapi.Cloud'un gerektirdiği tek kimlik doğrulamadır — SDK yüklemesi yok, OAuth akışı yok, yapılandırılacak kütüphane yok. API düz JSON kabul eder ve düz JSON döndürür.
to alanı, alıcının telefon numarasını ülke kodu ile birlikte ve başında artı işareti olmadan kabul eder (ör. ABD numarası için 14155551234). WhatsApp Chat ID formatı ([email protected]) da çalışır. API her ikisini de kabul eder.
Tam alıcıyı dağıtmadan önce hızlı bir cURL testi için token ve numaranın doğru olduğunu doğrulamak amacıyla manuel olarak bir mesaj gönderin:
curl -X POST https://gate.whapi.cloud/messages/text \
-H "Authorization: Bearer YOUR_WHAPI_TOKEN" \
-H "Content-Type: application/json" \
-d '{"to": "14155551234", "body": "Test from Tally webhook setup"}'
Başarılı bir yanıt, gönderilen mesaj kimliğini içeren bir message alanına sahip bir JSON nesnesi döndürür. Bu test çalışırsa token ve numara yapılandırmanız doğrudur. Tam alıcıyı dağıtmaya geçin.
Hata İşleme: Whapi.Cloud İsteği Başarısız Olduğunda Ne Olur
Whapi.Cloud'a yapılan başarısız bir HTTP isteği otomatik olarak yeniden denenmez. Alıcınız, WhatsApp çağrısının başarılı olduğunu doğrulamadan önce Tally'ye 200 gönderirse, bildirim Tally'nin günlüklerinde hiçbir iz bırakmadan kaybolur.
200'ü Tally'ye yalnızca Whapi.Cloud çağrısı tamamlandıktan sonra gönderin — hataları yerel olarak günlüğe kaydedin ve Tally'nin yeniden gönderimini beklemek yerine yeniden deneme için kuyruğa alın.
Pratikte karşılaşacağınız üç hata kodu ve anlamları:
| HTTP Durumu | Neden | Çözüm |
401 Unauthorized |
API tokeni eksik, süresi dolmuş veya yanlış kopyalanmış | Whapi.Cloud panelinde tokeni yeniden oluşturun ve WHAPI_TOKEN'i güncelleyin |
400 Bad Request |
Hatalı payload: genellikle eksik to değeri veya yanlış telefon numarası formatı |
req.body'yi günlüğe kaydedin ve to alanının yalnızca ülke koduyla rakamlar içerdiğini doğrulayın |
5xx Server Error |
Geçici Whapi.Cloud veya WhatsApp ağ sorunu | Üstel geri çekilmeli yeniden denemeler uygulayın; çoğu geçici hata saniyeler içinde çözülür |
Yüksek hacimli lead formlarını kullanan ekipleri şaşırtan bir senaryo: hızlı art arda yüzlerce aynı mesaj göndermek WhatsApp'ın sunucu taraflı spam tespitini tetikleyebilir. Bu bir Whapi.Cloud API sınırı değildir — Whapi.Cloud üretim planları mesaj başına hız sınırı uygulamaz. Kısıtlama, hacim artışlarını izleyen WhatsApp altyapısından gelir. Patlama senaryoları için gönderimler arasına kısa bir gecikme ekleyin veya işlemeden önce gönderimler kuyruğa alın.
No-Code Alternatifler: Zapier, Make veya n8n Ne Zaman Kullanılır
Dağıtacak sunucusu olmayan ekipler için Zapier, Make ve n8n, Tally'yi her gönderimle büyüyen görev başına faturalanma karşılığında backend kodu olmadan WhatsApp'a bağlar.
-
Zapier: En kolay GUI, en büyük önceden oluşturulmuş bağlayıcı kütüphanesi. Ücretsiz plan ayda 100 görevi destekler, yalnızca çok düşük hacimli test için yeterlidir. Ücretli planlar zap (görev) başına faturalandırır, dolayısıyla her form gönderimi bir kredi kullanır. Ekibin teknik kapasitesi yoksa ve hacim ayda birkaç yüz gönderimin altında kalıyorsa Zapier'i seçin.
-
Make (eski adıyla Integromat): Çok adımlı akışlar için Zapier'den daha güçlü; ücretsiz plan ayda 1.000 işleme izin verir. Fiyatlandırma işlem başına ölçeklenir. Kod yazmadan koşullu mantığa ihtiyaç duyan teknik olmayan ekipler için iyi bir orta yol.
-
n8n: Açık kaynak ve kendi sunucusunda barındırılabilir. Kendi barındırılan örneklerde sınırsız iş akışı, işlem başına ücretlendirme yok. Görev başına tekrarlayan ücretler olmadan otomasyon esnekliği isteyen maliyet bilincine sahip teknik ekipler için doğru seçim. Adım adım bağlantı rehberi için Whapi.Cloud n8n entegrasyon rehberine bakın.
Teknik olmayan ekipler Zapier veya Make kullanır; geliştiriciler Tally'nin nativ webhook'unu doğrudan bir Whapi.Cloud REST çağrısıyla kullanır. Belirleyici faktör teknik karmaşıklık değil — gönderim hacminizin ne kadar öngörülebilir olduğu ve görev başına faturalanmanın bütçenize uyup uymadığıdır.
Maliyet Karşılaştırması: Doğrudan API ile Middleware Platformları
Zapier ve Make, görev veya işlem başına ücret alır: WhatsApp bildirimi tetikleyen her form gönderimi bir faturalanabilir birim tüketir. Whapi.Cloud, mesaj başına değil, bağlı WhatsApp numarası başına aylık ücret alır.
Whapi.Cloud'un numara başına sabit aylık ücreti, form tarafından tetiklenen 5.000 mesajın 50 mesajla aynı maliyete geldiği anlamına gelir — middleware platformları her gönderimle doğrusal olarak faturalandırır.
| Yöntem | Ücretsiz Plan | Fiyatlandırma Modeli (Ücretli) | Kod Gerekli mi | En İyi Kullanım |
| Zapier | 100 görev/ay | Görev başına (zap); maliyet gönderimlerle artar | Hayır | Teknik olmayan ekipler, düşük hacim |
| Make | 1.000 işlem/ay | İşlem başına; maliyet gönderimlerle artar | Hayır | Çok adımlı akışlar, no-code tercihi |
| n8n (kendi barındırma) | Sınırsız | Yalnızca sunucu maliyetleri (sabit altyapı) | Kısmen (yapılandırma tabanlı) | Teknik ekipler, maliyet bilinçli |
| Whapi.Cloud (doğrudan) | 5 konuşma/ay (Sandbox) | WhatsApp numarası başına sabit aylık (hacimden bağımsız) | Evet (~50 satır) | Geliştiriciler, öngörülebilir maliyet, yüksek hacim |
Fiyatlandırma modeli farkı en çok gönderim hacminin öngörülemeyen olduğu durumlarda önemlidir. Bir ürün lansmanı veya viral kampanya, form gönderimlerini bir gecede 10 katına çıkarabilir. Görev başına middleware ile bu ani artış otomasyon faturanızı çarpar. Whapi.Cloud'un numara başına aboneliğiyle aynı artış ekstra maliyete yol açmaz.
Üretim WhatsApp numarasına bağlanmadan önce tam akışı test etmek için Whapi.Cloud'un ücretsiz Sandbox'ıyla başlayın. Sandbox, zaman sınırı olmaksızın kalıcı olarak ücretsizdir — canlıya geçmeden önce alıcı kodunuzu, alan eşlemenizi ve hata işlemenizi doğrulamak için kullanın. Tüm endpoint'lerde istek/yanıt ayrıntıları için tam Whapi.Cloud API belgelerine bakın.
Tally webhook'ları, HTTP destekleyen herhangi bir dil veya runtime ile çalışır. Buradaki Node.js örneği bir başlangıç noktasıdır; aynı mantık Python (requests veya httpx ile), Go, PHP veya Cloudflare Worker için geçerlidir. WhatsApp tarafında dil bağımlılığı olmaması, Tally veya Whapi.Cloud yapılandırmasını değiştirmeden alıcı dilini değiştirebileceğiniz anlamına gelir.









