Connect your Odoo

Readout reads your Odoo through a connection that is read-only by default. You’ll give it four things: your Odoo URL, the database name, a username, and an API key.

1. Create an API key in Odoo

In Odoo, use a user with read access to Accounting (Invoicing) and to Sales. Accounting is the one that matters: every report Readout builds is invoiced revenue, read from journal items (account.move.line). Sales access is needed so the sync can also pull your orders. Under that user’s My Profile → Account Security, create a new API key and copy it — Odoo shows it only once.

Tip: use a dedicated reporting user with the minimum access it needs. Read access is enough for every report. If you also want the two push features — sending a customer note back to a contact, and creating a draft quotation — that user needs write access to contacts and quotations as well. A strictly read-only user is fine, but those two buttons will fail with an Odoo permission error.

2. Add the connection in Readout

Open Settings → Odoo connection in the dashboard and fill in the form:

  • Odoo URL — the address only, e.g. https://acme.odoo.com. Nothing after the host: Odoo 17 and later put the web client on /odoo, so the address in your browser probably reads https://acme.odoo.com/odoo — leave that part off. (Readout drops it for you if you paste it, but the field is the address, not the page.)
  • Database — the Odoo database name, e.g. acme-prod. It is not part of the web address, and where you find it depends on how your Odoo is hosted:
    • Odoo Online (yourcompany.odoo.com) — the database is the part before .odoo.com, so yourcompany.
    • Odoo.sh — open your project and pick the branch. The database name is shown on the branch itself (top right, beside the Connect button); it usually looks like yourcompany-branch-1234567. It is not the branch name and not your subdomain.
    • Self-hosted — the name you chose when the database was created. If the server hosts more than one, they are listed on the login screen; if it hosts exactly one, the picker is hidden and you can read it from Settings → Technical → Database Structure, or from the -d value your server starts with.
  • Username — the login of the reporting user
  • Odoo API key — the key you just created

Your API key is encrypted at rest and never shown again — it appears masked, and you only re-enter it if you want to replace it.

3. Test the connection

Press Test connection. Readout runs a live, read-only probe against your Odoo to confirm it can read sales. A green result means you’re good to go; a red result explains what failed (wrong key, unreachable host, or missing sales access).

Afterwards the same check lives under the ⋯ menu beside the connection’s status, where it re-tests the credentials you saved. The button in the form becomes Test these values and appears only once you have typed a new key — it checks what is on screen without saving it, so you can find a wrong value before committing all four.

Troubleshooting

  • Connected, but every report is empty — almost always Accounting access. Readout reports invoiced revenue, so a user who can read Sales but not Invoicing connects successfully and then has nothing to report on. Grant read access to Accounting (Invoicing) and test again.
  • Host unreachable / timeout — double-check the URL (scheme included) and that the instance is publicly reachable.
  • Wrong database — the database name is case-sensitive and separate from the URL. It is the commonest thing to get wrong, because on Odoo.sh it is neither your subdomain nor your branch name — see the list above for where yours is shown.

Next: Billing →