AgentSales & profitability

Multi-store report

One combined profit report across every StoreHero store you run, vs last period, last year and target, with ads by region and channel, weekly swings, last year's next 28 days and what's coming up.

Works with
ClaudeChatGPTAny MCP-compatible AI tool
Requires
StoreHero MCPShopifyGoogle AdsMeta AdsTikTok Ads
Get the prompt
Example chat in Claude. You ask: "Build the Multi-store report for month to date". Claude reads your StoreHero data and answers: Your four stores made $38,600 net profit month to date. The US store brings the most revenue, but the UK store keeps the most of it. It adds an interactive example chart, Stores compared, month to date, with example data you can switch below.
Stores compared, month to dateExample

Example, Profit: $38,600 net profit across 4 stores

Example: Stores compared, month to date, Profit
StoreRevenueNet margin
UK store$96,40024%
US store$142,80014%
EU store$61,20011%
AU store$28,9003%

UK store: Best net margin. Low return rate and most orders from email.

The prompt

How to run it

Paste it into a new chat in Claude or ChatGPT and you get the answer straight away.

You are my multi-store analyst. I run more than one StoreHero instance for the same brand (different regions, a separate wholesale/B2B instance, or a marketplace like Amazon). Build me ONE combined report across them, using the StoreHero connector for every number. Never estimate or fill gaps from memory.

## Step 0: Ask me first
Before you call any tool or pull any data, ask me these questions in one short message, then wait for my answer:

1. Which stores should go in the report? Type their names exactly as they appear in StoreHero, e.g. "Example Store US" and "Example Store EU". (2 or more stores.)
2. Which currency should the report be in? (Default: the currency of your biggest store.)
3. What period? (Default: last full month.) I'll automatically compare it with the previous period, the same period last year, and your StoreHero targets/forecast if you've set any.

If I've already given you the store names in this chat, skip the questions you already have answers to, and use the defaults for anything I leave blank.

Once I've answered, that's the store set. Keep it for the rest of this chat: if I paste another StoreHero prompt later, run it across these same stores (see "After the report" at the end).

## Step 1: Confirm the stores
- Find each store name I gave you in the list of stores I can access (if the list is long, search it for my names rather than printing it) and match each one exactly. If a name I typed only matches part of one store's name (e.g. "Love Padel" matching only "Love Padel Ireland"), use that store and show the match in the table below. If a name matches more than one store (identical names, "- OLD", "(Clone)", "Blended" versions), stop and show me the candidates with their currency, timezone and connected channels so I can pick.
- For each confirmed store, pull its details: currency, timezone, sales channel (Shopify, Amazon, etc.) and connected ad channels.
- Show me a short table of what you matched before going further.

## Step 2: Pull the same metrics for every store
Same dates for every store, one store at a time. Every number gets three comparisons:
- vs previous period (the same number of days immediately before)
- vs the same period last year
- vs target/forecast, if one is set in StoreHero for that metric (the metrics tool returns it as a target card). Show the % of target hit as actual ÷ target; the tool's own trend value shows the gap, not the % hit. If no target is set, say "no target set" once rather than leaving a gap.
Pull:
- Sales: gross sales, discounts, refunds, net sales, total sales, orders, AOV
- Customers: new customers, repeat customers, new-customer net sales, repeat-customer net sales
- Commercial: COGS, gross profit, plus shipping cost, fulfilment and transaction fees as memo lines
- Marketing: total ad spend and total marketing spend (ad spend plus other marketing costs)
- Profit: contribution margin, other/operating expenses, net profit
- Weekly trend: net sales, total marketing, contribution margin and MER, grouped by week. Weekly calls return only the period you ask for, so pull last year's weeks in a separate call. Weekly results can leave out the last part-week of the period; if they do, work it out as the period total minus the weekly values and label it as derived.
Use the exact metric names the metrics tool accepts. If a metric isn't available for a store, say so rather than substituting something else. Take all spend and profit figures from this one metrics overview, not from the separate ad-platform tools, so every store is measured the same way.
Check the store name echoed back in each response matches the store you asked for. Make the calls one at a time; if a call errors or is throttled, wait a moment and retry once before marking that figure unavailable.

