The header
The store’s name, whether it’s active, on trial, frozen or churned, and its plan with its price. The line under the name gives the store’s domain and the date it joined. A store on trial also shows its trial end date in the shop details card. Next to the status, the plan pill shows the store’s plan with its billed price and how often it bills: Pro · 499.00/yr for a yearly plan. It is the plan’s price, not what the store brought in this month: usage and one-time charges are not part of it (the store’s MRR, which does include recent usage, is on the Stores list). A store with no running paid subscription shows the plan name alone. An installed store reads Free after a known cancellation of its last subscription. Frozen and uninstalled stores keep the name of the last plan they paid for. The plan price, the five numbers below, the revenue chart and the last charge are all in the store’s own billing currency, with no conversion.The five numbers
Total revenue is the store’s LTV: what it has been billed over its lifetime, renewals included and refunds deducted. Monthly revenue is the same figure for the current calendar month so far, and the revenue trend below draws it month by month, so the chart adds up to the total.
Two things can make a paying store read **0.
The charts
- Revenue trend: monthly revenue over 6 months, 12 months, or all time: since the store first installed, or since its first charge when its billing history goes back further than the install Meridian has on record.
- App events: monthly event count, split into charges and installs, so a spike in revenue can be traced to what caused it.
Usage
What this store has metered in its current billing period, against what its plan allows: the per-store mirror of what your own app reads throughgetUsage(). The App events chart above shows volume over months; this card shows where the store stands right now.
The card header states the period it covers: the store’s own 30-day subscription cycle, or the calendar month when it has no subscription (usage is still metered either way; the store just has no plan terms to be measured against).
Every key links through to its event’s page under Usage. A view has no page of its own, so it links to the event it interprets.
Two things the card can say instead of figures. If your app hasn’t declared any usage events yet, it points you at Usage to define some. If it has, and neither its figures nor its last 30 days show anything, it says exactly that rather than showing a list of zeros.
These are billing-period figures, so they reset at each cycle boundary and match what the merchant’s app sees. They are the same numbers Meridian bills overage against, not a separate report computed for the dashboard.
The trend beside each row
Every row carries this store’s last 30 days to the right of its figure, events and views alike, under a single Trend: last 30 days label. It is a fixed span rather than each row’s own window, and deliberately so: an event is measured over the billing period and a view over whatever window it defines, so those windows differ in length from row to row. Only a shared axis lets a column of trends be read as a stack. Otherwise two neighbouring lines of the same width would cover different amounts of time. The series is a calendar, not a list of active days: a day the store reported nothing is a zero, not a gap. That is what makes a flat line at zero meaningful: it says this store is not using that metric, which is usually the reason you opened the page. Nothing is drawn below two points.Recent usage events
Under the Usage card, the last events this store reported, exactly as your app sent them, with no totals in between. Where the Usage card answers “where does this store stand against its plan”, this one answers “what did its app actually send”, which is the question a figure that looks wrong raises next. Each row carries the timestamp, the event key, the quantity, and a preview of the properties your app attached. Click the preview to open the whole object, the same panel the Activity feed uses. A key that isn’t in your event catalog shows in the warning tone here just as it does there, so an integration typo is visible on the store that is sending it. All N → opens the Activity feed already filtered to this store. The filter arrives through the URL (?shop=…), so it survives a refresh, and the field stays free text from then on, ready to be widened or cleared.
Shop details
One card in the right rail holds the store facts the header leaves out. The header already gives the store’s domain, status, plan with its price, and the date it joined, so none of those repeat here.
The country is the one on the merchant’s Shopify shop address, and it reaches Meridian only through the SDK identify handshake. A store that has never identified has none, so the row is absent rather than blank.