Skip to main content
Xero Streams requires a connected Xero source. If you haven’t set that up yet, start there first.

Overview

Once your Xero organisation is connected, ChartCastr receives webhook events from Xero in real-time and forwards them to your configured Slack channels instantly — no polling, no delay. This complements your Xero Pulses (scheduled financial charts) by giving you immediate visibility into individual accounting events as they happen.
Xero PulsesXero Streams
What you getP&L, cash, and receivables charts on a scheduleInstant notification per event
WhenDaily, weekly, or custom cronThe moment the event fires in Xero
AI summaryYes — trend analysis + financial contextNo (single event notification)
Best forWeekly finance reviews, trend trackingReal-time ops alerts, new invoice notifications

Supported Events

EventTrigger
New InvoiceAn invoice is created in Xero (any status)
Invoice UpdatedAn invoice is updated, approved, or marked as paid
New ContactA new contact is created in Xero
Contact UpdatedAn existing contact is modified or archived
New Credit NoteA credit note is created
Credit Note UpdatedA credit note is updated or applied to an invoice
You can route any combination of these to any Slack channel. For example:
  • #finance → New Invoice + Invoice Updated + New Credit Note
  • #ops → New Contact + Contact Updated
  • #accounts → all events

What Gets Sent to Slack

Each Slack notification includes:
  • Event type and emoji — e.g. :receipt: New Invoice Created
  • A direct link to the record in Xero — click through to view the full invoice, contact, or credit note without leaving Slack
  • Timestamp of when the event occurred in Xero
  • Footervia ChartCastr Streams · Xero
Xero’s webhook payloads are intentionally minimal. Xero sends only the resource ID, event type, and timestamp — not the invoice amount, contact name, or other record details. The notification links directly to the record in Xero where you can see the full details. This is a Xero platform constraint, not a ChartCastr limitation.

Example notifications

New invoice created:
📄 New Invoice Created
Invoice: View in Xero →
Time: 24 Feb 2026, 3:45 pm
via ChartCastr Streams · Xero
Contact updated:
✏️ Contact Updated
Contact: View in Xero →
Time: 24 Feb 2026, 9:12 am
via ChartCastr Streams · Xero
Credit note created:
💸 New Credit Note
Credit Note: View in Xero →
Time: 23 Feb 2026, 2:30 pm
via ChartCastr Streams · Xero

Setup

1

Connect your Xero organisation

Go to Sources → Xero and complete the OAuth flow. ChartCastr requests read-only access to accounting reports and contacts — no write permissions.
2

Open Streams

Navigate to Streams in your dashboard. If Xero is connected and you have Slack set up, you’ll see the Xero stream configuration UI alongside any other sources.
3

Configure topics per channel

In the By Channel tab, click any Slack channel to choose which Xero events it receives. In the By Source tab, click any event type to see and edit which channels it routes to.

Deduplication

ChartCastr deduplicates Xero webhook events using a key derived from the tenant ID, event sequence, and resource ID. If Xero retries a delivery (which it does on non-2xx responses), the duplicate event is silently dropped.

Intent to Receive Validation

When you first enable Xero webhooks, Xero sends a validation request with an empty events array. ChartCastr handles this automatically — it verifies the HMAC signature and responds with 200 OK. No action is required on your part.

Streams as Context for Xero Pulses

When a notable Xero event arrives via a Stream (e.g. a large new invoice), ChartCastr stores it as context attached to that moment in time. When your next Xero Pulse delivers your weekly P&L chart, the AI can surface that event in its analysis:
“Revenue this week included a significant invoice created on Wednesday — this aligns with the spike visible in the weekly chart.”
This is automatic — no manual notes required. The stream event is captured, timestamped, and made available to the AI when it runs your next Pulse.
For the best context capture, make sure you have AI summaries enabled on your Xero Pulse connection. Without AI, stream context is stored but not surfaced in delivery.