You asked AI, but even the signup count does not match

Every time you prepare a weekly report, do you change date ranges in the analytics screen, move between acquisition sources and landing pages, and copy numbers over? Handing that repetition to AI sounds convenient, but connecting it can reveal a more troublesome problem: the signup count reported by AI differs from the dashboard, or you cannot tell what the denominator for the conversion rate is.

Starting with the MCP address will not solve that problem. First, verify that the tracker receives the initial pageview and that a completed signup is recorded exactly once. The practical value of Open Analytics is not just its $9-per-month interface; it is connecting verified data so AI can query it with specified dates and criteria.

Below, we go from checking pageviews → validating one conversion → connecting MCP → comparing the same period. This is not a review based on running it in an actual account or a particular AI client, but a procedure based on paths confirmed in the currently public official documentation.

Define one completed-signup event before your first connection

You need permission to modify the site, a payment card, an AI client that supports MCP, and one conversion definition. The hosted service provides a seven-day trial, but requires a card when you start. Starter currently costs $9 per month and includes 50,000 monthly events, one site, and one seat for yourself.

Write down the trigger condition and denominator, not just the conversion name.

For example: “Record signup once per user action when the signup-complete screen appears, and calculate the conversion rate as number of signups ÷ number of visitors.” If you use the same name for a button click and signup completion, you will not get an accurate conversion rate even after connecting MCP.

  1. Start a trial in Open Analytics and add your site. When you register the site name and domain, you receive a public tracking key in the oa_pk_ format and an installation snippet.
  2. Deploy the tracker. Run npx getopen init in your project folder and enter the tracking key. If you do not use the CLI, place the asynchronous script supplied by the dashboard in your site's <head>.
  3. Open the deployed site and check Dashboard → Site → Realtime. If the first pageview does not appear, check the tracking key, cached HTML, and the test host's origin allowlist. A visit may not be recorded in a browser with GPC or DNT enabled.
  4. Instrument only one core conversion. Choose the appropriate method among the HTML data-oa-event, a no-code rule in the dashboard, and JavaScript oa.track(). Applying both an HTML attribute and oa.track() to the same element and event name can result in double counting.
  5. Perform the actual conversion action once. In Custom events, confirm that the specified name and count, trigger path, and properties arrived as intended. Success does not mean “the event is visible”; it means one action produces one record.

Now connect MCP, and stop write requests

The hosted MCP address is https://api.getopen.so/mcp. Enter Open Analytics as the name in your AI client's MCP or custom connector settings, then enter this URL; an OAuth consent page opens in the browser. This is not a process of copying an API key into the chat window.

  1. Read the app name and requested scopes on the consent screen. For your first report, read capabilities such as sites, analytics, and real-time data are enough. If the app requests write scopes that change funnels, events, widgets, or sharing, do not approve them at first.
  2. If your client supports only stdio and does not accept URL-based remote MCP, use the bridge npx mcp-remote https://api.getopen.so/mcp in a Node.js environment. You cannot connect clients that support neither POST JSON-RPC remote MCP nor this bridge.
  3. Include the date range, metric, and denominator in your first question. Try asking: “Compare the last 7 days with the preceding 7 days in a table, showing visitor count, signup count, and conversion rate calculated as number of signups ÷ number of visitors. State the exact start and end dates, and do not estimate unavailable values—mark them as missing.”
  4. Query the same period again in the dashboard. Confirm that visitor and conversion counts are explained using the same definitions, then add acquisition-source and landing-page breakdowns. Before enough data accumulates, it is better not to assign causes to small changes.
  5. Check the connection in Dashboard → Account → Connected apps. Review the app and approved scopes, and revoke access immediately when testing is done or you see unnecessary access. You can also check the connection and the first-use record from a new source in this flow.

Open Analytics separates read and change permissions, and does not allow agents to delete sites, manage team members, handle API keys or billing, or change domains. Even so, read permissions may include sensitive business information such as visits and revenue, so regularly check whether there is a reason to keep the connection active.

50,000 per month means billable events, not visitors

To calculate the Starter limit, add pageviews and conversions together. Each valid pageview, custom event, and conversion generated by real customer traffic counts as one usage unit. By contrast, identify, Web Vitals, and real-time heartbeats are not billable events.

ItemUsage calculationFirst-month assessment
Pageview1 unit per valid pageviewCheck baseline collection volume
Custom events · conversions1 unit per valid occurrenceStart with the 1–3 needed for business decisions
identify · Web Vitals · heartbeatNot billable eventsReview personal-data handling and analytics need separately

You can initially estimate expected usage simply as monthly pageviews + monthly custom-event and conversion occurrences. Official documentation notes that the usage screen and analytics screen use different queries, so their values can be temporarily slightly different even for the same period. Do not treat billing volume and report numbers as the same metric in all cases.

Before removing GA4, see why the two tools count differently

Open Analytics is a good first tool to trial for smaller sites that want simple answers about acquisition, pages, and core conversions. But for organizations where persistent identification matters, such as ad-platform integrations or user journeys spanning multiple days, it is safer to run it alongside GA4 for a period rather than remove GA4 immediately.

The default anonymous identifier differs by site and expires at UTC midnight, and raw IP addresses are not retained. GPC visits are not collected and DNT is respected by default, so totals may appear lower than in other analytics tools. But do not attribute every numerical difference to privacy signals. Also check an incorrect tracking key, caching, origin settings, and duplicate events.

To analyze signed-in users across multiple visits, you can send your own pseudonymous ID through oa.identify. Do not use an email address or name as that ID; unlike default anonymous measurement, revisit the timing of consent and the privacy notice.

You cannot conclude that a consent process is always unnecessary just because there are no cookies.

Open Analytics also treats persistent IDs and revenue attribution as features requiring separate consent decisions. The analytics-measurement consent exemption described by the French data-protection authority CNIL is likewise conditional on factors such as purpose limitation, an opt-out mechanism, site scope, and limits on combining data with other data. If you also use advertising pixels or session-replay tools, review the site-wide setup for the applicable jurisdiction.

Decide whether to replace it based not on whether total visitor counts are identical, but on whether needed campaigns and conversions are captured without omissions, can be queried repeatedly using the same definitions, and satisfy your team's essential integrations. MCP is not an analytics tool that fixes incorrectly collected data; it is a pathway for an agent to access data that has already been collected.

Self-hosting is an operational choice, not a free plan

The public repository is licensed under AGPL-3.0 and can be self-hosted. Along with the tracker and collector, the repository publishes workers, an API, a query gateway, a real-time service, and a dashboard.

So rather than choosing it only to save $9 per month, consider it when you need direct control over data location and have the operational capacity to handle deployment, backups, and upgrades. For a small marketing team, it is simpler to first use the hosted version and confirm that the event definition and MCP reporting flow fit the actual work.

If you want to dig deeper

Quick start | Open Analytics — The official sequence for creating a site, issuing a tracking key, installing through the CLI or manually, and checking Realtime. getopen.so

Custom events | Open Analytics — Documentation to consult when choosing among HTML attributes, no-code rules, and oa.track(), and when avoiding duplicates. getopen.so

MCP: connect an AI agent | Open Analytics — Check the MCP address, OAuth flow, permission scopes, stdio bridge, and the path for revoking a connection. getopen.so

Privacy and consent | Open Analytics — Explains the anonymous identifier's rotation cycle, IP handling, GPC and DNT behavior, and features that change the consent assessment. getopen.so