Website analytics

Break an event or goal down

analytics_breakdown · Reads only · Markdown

One event or goal by a prop or by where its visits came from, with conversions, conversion rate and revenue.

Free*

*Free up to 1,000,000 reads a month for the whole account, then $0.50 per 10,000 reads.

An example

Which channels brought the fleet deals we won in the last 90 days, and how much did they spend?

Your agent callsanalytics_breakdownFree*

The example business is Halverson Cycle & Repair, a bike shop with a repair workshop in Portland, Oregon. The reply is the one the tool really gives.

With these arguments
{
  "site": "halversoncycle.example",
  "event": "Deal won",
  "by": "channel",
  "period": "90d"
}
What comes back
{
  "site": "halversoncycle.example",
  "period": {
    "from": "2026-07-17",
    "to": "2026-10-14"
  },
  "event": "Deal won",
  "by": "channel",
  "total": {
    "conversions": 1,
    "visitors": 0,
    "revenue": [
      {
        "currency": "USD",
        "total": "9400.00"
      }
    ]
  },
  "rows": [
    {
      "channel": "Organic search",
      "conversions": 1,
      "visitors": 0,
      "conversion_rate": null,
      "revenue": [
        {
          "currency": "USD",
          "total": "9400.00"
        }
      ]
    }
  ]
}

Use it when

Someone asks which channels, campaigns or landing pages bring signups, bookings or money.

What it does

One event or goal by a prop (by: "prop:plan") or by where its visits came from: channel, source, referrer, campaign, medium, term, content, landing_page, page, country, device, browser or os. Each row has conversions, visitors, the conversion rate (for where visits came from) and revenue, so you see which channels, campaigns and landing pages bring signups and money, including what analytics_track and Conecto's own bookings, chats and forms counted.

What comes back

Rows by the value asked for, each with conversions, visitors, the conversion rate and revenue per currency, and the totals. Events the agent tracked that no visit led to are one row, (no visit). Every reply also carries cost_usd and balance_usd.

Inputs

NameTypeWhat it is
siteRequiredstringThe site's domain (e.g. halversoncycle.example) or its site_id. 4 to 253 characters.
eventstringUp to 60 characters.
goalstringUp to 60 characters.
bystringUp to 50 characters. Default: channel.
periodstringOne of: today,yesterday,7d,30d,90d,month,last_month,12mo,custom. Default: 30d.
fromstringWith period custom: the first day, 2026-10-01. Up to 10 characters.
tostringWith period custom: the last day. Up to 10 characters.
filtersobjectNarrow the stats: page and entry_page ("/blog/*", * for any part), goal (a goal's name), event, channel (Direct, Organic search, Paid search, Organic social, Paid social, AI assistants, Email, Referral, Affiliates, Display, Paid other, Other campaigns), source ("Google", "Direct"), referrer, campaign, medium, term, content, country ("DE"), device (desktop, tablet, mobile), browser, os. Example: {"channel": "Organic search", "device": "mobile"}.
limitinteger1 to 100. Default: 20.

The call

Over MCP, call analytics_breakdown on https://api.conecto.chat/mcp/analytics. Over REST:

Terminal
curl -X POST https://api.conecto.chat/v1/tools/analytics_breakdown \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"site":"halversoncycle.example","event":"Deal won","by":"channel","period":"90d"}'

When it refuses

A refused call costs nothing and says what to do next.

CodeWhenWhat to do
not_found404No site the business counts has that domain or site_id.Call analytics_list_sites and use a domain from it.
invalid_input400No event or goal was named, or both, the goal does not exist, or by is not one of the dimensions or prop:<name>.Name one event or one goal, and pick by from the list.
rate_limited429The business ran more analytics reports this minute than its limit allows.Wait a minute, then call again.

Give this to your agent.

Set up Conecto from https://conecto.chat/SKILL.md