Feature

The AdOps ROAS dashboard, card by card

Updated 20 August 2026

The AdOps dashboard reports Purchase ROAS and Aggregated ROAS to three decimals with a trend arrow and a Profitable, Moderate or Low badge, alongside a monthly budget card, a spend breakdown, a campaign leaderboard and an account comparison, over Today, Last 7 days, Last 30 days or This month.

Two ROAS cards, a monthly budget meter, a spend breakdown, a campaign leaderboard and an account comparison across four periods.

In numbers

The figures behind this feature

ROAS precision
3 decimals On the two ROAS cards; campaign and account rows show 2 decimals
ROAS bands
3 Profitable at 1.0 and above, Moderate at 0.5 and above, Low below that
Dashboard periods
4 Today, Last 7 days, Last 30 days, This month, defaulting to Last 7 days
Cache lifetime
1 hour Per user and per period, expired automatically by a database TTL index
Accounts in the spend breakdown
Top 5 The remainder is summarised as plus N more accounts
Budget utilisation thresholds
80 and 100 percent The utilisation bar turns amber then red
The AdOps Performance Dashboard showing a Purchase ROAS card at 2.380x and an Aggregated ROAS card at 2.088x, both badged Profitable, a Monthly Budget card at Rp 155jt, and a Spend Breakdown ranking the top five ad accounts against a budget utilisation bar at 45.5 per cent. Sample data
Two ROAS figures to three decimals, a budget meter, and spend ranked by ad account — over Today, Last 7 days, Last 30 days or This month. Read the details

The AdOps dashboard answers how the account is doing before you open a single rule. It leads with Purchase ROAS and Aggregated ROAS, each shown to 3 decimals with an x suffix, a trend arrow and a Profitable, Moderate or Low badge, then breaks spend down by ad account, ranks campaigns, and compares accounts against each other.

What are the two ROAS cards?

Purchase ROAS and Aggregated ROAS sit side by side. Each card carries an icon, the period it covers, a trend arrow with a percentage, the value to 3 decimals with an x suffix, and a status badge.

ValueBadge
1.0 and aboveProfitable
0.5 and aboveModerate
Below 0.5Low
No data for the periodNo data

The trend arrow has three states: up in green, down in red, and neutral. The No data state matters more than it sounds. A dashboard that renders a missing figure as 0.000 invites a rule to be written against a number that does not exist.

Both cards prefer Meta’s own attributed ratios. Purchase ROAS is read from Meta’s purchase_roas field and the website variant from website_purchase_roas, so the number carries Meta’s attribution modelling rather than a recalculation from raw values. Only when those fields are absent does AdOps fall back to summing conversion values, de-duplicating umbrella purchase totals against their sub-types so a sale is not counted twice. Aggregated ROAS spans 7 conversion action types rather than purchases alone.

What does the Monthly Budget card do?

It puts spend against a ceiling. The card shows the spend figure, a progress bar, the number of days left in the month, and how many of your ad accounts are active out of the total, with a warning triangle when spend has passed the limit.

The limit comes from the monthly ad-budget band you chose during onboarding, which AdOps converts into a numeric Rupiah figure. Money is formatted the Indonesian way throughout, with Rp and the rb, jt and M suffixes for thousands, millions and billions.

How is spend broken down?

The Spend Breakdown card runs the full width below the cards. It shows Total Spend, a Budget Utilization bar that turns amber at 80 percent and red at 100, and a ranked Account and Spend list of the top 5 accounts, each with a coloured share bar and its percentage of total. Anything beyond fifth place is summarised as a plus N more accounts line rather than dropped silently.

Which campaigns are winning?

Campaign Performance shows counts of active and paused campaigns, then two tabs. Top Performing lists campaigns at a ROAS of 1 and above; Underperforming lists campaigns below 1 that are still spending, which is the set worth acting on. Each row shows the campaign name, its ad account, spend, revenue and ROAS to 2 decimals, colour coded green, amber or red.

Account Comparison answers the same question one level up. It headlines the account count, highlights a Best Performer with a crown and a Needs Attention account, then prints a four-column table of Account, Spend, Revenue and ROAS with the best row badged.

How do the periods and the cache work?

Four periods sit in the header as pills: Today, Last 7 days, Last 30 days and This month. The dashboard opens on Last 7 days.

Every metric is cached per user and per period for 1 hour, stored in the database with a TTL index that expires the entry automatically and a unique index per user and cache key. That is why the dashboard loads instantly on the second visit rather than re-querying Meta for every widget.

Caching is only acceptable if the interface admits it, so the header carries a live or cached indicator with the last update time, and a Refresh button that re-requests every widget with a refresh flag instead of serving the cached copy. All five widgets load in parallel with independent spinners, so a slow account does not hold up the rest of the page.

Which accounts are counted?

Only the ones you turned on. Ad accounts discovered from Meta are stored inactive until you activate them, and the active flag is the single switch scoping everything downstream: the month-to-date spend refresh, both ROAS cards, the spend breakdown, the campaign leaderboard and the account comparison all read active accounts only.

That makes the dashboard a deliberate view rather than an automatic one. An agency running twenty accounts and automating four sees the four.

Capabilities

What this feature does, item by item.

