Notifications
{{ n.t }}
{{ n.s }}
Live

Live view

Visitors, carts and checkouts across every connected store, as they happen.

Visitors right now
{{ liveVisitors }}
Active carts
{{ liveCarts }}
Checking out
{{ liveCheckouts }}
Drag to spin · markers flash on each event
Sales today
{{ liveSalesToday }}
Orders today
{{ liveOrdersToday }}
Stores reporting
{{ storeCount }}

Top locations

/Dashboard

{{ greeting }}

Here's what's happening across your stores today.

{{ k.l }}
{{ k.v }}
{{ k.pct }}
vs. previous {{ periodShort }}
{{ k.l }}
{{ k.v }}
{{ k.pct }}
vs. previous {{ periodShort }}

Revenue & Orders

Revenue Orders
{{ yAx4 }}{{ yAx3 }}{{ yAx2 }}{{ yAx1 }}{{ yAx0 }}
{{ hoverPill.v }} {{ hoverPill.l }}
{{ x.t }}

Orders by Location

{{ donutTotal }}
Orders
{{ d.label }} {{ d.pct }}

Top Products

Product Orders Revenue
{{ p.name }} {{ p.ordF }} {{ p.revF }}

Manufacturing Pipeline

Quick Actions
Jump to what you need most.

AI Insights

Beta

Today's Activity

/Orders

Orders

Every order across connected stores, with payment and production state.

{{ ordersCount }} orders
Order {{ so.ind.id }} Customer {{ so.ind.cust }} Store {{ so.ind.st }} Product Amount {{ so.ind.amt }} Payment {{ so.ind.pay }} Manufacturing {{ so.ind.mfg }} Shipping Date {{ so.ind.date }}
#{{ o.id }} {{ o.initials }} {{ o.cust }} {{ o.place }} {{ o.storeName }} {{ o.prod }} {{ o.items }} item(s) {{ o.replId }} {{ o.amtF }} {{ o.pay }} {{ o.pay }} {{ o.mfg }} {{ o.mfg }} {{ o.ship }} {{ o.date }}

Order #{{ ord1.id }}

{{ ord1.storeName }} {{ ord1.date }} · {{ ord1.place }}
{{ ord1.replId }}

Delivered with replacement

{{ ord1.replAt }}
Reason
{{ ord1.replReason }}
Resolution
{{ ord1.replAction }}
Units replaced
{{ ord1.replQty }}
Faulty unit
{{ ord1.replRestock }}
{{ ord1.replNote }}
{{ x.l }}
{{ x.v }}
{{ x.v }}

Items

{{ ord1.prod }}
Customization: {{ ord1.cz }}
{{ ord1.items }} × {{ ord1.unitF }}
Subtotal{{ ord1.sub }}
Shipping{{ ord1.shipC }}
Tax{{ ord1.tax }}
Total{{ ord1.amtF }}

Timeline

{{ t.t }}
{{ t.w }}
{{ t.at }}

Customer

Production

Job{{ ord1.job }}
Stage{{ ord1.mfg }}
Assigned to{{ ord1.who }}
Due{{ ord1.due }}
Customization{{ ord1.cz }}

Fulfillment

Status{{ ord1.ship }}
Destination{{ ord1.place }}
CarrierShipStation
/Customers

Customers

One record per person, merged across stores and channels.

Customer {{ sc.ind.name }} Store {{ sc.ind.st }} Segment Orders {{ sc.ind.orders }} Lifetime value {{ sc.ind.ltv }} Avg order Last order {{ sc.ind.last }}
{{ c.initials }} {{ c.name }} {{ c.email }} {{ c.storeName }} {{ c.type }} {{ c.status }} {{ c.orders }} {{ c.ltvF }} {{ c.aov }} {{ c.last }}
{{ cust1.initials }}

{{ cust1.name }}

{{ cust1.email }} · {{ cust1.place }}

