Daily SEO keyword rank tracker with Slack drop alerts

Every weekday morning, check where your keywords rank on Google, log them to a sheet, and get a Slack ping the moment anything slips out of the top 10.

Deterministic Code
Bright DataGoogle SheetsSlackMarketingOperationsNotifications & AlertsResearch & Monitoring
PromptCreate

Build me a daily SEO keyword rank tracker as a code workflow. Keep it deterministic with no LLM step.

Trigger: cron schedule, every weekday at 7am in my local timezone.

Inputs: a Google Sheets spreadsheet that has a tab called 'keywords' with columns keyword, target_domain, country. Use Google Sheets Get Values to read all rows on that tab.

For each row, call Bright Data's SERP Search operation against Google in the row's country locale. Parse the organic results and find the highest-ranking URL whose host matches the target_domain (including subdomains). Capture the rank position (1 to 100), the landing URL, and the total number of organic results scanned.

Append the result to a 'rank_history' tab on the same spreadsheet using Google Sheets Append Values. Columns: date (today's date in YYYY-MM-DD), keyword, rank (an integer 1 to 100, or the literal string 'not in top 100' if the domain wasn't found), landing_url (empty if not found), total_results_scanned.

After every keyword has been written, read yesterday's snapshot from the same rank_history tab (filter rows where date equals yesterday). For each keyword, diff yesterday's rank against today's. Flag a keyword as a regression if either: the numeric rank dropped by 3 or more positions, OR it was in the top 10 yesterday (rank 1 to 10) and is now rank 11+ or 'not in top 100'.

If at least one keyword regressed, send a single batched Slack message via Send a Message to a Slack channel the user will configure (e.g. #seo). The message should have a short header like 'SEO rank drops for {date}' and then one line per regression with: keyword, old rank, new rank, landing URL. Use Slack mrkdwn formatting (single asterisks for bold). If no keywords regressed, skip the Slack step entirely.

Integrations: Bright Data (SERP Search), Google Sheets (Get Values, Append Values), Slack (Send a Message). The value is a clean rank history log plus a same-day alert when something slips, so the SEO team can react before competitors widen the gap.

What does this prompt do?

  • Checks where each of your tracked keywords ranks on Google every weekday at 7am.
  • Logs the date, position, and landing page for every keyword to a Google Sheet you can chart over time.
  • Compares today's results to yesterday's and flags any keyword that lost real ground.
  • Posts a single batched Slack message to your SEO channel listing only the keywords that slipped, so the team can react before competitors widen the gap.

What do I need to use this?

  • A Bright Data account with access to their search results product.
  • A Google Sheet with a 'keywords' tab listing the keyword, target domain, and country for each row.
  • A Google account that can read and write that spreadsheet.
  • A Slack workspace and the channel you want regression alerts posted to.

How can I customize it?

  • Change the schedule to run twice a day, only on Mondays, or right before your weekly SEO standup.
  • Adjust what counts as a meaningful drop. The default is a fall of 3 or more positions, or falling out of the top 10.
  • Swap the destination channel for a private SEO room, a client-specific channel, or a direct message to the lead.
  • Add competitor domains as extra rows for the same keyword to track them side by side.
  • Mix countries in the same sheet. The 'country' column controls the Google locale for each row, so US, UK, DE, and FR keywords can all live together.

FAQs

Do I need an LLM or AI step for this to work?
No. This is a deterministic workflow. It pulls search results, finds your domain in the list, writes a row, compares to yesterday, and posts to Slack. There is no model in the loop, so the results are repeatable and the running cost is just the search calls and a couple of sheet operations.
How many keywords can I track?
Start with whatever list you have today and grow from there. Each keyword is one search request, so cost and runtime scale linearly with the number of rows in your sheet. A list of 100 keywords typically finishes in a few minutes.
What happens if my domain is not in the top 100?
The row still gets logged with 'not in top 100' so your history has no gaps. You will see exactly which day you fell off and which day you came back.
Can I track competitor rankings at the same time?
Yes. Add competitor domains as extra rows with the same keyword. The workflow logs a separate rank for each row, so you can chart your position next to theirs.
Can I run this for countries other than the US?
Yes. The 'country' column on each keyword row controls which Google locale the search runs in, so US, UK, German, and French keywords can all live in the same sheet.
Why send alerts to Slack instead of email?
Because SEO regressions need a same-day response, and Slack is where most teams already triage. You can change the destination later if you would rather get a daily email digest.

Related templates

Review desk for portal forms your team still fills in by hand

Stage a batch of filings overnight, then approve each completed form from a screenshot before anything is ever submitted.

Kernel
Google Sheets
Slack Bot
App
Partner tier review board for quarterly promotion calls

Work every partner tier decision from one board, with the revenue and commission numbers, clear promotion thresholds, and AI review briefs.

Introw
HubSpot
Slack
App
Reconcile partner commissions between HubSpot and Introw

Open one board at month end to find every closed deal missing a commission, every commission with no deal behind it, and every amount that does not add up.

Introw
HubSpot
Slack
App
Audit what Intercom's Fin AI actually resolved before you pay

Review every conversation Fin closed as resolved, judge which ones actually stuck, and see what the gap is worth against your bill.

Intercom
Google Sheets
Slack Bot
App
Returns and warranty claim desk that follows your policy

Work every return, damage and warranty claim in one queue, with the order, the delivery date and a policy-backed recommendation already on screen.

Kustomer
Shopify
Google Sheets
App
One control room for every Instantly sending mailbox

See warmup status, daily send volume, and bounce risk for every sending account in one grid, with the riskiest mailboxes floating to the top.

Instantly
Slack
App

Stop refreshing the SERP every morning.

Connect Bright Data, Google Sheets, and Slack once, and Geni runs your rank check every weekday at 7am and pings you the second anything slips.