Each line is a behaviour you can reproduce in the product today.

Two ROAS cards
Purchase ROAS and Aggregated ROAS each show a value to 3 decimals with an x suffix, a trend arrow with a percentage, and a Profitable, Moderate or Low badge.
A monthly budget meter
The Monthly Budget card shows spend against the budget band you chose at onboarding, with a progress bar, the days left in the month and how many accounts are active.
Spend broken down by account
Total spend, a budget utilisation bar that turns amber at 80 percent and red at 100, and a ranked list of the top 5 ad accounts with each one's share of total.
A campaign leaderboard
Active and paused counts, plus Top Performing and Underperforming tabs listing campaign, account, spend, revenue and ROAS to 2 decimals.
Live or cached, stated plainly
Every figure is labelled live or cached with its last update time, and a Refresh button re-requests every widget rather than serving the cache again.

Questions

Asked about this feature.

Direct answers, with the numbers attached.

What does the AdOps dashboard show?

The AdOps dashboard shows a Purchase ROAS card, an Aggregated ROAS card and a Monthly Budget card, then a Spend Breakdown across ad accounts, a Campaign Performance leaderboard and an Account Comparison, all filtered by one of four periods.

How does AdOps calculate ROAS?

AdOps prefers Meta's own attributed ratios, reading Purchase ROAS from the purchase_roas field and Website Purchases ROAS from website_purchase_roas, and only falls back to summing conversion values when those fields are absent. Values are rounded to 3 decimal places.

What do the Profitable, Moderate and Low badges mean?

A ROAS of 1.0 or above is badged Profitable, 0.5 or above is badged Moderate, and anything lower is badged Low. When no data is available for the period the card shows a No data state instead of a zero.

Is the dashboard live or cached?

Both, and AdOps says which. Dashboard metrics are cached per user and per period for 1 hour, and the header carries a live or cached indicator with the last update time plus a Refresh button that re-requests every widget.

Which ad accounts appear on the dashboard?

Only the ad accounts you explicitly activated. Accounts discovered from Meta are stored inactive until you switch them on, and the spend refresh, both ROAS cards, the spend breakdown, the campaign leaderboard and the account comparison all read active accounts only.

Write this rule against your own account.

Every feature on this page is available on every plan. Connect one ad account, copy a template, and read the log after the first run.

Contact us See pricing

14 days free · no card · billed in Rupiah

Inside the product

What the screens actually look like

Nine screens from the working dashboard — the rule builder, the metric picker, the dayparting grid and the log that records what happened. Scroll the strip.

  • The AdOps Performance Dashboard showing a Purchase ROAS card at 2.380x and an Aggregated ROAS card at 2.088x, both badged Profitable, a Monthly Budget card at Rp 155jt, and a Spend Breakdown ranking the top five ad accounts against a budget utilisation bar at 45.5 per cent.
    Performance Dashboard. Two ROAS figures to three decimals, a budget meter, and spend ranked by ad account — over Today, Last 7 days, Last 30 days or This month.
  • The AdOps rule list showing twelve automation rules, each with an on/off toggle, the ad accounts it manages, and when it last triggered — some minutes ago, others on a dated timestamp.
    Rule List. Every rule, what it manages and when it last fired. The toggle is the only thing between draft and live.
  • The AdOps condition builder showing a task with time-of-day conditions across seven day tags, a nested AND group holding a lifetime spend condition under 400,000, and a second task with four stacked metric conditions.
    Conditions. Metric, period, operator, value — joined with AND or OR, and nestable, so a rule can say something a dropdown cannot.
  • The AdOps metric picker open over a condition row: a panel with Meta Ads and Custom metrics tabs, a search box, and a scrolling list of metrics with Spend selected.
    Metric picker. Forty-five Meta metrics and your own sheet columns in the same list, each carrying a reporting period and any of six operators.
  • The AdOps dayparting timetable: a grid of hours against the seven days of the week, with the daytime hours filled navy for every day and the night hours and weekend evenings left empty.
    Dayparting grid. Or draw the hours instead. Anything outside the shape you fill in simply does not run.
  • An AdOps execution log detail: one campaign, two action panels badged Not Executed, each listing the action parameters and every condition evaluated with its actual value, its expected value and a Pass or Fail badge.
    Rule Log detail. Why a rule did nothing is recorded as carefully as why it did something — actual against expected, condition by condition.
  • The AdOps activity log listing budget increases and campaign renames, each row naming the affected campaign by id, the rule that caused it and how long ago it happened.
    Activity Log. One row per change AdOps made in your account, naming the campaign and the rule responsible.
  • The AdOps ad account list: eighteen Meta ad accounts with on/off toggles, account ids, Active or Inactive badges and this month’s spend in rupiah.
    Ad Accounts. Accounts discovered from Meta arrive switched off. Nothing is read, and nothing is changed, until you turn one on.
  • The AdOps custom metric editor mapping a Google Spreadsheet: a spreadsheet id, a sheet name, a column to match campaigns on and a column holding the values.
    Custom metric. Point AdOps at a sheet, name the matching column and the value column, and your own number joins the metric list.

Every figure is rebuilt from the product’s own interface and filled with invented data — no customer name, ad account or spend figure appears anywhere on this site. See how a run works