Why goals matter
Visitors are the top of the story. Goals are the rest of it. Every rate on your dashboard — leads, conversions, conversion rate, cost per conversion on the Paid Ads page — is computed from goals, and so is what the AI business analyst tells you about which channel works. A goal counted in the wrong bucket does not just mislabel one row: it moves every number built on it.
So the one thing worth ten minutes of your time after installing the script is making sure your key actions exist as goals, and that each one counts as the right thing.
The three roles
Every goal has exactly one role:
- Lead — a person handing over their details: a sign-up, a demo request, a contact or quote form, a trial start. Leads counts new people: someone who was already a lead or customer before the window is a returning lead, not a new one.
- Conversion — a purchase or customer event. Conversions drive the conversion rate and revenue, and they are what server-side conversions forward to your ad platforms.
- Engagement — interest, not commitment: scrolls, outbound clicks, downloads, a started checkout. Tracked, shown, never counted as a lead or a conversion.
New goals get a sensible default from their name. Names like purchase, checkout, order or upgrade default to Conversion; signup, demo, contact, trial or quote to Lead; anything unrecognised to Engagement, so an unknown goal can never inflate your rates. A name that reads as a step toward a conversion — checkout_started, signup_started — is deliberately Engagement: starting a checkout is neither a purchase nor a person handing over details.
What is captured automatically
The tracker records common behaviour with no code: outbound link clicks, file downloads, form submits, deep scrolls, email and phone link clicks, and clicks on call-to-action buttons. They appear on the Goals tab as they happen and are all Engagement by default.
One thing counts as a conversion without any goal at all: server-verified revenue from a connected Stripe account (see Connect Stripe).
Add a goal
Open Overview → Goals. The Add a goal card offers two kinds:
- When someone reaches a URL — no code. Type a path such as
/thank-youand add it. Wildcards work:/blog/*. This is the fastest way to count a confirmation page. - When someone does a specific action. Describe it — "clicks Book a demo" — and choose Set up with Assistant. The analyst writes the tracking for you: either a
data-mcph-goal="book_demo"attribute on the button, or awindow.mcph.track('book_demo')call where the action happens. If GitHub is connected it opens a pull request you review; otherwise it tells you exactly where to paste the line.
If you prefer to write it yourself, both forms are documented in Install the tracking script, including how to attach revenue to a goal.
Change a goal’s role
In Your goals, each goal sits under Engagement, Leads or Conversions with a three-way control beside it. Switch it, and the change saves immediately.
Leads update the moment you switch, because they are computed when you read them. Conversions and the conversion rate are stored per day, so a change that moves a goal into or out of Conversion queues recent days to be recomputed; they catch up on the next analytics run rather than instantly.
Click any goal to see where it fires — the pages, the channels and the people who triggered it. That is the quickest way to check a goal before you promote it: a "lead" that mostly fires on your login page is not a lead.
Verify your goals
- Your main purchase or sign-up action appears under the right heading on the Goals tab.
- The Overview shows leads and conversions for a window in which you know they happened.
- Trigger the goal yourself and watch it arrive on the Goals tab.
- Ask the Assistant "what counts as a conversion in my workspace?" — it reads the same roles and will tell you.
Frequently asked questions
Why does a form submit not count as a lead?
Because the automatic form_submit fires on every form, including login, search and newsletter forms. It stays an engagement signal. Name the real action instead — a signup or demo_request goal — and it is classified as a lead.
Does changing a role rewrite past data?
Yes, for the recent past. Leads move immediately, because they are computed when you read them. Conversions and the conversion rate are stored per day, so when a change touches the Conversion role we queue recent days to be recomputed and they catch up on the next analytics run.
Is a Stripe payment a conversion even without a goal?
Yes. Server-verified revenue from a connected Stripe account counts as a conversion on its own, so you do not need a purchase goal for Stripe checkouts.
Keep going
Turn your company into one AI-ready data platform on a single hosted MCP endpoint.