For Shopify Partner app teams

Connect your Partner API token and it tracks installs, uninstalls and active stores per app — then lets you build email flows, sequences and campaigns that fire off those events.

  • Install & uninstall tracking
  • No-code email automation
  • Self-hosted, MIT licensed
MMetrix / Overview
Syncs every 60s
Installed stores
8,492
+486 this month
Installs today
71
+18.2%
Uninstalls today
14
−0.31%
Installs / 30 days1,284
Live event feed

Every install and uninstall lands here first. This is the stream your flows, sequences and campaigns fire from.

Installs today
71
Uninstalls
14
Last 28 eventsNet +$452
installs aboveuninstalls below
partner-api · event streamtail -f
now
  • installaurora-goods.myshopify.comBundle BuilderGrowth+$494s ago
  • uninstallnorth-supply.myshopify.comReview EngineNo longer needed$2921s ago
  • installmoku-living.myshopify.comWishlist PlusStarter+$1953s ago
  • installverde-cycles.myshopify.comShip EstimatorScale+$991m ago
  • uninstallharborline.myshopify.comBundle BuilderToo expensive$492m ago
  • installsalt-and-pine.myshopify.comReview EngineGrowth+$493m ago
The product

They all read from the same Partner API sync — so a condition you write in one is true everywhere. Pick a module to see what it holds.

Metrix / FlowsLive
Active flows
18
Total runs
6,068
Success
98.9%
Flows overview
FlowTriggerRunsSuccess
Churn alertCustomer uninstalls1,20498.6%
Welcome mailCustomer installs3,88299.4%
Win-backSubscription cancelled61797.2%
Daily digestScheduled timer365100%

Drag out a trigger, add conditions and actions, connect them on a canvas. Every action can carry a delay — minutes, hours or days — before it fires.

Open the flow builder
Customer intelligence

Kept current automatically from real Partner API revenue transactions — and the data every Flow condition reads from.

Active stores / 12 weeks+18.3%
8,492+486
Week 01Week 12
Uninstall reasonsShopify categories
42%No longer needed
  • No longer needed42%
  • Too expensive23%
  • Switched app19%
  • Other / no reason16%

Shopify’s own categorized churn reason, alongside the merchant’s free-text feedback — enriched with plan, usage duration and last active user.

Custom fields & timeline

Define your own field types — text, number, date, boolean — and log free-form notes against a store's activity timeline.

Your own fields

Tags, notes and an assigned account owner, which the sync never overwrites.

Revenue ledger

Every subscription, usage charge, one-time charge, credit and adjustment synced into a local ledger.

The automation engine

Drag out a trigger, add conditions and actions, connect them on a canvas. Every action can carry a delay — minutes, hours or days — before it fires.

Churn win-backRunning
Trigger

Customer uninstalls

Condition

MRR is greater than 0

Gate — all must match

Action

Send win-back email

Delay: 1 hour

Action

Create follow-up task

Delay: 1 hour

24
Flows built
18
Currently active
6,068
Total runs
98.9%
Success rate

Triggers

  • Customer installs app

    A merchant adds one of your apps

  • Customer uninstalls app

    The app is removed from a store

  • Subscription activated

    A paid plan begins

  • Subscription cancelled

    A paid plan ends

  • Scheduled (timer)

    Hourly, daily or weekly

Conditions

Gate any branch on the merchant’s own data, matching all (AND) or any (OR) of a rule set.

CountryPlanMRRLTVTagApp

Operators

is · is not · contains · greater than · less than

Actions

Send emailSend team notificationAdd tagRemove tagAdd timeline commentAssign account ownerAdd custom fieldCreate task

Any action can carry a delay — minutes, hours or days — before it fires.

Flow templates

Clone Welcome mail, Feedback request, Churn alert or Daily digest.

Shared schedules

One named timer — hourly, daily, weekly — reused by any number of flows.

Run overview

Active flows, total runs, success rate and a live feed with per-step logs.

Email content

