लॉग इनमुफ़्त ट्रायल शुरू करें
Meta Tech Provider

WhatsApp मैसेज को Google Sheets में लॉग करें और शीट से भेजें

नंबर के वेबहुक डेस्टिनेशन को ऐसे n8n वर्कफ़्लो की ओर रखें जिसका Google Sheets नोड हर मैसेज पर एक पंक्ति जोड़े: भेजने वाला, नाम, टेक्स्ट, मैसेज आईडी और समय। शीट से भेजने के लिए Apps Script का एक फ़ंक्शन पंक्तियों पर लूप चला सकता है और नंबर की phone_number_id और टोकन के साथ UrlFetchApp से Cloud API को कॉल कर सकता है। टीम जवाब WhatsApp Business ऐप से ही देती रहती है।

60 / min

Google Sheets API में प्रति मिनट, प्रति उपयोगकर्ता, प्रति प्रोजेक्ट लिखने के अनुरोधों की सीमा; प्रति प्रोजेक्ट 300।

20,000 / day

सामान्य Google खाते के लिए Apps Script URL Fetch कॉल की सीमा; Workspace खातों को 100,000 मिलते हैं।

6 min

एक Apps Script एक्ज़ीक्यूशन रोके जाने से पहले अधिकतम कितनी देर चल सकता है।

हर WhatsApp मैसेज एक पंक्ति कैसे बनता है?

Meta नंबर पर आने वाला हर मैसेज आपके तय किए वेबहुक डेस्टिनेशन पर भेजता है। यहाँ यह n8n का Webhook नोड है, जो Meta के पुष्टि अनुरोध का जवाब भी देता है। अगला नोड Google Sheets है, जिसमें Append Row ऑपरेशन पेलोड के फ़ील्ड कॉलम में मैप करता है: भेजने वाले का नंबर, प्रोफ़ाइल नाम, टेक्स्ट, WhatsApp मैसेज आईडी, टाइमस्टैंप और प्राप्त करने वाले फ़ोन नंबर की आईडी।

अगर आप चाहते हैं कि रीट्राई से कोई नुकसान न हो, तो सीधे Append की जगह मैसेज आईडी पर आधारित Append or Update Row इस्तेमाल करें। Meta को लगे कि डिलीवरी फ़ेल हुई है तो वह मैसेज दोबारा भेजता है, और आईडी को कुंजी बनाने से दूसरी डिलीवरी उसी पंक्ति का अपडेट बन जाती है।

Coexistence नंबर पर WhatsApp Business ऐप से टाइप किए गए जवाब उसी वेबहुक पर smb_message_echoes इवेंट के रूप में आते हैं। उन्हें direction कॉलम के साथ लॉग करें, तो शीट में दोनों तरफ़ की बातचीत रहती है।

Sheets का कोटा कहाँ अड़चन बनता है?

प्रति उपयोगकर्ता लिखने पर। Sheets API प्रति प्रोजेक्ट प्रति मिनट 300 और प्रति उपयोगकर्ता प्रति प्रोजेक्ट प्रति मिनट 60 लिखने के अनुरोध देता है, और n8n का एक क्रेडेंशियल एक उपयोगकर्ता गिना जाता है। इसलिए हर मैसेज पर एक पंक्ति जोड़ने वाला वर्कफ़्लो लगातार लगभग एक मैसेज प्रति सेकंड संभाल सकता है।

ज़्यादातर दुकानों के नंबर के लिए यह काफ़ी है। ब्रॉडकास्ट टेम्पलेट के बाद, जब कुछ सौ ग्राहक कुछ ही मिनटों में जवाब देते हैं, तब यह काफ़ी नहीं रहता। तब API 429 Too Many Requests लौटाता है, और रीट्राई के बिना पंक्तियाँ गुम हो जाती हैं।

दो उपाय हैं, और दोनों में से कोई एक काफ़ी है। Google Sheets नोड पर प्रतीक्षा के साथ रीट्राई चालू करें, जो Google की अपनी सलाह के अनुसार धीरे-धीरे बढ़ते अंतराल पर दोबारा कोशिश करता है। या बैच बनाएँ: n8n से तीस सेकंड तक मैसेज इकट्ठा करवाएँ और उन्हें एक ही अनुरोध में जोड़ें, जिससे कई लिखाइयाँ एक बन जाती हैं।

