Giriş yapınÜcretsiz denemeyi başlatın
Meta Tech Provider

WhatsApp mesajlarını Google Sheets'e kaydedin ve tablodan mesaj gönderin

Numaranın webhook hedefini, her mesaj için bir satır ekleyen Google Sheets düğümlü bir n8n iş akışına yönlendirin: gönderen, ad, metin, mesaj kimliği ve saat. Tablodan göndermek için bir Apps Script işlevi satırlar üzerinde dönüp numaranın phone number id değeri ve token'ı ile UrlFetchApp kullanarak Cloud API'yi çağırabilir. Ekip yanıtları WhatsApp Business uygulamasından vermeye devam eder.

60 / min

Google Sheets API'nin kullanıcı başına, proje başına dakikada izin verdiği yazma isteği sayısı; proje başına 300.

20,000 / day

Bireysel Google hesabı için Apps Script URL Fetch çağrı sayısı; Workspace hesapları 100.000 alır.

6 min

Tek bir Apps Script yürütmesinin durdurulmadan önce çalışabileceği en uzun süre.

Her WhatsApp mesajı nasıl satıra dönüşür?

Meta, numaraya gelen her mesajı sizin belirlediğiniz webhook hedefine gönderir. Burada bu hedef, Meta'nın doğrulama isteğini de yanıtlayan bir n8n Webhook düğümüdür. Sonraki düğüm, Append Row işlemli Google Sheets düğümüdür ve payload'daki alanları sütunlara eşler: gönderenin numarası, profil adı, metin, WhatsApp mesaj kimliği, zaman damgası ve mesajı alan phone number id.

Yeniden denemelerin zarar vermemesini istiyorsanız düz ekleme yerine mesaj kimliğine göre anahtarlanmış Append or Update Row kullanın. Meta, bir teslimatın başarısız olduğunu düşündüğünde mesajı yeniden iletir; kimliğe göre anahtarlama ikinci teslimatı aynı satırın güncellemesine çevirir.

Coexistence numarasında WhatsApp Business uygulamasından yazılan yanıtlar aynı webhook'a smb_message_echoes olayları olarak gelir. Bunları bir yön sütunuyla kaydederseniz tabloda konuşmanın iki tarafı da bulunur.

Sheets kotası nerede sıkıntı çıkarır?

Kullanıcı başına yazmada. Sheets API proje başına dakikada 300, kullanıcı başına proje başına dakikada 60 yazma isteğine izin verir ve bir n8n kimlik bilgisi tek kullanıcıdır. Mesaj başına bir satır ekleyen iş akışı bu yüzden sürekli olarak saniyede yaklaşık bir mesaj alabilir.

Bu, çoğu mağaza numarası için fazlasıyla yeterlidir. Toplu bir şablon gönderiminden sonra, birkaç yüz müşteri dakikalar içinde yanıt verdiğinde yetmez olur. API bu durumda 429 hatası döndürür ve yeniden deneme yoksa satırlar kaybolur.

İkisinden biri yeterli iki çözüm var. Google Sheets düğümünde bekleme süreli yeniden denemeleri açın; bu, Google'ın üstel geri çekilme önerisiyle uyumludur. Ya da toplu yazın: n8n'in mesajları otuz saniye biriktirip tek istekte eklemesini sağlayın, böylece çok sayıda yazma tek yazmaya iner.

Tablodan şablonlar nasıl gönderilir?

Apps Script ile, tablonun Extensions menüsünden. Bir işlev henüz gönderilmemiş satırları okur, her biri için UrlFetchApp ile Cloud API mesaj uç noktasını çağırır ve dönen mesaj kimliğini ile saati satıra yazar. Zamana bağlı bir tetikleyici bunu birkaç dakikada bir çalıştırabilir ya da özel bir menüden elle çalıştırabilirsiniz.

Erişim token'ını koda değil betik özelliklerine kaydedin; böylece betiği görüntüleyebilen herkes onu görmez.

Kotaları aklınızda tutun. Bireysel bir Google hesabı günde 20.000, Workspace hesabı 100.000 URL Fetch çağrısı alır ve her yürütme altı dakika sonra durur. Satırları parçalar halinde işleyin ve devam etmeden önce her birini gönderildi olarak işaretleyin; durdurulan bir çalıştırma iki kez göndermek yerine kaldığı yerden devam eder.

Apps Script: send one approved template per unsent row
function sendPending() {
  const token = PropertiesService.getScriptProperties().getProperty("WHATSAPP_TOKEN");
  const sheet = SpreadsheetApp.getActive().getSheetByName("Send");
  const rows = sheet.getDataRange().getValues();
  for (let i = 1; i < rows.length; i++) {
    const [phone, name, sentAt] = rows[i];
    if (sentAt) continue;
    const res = UrlFetchApp.fetch("https://graph.facebook.com/v23.0/<PHONE_NUMBER_ID>/messages", {
      method: "post",
      contentType: "application/json",
      headers: { Authorization: "Bearer " + token },
      payload: JSON.stringify({
        messaging_product: "whatsapp", to: String(phone), type: "template",
        template: { name: "order_ready", language: { code: "en" },
          components: [{ type: "body", parameters: [{ type: "text", text: name }] }] },
      }),
    });
    sheet.getRange(i + 1, 3).setValue(new Date());
  }
}

Yaygın hatalar

  • Mesaj kimliğine göre anahtar kullanmadan eklemek. Meta'nın yeniden denemeleri aynı mesajı iki satıra yazar.
  • Yanıt yoğunluğu sırasında tek bir kimlik bilgisiyle mesaj başına bir satır yazmak. Kullanıcı başına dakikada 60 yazma sınırı 429 hatası döndürür ve satırlar kaybolur.
  • Son 24 saatte yazmamış kişilere tablodan serbest metin göndermek. O pencerenin dışında yalnızca onaylı bir şablon teslim edilir.
Bunu EasyCoexistence'la yapmak

Numarayı easycoexistence.com üzerinden bağlayın, webhook hedefini n8n iş akışına yönlendirin ve phone number id ile token'ı betiğe kopyalayın. Numara başına aylık US$ 9'dan başlar, numara ekledikçe US$ 1'e düşer; ilk 3 gün ücretsizdir.

Sık sorulan sorular

n8n yerine Make veya Zapier kullanabilir miyim?

Evet. Make'in özel webhook'u ya da Zapier'in catch hook'u mesajı alır, onların Google Sheets adımı da satırı ekler.

n8n hangi Google hesabıyla yazar?

n8n Google kimlik bilgisini yetkilendiren hesapla. Bu hesabın tabloda düzenleme erişimi olmalıdır ve iş akışının harcadığı, onun kullanıcı başına yazma kotasıdır.

Telefon sütunu doğru biçimlendirilmiş mi?

Numaraları düz metin olarak saklayın: ülke koduyla rakamlar, artı işareti olmadan; Meta'nın gönderdiği biçim budur. Aksi halde Sheets bunları sayı sayar, baştaki artıyı siler ve uzun değerleri yeniden biçimlendirebilir.

EasyCoexistence mesajların bir kopyasını tutar mı?

Hayır. Meta her webhook'u sizin n8n URL'nize iletir ve tek kopya tablodur.

Okumaya devam edin

Başlamaya hazır mısınız?

WhatsApp Coexistence'ı aylar değil, dakikalar içinde kurun. Uygulama telefonda çalışmaya devam eder.

Ücretsiz denemeyi başlatın

Doğrulama tarihi

WhatsApp ve Google Sheets entegrasyonu (Cloud API)