Skip to content

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

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. 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. 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. 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. 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. 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. 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.

The limits

What this automation does NOT solve

Better said here than discovered halfway through the rollout.

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

Want this automation running on your own data?

We will show it to you with your accounts connected, not with a canned demo.