+1
SEO

Trace organic search to revenue and pipeline

Find which keywords and pages bring in paying customers: follow organic search all the way to purchases in GA4 or contacts and closed deals in HubSpot, so SEO is measured in revenue and pipeline instead of clicks.

  • +2
    How much revenue comes from organic search?
  • +2
    Which keywords bring in paying customers?
  • +2
    Is the SEO spend paying for itself?

The playbook

This is the question a dedicated SEO tool cannot answer, because the answer lives in three systems: what people searched for (Search Console), what they did on the site (GA4), and what they paid or became (HubSpot, Stripe). Joining them is what makes an SEO number a business number.

Steps

  1. Pick the revenue path. Self-serve or ecommerce: revenue is in GA4 (path A). Sales-led B2B: pipeline is in HubSpot (path B). Both can be true; run both and keep them separate. Ask which applies if it is not obvious.

  2. Pull the organic side. google_search_console.query with dimensions: ["page"] over 90 days ending 3 days ago, rowLimit: 500, and again with dimensions: ["query", "page"], rowLimit: 5000. Ninety days, because the path from search to money is longer than the path from search to click.

  3. Path A: revenue in GA4. google_analytics.run_report with dimensions: ["landingPage"], metrics: ["sessions", "conversions", "totalRevenue", "ecommercePurchases"], the same dates, dimensionFilter on sessionMedium EXACT organic. Join to Search Console on the normalised path. Compute revenue per organic click per page.

  4. Path B: pipeline in HubSpot. First hubspot.list_properties for contacts and for deals to find the analytics source and first-page fields. They are usually hs_analytics_source, hs_analytics_first_url and hs_analytics_source_data_1, but accounts differ; do not hardcode. Then:

    • hubspot.search_contacts with a filterGroups entry for the source property EQ ORGANIC_SEARCH and createdate within the window, requesting properties for email, create date and first URL. Group contacts by the path of their first URL and join to Search Console pages. This gives leads per organic page.
    • hubspot.list_pipelines for deals to learn which stage ids mean closed won. Then hubspot.search_deals filtered to the organic source and closed won within the window, requesting amount, close date and the first-URL property if deals carry one. This gives revenue from organic at the account level even when deal-to-page attribution is missing. Page through with after until exhausted; a partial pull silently understates everything.
  5. Stripe or Dodo Payments, only if attribution was captured. A payment provider has no idea where a customer came from unless the checkout stored it. Ask whether UTM or referrer values are written to customer, subscription or payment metadata. If they are, stripe.search with a metadata query on the organic value gives revenue directly. Dodo returns metadata on every row of dodo_payments.list_payments but cannot filter on it, so pull the window with status: "succeeded" and filter the metadata column in the workbench. If nothing was captured, skip this step and say so rather than guessing.

  6. Attribute queries. For the top revenue pages, take their query rows from step 2 and report the queries as the demand behind the revenue. This is query-to-page-to-revenue, not query-to-revenue; keep that distinction in the write-up.

  7. Report. Top ten organic pages by revenue or pipeline: page, clicks, sessions, conversions or contacts, revenue or closed-won amount, revenue per click, and the top three queries behind it. Then the share of total revenue or pipeline that organic accounts for, pages with real traffic and no revenue, and the one or two queries most worth defending. Keep GA4 revenue and HubSpot revenue in separate columns; never add them.

Gotchas

  • Different systems attribute differently. HubSpot's source is first touch by its own tracking cookie; GA4's is session-scoped and defaults to last non-direct click. Present each as what it is. Adding them double counts.
  • GA4 revenue requires ecommerce events. If totalRevenue is zero everywhere, the site is not sending purchase events; that is a tracking gap, not zero revenue.
  • HubSpot's ORGANIC_SEARCH is HubSpot's classification, based on referrer, not on Search Console. It includes all search engines and misses visitors whose referrer was stripped.
  • Sales cycles outlast the window. A deal closed this quarter came from a search last quarter. Use the contact's create date for lead attribution and the close date for revenue, and say the windows differ.
  • Stripe amounts are in minor units (cents). Divide by 100 once, and report per currency.
  • Join on the path. Strip origin, query string and trailing slash from Search Console, GA4 and HubSpot URLs before joining, and report the unmatched share.

