The moment it happens
See every new invoice in Slack
Each invoice created in QuickBooks shows up in Slack with customer, amount and due date.
- Runs
- The moment it happens
- Apps
- QuickBooks
- AI
- Not needed
- Access
- com.intuit.quickbooks.accounting
Send this to your assistant
Create a ClickRuntime automation: whenever an invoice is created in QuickBooks, post the customer, total and due date to #invoices in Slack.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
In a business where invoices are created by several people, such as account managers, a billing clerk and recurring templates, nobody has a full view of what is being billed. A sales lead cannot tell whether the customer they just closed was invoiced, and an owner learns about a large invoice only when the customer replies with questions.
The moment an invoice is created in QuickBooks, ClickRuntime receives the notification, fetches the invoice details and posts to Slack the customer name, invoice number, total and due date. Nothing is polled on a timer, so the post appears right when the record does, including those generated by recurring transactions.
It is useful for companies where billing is shared across a team and others rely on knowing what has gone out, including sales leads waiting to hear that a new customer has been billed.
What you get out of it
Sales confirm that billing followed the deal
A rep who closed a contract can see the invoice appear in the channel. That removes the follow-up message to finance asking whether the new customer has been billed. Nobody has to chase finance for status.
Billing mistakes are visible to colleagues
A wrong amount or a missing discount is more likely to be noticed when more people can see the invoice go out. Quick corrections avoid awkward credit memos and confused customers.
Recurring invoices become visible
Templates in QuickBooks create invoices without anyone touching them. Seeing each one in Slack proves the schedule ran, and shows quickly if one was skipped or created for the wrong customer.
A shared log of billing activity
The channel history becomes a lightweight list of what was billed and when. During a month-end close, you can scan it to confirm nothing is missing from the sales you expected to invoice.
Collections begin from a known date
Everyone sees the due date at creation. A customer success manager can plan a check-in near that date, so a payment is nudged before it is late, not chased afterward.
How it works
What happens, step by step
When an invoice is created in QuickBooks, QuickBooks tells ClickRuntime straight away.
ClickRuntime looks up the invoice to find the customer, the amount and the due date.
A message goes to your #invoices Slack channel with those details.
Before it runs live
- Connect QuickBooks
- Paste your automation's link into the other app's webhook settings
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other QuickBooks steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_event, credentials, http, notify
REALM_ID = "1234567890"
API = f"https://quickbooks.api.intuit.com/v3/company/{REALM_ID}"
def qb(method, path, **kw):
headers = {"Authorization": f"Bearer {credentials.connection('quickbooks', 'company')}", "Accept": "application/json"}
resp = http.request(method, f"{API}{path}", headers=headers, params={"minorversion": 73, **kw.pop("params", {})}, **kw)
resp.raise_for_status()
return resp.json()
def query(sql):
return qb("GET", "/query", params={"query": sql})["QueryResponse"]
@on_event
def handle(event):
posted = 0
for note in event.json.get("eventNotifications", []):
for entity in note["dataChangeEvent"]["entities"]:
if entity["name"] != "Invoice" or entity["operation"] != "Create":
continue
inv = qb("GET", f"/invoice/{entity['id']}")["Invoice"]
notify.slack(f"🧾 Invoice #{inv['DocNumber']} for {inv['CustomerRef']['name']}: "
f"${inv['TotalAmt']:,.2f}, due {inv['DueDate']}", channel="#invoices")
posted += 1
return {"posted": posted}FAQ
Common questions
Does the alert fire when an invoice is edited?
Will it include invoices generated by recurring templates?
Can I post to different channels by customer or amount?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Invoice new customers straight from your order form
Each order or job request becomes a QuickBooks customer and an invoice, sent by QuickBooks, with a confirmation to you.
See how it worksTurn quote requests into QuickBooks estimates
Every quote request or recorded sale becomes an estimate or sales receipt, and you get its number by email.
See how it worksPost to Slack when a customer pays
The moment a payment is recorded, Slack shows who paid and how much.
See how it worksKeep exploring
Set up “See every new invoice in Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.