Conectați-văÎncepeți perioada de probă gratuită
Meta Tech Provider

Salvați mesajele WhatsApp în Google Sheets și trimiteți dintr-un tabel

Indicați destinația webhook-ului numărului către un workflow n8n al cărui nod Google Sheets adaugă câte un rând pentru fiecare mesaj: expeditor, nume, text, ID-ul mesajului și ora. Pentru trimitere dintr-un tabel, o funcție Apps Script poate parcurge rândurile și apela Cloud API cu UrlFetchApp, folosind ID-ul numărului de telefon și token-ul. Echipa continuă să răspundă din aplicația WhatsApp Business.

60 / min

Cereri de scriere permise de Google Sheets API pe minut per utilizator per proiect; 300 per proiect.

20,000 / day

Apeluri URL Fetch din Apps Script pentru un cont Google personal; conturile Workspace primesc 100.000.

6 min

Durata maximă a unei singure execuții Apps Script înainte de a fi oprită.

Cum devine fiecare mesaj WhatsApp un rând?

Meta trimite fiecare mesaj de pe număr la destinația webhook-ului setată de dumneavoastră, aici un nod Webhook n8n care răspunde și la cererea de verificare a Meta. Următorul nod este Google Sheets, cu operațiunea Append Row, care mapează câmpurile din payload în coloane: numărul expeditorului, numele de profil, textul, ID-ul mesajului WhatsApp, marcajul de timp și ID-ul numărului de telefon care a primit mesajul.

Folosiți Append or Update Row, cu cheia pe ID-ul mesajului, în locul unei adăugări simple, dacă vreți ca reîncercările să fie inofensive. Meta retrimite un mesaj când consideră că livrarea a eșuat, iar cheia pe ID transformă a doua livrare într-o actualizare a aceluiași rând.

Pe un număr Coexistence, răspunsurile scrise în aplicația WhatsApp Business ajung la același webhook ca evenimente smb_message_echoes. Înregistrați-le cu o coloană de direcție și tabelul conține ambele părți ale conversației.

Unde se simte limita de cotă a Sheets?

La scrierile per utilizator. Google Sheets API permite 300 de cereri de scriere pe minut per proiect și 60 pe minut per utilizator per proiect, iar o credențială n8n înseamnă un singur utilizator. Un workflow care adaugă un rând pe mesaj poate deci duce cam un mesaj pe secundă, susținut.

Pentru majoritatea numerelor de magazin e suficient. Nu mai este suficient după un template trimis în masă, când câteva sute de clienți răspund în câteva minute. API-ul răspunde atunci cu 429 Too Many Requests și, fără reîncercări, rândurile se pierd.

Două remedii, oricare dintre ele ajunge. Activați reîncercările cu pauză pe nodul Google Sheets, ceea ce corespunde recomandării Google de a încetini exponențial. Sau grupați: lăsați n8n să adune mesajele treizeci de secunde și să le adauge într-o singură cerere, astfel încât multe scrieri devin una.

Cum trimiteți template-uri dintr-un tabel?

Cu Apps Script, din meniul Extensions al tabelului. O funcție citește rândurile netrimise, apelează endpoint-ul de mesaje din Cloud API cu UrlFetchApp pentru fiecare și scrie în rând ID-ul mesajului returnat și ora. Un declanșator periodic o poate rula la câteva minute, sau o puteți rula manual dintr-un meniu personalizat.

Păstrați token-ul de acces în proprietățile scriptului, nu în cod, ca cei care pot vedea scriptul să nu îl vadă.

Țineți cont de cote. Un cont Google personal primește 20.000 de apeluri URL Fetch pe zi, iar un cont Workspace 100.000, și fiecare execuție se oprește după șase minute. Procesați rândurile pe loturi și marcați fiecare rând ca trimis înainte de a trece mai departe, astfel încât o rulare oprită să reia de unde a rămas, în loc să trimită de două ori.

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());
  }
}

Greșeli frecvente

  • Adăugarea fără cheie pe ID-ul mesajului. Reîncercările Meta scriu atunci același mesaj în două rânduri.
  • Scrierea unui rând per mesaj printr-o singură credențială în timpul unui val de răspunsuri. Limita de 60 de scrieri pe minut per utilizator returnează 429 și rândurile se pierd.
  • Trimiterea de text liber din tabel către persoane care nu au scris în ultimele 24 de ore. În afara acestei ferestre ajunge doar un template aprobat.
Faceți acest lucru cu EasyCoexistence

Conectați numărul la easycoexistence.com, indicați destinația webhook-ului către workflow-ul n8n și copiați ID-ul numărului de telefon și token-ul în script. De la US$ 9 pe număr pe lună, scăzând până la US$ 1 pe măsură ce adăugați numere, cu primele 3 zile gratuite.

Întrebări frecvente

Pot folosi Make sau Zapier în loc de n8n?

Da. Un webhook personalizat Make sau un catch hook Zapier primește mesajul, iar pasul lor Google Sheets adaugă rândul.

Cu ce cont Google scrie n8n?

Cu cel care a autorizat credențiala Google din n8n. Contul respectiv are nevoie de acces de editare la tabel, iar cota lui de scriere per utilizator este cea consumată de workflow.

Este coloana de telefon formatată corect?

Stocați numerele ca text simplu, cifre cu prefixul de țară și fără semnul plus, adică forma pe care o trimite Meta. Altfel Sheets le tratează ca numere, ceea ce elimină plusul de la început și poate reformata valorile lungi.

Păstrează EasyCoexistence o copie a mesajelor?

Nu. Meta livrează fiecare webhook la URL-ul dumneavoastră n8n, iar tabelul este singura copie.

Continuați să citiți

Gata să începeți?

Configurați WhatsApp Coexistence în câteva minute, nu luni. Aplicația continuă să funcționeze pe telefon.

Începeți perioada de probă gratuită

Verificat la

WhatsApp și Google Sheets pe Cloud API