> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Odoo on Vortex IQ

> Monitor store performance, find catalogue and operational problems, and safely apply approved changes to Odoo.

Monitor store performance, find catalogue and operational problems, and safely apply approved changes to Odoo.

[Connect or manage this source](https://app.vortexiq.ai/workbench/settings/sources) · [How connecting works](/integrations/connector-catalogue) · [Create a workflow](https://app.vortexiq.ai/workbench/flows/create?connector=odoo)

<CardGroup cols={5}>
  <Card title="34">
    performance signals
  </Card>

  <Card title="6">
    automated checks
  </Card>

  <Card title="0">
    prepared fixes
  </Card>

  <Card title="0">
    proven workflows
  </Card>

  <Card title="3">
    API operations
  </Card>
</CardGroup>

<Tabs>
  <Tab title="Overview">
    ### What you can achieve

    Capabilities are grouped around merchant outcomes, not API terminology.

    <CardGroup cols={2}>
      <Card title="Protect revenue">
        Find failures, leaks and risks before they cost sales.
      </Card>

      <Card title="Run operations">
        Monitor orders, fulfilment, delivery and settlement.
      </Card>

      <Card title="Customer experience">
        Find storefront, speed, accessibility and journey problems.
      </Card>

      <Card title="Grow revenue">
        Improve discovery, conversion, campaigns and repeat purchase.
      </Card>

      <Card title="Catalogue quality">
        Identify missing, inconsistent or outdated product data.
      </Card>
    </CardGroup>

    ### From connection to verified outcome

    The controlled sequence every capability follows. Nothing changes a connected system without the approval step.

    <Steps>
      <Step title="Connect">
        Authorise the source. Scopes are shown before access is granted.
      </Step>

      <Step title="Monitor">
        Watch the signals against your own baselines, not universal defaults.
      </Step>

      <Step title="Detect">
        Run checks and gather evidence specific to your store.
      </Step>

      <Step title="Recommend">
        Explain what happened, why it matters and the proposed action.
      </Step>

      <Step title="Approve">
        You review scope, risk and reversibility before anything changes.
      </Step>

      <Step title="Execute">
        Apply through governed connector operations.
      </Step>

      <Step title="Verify">
        Confirm the intended result and keep the receipt.
      </Step>
    </Steps>

    No changes are made without the configured approval policy. Read-only operations do not modify the connected system; schedules, access scopes, API usage and data handling remain governed by Vortex IQ controls.
  </Tab>

  <Tab title="Monitor (34)">
    ### Monitor performance

    34 performance signals. Open an outcome to see its signals and how each one alerts. Read-only operations do not modify the connected system.

    <AccordionGroup>
      <Accordion title="Protect revenue (13 signals)">
        | Signal                                           | Alert behaviour   | What it tracks                                                                                                    |
        | ------------------------------------------------ | ----------------- | ----------------------------------------------------------------------------------------------------------------- |
        | **Active Ad Spend on Out-of-Stock Products**     | Alert band 1 / 5  | Pause immediately - spend on products Odoo says can't ship. Single-DB stock makes this exact.                     |
        | **At-Risk (Churn) Customers**                    | Merchant rule     | Customers whose last sale.order is older than their typical cadence - win-back targets.                           |
        | **Confirmed Orders Missing Posted Invoice**      | Merchant rule     | Revenue recognised in commerce but never invoiced in the books - VAT/tax base + cash-flow understated.            |
        | **Draft vs Confirmed Order Mix**                 | Watch only        | sale.order state split (draft/sent vs sale/done). High draft share = abandoned quotes or stuck checkout.          |
        | **Email Share of Confirmed Revenue**             | Merchant rule     | How much realised Odoo revenue email drives - falling share = lifecycle programme decay.                          |
        | **Low-Stock Products**                           | Merchant rule     | Products with available\_quantity below the configured reorder point - restock before stockout.                   |
        | **Marketplace / Ecom Price-Title Drift vs Odoo** | Merchant rule     | Catalogue divergence between Odoo (source of record) and external channels - pricing leaks + brand inconsistency. |
        | **Order Cancellation Rate**                      | Merchant rule     | sale.order state=cancel / total. Spikes flag payment, stock, or fraud-hold problems.                              |
        | **Out-of-Stock Products**                        | Merchant rule     | Published products with available\_quantity \<= 0 in stock.quant. Lost-sale exposure on the storefront.           |
        | **Products Missing Image**                       | Merchant rule     | Published product.product rows with no image\_1920 - conversion + SEO leak on the storefront.                     |
        | **Products with Negative On-Hand**               | Merchant rule     | stock.quant rows with quantity \< 0 - oversell or stock-move integrity failure that becomes a refund.             |
        | **Refund / Credit Note Rate**                    | Merchant rule     | account.move out\_refund value / out\_invoice value. Rising = returns or fulfilment quality problem.              |
        | **Repeat Ecom Customers Absent from Odoo**       | Alert band 0 / 10 | Sync gap - repeat buyers invisible to Odoo CRM/invoicing means broken tax lines + missed win-back.                |
      </Accordion>

      <Accordion title="Grow revenue (9 signals)">
        | Signal                              | Alert behaviour   | What it tracks                                                                                                     |
        | ----------------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------ |
        | **New vs Repeat Customers**         | Watch only        | res.partner customer\_rank + sale.order history split. Repeat share is the retention pulse.                        |
        | **Orders Stuck in Draft**           | Merchant rule     | Confirmed-intent orders that never progressed past draft/sent - payment or stock hold blocking revenue.            |
        | **Revenue Trend**                   | Alert band 0 / -5 | Daily confirmed-revenue series over 90 days from date\_order.                                                      |
        | **Revenue by Company**              | Watch only        | Confirmed revenue split by company\_id for groups running several legal entities in one Odoo DB.                   |
        | **Revenue by Currency**             | Watch only        | Confirmed revenue split by currency\_id for multi-currency groups.                                                 |
        | **Revenue by Payment Method**       | Watch only        | Paid invoice value grouped by payment journal/method. Enterprise Accounting.                                       |
        | **Sale Order Count**                | Watch only        | Count of confirmed sale.order rows in window. Pairs with revenue + AOV for the exec pulse.                         |
        | **Top Customers by Lifetime Spend** | Watch only        | res.partner ranked by summed confirmed sale.order amount\_total.                                                   |
        | **Total Revenue (confirmed)**       | Alert band 0 / -5 | Sum of amount\_total on sale.order where state in (sale,done). Default-renders today; toggles 7/30/90-day windows. |
      </Accordion>

      <Accordion title="Run operations (5 signals)">
        | Signal                                  | Alert behaviour   | What it tracks                                                                                       |
        | --------------------------------------- | ----------------- | ---------------------------------------------------------------------------------------------------- |
        | **Average Order Value**                 | Alert band 0 / -5 | amount\_total summed / confirmed order count over the window.                                        |
        | **Customer Invoice Past Due**           | Alert band 5 / 15 | account.move customer invoices over their invoice\_date\_due and still owing - collections worklist. |
        | **Inventory Went Negative**             | Merchant rule     | Live oversell signal - surfaces the product + location the instant on-hand crosses below zero.       |
        | **Products Missing Internal Reference** | Merchant rule     | product.product with empty default\_code (SKU) - breaks every cross-channel SKU join and stock sync. |
        | **Slow-Moving Inventory Value (>90d)**  | Merchant rule     | On-hand value of products with no stock-move (sale) in 90 days - tied-up working capital.            |
      </Accordion>

      <Accordion title="Customer experience (5 signals)">
        | Signal                               | Alert behaviour         | What it tracks                                                                                                                                          |
        | ------------------------------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
        | **Invoiced vs Paid**                 | Watch only              | account.move out\_invoice posted total vs payment\_state=paid total. Widening gap = collections lag. Enterprise Accounting.                             |
        | **Overdue Receivables**              | Alert band 1000 / 10000 | Sum of amount\_residual on posted out\_invoice where invoice\_date\_due \< today and not paid.                                                          |
        | **Period Close Overdue**             | Alert band 0 / 5        | res.company.fiscalyear\_lock\_date vs the oldest calendar month it hasn't yet covered - days the books have gone unclosed past that month's end.        |
        | **Unbalanced Draft Journal Entries** | Alert band 0 / 5        | account.move.line debit/credit summed per DRAFT account.move (move\_type=entry) - Odoo only enforces debit==credit at posting, so an unbalanced draft c |
        | **Unposted Journal Entries**         | Alert band 0 / 50       | Distinct DRAFT account.move (move\_type=entry) journal entries - Odoo validates debit==credit only at post time, so entries can sit unposted (and unnot |
      </Accordion>

      <Accordion title="Catalogue quality (2 signals)">
        | Signal                           | Alert behaviour | What it tracks                                                                                     |
        | -------------------------------- | --------------- | -------------------------------------------------------------------------------------------------- |
        | **Products Missing Description** | Merchant rule   | Published products with empty description\_sale - thin content, weak organic ranking.              |
        | **Products Missing Price**       | Merchant rule   | Published products with list\_price = 0 or null - unsellable or mis-priced rows on the storefront. |
      </Accordion>
    </AccordionGroup>
  </Tab>

  <Tab title="Audit (6)">
    ### Audit risks and opportunities

    A fix status appears only where the action, inputs, approval, verification and recovery controls are mapped. Candidate remediations are never executable. Open a check for the detail.

    <AccordionGroup>
      <Accordion title="Journal entries failed to post (debit != credit)">
        **Severity** critical · **Outcome** Protect revenue · **Fix status** Report only

        An entry where debits and credits do not match cannot post to a correct ledger; if it exists at all, it means something upstream (an import, an integration, a manual entry) produced a genuinely broken transaction that accounting will have to find and fix by hand before the books balance.

        Vortex IQ detects and explains this; resolution is manual, with evidence and recommended steps.

        Reference: `ERP-GL-002`
      </Accordion>

      <Accordion title="AR aging on 60+ day buckets above threshold">
        **Severity** high · **Outcome** Run operations · **Fix status** Report only

        More than 15% of receivables are sitting in the 60+ day bucket. The longer an invoice goes unpaid, the less likely it is ever collected in full, so this is not just a cash-flow timing issue, a growing 60+ day bucket is a leading indicator of bad debt building up.

        Vortex IQ detects and explains this; resolution is manual, with evidence and recommended steps.

        Reference: `ERP-FIN-001`
      </Accordion>

      <Accordion title="ERP-vs-ecom inventory variance > 5% on SKUs with active orders">
        **Severity** high · **Outcome** Protect revenue · **Fix status** Report only

        Stock levels disagree between the ERP and the storefront by more than 5% on SKUs that currently have active orders. That gap risks selling inventory that is not really there (an oversell) or holding stock back that is actually available, on exactly the products customers are ordering right now.

        Vortex IQ detects and explains this; resolution is manual, with evidence and recommended steps.

        Reference: `ERP-INV-001`
      </Accordion>

      <Accordion title="Period close past deadline">
        **Severity** high · **Outcome** Run operations · **Fix status** Report only

        The accounting period is more than 5 days past its close deadline and still open. Every day it stays open is another day transactions can still be edited or added to a period that reporting, tax filing and any lender or investor reporting expects to be final.

        Vortex IQ detects and explains this; resolution is manual, with evidence and recommended steps.

        Reference: `ERP-CLOSE-001`
      </Accordion>

      <Accordion title="Unposted journal entries >50 (GL hygiene)">
        **Severity** high · **Outcome** Run operations · **Fix status** Report only

        More than 50 journal entries are sitting unposted. Every report pulled from the general ledger while this backlog exists, profitability, cash position, tax figures, is working from incomplete books, and the larger the backlog grows the harder it gets to reconcile at period close.

        Vortex IQ detects and explains this; resolution is manual, with evidence and recommended steps.

        Reference: `ERP-GL-001`
      </Accordion>

      <Accordion title="Ecom customers absent from ERP customer master after 7d">
        **Severity** medium · **Outcome** Run operations · **Fix status** Report only

        Customers who ordered over a week ago still are not in the ERP's customer master. Anything downstream that depends on that record, invoicing, tax reporting, credit terms, customer-level reporting, is working with an incomplete customer base until this syncs.

        Vortex IQ detects and explains this; resolution is manual, with evidence and recommended steps.

        Reference: `ERP-CUST-001`
      </Accordion>
    </AccordionGroup>

    #### Build your own automated fixes

    Turn any finding into an automated fix with a Vortex IQ workflow: **over 13,000 read and write operations across more than 200 connectors** are available as building blocks, with approval, verification and rollback on every change.
  </Tab>

  <Tab title="Automate">
    ### Automate approved work

    Vortex IQ is integrated with **0 read** and **3 write** operations across jsonrpcs, xmlrpccommons, xmlrpcobjects on Odoo. Combine them with anything from the **over 13,000 operations across more than 200 connectors** to automate the work in your own words.

    Changes follow your configured approval policy: the target, proposed change, affected records, risk, reversibility and verification plan are shown before execution.

    [Create a workflow](https://app.vortexiq.ai/workbench/flows/create?connector=odoo)

    #### Ready to build your first Odoo workflow

    Pick a trigger, add the operations above as steps, and every step that changes data pauses for your approval. Monitoring and audits are live now and can start any workflow you build.

    <Accordion title="Browse the operations you can build with">
      | Resource      | Read operations | Write operations |
      | ------------- | --------------- | ---------------- |
      | jsonrpcs      | 0               | 1                |
      | xmlrpccommons | 0               | 1                |
      | xmlrpcobjects | 0               | 1                |

      Signed-in users see the full catalogue in the workflow builder, filtered to the sources they have connected.
    </Accordion>
  </Tab>
</Tabs>