{{ cust1.storeName }}
{{ t }}
{{ k.l }}
{{ k.v }}
Order Product Stage Amount Date
#{{ o.id }} {{ o.prod }} {{ o.mfg }} {{ o.amtF }} {{ o.date }}
No orders on this store yet.
No conversations with this customer.
{{ j.id }} {{ j.prod }} Due {{ j.due }} {{ j.stageName }}
No production jobs for this customer.

Profile

Segment{{ cust1.type }}
Status{{ cust1.status }}
First order{{ cust1.first }}
Last order{{ cust1.last }}
Average order{{ cust1.aovF }}
Lifetime value{{ cust1.ltvF }}

Actions

/Products

Products

Revenue, margin and stock cover for every line you make, with the stores each one is listed on.

Product {{ spr.ind.name }} Listed on Revenue {{ spr.ind.rev }} Orders {{ spr.ind.orders }} Units Profit {{ spr.ind.profit }} Margin {{ spr.ind.margin }} Refunds
{{ p.name }} {{ p.sku }} {{ c.storeName }} {{ p.revFull }} {{ p.ordF }} {{ p.unitsF }} {{ p.profitF }} {{ p.marginF }} {{ p.refundF }}
{{ stockWarnCount }} lines have five days of cover or less. Reorder or slow the ads pointed at them.
Product On hand Committed Units/day Days left Status Reorder by
{{ p.name }} {{ p.sku }} {{ c.storeName }} {{ p.stock }} {{ p.committed }} {{ p.velF }} {{ p.days }} {{ p.status }} {{ p.status }} {{ p.by }}
{{ prod1.qty }} · {{ prod1.avail }} available

Market pricing

Pick a market to edit its price, platform cost and quantity. Margin recalculates as you type.

Margin
{{ prod1.mktMarginF }}
{{ prod1.mktMarginF }}
{{ prod1.mktUnit }} per unit
Source {{ prod1.srcF }}Market cost {{ prod1.mktFeeF }}Shipping {{ prod1.shipF }}Sell {{ prod1.mktPriceF }} Last synced {{ prod1.mktSync }}

Listed on {{ prod1.storesN }} store(s)

Listed on every connected store
Store Sell price Market cost Qty Unit profit Margin Status Auto-sync
{{ l.storeName }} {{ l.tagPlat }} · synced {{ l.sync }} {{ l.profitF }} {{ l.marginF }} {{ l.marginF }} {{ l.status }} {{ l.status }}

Performance

Revenue{{ prod1.revF }}
Orders{{ prod1.ordF }}
Units sold{{ prod1.unitsF }}
Profit{{ prod1.profitF }}
Blended margin{{ prod1.blendF }}
Refund rate{{ prod1.refundF }}

Stock

On hand{{ prod1.qty }}
Committed{{ prod1.committed }}
Available{{ prod1.avail }}
Reorder by{{ prod1.by }}

Store tags

{{ c.storeName }}

These tags follow the product through orders, support tickets and manufacturing jobs.

/Manufacturing

Manufacturing

Every made-to-order job, from new work through dispatch.

{{ k.l }}
{{ k.v }}
{{ k.s }}
{{ col.n }} {{ col.count }}
Nothing here

Time in stage

{{ t.n }}{{ t.v }}

Jobs completed this month

{{ w.n }} · {{ w.r }} {{ w.v }}

Job {{ job1.id }}

{{ job1.prod }} · order #{{ job1.ord }}

{{ job1.storeName }}
This job is past its due date of {{ job1.due }}. The customer has not been notified yet.

Stage progress

{{ g.n }} Done {{ g.n }} In progress {{ g.n }} {{ g.num }}

Customization brief

{{ job1.custom }}

Job details

Stage{{ job1.stageName }}
Priority{{ job1.pri }}
Assigned to{{ job1.who }}
Due{{ job1.due }}
Customer{{ job1.cust }}
Order#{{ job1.ord }}

Support

Email, chat, WhatsApp and Instagram in one queue, with order context attached.

