SEO planning
Decide what to write or refresh next, by revenue instead of traffic
Most keyword tools rank opportunities by search volume. Joinsight ranks them by what they are likely to earn: queries sitting just off page one, on pages that already bring paying customers, weighted by how much each click on that page has been worth.
No card required. The trial clock starts when your first revenue source connects.
Why it's hard to answer today
- Search Console shows positions and clicks, but not which queries lead to customers.
- Keyword tools rank by volume, so a high-traffic glossary term outranks a buyer-intent query with a tenth of the searches.
- A money page can drop from position 6 to 11 for weeks before anyone notices the signups thinning out.
| Query | Position | Impressions | Page earned (90d) |
|---|---|---|---|
| saas pricing page examples | 9.4 | 6,120 | €340 |
| paddle vs stripe tax | 11.2 | 2,870 | €435 |
| mrr calculator | 13.8 | 4,410 | €174 |
Modeled
The score is an estimate: it assumes a better position earns at the rate the page already does.
How Joinsight answers it
Opportunities, ranked by revenue
Keyword opportunities lists queries at average positions 8 to 20 over the last 28 days, on pages with organic revenue in the last 90 days, ranked by impressions × the page's revenue per click.
An alert when a money page slips
When a page that carries MRR loses positions or clicks week over week, you get one alert naming the page, the MRR at stake and the queries that lost position.
One thing to do, every Monday
The Monday brief ends with a single suggestion, such as the page to refresh and the query it is close to winning.
Ask follow-ups in your AI assistant
get_keyword_opportunities and get_keyword_revenue return the same ranking through the MCP server, so you can plan a post in the same conversation.
What you connect
Good to know
- Opportunities only cover pages that already have organic revenue. A brand-new topic won't appear until a page on it earns.
- Search Console data arrives 2 to 3 days late, so the last few days are always incomplete.
- Keyword revenue is modeled. Google never reveals which query a specific visitor typed, and anonymized queries are kept in their own bucket.
Set it up
- Connect Search Console, GA4 or Plausible
Sign in with Google for Search Console and GA4, or add a Plausible Stats API key. Backfill, data delay and what each source adds.
- Alerts, the Monday brief and new-customer pings
The five alert rules and when they fire, what the Monday brief contains, and how to send new-customer pings to Slack or Discord.
Further reading
Other questions it answers
- Content-led SaaSWhich blog posts bring paying customers?Revenue per landing page, measured from the first visit of each customer who paid.
- Web and mobile appsWhat is my real MRR across the web and the App Store?Stripe and RevenueCat combined, with a subscription in both counted once.
- Diagnosing changesWhy did MRR drop last week?An alert with the segments that caused it, computed by code before a sentence is written.
- Launches and socialDid the launch or the post bring customers?Revenue per channel and community, from Hacker News to Product Hunt, with tagged links where referrers are stripped.
- AI assistant reviewCan I just ask my AI assistant about my numbers?Yes. The MCP server returns the dashboard's numbers, with their definitions and labels.
See what makes you money.
Connect Stripe or RevenueCat and Search Console, and you see combined MRR and 16 months of search history on day one. Page and keyword revenue follow as the snippet collects first touches.
No card required. The trial clock starts when your first revenue source connects.