Muro
Get started

Set up goals

Mark a page or a custom event as a success, so Muro can count conversions and conversion rate.

A goal tells Muro what success looks like on your site: reaching a thank-you page, finishing a signup, starting a checkout. Once you have a goal, your dashboard shows Conversions and Conv. Rate, the UTM Breakdown shows which campaigns convert, and insights can estimate how many conversions are at stake.

Goals are evaluated against the events Muro has already stored, so a new goal counts your past traffic too. You don't have to wait for new data.

Goal types

There are four ways a goal can match.

TypeMatchesExample
PageExactly one path/thank-you
Path prefixA path and every page under it/docs
WildcardPages below a path, one level (/*) or every level (/**)/blog/*
EventA custom event with this exact namesignup_completed

Page

Counts visitors who view exactly this path. A trailing slash and query strings are ignored, so /thank-you, /thank-you/, and /thank-you?plan=pro all match. Child pages don't: /thank-you/extra is not a match.

Use it for success pages: /thank-you, /welcome, /order-confirmed.

Path prefix

Counts visitors who view the path or anything under it. /docs matches /docs, /docs/install, and /docs/install/nextjs, but not /docsearch.

Use it for a whole section, like visitors who read any of your docs.

Wildcard

Write the path ending in /* or /**:

  • /blog/* matches direct children only: /blog/launch-week matches, /blog/2026/recap doesn't.
  • /blog/** matches every page below /blog, at any depth.
  • /* on its own matches every top-level page.

The wildcard must be the last part of the path. Patterns like /blog/*/comments aren't supported.

Event

Counts visitors who send a custom event with this exact name. Event names are case-sensitive, so signup and Signup are different goals.

Use it for things that don't have their own page: a completed signup, a payment, a click on Start free trial. See Track custom events to send one.

Rules for every goal

  • Use paths, not full URLs. /pricing works, https://yourapp.com/pricing is rejected. Anything after ? or # is dropped.
  • Paths are case-sensitive: /Pricing and /pricing are different pages.
  • A goal name can be 1 to 80 characters.
  • You can't create the same goal twice (same type and same path or event name).

Create a goal

Only the project owner can create goals. Team members can see goals but not change them.

From the Pages panel

This is the fastest way for a page goal.

Find the page

On your dashboard, open the Pages panel. Hover the page that means success. On touch screens the button is always visible.

Click Mark as goal

The Mark as goal dialog opens with the page filled in. Edit the Name if you like.

Choose how it matches

Leave Match on Page for this exact page, or switch to Path prefix or Wildcard and edit the Path. For example, mark /blog/launch-week, switch to Wildcard, and you get /blog/*.

Save

Click Save goal. The dialog shows Goal created with the goal's Conversions and Conv. Rate for the time range you're viewing, counted from the traffic you already have.

A page that's already a goal shows ✓ Goal instead of Mark as goal.

From the Custom Events panel

If your site already sends a custom event, hover it in the Custom Events panel and click Mark as goal. The dialog uses the exact event name. Click Save goal.

From the suggestions

When a project has no goals, the Goals panel shows Start with a suggested goal: pages from your recent traffic that look like a finish line, labelled Looks like a success page or Where many visits end. Click Add goal next to one. Nothing becomes a goal until you add it.

The Conversions card also shows No goals yet with a Set one up link that jumps to the Goals panel.

For an event you haven't set up yet

Use Track an event when the action doesn't exist in your code yet. It builds the tracking code for you, and lets you save the goal before the first event arrives.

Open the dialog

In the Custom Events panel, click Track an event. If your project has no custom events yet, click Generate a setup prompt instead.

Choose what you're tracking

  • A click: someone clicks a button or link, like "Start free trial". No JavaScript needed.
  • Something that completes: a signup, payment, or form that succeeds. Needs a line of code.

Pick carefully. Counting clicks on Sign up is not the same as counting completed signups.

Describe it

  • Which click? or What should be tracked?: a few words, like "Finishes creating an account".
  • Event name: filled in from your description. Use lowercase letters and numbers, with words joined by _ or -, like signup_completed. This is the exact name your goal will match.
  • Where does it happen? (optional): a hint for your assistant, like "After the signup request succeeds, in SignupForm.tsx".
  • Framework: Next.js (App Router or Pages Router), React, Vue or Nuxt, Svelte or SvelteKit, plain HTML, or "Something else".
  • Properties (optional, completions only): up to 10 extra details, separated by commas, like plan, billing_cycle. Never personal data like emails.

Click Generate prompt.

Add the code

Muro shows the one line you need: a data-muro-event attribute for a click, or a window.muro?.track() call for a completion. Add it yourself, or click Copy prompt and paste the prompt into Cursor, Claude Code, Copilot, or another AI coding assistant.

Save it as a goal

Under Count it as a goal, click Save as goal. The dialog shows Waiting for the first hit until Muro receives the event, then First hit received. That's your confirmation the tracking works.

In the Goals panel, a goal with no matching event since you created it shows a Waiting for first hit badge.

Manage goals

Go to Settings → Goals. It lists every goal with its type, its path or event name, and how many conversions it had in the last 30 days. The counter at the top shows how many goals are active, for example "3 of 10 active".

  • Rename: click the pencil next to the name.
  • Pause or resume: use the Active / Paused switch. A paused goal counts nothing and shows "—" in the Goals panel. It doesn't use one of your active slots.
  • Delete: click the bin icon and confirm. Deleting a goal removes it from all past reports. Your event data is not deleted.

To change what a goal matches, delete it and create a new one. Because goals are retroactive, the new goal counts your past traffic straight away.

Team members see this tab read-only, with the note "Only the project owner can change goals."

How conversions are counted

Conversions is the number of goals reached, counted once per visitor for each goal across the selected period.

  • A visitor who reaches the same goal five times counts as 1 conversion.
  • A visitor who reaches two different goals counts as 2 conversions.

Conv. Rate is the share of unique visitors who reached at least one goal. A visitor who reaches two goals still counts once here.

Both cards show the change against the previous period of the same length. Because each visitor counts once for the whole period, adding up the chart's daily bars can give a bigger number than the card.

The Goals panel breaks this down per goal, with the columns Goal, Matches, Trend, Conversions, and Conv. Rate. Click a goal to filter the whole dashboard to the sessions that reached it. See Filter your data.

Goals also power the Converted filter on the Sessions page and the Conv. Rate column in the UTM Breakdown panel.

Limits

  • Up to 10 active goals per project, on every plan. Paused goals don't count toward the limit. To add another, pause or delete one first.
  • A goal can't target an event name longer than 64 characters, the limit for custom event names.

Legacy conversions

Before goals existed, sites could send events with the event type conversion. If your project has any, the Goals panel shows a Legacy conversions row. These events still count toward Conversions, as if they were one extra goal. They can't be renamed, paused, or used as a filter.

For new tracking, use a custom event and make it a goal.

Muro reminds you

If your site gets steady traffic but has no active goals, Muro posts a Tell Muro what success looks like card on your Insights page on Mondays, with suggested pages and events. It goes away once you create a goal.

Verify it works

  1. Visit your goal page on your site, or trigger your event.
  2. On your dashboard, set the time range to Live or Today.
  3. The goal's Conversions in the Goals panel goes up by one. For a goal saved from Track an event, the dialog switches to First hit received.

If an event goal stays at Waiting for first hit, check that the name in your code matches the goal exactly, including case.

Next steps

On this page