This workflow corresponds to n8n.io template #8431 — we link there as the canonical source.
This workflow follows the Agent → Google Sheets recipe pattern — see all workflows that pair these two integrations.
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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "421fef2b-90cb-496d-8dd4-b613e10e9fe8",
"name": "Append row in sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
528,
0
],
"parameters": {
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "1f16c6d5-fc5a-4ff6-b77b-f3bcc60040fc",
"name": "Send a message",
"type": "n8n-nodes-base.slack",
"position": [
752,
0
],
"parameters": {
"text": "=---\nInvoice date: {{ $json.invoice_date }}\nBilling to: {{ $json['billing to'] }}\nEmail: {{ $json.email }}\nTotal Amount: {{ $json.total_amount }}\nDue date: {{ $json.due_date }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C09ECEMB012",
"cachedResultName": "invoice"
},
"otherOptions": {}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.3
},
{
"id": "00111f6b-fd0b-49d9-80f6-3f0ca060de18",
"name": "Structure Output",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
312,
224
],
"parameters": {
"jsonSchemaExample": "[{\n\t\"billing to\": \"Toshiki Hirao\",\n\t\"total_amount\": \"1000\",\n \"invoice_date\": \"2025/04/29\",\n \"due_date\" : \"2025/05/29\",\n \"email\": \"user@example.com\"\n}]\n"
},
"typeVersion": 1.3
},
{
"id": "492e5b93-bde0-4335-843e-0f63ba151b53",
"name": "AI model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
184,
224
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "gpt-4o"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "abc9bc40-d167-41e7-921b-1e5d8afd6810",
"name": "Receive invoice pdf",
"type": "n8n-nodes-base.slackTrigger",
"position": [
-496,
0
],
"parameters": {
"options": {},
"trigger": [
"message"
],
"channelId": {
"__rl": true,
"mode": "list",
"value": "C09ECEMB012",
"cachedResultName": "invoice"
}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"notesInFlow": false,
"typeVersion": 1
},
{
"id": "1be006ae-9577-413f-be7d-3b3c82945b7b",
"name": "Fetch the pdf",
"type": "n8n-nodes-base.httpRequest",
"position": [
-272,
0
],
"parameters": {
"url": "={{ $json.files[0].url_private_download }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "slackApi"
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "e4b2917c-dd4b-47f9-a16d-3b234b548f0d",
"name": "Extract information from pdf",
"type": "n8n-nodes-base.extractFromFile",
"position": [
-48,
0
],
"parameters": {
"options": {},
"operation": "pdf",
"binaryPropertyName": "=data"
},
"typeVersion": 1
},
{
"id": "b75eb6e0-6daa-436f-a415-1c86a455cc0e",
"name": "Extract invoice information",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
176,
0
],
"parameters": {
"text": "=please read and understand the input data({{ $json.text }}). I would like you to extract billing to, email, total amount, invoice date and due date. ",
"options": {
"systemMessage": ""
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.1
},
{
"id": "54cacdd2-806a-40d5-9e3a-986b9d042dfc",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1056,
-144
],
"parameters": {
"width": 464,
"height": 1024,
"content": "## How it works\n1. Receive invoice in Slack \u2013 When a PDF invoice is uploaded to a designated Slack channel, the workflow is triggered.\n2. Fetch the PDF \u2013 The file is downloaded automatically for processing.\n3. Extract data from PDF \u2013 Basic text extraction is performed to capture invoice content.\n4. AI-powered invoice parsing \u2013 An AI model interprets the extracted text and structures essential fields such as company name, invoice number, total amount, invoice date, and due date.\n5. Save to Google Sheets \u2013 The structured invoice data is appended as a new row in a Google Sheet for easy tracking and reporting.\n6. Slack confirmation \u2013 A summary of the saved invoice details is sent back to Slack to notify the team.\n\n## How to use\n1. Import the workflow into your n8n instance.\n2. Connect Slack \u2013 Authenticate your Slack account and set up the trigger channel where invoices will be uploaded.\n3. Connect Google Sheets \u2013 Authenticate with Google Sheets and specify the target spreadsheet and sheet name.\n4. Configure the AI extraction \u2013 Adjust the parsing prompt or output structure to fit your preferred data fields (e.g., vendor name, invoice ID, amount, dates).\n5. Test the workflow \u2013 Upload a sample invoice PDF in Slack and verify that the data is correctly extracted and saved to Google Sheets.\n\n## Requirements\n- An n8n instance (cloud)\n- Slack account with permission to read uploaded files and post messages\n- Google account with access to the spreadsheet you want to update\n- AI integration (e.g., OpenAI GPT or another LLM with PDF parsing capabilities)\n- A designated Slack channel for receiving invoice PDFs"
},
"typeVersion": 1
},
{
"id": "cbb83217-4629-4870-8340-5d65ac37f3b0",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-576,
-352
],
"parameters": {
"width": 576,
"height": 272,
"content": "## Workflow\nAutomate Invoice Extraction from Slack to Google Sheets with GPT Model\n\n## Introduction\nManaging invoices manually can be time-consuming and error-prone. This workflow automates the process by extracting key invoice details from PDFs shared in Slack, structuring the information with AI, saving it to Google Sheets, and sending a confirmation back to Slack. It\u2019s a seamless way to keep your financial records organized without manual data entry."
},
"typeVersion": 1
}
],
"connections": {
"AI model": {
"ai_languageModel": [
[
{
"node": "Extract invoice information",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Fetch the pdf": {
"main": [
[
{
"node": "Extract information from pdf",
"type": "main",
"index": 0
}
]
]
},
"Send a message": {
"main": [
[]
]
},
"Structure Output": {
"ai_outputParser": [
[
{
"node": "Extract invoice information",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Append row in sheet": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"Receive invoice pdf": {
"main": [
[
{
"node": "Fetch the pdf",
"type": "main",
"index": 0
}
]
]
},
"Extract invoice information": {
"main": [
[
{
"node": "Append row in sheet",
"type": "main",
"index": 0
}
]
]
},
"Extract information from pdf": {
"main": [
[
{
"node": "Extract invoice information",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleSheetsOAuth2ApiopenAiApislackApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Managing invoices manually can be time-consuming and error-prone. This workflow automates the process by extracting key invoice details from PDFs shared in Slack, structuring the information with AI, saving it to Google Sheets, and sending a confirmation back to Slack. It’s a…
Source: https://n8n.io/workflows/8431/ — 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 streamlines academic assessment through a multi-agent AI system that interprets rubrics, grades submissions, checks for plagiarism, performs quality moderation, generates feedback, and e
This workflow automates invoice processing directly from your email inbox.
This workflow automates athlete performance monitoring through two parallel pipelines: real-time session analysis triggered by training form submissions, and scheduled weekly performance summaries. De
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
Streamline your HR recruitment process with this intelligent automation that reads candidate emails and resumes, analyzes them using GPT-4, and automatically shortlists or rejects applicants based on