Google Sheets integration with n8n overwrites existing data instead of adding new rows

I have an n8n workflow that should add new rows to my Google Sheets document when triggered by a webhook. My target spreadsheet has a worksheet called 'M2'. I configured the Google Sheets node to use the Append operation, and I also tested with the Append or Update setting.

The workflow runs without errors and successfully connects to Google Sheets, but the behavior is completely wrong. Instead of adding my data to the bottom of the existing rows while keeping the column headers intact, it completely overwrites everything starting from row 1. All my original data gets wiped out, including the header row.

I’m confused about what’s causing this issue. Has anyone encountered similar problems with n8n and Google Sheets integration? What settings should I check to fix this?

check if ur webhook is sendin header data by mistake. i faced this too - my json had column names which made n8n overwrite the headers. also, double check the google sheets node isn’t set to “clear sheet” - that box is easy to miss. dont forget about sheet id mixups if u have similar named sheets.

This usually happens when the Google Sheets node can’t figure out where your data actually ends. Had the same issue last year - turned out empty cells and weird formatting were confusing the API. Instead of appending, it just starts overwriting from the top. Check for completely empty rows in your data. Even cells with just spaces mess up the append logic. Make sure your ‘M2’ worksheet has continuous data without gaps. I fixed mine by clearing out phantom formatting and hidden characters in the empty cells below my data. Try manually adding a test row first to make sure the sheet structure is clean, then run your workflow again.

Had this exact problem six months ago - super frustrating. Turned out I messed up the range in my Google Sheets node config. I was using Append but had the range set to something like ‘M2!A1:Z’, which made n8n treat it like an update starting from A1 instead of a real append. Fixed it by leaving the range field completely empty in Append mode, or just putting the sheet name like ‘M2’ without cell references. The Google Sheets API figures out where the last row is and appends below it automatically. Also check your auth scope includes full spreadsheets permission, not just read-only - wrong permissions can cause weird stuff like this.