Skip to main content
An account’s MRR can come from several places — a billing platform, a synced trait, or a figure someone typed. MRR sources is the ordered list that decides which one wins. It matters more than most settings because MRR is not a display field: it weights the health score, drives request impact scoring, and defines your portfolio view. Find it under Settings → Organization → Accounts, in the MRR sources section.

How the chain works

Zudo walks your list from the top for each account. The first source that has a value for that account wins. Three rules govern the walk:
  • A source reporting zero is an answer and stops the walk. This is what keeps a churned account at $0 — without it, an account that churned to nothing would fall through and a stale trait would resurrect its revenue.
  • A source holding something that isn’t a number falls through. A metadata field reading enterprise resolves to nothing and the next source gets a turn, rather than being read as “pays zero”.
  • An account no source can answer for keeps the value it already has. Zudo never zeroes an account just because the chain came up empty — which is what protects manually created and imported accounts that have no billing source at all.

Available sources

Traits are listed by name and source: a synced trait shows its connection, as in Amount · HubSpot, and one of your own shows Custom, as in Contract value · Custom. The two Stripe sources read your Stripe connection’s figures. If you also run Vitally with its Stripe integration, Vitally keeps its own copy of the same Stripe fields. That copy is used only for an account your Stripe connection doesn’t know. For an account Stripe does know, a field that’s empty in Stripe stays empty, even if Vitally still holds an old value for it. So removing manual_mrr from a customer in Stripe hands the account to the next source. Each entry shows how many accounts it can actually answer for. That number is the point of the display: “Stripe metadata” is a reasonable-sounding first choice that might resolve for four accounts out of four hundred.

Using one of your own traits

If your revenue isn’t in a billing tool Zudo connects to, keep it in a custom trait and make that trait a source. This suits accounts you add by hand or import, and contracts invoiced outside a billing platform.
  1. In Settings → Organization → Traits, add a trait of type Number, such as “Contract value”.
  2. Fill it in for each account: on the account’s Traits tab, from a playbook’s Update a trait step, or through the API.
  3. Under Settings → Organization → Accounts, add it from Add a source… in MRR sources, and save.
Only Number traits are offered. A trait you turn off isn’t offered, and while it’s off the chain skips it and moves on to the next source.
An MRR figure typed when an account was created or imported is a manual figure, so it beats your trait until you click use sources on that account.

Nothing configured

With an empty list, MRR comes from whatever Vitally reports — the behaviour that predates this setting. Existing orgs see no change until they configure one.

A typed figure always wins

A figure entered by hand on an account beats every source in the list and is not part of it. It is an explicit human correction, not a data source to be ranked. When an account’s MRR was set this way, the account page labels it Set manually with a use sources link that clears the override and hands the account back to the chain.
Blank is not the same as zero. Leaving the MRR field empty when creating an account means “no opinion”, so a billing source can still fill it in later. Typing 0 means zero, and it sticks.

When MRR is worked out

Zudo re-resolves every account’s MRR every 30 minutes, so a figure is never more than half an hour behind the data it comes from. It also runs immediately for a single account when you set or clear a manual override, and at the end of a Vitally sync. Because the chain is walked on a schedule rather than only when a particular integration syncs, revenue keeps up to date whichever platforms you have connected — a Stripe-only organization is resolved on exactly the same cadence as one running Vitally. Only figures that actually change are written, so a run with nothing to do changes nothing.

Changing the order

Reordering takes effect at the next resolve, within 30 minutes — or immediately for an account you clear an override on. For the specific case of moving revenue onto Stripe — what to compare first, and what to expect on annual contracts — see Switching MRR to Stripe.
Reordering can move MRR, and MRR feeds the health score — so it can move scores too. Check the account count shown against each source before promoting one to the top.