Ledgr/Documentation/Workflows

Workflows

Watch the lesson: Run work on a workflow board (1:35).

A board is one process; a card is one piece of work. This is for the work that has to get done and has no document at the end of it — the close you have to finish by the 7th, taking a new client on, an engineering change, a complaint and the fix that closes it.

Plan.

Workflows is included on Enterprise and above, and there is a Workflows add-on at R299/mo from Starter upwards if boards are the only thing you need from the higher tier. Unlimited boards, and everyone on your plan — there is no per-user charge. See pricing.

What it is not

A card here posts nothing to your books. It moves no stock, issues no document number and raises no invoice. That is deliberate, and it is what keeps this from becoming a second copy of half of Ledgr: a billable field job is a job card, an hour is a time entry, a deal is a CRM opportunity, and a change to a manufacturing recipe is governed by the approval step on bills of materials.

It has one visible consequence worth knowing: a finished card can be dragged straight back out of Done. An invoiced job card cannot move at all, because its numbers are in the books. Nothing on a workflow board is.

Start a board

  1. Workflows → New board
  2. Start from a template, or from nothing

    Five ship: Simple board, Month-end close, Client onboarding, Engineering change and Non-conformance and corrective action. A template is copied at creation — the board is yours from that moment, and it will never change under you because Ledgr shipped a better template.

  3. Set the item prefix

    Two to six characters. Cards are numbered from it — CLOSE-0014 — off a counter, so a number is never reissued and the key somebody quotes to you in a meeting always resolves to the same card.

The templates are not decoration. Month-end close has Waiting on client as a column of its own, because that pile is the month-end problem. Client onboarding makes FICA and verification a column no card can skip — see columns no card can skip — so a client cannot be marked live before they are verified. Non-conformance puts containment before root cause, which is the order it happens in on a factory floor.

Columns, and the stage behind each one

Name your columns whatever your business calls them — "Waiting on client", "Snagging", "Signed off". Up to twelve. But every column also declares one of five stages, and it is the stage, never the name, that every count, every metric and every filter reads:

StageWhat it meansWhy it is separate from the name
To doNot started.Columns are free text, and the moment they are, nothing can count open work across two boards and cycle time has no start. Two columns may share a stage, and most real boards have several In progress ones.
In progressSomebody is on it.
BlockedWaiting on somebody or something else.
DoneFinished.
CancelledNot going to happen.
Blocked is a stage, not a flag on the card.

Because blocked work still occupies capacity. A team with a limit of five and three of them blocked has two slots, not five — and a count that ignores blocked work reports the opposite of the truth at exactly the moment somebody needs it.

Work-in-progress limits

Cap how many cards a column may hold, and Ledgr refuses the drop once it is full, naming the column, the count and the limit so the remedy is obvious from the sentence. A limit that only tints a column red is decoration.

Two things keep it from getting in the way. A column you add has no limit until you set one, so nobody is refused a drop they did not ask to be refused — but three templates ship with a limit on one column (Simple board, Engineering change and Non-conformance), which you can change or clear in Board settings. And the column dims before the gesture is committed, because a card that snaps back reads as the app being broken rather than as the move being wrong.

Columns no card can skip

In Board settings, tick Cards cannot skip this column on a step that must not be jumped. A card to its left can be moved into it and on from there, but a drag that would carry it over the column is refused with a sentence naming the column, and a new card cannot be created to its right — that would be skipping it by another route. Moving a card backwards is always allowed. The column is marked No skipping on the board, and the columns past it do not light up while you drag a card that has not been through it.

The Client onboarding template ships with it ticked on FICA and verification. It is off on every other column until you tick it.

Cards

A title, a description, an assignee, a due date, a priority, labels (up to twelve), a customer or supplier the work is for, and comments. Files too — up to twelve per card, so a brief, two screenshots and the revised brief all sit on the same card rather than the second upload replacing the first.

Removing a file removes the link, never the file: the same document may be attached to an expense or a sales document, and a board is not somewhere anybody should be able to shred a receipt your books depend on.

A card in Done still accepts a file — the sign-off note arrives after the work does.

Assigning a card emails the person it now belongs to, if Settings → Notifications → Card assigned to you is on. Reassigning also tells the previous holder it has moved on; unassigning mails nobody, because "nobody has this" is a notice with no action in it.

Hours on a card

Log time against a card and it becomes an ordinary time entry on the matter the card names. Workflows stores no hours of its own — which is the join that makes this part of Ledgr rather than a board added on the side: work planned here becomes billable hours on a client's matter with nobody re-keying anything, and it shows up in the matter's budget, on the timesheet and on the invoice raised from it.

A card with no matter cannot take hours.

Ledgr refuses rather than picking a matter for you. Guessing would attribute somebody's afternoon to a client who never asked for it. Set Matter for hours logged on this card on the card, or Matter for hours logged here in Board settings, first.

Logging time needs the time tracking permission, not the workflows one — the permission names the thing being written, never the screen it was written from.

The filter box takes a small language rather than a single word:

Filter
is:overdue p:urgent a:me label:vat column:"In review" for:acme due:week

The same key twice is OR; different keys are AND; anything without a key is matched as text. a: is the assignee (a:me for your own), p: the priority, for: the customer or supplier's name, due: takes today, week or overdue. An unknown key falls through to a text search rather than being refused.

