Track SEO Keyword Rankings
Automate daily tracking of SEO keyword rankings, update Google Sheets with real-time data, and receive Slack alerts for performance changes to keep your marketing team informed.
Last updated
October 1, 2025
Connectors used
Tags
Key Takeaways
- Automated daily rank checks - The workflow runs every morning at 8 AM UTC, searching Google for your target keywords and recording where your pages appear.
- Google Sheets as your tracking hub - All keyword data lives in a spreadsheet that gets updated automatically with current rankings and position changes.
- Slack alerts for ranking drops - When a keyword loses positions, an AI-generated summary is sent to your Slack channel so your team can act quickly.
- Filters for active keywords only - The workflow skips inactive keywords, so you control exactly what gets tracked without editing the workflow itself.
What This Workflow Does
This workflow automates SEO keyword rank tracking by reading your keyword list from Google Sheets, searching the web for each keyword, finding where your target URLs rank in the results, updating the spreadsheet with current positions, and sending a performance summary to Slack. It replaces the manual process of checking rankings one by one and keeps your marketing team informed without anyone needing to log into a rank tracking tool.
Use cases:
- Monitoring daily keyword positions for your website and catching drops early
- Keeping a marketing team updated on SEO performance through Slack
- Building a historical record of keyword rankings over time in Google Sheets
How It Works
| Step | What Happens |
|---|---|
| 1. Scheduled trigger | The workflow kicks off automatically every day at 8 AM UTC. |
| 2. Fetch keyword list | Reads all keyword data from your Google Sheets spreadsheet (keyword, target URL, baseline rank, locale, device, etc.). |
| 3. Parse spreadsheet data | A code node converts the raw spreadsheet rows into structured objects using the header row. |
| 4. Filter active keywords | Only keywords marked as active (with an "x" in the Active column) are processed further. |
| 5. Web search | Needle's web search checks Google for each keyword exactly as written. |
| 6. Merge results | The search results are merged back with the original keyword data. |
| 7. Process rankings | A code node scans the search results to find your target URL and determine its position. |
| 8. Find existing row | Looks up the matching row in Google Sheets so the correct row gets updated. |
| 9. Update spreadsheet | Writes the current rank and change values back to the Google Sheets document. |
| 10. AI summary | GPT-4.1 analyzes the full set of results and writes a performance summary for the team. |
| 11. Send to Slack | The AI-generated summary is posted to your Slack channel. |
Workflow Nodes
| Node | Role |
|---|---|
| Scheduled Trigger | Starts the workflow daily at 8 AM UTC |
| Google Sheets - Get Values in Range | Fetches the keyword tracking data from your spreadsheet |
| Code - Parse Rows | Converts raw spreadsheet arrays into key-value objects |
| Filter | Passes through only keywords where the Active column is set to "x" |
| Needle Web Search | Searches Google for each keyword |
| Merge (first) | Combines the filtered keyword data with search results |
| Code - Process Rankings | Finds the target URL in search results and calculates ranking position |
| Google Sheets - Find Row | Locates the correct row in the spreadsheet for each keyword |
| Transform | Cleans up the row data before merging |
| Merge (second) | Combines processed ranking data with the found row information |
| Google Sheets - Update Multiple Rows | Writes updated Current Rank and Change values to the spreadsheet |
| AI Node (GPT-4.1) | Generates a keyword performance summary |
| Slack - Send Message | Posts the AI summary to your marketing Slack channel |
Setup Instructions
- Add the "Track SEO Keyword Rankings" template to your Needle workspace.
- Create a Google Sheets spreadsheet with these column headers: Keyword, Locale, Device, Target URL, Intent, Priority, Drop_Alert, Baseline Rank, Current Rank, Change, Active.
- Connect your Google Sheets account in Needle and point the nodes to your spreadsheet.
- Connect your Slack account and select the channel where alerts should be posted.
- Mark keywords as active by putting an "x" in the Active column.
- Run the workflow once manually to verify everything connects correctly.
Customization
| What You Can Change | How |
|---|---|
| Schedule timing | Edit the cron expression in the Scheduled Trigger node (default is daily at 8 AM UTC) |
| Target URL matching | Modify the Code - Process Rankings node to match different URL patterns |
| Active keyword filtering | Change the filter expression if you use a different marker than "x" |
| AI summary style | Edit the prompt in the AI node to adjust the tone or format of the Slack summary |
| Slack channel | Update the channel ID in the Slack - Send Message node |
| Spreadsheet columns | Adjust column references in the Google Sheets update node if your sheet layout differs |
FAQ
Q: What search engine does this workflow check rankings for? A: It uses Needle's built-in web search, which queries Google search results.
Q: How many keywords can I track? A: There is no hard limit in the workflow itself. It processes all rows in your spreadsheet that have the Active column set to "x".
Q: What happens if my site is not found in the search results? A: The workflow records "Not Found" as the current rank for that keyword in the spreadsheet.
Q: Can I change how often the workflow runs? A: Yes. Edit the cron schedule in the Scheduled Trigger node. For example, change it to run twice a day or only on weekdays.
Want to showcase your own workflows?
Become a Needle workflow partner and turn your expertise into recurring revenue.