> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usestealth.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Panel

> The first screen of the dashboard: revenue against normal, estimated loss, clients with problems, market signals and trends.

The **Panel** answers one question: is revenue where it should be, and if not, where is it falling? It is the first screen after you sign in (**Overview** in the menu). Every number on it comes from your Google Ad Manager reports, for the clients you monitor. Values that Stealth estimates instead of reading directly carry the **Estimated** badge.

## How it works

### Normal

Most cards compare the real value with **normal**: the median of the same weekday in the 3 previous weeks. For **Today**, normal is the median of the same hour, on the same weekday, in the 3 previous weeks. A day without enough history counts in the totals but stays out of the comparison.

### Portfolio index

Part of a drop is often the whole market moving, not a problem of yours. To separate the two, Stealth uses the **portfolio index**: how the median client did against its own normal. The estimated loss of each client is its normal revenue times the portfolio index, minus its real revenue. If every client fell 10%, nobody shows a loss. If one client fell 40% while the portfolio fell 10%, that client shows the difference.

A client counts for the portfolio (it is **eligible**) when its normal is at least R\$ 50 per day.

### Filters

* **Network**: **All networks** or one network.
* **Period**: **Today** (the default), **Yesterday**, **Last 7 days**, **Last 30 days** or **Custom**, a range of closed days of up to 90 days.
* **Currency**: **R$** or **US$**. It is the same preference as **Currency** in **Settings > Profile**, so a change here is saved for you on every device. See [Which currency do the amounts use?](#faq).

The **Panel** and **Clients** keep the same period when you move between them. Each metric card opens **Clients** in a new tab, sorted by that metric.

## Steps

### Arrange your Panel

Each person chooses which cards appear on their **Panel**, in what order and at what size. Your arrangement is saved for you in each organization and does not change the **Panel** of anyone else on your team.

**1. Open edit mode**

Open the **⋯** menu next to the **Network** filter at the top of the **Panel** and choose **Edit panel**. Each card shows a handle before its title, a menu (**⋮**) in its top right corner and, on a card that comes in more than one size, a resize corner at its bottom right. The **Network** and **Period** filters are hidden until you choose **Done** or **Cancel**.

**2. Move cards**

Drag a card by its handle, or choose **Move up** or **Move down** in its menu. With the keyboard, focus the handle, press Space to pick the card up, use the arrow keys to move it and press Space again to drop it. Escape puts it back where it was.

**3. Resize cards**

Drag a card's bottom right corner: the grid shows in blue the space the card takes when you let go. You can also choose **Size** in its menu, or, with the handle focused and the card picked up, hold Shift and use the arrow keys. Each card has its own smallest and largest size. **Clients with Problems**, **Health and Prevention** and **AI Summary** always take the full width, and **Opportunities** takes two columns. Cards side by side always share the same height: changing one card's height changes the cards beside it too, so **Size** lists only the heights the whole row can take.

**4. Hide or add cards**

Choose **Hide** in a card's menu to take it off the **Panel**. To bring a card back, choose **Add cards**, then **Add** next to it. It goes to the end of the **Panel**.

**5. Choose your metrics**

Revenue, Loss, Average eCPM, Fill Rate and Recovered sit side by side in one card, **Key Metrics**, which you move like any other card and which always takes the full width. In its menu, under **Metrics shown**, check or uncheck each metric: the others share the row. To reorder them, drag a metric by its own handle onto another one's place, use **Move left** or **Move right** in its menu, or focus its handle and press the Left and Right arrow keys. Unchecking the last metric hides the whole card; adding it back brings every metric.

**6. Save**

Choose **Done** to save. **Cancel** discards every change since you chose **Edit panel**.

**Restore default** puts back the Stealth arrangement: the default cards, in their default places and sizes. It is saved only when you choose **Done**.

On a phone or a narrow window, the cards stack in one column. There you can reorder, hide and add cards, but not resize them. The order you set on a narrow screen is kept apart from the order on a wide screen, and a card you hide is hidden on every screen.

> [!NOTE]
>
> **Owners** and **Administrators** can mark a card as **Required for the team** in its menu. A required card shows a lock: everyone in the organization can still move it, but it cannot be hidden. If you had hidden a card that becomes required, it comes back at the end of your **Panel**, with a notice the next time you open it.

## What you see

### AI Summary

A short text written by AI from the numbers on the page. Client and network names are not sent, and every number in the text is checked against the page before it is shown. With **All networks** and a shortcut period, it is generated on the first visit of the day and shared with the team. For a custom range or a single network, choose **Generate summary**. The summary for **Today** is available from 10:00 in the organization's time zone. There is a monthly limit, which resets on the 1st.

The text names no client and no ad unit, since the **Clients with Problems** list below it already shows each one. It says what the problems have in common instead: the kind of drop, the network most of them sit on, a format several of them share, or whether one is critical.

### Revenue

Total Google Ad Manager revenue of the monitored clients in the period, with the variation against normal. On **Today**, revenue is estimated: today's impressions so far times each client's eCPM over the last 7 closed days, so it carries the **Estimated** badge.

### Estimated Loss

Normal revenue times the portfolio index, minus real revenue, summed over the clients. It is an estimate, not a measured value.

### Clients with Problems

How many monitored clients fell beyond the portfolio in the period. The list below the cards shows them.

### Market

Price signals inside your portfolio, not external market data. It always reads the **last closed day**, whatever period you choose.

* **Strength**: the eCPM of the median eligible client against its normal. **Weak** at -5% or lower with half the clients below 95% of normal, **Strong** at +5% or higher with half the clients above 105%, **Normal** otherwise.
* **Trend**: the weekly eCPM of the median client against its own average of the last 8 weeks. **Up** or **Down** when the last two weekly changes pass 2% in the same direction, **Flat** otherwise. It needs 3 weeks of data and 5 clients with data in every week.
* **Clients vs normal**: the share of eligible clients below and above normal.
* **Demand source**: the 3 largest demand sources, each with how the median client's revenue from that source compares with the same weekday in the 3 previous weeks. A source is listed when it has at least 5 clients with R\$ 50 per day from it.
* Calendar notes such as **Black Friday week** or **Quarter end** appear when the date is one of them.
* The chart shows the median client's weekly eCPM over the weeks, against the average of those weeks (dashed line).
* **Off the market** lists up to 3 clients whose eCPM sits at least 15 points below the median client's on the same day, each with its change and a link to the client.

With fewer than 5 eligible clients, the card shows **Small sample**.

### Clients with Problems (list)

Up to 10 clients that fell beyond the portfolio, sorted by estimated loss per day. A client enters when, over its days with data in the period, the estimated loss averages at least R\$ 20 per day and its real-over-normal is at least 20% below the portfolio's.

Each row shows the severity, the client, the loss per day, a diagnosis, the network and the start date. The diagnosis is one of: **Possible layout change**, **Zeroed unit**, **Unit stopped receiving requests**, **Unit stopped delivering**, **Traffic dropped**, **Fill rate dropped**, **Price dropped** or **Broad client drop**.

**Show details** opens:

* How much of the drop the market explains.
* The drop **By demand source**, with a reading (**Likely market**, **Likely on this client** or **Part market, part this client**). See [Demand source reading](https://docs.usestealth.dev/en/detection/demand-source.md).
* The client's ad units, each with a link to Google Ad Manager.
* **Numbers**: requests, fill rate and eCPM of the client against its normal and against the typical client.

### Portfolio

The real totals of the eligible clients against their normal, broken into **Requests**, **Fill rate** and **eCPM** (requests × fill rate × eCPM multiply back to the revenue variation). It also shows the **Median client** and how many clients are **Below normal** (under 90% of their normal). A sentence at the top reads the day, for example **Drop concentrated in a few clients** or **Broad drop: most of the portfolio fell**, and names the main driver. With one network selected, a second column shows the whole portfolio for comparison.

### Revenue per Day

Daily revenue of the monitored clients against the normal of each day (dashed line). Days without data are left blank. On **Today**, this card is replaced by **Impressions per Hour**: real impressions of each complete hour against normal, with the latest hour, the peak hour and the total so far.

### Formats Losing Revenue

Revenue of each format in the period against its daily average in the 3 weeks before. It lists up to 5 formats below that average, largest drop first. It is not shown on **Today**.

### GAM Changes

What changed in Google Ad Manager in the last 90 days on your direct line items (standard and sponsorship), orders and ad units. Stealth reads them every hour and compares each one with the previous read, so each row of the table says what changed (for example **Status: delivering → paused**, a new end date, goal, rate or sizes), which line item, order or ad unit, its network, when, the app that made the change, such as the Google Ad Manager interface, and **Changed by** with the name of the Google Ad Manager user who made it. Point at the name to see that user's email, which tells apart two users with the same name. Only members of your organization see it. The name is missing when the Google Ad Manager user connected to Stealth has a role that cannot see the change history of that network: the change still shows, without who made it.

**May be related** marks a change made up to 24 hours before an incident started on the same network. It carries the **Estimated** badge: it is an inference from the timing, not a proven cause. Before the first read the card shows **Not checked yet**, and a network whose changes Google Ad Manager does not let Stealth read shows as not checkable. Click a row to open that change, or **See all** to open [Activity](https://docs.usestealth.dev/en/screens/activity.md).

### Changes in Stealth

The latest changes members of your organization made in Stealth: monitoring, alert rules, the Google Ad Manager connection, webhooks, members and organization settings, with who made each one and the values before and after. It is not on the **Panel** by default: add it from **+ Add cards** when you edit the **Panel**. **See all** opens the **Stealth** tab of [Activity](https://docs.usestealth.dev/en/screens/activity.md).

## FAQ

> [accordion] Why does the Panel show a loss when revenue went up?
>
> Estimated loss compares each client with the portfolio, not with yesterday. If the portfolio rose 15% and a client rose 2%, that client did worse than its peers and shows a loss.

> [accordion] Why is the severity on the list different from the incident?
>
> The list on the **Panel** reads the whole period you selected. Incidents are opened hour by hour or day by day by the detection rules. Both use the same severity scale, described in [Severity](https://docs.usestealth.dev/en/detection/severity.md).

> [accordion] Why does GAM Changes not show who made a change?
>
> Google Ad Manager records the app that last changed a line item or an order, not the person. Stealth shows that app and nothing else.

> [accordion] Which currency do the amounts use?
>
> Until you choose, the **Panel** follows your browser language: reais (R$) for a browser in Portuguese, dollars (US$) for any other. Choose the currency in the **Currency** filter at the top of the **Panel** or in **Settings > Profile**: both change the same preference, saved with your account.
>
> In dollars, every amount on the **Panel** is converted at one rate: the latest PTAX rate published by the Banco Central do Brasil. The info icon of each converted card names the rate and its day (for example, **1 USD = R\$5.42**, of 10/17). Past days use that same rate, not the rate of each day, so converted values carry the **Estimated** badge. Percentages do not change. The AI Summary text and the other screens do not follow this choice.
>
> If the rate cannot be read, the **Panel** stays in reais and says so next to the filters.
>
> Some Google Ad Manager networks report in another currency, such as dollars. Stealth keeps each network's amounts in its own currency and converts them to reais at the latest PTAX rate before adding networks together, so every total, ranking and comparison uses one currency. Totals that include converted amounts carry the **Estimated** badge, and the card's info icon says other currencies were converted.
>
> When you select one of those networks, the **Panel** shows its amounts in the network's own currency, as Google Ad Manager reported them, with no badge. On **Clients**, **Networks** and a client's page, each row shows its network's own currency. **Formats** adds networks together, in reais. **Incidents** show each incident in its network's currency.
>
> If the rate of a currency cannot be read, the networks in that currency are left out of the totals until it can, and a note next to the filters says how many.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.