The short answer
The process count is not yours to choose. A process is a trigger, then a single filter node, then actions — and a filter may never be a child of an action. So a second independent condition cannot be added to a process that already has one. It has to be handed off to another process, which carries its own filter.
The called process runs either on a record change or manually, and the manual trigger is the choice that stops it firing on its own. Manual does not mean user-triggered; it means not self-firing — so a manual process can be invoked by another process and run by a person. The same process is a subroutine in a chain and a repair tool somebody triggers by hand.
So what you control is not how many processes you have. It is whether they stay legible: tag each process and prefix its name by domain, because the platform shows when a process ran but has no documented view of what calls it.
The business problem
One business event usually needs several unrelated things checked. Take an account moving from prospect to customer:
- If the primary contact details are missing, tell the owner — otherwise every later automated email addresses nobody.
- If the region was typed as a two-letter abbreviation, expand it, because otherwise reporting by country silently splits into duplicates.
- Populate the renewal dates from the contract term, which is either twelve or twenty-four months.
These are not alternatives. A single account can need all three, and they have nothing to do with each other. The instinct is to write one process for "account becomes a customer" that handles all of it — and that instinct is what §2 is about.
The estate this is drawn from carries 265 processes across seven entities, with 113 on one entity alone. That number is not sprawl and it is not a warning. It is what the engine's shape produces when a business has this many rules, and the interesting question is not how to have fewer but how to keep hundreds legible.
Why the obvious approach fails
Putting all three checks in one process
A process gets one filter, and the filter is a single gate. Its branches are if / then / else — the first matching branch wins and the rest are never evaluated.
So the three checks above, written as three branches of one process, mean an account that needs all three gets only the first. No error, no warning, no partial-success report. Two corrections simply do not happen, and the process looks like it ran.
This is the single most expensive misunderstanding available in the process engine, because the design looks tidier and the failure is invisible. It also gets worse with success: the more cases the process covers, the more likely a record matches several and receives one.
Nor can you re-gate mid-chain to get round it. A filter may never be a child of an action — the canonical shape is trigger, then filter, then actions, and the engine will not accept a second gate hanging off the end of the first one's work. Independent conditions therefore cannot be expressed inside a single process at all. That is a structural fact, not a style preference.
Descriptive names
Naming a process after what it does — Send the welcome email, Update the renewal date — is clear on the day and useless in a list of two hundred, because the list then sorts by verb. Everything beginning Update… lands together regardless of what it touches, and the six processes concerning one domain scatter across the alphabet. You read the list far more often than you read any single name.
Documenting it in a spreadsheet
Accurate the day it is written, wrong within a month, because the estate changes in the admin interface and the document does not. Anything maintained in parallel with the thing it describes will drift. What survives is what lives in the estate — which is why the name carries so much weight.
The shape of a process, and what follows from it
Everything in this blueprint follows from one structural fact:
trigger → filter → actions
↑
exactly one, at the root.
A filter may never be a child of an action.
Which means a process can apply one independent condition. A second condition needs a second process — and the way you get there is a trigger-process node, which hands off to another process and carries its own filter. The next condition lives on the handoff.
Source. Coevera help centre, Automatizer — triggering a process from another process, which frames the same mechanism as the intended way to build: "more scaled-down processes … chained together into a unified workflow". The Process Manager that lists them is documented separately.
So the prospect-to-customer example is not one process. It is a detector plus three sub-processes:
| Process | Trigger | Its own filter |
|---|---|---|
| Detect the transition | Record update on the classification field | Became a customer |
| Contact-data check | Manual (called) | Primary contact fields empty |
| Region correction | Manual (called) | Region is a two-letter code |
| Renewal-date fill | Manual (called) | Term is 12 or 24 months |
Each sub-process evaluates its own condition independently, so an account needing all three corrections gets all three. That is the whole reason the estate is shaped this way.
Give every sub-process a permissive filter at the root, even when the caller has already decided. It costs nothing and it buys something specific: because manual processes can also be run by a person, the sub-process may be invoked in a context nobody has checked. Its own root filter is what makes it safe in both directions.
Trigger type is a first-class fact
There are four trigger types, and the type determines both how a process is reached and how it fails. This belongs in how you think about the estate, not in something you discover by opening a process.
| Type | Reached by | How it fails |
|---|---|---|
| Record | A field changing | Silently. If the field stops changing — an integration stalls, an import rewrites the same value — nothing fires and nothing reports it. Indistinguishable from a quiet week. |
| Schedule | A time of day | Confidently. It runs on time whether or not its inputs are current, so it acts on stale data rather than not acting. |
| Manual | Another process calling it, or a person running it | Orphaned. If the caller is rewritten to stop calling it, the sub-process stops being reached and nothing says so. Its condition is still correct; nothing consults it. |
| Online form | A form submission | With the form. Outside the scope of this blueprint. |
The number worth measuring on your own estate. On the busiest entity here — 113 processes — the split is 41 record-triggered, 16 scheduled and 56 manual.
Half of that entity being manual is not a drawer of forgotten utilities. It is the composition layer: the sub-processes that exist because independent conditions cannot share a filter. A high manual count on a mature estate is a sign the decomposition was done properly.
It does create the one failure mode unique to this type. A record-triggered process that stops firing is at least still listed as watching a field; an orphaned sub-process looks identical to a working one. Which is why §7 traces call chains rather than just reading the list.
Patterns that keep a large estate legible
Tag by domain, and prefix the name too
Processes can carry Tags, and the Process Manager filters by tag as well as by owner and status (Automatizer — creating and running processes). Use them. But the list's search matches names, a tag shows only in a column you choose to add, and there is no folder and no documented dependency view. So put the domain in the name as well, in brackets at the front:
[Contracts] Create the renewal record
[Contracts] Watch the renewal date for changes
[Hygiene] Normalise country and region codes
[Hygiene] Flag records whose status contradicts their dates
[Outreach] Send the scheduled check-in
A flat list then groups itself when sorted, a search for one domain returns everything touching it, and adding a process forces the question which domain is this? — which is what catches a duplicate before it exists.
The estate examined uses about a dozen prefixes, the largest carrying twenty-five processes and the smallest two. That distribution is itself a review tool: twenty-five members is a domain worth reading as a whole, and two is either a genuine edge or a naming accident.
A convention that is not enforced drifts. Two of the prefixes in this estate are the singular and plural of the same word — twelve processes under one spelling, thirteen under the other, all concerning the same entity. Neither is wrong; together they mean the grouping quietly fails, because sorting puts them adjacent while searching one misses the other.
Write the prefix list down as a fixed set and check new processes against it. Cheapest possible governance, and the first thing to decay.
Name the chain, not just the process
Because sub-processes are reached by being called rather than by watching anything, the only clue about who calls whom is the name. A shared prefix plus a consistent verb for the detector — the process that owns the event — makes a chain readable from the list alone. Without it, tracing one business event means opening processes until you find the caller.
One sub-process serves as both subroutine and repair tool
Because manual means callable and runnable, the sub-process you built for the chain is also the thing you run by hand when a date moves, a record is created out of order, or an automation was disabled for an afternoon. This is the same mechanism as the manual twin in Blueprint 010 and the re-runnable derivation in Blueprint 009 — not a separate pattern, the same one seen from a different angle. Build it once and it does both, provided it keeps its own root filter.
A final unmatched branch that says something
Any filter that maps a value to an outcome should end with a branch matching everything the earlier ones did not, whose action is to tell somebody. Given first-match-wins semantics, an unrecognised value otherwise takes whichever fall-through exists and produces no error at all. Cheapest insurance available in an estate this size.
Limits & trade-offs
The decomposition in §3 is required. The consequences below are not required — they follow from a second gap: the platform reports when a process runs, not how the estate fits together. The Process Manager has an Activity (24 hours) column and run statistics for up to 14 days, and each process keeps an Activity Log of its executions (Process Manager). With notifications on, the owner is warned when a process still connected to another is deleted or deactivated (triggering a process from another process). What no documented view shows is what calls a given process, or what would stop being reached without it. Where half the processes on an entity are reached only by being called, that missing call graph is the expensive part.
Nothing gets deleted, so things get renamed
Observed in this estate: five processes carry the words not used or obsolete in their own names. One of them is on a daily schedule and still runs.
That is not carelessness — it is the rational response to being unable to prove a deletion is safe. Renaming is reversible and costs nothing; deleting might break something nobody can name. So the estate accumulates a layer of processes that are documented as dead and are not switched off.
The mitigation is a convention, not a tool: retirement means disabled first, renamed second, deleted on a date you write into the name. A process marked as unused and still firing is worse than either state on its own, because the name tells the next person to ignore something that is actively doing work.
Duplicates accumulate by year
Anything with a year in its logic tends to be copied rather than extended each January, and the older copy is never retired. This estate carries several such families where two processes do largely the same work over different year ranges. Each was the correct minimal change at the time; together they are two places to update and a coin-toss over which one actually ran.
Scheduled processes collide, and nothing warns you
Scheduled times are chosen one at a time, with no view of what is already scheduled. In this estate three unrelated daily processes run at the same hour, and others sit five and twenty-five minutes apart.
Same-time scheduling is not itself a fault. It becomes one when two of them touch the same records, because there is no ordering guarantee between them and no transaction around either — so which one wins is not something you can reason about from the configuration. Keep a single list of scheduled times and their owners, and space anything that shares a record set.
An orphaned sub-process cannot be distinguished from a working one
This is the failure mode the composition model introduces. A sub-process is reached only by being called. Deactivate its caller and the owner may get a warning, if notifications are on; rewrite the caller to stop calling it and nothing is raised. Either way the sub-process goes on looking like every other enabled process in the list, its activity as quiet as a slow week's. Its filter is still correct. Nothing consults it.
It is also the one form of dead process you can actually prove dead, because the call is in the caller's own definition. That makes call-chain tracing the highest-value audit in §7, and the only way to clean up an estate with confidence rather than nerve.
Personal processes are a real category
Estates of this size contain processes prefixed with somebody's initials — personal tools built for one person's routine. They work, they are used, and they are invisible to everyone else. Give them a shared prefix and put what they do in the name, because the alternative is that they become unowned the day that person changes role.
What we have not verified
The structural claims — one filter at the root, a filter never a child of an action, the four trigger types, the handoff node carrying its own filter — are read from the API schema and from process definitions captured out of the administrative interface. The first-match-wins behaviour of a filter's branches, and the estate figures quoted throughout, come from operating this deployment.
We have not tested bulk enable and disable by name pattern, or whether the platform offers a call-graph view; the Process Manager documentation describes neither. The practices above assume neither exists, because that is how this estate is managed in practice — but absence of use is not proof of absence. If you are setting conventions for a new space, check the current administration interface before committing to compensate by hand.
Verification
This is the audit for an estate you did not build, and it works from the outside. All of it reads the process list rather than opening processes one at a time.
- Group by name prefix and look at what has none. Unprefixed processes are usually the accidents — added in a hurry, never revisited. Count the distinct prefixes too: more than about fifteen means the scheme has stopped being a scheme.
- Check for singular and plural of the same prefix, and for the same domain spelled two ways. This is the most common silent failure of a naming convention and it takes thirty seconds to find.
- Group the scheduled processes by time of day. Anything sharing an hour is worth a look; anything sharing an hour and a record set is worth fixing.
- Search the names for not used, obsolete, old, temp, copy, and for personal initials. Then check whether each one is actually disabled. The gap between "named as dead" and "switched off" is where this audit earns its keep.
- Trace the call chains. For every manual-trigger process, find what invokes it. The ones nothing invokes are genuinely dead — and this is the only kind of dead process you can prove, because the call lives in the caller's definition rather than in inference. Do this before anything else if you inherited the estate.
- Count manual against record-triggered. A high manual fraction on a mature estate is expected and healthy — it is the composition layer. What matters is whether each one has a caller. A high manual count plus orphans is the signal that a chain was rewritten and its parts left behind.
- Check every multi-branch filter for independence. Where branches represent alternatives — a status is one of four values — one process is correct. Where they represent conditions that could all be true at once, first-match-wins means only one will ever apply, and the others need extracting into sub-processes. This is the audit that finds the §2 error in an estate somebody else built.
- Try to state each process's purpose in one sentence. The ones you cannot are the ones carrying more than one concern, and they are the candidates to split — not because they are broken, but because they are the ones nobody will dare change later.
What would signal a regression: a new process with no prefix, or a prefix not on the agreed list; a manual-trigger process with no caller; a multi-branch filter whose branches are independent conditions rather than alternatives; a process named as retired that is still enabled; two processes whose names differ only by a year; a scheduled process added to an hour that already has one touching the same records.
Frequently asked
How do you keep a large CRM automation estate maintainable?
Start by accepting that the count is not yours to choose. A Coevera process is a trigger, then a single filter node, then actions — and a filter may never be a child of an action, so a second independent condition cannot be added to a process that already has one. It has to be handed off to another process carrying its own filter. One business event needing three unrelated corrections is therefore three or four processes, by construction. What you actually control is legibility: tag every process by domain and give it a bracketed domain prefix as well, because the name is what the process list's search matches; make the trigger type explicit, since each type fails in a different way; and give each sub-process a permissive root filter so it guards itself if it is ever run on its own.
Why does one business event need several CRM processes rather than one?
Because a process gets one filter, and the filter is a single IF-THEN-ELSE gate whose first matching branch wins. Consider an account moving from prospect to customer that needs three independent corrections: alert the owner if the primary contact details are missing, expand a two-letter region abbreviation into the full name so country reporting does not split, and populate renewal dates from a twelve or twenty-four month term. Those are not alternatives, they are three things that may all be true at once. Put them in one process and only the first matching branch runs, so a record needing all three gets one. The remedy is one process per independent condition, invoked from the process that detected the event.
What does a 'manual' trigger mean in Coevera processes?
Both things at once, and that is the point. Manual is one of four trigger types alongside record, schedule and online form, and what it actually means is that the process does not fire on its own — so it can be run by a person from a record, and it can be invoked by another process through a trigger-process node. The same process serves as a subroutine in an automated chain and as a repair tool somebody runs by hand, without being built twice. That is why about half the processes on the busiest entity of the estate examined (56 of 113) are manual-trigger processes, and why the figure indicates deliberate decomposition rather than unused utilities. It is also why each sub-process should keep a permissive filter of its own at the root: the automated caller has already established the context, but a person running it standalone has not, and the root filter is what makes the same process safe in both directions.
How do you audit CRM automations you did not build?
Work from the shape rather than the content. Group every process by name prefix and look at what has none, since unprefixed processes are usually the ones added in a hurry. Check whether the same domain appears under two spellings, which is the commonest silent failure of a naming convention. Group the scheduled ones by time of day and look for several in the same hour, especially any touching the same records, because there is no ordering guarantee between them. Search the names for not used, obsolete, old, temp and personal initials, then check whether each is actually disabled rather than merely labelled. And trace the call chains: a sub-process that nothing invokes is genuinely dead, which is the one form of dead process you can prove.