Automation · Sales and quoting
Record WhatsApp leads in Google Sheets and leave a traceable follow-up
Record WhatsApp leads in Google Sheets while reducing duplicate rows, and keep follow-up traceable in the CRM with a note, tag, and optional reminder.
How do I record WhatsApp leads in Google Sheets while reducing duplicate rows and leave a clear follow-up?
The Met handling WhatsApp starts with the contact that already exists in the conversation, fills only the details the person provided, and checks the configured sheet before writing. First it verifies the tab and headers. It then reads the agreed range and looks for the contact ID. Phone or email can be a second check when those columns exist, but neither replaces the ID. When no prior row exists, it appends one with INSERT_ROWS and keeps the range returned by Google. It writes that range into a CRM note and applies the follow-up tag. A reminder is scheduled only when there is a future date and an approved template. Sheets stores the row; Meteor CRM remains the operational contact record.
What starts it
When the customer writes
It starts inside a WhatsApp conversation once the person provides the details required for registration. The contact already exists because they wrote to the channel. This flow does not create a second record and is not a bulk import from an external list.
Nothing to set up. The Met assigned to that channel picks up the conversation and runs the procedure inside it.
Who runs it
Met for commercial recording and follow-up
Sales team
It has no seeded name. It is the same Met that handles the message and already knows the conversation contact. Its job is to copy the agreed data into the sheet without losing the link to the CRM record or claiming that a row replaces commercial follow-up.
Channels: WhatsApp
What you need connected
- Meteor CRM Sell and serve
- Google Workspace Automate and collaborate
6 steps · 9 tools
The procedure, step by step
Each step shows the tool that runs. They belong to the real connector: if one of them stopped existing, this page would not build.
- 1
Start from the conversation contact
The contact ID comes from the WhatsApp context. The Met reads that record and checks name, phone, email, and the custom fields the operation chose to copy. If the person just provided a missing detail, it saves it to the same record. It does not invent, enrich, or validate information through another source, and it does not create a new contact.
- 2
Verify the file, tab, and headers
The spreadsheet_id is configured in advance. Metadata confirms that the agreed tab exists and gives its exact name. Reading the first row verifies the real column order, including contact_id. If a required column is missing or a header changed, the Met stops. Guessing the position would shift every value into the wrong column.
- 3
Look for an existing row before appending
The Met reads the used range in the tab and compares the contact_id column first. It uses phone or email only as secondary checks when the operation defined those columns, because both can change or be shared. Deduplication depends on the agreed headers and key. Google Sheets does not impose a unique constraint here by itself.
- 4
Append one row without overwriting existing data
If there is no match, it builds a one-row matrix in the same order as the headers and calls sheets_append on the configured range with INSERT_ROWS. Google searches for the table inside that range and adds the values after its last row. The response includes updatedRange and the row number, which are kept as evidence of what was written.
- 5
Leave the trail in the CRM before closing
The internal note stores the spreadsheet_id or its alias, the tab, and the updatedRange returned by Google. The tag marks that the lead entered follow-up. Sheets and CRM write separately. If the row was appended but the note or tag fails, the Met rereads the sheet and contact before retrying. Replaying the append blindly can duplicate the lead.
- 6
Schedule the next contact only when there is a date
If the person asked to be contacted later, the Met lists pending reminders first so it does not schedule the same follow-up twice. It only schedules a future date and time in ISO 8601 with a timezone, using either a specifically approved template or the workspace default. It lists reminders again to verify the state. With no future date or available template, it leaves the note and does not promise a message.
Before you start
What you need ready
The Met solves none of these for you. If one is missing, the automation stops there.
-
One file, one tab, and an agreed column layout
Define the spreadsheet_id, exact tab name, range, and column order. The contact_id column is the primary key. Phone and email are used only when they are also declared as comparison keys.
-
Google Workspace connected with access to the sheet
Authorize the account through OAuth in Meteor Integrations and share the file with that account. The connector needs Google Sheets access to read metadata, read values, and append the row. Meteor never asks for the password.
-
WhatsApp connected to Meteor CRM
The recipe starts from the contact created by the inbound conversation. Without a linked channel and contact, there is no trusted context for the note or the scheduled follow-up.
-
An agreed tag and a reminder template
Choose the tag that identifies the flow. To send a reminder, configure an approved default WhatsApp template in the workspace or name an approved template with its language. The row and note still work when you choose not to use reminders.
The limits
What this automation does NOT solve
Better said here than discovered halfway through the rollout.
-
It does not create another contact for somebody who already wrote over WhatsApp. It uses the conversation contact ID and updates that record when a new detail arrives.
-
It does not turn Google Sheets into the CRM source of truth. The sheet is an operational copy for the team. Status, notes, tags, and reminders continue to live in Meteor.
-
It does not guarantee a transaction between Google Sheets and the CRM. One write can succeed while the other fails, so the procedure rereads both sides before retrying.
-
It does not deduplicate by intuition. Protection depends on contact_id and on the secondary columns you agreed on. Without that convention, two similar rows remain ambiguous.
-
It does not enrich or verify phone, email, company, or interest through external sources, and it does not compute lead scoring. It copies what the person provided and the rules you set.
-
It does not send follow-up without a future date and an available approved template. If either is missing, it leaves the CRM trail and explains that no message was scheduled.
FAQ
Questions about this automation
Because contact_id identifies the exact CRM record. A phone can change, be shared, or be written in another format. It is useful as a secondary check, not as the only duplicate gate.
The whole flow is not repeated. First the Met reads the sheet to confirm the contact_id and updatedRange already created. It then completes only the missing note or tag. Repeating the full append would create the duplicate the flow was meant to avoid.
This recipe does not use sheets_update. It saves the change in the CRM record and appends a row only when the contact_id does not exist under the agreed convention. Correcting historic rows is a separate flow with its own confirmation and rules.
No. It is scheduled only when there is a specific future date and an approved template is available. Pending reminders are listed first to avoid a duplicate. Without those conditions, the row, note, and tag remain, but there is no promised message.
Keep going
Other automations built on the same tools
Operations and reporting
Answer who did not turn in an assignment, without opening Google Classroom
How do I know who did not turn in an assignment without going course by course in Classroom?
- Starts:
- when the customer writes
- Steps:
- 6, with 11 real tools
- Needs:
- Google Workspace · Meteor CRM
Operations and reporting
Build an internal AI dashboard from Google Sheets
How do I build an AI dashboard from data I already keep in Google Sheets?
- Starts:
- when someone asks for it
- Steps:
- 6, with 5 real tools
- Needs:
- Google Workspace · Meteor Pages
Operations and reporting
Create a weekly Google Ads report in Google Sheets
How do I send a weekly Google Ads report to Google Sheets without duplicate rows?
Social
- Starts:
- when someone asks for it
- Steps:
- 5, with 5 real tools
- Needs:
- Google Ads · Google Workspace
Operations and reporting
Save the weekly Mercado Libre order report to Google Sheets
How do I save a verifiable weekly Mercado Libre order report to Google Sheets?
- Starts:
- when someone asks for it
- Steps:
- 4, with 5 real tools
- Needs:
- Mercado Libre · Google Workspace
Want this automation running on your own data?
We will show it to you with your accounts connected, not with a canned demo.