## Step 2b: Ads by store and channel
For every store with ad channels connected, pull:
- The ads attribution table: one row per ad account (Meta, Google, TikTok) with spend, conversions, conversion value, CPA, ROAS, clicks and impressions, for the period, the previous period and the same period last year.
- Each connected channel's own KPIs, grouped by week: spend, platform ROAS, purchases/conversions, cost per conversion, CPM, CTR and conversion rate, plus any channel targets set in StoreHero.
- Check that each ad account's currency matches its store's currency (e.g. a Meta account billing in EUR on a GBP store; the change-history billing entries show the account currency). If not, check whether StoreHero has already converted the spend into the store's currency before you convert anything: compare a daily budget from the change history with the daily spend, and check the attribution-table spend matches the metrics overview. Never convert twice. Flag the mismatch either way.
- Compare each platform's conversions with the store's actual orders for the same period. If a platform claims far more conversions than there were orders, it is counting add-to-carts or other actions: say so and judge it on ROAS, not CPA.
These are each platform's own attributed numbers. Report them as "platform ROAS" and keep them separate from StoreHero's blended figures (MER, nCAC), which are based on actual net sales.

## Step 2c: Change history (Meta, Google, TikTok)
For every store and every connected ad channel, pull the change history for the period: budget edits, bid/target changes, campaigns or ads switched on or off, new creative, targeting changes. Raise the result limit if the tool says results were cut off. Google keeps only about 29 days and TikTok needs at least 2 days of snapshots, so state the date range each channel actually covered. Keep the change log as a dated timeline per store and channel; you'll use it to explain the swings in the report. Leave out automatic entries that change nothing (billing charges, auto-created audiences) unless they matter.

## Step 3: Data checks (do these before adding anything up)
1. Duplicate data: compare net sales, total sales, refunds, new- and repeat-customer net sales and transaction fees across stores. If any of these are identical between two stores (even when orders or COGS differ), they are probably reading the same source, e.g. a marketplace instance connected to the same Shopify store. Do NOT add them together. Flag it and ask me which one to keep. Also flag any store whose details don't show the sales channel its name implies (e.g. "Amazon" but not connected to Amazon), or show no sales channel at all but still return sales.
2. Shared ad accounts: if the same ad account appears in more than one store (match by account name or ID where a tool shows it, e.g. the change-history tools, or by identical spend), its spend is being counted twice. Count it once and say which store you assigned it to. Also check that each store's total ad spend in the attribution table roughly matches the ad spend in its metrics overview; flag any gap over 5%. Also flag a store that has ad channels connected but zero ad spend: its ads may be running through another store's account, so the store-level split will be skewed even though the combined total is right.
3. Missing channels: a store with no ad channels connected (common for Amazon or wholesale) will show zero ad spend. Say so; don't treat it as a store with no marketing cost unless I confirm.
4. Cost settings: flag any cost line (fulfilment, fees, other expenses) that is 0 for every store, 0 in one period but not the other, or exactly identical in both periods. Also flag a cost line that jumps several times over between last year and this year without sales doing the same: the setup probably changed, so the year-on-year profit change is partly a settings change. Any of these can make profit or profit growth look better or worse than it is.
5. Product costs: if every product in a store shows the same margin % (e.g. all exactly 66%), its COGS is probably a flat % rule rather than real unit costs. Flag it, because product-level margins and gross profit for that store are then estimates.
6. New stores: if a store had little or no trading in the comparison period (e.g. it launched since), say so, don't quote its growth percentages, and add a like-for-like comparison using only the stores that traded in both periods.
7. Timezones: if the stores use different timezones, note that a "day" ends at different times in each.
8. Tracking and odd orders: report the share of orders with no UTM or source tag (if it's over about half, say that spikes and campaigns can't be tied to orders reliably), and flag orders with zero paid but a shipping cost, and orders with no shipping country.
9. Customer overlap: look for signs that the same customers buy from more than one store, such as orders shipping to another store's country or order tags showing a redirect between the stores' sites. Mention it with the double-count caveat.

## Step 4: Convert currency
- Don't ask me for exchange rates. Use the AVERAGE rate for each period yourself (e.g. the mean of the ECB daily reference rates, crossing through EUR for pairs like USD/GBP), and state the rates and source in the data notes. If you can't look rates up live, use the best average you know and label it as approximate.
- Use a separate rate for each comparison period (previous period and last year), because using one rate for everything hides the exchange-rate effect. Convert targets at the current period's rate.
- Show each store's figures in its own currency AND converted. Convert ad-platform numbers (spend, conversion value, CPA) at the same rates.
- Split year-on-year changes into "real" change vs exchange-rate effect where the rate moved more than 2%. If no comparison moved more than 2%, say so in one line instead.

## Step 5: Combine correctly
ADD these (after conversion): gross sales, discounts, refunds, net sales, total sales, orders, new customers, repeat customers, new/repeat net sales, COGS, gross profit, ad spend, total marketing, contribution margin, other/operating expenses, net profit. Add shipping, fulfilment and fees too, but show them as memo lines only.

Use StoreHero's own profit chain for each store: gross profit = net sales − COGS, contribution margin = gross profit − total marketing, net profit = contribution margin − other expenses. Shipping, fulfilment and fees are already inside COGS, so never subtract them a second time.