शीट से टेम्पलेट कैसे भेजें?

Apps Script से, शीट के Extensions मेनू में। एक फ़ंक्शन उन पंक्तियों को पढ़ता है जो अभी नहीं भेजी गईं, हर एक के लिए UrlFetchApp से Cloud API के मैसेज एंडपॉइंट को कॉल करता है, और लौटा हुआ मैसेज आईडी और समय पंक्ति में लिख देता है। इसे टाइम-ड्रिवन ट्रिगर हर कुछ मिनट में चला सकता है, या आप कस्टम मेनू से हाथ से चला सकते हैं।

एक्सेस टोकन को कोड में रखने के बजाय स्क्रिप्ट प्रॉपर्टी में रखें, ताकि स्क्रिप्ट देख सकने वाला हर व्यक्ति उसे न देख पाए।

कोटा याद रखें। सामान्य Google खाते को एक दिन में 20,000 URL Fetch कॉल मिलते हैं और Workspace खाते को 100,000, और हर एक्ज़ीक्यूशन छह मिनट बाद रुक जाता है। पंक्तियों को छोटे हिस्सों में प्रोसेस करें और आगे बढ़ने से पहले हर पंक्ति को भेजी हुई चिह्नित करें, ताकि रुका हुआ रन वहीं से फिर शुरू हो और कुछ दोबारा न भेजे।

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

आम गड़बड़ियाँ

  • मैसेज आईडी पर कुंजी के बिना जोड़ना। तब Meta की रीट्राई एक ही मैसेज को दो पंक्तियों में लिख देती है।
  • जवाबों की बाढ़ के दौरान एक ही क्रेडेंशियल से हर मैसेज पर एक पंक्ति लिखना। प्रति उपयोगकर्ता प्रति मिनट 60 लिखाइयों की सीमा 429 लौटाती है और पंक्तियाँ खो जाती हैं।
  • जिन लोगों ने 24 घंटे से नहीं लिखा, उन्हें शीट से फ़्री टेक्स्ट भेजना। उस विंडो के बाहर केवल मंज़ूर टेम्पलेट ही डिलीवर होता है।
EasyCoexistence के साथ ऐसा करना

easycoexistence.com पर नंबर कनेक्ट करें, उसके वेबहुक डेस्टिनेशन को n8n वर्कफ़्लो की ओर रखें, और phone_number_id व टोकन स्क्रिप्ट में कॉपी करें। कीमत US$ 9 प्रति नंबर प्रति माह से शुरू होती है और नंबर जोड़ने के साथ घटकर US$ 1 रह जाती है, पहले 3 दिन मुफ़्त।

अक्सर पूछे जाने वाले सवाल

क्या n8n की जगह Make या Zapier इस्तेमाल कर सकते हैं?

हाँ। Make का कस्टम वेबहुक या Zapier का catch hook मैसेज पाता है, और उनका Google Sheets स्टेप पंक्ति जोड़ देता है।

n8n किस Google खाते से लिखता है?

उस खाते से जिसने n8n का Google क्रेडेंशियल अधिकृत किया है। उस खाते के पास शीट का एडिट एक्सेस होना चाहिए, और वर्कफ़्लो उसी खाते के प्रति उपयोगकर्ता लिखने के कोटे का इस्तेमाल करता है।

क्या फ़ोन कॉलम सही फ़ॉर्मैट में है?

नंबर सादे टेक्स्ट के रूप में रखें: देश कोड के साथ अंक और प्लस चिह्न के बिना, जो वही रूप है जो Meta भेजता है। वरना Sheets उन्हें संख्या मान लेता है, जिससे शुरुआती प्लस हट जाता है और लंबे मान का रूप बदल सकता है।

क्या EasyCoexistence मैसेज की कोई प्रति रखता है?

नहीं। Meta हर वेबहुक आपके n8n यूआरएल पर भेजता है, और शीट ही इकलौती प्रति है।

पढ़ना जारी रखें

शुरू करने के लिए तैयार हैं?

WhatsApp Coexistence को महीनों में नहीं, मिनटों में कॉन्फ़िगर करें। ऐप्लिकेशन मोबाइल पर काम करता रहता है।

मुफ़्त ट्रायल शुरू करें

इस तारीख को सत्यापित

Google Sheets और Cloud API पर WhatsApp