Install

Install Sequel skills into your agent

Pick your app and Sequel installs itself: a one-click link where the client supports it, that client’s own few steps where it doesn’t. The playbooks come with the server: your agent sees that this playbook exists and reads it when a question matches.

Claude, ChatGPT, Cursor, VS Code, Claude Code, Codex, Grok, Muse, dots and any other MCP app

Already have an MCP client?

https://api.sequel.sh/mcp

Add it as a remote (streamable HTTP) server and sign in when prompted. Skills come with it; nothing else to install. Manual setup per client

Choose your app

  • Claude

    One click, opens in the app

  • Cursor

    One click, opens in the app

  • VS Code

    One click, opens in the app

  • ChatGPT

    Turn on developer mode, then add Sequel. About two minutes.

  • Claude Code

    Run one command, then sign in with /mcp.

  • Codex

    Run one command, then sign in.

  • Gemini CLI

    Run one command, then sign in with /mcp auth.

  • Grok

    Add Sequel as a connector and sign in.

  • Grok Bot

    Paste this to the bot. It registers Sequel and asks you to sign in.

  • Muse

    Muse writes its own connector. One message is the whole setup.

  • dots

    Add Sequel in ChatGPT; your dot picks it up with no extra step.

  • OpenCode

    Add Sequel as a remote server from the OpenCode CLI.

  • Other MCP app

    Any client that speaks remote MCP can connect with this URL.

More like this

Other SEO skills

Analyze high-ranking landing pages

See which pages perform best in organic search: the landing pages that earn the most clicks and impressions, the queries behind each one, and how they compare with competitor estimates from Ahrefs.

Audit internal links to important pages

Audit the site's own internal linking: crawl navigation and body links between the site's pages to find valuable pages with too few inbound internal links, orphan pages, and the handful of cross-links that would lift striking-distance rankings.

Audit or draft an llms.txt

Check whether the site has an llms.txt, whether it follows the spec and points at the pages that matter, and if it is missing draft one from the pages Search Console shows people actually find, so AI assistants get a curated map of the site instead of guessing.

Audit redirect chains and loops

Follow every redirect on the URLs Search Console still sends traffic to, on the sitemap, and on backlinked pages, to find chains, loops, redirects to the homepage, and temporary redirects that should be permanent, so link equity and crawl budget stop leaking.

Audit referring domain quality

Grade the domains linking to a site by authority, traffic and link count, spot concentration risk and link-farm patterns, and separate the referring domains that carry weight from the ones that are noise.

Audit titles and meta descriptions

Compare the title and meta description of each top page against the queries it actually ranks for in Search Console, and find missing, duplicate, truncated or misaligned metadata on the pages where a rewrite would earn the most clicks.

FAQ

Frequently asked questions

How do I connect organic search to revenue?
Join Search Console and your revenue system on the landing page path. Search Console gives queries and clicks per page. GA4 gives sessions and revenue per landing page for organic visitors. HubSpot gives leads and closed deals from the organic source. The page is the bridge between the query and the money.
Why do SEO tools not show revenue?
Revenue lives in GA4, your CRM, or your payment provider. None of those know which query brought the visitor. Only a join across Search Console and those systems answers the question of which keywords made money.
Should I add GA4 revenue and HubSpot revenue together?
No. They attribute differently. HubSpot uses first touch by its tracking cookie; GA4 uses session-scoped last non-direct click. Present each in a separate column. Adding them double counts.
What if GA4 revenue is zero for every organic page?
The site is not sending purchase events to GA4. That is a tracking gap. Fix the ecommerce events or use HubSpot or Stripe as the revenue source instead.
Can an AI agent trace organic traffic to revenue?
Yes. With Search Console, GA4, and HubSpot connected, the agent joins the three systems on the page path and returns revenue or pipeline per organic page with the top queries behind each. Sequel provides all three connections and the organic-traffic-to-revenue playbook.

Put this playbook to work

Connect a source, ask the question, and the agent follows these steps. Free to start.