Skip to main content
iVentureTeam

account_onboarding

The accounting onboarding checklist, drawn from a JSON payload already attached to the journal rather than from a separate query.

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
August 27, 2026Updated August 31, 20264 min read
Technical nameaccount_onboarding
Viewskanban, form (view widget, <widget> element)
Moduleaccount, the Invoicing and Accounting apps
Used in coreThe accounting dashboard in account
VersionsOdoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0
No-code setupNo. It is set in view XML and depends on module-specific data
Alternativesbill_upload_guide, account_document_state, web_ribbon

What the onboarding steps does

Setting up accounting is a sequence: company details, bank account, chart of accounts, first invoice. Odoo tracks that sequence as onboarding steps and shows them on the accounting dashboard.

This widget draws that panel. What makes it worth reading is where the data comes from: not a query of its own, but a JSON string already sitting on the journal record as part of its dashboard payload.

Clicking a step calls whatever action that step names, with the journal supplied as context, and opens whatever comes back.

What this means for your team

Onboarding checklists are one of the few interface patterns with a measurable effect on whether a system gets used. The accounting one matters more than most, because a half-configured chart of accounts is worse than none.

For an implementation, the steps are worth walking even when you know the product, because they are also what the dashboard uses to decide the account is ready. Skipping them leaves the panel visible for months.

Supported options in Odoo 19

The widget declares no options and takes the standard view widget props. What it reads and what it sends are listed below. Read from the accounting onboarding source, Odoo 19.0.

OptionTypeWhat it does
kanban_dashboardfield read from the recordA JSON string. The onboarding steps are parsed out of its onboarding section.
step.actionmethod name from each stepCalled on the onboarding step model when the step is clicked.
journal_idcontext key sent with the callThe journal's identifier, so a generic step knows which journal it is completing.

The steps come from a string. They are parsed out of the journal's dashboard payload rather than fetched, which is efficient but also means a malformed payload breaks the panel rather than emptying it.

Working examples

Placing it

<widget name="account_onboarding"/>

No attributes. The steps come from the record.

Where the steps live

JSON.parse(record.kanban_dashboard).onboarding.steps

A payload already loaded for the dashboard.

What a click sends

onboarding.onboarding.step[step.action](
  context: { journal_id: record id }
)

Then the returned action is opened.

Reading steps out of a payload that was already there

The parse is the design decision worth noting. The accounting dashboard already loads a payload per journal describing everything the card shows, and the onboarding steps ride along inside it. Reading them from there costs nothing, where a separate query would cost one per journal.

The trade is fragility. The getter parses the string every time it is read and reaches into a nested property, so a payload that is malformed or missing the onboarding section produces an error rather than an empty panel.

The click handler is the other half. Each step carries the name of a server method, and the handler calls that method on the onboarding step model with the journal identifier in context. Passing the journal is what lets a generic step know which journal it is completing.

Whatever the method returns is then opened as an action, which is how a step link becomes a setup wizard or a form.

Version compatibility

VersionStatusNotes
Odoo 20.0In developmentNot released. Byte-identical to Odoo 19 on the development branch.
Odoo 19.0VerifiedVerified against the shipped source.
Odoo 18.0VerifiedSame payload parse and step action call.
Odoo 17.0VerifiedSame approach with older component conventions.
Odoo 16.0Not availableWidget does not exist in this form.

Upgrade note. Present since Odoo 17 in this form. The step definitions themselves moved into their own model in that release, which is what allows this widget to call a step's action by name.

What is changing in Odoo 20

Odoo 20 is expected at Odoo Experience in Brussels, 24 to 26 September 2026. The development branch is unstable and this may still change; we re-verify this page after the release.

Byte-identical. The file on the development branch matches Odoo 19 exactly, including the payload parse and the context passed to the step action.

Common problems and fixes

SymptomCause and fix
The panel is blank or errorsThe dashboard payload is malformed or has no onboarding section. Recompute the journal's dashboard payload.
Clicking a step does nothingThe named method does not exist on the onboarding step model. Check the step definition; the name is called directly.
The wrong journal is set upThe journal identifier comes from the record the widget sits on. Open the step from the correct journal's card.
Steps stay incomplete after finishing themCompletion is recorded server side on the step model. Reload the dashboard to refresh the payload.
The panel never disappearsAt least one step is still open. Complete or skip the remaining steps.
Options do nothingThe widget declares none. Nothing to configure; the payload drives it.

Onboarding steps vs the alternatives

WidgetBest forKey difference
account_onboardingThe accounting onboarding checklist on the journal dashboardParses steps out of an existing payload rather than querying for them
bill_upload_guideGetting the first vendor bill inAn upload guide rather than a step list
account_document_stateAn accounting document's statusA status rather than a setup flow
web_ribbonMarking a record's stateA label rather than a panel

There is no alternative widget, because the panel is specific to the accounting dashboard's payload. The general onboarding framework renders its own steps elsewhere without this component.

Frequently asked questions

Where do the onboarding steps come from?+
They are parsed out of the journal's dashboard payload, a JSON string already loaded for the card, rather than fetched with a separate query.
What happens when I click a step?+
The step's named method is called on the onboarding step model with the journal identifier in context, and whatever action it returns is opened.
Why does the panel error rather than empty?+
The getter parses the payload and reaches into a nested property each time it is read, so a malformed payload raises rather than yielding nothing.
Does it have options?+
None. It takes the standard view widget props and reads everything from the record.
Which versions have it?+
Odoo 17 onwards in this form, and byte-identical on the Odoo 20 development branch.

An accounting setup you will not have to redo

Chart of accounts, taxes and journals are cheap to configure once and expensive to correct later. We implement Odoo Accounting properly the first time, on versions 16 through 19.

Book a free consultation

How this page was produced

The dashboard payload parse, the nested onboarding steps lookup, the named step action call and the journal identifier passed as context were read from the accounting onboarding source on the Odoo 19.0 branch. Version coverage comes from comparing the file across the 17.0 and 18.0 branches and its absence on 16.0, plus a byte comparison against the public development branch. Spotted an error? Tell us and we will correct the page.