by PollupAI
This n8n workflow enables teams to automate and standardize multi-step onboarding or messaging workflows using Google Sheets, Forms, Gmail, and dynamic logic powered by Code and Switch nodes. It ensures the right email is sent at the right step, tracks progress in Google Sheets, and handles errors or escalations. 🧑💼 Who is this for? HR and PeopleOps teams managing candidate or employee onboarding processes Customer success or onboarding teams handling structured, step-based journeys Any team using Google Sheets as a lightweight CRM or workflow tracker 🧩 What problem is this workflow solving? Coordinating multi-step onboarding or communication flows using spreadsheets and email can quickly become error-prone. This workflow: Dynamically detects the current step and status from a Google Sheet Sends the right message at the right time Updates statuses and creates next steps Handles errors with escalation logic ⚙️ What this workflow does Trigger via Form or Manual Execution Users can fill a web form or run the workflow manually. Read Google Sheets Retrieves step definitions and user progress from two sheets: One for message templates One for user step/status tracking Generate Message Table Uses custom JavaScript to parse and structure message templates based on step and message type (sent, completed, error). Determine User Step A Switch node checks the user’s current step and status. Logic branches into the correct flow for message sending and verification. Send Message Message variables are replaced using a Code node. Final message is sent via Gmail or another workflow (using Execute Workflow). Update Sheets Marks the step as completed or passed. Creates the next step in the sheet with updated status. Handle Errors If the step fails, an error message is sent to the responsible admin. 🛠️ Setup Connect Google Sheets and Gmail: Ensure credentials are configured in n8n. Prepare Sheets: One sheet for messages with steps/types/subjects/content. You can copy the one from here One sheet for tracking users and their current step/status. You can copy the one from here Customize Webform: Use the provided form to capture First Name, Last Name, and Email. Connect to Your Email Templates: Ensure your message structure follows the expected JSON format by step and type. ✏️ How to customize this workflow to your needs Add More Steps**: Expand the Switch logic and template sheet for more steps. Use Different Channels**: Replace Gmail with Slack, Telegram, or another messaging node. Change Form Fields**: Adjust the FormTrigger node to match your onboarding fields. Custom Error Logic**: Customize escalation emails, including admin routing or Slack alerts. Integrate with Databases**: Swap Google Sheets with Airtable, PostgreSQL, or Notion. This workflow is ideal for automating repetitive, step-based processes involving human communication. It’s modular, extensible, and powered by spreadsheet-driven logic.
by Rakin Jakaria
Use cases are many: Let users book, check, reschedule, or cancel meetings directly from Telegram. Perfect for solopreneurs, agencies, or teams who want an AI-powered assistant that prevents double-bookings, manages Google Calendar, and even sends email invites automatically. Good to know At time of writing, this workflow uses OpenAI GPT-4.1-mini for natural conversation handling. See OpenAI Pricing for updated info. This workflow relies on Google Calendar for scheduling — if the model says “conflict found,” it means an event already exists in that time slot. How it works Telegram Chat**: A user types natural requests like “Book a meeting with Sarah tomorrow at 2 PM” or “Do I have meetings on Friday?”. AI Agent (OpenAI)**: Interprets the request, calculates dates (using Date & Time), and decides whether to create, update, or delete a meeting. Conflict Checking**: Before booking, the agent checks Google Calendar for existing events to avoid overlaps. Meeting Management**: Create: Adds new events with title, description, attendees. Update: Edits existing events. Delete: Cancels meetings if requested. Get: Lists all meetings for a date or time range. Notifications**: Replies instantly on Telegram and, if needed, sends a Gmail email with meeting details. Memory**: Keeps context of the conversation so users can speak naturally (“reschedule that meeting to 4 PM instead”). How to use Start a Telegram chat with the bot. Type a request in plain English (no need for structured inputs). The agent will confirm or suggest alternatives if a conflict exists. Meetings appear in Google Calendar and details can be emailed via Gmail. Requirements Telegram bot connected to n8n OpenAI API key (for AI-driven scheduling assistant) Google Calendar account (for event creation & conflict checking) Gmail account (for sending invites & confirmations) Customising this workflow Add support for multiple calendars (work, personal, shared). Change the conflict-resolution logic (e.g., auto-suggest nearest free slot). Include recurring meetings (weekly standups, monthly reviews). Add Slack or WhatsApp integration for multi-platform scheduling. Extend Gmail invites with calendar attachments (.ics files). 👉 Rakin Jakaria
by Yusuke Yamamoto
This n8n template automates responses to customer inquiries about DHL shipment status, handling requests from both web forms and emails. Use cases Automate Customer Support**: Provide 24/7 instant answers to the common "Where is my order?" question without human intervention. Reduce Support Tickets**: Decrease the volume of repetitive tracking inquiries by providing customers with immediate, self-service information. Enhance Customer Experience**: Offer a consistent and rapid response across multiple channels (your website and email), allowing customers to use their preferred method of contact. Good to know DHL API Key is required**: You'll need to register on the DHL Developer Portal to get your API key. This workflow requires Gmail credentials (OAuth2) to monitor incoming emails and send replies. The webhook URL must be configured in your website's contact or tracking form to receive submissions. How it works The workflow is initiated by one of two triggers: a Webhook (from a website form) or a Gmail Trigger (when a new email arrives). A Merge node combines the data from both triggers into a single, unified flow. The "Extract Tracking Number" Code node intelligently parses the tracking number from either the form data or the email body. It also extracts the customer's name and email address. The HTTP Request node sends the extracted tracking number to the DHL API to fetch the latest shipment status. The "Format Response Message" Code node takes the API response and composes a user-friendly message for the customer. It also handles cases where tracking information is not found. An If node checks the original source of the inquiry to determine whether it came from the webhook or email. If the request came from the webhook, a Respond to Webhook node sends the tracking data back as a JSON response. If the request came from an email, the Gmail node sends the formatted message as an email reply to the customer. How to use Configure the Triggers: Webhook Trigger: Copy the Test URL and set it as the action endpoint for your web form. Once you activate the workflow, use the Production URL. Webhook URL: https://your-n8n-instance.com/webhook/dhl-tracking-inquiry Gmail Trigger: Connect your Gmail account using OAuth2 credentials and set the desired filter conditions (e.g., unread emails with a specific subject). Set up the DHL API: Open the "Get DHL Tracking Status" (HTTP Request) node and navigate to the "Headers" tab. Replace YOUR_DHL_API_KEY with your actual DHL API key. { "DHL-API-Key": "YOUR_DHL_API_KEY" } Configure the Gmail Send Node: Connect the same Gmail credentials to the "Send Gmail Response" node. Customize options like the replyTo address as needed. Activate the workflow. Requirements A DHL Developer Portal account to obtain an API key. A Gmail account configured with OAuth2 in n8n. Customising this workflow Add More Carriers**: Duplicate the HTTP Request node and response formatting logic to support other shipping carriers like FedEx or UPS. Log Inquiries**: Add a node to save inquiry details (tracking number, customer email, status) to a Google Sheet or database for analytics. Advanced Error Handling**: Implement more robust error handling, such as sending a Slack notification to your support team if the DHL API is down or returns an unexpected error.
by vinci-king-01
Property Listing Aggregator with Microsoft Teams and Baserow ⚠️ COMMUNITY TEMPLATE DISCLAIMER: This is a community-contributed template that uses ScrapeGraphAI (a community node). Please ensure you have the ScrapeGraphAI community node installed in your n8n instance before using this template. This workflow automatically aggregates commercial real-estate listings from multiple broker and marketplace websites, stores the fresh data in Baserow, and pushes weekly availability alerts to Microsoft Teams. Ideal for business owners searching for new retail or office space, it runs on a timetable, scrapes property details, de-duplicates existing entries, and notifies your team of only the newest opportunities. Pre-conditions/Requirements Prerequisites An n8n instance (self-hosted or n8n.cloud) ScrapeGraphAI community node installed A Baserow workspace & table prepared to store property data A Microsoft Teams channel with an incoming webhook URL List of target real-estate URLs (CSV, JSON, or hard-coded array) Required Credentials ScrapeGraphAI API Key** – Enables headless scraping of listing pages Baserow Personal API Token** – Grants create/read access to your property table Microsoft Teams Webhook URL** – Allows posting messages to your channel Baserow Table Schema | Column Name | Type | Notes | |-------------|---------|--------------------------------| | listing_id| Text | Unique ID or URL slug (primary)| | title | Text | Listing headline | | price | Number | Monthly or annual rent | | sq_ft | Number | Size in square feet | | location | Text | City / neighborhood | | url | URL | Original listing link | | scraped | Date | Timestamp of last scrape | How it works This workflow automatically aggregates commercial real-estate listings from multiple broker and marketplace websites, stores the fresh data in Baserow, and pushes weekly availability alerts to Microsoft Teams. Ideal for business owners searching for new retail or office space, it runs on a timetable, scrapes property details, de-duplicates existing entries, and notifies your team of only the newest opportunities. Key Steps: Schedule Trigger**: Fires every week (or on demand) to start the aggregation cycle. Load URL List (Code node)**: Returns an array of listing or search-result URLs to be scraped. Split In Batches**: Processes URLs in manageable groups to avoid rate-limits. ScrapeGraphAI**: Extracts title, price, size, and location from each page. Merge**: Reassembles batches into a single dataset. IF Node**: Checks each listing against Baserow to detect new vs. existing entries. Baserow**: Inserts only brand-new listings into the table. Set Node**: Formats a concise Teams message with key details. Microsoft Teams**: Sends the alert to your designated channel. Set up steps Setup Time: 15-20 minutes Install ScrapeGraphAI node: In n8n, go to “Settings → Community Nodes”, search for “@n8n-nodes/scrapegraphai” and install. Create Baserow table: Follow the schema above. Copy your Personal API Token from Baserow profile settings. Generate Teams webhook: In Microsoft Teams, open channel → “Connectors” → “Incoming Webhook”, name it, and copy the URL. Open the workflow in n8n and set the following credentials: ScrapeGraphAI API Key Baserow token (Baserow node) Teams webhook (Microsoft Teams node) Define target URLs: Edit the “Load URL List” Code node and add your marketplace or broker URLs. Adjust schedule: Double-click the “Schedule Trigger” and set the cron expression (default: weekly Monday 08:00). Test-run the workflow manually to verify scraping and data insertion. Activate the workflow once results look correct. Node Descriptions Core Workflow Nodes: stickyNote** – Provides inline documentation and reminders inside the canvas. Schedule Trigger** – Triggers the workflow on a weekly cron schedule. Code** – Holds an array of URLs and can implement dynamic logic (e.g., API calls to get URLs). SplitInBatches** – Splits URL list into configurable batch sizes (default: 5) to stay polite. ScrapeGraphAI** – Scrapes each URL and returns structured JSON for price, size, etc. Merge** – Combines batch outputs back into one array. IF** – Performs existence check against Baserow’s listing_id to prevent duplicates. Baserow** – Writes new records or updates existing ones. Set** – Builds a human-readable message string for Teams. Microsoft Teams** – Posts the summary into your channel. Data Flow: Schedule Trigger → Code → Split In Batches → ScrapeGraphAI → Merge → IF → Baserow IF (new listings) → Set → Microsoft Teams Customization Examples Add additional data points (e.g., number of parking spaces) // In ScrapeGraphAI "Selectors" field { "title": ".listing-title", "price": ".price", "sq_ft": ".size", "parking": ".parking span" // new selector } Change Teams message formatting // In Set node return items.map(item => { const l = item.json; item.json = { text: 🏢 ${l.title} — ${l.price} USD\n📍 ${l.location} | ${l.sq_ft} ft²\n🔗 <${l.url}|View Listing> }; return item; }); Data Output Format The workflow outputs structured JSON data: { "listing_id": "12345-main-street-suite-200", "title": "Downtown Office Space – Suite 200", "price": 4500, "sq_ft": 2300, "location": "Austin, TX", "url": "https://broker.com/listings/12345", "scraped": "2024-05-01T08:00:00.000Z" } Troubleshooting Common Issues ScrapeGraphAI returns empty fields – Update CSS selectors or switch to XPath; run in headless:true mode. Duplicate records still appear – Ensure listing_id is truly unique (use URL slug) and that the IF node compares correctly. Teams message not delivered – Verify webhook URL and that the Teams connector is enabled for the channel. Performance Tips Reduce batch size if websites block rapid requests. Cache previous URLs to skip unchanged search-result pages. Pro Tips: Rotate proxies in ScrapeGraphAI for larger scraping volumes. Use environment variables for credentials to simplify migrations. Add a second Schedule Trigger for daily “hot deal” checks by duplicating the workflow and narrowing the URL list.
by Avkash Kakdiya
How it works This workflow consolidates data from five different systems — Google Sheets, PostgreSQL, MongoDB, Microsoft SQL Server, and Google Analytics — into a single master Google Sheet. It runs on a scheduled trigger three times a week. Each dataset is tagged with a unique source identifier before merging, ensuring data traceability. Finally, the merged dataset is cleaned, standardized, and written into the output Google Sheet for reporting and analysis. Step-by-step 1. Trigger the workflow Schedule Trigger** – Runs the workflow at set weekly intervals. 2. Collect data from sources Google Sheets Source** – Retrieves records from a specific sheet. PostgreSQL Source** – Extracts customer data from the database. MongoDB Source** – Pulls documents from the defined collection. Microsoft SQL Server** – Executes a SQL query and returns results. Google Analytics** – Captures user activity and engagement metrics. 3. Tag each dataset Add Sheets Source ID** – Marks data from Google Sheets. Add PostgreSQL Source ID** – Marks data from PostgreSQL. Add MongoDB Source ID** – Marks data from MongoDB. Add SQL Server Source ID** – Marks data from SQL Server. Add Analytics Source ID** – Marks data from Google Analytics. 4. Merge and process Merge** – Combines all tagged datasets into a single structure. Process Merged Data** – Cleans, aligns schemas, and standardizes key fields. 5. Store consolidated output Final Google Sheet** – Appends or updates the master sheet with the processed data. Why use this? Centralizes multiple data sources into a single, consistent dataset. Ensures data traceability by tagging each source. Reduces manual effort in data cleaning and consolidation. Provides a reliable reporting hub for business analysis. Enables scheduled, automated updates for up-to-date visibility.
by Avkash Kakdiya
How it works This workflow automates event registrations and attendee communication from initial signup to event day. It captures form submissions, prevents duplicate entries, and stores registrations in Google Sheets. Confirmed attendees receive immediate confirmation emails, while failures trigger admin alerts. A scheduled process then sends pre-event and event-day reminders, with all communication tracked to ensure emails are sent only once. Step-by-step Step 1: Capture and process registration** Event Registration Form – Collects attendee details through a public registration form. Edit Fields – Normalizes and prepares form data for processing. Read Existing Registrations – Fetches existing attendee records from Google Sheets. Check for Duplicate Email – Compares the submitted email against stored records. If Not Duplicate – Stops the workflow when a duplicate email is detected and continues only for new registrations. Store Registration (Google Sheets) – Appends the new registration only when no duplicate is found. Step 2: Confirm registration and send notifications** Add Status & Event Date – Assigns confirmed status and event date to the registration. Check Registration Success – Verifies whether the registration is confirmed. Send Welcome Email – Sends a confirmation email to the attendee. Send Admin Alert – Sends an alert email to the admin if registration fails. Code in JavaScript – Confirms email delivery and prepares tracking data. Update Welcome Email Status – Updates the welcome email status in Google Sheets. Step 3: Scheduled trigger and reminder routing** Schedule Trigger – Runs daily to initiate reminder processing. Edit Fields – Marks the execution source as a scheduled run. Switch – Ensures the workflow runs only for scheduled executions. Get Confirmed Aptitude Candidates – Retrieves confirmed event registrations from Google Sheets. Filter Reminder Candidates – Calculates remaining days until the event. Switch Reminder Type – Routes attendees to 3-day or event-day reminder flows. Step 4: Send reminders and update event communication status** Loop 3-Day – Iterates through attendees eligible for the 3-day reminder. Send 3-Day Reminder – Sends a personalized pre-event reminder email. Prepare 3-Day Update – Prepares reminder status data. Wait – Adds delay to control email sending rate. Update 3-Day Status – Updates the 3-day reminder status in Google Sheets. Loop Event-Day – Iterates through attendees eligible for the event-day reminder. Send Event-Day Reminder – Sends final event-day instructions and check-in details. Prepare Event-Day Update – Prepares event-day reminder tracking data. Wait – Adds delay between event-day emails. Update Event-Day Status – Updates the event-day reminder status in Google Sheets. Why use this? Blocks duplicate registrations automatically at submission time. Sends instant confirmation emails to attendees. Alerts admins immediately when a registration fails. Delivers perfectly timed reminders without manual follow-ups. Keeps a complete communication log inside Google Sheets.
by Ziad Adel
Google Sheets CRM Automations: Lead Stages → Emails, Client Tracking & Delivery Duration Turn a simple Google Sheet into a lightweight CRM powered by n8n. Overview This template monitors edits in your Leads and Clients tabs and reacts automatically: Qualified?** → sends a Cal.com booking email Stage → Awaiting Proposal** → sends a “proposal coming soon” email Stage → Won* → appends the client to *Clients* with a *Start Date & Time** Clients: Project Status → Delivered* → stamps *End Date & Time* and computes *Time to Deliver** (e.g., 2d 5h 30m) What This Template Does Lead Qualification → Email: When you mark **Qualified? in Leads, a booking email is sent automatically. Awaiting Proposal → Email**: Sends a heads-up email that a proposal is coming soon. Won → Client Append: Adds the client to **Clients and records the start timestamp. Delivered → Completion Metrics**: Looks up the client, stamps the end timestamp, and calculates the delivery duration. How It Works Google Apps Script → Webhooks (onEdit) A small Apps Script (provided in the workflow’s Sticky Note) watches the sheet and posts JSON to these n8n webhooks: /webhook/lead-stage-changed /webhook/lead-qualified /webhook/client-status-changed n8n Flow & Branching lead-stage-changed If Awaiting Proposal → send proposal heads-up email If Won → format timestamp → append to Clients lead-qualified If qualified = true → send Cal.com booking email client-status-changed If Delivered → lookup client row → stamp End Date & Time → compute Time to Deliver → update row Prerequisites Google Sheet with two tabs: Leads and Clients Gmail account (or use your preferred email/notification node) n8n instance with: Google Sheets OAuth2 credentials Gmail OAuth2 credentials (if using the Gmail node) Suggested columns Leads**: Name (A), Client Email (C), Lead Source (D), Stage (E), Qualified? (H) Clients**: Name (A), Client Email (C), Project Status (D), Start Date & Time (F), End Date & Time (G), Time to Deliver (H) Setup Steps Copy/prepare the Google Sheet Ensure both Leads and Clients tabs exist with the columns above. Install the Apps Script In Google Sheets: Extensions → Apps Script → paste the script from the workflow’s Sticky Note. Replace webhook URLs with your n8n endpoints: https://{{YOUR_N8N_DOMAIN}}/webhook/lead-stage-changed https://{{YOUR_N8N_DOMAIN}}/webhook/lead-qualified https://{{YOUR_N8N_DOMAIN}}/webhook/client-status-changed Run createInstallableTrigger() once to enable onEdit. Open the workflow in n8n & replace placeholders {{GOOGLE_SHEETS_DOC_ID}} {{LEADS_GID}} {{CLIENTS_GID}} {{CAL_COM_BOOKING_URL}} {{SENDER_NAME}} {{GMAIL_CREDENTIAL_ID}}, {{GMAIL_CREDENTIAL_NAME}} {{GSHEETS_CREDENTIAL_ID}}, {{GSHEETS_CREDENTIAL_NAME}} Connect credentials Authorize Google Sheets OAuth2 and Gmail OAuth2 (or switch to SMTP/another email node). Activate & test Toggle Qualified? on a test row or change Stage to Awaiting Proposal/Won. Verify the email, client append, and duration updates flow end-to-end. Customization Ideas Swap Gmail with SMTP, Outlook, or Slack messages. Add a Stage = Lost branch to trigger a re-engagement sequence. Add guards to prevent duplicate appends to Clients. Localize email copy and date formats. Troubleshooting Nothing triggers**: Confirm Apps Script URLs and that createInstallableTrigger() was run. Wrong tab/GID**: Open each tab and copy its gid from the URL; update placeholders. Credential errors**: Re-authorize Google Sheets/Gmail OAuth2 in n8n. Wrong first name: Ensure Name in **Leads follows First Last; the workflow splits the first token. Video Walkthrough Demo Screen Studio Template Demo Video
by Nikan Noorafkan
🛍️ Google Shopping Feed Optimization with Channable + Relevance AI + Google Merchant API 🚀 Automate, Optimize & Sync Your Product Feeds at Scale 🧩 Overview This workflow automates Google Shopping Feed Optimization using Channable, Relevance AI, and the Google Merchant API. It runs daily, enhancing product titles and descriptions, validating feed quality, assigning custom campaign labels, and syncing the optimized feed with Google Merchant Center. The system ensures every product listing meets Google’s content standards, is SEO-friendly, and ready for high-performance Shopping campaigns. 🧠 Key Benefits ✅ Automated daily product feed optimization ✅ AI-enhanced titles and descriptions (via Relevance AI) ✅ Google Merchant API integration (latest version) ✅ Quality scoring and error detection before sync ✅ Custom campaign labels for segmented bidding ✅ Slack alerts for issues and daily summaries ✅ 100% no-code deployment with scalable batch processing ⚙️ System Architecture | Component | Purpose | | ----------------------------- | -------------------------------------------------------- | | n8n | Workflow automation and orchestration | | Channable | Product feed source (can replace with any eCommerce API) | | Relevance AI | AI title and description optimization | | Google Merchant API (NEW) | Product publishing and validation | | Slack | Alerts and reporting | | Cron Trigger | Daily schedule (6 AM sync) | 🧭 Workflow Logic (Visual Summary) Daily Trigger (06:00 AM) ⬇️ 1️⃣ Get Product Feed (Channable) Fetches product data for optimization. ⬇️ 2️⃣ Data Quality Checks Validates titles, GTINs, pricing, categories, and descriptions. Assigns quality scores. ⬇️ 3️⃣ Split Products Breaks the all_products array into single items for AI processing. ⬇️ 4️⃣ Optimize Title (Relevance AI Tool) Enhances product titles for SEO, clarity, and Google compliance. ⬇️ 5️⃣ Generate Description (Relevance AI Tool) Creates 300–400 character, benefit-focused product descriptions. ⬇️ 6️⃣ Assign Custom Labels Adds five segmentation labels: margin, performance, seasonality, stock level, and category. ⬇️ 7️⃣ Aggregate Products Combines optimized items into one unified dataset. ⬇️ 8️⃣ Upload to Merchant Center (NEW Merchant API) Publishes products via Google’s latest /products endpoint. ⬇️ 9️⃣ Check Product Status Verifies successful uploads and identifies disapprovals. ⬇️ 🔍 Analyze Product Issues Summarizes errors and warnings from Merchant API results. ⬇️ ⚖️ IF Disapprovals Found → 🚨 Send Slack alert for issues → ✅ Otherwise, post success summary 🧩 Environment Variables Set these under n8n → Settings → Variables → Add Variable | Variable | Example | Purpose | | ----------------------------------- | -------------------------------------------------- | -------------------------------- | | CHANNABLE_API_URL | https://api.channable.com/v1 | Channable API base | | CHANNABLE_COMPANY_ID | 12345 | Company ID in Channable | | CHANNABLE_PROJECT_ID | abcd | Project ID | | FEED_ID | shopping-feed | Feed endpoint | | RELEVANCE_AI_API_URL | https://api-f1db6c.stack.tryrelevance.com/latest | Relevance AI API base | | RELEVANCE_TOOL_TITLE_OPTIMIZER_ID | tQy48Ld8n0zp | Relevance AI Title Tool ID | | RELEVANCE_TOOL_DESCRIPTION_ID | hJ9bT01r8Lqf | Relevance AI Description Tool ID | | MERCHANT_API_URL | https://merchantapi.googleapis.com/content/v2.1 | Google Merchant API base | | MERCHANT_ACCOUNT_ID | 123456789 | Merchant Center account ID | | SLACK_CHANNEL | #shopping-feed-automation | Slack channel for reports | 🔑 Credential Setup | Service | Type | Setup | | ------------------- | ---------------- | -------------------------------------------------------------- | | Relevance AI | HTTP Header Auth | Header → Authorization: Bearer {{$env.RELEVANCE_AI_API_KEY}} | | Channable | HTTP Header Auth | Header → Authorization: Bearer {{$env.CHANNABLE_API_TOKEN}} | | Google Merchant | Google OAuth2 | Scopes: • https://www.googleapis.com/auth/content | | Slack | Slack API | Add chat:write Bot Token Scope | 🧱 Node-by-Node Breakdown | Node | Description | Key Action | | ----------------------------- | ---------------------------------------- | ----------------------------------------------------------- | | Daily Trigger (6 AM) | Starts workflow every morning | cron: 0 6 * * * | | Get Product Feed | Fetches products from Channable | GET {{$env.CHANNABLE_API_URL}}/.../feeds/{{$env.FEED_ID}} | | Data Quality Checks | Validates GTINs, titles, pricing, images | Returns quality_score + all_products | | Split Products | Splits array into individual products | Operation: splitOut, Field: all_products | | Optimize Title | Calls Relevance AI title tool | /tools/{{$env.RELEVANCE_TOOL_TITLE_OPTIMIZER_ID}}/trigger | | Generate Description | Calls Relevance AI description tool | /tools/{{$env.RELEVANCE_TOOL_DESCRIPTION_ID}}/trigger | | Assign Custom Labels | Adds 5 Smart Bidding Labels | Margin, performance, seasonality, stock, category | | Aggregate Products | Combines optimized product data | For batch upload | | Upload to Merchant Center | Posts via NEW Merchant API | /accounts/{id}/products | | Check Product Status | Retrieves upload results | Lists disapproved or pending items | | Analyze Product Issues | Summarizes product disapprovals | Returns disapproval_count and warnings | | IF Disapprovals Found | Conditional routing | Sends alert or success message | | Slack - Alert | Sends error summary to Slack | Includes product name and issue detail | | Slack - Success Summary | Posts daily completion message | Includes counts and optimizations applied | 🧰 Testing Procedure 1️⃣ Temporarily disable the cron schedule 2️⃣ Run manually using “Execute Workflow” 3️⃣ Start with 3–5 products 4️⃣ Check: Slack → Success message Google Merchant → Updated products n8n Execution logs → No failed nodes Once validated → Re-enable the 6 AM trigger 🧾 Example Output Slack Success Message ✅ Shopping Feed Optimization Complete 📊 Summary: • Total Products Processed: 135 • Products with Quality Issues: 12 • Disapprovals: 0 • Warnings: 3 🎯 Optimizations Applied: • Titles optimized for SEO • Descriptions enhanced • Custom labels added API: NEW Merchant API (merchantapi.googleapis.com) Next Run: Tomorrow 6 AM Timestamp: 2025-10-22T06:00:00Z Slack Alert Message 🚨 Merchant Center Disapprovals Alert Total Disapprovals: 5 Total Warnings: 2 Critical Issues: • Product: Wireless Headphones (ID: 4829) Issue: Missing GTIN • Product: Yoga Mat Eco (ID: 7350) Issue: Invalid price Action Required: Review disapproved products in Merchant Center. Timestamp: 2025-10-22T06:00:00Z 📊 Success Metrics | Metric | Goal | | ---------------------------- | ------------------- | | Feed approval rate | ≥ 90% | | AI optimization success rate | ≥ 95% | | Manual review reduction | 80% | | Daily automation uptime | 99.9% | | Scalable throughput | 5,000+ products/day | 🧩 Maintenance Schedule | Frequency | Task | | ------------- | ------------------------------ | | Daily | Monitor Slack alerts | | Weekly | Check disapproval logs | | Monthly | Refresh API tokens | | Quarterly | Tune AI prompts and thresholds | 🪜 Next Steps ✅ Deploy workflow in production 📈 Connect to your performance dashboard 🌍 Extend to multi-language feeds (Relevance AI translations) 💡 Add conversion optimization loop in Google Ads 🔗 References n8n Documentation Relevance AI Documentation Google Merchant API Docs Channable Help Center 🎉 Conclusion You now have a production-grade, AI-driven Shopping Feed Optimization workflow built on: Channable** for structured data ingestion Relevance AI** for content intelligence Google Merchant API** for publishing n8n** as the automation engine 💡 Result: A fully autonomous product feed system that self-improves daily, keeping your listings compliant, optimized, and performing at scale.
by AI/ML API | D1m7asis
Who’s it for For makers, founders, and productivity nerds who want to listen to their inbox instead of reading it. No servers, no hosting — all done with n8n, a Telegram bot, and AI/ML API (LLM + TTS). What it does / How it works This workflow listens for new Gmail emails, extracts the sender, subject, date, and snippet, generates a 2–3 sentence natural summary using GPT-5 via AI/ML API, then converts the text into a lifelike voice message using Inworld TTS-1-Max. The final audio file is downloaded and instantly delivered to your Telegram via a bot. A separate auxiliary flow captures your Telegram chat_id once, stores it in a Data Table, and the main flow reuses it every time — no hardcoding required. High-level flow: Gmail Trigger detects new incoming email Code node builds a clean emailData block AI/ML API (GPT-5) generates a natural spoken summary AI/ML API (Inworld TTS-1-Max) converts summary → voice Audio file is downloaded Voice message is sent to the same Telegram chat Requirements A working n8n instance (self-hosted or cloud) Gmail OAuth2 credentials Telegram bot token from @BotFather AI/ML API key Base URL: https://api.aimlapi.com/v1 Supports GPT-5 and Inworld TTS-1-Max Set up steps Create a Telegram bot via @BotFather and add Telegram API credentials in n8n Create an AI/ML API credential using your API key Add Gmail OAuth2 credentials for inbox access Import the workflow JSON Open nodes and attach the correct credentials (no hardcoded tokens inside nodes) Run the Telegram Trigger once and send any message to your bot — this saves your chat_id Activate your workflow and receive your first voice-summary How to customize Replace GPT-5 with another LLM from AI/ML API (same schema) Change prompt style: tone, structure, language, or verbosity Add language selection or multi-voice support Add filters (e.g., only important emails, only starred emails) Log all activity to Google Sheets or a database Add IF conditions: voice only during certain hours, weekday vs weekend rules Add rate-limits or user allowlists Change the voice model for different notification styles: corporate, friendly, narrator
by Yaron Been
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. Automated Review Intelligence System Transform customer feedback into actionable intelligence with this Automated Review Intelligence System! This workflow collects reviews from platforms like Trustpilot using advanced web scraping, analyzes sentiment and patterns with AI, and generates comprehensive business intelligence reports. Perfect for customer experience teams monitoring brand reputation and customer satisfaction across review platforms. What This Template Does Triggers manually to start review collection from specified sources. Validates URL format to ensure proper review source configuration. Uses AI agent with Decodo scraper to extract review data from platforms. Parses and structures review data (ratings, comments, dates, locations). Enriches review data with metadata and quality metrics. Stores all review data in Google Sheets for historical tracking. Reads aggregated reviews for comprehensive analysis. Generates AI-powered summaries and key insights from review patterns. Sends email reports with actionable business intelligence. Provides error alerts for processing issues and invalid URLs. Key Benefits Automated collection of customer reviews from multiple platforms AI-powered sentiment analysis and pattern recognition Historical tracking of review trends and customer satisfaction Actionable business intelligence from customer feedback Real-time alerting for review processing issues Centralized review database for team visibility Features Manual trigger for on-demand review intelligence URL validation and error handling AI-powered review collection and analysis Decodo web scraping for reliable data extraction Structured data parsing for consistent formatting Google Sheets integration for data centralization Automated summary generation with key insights Email reporting for stakeholder communication Multi-platform review source support Historical trend analysis capabilities Requirements Decodo API credentials for web scraping OpenAI API credentials for AI analysis Google Sheets OAuth2 credentials with edit access Gmail OAuth2 credentials for email reports Environment variables for configuration settings Review source URLs (Trustpilot, etc.) Target Audience Customer experience and success teams Product management and development teams Marketing and brand reputation managers Business intelligence and analytics teams Customer support operations teams E-commerce and retail businesses Step-by-Step Setup Instructions Connect Decodo API credentials for review scraping functionality Set up OpenAI credentials for AI analysis and summary generation Configure Google Sheets with required review data headers Add Gmail credentials for report delivery and error notifications Set your target review source URLs (Trustpilot, etc.) Test with sample review pages to verify data extraction Customize summary reports for your business intelligence needs Define alert recipients for error notifications and reports Run manually to generate your first review intelligence report Pro Tip: Use coupon code "YARON" to get 23K requests for testing the workflow using Decodo This workflow ensures you stay informed about customer sentiment with automated review collection, intelligent analysis, and actionable business insights!
by Nitesh
🧠 How It Works This AI Agent automatically qualifies property buyer leads from form submissions and sends them directly to your CRM. 🔄 Workflow Steps Form Submission Trigger When a user submits their details via a property inquiry form, the workflow is activated. AI Lead Classification The buyer’s input (budget, location, timeline, etc.) is analyzed by OpenAI. Structured data is extracted, and a lead score (0–100) is generated. Lead Qualification Logic Leads with a score ≥ 70 are marked as qualified. Leads with a lower score can be ignored or stored separately for later review. Follow-Up Actions (for Qualified Leads) An email notification is sent to the real estate agent. A record is created in Airtable to act as a lightweight CRM. ⚙️ How to Set Up 1. Form Setup Replace the default trigger with your preferred source: Typeform, Google Forms, Webflow form, etc. Ensure your form collects the following fields: Name, Email, Budget, Location, Timeline, Property Type 2. Connect Your Credentials Add your OpenAI API key for the LLM node Connect your Gmail account for notifications Link your Airtable base & table to store qualified leads 3. Customize Scoring Logic (Optional) Edit the Information Extractor prompt to tweak how scoring is calculated Example: prioritize budget fit, location, or timeline 4. Test the Workflow Submit a test entry via the form Confirm: You receive the notification email A new lead record appears in Airtable 5. Activate & Go Live Turn on the workflow Start qualifying real buyer leads in real-time 🎯 🚀 Use Cases Realtors → Filter out unqualified leads automatically Agencies → Save time by only engaging with high-quality inquiries Teams → Centralize qualified leads in Airtable for instant collaboration
by GYEONGJUN CHAE
Crypto Arbitrage Analyzer: Binance vs Upbit (Kimchi Premium) Short Description Automate crypto arbitrage monitoring between Binance and Upbit. Track the "Kimchi Premium," analyze BTC price gaps with AI, and receive actionable trading reports via email. Full Description 🚀 Overview This workflow serves as an automated analyst for cryptocurrency traders focusing on the "Kimchi Premium" (the price gap between South Korean and global exchanges). It fetches real-time Bitcoin (BTC) prices from Binance (Global) and Upbit (Korea), compares them against the current USD/KRW forex rate, and uses OpenAI (GPT) to generate a sophisticated arbitrage assessment report sent directly to your inbox. ✨ Key Features Multi-Market Data Aggregation**: Simultaneously fetches data from Binance, Upbit, and Forex APIs. Real-time Forex Conversion**: Accurately calculates spreads using live USD/KRW exchange rates. AI-Powered Analysis**: Uses OpenAI to interpret the data, calculating spread percentages and profit margins automatically. Automated Reporting**: Delivers a clean, HTML-formatted trading report via Gmail every 30 minutes (customizable). 🛠️ How it Works Schedule Trigger: Runs the workflow automatically at set intervals (default: every 30 mins). Data Fetching: Gets BTC/USDT price from Binance. Gets BTC/KRW and BTC/USDT prices from Upbit. Gets USD/KRW exchange rate from a Forex API. Normalization: Standardizes the data structure from different APIs into a unified format. AI Processing: An OpenAI Agent analyzes the price differences, calculates the arbitrage gap (Kimchi Premium), and drafts a summary. Notification: A Structured Output Parser formats the AI's response, and the report is emailed to the trader via Gmail. 📋 Prerequisites / Setup To use this workflow, you need to configure the following credentials in n8n: OpenAI API**: Required for the analysis logic (GPT-4o-mini or similar recommended). Gmail (OAuth2)**: Required to send the email reports. (Note: Binance, Upbit, and Forex data are fetched via public REST APIs in this workflow, so no specific exchange API keys are required for basic data retrieval.) Use Case / Category Categories**: Finance, AI & LLMs, Automation Apps used**: OpenAI, Gmail, HTTP Request, Schedule SEO Keywords (Tagging purpose) Crypto Arbitrage, Bitcoin, Kimchi Premium, Binance, Upbit, Trading Bot, OpenAI, GPT, Financial Analysis, Automated Reporting