# Read your traffic and revenue

Install the tracker, choose which domains count, then read visitors, sources, pages, goals, customers and the revenue each source brings in the console.

The console's **Analytics** pages show who visits your site, where each visit
came from, what they read and the payments that followed. This guide sets up
collection for Acme Analytics' marketing site and then reads every report.
Installing the tracker in your code is on [Web analytics](/tracking/web-analytics);
the Home dashboard and the API behind it are on
[Reporting](/reference/reporting).

> **Note:**
  A console role that can read web sessions (the **Analytics** menu needs it)
  and, for **Settings**, **Analytics**, web domains. The tracker on your site,
  and visits from a domain your organization owns or one you track under
  **Domains**.

## 1. Open the analytics settings

[Open Analytics settings in the console](https://console.buildbase.app/dashboard/admin/setting/analytics)

In the left rail choose **Settings**, then **Analytics**. The page has four
cards: **Install**, **Domains**, **Collection rules** and **Delete data**;
**Open reports** at the top goes to the reports.

![Settings, Analytics: the Install card reading Receiving visits, with the script tag and goals snippets, and the Analytics menu item highlighted as step 1](/images/analytics/overview/settings-open.webp)

## 2. Install the tracker

Under **Install**, copy the **Script tag** into the `<head>` of every page, or
the code under **With the SDK** into an app that already runs `@buildbase/sdk`.
Both already carry your organization ID and server URL. The status line reads
"Waiting for the first visit. This updates by itself." until a visit arrives,
then **Receiving visits**.

![The Install card: Receiving visits from acme-analytics.example, the Script tag with its Copy button highlighted as step 2, Goals and With the SDK](/images/analytics/overview/install.webp)

## 3. Choose which domains count

Visits from a domain your organization owns are counted. A site it does not
own waits under **Domains**, kept out of every report: press **Track** to count
it. To count a site before its first visit, type it under **Add a domain** and
press **Add**.

**Block** stops collecting from a domain and deletes every visit and event it
already sent: the dialog asks you to **Block and delete**, and this cannot be
undone.

![The Domains card: acme-partners.example Waiting for review with its Track button highlighted as step 3, acme-analytics.example Tracked, and the Add a domain field](/images/analytics/overview/domains.webp)

## 4. Set the collection rules

Under **Collection rules**:

- **Only listed domains** drops visits from any domain that is not tracked,
  instead of holding them for review.
- **Extra URL parameters** names a parameter to keep beyond the campaign tags,
  referral tags and ad click IDs kept already, one per line. Never a token or
  a code.
- **Paths not to count** leaves pages out, one per line: `/admin` also leaves
  out `/admin/users`.

Press **Save rules**.

![The Collection rules card: Collect web analytics on, and Only listed domains, Extra URL parameters promo and Paths not to count /admin highlighted as step 4, with the Save rules button](/images/analytics/overview/rules.webp)

**Collect web analytics** is on until you turn it off. Turned off, the
organization counts no visits, and nothing already collected is deleted.

## 5. Open the reports

[Open Analytics in the console](https://console.buildbase.app/dashboard/admin/analytics)

In the left rail choose **Analytics**, then **Overview**. Until the first visit
the page says **No visits yet** and offers **Install the tracker**. A warning
above the reports counts the new domains waiting under **Domains**; **Review
domains** opens them.

![Analytics Overview: 9 visitors, 80 page views and $49.00 revenue from 1 customer, the Visitors and revenue chart and the 1 new domain warning, with the Overview menu item highlighted as step 5](/images/analytics/overview/overview.webp)

## 6. Pick the dates and the touch

Above the reports choose the date range, and how a visit's source gets the
credit for a payment: **Last touch**, the source of the visit just before
paying, or **First touch**, the source that first brought the visitor. Once
more than one site sends visits, a **Site** picker (**All sites**, or one)
joins them.

![The report controls: the date range highlighted as step 6, and Last touch beside it](/images/analytics/overview/controls.webp)

## 7. Read the totals

The tiles count **Visitors**, **Page views**, **Bounce rate**, **Visit
duration**, **Revenue** and **Customers**, each against the period before.
**Visitors and revenue** charts both by the day (by the hour for a range of two days or less),
in your organization's time zone, UTC unless you set one under **Settings > General**:
a day runs from midnight to midnight there
([organization settings](/console/organization#5-time-zone)).

![The tiles Visitors, Page views, Bounce rate, Visit duration, Revenue and Customers highlighted as step 7, above the Visitors and revenue chart](/images/analytics/overview/tiles.webp)

## 8. Filter by a source

Press a row in **Sources** (or most other reports) to narrow every report on
the page to it. The filter shows as a chip above the tiles; remove the chip to
undo it.

![The filter chip Channel: Paid highlighted as step 8, above the tiles narrowed to 6 visitors](/images/analytics/overview/filter.webp)

## 9. Read pages, places, devices, goals and campaigns

The reports below the chart break visitors down:

| Report        | Tabs                                                 |
| ------------- | ---------------------------------------------------- |
| **Sources**   | Channel, source, referrer and campaign               |
| **Pages**     | Each page, **Entry** and **Exit**                    |
| **Locations** | Country and region                                   |
| **Devices**   | Device, browser and OS                               |
| **Goals**     | The goals your site sends, and **Outbound** links    |
| **Campaigns** | **Source**, **Medium**, **Content** and **Ref** tags |

![Goals with signup, and Campaigns by source, google with $49.00 of revenue, with Campaigns' Source, Medium, Content and Ref tabs highlighted as step 9](/images/analytics/overview/breakdowns.webp)

## 10. See who paid

Choose **Customers** under **Analytics**. Each paying customer shows their
**Revenue**, **First touch**, **Last touch**, **Visits before paying**, how
the payment was tied to a visitor (**Matched by**) and when they **First
paid**.

![The Customers table: Priya Shah, $49.00, first and last touch Paid from Google, 1 visit before paying, and the Matched by column highlighted as step 10, reading The buyer's visits](/images/analytics/overview/customers.webp)

## 11. Follow one visitor

Choose **Visitors** under **Analytics**, then a visitor: their visits, the
pages they read and, under **Payments**, what they paid. A visitor without
cookies is counted for one day only, and marked **Cookieless**.

![A visitor's Payments card: $49.00 on Nov 3, matched by the buyer's visits, with Payments highlighted as step 11](/images/analytics/overview/visitor.webp)

## 12. Read where a customer came from

On a person's page under **Users**, and on a workspace's page, the
**Acquisition** card shows the same journey for that customer: **First touch**, **Last touch before paying**, **Visits**, **Revenue**, **First paid** and **Matched by**.

![The Acquisition card on Priya Shah's page: first touch and last touch before paying Paid from Google, 1 visit, $49.00, first paid Nov 3, matched by the buyer's visits, highlighted as step 12](/images/analytics/overview/acquisition.webp)

## 13. Read the Home card

On **Home**, **Website visitors and revenue** shows the last 30 days: visitors, revenue, and **Revenue by channel**. **Open analytics** goes to the reports. The other Home cards are on
[Reporting](/reference/reporting).

![The Website visitors and revenue card on Home: 9 visitors, $49.00 revenue, revenue by channel Paid, with its title highlighted as step 13](/images/analytics/overview/home-card.webp)

## 14. Delete what you collected

Back on **Settings**, **Analytics**, **Delete data** deletes visits and their
page events for one **Site** or **Every site**, in a date range or all time.
Press **Delete data**, then **Delete data** again in the dialog. Payments and
the sources they were credited to are kept. This cannot be undone.

![The Delete analytics data? dialog: every visit and page event from every site from all time is deleted, with the Delete data button highlighted as step 14](/images/analytics/overview/delete.webp)

## Check it works

Visit your site: the visit appears on **Overview** within a minute, under the
source it came from. Pay through your app's checkout in Stripe test mode: the
payment appears under **Revenue** and on **Customers**.

## Things to watch out for

- **A domain you do not own waits.** Its visits are kept out of every report
  until you press **Track**. At most
  20
  domains wait at once; past that, visits from a new one are dropped, and a
  waiting domain is forgotten after
  7
  days unless tracked.
- **Block and Delete data delete what was collected**, and cannot be undone.
- **Rules have limits**: at most
  10
  **Extra URL parameters** and
  20
  **Paths not to count**. Your site sends an extra parameter only once it is
  also named in the script tag's `data-params` or the SDK's `analytics.params`:
  after you save, the snippets under **Install** name them for you.
- **Turning off Collect web analytics stops collection.** The collector then
  answers `404`, which the SDK and the script tag read as "stop sending". Each
  environment has its own switch.
- **Visits count against your plan.** Page views, goals and outbound clicks
  count against the plan's monthly web analytics events. On Free, the
  collector drops visits past the allowance without telling the site; paid
  plans bill the overage.
- **Reports go back as far as the data is kept.** Visits and visitor IDs are
  kept 730 days, page
  events 90
  days, so the page, goal and outbound reports cover the last
  90 days.
- **Production never counts `localhost`.** A local server accepts it, for
  testing.

## If something goes wrong

| What you see                                           | Why                                                                     |
| ------------------------------------------------------ | ----------------------------------------------------------------------- |
| **No visits yet** after installing                     | The site's domain waits under **Domains**, or the tracker is not loaded |
| A visit you made is missing                            | Its path is under **Paths not to count**, or its domain is not tracked  |
| `status must be trusted` from the domains API          | A domain's status can only be set to trusted (**Track**)                |
| `from and to must be dates` from **Delete data**'s API | The date range was not two dates                                        |
| Visits stop near the end of the month on Free          | The plan's web analytics events are used up                             |

## Next steps

- [Web analytics](/tracking/web-analytics) - the script tag, the SDK, goals and consent
- [Reporting](/reference/reporting) - the Home dashboard and the API behind each card
- [Measure real CAC](/tracking/measure-real-cac) - what each channel costs per paying customer
