Daily Rank Tracker — User Guide
What is Daily Rank Tracker?
Daily Rank Tracker measures how well you rank on Google for your target keywords — every day, automatically. You get sparklines showing the last 30 days of movement, AI-generated insights on biggest wins and losses, and a list of "quick wins" (keywords sitting at position 4-10 that could be pushed into the top 3).
The tool replaces the need for Ahrefs Rank Tracker or Semrush Position Tracking at a fraction of the price.
How to use the tool
Step 1: Create a project
- Navigate to Tools → SEO Analysis → Daily Rank Tracker
- Click New project
- Enter your domain (without
https://orwww.) - Paste your keywords — one per line, up to 50
- Click Create project
You can have up to 5 projects at any time.
Step 2: Run the first check
Click Check now to pull initial position data from Google. It costs 50 credits per manual check and typically takes under 8 seconds for 50 keywords. When done you'll see:
- Position for each keyword (1-100, or "Not ranking")
- Best historical position
- Sparkline of the last 30 days
- Landing page Google ranks
- Monthly search volume
Step 3: Turn on auto-tracking (optional)
Click the Power button next to a project to enable daily auto-tracking. The cron job will then run one check per day automatically.
- Price: 15 credits per auto-check (70% off vs manual)
- Available on: Growth and Agency tiers
- Cadence: Cron fires every 6 hours, but each project is checked at most once per day
If you run out of credits mid-month, the system auto-pauses the project (enabled = false). You must top up and click the Power button again to resume auto-tracking. Manual "Check now" continues to work.
Step 4: Read the results
- Position table: All keywords with current position, change since last check, best historical position, and sparkline
- Biggest wins: Top 5 keywords that gained the most positions
- Biggest losses: Top 5 keywords that lost the most
- Quick wins: Keywords at positions 4-10 that are close enough to top 3 to be worth a focused push
- AI insights: 3-6 bullet-pointed insights explaining what's driving the movements
Cost model
| Check type | Price | Who |
|---|---|---|
| Manual ("Check now") | 50 credits | All tiers with the tool |
| Auto (cron) | 15 credits | Growth and Agency only |
The auto-discount reflects that it happens in the background with no UI friction and no expectation of an immediate answer.
Example: Growth-tier user with 3 active projects
- 3 projects × 15 cr × 30 days = 1,350 credits/month for daily auto-tracking
- Manual ad-hoc checks on top: 50 cr each
Growth includes 5,000 credits/month, so daily auto-tracking on 3 projects consumes ~27% of your monthly quota.
How auto-tracking works under the hood
- Every 6 hours a pg_cron job fires and calls Edge Function
track-keyword-rankings - The Edge Function fetches all projects where
enabled = trueANDnext_check_at < now() - For each project:
- Checks tier — skips if not Growth/Agency
- Checks credit balance — skips and pauses the project if < 15 cr
- Calls DataForSEO with batched SERP requests (up to 50 keywords per request)
- Stores results in
rank_checks - Deducts 15 credits via
deduct_user_creditsRPC - Sets
next_check_at24 hours ahead
If DataForSEO fails, no credits are deducted (the deduction happens after a successful insert). You never pay for missing data.
FAQ
Why does cron fire every 6 hours if it only checks each project once per day?
To smooth load over the day and provide a natural retry mechanism. If one cron tick fails, the next tick (6 hours later) picks up the projects that weren't checked — without double-checking those that already ran.
What happens if I downgrade from Growth to Starter?
The next cron tick returns tier_blocked status for your projects and skips them. Projects remain enabled = true, so if you upgrade again later, auto-tracking resumes automatically. Manual "Check now" continues to work while on Starter — only auto-tracking is tier-locked.
Can I export the history?
Not directly from the UI yet (on the v2 roadmap). Workaround: use the PostgREST/Supabase console to query SELECT * FROM rank_checks WHERE project_id = '<your-id>'.
Why does a keyword show "Not ranking" when I know I rank for it?
DataForSEO checks the top 100 organic results. If you rank at position 101+ it counts as "not ranking". Bing and DuckDuckGo are not supported yet — Google only.
Will I be notified if a project gets auto-paused?
Not in v1. You'll see the "Paused" status badge in the UI when you visit the page. Email notifications are parked for v2 (pending user research on whether they'd be welcome or perceived as spam).
When to use Daily Rank Tracker
- You have 3+ clients or projects where you need to prove SEO progress
- You want to spot declining trends before they become critical (sparklines reveal movement 2-3 weeks before a monthly report would)
- You need an "evidence layer" under other NordicPulse tools (Quick Wins, SERP Dominance Plan, AEO Watchtower)
- You've considered paying $199/month for Ahrefs Rank Tracker
When NOT to use it
- You have < 5 keywords you truly care about — Google Search Console is free and sufficient
- You operate outside the Nordics — the tool defaults to
location_code = 2578(Norway) - You need mobile vs desktop differentiation — only desktop is supported in v1
References
- Spec:
docs/specs/daily-rank-tracker.md - ADR-040 (credit model):
docs/decisions/ADR-040-rank-tracker-credit-model.md - Implementation:
src/services/dailyRankTrackerService.ts - Edge Function:
supabase/functions/track-keyword-rankings/index.ts
Last updated 2026-05-15