An unknown is: value matches nothing, on purpose. Widening is the one direction a filter must never fail in: a typo that returned the whole board would look exactly like the filter working.

Repeats — a checklist that comes back

A month-end close is not one card, it is fourteen: reconcile each bank account, review the debtors, post the depreciation, sign it off. So what recurs is a checklist, and the tab is called Repeats. Each occurrence raises those cards as ordinary cards with nothing special about them afterwards.

  1. Workflows → Repeats → New checklist
  2. Set How often and First one falls on

    Monthly from the 31st gives 31 January, 28 February, 31 March — each date is counted from the first one, so February does not quietly move every later visit to the 28th.

  3. List the cards, and who each one goes to

    Up to forty lines. Each names its own assignee, because "the bank rec is always Thabo's" is the point. A due date can be offset up to a fortnight from the occurrence.

Card titles can carry {date}, {month}, {monthYear} or {year}, so a year of "Reconcile FNB — {monthYear}" is searchable.

Nothing older than about three months is raised.

A March close raised in September is fourteen cards everybody has to read and dismiss. So occurrences past 92 days are skipped — and named when they are, because a run that reported only what it did would look identical to one that found nothing owed. This is the opposite call to a maintenance contract, which raises every visit however old, because that is a visit you still owe a customer.

Deleting a recurring checklist leaves its cards standing, and says how many — they are ordinary work somebody may be halfway through. A generated card you deleted because it did not apply this month stays deleted.

Insights

Cards by stage and by assignee, throughput, and how long work is taking. Two things about the timing figures are worth knowing, because they are the difference between a number you can quote a date from and one you cannot:

  • The cycle time is a median, with the 85th percentile beside it. Cycle times are badly skewed — most cards take days and one waited four months for a supplier — so an average reports a typical card as taking three weeks, which is true of nothing on the board. The median says what half of cards beat. Quote a date off the p85; a team quoting its median hits it half the time.
  • Cycle time starts when work starts, not when the card was made. A card that sat in the backlog for six weeks did not take six weeks to do. The wait before work begins is reported separately as queue time rather than folded in and hidden.

Away from a desk

A board gets worked on a site walk and in a plant room, so three things queue with no connection and send themselves later: creating a card, commenting and logging hours.

Moving a card does not queue, and the reason is worth keeping. A move carries a position relative to a column as it was when you picked the card up, and a work-in-progress limit that cannot be checked with no server to ask. Replaying a stale move puts a card somewhere nobody chose and can breach a limit set for a reason — where a card you created is your own work and nobody else can contradict it. Settings → Sync says the same thing.

Permissions, and deleting things

Workflows is its own permission — view, create, edit, delete and export. There is deliberately no approve: nothing in a workflow card waits for a second person, and Ledgr does not invent an approval step just to give a checkbox something to do. See roles & users.

A board still holding cards is refused deletion, with the count, and you are pointed at archiving instead. A column still holding cards cannot be removed either. The alternative is cards that exist and are reachable from nothing.

Every move, edit and comment is in the audit trail — the same one the rest of Ledgr writes to, so "who moved this card" has one answer rather than two that can disagree.

Common problems

What you seeWhat to do
A card will not drop into a column That column is at its work-in-progress limit, and the refusal names the column, the count and the limit. Finish or move something out of it, or raise the limit in board settings. The column dims before you let go, so you find out before the gesture is committed rather than watching the card snap back.
Blocked work still counts against the limit Deliberately. A team with a limit of five and three cards blocked has two slots, not five — a count that ignored blocked work would report the opposite of the truth on the one board built to show it.
A limit of zero is refused It would stop anything at all being moved into the column. Leave the limit blank for "no limit" instead; blank is the default, so nobody is refused a drop they did not ask to be refused.
Hours will not log against a card The card has no matter attached. Ledgr refuses rather than picking a matter on your behalf — that would attribute somebody's afternoon to a client who never asked for it. Attach the matter to the card first.
Logging hours is refused for a permission reason An hour on a card is a time entry, so it needs the time-tracking create permission rather than a workflow one. The permission names the thing being written, never the screen it was written from.
A label will not save A label cannot contain a comma — a card's labels are stored as one comma-separated list, so a comma inside a label would read back as two labels, one of which nobody created. Ledgr names the label.
The filter box returns nothing An unknown is: value matches nothing rather than everything, on purpose: widening is the one direction a filter must never fail in, because a typo that returned the whole board looks exactly like the filter working. Check the spelling.
A board or column will not delete It still holds cards, and Ledgr says how many. Archive the board instead, or move the cards out of the column first — deleting would leave work with nowhere to be.
A card will not move to a column further along A column between the two is one no card can skip, and the refusal names it. Move the card into that column first and on from there — or, if the step genuinely does not apply, untick Cards cannot skip this column in Board settings.
A recurring checklist raised nothing, or skipped a month Checklists raise their cards daily. Anything more than 92 days overdue is skipped and named rather than raised — a month-end close for March landing in September is fourteen cards everybody has to read and dismiss. The run reports what it skipped.
A card cannot be dragged at all Either the board is archived — restore it in Board settings — or the card is still queued on this device and the server has never been told about it. A move is not one of the writes Ledgr queues offline — see offline. A finished card is never the reason: it can be dragged back out of Done.