Per-storefront revenue split. Reveals which surfaces are pulling weight and which are dormant.
At a glance
Revenue split across each enabled storefront surface over the rolling 30 days - how much came through the embed widget vs the Instant Site vs Facebook vs Instagram vs POS vs marketplaces. Ecwid sells one catalogue across many surfaces, and merchants usually have a gut sense of where sales come from that turns out to be wrong. This card replaces the guess with a number and shows which surfaces are pulling weight and which are dormant overhead.
| What it counts | SUM(order.total) for PAID orders in the rolling 30D window, grouped by the storefront surface the order originated from. |
| API endpoint | GET /v3/{store-id}/orders (paged, OAuth2 with read_orders scope); the originating surface is read from the order’s source / referer fields. Surface list cross-checked against the store profile. |
| Surface attribution | Each order is attributed to the surface it was placed through (embed, Instant Site, Facebook, Instagram, POS, marketplace) where Ecwid records that source on the order. |
| Refunds | NOT deducted, consistent with Total Revenue. Each surface’s figure is gross. |
| Cancelled / pending | Excluded. Only PAID orders contribute. |
| Unattributed orders | Orders where Ecwid does not record a clear source are grouped into an “other / direct” bucket rather than dropped. |
| Currency | Single currency per Ecwid store. Each surface is reported in the store currency. |
| Time window | 30D (rolling 30 days). |
| Alert trigger | None - informational. Surface-level drops are alerted by Channel-Specific Order Drop; this card is the standing split. |
| Roles | owner, finance, marketing. |
Calculation
Calculated automatically from your Ecwid data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A small UK candle and home-fragrance maker running Ecwid across four surfaces, rolling 30D ending 27 Apr 26. The maker assumed Instagram was their biggest earner because that is where they spend the most effort. The card tells a different story.| Surface | Revenue (30D) | Share | Orders |
|---|---|---|---|
| Embed (WordPress) | £3,180 | 62% | 94 |
| Instant Site | £980 | 19% | 26 |
| Instagram Shopping | £640 | 13% | 22 |
| Facebook Shop | £310 | 6% | 11 |
| Total | £5,110 | 100% | 153 |
Sibling cards merchants should reference together
| Card | Why it matters next to Revenue by Storefront Surface | What the combination tells you |
|---|---|---|
| Active Storefront Surfaces | The denominator of surfaces. | Surfaces active vs surfaces earning; a gap means dormant overhead. |
| Channel-Specific Order Drop | The alarm on this split. | A surface’s revenue share collapsing is the slow version of the drop alert. |
| Total Revenue | The sum of all surfaces. | The surface shares should add up to total revenue; a shortfall flags unattributed orders. |
| Average Order Value | Basket size per surface. | Social surfaces often have lower AOV than the embed; mix shifts move blended AOV. |
| Orders by Country | Where each surface reaches. | Social surfaces pull a wider country mix; the split explains geographic spread. |
| Conversion Rate | Funnel quality per surface. | A high-traffic, low-revenue surface usually has a checkout or UX problem. |
| Top Products by Revenue | What sells where. | Different surfaces sell different hero SKUs; concentration risk varies by surface. |
| Inventory Sync Drift Across Storefronts | Integrity across the same surfaces. | A high-revenue surface with stock drift is the most expensive place for an oversell. |
Reconciling against Ecwid
Where to look in Ecwid’s own dashboard:
Ecwid Control Panel (my.ecwid.com) -> Reports -> Sales report, then segment by channel/source
Ecwid’s reporting can break sales down by sales channel; compare each channel line against the matching surface in this card.
For the embed vs Instant Site split specifically, cross-reference the order list filtered by source under My Sales -> Orders.
Why our number may differ from Ecwid’s Control Panel:
| Reason | Direction | Why |
|---|---|---|
| Unattributed orders | Either | Orders without a clear recorded source go to our “other / direct” bucket; Ecwid may distribute them differently. |
| Refunds | Theirs lower (netted view) | Ecwid’s net-sales toggle subtracts refunds per channel; our per-surface figure is gross. |
| Time zone | Boundary days | Ecwid uses the store’s configured time zone; we use UTC. Small boundary effect on 30D. |
| Surface naming | Cosmetic | Ecwid may label a surface differently (e.g. “Storefront” vs “Embed”); the underlying revenue is the same. |
| Sync lag | Ours occasionally lower | Webhook-driven; the most recent few minutes of orders may not be in. |
SUM(ecwid_revenue_by_storefront_surface) = ecwid_total_revenue over the same 30D window (allowing for the unattributed bucket).