Built-in template, saved template, or a custom subject and body per step.

Sequences & campaigns

A sequence sends a fresh email, then follow-ups — but only to contacts who stayed quiet. Choose how stores get enrolled:

Sequence timeline / Imported sheet250 contacts per batch2-day gap between batches
  1. Day 0

    Fresh email

    Sent to the whole batch

  2. Day 3

    Follow-up one

    Only to contacts who stayed quiet

  3. Day 7

    Follow-up two

    Last touch, then the batch closes

A store that opens or replies is retired from the sequence immediately.

Next batch opens automatically once the gap elapses.
Batch 03 funnel44.1% open
Contacts250
Sent22%196
Opened45%108
Replied71%31

Orange figures are drop-off between stages. 54 contacts were never sent to — they had already engaged, so the sequence retired them.

How engagement is detected
  • Open-tracking pixel

    Fires the moment the email is rendered.

  • Provider webhooks

    Opens, clicks, unsubscribes and bounces, straight from Brevo or your SMTP provider.

  • Mailbox reply detection

    Reads a connected mailbox — delivery providers can't see replies that land in an inbox.

ControlsPauseResumeCancelDelete
Campaign / one-off broadcast4,182 recipients
  1. Import

    .xlsx or .csv, parsed in the browser

  2. Compose

    Template, subject, sender, email column

  3. Target

    Everyone, a random sample, or hand-picked

  4. Send

    Now or scheduled, with live progress

Sending now95% complete
Sent3,984Queued142Skipped42Failed14One-click retry for failures
Every module

Brevo or SMTP

Use the Brevo API, or point at any SMTP server — Gmail, Zoho, Outlook, Postmark, or your own. Both sets of credentials stay on file, so switching is instant.

Brevo APISMTP

Sender management

Verified from-addresses import automatically from Brevo, or add any address by hand for aliases and domain relays.

  • support@yourapp.com
  • hello@yourapp.com

Reusable layouts & templates

Shared header/footer layouts and saved templates with merge variables, so every send stays on-brand without rebuilding HTML.

Safe testing mode

An optional redirect-everything-to-one-address setting for staging, so test sends never reach real merchants.

All mail → staging@

Saved segments

Filter by status, app, tag, country or minimum MRR — the same filters that power Flow conditions.

MRR > $50USInstalled

Uninstall enrichment

Point the dashboard at your app's shop-lookup API and it pulls install date, plan, usage duration and last active user into every uninstall email.

GET /shop-lookup → 200 OK
Affiliate programs

Programs, referral codes, payouts and disputed claims. The data model and API are complete, but no admin screen ships for it yet.

Coming soon — backend only right now
  • Programs

    Percentage or fixed commission, a configurable referral cookie window, active/paused status.

  • Affiliates & referrals

    Unique referral codes, tracked sale amount and derived commission per referral, approve/reject workflow.

  • Payouts & claims

    Mark payouts paid, and review affiliate-raised credit disputes.

Affiliate overviewPreview
Partners
128
Referred
$34.8K
Conversion
12.4%
  • GR

    Growth Guild

    32 referrals

    $8,420
  • AP

    App Stack Weekly

    19 referrals

    $4,960
  • CO

    Commerce Crew

    15 referrals

    $3,740
Access & security

The dashboard, its database and every Partner API token stay on infrastructure you control. Nothing is relayed through a service we run — because there isn’t one.

Where everything livesYou own the middle column

The browser

  • A session cookie, and nothing else
httpOnlySigned
  • No password
  • No Partner API token
  • No database access

Your server

  • The dashboard app
  • Your MySQL / MariaDB database
  • Partner API tokens
  • Email provider credentials

Shopify Partners

  • Read-only Partner API calls
  • Install, uninstall and revenue events

What happens to a token

  1. You paste it once

    Entered on the connected-partners screen.

  2. It is written server-side

    Straight to your database. It is never echoed back.

  3. You only ever see it masked

    Any later view shows the masked form below.

Partner API tokenMasked

