Appearance
Ad performance: see which ads make money
The Ad performance page shows how your Meta and Google ads did in the dates you pick. Open it from Performance > Ad performance. Four headline numbers sit at the top. The What's working table sits below them.
Problem and intended user
This page is for the media buyer (the person who runs your paid ads) and the ecommerce manager (the person who runs the store). Ad platforms report revenue they credit to themselves. That figure does not show what your store kept after ad spend, so you can fund ads that look good and still lose margin.
Current workflow
You read the platform-reported return in Meta Ads Manager and Google Ads. You export the results to a spreadsheet and match spend against profit from Shopify admin reports. To group ads by concept, product or offer, you tag each ad by hand or ask an agency.
Prerequisites
- Connect Meta Ads, Google Ads or both. Wait for the first ad sync to finish.
- Your order and customer data, which Nexus connects by itself. It fills Gross profit after ad spend, Predicted revenue return and True profit. Until that data exists for the period, they show a dash.
- Creatives broken down into concepts, angles, hooks and offers, for the grouped views. By ad does not need this.
How Nexus works
Nexus reads your synced Meta and Google ad data and your order data. Fixed rules add up the numbers and group the ads. AI sets each ad's concept, angle, hook and offer in a separate step. Nothing here changes your ad accounts, and no step needs an approval.
Choose dates and a platform
Use the date picker for the period. This page covers at most 400 days, so wider presets are hidden. If you pick a longer range, the picker reads Showing last 400 days.
Choose All Platforms, Google or Meta above the numbers.
Sync your ad data
Nexus also syncs your connected ad accounts on its own. Settings > Store Status lists the Meta ads sync and Google ads sync rows. See Store Status.
A status bar shows how many ads are synced and when the last sync ran. It offers Sync Now and Full Sync. While a sync runs, Cancel replaces both buttons.
- Sync Now pulls the newest ad data for the platform in view. On All Platforms, it covers both platforms.
- Full Sync pulls a longer history again. Its label shows the backfill window in days, for example Full Sync (90d). The default is 90. The arrow beside it opens a Backfill window menu with 90 days, 120 days, 180 days and 365 days.
The menu note explains the window. Days Nexus already has are skipped for spend and metrics, and only missing days are pulled. Nexus recomputes profit attribution in full for the window you choose.
On the Meta or Google view, the status bar also ends with the window in days and one of three coverage notes: coverage complete — nothing new to fetch, fetched only missing days or full fetch.
Group the table
The What's working table lists your ads in groups. A sentence under the heading says what the current view groups by. Switch views with these buttons.
| View | Groups ads by |
|---|---|
| By concept | Messaging concept. This is the default. |
| By angle | The angle behind the ad. |
| By ingredients | The visual and production elements of the ad. |
| By ad | Nothing. Every creative stands alone. |
| By hook | Hook type. |
| By product | The product each ad links to. Ads that match no product form a separate group. |
| By collection | The Shopify collections of the advertised product. |
| By offer | The offer each ad leads with. |
Select the arrow on a group to see its ads. Select an ad name to open its Ad detail page. Select a thumbnail to preview the creative.
Filter by ad status
Use All, Active and Inactive next to the view buttons.
- Active shows ads that spent within 7 days of the latest synced day. Hover over the button to read this.
- Inactive shows ads with no spend within 7 days of the latest synced day.
Find an ad by name
- Type part of the ad's name in Search ads by name, next to the view buttons.
- Read the line under the buttons. It says how many ads match.
- Open a group to see its matching ads. On a grouped view, groups that hold a matching ad open on their own.
- Select the X in the field (Clear search) to see every ad again.
The search also matches the group names, and it works with the status filter. It keeps your text when you switch views.
Choose the columns
Select Metrics to open the Metrics shown menu. Tick or clear a column. Select Reset to restore the defaults. Name always stays. To reorder, drag a column header, or focus it and press Alt+Shift with the left or right arrow key.
The defaults are Name, Spend, ROAS, CPA, Predicted revenue return, Transactions, Trend and Verdict. Columns and verdicts explains each one. It also covers the Pro button, the alternative to Simple at the top of the page. Pro replaces the table with creative fatigue charts.
Exact output
The four headline numbers
| Number | What it shows |
|---|---|
| You spent | Total ad spend in the period, and the change from the prior period. |
| Platform-reported revenue | The revenue Meta and Google say your ads drove, with the return and its change from the prior period. |
| Matched revenue | Revenue from orders Nexus tied to a specific ad, with the order count and the profit after cost of goods. |
| Gross profit after ad spend | Your whole store's profit from your order data, minus total ad spend, with the margin. |
A dash on a card comes with a reason line. Matched revenue shows a dash with no orders matched to ads yet when Nexus has matched no order. Gross profit after ad spend shows a dash when Nexus has no order data for the period. A line at the bottom says what share of the period's orders Nexus matched to a specific ad. A low share means Matched revenue understates what your ads drove.
When Nexus cannot trace some live ads to the ad, an alert appears above the numbers. It says how many live ads it cannot trace. For Meta, the alert says to add utm_content in Meta Ads Manager. For Google, it says the account-level Final URL suffix lacks utm_content.
The What's working table
Each row is one group of ads in the current view, with the columns you chose. Verdicts compare each row with your whole account, even when you filter by status. The headline numbers always cover all ads.
What to do with it
| What you see | Decision or action | Owner |
|---|---|---|
| Gross profit after ad spend is low or falling | Decide whether to cut or move ad budget. | ecommerce manager |
| A group with high Spend and a weak Verdict | Pause, rework or move budget in Meta Ads Manager or Google Ads, outside Nexus. | media buyer |
| A Scale or Strong group in By concept, By angle or By hook | Brief new creatives on the same idea. | creative strategist (the person who plans and makes ad creatives) |
| A low share of matched orders, or the tracking alert | Add the missing tag in Meta Ads Manager or Google Ads, as the alert says. This happens outside Nexus. Until then, treat Matched revenue as understated. | media buyer |
| Unclassified group | Review those ads one by one in By ad. | media buyer |
Expected value and measurement
This page can help you see which ads earn their spend and where platform numbers and store profit disagree.
To check the effect of a change, open Performance > Ad performance. Compare two equal date ranges, before and after the change. On All Platforms, compare Gross profit after ad spend, its margin and You spent. The You spent card also shows the change from the prior period.
You cannot isolate one change when budgets, offers, prices or seasons moved at the same time.
Limitations and exceptions
- Whole-store profit. Gross profit after ad spend includes orders from email, organic search and direct visits. It does not split by platform. On Meta or Google, the card asks you to switch to All Platforms.
- Platforms and dates. The page covers Meta and Google only, for at most 400 days.
- No order data. The profit cards show a dash and a reason line.
- Multiple groups. An ad can fall into several groups in By ingredients, By product and By collection. Nexus counts its spend under each one, so Spend share can add up to more than 100%. A note under the table gives the real total.
- Unclassified. This group holds ads Nexus could not place on that view. Its Verdict cell reads Needs classification.
- Few creatives broken down. If many creatives are not yet "decomposed", a note tells you what share are. Nexus has not yet broken those ads down into concepts, angles, hooks and offers, so the grouped views cover only part of your spend. Nexus analyzes new ads on its own after a sync, and a limit applies. To analyze one ad now, open its Ad detail page and select Analyze. This can use credits, and the dialog shows the cost.
- AI tags. AI sets each ad's concept, angle, hook and offer. A tag can be wrong.
- Empty states. With no spend in the dates you pick, the table reads No ads with spend in this range. If a status filter matches no ad, the page reads, for example, None of the ads in this period are active. Select Show all ads. If no ad matches your search, the table reads No ads match and your text. Select Clear search, or try a shorter part of the name. Before the first sync ends, the page reads Still preparing this view. After a sync that finds no ads, it reads Nothing here yet. Nothing shows until a campaign is live. Launch ads on your connected Meta or Google account. They appear after the next sync. If every step fails, it reads This view can't load yet. With no connected ad platform, it reads Connect a platform to unlock this view.
- Sync messages. Sync already running means you wait for the running sync, then retry. No connected Meta ad account, No connected Google ad account and No connected ad platform mean you connect the platform in Settings > Integrations, then retry. Last sync failed shows the reason beside it. No sync data yet means no sync has finished.
- Too much data. A note says when groups cannot expand or rows are missing. Narrow the date range.
- Load errors. The numbers show Couldn't load your numbers. and the table shows Couldn't load your concepts. Each has a Retry button.
- Demo Mode. The data is sample data. The sync buttons do not start a real sync.
