# Client report

## What it does

The client report is one page per client with tabs: **Overview, Channels, Paid media, Search, AI visibility, Content, Social, Local, Pipeline and Work delivered**. A tab only appears when it has something to show.

Every tab opens with a few sentences on what moved and why, then:

- **KPI tiles**: the value, the change against the comparison, a sparkline, and goal pacing when a goal is set. A change is coloured only when it is beyond normal day-to-day variation; otherwise it says "within normal range".
- **A daily chart** with the comparison period dashed behind it. Days whose numbers can still change are shaded, and unusual days are circled. Flags mark what was done on a day (content published or refreshed, ad changes and experiments, social posts, webinars, technical fixes); hover a day to read them, and switch each kind on or off above the chart.
- **Tables** of campaigns, channels, AI engines, locations or pipeline stages, with each row's change.

What some tabs add:

- **Search**: the top pages with their change and top queries, the queries that moved most between the last two 28-day windows, and an All / Brand / Non-brand switch once the client's brand terms are set.
- **Content**: every published piece with its clicks and impressions since publish, sessions and key events (last 28 days), and whether it is growing, stable or decaying; cumulative clicks per piece by publish month; and production against the calendar's plan.
- **Social**: Facebook page and Instagram account reach, views, engagement and followers; Instagram stories one by one; and post engagement someone recorded by hand (labelled as such). LinkedIn company pages are not available yet.
- **Pipeline**: deals created and won per day with their value, and the open pipeline from the daily HubSpot snapshot.
- **Work delivered**: what shipped in the range, each with its measured result (helped, no measurable change, hurt, or too early to measure), and findings opened against resolved. It has no cost or autonomy settings.

Pick the **date range** (last 7/28/90 days, month or quarter to date, last month or quarter, year to date, last 12 months) and the **comparison** (previous period, same period last year, or none) at the top. The link keeps your choice, so you can share a specific view.

Some tabs also carry what the older dashboards showed:

- **Paid media**: the Google Ads account panel: health score, open issues, pending recommendations, proven levers and experiments (from the last inspector run).
- **Pipeline**: the HubSpot deal list, with deals past their close date flagged, pipeline by rep and by rep × stage, closing this quarter and closed won; and attribution: a model switcher, conversions and value for the period, and the tables by channel, campaign, landing page and conversion, self-reported sources, recent conversions, companies visiting and tracking health.
- **Channels**: attributed conversions by channel, with the same model switcher.

These come from stored snapshots, not daily numbers, so the freshness line names each one with its date ("Pipeline snapshot as of Oct 20").

The old Performance, Google Ads, Pipeline and Attribution links now open the matching report tab (Overview, Paid media, Pipeline) once the client has a report link, keeping the date range. Adding `classic=1` to an old link still opens the old page.
**Download** each table as a CSV file from the bottom of the tab, or press **Download PDF** at the top to print the whole tab (summary, tiles, chart and tables, without the buttons).

**Two links.** The view link reads and downloads the report; it's the one Nexus shares. The edit link also lets you change the report on the page: add or remove **goals**, add **notes** that show as flags on the chart (a launch, a price change) and pick which **tiles the Overview shows**. Each change is recorded with the link that made it.

The page reads daily numbers Nexus stores from Search Console, Google Analytics, Google Ads, LinkedIn Ads, Meta Ads, Facebook and Instagram, Google Business Profile, HubSpot and its own AI-visibility tracking. It syncs every few hours: the last 90 days first, then older history a step at a time. The HubSpot pipeline snapshot refreshes once a day by itself. A source that isn't connected is left out and named at the bottom of the tab, never shown as zero.

## Use it

- **"Open the report for <client>."** Nexus posts the link.
- **"Show the paid media report for <client>, last quarter vs last year."** The link opens on that tab, range and comparison.
- **"Set a goal of 100 leads a month for <client>."** The tile shows "Goal 100 this month · on track" and the chart gets a goal line. For a cost metric (cost per lead, CPA) the target is a ceiling.
- **"Set the brand terms for <client> to Acme, Acme Corp."** The Search tab gets its brand / non-brand switch after the next sync.
- **"Refresh the report data for <client>."** Syncs now instead of waiting for the next run, and names any source that failed.
- On the edit link, use **Edit this report** at the bottom of a tab to set goals, add chart notes and choose the Overview tiles.

## Maintain

- ✋ Set the goals the client actually agreed to; the report only shows pacing for metrics with a goal.
- ✋ Set the brand terms (company and product names, common misspellings). Changing them re-pulls the brand split.
- After connecting a new source, ask to refresh the report data so the page fills in without waiting.
- The ads engine's own CPA or ROAS targets are separate: set those with "set the ads objective for <client>".

## Troubleshooting

- **A tab is missing.** Nothing for it has data yet. Connect the source (or publish content, record work), then refresh the report data.
- **The freshness line says a sync failed.** Ask Nexus to refresh the report data; it repeats the exact error. A connection error usually means the source needs reconnecting.
- **The freshness line says the last days aren't in yet.** The source reports with a delay, so the range stops at the last full day and the comparison is cut to the same length.
- **An old dashboard link opens the old page, not the report.** The client has no report link yet. Ask Nexus to open the report once; after that the old links go to the report.
- **A total looks lower than the platform shows.** Recent days can still change (they're shaded); they settle within a few days to two weeks depending on the platform.
- **Brand plus non-brand is less than the total.** Google leaves anonymized queries out of any query-filtered number.
- **A piece shows "No search data".** Its page is not among the site's top 500 pages in Search, or its live URL is missing.

## Prompts

- "Open the report for <client>."
- "Show me the KPI dashboard for <client>."
- "Show the paid media report for <client>, last quarter vs last year."
- "Set a goal of 100 leads a month for <client>."
- "Set a monthly goal for organic clicks."
- "Refresh the report data for <client>."
- "Set the brand terms for <client> to Acme, Acme Corp."
- "Split brand and non-brand search for <client>."