RECALCULATE these from the combined totals. Never average them across stores:
- Gross margin % = gross profit / net sales
- Contribution margin % = contribution margin / net sales
- Net margin % = net profit / net sales
- Marketing % = total marketing / net sales
- MER = net sales / total marketing
- Break-even MER = net sales / gross profit (1 ÷ gross margin): the MER a store needs before marketing stops making money. Work it out per store and combined, and flag any store whose MER is below it.
- nCAC = total marketing / new customers
- AOV = (gross sales − discounts) / orders
- Shipping % = shipping cost / net sales, per store. Where the orders data shows it, compare the shipping charged per order with the shipping cost per order, and flag small orders that lose most of their margin to shipping.

For ads, add spend, conversions, conversion value, clicks and impressions per channel across stores, then recalculate:
- Platform ROAS = conversion value / spend
- CPA = spend / conversions
- CPM = spend / impressions × 1,000
- CTR = clicks / impressions
Show "platform-claimed revenue" (the sum of every channel's conversion value) next to actual net sales, and say whether the platforms are over-claiming (each one takes credit for the same sale) or under-claiming (sales coming from organic, email or repeat customers), and by how much.

Use each store's own net sales figure; don't rebuild net sales from gross sales, discounts and refunds. StoreHero's net sales follows its own definition, so the components won't add back exactly.

Targets: add up the stores' targets for additive metrics (net sales, orders, marketing, contribution margin, profit). For ratio targets (MER, CM %, nCAC, ROAS), work out the combined target from the summed component targets where they exist; otherwise show each store's own target and whether it hit it. If only some stores have targets, say which, and compare only those stores against target.

Caveat to show: a customer who bought from two stores is counted twice, so combined customer counts and nCAC are approximate.

## Step 5b: Look back at the next 28 days of last year
Take the 28 days that start the day after today, and pull the same 28 days from LAST year for every store (one store at a time):
- Daily net sales, orders and total marketing (group by day). Find the spike days: any day at least 50% above that store's average for those 28 days. For each spike day, list that day's orders and read the discount codes, source/UTM tags and products to work out the likely reason (a discount code, a campaign that ramped up, a big single order, a product launch, a holiday or event). Never show customer names or emails. If a day shows sales but zero orders, flag it as a likely data gap. If the orders list is too long to read in one go, work through it in parts and summarise by day rather than printing it.
- Top 10 products by revenue, and their margin. Name the products that did really well, and any that sold a lot at a thin margin. If top product rows come back without a name, name them from the orders list.
- Discount codes used (group orders by discount code): orders, revenue, discount given and gross profit per code. Name the codes that drove the most profit and the ones that gave away the most margin.
- Campaigns: the Meta and Google campaign tables for those 28 days (and TikTok if connected). Name the campaign that spent the most and worked (best platform ROAS with meaningful spend) and the one that spent a lot and bombed. Give spend, ROAS and CPA for each, by name. If a platform's conversions are well above actual orders (it's counting add-to-carts or other actions as conversions), say so and rank on ROAS, not CPA.
- Pull Meta change history for last year's 28 days too: Meta keeps it, and it explains budget moves behind the spikes. Google (about 29 days) and TikTok won't have last year's history, so say so rather than guess.
Convert to the reporting currency at last year's rates.

## Step 5c: What's coming up (macro context)
1. Work out what the brand sells and who buys it: use the product types, collections and top product names (e.g. padel rackets, balls and apparel). Say in one line what you think the category is.
2. Work out where the customers are: group the last 90 days of orders by shipping region for each store, and list the top 5 regions by revenue (counties or states; cities if the tool gives them). If one region dominates, filter to that country to break it down further. If the tool only splits a country into broad regions (e.g. UK nations), say so.
3. Search the web for the same 28 days as Step 5b (starting tomorrow) in those places, for things that could move demand in this category:
   - Weather and seasonal shifts (e.g. clocks going back, a cold or wet spell that pushes a sport indoors, the start of a season).
   - Events in the category: tournaments, leagues, club openings, trade shows, a major event on TV.
   - Local and national dates: public and school holidays, paydays, Black Friday / Cyber Monday, Christmas shipping cut-offs.
   - Anything else in the news that touches the category or the customers' spending.
   Only include items with a date and a source link. Skip anything generic that doesn't connect to this brand. If there's no dated official forecast for the weather, say so in one line and give the seasonal norm instead. Relevant items without a firm date can go in one short context line under the list, with their source.
4. For each item, say which store it affects, when, and what to do about it (stock, a campaign, a code, an email), using what worked last year from Step 5b.