{{ x.l }}
{{ x.v }}
{{ convViewLabel }}
{{ convViewCount }}
{{ conv1.subj }}
{{ conv1.storeName }} {{ conv1.cust }} · {{ conv1.chan }} · assigned to {{ conv1.who }}
{{ m.t }}
{{ m.at }}
{{ m.t }}
{{ m.who }} · {{ m.at }}
{{ t }}
Sends from support@rowanandash.com

Customer

Segment{{ conv1.custType }}
Lifetime value{{ conv1.custLtv }}
Orders{{ conv1.custOrders }}
Location{{ conv1.custPlace }}

Linked order

Recent orders
/Marketing/Cart recovery

Cart recovery

A three-email flow that runs on every abandoned cart, with the discount held back until the second send.

{{ k.l }}
{{ k.v }}
{{ k.s }}

Carts in flow

Customer Cart Value Flow position Abandoned
{{ c.cust }} {{ c.email }} {{ c.storeName }} {{ c.prod }} {{ c.valF }} {{ c.stage }} {{ c.stage }} {{ c.when }}

The flow

{{ r.when }} {{ r.open }} opened · {{ r.rec }} recovered
{{ r.subj }}

{{ r.body }}

Calculators

Build the calculators your team reaches for, from pricing and margin to shipping and ads, then reuse them any time.

No calculators yet.
Create your first calculator

Add the inputs you type in and the results you want back. Formulas use the input names.

{{ cv.name }}

{{ cv.desc }}

{{ r.label }}
{{ r.v }}
{{ r.msg }}
{{ ce.title }}

Inputs

Results

Use any input key, or the key of an earlier result, in a formula. Supported: + − * / ^ ( ) and min, max, round, abs, ceil, floor. Example: round(price * 0.8, 2)

Goals

{{ goalsOnTrack }} of {{ goalsTotal }} targets are tracking at or above plan for March.

{{ g.n }}
{{ g.owner }} · {{ g.period }}
{{ g.actualF }}
target {{ g.targetF }}
{{ g.pct }} of target {{ g.pct }} of target
{{ g.pace }}
/Analytics

Analytics

{{ periodRange }} · {{ storeName }}

{{ k.l }}
{{ k.v }}
▲ {{ k.pct }} ▼ {{ k.pct }} vs. previous {{ periodShort }}
{{ k.l }}
{{ k.v }}

Revenue & orders

{{ yAx4 }}{{ yAx3 }}{{ yAx2 }}{{ yAx1 }}{{ yAx0 }}
{{ x.t }}

Sales

{{ x.l }}
{{ x.v }}

Revenue by store

Store Revenue Orders AOV Profit
{{ r.name }} · {{ r.platform }} {{ r.revF }} {{ r.ordF }} {{ r.aovF }} {{ r.profitF }}

Product performance

{{ p.name }} {{ p.revFull }} · {{ p.ordF }} orders · {{ p.marginF }} margin

Customers

{{ x.l }}
{{ x.v }}
▲ {{ x.pct }} ▼ {{ x.pct }}

Repeat purchase by cohort

Cohort Month 0 Month 1 Month 2 Month 3
{{ c.n }} {{ x }}

Where the orders come from

{{ geoSel }}

Top regions by revenue

{{ r.n }}{{ r.revF }}
{{ r.oF }} orders
{{ donutTotal }}
Orders
{{ d.label }} {{ d.pct }}

Channels

Attributed on a 7-day click, 1-day view window.

Channel Spend Revenue Orders ROAS CAC Profit
{{ c.n }} {{ c.spendF }} {{ c.revF }} {{ c.ordF }} {{ c.roasF }} {{ c.roasF }} {{ c.cacF }} {{ c.profitF }}
{{ x.l }}
{{ x.v }}
{{ x.s }}

Profit and loss

{{ r.l }} {{ r.v }}
Net profit {{ netProfitF }}

Forecast

Projected from 30-day velocity, seasonality and open production jobs.

{{ x.l }}
{{ x.v }}
{{ x.s }}
Actual Projected

Stores

