by MC Naveen
I wanted a system to monitor website content changes and notify me. So I made it using n8n. Especially my competitor blogs. I wanted to know how often they are posting new articles. (I used their sitemap.xml file) (The below workflow may vary) In the Below example, I used HackerNews for example. Explanation: First HTTP Request node crawls the webpage and grabs the website source code Then wait for x minutes Again, HTTP Node crawls the webpage If Node compares both results are equal if anything is changed. It’ll go to the false branch and notify me in telegram. Workflow: Sample Response:
by Hubschrauber
Summary This template uses the item handling nodes, and expression-support in n8n, without using a Code node, to extract multiple attachments from a GMail (trigger input) message/event, and (conditionally) upload each of them to Google Drive. Note: There is another template titled Get Multiple Attachments from Gmail and upload them to GDrive that does basically the same thing, but it uses a Code node. Details Using Split Out instead of Code The “secret” to how this works is that n8n supports a special input field name $binary that references the entire set of (multiple) binary data sub-elements in a single input item. It may look like an expression, but in this case it is a “fixed” (literal) value used as the Fields to Split Out parameter value. Dealing with names that are prefixed/suffixed with an Index The next challenge with multiple attachments from a GMail message is that each one is still assigned different name like "attachment_0", "attachment_1", etc. This makes it tricky to reference them in a generic way. However, once n8n splits the items out, the binary in each item is always the first (i.e. index-zero / [0]) and ONLY key/value. So, that makes it possible get the key-name and attributes of the corresponding value indirectly with some clever expression syntax. Input Data Field Name -> Expression: {{ $binary.keys()[0] }} - This returns the name, regardless of whether it is "attachment_0", "attachment_1", or whatever else. Attachment file name: -> Expression: {{ $binary.values()[0].fileName }} Attachment file name extension: -> Expression: {{ $binary.values()[0].fileExtension }} Attachment file type: -> Expression: {{ $binary.values()[0].fileType }} Attachment file size (e.g. string "100 kB"): -> Expression: {{ $binary.values()[0].fileSize }} Attachment file size (numeric): -> Expression: {{ $binary.values()[0].fileSize.split(' ')[0].toNumber() }} Attachment mime type: -> Expression: {{ $binary.values()[0].mimeType }} Attachment id (storage GUID): -> Expression: {{ $binary.values()[0].id }} Flow Control Since each of the attachments becomes a single item, it is relatively straightforward to introduce other n8n nodes like If, Switch, or Filter and route each single attachment item into different workflow paths. The template demonstrates how each attachment binary could be routed based on its file size, as an example.
by darrell_tw
Workflow Description This workflow demonstrates how to use the LINE Messaging API to handle two scenarios: Replying to a user's message using a reply token. Sending a push message to a specific LINE user using their user ID. Key Features Webhook Integration: Receives and processes incoming messages from LINE using a webhook. Conditional Logic: Checks if the received event type is a message and handles it accordingly. Reply Message: Automatically responds to the user's message using the LINE reply token. Push Message: Sends a test message to a specific LINE user using their unique user ID. Pre-Configuration To simplify the setup process, create a Header Auth credential in n8n: Name**: Authorization Value**: Bearer {line token} This will authenticate all API requests to the LINE Messaging API. Node Configurations 1.1. Webhook from LINE Message Purpose**: Captures incoming events from the LINE Messaging API. Configuration**: HTTP Method: POST Path: {n8n-webhook-page} 1.2. If Condition Purpose**: Checks if the received event type is message. Configuration**: Condition: {{ $json.body.events[0].type }} equals "message" 1.3. Line: Reply with Token Purpose**: Replies to the user's message using the LINE reply token. Configuration**: Method: POST URL: https://api.line.me/v2/bot/message/reply JSON Body: { "replyToken": "{{ $('Webhook from Line Message').item.json.body.events[0].replyToken }}", "messages": [ { "type": "text", "text": "收到您的訊息 : {{ $('Webhook from Line Message').item.json.body.events[0].message.text }}" } ] } 2.1. Manual Trigger: Test Workflow Purpose**: Triggers the workflow for testing the push message functionality. Configuration**: No additional setup required. 2.2. Edit Fields Purpose**: Prepares the unique LINE user ID for the push message. Configuration**: Field: line_uid: Uxxxxxxxxxxxx 2.3. Line: Push Message Purpose**: Sends a test message to a specific LINE user. Configuration**: Method: POST URL: https://api.line.me/v2/bot/message/push JSON Body: { "to": "{{ $json.line_uid }}", "messages": [ { "type": "text", "text": "推播測試" } ] } 工作流程描述 此工作流程展示如何使用 LINE Messaging API 處理兩種情境: 使用 reply token 回應使用者的訊息。 使用使用者的 user ID 發送 推播訊息。 主要功能 Webhook 整合:透過 Webhook 接收並處理來自 LINE 的訊息。 條件邏輯:檢查接收到的事件類型是否為訊息並進行處理。 回應訊息:使用 LINE 的 reply token 自動回覆使用者的訊息。 推播訊息:使用 LINE User ID 向指定用戶發送測試訊息。 預先設定 為簡化設定流程,請在 n8n 中建立 Header Auth 憑證: 名稱**:Authorization 值**:Bearer {line token} 此設定將用於認證所有 LINE Messaging API 的請求。 節點設定 1.1. Webhook from LINE Message 用途**:接收來自 LINE Messaging API 的事件。 設定**: HTTP 方法:POST 路徑:{n8n-webhook-page} 1.2. If 條件判斷 用途**:檢查接收到的事件類型是否為 message。 設定**: 條件: {{ $json.body.events[0].type }} 等於 "message" 1.3. Line: Reply with Token 用途**:使用 LINE reply token 回應使用者訊息。 設定**: 方法:POST URL:https://api.line.me/v2/bot/message/reply JSON 主體: { "replyToken": "{{ $('Webhook from Line Message').item.json.body.events[0].replyToken }}", "messages": [ { "type": "text", "text": "收到您的訊息 : {{ $('Webhook from Line Message').item.json.body.events[0].message.text }}" } ] } 2.1. 手動觸發:測試工作流程 用途**:測試推播訊息功能。 設定**:無需額外設定。 2.2. Edit Fields 用途**:準備推播訊息所需的 LINE 使用者 ID。 設定**: 欄位: line_uid:Uxxxxxxxxxxxx 2.3. Line: 推播訊息 用途**:向特定 LINE 使用者發送測試訊息。 設定**: 方法:POST URL:https://api.line.me/v2/bot/message/push JSON 主體: { "to": "{{ $json.line_uid }}", "messages": [ { "type": "text", "text": "推播測試" } ] } 完成示意圖 (Storyboard Example):
by Davide
1. How it Works This n8n workflow automates fine-tuning OpenAI models through these key steps: Manual Trigger**: Starts with the "When clicking ‘Test workflow’" event to initiate the process. Downloads a .jsonl file from Google Drive Upload to OpenAI**: Uploads the .jsonl file to OpenAI via the "Upload File" node (with purpose "fine-tune"). Create Fine-tuning Job**: Sends a POST request to the endpoint https://api.openai.com/v1/fine_tuning/jobs with: { "training_file": "{{ $json.id }}", "model": "gpt-4o-mini-2024-07-18" } OpenAI automatically starts training the model based on the provided file. Interaction with the Trained Model**: An "AI Agent" uses the custom model (e.g., ft:gpt-4o-mini-2024-07-18:n3w-italia::XXXX7B) to respond to chat messages. 2. Set up Steps To configure the workflow: Prepare the Training File: Create a .jsonl file following the specified syntax (e.g., travel assistant Q/A examples). Upload it to Google Drive and update the ID in the "Google Drive" node. Configure Credentials: Google Drive: Connect an account via OAuth2 (googleDriveOAuth2Api). OpenAI: Add your API key in the "OpenAI Chat Model" and "Upload File" nodes. Customize the Model: In the "OpenAI Chat Model" node, specify the name of your fine-tuned model (e.g., ft:gpt-4o-mini-...). Update the HTTP request body (Create Fine-tuning Job) if needed (e.g., a different base model). Start the Workflow: Use the manual trigger ("Test workflow") to begin the upload and training process. Test the model via the "Chat Trigger" (chat messages). Integrated Documentation: Follow the instructions in the Sticky Notes to: Properly format the .jsonl (Step 1). Monitor progress on OpenAI (Step 2, link: https://platform.openai.com/finetune/). Note: Ensure the .jsonl file adheres to OpenAI’s required structure and that credentials are valid.
by Samir Saci
Tags: Automation, Finance, Google Sheets, API Note: This workflow uses the Exchange rate API and requires a valid API key. Context I’m a Supply Chain Data Scientist who builds automations to streamline operations, reduce manual tasks, and boost decision-making through real-time data. In this workflow, I automated the task of fetching live currency exchange rates, updating a Google Sheet with the latest values, and archiving historical records — all without writing any code. > Improve your productivity by automating admin tasks with n8n! 📬 For business inquiries, you can add me on LinkedIn Who is this template for? This template is perfect for: Finance teams** tracking multi-currency cashflows Analysts** building dashboards or models requiring updated FX data Anyone working with spreadsheets** who needs up-to-date exchange rates It updates: A live sheet with the latest USD-based exchange rates An archive tab to track historical changes over time How does it work? This workflow runs in N8N and performs the following steps: 🌐 Calls the ExchangeRate API to get the latest rates based on USD 🧠 Extracts and formats key fields: base currency, timestamp, and conversion values 📊 Updates a main Google Sheet with the latest data (using upsert logic) 🗂️ Appends all rates to a second Google Sheet tab for historical tracking You can schedule this workflow to run daily, hourly, or on-demand. What do I need to start? You don’t need to write a single line of code. Prerequisites: A Google Sheet with two tabs: Rate Sheet and Archives (Link of the publicly available example in the template) A valid Exchangerate API key Google Sheets API** connected via OAuth2 Next Steps Use the sticky notes in the workflow to understand how to: Add your Exchangerate API key Map the fields to match your Google Sheet layout Schedule the run frequency using the Cron node Optionally add Slack or email alerts if the base rate changes For more information, check my tutorial: 🎥 Watch My Tutorial 🚀 Want to build finance automation workflows like this? 📬 Let’s connect on LinkedIn Notes You can adapt this template for other currencies by changing the API endpoint This workflow was built using *n8n 1.85.4** Submitted: April 15th, 2025*
by Aayushman Sharma
Sync Youtube Videos with Google Sheets (Part 1 of Youtube comments sentiment analyze automation along with detailed dashboard) This workflow is the first part of a multi-part automation system designed to perform large-scale YouTube comment sentiment analysis alongwith detailed dashboard. It solves the problem of manually tracking new videos across multiple YouTube channels by automatically fetching and organizing video URLs in a Google Sheet, setting the stage for deeper analysis in Part 2. What It Does Reads Channel IDs from Sheet3 of a connected Google Sheet. Fetches the latest videos from each Channel ID using the YouTube Data API. Extracts video URLs and metadata (like title and publish date). Appends the video data to Sheet2 of the same Google Sheet — this sheet is later used by Part 2 for further processing. Part of a Multi-Step System This is Part 1 of a 2-workflow system: Part 1 (this workflow)** populates a sheet with the latest videos from a list of channels. Part 2* reads the video URLs from Sheet2, fetches comments for each video, analyzes their sentiment using *OpenAI**, and stores structured results in Sheet1. 👉 Continue to Part 2 – YouTube Comment Sentiment Analyzer with Google Sheets & OpenAI ✅ Use Cases Monitor and organize new videos from a list of YouTube channels Automate content pipelines for social media teams and analysts Build scalable datasets for comment and sentiment analysis Perfect for creators, agencies, or data analysts managing multiple YouTube accounts 🔧 Apps Used Google Sheets** – To read and write channel/video data YouTube** – To fetch video data from public channels 💡 Why Use This? Manually checking YouTube channels for new content is time-consuming and error-prone. This automation ensures your data stays current and structured — enabling consistent tracking and deeper analysis (especially when paired with Part 2). It brings speed, scale, and automation to your YouTube content operations. How to Customize 1. Modify Trigger Settings Change the Google Sheet (Sheet 3) channel ID entry to track other channels. Use a time-based trigger to fetch new videos regularly, ensuring your data stays up to date. 2. Adjust Output Fields Fetch additional details from YouTube, such as view count, description, or thumbnails. Add custom columns in Sheet 2 for organizing videos by different criteria, such as: "Published Date" "Video Type" "View Count" "Video Description" 3. Extend with Integrations Integrate with other workflows like YouTube Comment Sentiment Analysis (Part 2) for a deeper dive into content analysis. Use filters to fetch videos by certain tags, keywords, or publish dates. 4. Adjust Sheet Structure Modify the structure of Sheet 2 to categorize videos based on criteria like: Channel Video Status (e.g., "Published," "Scheduled") Video Type (e.g., "Tutorial," "Review") 5. Schedule Regular Fetching Set a schedule trigger to fetch videos at regular intervals (e.g., daily or weekly), ensuring new content is automatically added to your sheet. 6. Customize Google Sheet Layout Change the layout of Sheet 2 to better fit your needs. For example, you can add additional columns for
by Udit Rawat
This n8n automation is designed to extract, process, and store content from Notion pages into a Pinecone vector store. Here's a breakdown of the workflow: Notion - Page Added Trigger: The automation starts by monitoring for newly added pages in a specific Notion database. It triggers whenever a new page is created, capturing the page's metadata. Notion - Retrieve Page Content: Once triggered, the automation fetches the full content of the newly added Notion page, including blocks like text, images, and videos. Filter Non-Text Content: The next step filters out non-text content (such as images and videos), ensuring only textual content is processed. Summarize - Concatenate Notion's blocks content: The remaining text content is concatenated into a single block of text for easier processing. Token Splitter: The concatenated text is then split into manageable tokens, which are chunks of text that can be used for embedding. Create metadata and load content: Metadata such as the page ID, creation time, and title are added to the content, making it easy to reference and track. Embeddings Google Gemini: The processed text is passed through a Google Gemini model to generate embeddings, which are numerical representations of the text that capture its semantic meaning. Pinecone Vector Store: Finally, the embeddings, along with the content and metadata, are stored in a Pinecone vector store, making it searchable and ready for use in applications like document retrieval or natural language processing tasks. This workflow ensures that every new page added to the Notion database is processed into a format that can be easily searched and used in machine learning applications. The automation runs every minute to capture new data in real-time, providing an up-to-date and searchable vector database of Notion content. Use Case: This automation converts Notion pages into vector embeddings and stores them in Pinecone for enhanced search and AI-driven insights. It’s ideal for teams using Notion for knowledge management, enabling semantic search and context-based content retrieval. For example, employees can easily find relevant information across documents, and data scientists can use AI models to analyze and summarize the content stored in Notion.
by Sascha
Automating your marketing campaign management process can streamline your workflow and save you valuable time. With the combination of Baserow and n8n, you can efficiently handle your campaign data and seamlessly publish content to your Shopify store. In this workflow template, I demonstrate how to leverage Baserow as a centralized platform for organizing your marketing campaign assets, including copy and images. By utilizing n8n, we automate the process of fetching images and campaign descriptions from Baserow and uploading them directly to your Shopify store. With this automated solution, you can expedite the publishing process, ensuring that your campaigns are launched swiftly across your sales channels. Additionally, this workflow serves as a foundational step towards further automation in campaign management, allowing you to dynamically generate and upload content to your Shopify store with ease. This template will help you: Use n8n to get images for marketing campaigns from Baserow and upload them to your Shopify media library Dynamically inject data from Baserow into a template file Upload a template file to your Shopify theme This template will demonstrate the follwing concepts in n8n: use the Webhook node use the IF node to control the execution flow of the workflow do time calculation using expressions and javascript use the GraphQL node to upload images to your Shopify media files create a dynamic template file for your Shopify theme use the HTTP Reqest node to upload your template file to your Shopify store How to get started? Create a custom app in Shopify get the credentials needed to connect n8n to Shopify This is needed for the Shopify Trigger Create Shopify Acces Token API credentials n n8n for the Shopify trigger node Create Header Auth credentials: Use X-Shopify-Access-Token as the name and the Acces-Token from the Shopify App you created as the value. The Header Auth is neccessary for the GraphQL nodes. You will need a running Baserow instance for this. You can also sign up for a free account at https://baserow.io/ Please make sure to read the notes in the template. For a detailed explanation please check the corresponding video: https://youtu.be/Ky-dYlljGiY
by joseph
🧵 Generate Conversational Twitter/X Threads with GPT-4o AI (n8n Workflow) This workflow uses OpenAI (GPT-4o) and Twitter/X to automatically generate and publish engaging, conversational threads in response to a trigger (e.g., from a chatbot or form). 🚀 What Does It Do? Listens for an incoming message (e.g., via webhook or another n8n input). Uses GPT-4o to craft a narrative-style Twitter thread in a personal, friendly tone. Publishes the first tweet, then automatically posts each following tweet as a reply—building a full thread. 🛠️ What Do You Need to Configure? Before using this template, make sure to set up the following credentials: OpenAI Add your OpenAI API key in the OpenAI Chat Model node. This is used to generate the thread content. Twitter/X Add your Twitter OAuth2 credentials to the First Tweet and Thread Reply nodes. This allows the workflow to publish tweets on your behalf. ✨ Who Is This For? This template is perfect for: Content creators who want to share ideas regularly Personal brands looking to grow their presence Social media managers automating thread creation 🔧 How to Customize It You can easily adjust the tone, structure, or length of the threads by modifying the system prompt in the OpenAI node. For example: To create threads with humor, change the prompt to “Write in a witty and humorous tone.” To tailor it for marketing, prompt it with “Write a persuasive product-focused Twitter thread.” You can also integrate this workflow with: Telegram bots Web forms (e.g., Typeform, Tally) CRM tools or newsletter platforms 📋 Sample Output Prompt sent to the workflow: “Tips for growing on Twitter in 2025” Generated thread: ++Tweet 1:++ Thinking of growing your presence on Twitter/X in 2024? Here's a thread with the most effective strategies that actually work 🧵 ++Reply 1:++ Engage, don’t broadcast Twitter is a conversation platform. Reply to others, quote-tweet, and start discussions instead of just posting links. ++Reply 2:++ Consistency beats virality Tweeting regularly builds trust and visibility. You don't need to go viral — just show up.
by Tom
This workflow uses a number of technologies to track the value of ETFs, stocks and other exchange-traded products: Baserow: To keep track of our investments n8n’s Cron node: To trigger the workflow compiling our daily morning briefing Webscraping: The HTTP Request & HTML Extract nodes to fetch up-to-date prices from the relevant stock exchange and structure this infromation Javascript: We’ll use the Function node to build a custom HTML body with all the relevant information Sendgrid: The Email Service Provider in this workflow to send out our email Thanks to n8n, the steps in this workflow can easily be changed. Not a Sendgrid user? Simply remove the Sendgrid node and add a Gmail node instead. The stock exchange has a REST API? Just throw away the HTML Extract node. Here’s how it works: Data Source In this scenario, our data source is Baserow. In our table, we’ll track all information needed to identify each investment product: We have two text type columns (Name and ISIN) as well as two number type columns (Count and Purchase Price). Workflow Nodes 1. Cron The Cron node will trigger our workflow to run each work day in the morning hours. 2. Baserow The Baserow node will fetch our investments from the database table shown above. 3. HTTP Request Using the HTTP Request node we can fetch live data from the stock exchange of our choice based on the ISIN. This example uses Tradegate, which is used by many German fintechs. The basic approach should also work for other exchanges, as long as they provide the required data to the public. 4. HTML Extract Since our HTTP Request node fetches full websites, we’re using the HTML Extract node to extract the information we’re looking for from each website. If an exchange other than Tradegate is used, the selectors used in this node will most likely need to be updated. 5. + 6. Set The Set nodes helps with setting the exact columns we’ll use in our table. In this case we’re first formatting the results from our exchange, then calculate the changes based on the purchase price. 7. Function Here were using a bit of Javascript magic to build an HTML email. This is where any changes to the email content would have to be made. 8. Sendgrid Finally we send out the email built in the previous step. This is where you can configure sender and recipients. Result The basic email generated by this workflow will look like so:
by Tom
This workflows helps with processing binary data. You'll often have binary objects with keys such as attachment_0, attachment_1, attachment_2, etc. attached to your items, for example when reading an incoming email. This binary data is hard to process because it's not an array you can simply loop through. This workflow solves this problem by providing a Function node that takes all incoming items and all their binary data and then returning a single item for each file with a data key containing your binary file. Incoming binary data: Processed binary data:
by Marth
How It Works ⚙️ This workflow systematically ensures you never miss sending an invoice reminder: Daily Schedule Trigger: ⏰ The workflow starts automatically at a set time each day (e.g., every morning). This ensures continuous monitoring of your invoice statuses. Read Invoice Data (Google Sheets): 📊 The workflow connects to your specified Google Sheet to retrieve a list of all your invoices and their details. Ensure your sheet has required columns like InvoiceID, ClientName, ClientEmail, Amount, DueDate, and Status. Filter & Prepare Reminders (Function): 🧹 This is the core logic. It processes each invoice row: Compares the DueDate with the current date. Identifies invoices that are due soon (e.g., within 3 days) or are already overdue (e.g., up to 7 days past due). Skips invoices marked as 'Paid'. Prepares a custom subject line and email body for each relevant reminder. If Invoices to Remind?: 🚦 This node acts as a gate. If the previous step found any invoices needing reminders, the workflow proceeds. If not, it stops gracefully. Send Invoice Reminder (Gmail): 📧 For each filtered invoice, this node sends a personalized email reminder to the client. The email uses the dynamic subject and body prepared in the 'Filter & Prepare Reminders' step. How to Set Up 🛠️ Follow these steps carefully to get your "Automated Invoice Reminder" workflow up and running: Import Workflow JSON: Open your n8n instance. Click on 'Workflows' in the left sidebar. Click the '+' button or 'New' to create a new workflow. Click the '...' (More Options) icon in the top right. Select 'Import from JSON' and paste the entire JSON code provided in the previous response for this workflow. Configure Daily Schedule Trigger: Locate the 'Daily Schedule Trigger' node (1. Daily Schedule Trigger). Adjust 'interval', 'value', and 'timezone' to your preferred daily reminder time (e.g., every 24 hours at 9 AM in your local timezone). Configure Read Invoice Data (Google Sheets): Locate the 'Read Invoice Data (Google Sheets)' node (2. Read Invoice Data). Credentials: Select your existing Google Sheets OAuth2 credential or click 'Create New' to set one up. Replace YOUR_GOOGLE_SHEETS_CREDENTIAL_ID with the actual ID or name of your credential from your n8n credentials. Sheet ID: Replace YOUR_GOOGLE_SHEET_ID with the actual ID of your Google Sheet where invoice data is stored. Range: Ensure the 'range' (e.g., Invoices!A:F) correctly covers all your invoice data. Crucially, ensure your Google Sheet has columns with exact names: InvoiceID, ClientName, ClientEmail, Amount, DueDate (in a parsable date format like YYYY-MM-DD), and Status (e.g., 'Pending', 'Paid'). Configure Filter & Prepare Reminders (Function): Locate the 'Filter & Prepare Reminders' node (3. Filter & Prepare Reminders). Date & Field Names: Review the functionCode inside the node. Adjust the variable names (e.g., invoice.InvoiceID, invoice.DueDate) if your Google Sheet uses different column headers than the defaults assumed in the code. Reminder Window: You can modify remindBeforeDays (e.g., 3 days before) and remindAfterDays (e.g., 7 days after) to adjust how many days before/after the due date reminders are sent. Email Content: Modify the subjectPrefix and bodyText within the code to customize the reminder message for 'due soon' and 'overdue' invoices. Configure Send Invoice Reminder (Gmail): Locate the 'Send Invoice Reminder (Gmail)' node (5. Send Invoice Reminder). Credentials: Select your existing Gmail OAuth2 credential or click 'Create New'. Replace YOUR_GMAIL_CREDENTIAL_ID with the actual ID or name of your credential from your n8n credentials. From Email: Replace YOUR_SENDER_EMAIL@example.com with the email address you want the reminders to be sent from. Email Content: The 'subject' and 'html' fields are dynamically generated by the previous 'Function' node (={{ $json.subject }} and ={{ $json.body }}). You can further customize the HTML email template here if needed. Review and Activate: Thoroughly review all node configurations. Ensure all placeholder values (like YOUR_...) are replaced and settings are correct. Click the 'Save' button in the top right corner. Finally, toggle the 'Inactive' switch to 'Active' to enable your workflow. 🟢 Your automated invoice reminder is now live and ready to improve your cash flow! Troubleshooting Tips: 💡 Execution History:** Always check the 'Executions' tab in n8n for detailed error messages if the workflow fails. Google Sheet Data:** Ensure your Google Sheet data is clean and matches the expected column headers and date formats. Function Node Logic:** If invoices aren't being filtered correctly, the Function node is the place to debug. Use the 'Test Workflow' feature to inspect the data flowing into and out of this node. Credential Issues:** Double-check that all credentials are correctly set up and active in n8n.