Using the dashboard
The /app dashboard is one view: a filter bar at the top, a totals strip in the middle, and a sortable table at the bottom. Everything you can change lives in those three regions.
5-min read, last updated 31 October 2026
What you’re looking at
The dashboard shows how your marketing performed over a window you care about. You pick the window with filters, group the rows by the time grain you want, and read the totals + per-row table.
Underneath, Crowflow pulls every row of MetricsDaily that matches your filters and aggregates them server-side before handing the table to the browser. Sorting and column visibility happen client-side so they feel instant; filters round-trip to the server so the URL stays bookmarkable.
Your first sync starts by itself as soon as you pick an account to sync, and the header shows Syncing… until it finishes. It brings in your last 30 days first and usually takes 10 to 30 minutes, depending on how much data there is. The dashboard updates by itself as rows land, so you can connect Google Sheets in the meantime. After that, Refresh now pulls fresh numbers whenever you want them.
Filter bar
The filter bar across the top has six controls:
- Date range: the picker offers only the ranges your plan can show in full. On Free and Starter that is today, last 7 days, last 30 days and All; Pro adds last 90 days; Agency adds last 12 months. All is everything your plan includes (30 days on Free, 31 days on Starter, 6 months on Pro and 13 months on Agency). A link or saved view to a longer range opens as All
- Group by: Day / Week / Month / Year (see below for what this changes)
- Platforms: narrow to Google Ads, Microsoft Ads, Meta Ads, or any combination
- Campaigns: searchable multi-select of every campaign you’ve ever synced for a selected account. Pick any subset
- Compare: vs the previous same-length window (see below)
- Columns: show or hide individual columns (see below)
Filter changes update the URL (?range=90&platforms=GOOGLE_ADS&groupBy=month), so you can bookmark a specific view or share the link with a teammate.
Group by
Group by changes the time grain of each row:
- Day: one row per (date, platform, campaign). The most detailed view. Useful for trend-spotting and recent changes
- Week: one row per (ISO week, platform, campaign). Smooths out daily noise; good for weekly check-ins. Weeks are Mon-start
- Month: one row per (year-month, platform, campaign). Right grain for monthly client reports
- Year: one row per (year, platform, campaign). Useful for year-on-year comparisons with Compare on
Compare to previous
Tick Compare , vs previous and every card in the totals strip grows a small delta line:
Impressions
1,234,567
Up+12.4% (+136,000)
The previous period is the same-length window immediately before the current one. For “Last 30 days” that’s the 30 days before that. For “Last 12 months”, the 12 months before that. Compare needs your plan to hold both windows in full: Last 30 days compared with the 30 days before it needs 60 days of history. When your plan does not reach that far the Compare box is off and says what the range needs; upgrade for the longer window. Compare is also off for “All”. There’s no meaningful previous window.
Direction colours:
- Impressions, Clicks, Conversions, CTR, CR: up is green (good), down is red
- CPC, CPA: down is green (cheaper), up is red
- Spend: neutral grey. Scaling up or down can be intentional either way
CTR and CR deltas are shown in percentage points (“+0.4pp”), not relative percent.
Totals strip
Eight summary cards above the table: Impressions, Clicks, Conversions, Spend, CTR, CR, CPC, CPA. They reflect what’s currently filtered, not your whole account. Change a filter and the strip updates with the new totals.
When you have data in mixed currencies (e.g. one Google Ads account in USD and one in GBP), the Spend / CPC / CPA cards suppress the currency prefix and show a small “mixed currencies” note. Add a currency to your platform filter to read clean totals.
Sortable table
Click any column header to sort. Click again to flip direction:
- Numeric columns (Impressions, Clicks, Conversions, Spend, CTR, CR, CPC, CPA) default to descending: biggest first
- Text columns (Date, Platform, Account, Campaign) default to ascending: A-Z, oldest-first
The active column shows a filled arrow; inactive ones a faint hint. Sort is client-side and instant.
Show or hide columns
The Columns dropdown lets you toggle which columns appear:
- Always shown: Period (Date / Week / Month / Year, depending on Group by), Platform, Campaign. Hiding these would leave the numbers unattributable
- Toggleable: Account, Impressions, Clicks, Conversions, Spend, CTR, CR, CPC, CPA
- Custom metrics appear in their own sub-section once you’ve created some at /app/settings/metrics. Custom metrics can filter by platform, account or campaign; see custom metrics.
Your column choices persist to localStorage. They survive reloads and new sessions on the same browser.
Pagination & page size
The table paginates at 25 rows by default. The footer shows the visible range (“Showing 26-50 of 1,234”) and page navigation (First / Prev / Next / Last).
Pick 25 / 50 / 100 / 250 rows per page from the dropdown. The choice persists to localStorage. Changing filters or sort resets you to page 1 so you’re never stranded on “page 7 of 3”.
Shareable URLs
Filter state lives in the URL, so any view you’re looking at is bookmarkable and shareable. Example:
/app?range=90&platforms=GOOGLE_ADS,META_ADS&groupBy=month&compare=1That’s the same dashboard for “Last 90 days, Google and Meta only, monthly grain, compared to the prior 90 days.” Sort and column choices don’t live in the URL. They’re a personal-browser preference, persisted to localStorage.