Skip to main content

Ecommerce · Store dashboard

DashboardFashion & D2C

A near-real-time store dashboard that replaces the daily Excel export

Most D2C teams still start the day by stitching a Shopify export, a courier report and two ad accounts together in Excel. Here is a dashboard that fills itself as orders land and tells the team when something moves.

Valnora & Elric team6 min read

Store today · all channels (illustrative)
Illustrative example
TodayAll couriersAll campaigns
Orders today1,284+9% vs same day last week
COD share58%+3 pts vs last week
RTO rate, last 30 days17.4%+2.1 pts vs prior 30
Delivered ROAS, 7 days2.6-0.3 vs prior 7 days
Orders by hour, COD vs prepaidCODPrepaid
8am
10am
12pm
2pm
4pm
6pm
8pm
10pm

RTO by courier and pincode cluster, last 30 days

CourierPincode clusterShippedRTO rateStatus
Courier A8xxxxx · Bihar1,92029%Alert
Courier B8xxxxx · Bihar1,14021%Watch
Courier A56xxxx · Bengaluru2,3109%OK
Courier C40xxxx · Mumbai1,78011%OK
Illustrative

0

Manual exports to start the day (illustrative)

Orders, couriers and ad spend land in tables on their own.

Illustrative

15 min

Slowest refresh on scheduled datasets

Webhook-fed panels update as rows land; materialized datasets refresh as often as every 15 minutes.

Illustrative

5 min

Monitor re-check interval

An RTO jump or a stockout is flagged within minutes, not at tomorrow’s review.

Illustrative example. Figures show how the workflow is measured; they are not customer results.

Ask a D2C founder how yesterday went and the honest answer is often "ask me after ten". Someone exports orders from Shopify, pulls the courier aggregator’s report, copies spend from Meta and Google Ads, and pastes it all into a spreadsheet with formulas only they understand. By the time the sheet is ready, a courier has been returning a fifth of a state’s parcels for three days.

This post walks through a store dashboard built with Agent Serve Dashboards that fills itself as orders come in. The figures shown are illustrative.

How orders get onto the dashboard

Shopify has no Agent Serve trigger, and it does not need one. In Shopify admin, add an orders webhook and point it at the Webhook trigger of a workflow built in the workflow builder. Each new order arrives within moments of checkout. The workflow keeps the fields you care about (order value, payment method, pincode, SKUs, UTM source) and writes one row to an orders table in Tables.

Because the panels read that table directly, the orders tile and the hourly COD vs prepaid chart move as rows land. No export, no paste.

Two more workflows run on a schedule:

  • Courier status. Aggregators such as Shiprocket, Delhivery and iThink Logistics are not native integrations. The workflow calls their tracking API with the API block, using a key stored as a workspace secret, and updates each shipment’s status, delivery attempts and RTO flag.
  • Ad spend. The Google Ads block pulls campaign performance reports. For Meta, call the Marketing API insights endpoint with the API block, and write daily spend per campaign to an ad spend table. Meta’s official ads MCP server, added under Settings → Tool connections, is for asking questions in Chat.

If your orders already sit in BigQuery, Snowflake or PostgreSQL, connect it as a data source instead. Datasets either refresh on a schedule, as often as every 15 minutes, or query live on each view.

The definitions that stop arguments

Most dashboard fights are about definitions. Put them in the semantic model once and every panel, alert and report reads the same number.

  • COD share: COD orders over all orders placed, by day.
  • RTO rate: shipments returned to origin over shipments that reached a final status. Counting open shipments in the denominator makes RTO look better than it is.
  • Booked ROAS vs delivered ROAS: revenue on orders placed over spend, and revenue on orders actually delivered over spend. With a high COD share, the gap between the two is where margin leaks.

Name each as a metric. Add a rule for stock: flag any SKU whose current Shopify inventory level covers fewer than seven days of its trailing sales. A scheduled workflow reads inventory levels with the Shopify block and writes them to a stock table the rule checks.

What each panel answers

  • Tiles: orders today, COD share, 30-day RTO rate and 7-day delivered ROAS, each against its prior period.
  • Orders by hour: when the COD rush happens, which is often late evening and worth knowing before you schedule confirmation calls.
  • RTO by courier and pincode cluster: the panel ops lives in. A courier that is fine in Bengaluru can be failing in rural Bihar.
  • Spend vs delivered revenue by channel: which campaigns pay back after returns, not before.
  • Stock watchlist: bestsellers under seven days of cover, next to their ad spend, so you stop paying to send traffic to a product page that is about to sell out.

Monitors and the morning report

What the solution produces

Monitor alert, RTO spike (illustrative)

Message

RTO rate above 25% · Courier A · pincodes 80xxxx to 85xxxx

Last 7 days: 31% on 412 shipments. Prior 30 days: 24%.

Top non-delivery reasons logged: customer not reachable (46%), refused at door (33%).

Open the store dashboard filtered to Courier A and Bihar pincodes.

Monitor · checked every 5 minutes · sent by email and in-app

Daily 9 am report to the founders (illustrative)

