This n8n workflow automates scheduled checks for your target keywords’ positions in Google’s organic search results using SerpAPI. It logs new positions in Google Sheets , compares them to previous rankings, and sends notifications via WhatsApp and/or email based on the movement.
Problem Statement & Target Audience
Who is this for?
This workflow is ideal for:
- SEO specialists monitoring keyword rankings.
- Website owners tracking performance.
- Agencies managing multiple client campaigns.
It helps reduce manual effort by automatically checking rankings on a schedule and sending notifications only when there’s movement in position.
Pre-conditions & API Requirements
APIs & Services Used
-
SerpAPI – Fetch Google search results
-
Google Sheets API – To store and update keyword data
-
Email API – To notify users of position changes
-
WhatsApp API (e.g., Twilio, Ultramsg) – To send notifications
Setup help for Google Sheets, Email, and WhatsApp is available via the Docs tab in each respective node in n8n.
Step-by-Step Workflow Explanation
🗓 1. Scheduled Trigger (Support Workflow)
- Marks all rows in the sheet as
"notchecked" in the checkstatus column.
- This is the user-defined frequency trigger (e.g. weekly, daily).
- Triggers the main workflow.
🚀 2. Main Workflow Trigger
- Starts when a row with
checkstatus = notchecked is found.
🔍 3. HTTP Node (SerpAPI Call)
- Sends a request to SerpAPI for each keyword.
- Fetches the current Google SERP for that keyword.
🧠 4. JavaScript Node (Parse Position)
- Loops through the SERP results and finds the position of the target URL.
- Extracts and returns the current rank.
✍️ 5. Google Sheets Node (Update Data)
- Writes the new ranking into the spreadsheet.
- Updates the
currentposition and sets checkstatus to "checked".
🔀 6. Switch Node (Compare Rankings)
- Compares
previousposition with currentposition:
- If rank has improved → send positive alert.
- If rank has dropped → send negative alert.
- If unchanged → no alert.
📩 7. Notification Nodes (WhatsApp / Email)
- Sends a message to chosen channels when a change is detected.
Customization Guide
⏱️ Change Frequency
- Adjust the supporting schedule workflow to change how often the tracker runs.
✉️ Edit Notification Content
- Customize the WhatsApp and Email message content in their respective nodes.
🔗 Track Multiple URLs per Keyword (Advanced)
- Extend the JavaScript logic if you need to monitor several pages for the same keyword.
🌐 Expand Search Engine Targets
- SerpAPI also supports other search engines like Bing and Yahoo. Modify the request params to switch.
How to Set Up This Workflow
✅ Step 1: Use This Google Sheets Template
To get started quickly, make a copy of the template below:
👉 Google Sheets Template
This template includes the required structure:
keyword
Website_url
position
timestamp
checkstatus
⚠️ Be sure to make your own copy to edit and connect via the Google Sheets node.
🔐 Step 2: Configure Your APIs
- SerpAPI: Get API key from serpapi.com/manage-api-key
- Set credential type to
Generic in n8n for compatibility.
- Google Sheets, Email & WhatsApp: Use the instructions found in each node’s Docs tab to connect your accounts.
📦 Step 3: Import the Workflow
- Both the main keyword tracking workflow and the supporting scheduler workflow are in one file
▶️ Step 4: The workflow will start
- Since the check status columns will be 'notChecked' schedule workflow.
- The update sheets node will update each processed row's checkstatus to 'checked' and the workflow will process the next row
- the schedule trigger workflow will update
checkstatus = notchecked and triggers the keyword tracking automatically.
🎉 Done!
From now on, your keyword positions will be monitored at the frequency you set. You’ll receive WhatsApp and/or email updates only when rankings change. in case you need customized workflows or wanna reach out here is my twitter and email.