{{ storesBlurb }}

Team

Nine people across support, production and the warehouse.

{{ t.initials }} {{ teamMore }} on the account
Person Role Store access Status Last active
{{ t.initials }} {{ t.n }} {{ t.e }} {{ t.role }} {{ t.stores }} {{ t.status }} {{ t.status }} {{ t.last }}

Integrations

Everything that feeds the order book, the ad numbers and the support queue.

{{ grp.g }}
{{ i.mark }} {{ i.n }} {{ i.d }} {{ i.s }}

Settings

Store connections, role permissions and workspace preferences.

Connected stores

Store Platform Sync Products Health
{{ r.name }} {{ r.platform }} {{ r.sync }} {{ r.prods }} {{ r.health }} {{ r.health }}
Roles

{{ roleName }}

{{ roleDesc }}

System role · read only {{ rolePeople }} assigned
{{ m.n }}
Nobody is assigned to this role yet.
{{ g.g }}
{{ p.n }}

Workspace preferences

Ask AI

Beta

Questions are answered from your own order, production and ad data for {{ periodRange }}.

{{ aiAsked }}

{{ fi.n }}
{{ fi.t }}

{{ fi.b }}

Generated from your data. Check the underlying reports before acting on a number.
PLATFORM Super Admin view

Every organization on ecomOS

Aggregate volume, revenue and connector health across all tenants.

{{ k.l }}
{{ k.v }}
▲ {{ k.pct }} ▼ {{ k.pct }} vs. previous {{ periodShort }}
{{ k.l }}
{{ k.v }}

Largest organizations

Organization Plan GMV MRR
{{ o.initials }} {{ o.n }} {{ o.plan }} {{ o.revF }} {{ o.mrrF }}

Connector health

{{ r.n }} {{ r.v }} {{ r.s }}

Organizations

Every tenant, their plan and the volume they push through the platform.

Organization {{ sog.ind.n }} Plan {{ sog.ind.plan }} Stores {{ sog.ind.stores }} Users {{ sog.ind.users }} GMV {{ sog.ind.rev }} MRR {{ sog.ind.mrr }} Status Customer since
{{ o.initials }} {{ o.n }} {{ o.plan }} {{ o.stores }} {{ o.users }} {{ o.revF }} {{ o.mrrF }} {{ o.status }} {{ o.status }} {{ o.since }}

Organizations by plan

{{ p.n }} {{ p.p }}/mo
{{ p.c }}

Billing

Subscription revenue by plan.

{{ p.n }} · {{ p.p }}/mo {{ p.c }} orgs

Recent invoices

Organization Amount Issued Status
{{ i.o }} {{ i.a }} {{ i.d }} {{ i.s }} {{ i.s }}

System

Service status across ingest, connectors and rollups.

{{ r.n }} {{ r.v }} {{ r.s }} {{ r.s }}

Feature flags

{{ x.n }} {{ x.s }}
No matches
Try an order number, a customer name, or a screen like “Manufacturing”.
New store

Add a store

Pick a platform and name the store. Everything it sends in — orders, products, customers and tickets — is tagged with that name.

Refund order #10582

The production job is already in Production. Refunding cancels the job and notifies Mike Doyle.

Order total$148.00
Manufacturing cost sunk$38.40
Refund amount$148.00

Create a role

Start from an existing role, then narrow permissions and store access.

Add an order

Manual orders behave like synced ones: they get a store tag and a production job.

Edit order #{{ ord1.id }}

Changes are written back to the store on the next sync.

Delivered with replacement

Order #{{ ord1.id }} · {{ ord1.prod }} · {{ ord1.storeName }}. The order stays delivered and a replacement is tracked against it.

List on another store

{{ prod1.name }} is on {{ prod1.storesN }} store(s). Add a market and set its price.

Add a product

Create the line once and choose which stores it's listed and synced on.

Link to stores · {{ syncCount }}
Sync automatically Publish to linked stores now and keep title, price and stock in sync.
{{ toastMsg }}