Weekly Business Metrics Report to Slack

Get critical KPIs delivered to your team every Monday morning.

Nora compiles weekly metrics from across your business (revenue, customer acquisition, support response time, shipping rate) and posts a beautiful summary to Slack with trends and alerts.

Every Monday at 8:00 AM, Nora queries Odoo via XML-RPC to pull the previous week's sales orders, total invoiced amounts, and overdue balances. It calculates the differences between these figures and the prior week, as well as the same week last year. Nora formats the data using Slack Block Kit and posts the summary to a designated channel.

The operations lead reads the threaded report to identify areas needing immediate attention. They decide whether to follow up on specific overdue accounts or adjust short-term sales targets based on the raw numbers. The person who previously spent Monday morning exporting CSVs and formatting tables now starts the week reviewing the data and initiating discussions with the team directly in the Slack thread.

Runs weekly on monday at 8:00 am using Slack and Odoo, run by your CEO.

How it works

  1. Triggering the report schedule — Every Monday at 8:00 AM, the cron schedule triggers the automation. Nora connects to the Odoo instance using the stored API key and username to begin the data extraction process.
  2. Querying Odoo sales data — Nora uses XML-RPC to search and list sales orders, invoices, and payment registrations from the past seven days. It aggregates the total revenue, outstanding balances, and new customer counts.
  3. Calculating comparative metrics — Nora queries the same endpoints for the previous week and the corresponding week from the prior year. It calculates the absolute differences in revenue and invoice volume to determine the week-over-week and year-over-year changes.
  4. Handling incomplete data periods — If the Odoo instance returns no sales data for a specific day due to a public holiday or system downtime, Nora notes the zero-value period in the final compilation rather than failing the run.
  5. Formatting the Slack message — Nora structures the aggregated data using Slack Block Kit. It creates a rich message with distinct sections for revenue, outstanding invoices, and customer counts, applying color coding to highlight significant drops in volume.
  6. Posting to the channel — Nora uses the chat.postMessage endpoint to publish the report to the designated metrics channel. It creates a thread under the main message so team members can discuss specific figures and root causes.

What this replaces

The operations manager logs into Odoo every Monday, navigates to the reporting dashboard, and exports the weekly sales and invoice lists as CSV files. They open a spreadsheet, paste the new data, calculate the differences from the previous week, and copy the final table into a Slack message for the leadership team.

Rough estimate rather than a measured figure: about 45 minutes a week, based on 10 minutes to run the Odoo exports, 25 minutes to manipulate the spreadsheet data, and 10 minutes to format and post the Slack message.

What it needs to run

Accounts and plans

Access it asks for

What Nora reads

What Nora writes

When it goes wrong

Who this is for

Worth it if

Not worth it if

A worked example

A commercial printing company running Odoo for sales and invoicing. They process around 200 orders a week. They ask Nora to post a summary of new orders, invoiced totals, and overdue payments to the #leadership-metrics channel every Monday.

Weekly Business Metrics: Oct 16 - Oct 22

Revenue & Sales:
• Total Invoiced: $42,500 (Up $4,100 from last week)
• New Sales Orders: 214 (Down 12 from last week)

Accounts Receivable:
• Overdue Invoices: 18
• Total Overdue Balance: $9,250

Customer Acquisition:
• New Customers Created: 14

Notes: The overdue balance increased by $2,100 compared to the previous period. Five of the overdue invoices belong to Harbour Kitchen Supplies.

Frequently asked questions

How do I change which metrics are included in the report?

You tell Nora in plain language via web chat or WhatsApp. If you decide you want to add total registered payments or remove the new customer count, you send a message explaining the change. Nora updates its query logic and alters the Slack message structure for the following Monday.

Can Nora post the report to a private Slack channel?

Yes. Nora can post to any channel it is invited to. You create the private channel in Slack and add the Nora bot as a member. You then tell Nora the name of the new channel, and it directs the chat.postMessage calls there going forward.

What happens if Odoo goes down during the scheduled run time?

If the Odoo instance is unreachable or returns a 500 error during the 8:00 AM run, Nora will wait and retry the connection. If the server remains unavailable after several attempts, Nora posts a message in the Slack channel explaining that the Odoo data could not be retrieved.

Does Nora store my historical sales data to calculate the comparisons?

No. Nora calculates the week-over-week and year-over-year differences dynamically by querying the Odoo API for the specific historical dates during the run. It holds the data in memory just long enough to perform the arithmetic and format the Slack message, running entirely within your dedicated single-tenant instance.

Connects to

Related automations

Start a 2-week free trial · Browse all automations