Checklist
  • Yesterday: 1,190 orders, 56% COD, 3 SKUs under 7 days of cover.
  • Delivered ROAS fell on two Meta prospecting campaigns; Google Search held steady.
  • RTO alert open on one courier for Bihar pincodes since Tuesday.
  • PDF attached; live dashboard link inside.
Scheduled report · daily · PDF and link

Monitors watch metrics, rules or KPI panels and re-check as often as every 5 minutes. Three worth setting on day one:

  1. RTO rate above a threshold for any courier and pincode cluster.
  2. Any bestseller flagged by the low-stock rule.
  3. Delivered ROAS below your floor on any campaign spending more than a set amount a day.

Alerts go to email, in-app and Slack. A scheduled report sends the dashboard as a PDF or link every morning, to members or to external emails such as an agency or an investor.

How to measure it

Illustrative

0

Manual exports to start the day (illustrative)

Orders, couriers and ad spend land in tables on their own.

Illustrative

15 min

Slowest refresh on scheduled datasets

Webhook-fed panels update as rows land; materialized datasets refresh as often as every 15 minutes.

Illustrative

5 min

Monitor re-check interval

An RTO jump or a stockout is flagged within minutes, not at tomorrow’s review.

Illustrative example. Figures show how the workflow is measured; they are not customer results.

Who sees what

Controls and governance

Roles and permission groups

Admin, write and read roles per workspace, plus permission groups that limit which models, blocks and integrations a team can use.

Row-level access

Row-level policies narrow what each person sees in tables, dashboards, exports and scheduled reports.

SSO and SCIM

Sign in through your identity provider with SAML 2.0 or OIDC, and provision people with SCIM.

Audit trail

Proposals, approvals, declines and executed actions are written to the workspace audit log, which admins can export.

Run logs

Every workflow run records each block’s inputs, outputs and errors, so a reviewer can trace how a result was reached.

Deployed versions

Workflows run from a deployed version, so a change is reviewed before it reaches production runs.

More on how Agent Serve handles access, data and audit on the security page.

Row-level access lets a marketplace manager see their channel only, while founders see everything. Workflows run from a deployed version, so a change to how orders are written is reviewed before it reaches production runs.

From here, the next steps are acting on what the dashboard shows: confirming COD orders before they ship, following up non-delivery reports, and an operations Relay that investigates alerts for you.

Questions teams ask

Is this real time?

Near-real-time. Panels that read tables update as each webhook row lands. Datasets from a warehouse such as BigQuery or Snowflake either refresh on a schedule, as often as every 15 minutes, or query live on each view with results cached for about a minute.

Do you integrate with Shiprocket or Delhivery directly?

No. Couriers and aggregators such as Shiprocket, Delhivery and iThink Logistics are not native integrations. You call their APIs with the API block, with the key stored as a workspace secret, or connect an MCP server where the provider offers one.

Can the dashboard pause a campaign?

No. Google Ads access is read and report only. A person can make Meta changes in Chat through the Meta ads tool connection, where each tool call asks Allow, Always allow or Skip first. Keep anything that spends money on ask.

How it works

From order webhook to store dashboard

Shopify order webhooks, courier status calls and ad reports are written into workspace tables by workflows. Dashboard panels read those tables, governed metrics define COD share, RTO and ROAS, and monitors alert the team.

Workflows · Data in

  1. 01Shopify order webhookAn orders webhook in Shopify points at the Webhook trigger of a workflow, so each order arrives as it is placed.
  2. 02Orders tableOne row per order: value, payment method (COD or prepaid), pincode, SKU lines and campaign source.
  3. 03Courier status syncA scheduled workflow calls your courier aggregator through the API block and updates shipment status and RTO flags.
  4. 04Ad spend syncGoogle Ads campaign performance reports, plus Meta spend from the Marketing API through the API block.

Dashboard · Store today

  1. 05Metrics and rulesCOD share, RTO rate, booked and delivered ROAS, and a low-stock rule defined once in the semantic model.
  2. 06Store dashboardTiles, RTO by courier and pincode, spend against revenue by channel, and a stock watchlist.
  3. 07MonitorsRe-check as often as every 5 minutes and alert by email, in the app or in Slack.
  4. 08Ops and growth leadsDecide what to pause, restock or chase. The dashboard changes nothing by itself.
Before you start

What you need

  • Shopify admin access to create an orders webhook pointed at the workflow Webhook trigger
  • Your courier aggregator API key, stored as a workspace secret for the API block
  • Google Ads account access for campaign performance reports
  • A Meta Marketing API access token for ads insights, stored as a workspace secret
  • Agreed definitions for COD share, RTO rate and delivered ROAS
  • A named owner for each monitor: ops for RTO and stock, growth for ROAS

Written by the Valnora & Elric team.

Figures, dashboards and sample outputs in this article are illustrative examples, not customer results. This article is for information only and isn't legal or regulatory advice.

Enterprise access

Put AI agents to work across your team

Agent Serve is available to teams by invitation. Tell us what you want to build and we will set up your workspace with you.