shpat_••••••••••••••••••••7f3a

Who can see what

CapabilityAdminStandard
View apps, stores and churn
Build flows, sequences, campaigns
Read customer records and revenue
Manage connected partner organizations
Add or revoke Partner API tokens

Two roles, no permission matrix to maintain — auditable by reading one column.

Common questions

Can anyone else see my Partner data?

There is no hosted service in the path — no copy of your data exists anywhere but the server you installed it on. Nothing is relayed through us, because there is no “us” to relay through.

What does the browser actually store?

One signed, httpOnly session cookie. Because it is httpOnly, page scripts cannot read it; because it is signed, it cannot be edited into a different session.

How do I rotate a Partner API token?

An admin replaces it on the connected-partners screen. The stored value is never echoed back to the browser, so the only way to change it is to enter a new one.

Who can connect or remove an organization?

Admins only. A standard user can read every app, store and flow, but never sees the partner-management screens at all.

How it works

No coding required to run it. The first install takes about 30–45 minutes, on a single small server you control.

Connect a Partner API token

From Partners → Settings → Partner API clients in your Shopify Partner account. Connect as many organizations as you run.

Pick an email provider

Brevo or any SMTP server. Credentials for both are kept on file, so switching providers later is instant.

Let it take over

In production it refreshes itself every 5 minutes. The on-screen Sync button is only for forcing an immediate update.

StackNext.js 16React 19Prisma 7MySQL / MariaDBTailwind CSSBrevo APISMTPpm2 + nginx
Build status

Nothing on this page promises a screen that doesn’t exist yet. Here is every area of the product and exactly how far along it is.

Fully shipped
5of 7 areas

The four modules you would actually use day to day are complete. The gaps are all in places with no screen attached.

ShippedA full screen you can open and use today.

All areasShowing 7 of 7
  • Apps & stores

    Apps

    Live counts, per-store detail, uninstall reasons.

    Shipped
  • Flows

    Flows

    Visual builder, templates, shared schedules, run logs.

    Shipped
  • Sequences

    Sequences

    Imported sheet and merchant-triggered drips.

    Shipped
  • Campaigns

    Campaigns

    Import, compose, target, send or schedule.

    Shipped
  • Email delivery

    Settings → Email

    Providers, senders, layouts and templates.

    Shipped
  • CRM & revenue sync

    Behind Flows

    Powers every Flow condition, but has no customer-list page of its own yet.

    Backend
  • Affiliate programs

    No screen yet

    Programs, referral codes, payouts and claims exist as a complete data model and API.

    API only

Affiliate programs are the one area to treat as coming soon — the model and API are finished, but there is no admin screen to point anyone at yet.

FAQ

Still unresolved? The source is public — read the part you are unsure about, or open an issue.

Read the source

What is Metrix by Meton?

A self-hosted, open-source dashboard that gives Shopify app developers install analytics and event-based email automation in one tool.

What can I track with Metrix?

Installs, uninstalls, active stores per app, and a customer record for every store that touches your app.

Is Metrix self-hosted?

Yes. It runs on your own infrastructure, so you own all install and customer data.

Can I send emails from install events?

Yes. A no-code builder lets you create drip campaigns and flows triggered by install and uninstall events, and sequences can stop when someone replies.

Do I need a separate email tool?

No. Analytics and email automation are built into the same dashboard.

Operating principle

Metrix by Meton · Self-hosted · MIT

Your next move

Point it at your Partner account and you have live install tracking the same afternoon — then build the first flow whenever you are ready.

30–45 minutes to first syncNo coding required to run itRefreshes itself every 5 minutes

Before you start

4 things
  • A Shopify Partner account

    With Partner API access enabled

  • A small server you control

    One box is enough — pm2 and nginx

  • MySQL or MariaDB

    The dashboard brings its own schema

  • An email provider

    A Brevo key, or any SMTP credentials

Have all four and setup is a form, not a build. Miss one and it will still install — it just won’t sync until you add it.