This workflow corresponds to n8n.io template #7230 — we link there as the canonical source.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "HryakGwRjy2LO1wa",
"name": "Real-Time QuickBooks Invoice Sync to Slack",
"tags": [],
"nodes": [
{
"id": "4cbf005e-2368-4c6d-b3ab-e3530953ad40",
"name": "QuickBooks Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
120,
900
],
"parameters": {
"path": "quickbooks-invoice",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 1
},
{
"id": "0537ea5b-7013-4190-97ae-6e54501049bc",
"name": "Code",
"type": "n8n-nodes-base.code",
"position": [
1300,
900
],
"parameters": {
"jsCode": "return items.map(item => {\n return {\n json: {\n ID: item.json.Id,\n Domain: item.json.domain,\n \"Customer Name\": item.json.CustomerRef?.name || \"\",\n \"Due Date\": item.json.DueDate || \"\"\n }\n };\n});\n"
},
"typeVersion": 2
},
{
"id": "edb8d672-8327-4218-810e-17fc6a24d35f",
"name": "Get an invoice",
"type": "n8n-nodes-base.quickbooks",
"position": [
740,
900
],
"parameters": {
"resource": "invoice",
"invoiceId": "={{ $json.body.eventNotifications[0].dataChangeEvent.entities[0].id }}"
},
"typeVersion": 1
},
{
"id": "75b72ba9-98a1-4369-a930-2189e3cead72",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-40
],
"parameters": {
"color": 3,
"width": 480,
"height": 360,
"content": "## \ud83d\udee0\ufe0f Prerequisites\n\nBefore running this workflow, make sure the following are set up:\n\n1. **QuickBooks Webhook Configuration** \n - Connect the **production URL** of your webhook to the **Intuit Developer Portal** for your specific company. \n - Ensure **Invoice** events are subscribed and activated (e.g., create, update, delete).\n\n2. **Slack account Integration** \n - Connect your **Slack client credentials**. \n\n\nOnce these are in place, your workflow will seamlessly capture and log every invoice change in real time. \ud83d\ude80\ud83d\udcca\n"
},
"typeVersion": 1
},
{
"id": "ca26318b-5b28-4f13-b46e-ec7c6e055579",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-60,
1040
],
"parameters": {
"width": 380,
"height": 360,
"content": "### Step 1: Webhook Trigger Activated! \ud83e\ude9d\ud83d\udce2\n\nThis node is the **starting point** of the workflow.\n\nIt listens for **invoice changes in QuickBooks**\n\nWhat it does:\n\n- \ud83d\udce1 Captures the event in real time from QuickBooks.\n- \ud83d\udce6 Passes the invoice data into the workflow instantly.\n- \ud83d\udd04 Eliminates the need for manual checks or periodic polling.\n"
},
"typeVersion": 1
},
{
"id": "de869e01-8b5d-40f6-a441-367ed61d32cd",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
560,
480
],
"parameters": {
"color": 5,
"width": 460,
"height": 400,
"content": "### Step 2: Invoice Data Fetcher \ud83d\udcc4\ud83d\udd0d\n\nThis node uses the **Get an Invoice** operation to pull full details of the invoice from QuickBooks.\n\nWhy this step is important:\n\n- \u2705 Retrieves complete and up-to-date invoice information.\n- \ud83d\udcca Captures fields like invoice number, date, customer.\n- \ud83e\uddfe Ensures the Google Sheet reflects the exact state of the invoice at the moment of the event.\n\nIt\u2019s the step that turns a simple event notification into a fully detailed record. \ud83d\udce5\u2728\n"
},
"typeVersion": 1
},
{
"id": "9e919726-2e33-4d1a-90af-ce811a5435c0",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1140,
1040
],
"parameters": {
"color": 3,
"width": 420,
"height": 320,
"content": "### Step 3: JSON Formatter \ud83d\udee0\ufe0f\ud83d\udce6\n\nThis **Code** node takes the raw invoice data from QuickBooks and formats it into a clean, structured JSON object\u2014ready to be sent to Slack channel\n\nWhat it does:\n\n- \ud83e\uddf9 Extracts only the necessary fields (e.g., id, domain, Customer Name, Due Date).\n- \ud83d\udd04 Converts the data into the correct order and structure for the message.\n- \ud83d\udcd0 Ensures consistent formatting so every message in the channel stays organized.\n\n"
},
"typeVersion": 1
},
{
"id": "7e01de38-6b16-48fa-b125-dd0da09472de",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1700,
440
],
"parameters": {
"color": 6,
"width": 540,
"height": 440,
"content": "### Step 4: Slack Message Generator \ud83d\udcac\u26a1\n\nThis node creates a **custom message** to notify your Slack channel about the new or updated invoice.\n\n**Sample message format**: \n> Invoice having ID: `160` having the Domain: `QBO` for the customer `Rondonuwu Fruit and Vegi` which is due on `2025-09-07` has been generated successfully.\n\nWhat it does:\n\n- \ud83e\udde0 Dynamically fills in invoice details (ID, Domain, Customer Name, Due Date).\n- \ud83d\udce2 Prepares a human-readable message for instant team updates.\n- \u2705 Keeps everyone in the loop without having to check QuickBooks manually.\n\nClear, concise, and delivered straight to your Slack workspace. \ud83d\udce1\n"
},
"typeVersion": 1
},
{
"id": "0bd08387-d175-44f4-8f83-d37792c76de0",
"name": "Send a message",
"type": "n8n-nodes-base.slack",
"position": [
1960,
900
],
"parameters": {
"text": "=Invoice having ID: {{ $json.ID }} having the Domain: {{ $json.Domain }} for the customer {{ $json[\"Customer Name\"] }} which is due on {{ $json[\"Due Date\"] }} has been generated successfully\n",
"select": "channel",
"blocksUi": "=[\n {\n \"type\": \"section\",\n \"text\": {\n \"type\": \"mrkdwn\",\n \"text\": \"Invoice having ID: {{ $json.ID }} having the Domain: {{ $json.Domain }} for the customer {{ $json['Customer Name'] }} which is due on {{ $json['Due Date'] }} has been generated successfully\"\n }\n }\n]\n",
"channelId": {
"__rl": true,
"mode": "list",
"value": "{YOUR_SLACK_CHANNEL_ID}",
"cachedResultName": "n8nmessages"
},
"messageType": "block",
"otherOptions": {},
"authentication": "oAuth2"
},
"typeVersion": 2.3
},
{
"id": "33917945-18e9-4a9a-8bf2-9bb131838de5",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1880,
1120
],
"parameters": {
"color": 3,
"width": 420,
"height": 320,
"content": "### Get in Touch\n\nPlease feel free to reachout to us, if you need any help in settin up this workflow.\n\nWe can also help customize workflow pet the use-case. \n\nReach out us at: getstarted@intuz.com\n\nWebsite: https://www.intuz.com/\n\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "51ee5907-ffb1-46fe-8ea9-cda24f3190a9",
"connections": {
"Code": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"Get an invoice": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"QuickBooks Webhook": {
"main": [
[
{
"node": "Get an invoice",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
It actively monitors QuickBooks and, upon detecting a new invoice, immediately sends a detailed alert to your chosen Slack channel.
Source: https://n8n.io/workflows/7230/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow automates the entire process of receiving a product/service order, checking or creating a customer in QuickBooks Online (QBO), generating an invoice, and emailing it — all triggered by a
Tired of the standard, boring invoices from QuickBooks Online? This workflow completely automates the process of creating beautiful, custom-branded PDF invoices and emailing them directly to your clie
Automated QuickBooks Invoice to Custom PDF & Email
It instantly syncs new QuickBooks invoices to Google Sheets, using specific invoice data or keywords as triggers to ensure your financial records are always accurate and up-to-date.
It automatically saves new QuickBooks invoice PDFs directly into Google Drive, creating a reliable backup system. For perfect organization, the workflow uses keywords from the invoice, like the client