I’ve built dozens of dashboards to keep a real-time pulse on competitors, and one simple truth has stuck with me: the right data, captured consistently, beats random deep dives every time. In this article I’m going to walk you through how I build a practical 30-day competitor tracking dashboard using SEMrush and Google Sheets. This setup is lightweight, repeatable, and ideal for marketers and founders who want daily visibility into search positions, traffic trends, and content moves without drowning in complexity.
Why a 30-day dashboard?
A 30-day window gives you sensitivity to recent changes (content pushes, SEO wins, paid campaigns) while smoothing out daily noise. It’s short enough to react quickly and long enough to identify meaningful trends. I use this cadence to spot when a competitor’s new page begins to gain SERP traction, or when a paid campaign is likely driving organic lift.
High-level workflow
Here’s the approach I follow every time:
What to track
Picking the right metrics is the most important step. I typically track:
Data sources in SEMrush
SEMrush offers multiple useful endpoints:
If you have a SEMrush subscription with API access you can automate exports via the SEMrush API. If not, you can use scheduled CSV exports from the interface and import them into Google Sheets.
Google Sheets structure
I build my sheet in tabs. Here’s my standard layout:
| Tab | Purpose |
|---|---|
| Competitors | Master list of competitor domains and friendly names |
| Daily_Raw | Daily CSV/API dumps from SEMrush (one row per competitor per metric per day) |
| Keywords | Tracked keyword positions over time |
| Top_Pages | Top landing pages and traffic estimates |
| Backlinks | New referring domains per day |
| Dashboard | Charts, tables, alert tiles |
Keeping raw data untouched is essential — it lets you rebuild calculations without losing history.
Automating data import
Option A: SEMrush API (recommended)
Option B: Scheduled CSV exports
Option C: Third-party connectors
Key formulas and tricks in Google Sheets
I use a few core formulas and techniques to transform raw rows into dashboard-ready metrics:
Building the Dashboard
I design the Dashboard tab with three rows of tiles:
To create an alert tile for “big movers” I use a formula that calculates delta in position: =INDEX(current_pos) - INDEX(pos_30_days_ago). Then I filter for absolute values > 5 and sort by magnitude.
Example: position delta formula
Assume you have a Keywords tab with columns: Date, Competitor, Keyword, Position. Here’s a simple way to compute 30-day deltas:
Visuals that matter
I keep visuals minimal but informative:
Use chart titles that include the date range. I also place a small note showing when the last data import ran — it saves wasted interpretations when an import failed.
Actionable workflows from the dashboard
A dashboard is only useful if it leads to action. I use it to:
Maintenance and scaling
Check your imports daily for errors. If you add more competitors, update the Competitors tab and ensure the Apps Script or importer includes the new domain. For larger portfolios (10+ competitors) I recommend switching to a lightweight database (BigQuery) and using Google Data Studio for more complex visualizations.
If you’d like, I can share a Google Sheets template I use as a starting point, with Apps Script snippets for SEMrush API calls and the key formulas pre-built. Market Research (https://www.market-research.uk) has a lot of templates like this — but I’m happy to tailor one to your competitors and keywords so you can get a working dashboard in a single day.