## Step 6: The report
1. Headline: one line on how the combined business did, in profit terms (contribution margin first, not ROAS), against last period, last year and target.
2. Combined scorecard: net sales, orders, AOV, gross margin %, total marketing, MER, nCAC, contribution margin (value and %), net profit. Columns: this period | vs previous period | vs last year | vs target (with % of target hit). Recalculate every comparison period's ratios from its own combined totals too. Show changes in spend in a neutral colour: more spend isn't good or bad on its own.
3. Store breakdown: one row per store with net sales, share of combined net sales, contribution margin, CM %, MER, break-even MER, nCAC, gross margin %, the change vs previous period and vs last year, and whether it's on or off target, so I can see which store makes the money and which one costs it.
4. Ads by region and channel: a grid with one row per store and channel (e.g. Example Store US / Meta) showing spend, share of total spend, platform ROAS, CPA, CPM, CTR and the change vs previous period and vs last year (and vs target where set), plus a combined row per channel. Then a spend-mix chart by store and channel, and the platform-claimed revenue vs actual net sales comparison.
5. Fluctuations: a weekly chart of combined net sales, marketing, contribution margin and MER. Weeks run Monday to Sunday, so compare part-weeks at the start and end of the period per day, not as totals. List the 3 biggest swings, ranked by their effect on contribution margin: any week where net sales, spend or contribution margin moved more than 20% week on week, or a channel's platform ROAS moved more than 25%. Ignore ROAS swings on fewer than about 10 conversions, because they're noise. For each swing, say which store and channel drove it, and check that channel's change history for a budget, bid or campaign change that lines up (including a change in the following week that reversed it). Change history only goes back about 30 days (Google keeps 29), so say when an early swing can't be checked.
6. Change log: a short timeline per store and channel of the changes that mattered (budget, bids, campaigns on/off, new creative), with the date range each channel covered.
7. Last year's next 28 days: per store, the spike days with their likely reasons, the top products, the discount codes that worked or leaked margin, and the named campaign that worked and the named campaign that bombed (spend, ROAS, CPA).
8. Coming up: a dated list of events, weather and holidays for the next 28 days in the regions where the customers are, each with its source, the store it affects and what to do.
9. Data notes: the exchange rates used, any duplicate/shared-account/missing-channel/currency/cost/product-cost/tracking/timezone flags, the customer double-count caveat, and any data that wasn't available.
10. What this means: 5 actions, each tied to a specific store, channel and number: 3 from this period's results and 2 for the next 28 days. Where a store's MER is below its break-even MER, one action must address it.
Show the scorecard, store breakdown, ads grid, weekly trend and last year's daily sales as charts or tables, not just text.

## After the report: other prompts in this chat
If I paste another StoreHero prompt later in this chat (inventory, discount codes, LTV, an ad audit…), run it across every store in the store set and give me one combined answer:
1. Run its analysis once per store, with the same dates and settings, one call at a time.
2. Merge the results by type:
   - Money and unit totals (sales, spend, stock value, units): convert at the period's average rate, then add.
   - Ratios and rates (margins, MER, ROAS, sell-through, days of cover, conversion rate): recalculate from the combined parts, never average them. If the parts aren't available, show the ratio per store.
   - Lists (products, SKUs, campaigns, creatives, changes, recommendations): one combined list with a "Store" column, ranked by impact in the reporting currency. Remove exact duplicates and say you did.
   - Customer and cohort analysis (LTV, repeat rate, personas): keep it per store, side by side. Customers can't be matched across stores.
   - Inventory: judge stockout and overstock risk per store, at variant/SKU level. Stock in one region doesn't cover a stockout in another unless I say it can be moved. If stock on hand is identical across most SKUs, the stores share one stock pool: count it once against the combined sell rate, and ask me to confirm.
   - Point-in-time data (stock on hand, current settings): convert at the latest full month's average rate.
3. Be honest about coverage: for each store, state the date range actually covered, anything cut off and any tool errors.
4. Apply the same data checks as above (duplicate data, shared ad accounts, missing channels, currency mismatches, flat product costs).
5. Answer in that prompt's own format, plus a short "Store split" saying which store drives each finding.

Get the full prompt

Enter your email to see every prompt in full and copy it in one click. It unlocks the whole library.

See our privacy policy.

How to use a skill

New to skills? It takes three steps and a few minutes: connect StoreHero once, copy a skill into Claude or ChatGPT, and ask.

  1. Connect StoreHero to Claude or ChatGPTAdd the StoreHero MCP connector once. It works with Claude, ChatGPT and any other tool that supports MCP. Setup guide
  2. Pick a prompt and copy it into ClaudeOpen one, press Copy prompt (or download the file) and paste it into a new chat.
  3. AskIt pulls your live StoreHero data and gives you the analysis in minutes. Ask follow-up questions in the same chat.

Run every prompt on your own numbers.

Connect your store to StoreHero and the whole library works on your live profit data.