Clean Google Sheets contact data for phone, email, and dates on an hourly schedule

Go to Workflow
0 views
Built by DEUS Automations DEUS Automations
Created on August 31, 2026

Description

Quick overview
This workflow runs hourly to read rows from Google Sheets, normalize phone numbers, email addresses, and dates, and write back only the rows that changed while adding an _email_valid flag for downstream filtering.

How it works
Runs every hour on a schedule.
Reads all rows from a specified Google Sheets worksheet.
Normalizes the configured phone, email, and date columns, adds an _email_valid boolean, and flags whether any of those fields changed.
Filters the results to keep only rows where the normalized values differ from the originals.
Updates the changed rows back in Google Sheets by matching on the row_number column.

Setup
Add a Google Sheets OAuth2 credential in n8n with access to the target spreadsheet.
In both Google Sheets nodes, set the documentId (spreadsheet ID) and sheetName (tab name) to your target sheet.
In the code step, update PHONE_COL, EMAIL_COL, DATE_COL, and DEFAULT_COUNTRY_PREFIX to match your column headers and default dialing code.
Ensure your sheet includes a row_number column (as returned by the Google Sheets read operation) so updates can match the correct rows.

Additional info
Want more automation power? Check out the full data-cleaning suite: https://shop.lumnika.com/sheets-data-cleaner.html?src=n8ncreators

Nodes Used (2)

Code
n8n-nodes-base.code
Google Sheets
n8n-nodes-base.googleSheets