by Avkash Kakdiya
Quick overview This workflow runs every weekday morning to find HubSpot deals with no recent activity, uses OpenAI to generate a personalized re-engagement email, sends it via Gmail, logs the outcome to Google Sheets, and notifies your team in Slack with per-deal alerts and a daily digest. How it works Runs on a weekday schedule at 08:00 and retrieves all open deals from HubSpot. Calculates days since the last deal activity and keeps only deals stalled for 7 days or more. Checks whether each stalled deal has an associated HubSpot contact and logs deals without a contact to Google Sheets as skipped. Fetches the associated contact from HubSpot, verifies an email address exists, and logs deals without an email to Google Sheets as skipped. Sends the deal and contact context to OpenAI to generate a JSON email subject and body, then parses the result into fields. Sends the re-engagement email to the contact via Gmail, adds a note to the HubSpot deal, posts a Slack alert to the sales channel, and appends the action to Google Sheets. Builds a run summary (re-engaged vs skipped) and posts a single daily digest message to Slack. Setup Add credentials for HubSpot, OpenAI, Gmail, Slack, and Google Sheets in n8n. Replace REPLACE_WITH_YOUR_SHEET_ID with your Google Sheet document ID and ensure the target sheet name (for example, Sheet1) exists. Create the Google Sheet columns used for logging (Date, Deal Name, Contact Email, Stage, Days Stalled, Email Sent, Slack Notified, Status). Update the Slack channel names/IDs for the sales notifications (for example, sales-team) and the error channel (for example, n8n-errors).
by Akshay Chug
Quick overview This workflow monitors a Google Sheets patient intake log, uses Anthropic Claude to decide the right follow-up action and draft an email, sends the message via Gmail, optionally notifies a clinic manager in Slack for re-bookings, and appends each communication to a Google Sheets log. How it works Triggers when a new patient row appears in a Google Sheets intake spreadsheet. Loads clinic settings (sheet IDs, clinic name, booking link, sender email, and Slack channel) and formats the patient record into a prompt. Sends the prompt to Anthropic Claude (Sonnet) to return a JSON plan with an action, urgency, email subject/body, and a short reason. Parses Claude’s JSON response and falls back to a default follow-up message if parsing fails. Routes the patient to the correct branch and sends a plain-text email via Gmail (welcome, re-booking, or follow-up). For re-booking emails, posts a Slack notification to the clinic manager with patient details for manual confirmation. Appends a row to a Google Sheets communications log with the action, status, urgency, timestamp, and email details. Setup Connect credentials for Google Sheets, Gmail, Slack, and Anthropic (Claude) in n8n. Update the configuration values for INTAKE_SHEET_ID, LOG_SHEET_ID, LOG_SHEET_NAME, SLACK_CHANNEL_ID, CLINIC_NAME, BOOKING_LINK, and SENDER_EMAIL. Ensure your intake sheet contains the expected fields (for example Patient Name, Email, Contact Reason, Appointment Status, Last Visit, and Notes) and create a communications log sheet with matching columns for the appended data.
by WeblineIndia
Sector Rotation Tracker & Alert System of Equity Market This workflow automates the tracking of stock market sector rotation. It fetches a list of active stocks from Google Sheets, pulls their last 5 days of market data from Yahoo Finance and calculates momentum and sector strength using custom code. It then compares this current data against historical data to detect capital rotation signals. Finally, an AI Agent (powered by Groq's Llama-3 model) acts as a financial analyst to interpret the shifts and sends an automated Gmail alert if a high-confidence bullish trend is detected. Quick Implementation Steps Don't want to read the details? Follow these quick steps to get started: Connect Credentials: Authenticate your Google Sheets, Gmail and Groq API accounts in n8n. Setup Google Sheets: Create a Google Sheet with two tabs. "Sheet1" needs an active column set to true for stocks you want to track. "Sheet2" is used to store daily historic data. Update Sector Map: Open the Group By Sector code node and update the sectorMap with your specific stock symbols and their corresponding sectors. Configure Email: Open the Send Email Alert node and enter your destination email address. Test and Run: Click "Test Workflow" to ensure data flows correctly, then activate it to run on your schedule! What It Does The Stock Sector Rotation Tracker acts as your personal automated quantitative analyst. It starts by pulling a predefined watchlist of active stocks from a connected Google Sheet. Using Yahoo Finance's API, it retrieves the daily closing prices and trading volumes over the past 5 days for each stock. Once the raw data is gathered, a series of custom JavaScript nodes process the information. It calculates 1-day, 3-day and 5-day returns, assigns momentum scores and evaluates volume ratios. The stocks are then grouped into their respective market sectors (e.g., IT, Banking, Auto) to calculate an aggregate "Sector Strength Score." This score is compared against historical data saved from previous days to determine if money is rotating into or out of a specific sector. To add a layer of human-like intelligence, the compiled data is sent to an AI Agent powered by Groq. The AI acts as an institutional equity researcher, providing a concise summary, explaining the possible reasons for the market movement and assigning a trading bias (Bullish, Bearish or Neutral) along with a confidence score out of 10. If the AI identifies a strong bullish signal, a detailed email alert is instantly dispatched via Gmail. Who It's For Retail Investors & Day Traders** Looking for automated daily watchlists and momentum alerts without paying for expensive terminal subscriptions. Financial Analysts & Wealth Managers** Needing an automated way to track institutional capital flows and sector rotation over time. Quant Enthusiasts** Wanting a foundation to build custom algorithmic trading indicators using n8n and AI. Requirements to Use This Workflow To successfully run this workflow, you will need: An active n8n account (Cloud or Self-Hosted). A Google Account to access Google Sheets (for data storage) and Gmail (for sending alerts). A free Groq API key to power the Llama 3 AI model. A basic understanding of stock symbols (tickers) as used on Yahoo Finance (e.g., INFY.NS or AAPL). How It Works & Set Up Step 1: Prepare Your Google Sheets You need a Google Spreadsheet with two specific tabs. Tab 1 (Watchlist):** Must include columns for stock symbols and an active column (set to true or false). Tab 2 (Historic Data):** Must include columns for date, sector, sector_strength_score, trend, rotation_signal and score_change. Step 2: Configure Credentials in n8n Google Sheets & Gmail:** Set up OAuth2 credentials for your Google account. Connect these to the Google Sheets nodes and the final Gmail node. Groq API:* Generate an API key from the Groq console and add it to the *Insights from Model** node. Step 3: Update Stock and Sector Mappings Open the Group By Sector code node. Modify the sectorMap JavaScript object to match the stock symbols in your Google Sheet. For example, change "INFY.NS": "IT" to match your desired ticker and sector. Step 4: Review AI and Email Thresholds The workflow uses an If node named Check if Bullish. By default, it sends an email if the AI Action is exactly Bullish OR if the AI Confidence score is greater than 7. You can adjust these thresholds based on how strict you want your alerts to be. How To Customize Nodes Modify the Timeframe** In the Get stocks Data node, the Yahoo Finance URL ends with ?range=5d&interval=1d. You can change this to 1mo (1 month) or interval to 1wk (1 week) to track macro trends instead of short-term momentum. Tweak the Math Formula** The Calculate Stock Returns code node assigns weights to different days (e.g., 1-day return is weighted at 50%, 3-day at 30%). You can easily adjust these multipliers to fit your personal trading strategy. Change the AI Prompt** Open the Prepare AI Insights Prompt code node or the AI Analyzer agent node to rewrite the AI's instructions. You can ask it to adopt a different persona, like a conservative dividend investor, rather than a momentum trader. Add-ons Want to take this workflow to the next level? Here are a few ideas: Slack / Discord Integration** Replace or supplement the Gmail node with a Slack or Discord node to push alerts directly to a trading community channel. SMS Notifications** Add a Twilio node to get instant text messages when a high-confidence rotation signal fires. Multiple AI Perspectives** Add a secondary AI node (like OpenAI's GPT-4o or Anthropic's Claude 3.5) to analyze the same data, then use an IF node to only send an alert if both models agree on a Bullish trend. Use Case Examples Daily Morning Briefing Schedule the workflow to run 30 minutes before the market opens to get a fresh perspective on where capital moved the previous day. Swing Trading Assistant Use the automated "ROTATION_IN" signals to build a shortlist of swing trade opportunities before the broader market catches on. Portfolio Rebalancing Track sector strength over weeks or months to decide when to rebalance a long-term retirement portfolio from lagging sectors to leading ones. Institutional Capital Flow Tracking Identify "volume boosts" alongside price momentum to spot hidden institutional buying in specific market sectors. Educational Paper Trading Forward the AI insights to a journal or note-taking app (like Notion) to learn how data-driven momentum aligns with actual market performance over time. Troubleshooting Guide | Issue | Possible Cause | Solution | | :--- | :--- | :--- | | Yahoo Finance HTTP Request Fails | Rate limits or invalid ticker symbol. | Check that the symbols in your Google Sheet exactly match Yahoo Finance tickers (e.g., adding .NS for Indian stocks). Add a longer batching interval in the HTTP node settings. | | No Data Moving Past "Group By Sector" | sectorMap doesn't match incoming symbols. | Open the Group By Sector node and ensure the ticker names in your code exactly match the tickers coming from the API. | | AI Node Throws JSON Parse Error | The AI responded with conversational text instead of strict JSON. | The Parse AI Output node has a fallback to catch this, but you can improve reliability by emphasizing Respond ONLY in valid JSON format in the AI Agent's system prompt. | | Google Sheets Node "Cannot find sheet" | Document ID or Sheet ID mismatch. | Re-select your specific Spreadsheet and Worksheet directly from the dropdown menus inside the Google Sheets nodes. | | Emails Are Not Sending | The IF node condition is not being met or Gmail authentication expired. | Check the execution logs. If the AI is returning a confidence of 6, it won't send. Re-authenticate your Google account if the node shows an OAuth error. | Need Help? Building financial automation workflows can be complex and tweaking momentum formulas or AI prompts sometimes requires a bit of trial and error. If you need assistance setting up this workflow, customizing the JavaScript nodes, integrating additional trading APIs or building entirely new automation systems tailored to your business, our n8n workflow developers are here to help! Reach out to WeblineIndia for expert n8n consulting, development and support to turn your automation ideas into reality.
by Incrementors
Description Paste any text into a simple form — an email, social caption, blog paragraph, or proposal — and submit. GPT-4o-mini rewrites it simultaneously in five distinct tones: Professional, Casual, Persuasive, Concise, and Empathetic. All five versions are saved as a single document in your Google Drive folder, and your Slack channel gets an instant preview of the Concise version. Built for content teams, copywriters, and agencies who write the same message repeatedly for different audiences. What This Workflow Does Rewrites in five tones at once** — sends your text to GPT-4o-mini and gets back five complete versions in one AI call, saving you from rewriting manually Enforces structured output** — uses a schema parser to guarantee all five tones are always returned, even if the AI tries to skip one Saves everything to Google Drive** — assembles all five versions into one clearly labeled document and uploads it to your chosen Drive folder automatically Names files by project and date** — every document is titled with your project name and today's date so you can find it instantly later Sends a Slack preview** — posts the Concise version to your team channel the moment the document is ready, no waiting, no manual sharing Defaults gracefully** — fills in missing audience fields automatically so the workflow never fails due to a blank optional field Setup Requirements Tools you need: n8n instance (self-hosted or n8n Cloud) OpenAI account with API access Google account with Google Drive Slack workspace with a bot app Estimated Setup Time: 15–20 minutes Step-by-Step Setup Update your config values — Open the node named 2. Set — Config Values. Replace YOUR_GOOGLE_DRIVE_FOLDER_ID with the ID of your Drive folder (open the folder in Google Drive, look at the URL bar, and copy the string after /folders/). Replace #YOUR-SLACK-CHANNEL with your Slack channel name including the # symbol. Replace YOUR COMPANY NAME with your company or team name. > ⚠️ All three placeholder values are in 2. Set — Config Values — you must update all three before activating. Connect your OpenAI credential — Open the node named 4. OpenAI — GPT-4o-mini Model. Click the credential dropdown and connect your OpenAI API key. If you do not have one, go to platform.openai.com, sign in, click your account name, select API Keys, and create a new key. Connect your Google Drive credential — Open the node named 8. Google Drive — Upload Tone Doc. Click the credential dropdown and connect your Google account using OAuth2. n8n will prompt you to sign in and grant Drive access. Connect your Slack credential — Open the node named 9. Slack — Send Concise Preview. Click the credential dropdown and connect your Slack OAuth2 app. After connecting, invite the Slack bot to your target channel by typing /invite @your-bot-name inside that channel. Activate the workflow — Click Activate in the top right of n8n. Copy the form URL from node 1. Form — Content Tone Rewriter and bookmark it or share it with your team. How It Works (Step by Step) Step 1 — Form Trigger: Content Tone Rewriter You open the form in your browser and fill in four fields: your original text, the content type (Email, Social Media Caption, Blog Paragraph, Client Proposal, Product Description, or Other), your name or project name, and an optional target audience. When you submit, the workflow starts immediately. Step 2 — Set: Config Values This step loads your configuration and maps every form field into clean variables. It sets the Drive folder ID, Slack channel, and company name from your placeholders. It also builds the document title automatically — combining your project name with today's date — and records the exact time the workflow ran. Step 3 — AI Agent: Tone Rewriter (with GPT-4o-mini and Structured Output Parser) This step sends your original text to GPT-4o-mini along with the content type, target audience, and company name. The AI is instructed to return exactly five rewrites: Professional, Casual, Persuasive, Concise, and Empathetic. The 5. Parser — Structured Tone Output enforces a strict schema on the AI response, so if any tone version is missing or malformed, the parser catches it. All five versions must be present before the workflow moves forward. Step 4 — Code: Assemble Document Content This step takes the five AI-generated versions and combines them into one complete document. It adds a header showing the project name, content type, target audience, and run timestamp. Each tone version is separated by a clear divider line and labelled. It also prepares the Slack message, which shows the Concise version as a quick preview along with the project name and date. Step 5 — Code: Convert to Binary This step converts the assembled text document into a binary file that Google Drive can accept. It encodes the content and sets the filename to match the document title with a .txt extension. This step also passes the Slack channel and preview message forward for the parallel Slack step. Step 6 — Google Drive Upload: Upload Tone Doc This step uploads the binary file to the Google Drive folder you configured. The file is named with your project name and today's date. After this step, the complete five-version document is permanently saved in your Drive. Step 7 — Slack: Send Concise Preview This step runs in parallel with the Drive upload. It posts the Concise tone version to your configured Slack channel. The message includes the project name, content type, run time, and the full Concise rewrite. Your team can read and use the shortest version immediately without opening Drive. Key Features ✅ Five tones in one submission — no need to run the form five times or manually rewrite anything yourself ✅ Schema-enforced AI output — the structured parser guarantees all five versions are always returned, preventing incomplete results ✅ Auto-dated Drive documents — files are named with project name and date so your library stays organized with zero manual effort ✅ Parallel delivery — Drive upload and Slack notification run at the same time, so your team gets the preview while the document is saving ✅ Configurable defaults — target audience falls back to "General audience" if left blank, so the workflow never breaks on optional fields ✅ Any content type — the form dropdown covers six common content types so GPT-4o-mini adapts its rewrites appropriately to each format ✅ Single config node — all three configuration values live in one place (2. Set — Config Values), making updates fast and error-free Customisation Options Add more content types to the dropdown — Open node 1. Form — Content Tone Rewriter, find the Content Type field, and add new options such as "LinkedIn Post", "Press Release", or "SMS Message". Change the AI temperature — Open node 4. OpenAI — GPT-4o-mini Model and adjust the temperature value (currently 0.7). Lower it to 0.3 for more consistent, conservative rewrites. Raise it to 0.9 for more creative variation between versions. Swap GPT-4o-mini for a different model — Open node 4. OpenAI — GPT-4o-mini Model and change the model to gpt-4o if you want higher-quality rewrites and your usage allows the extra cost. Save to a dated subfolder in Drive — Add a Google Drive "Create Folder" step before node 8. Google Drive — Upload Tone Doc that creates a folder named by month, then pass that new folder's ID into the upload step instead of the static folderId. Email the document link after upload — Add a Gmail node after node 8. Google Drive — Upload Tone Doc to send the Drive file link to yourself or a client automatically after every submission. Add a sixth tone — In node 3. AI Agent — Tone Rewriter, add a sixth instruction inside the prompt (for example, "humorous"). Then update the schema in 5. Parser — Structured Tone Output to include the new key, and update node 6. Code — Assemble Document Content to include the sixth version in the document. Troubleshooting OpenAI credential not connecting: Confirm the API key is active and has not expired in your OpenAI account Make sure your OpenAI account has credit available — the workflow calls the API on every submission Re-enter the credential in 4. OpenAI — GPT-4o-mini Model if the connection shows an error Google Drive upload failing: Confirm the folder ID in 2. Set — Config Values is correct — open the Drive folder, look at the URL, and copy only the string after /folders/ Reconnect your Google Drive OAuth2 credential in 8. Google Drive — Upload Tone Doc if access was revoked Make sure the Google account you connected has edit access to that folder Slack message not appearing: Confirm the channel name in 2. Set — Config Values includes the # symbol Make sure you invited the Slack bot to the target channel using /invite @your-bot-name Reconnect the Slack OAuth2 credential in 9. Slack — Send Concise Preview if it shows as disconnected AI returning incomplete tone versions: The 5. Parser — Structured Tone Output enforces all five keys — if the AI skips one, the parser will throw an error visible in the execution log Check the prompt in 3. AI Agent — Tone Rewriter has not been accidentally edited to remove any of the five tone instructions Reduce the temperature in 4. OpenAI — GPT-4o-mini Model to 0.5 for more reliable structured responses Form submits but workflow does not run: Confirm the workflow is Activated — the toggle must be on in the top right of n8n Check that the form URL you are using matches the active webhook URL shown in node 1. Form — Content Tone Rewriter Support Need help setting this up or want a custom version built for your team or agency? 📧 Email: info@incrementors.com 🌐 Website: https://incrementors.com/
by Incrementors
Description Add your news topics to a Google Sheet once — with keywords, article limits, and an Active toggle — and every morning at 7AM a personalized news digest lands in your inbox automatically. The workflow fetches fresh articles from Google News for each active topic, parses the RSS feed to extract titles, sources, and timestamps, and uses GPT-4o-mini to write a clear 3-sentence summary per article. All summaries are grouped by topic, assembled into a styled HTML email with dark section headers and article cards, sent to your inbox via Gmail, and logged to a Digest Log sheet with topic count, article count, and sent time. Built for anyone who wants a personalized daily news briefing without manually visiting news sites or curating articles each morning. What This Workflow Does Reads active topics from Google Sheets and skips paused ones** — You control which topics appear in your digest by setting Active to TRUE or FALSE — no need to delete rows to pause a topic Fetches fresh articles from Google News RSS per topic** — Each topic's keywords are used to build a live Google News RSS query so you always get today's articles Respects per-topic article limits** — Each row in your Topics sheet has a Max Articles column so you can get 5 articles for important topics and 2 for lower-priority ones Skips topics with no results today** — If Google News returns nothing for a topic on a given day, that topic is silently skipped rather than breaking the workflow Summarizes each article in 3 plain sentences** — GPT-4o-mini reads the article title and description and writes a factual, no-bullet summary so you can scan the digest quickly Groups all summaries into one styled HTML email** — Articles are organized by topic with dark headers, article cards, source attribution, and time-ago labels — all ready to read in any email client Logs every digest run to Google Sheets** — Date, topics count, articles found, and sent time are saved in a Digest Log tab so you can track your daily coverage Setup Requirements Tools Needed n8n instance (self-hosted or cloud) Google Sheets (two tabs: Topics and Digest Log) OpenAI account with GPT-4o-mini API access Gmail account Credentials Required Google Sheets OAuth2 (used in 2. Google Sheets — Read Topics and 12. Google Sheets — Log Digest) OpenAI API key Gmail OAuth2 > ⚠️ Two separate Google Sheet IDs are used — replace YOUR_GOOGLE_SHEET_ID in 2. Google Sheets — Read Topics and YOUR_LOG_SHEET_ID in 12. Google Sheets — Log Digest. These can be the same spreadsheet or different ones — just make sure each uses the correct Sheet ID. > ⚠️ Your email address — replace YOUR_EMAIL_ADDRESS in 11. Gmail — Send Digest Email with the inbox where you want to receive your daily digest. Estimated Setup Time: 20–25 minutes Step-by-Step Setup Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Create your Topics tab — Open your Google Sheet → add a tab named Topics → add these 4 column headers in row 1: Topic, Search Keywords, Max Articles, Active → add your first topics with Active set to TRUE Example rows: | Topic | Search Keywords | Max Articles | Active | |---|---|---|---| | AI News | artificial intelligence 2025 | 3 | TRUE | | Cricket | india cricket latest | 2 | TRUE | Create your Digest Log tab — In the same spreadsheet or a new one → add a tab named Digest Log → add these 5 column headers: Date, Topics Count, Articles Found, Email Sent, Sent At Get your Google Sheet ID for Topics — Open the spreadsheet containing the Topics tab in a browser → copy the string between /d/ and /edit in the URL Connect Google Sheets for reading topics — Open node 2. Google Sheets — Read Topics → replace YOUR_GOOGLE_SHEET_ID with your actual Sheet ID → click the credential dropdown → add Google Sheets OAuth2 → authorize access Get your Digest Log Sheet ID — If the Digest Log tab is in the same spreadsheet, use the same Sheet ID; if it is a different spreadsheet, open it and copy that Sheet ID Connect Google Sheets for logging — Open node 12. Google Sheets — Log Digest → replace YOUR_LOG_SHEET_ID with the correct Sheet ID → confirm Google Sheets OAuth2 is selected Connect OpenAI — Open node 9. OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection Set your email address — Open node 11. Gmail — Send Digest Email → replace YOUR_EMAIL_ADDRESS in the Send To field with your actual email address Connect Gmail — Open the same node 11. Gmail — Send Digest Email → click the credential dropdown → add Gmail OAuth2 → complete the Google authorization flow Activate the workflow — Toggle the workflow to Active — it will run automatically every day at 7AM. To test immediately, click on node 1. Schedule — Every Day 7AM and use the manual Execute option. How It Works (Step by Step) Step 1 — Schedule: Every Day 7AM The workflow fires automatically every day at 7AM using the cron expression 0 7 * * *. It can also be triggered manually using the Execute option in n8n. Step 2 — Google Sheets: Read Topics All rows from your Topics tab are read. Each row contains a topic name, search keywords, max articles limit, and Active status. Step 3 — IF: Active Topics Only This filter checks the Active column for each row. If it equals TRUE (YES path), the topic is included and passes forward to the RSS fetch. If it is FALSE or blank (NO path), the topic is silently skipped — no error is thrown. This lets you pause any topic without deleting it from the sheet. Step 4 — HTTP: Fetch Google News RSS For each active topic, the Search Keywords value is used to build a Google News RSS URL — for example https://news.google.com/rss/search?q=artificial+intelligence+2025&hl=en-US. The RSS feed is fetched as plain text. Step 5 — Code: Parse RSS + Extract Articles The RSS XML text is parsed using regex to extract individual article items. For each item, the title, link, description, source name, and publication date are extracted. HTML tags are stripped from the description. A time-ago label is calculated (e.g. "3 hours ago") from the publication date. Only up to the Max Articles limit for that topic are kept. The output is one object containing the topic name and the articles array. Step 6 — IF: Has Articles? This check confirms whether any articles were found for this topic today. If the articles array has results (YES path), the topic proceeds to splitting and summarizing. If no articles were returned (NO path), the topic is silently skipped — the rest of the workflow continues normally with other topics. Step 7 — Code: Split Into Individual Articles The articles array is split into individual rows — one per article — each carrying the topic name, article title, link, description, source, time-ago, and publication date. Every article then flows through GPT separately. Step 8 — AI Agent: Summarize Article GPT-4o-mini receives the article title, description, and source for each article. The system prompt instructs GPT to write exactly 3 sentences in plain English — factual and specific, no bullet points, no formatting, maximum 60 words total. The 3 sentences are returned as plain text separated by line breaks. Step 9 — OpenAI: GPT-4o-mini Model This is the language model powering the article summaries. Step 10 — Code: Build HTML Email All summarized articles from all topics are collected together. They are grouped by topic name. For each topic, an emoji is assigned from a built-in map (🤖 for AI News, 🏏 for Cricket, ₿ for Bitcoin, ⚙️ for n8n, 🚀 for Startup India, 📰 for everything else). The HTML email is assembled with a dark header showing today's date, a blue stats bar with topic and article counts, topic sections with dark header blocks, and article cards with the article title as a link, source and time-ago, the 3-sentence summary, and a "Read full article →" link. The email is truncated to 4000 characters if needed. Total topic and article counts are also returned for the log step. Step 11 — Gmail: Send Digest Email The formatted HTML email is sent to your address via Gmail. The subject line is automatically set to ☀️ Your Daily News Digest — [Date]. The sender name is set to "Daily News Digest". Step 12 — Google Sheets: Log Digest One row is appended to your Digest Log tab with today's date, the number of topics that had articles, the total article count, Email Sent set to Yes, and the time the email was sent. Key Features ✅ Active toggle per topic — Set Active to FALSE in the sheet to pause any topic without deleting it — it is excluded from that day's digest and re-included when you set it back to TRUE ✅ Per-topic article limits — Each topic has its own Max Articles setting so you can get more coverage on high-priority topics and less on lower-priority ones ✅ Topics with no results are silently skipped — If Google News has nothing for a topic on a given day, it is skipped without breaking the workflow or generating an empty section in the email ✅ Emoji auto-assigned per topic — Topics like AI News, Cricket, and Bitcoin get recognizable emojis in the email header — making sections instantly scannable ✅ Time-ago labels on every article — Each article card shows how recently it was published (e.g. "2 hours ago") so you can tell at a glance which news is freshest ✅ Styled HTML email — no setup required — The email uses inline CSS with dark headers, article cards, and a footer — readable in Gmail, Outlook, and Apple Mail without any template configuration ✅ Daily run logged to Google Sheets — Every digest run is recorded with topic and article counts so you can track coverage trends over time Customisation Options Add a new topic — In your Topics tab, add a new row with the topic name, search keywords (any words or phrase you would search on Google News), your preferred article limit, and Active set to TRUE — it will appear in the next morning's digest. Change the digest delivery time — In node 1. Schedule — Every Day 7AM, edit the cron expression from 0 7 * * * to a different time — for example 0 6 * * * for 6AM or 0 8 * * 1-5 for weekdays only at 8AM. Add more topic emojis — In node 10. Code — Build HTML Email, add entries to the topicEmojis object — for example 'Finance': '💰' or 'Sports': '⚽' — so your new topics get a matching icon. Add a Slack notification alongside the email — After node 11. Gmail — Send Digest Email, add a Slack step that posts the topic count, article count, and a note that the digest has been sent to a #news-digest channel. Target a specific country in RSS results — In node 4. HTTP — Fetch Google News RSS, edit the URL to change &hl=en-US&gl=US&ceid=US:en to a different locale — for example &hl=en-IN&gl=IN&ceid=IN:en for India-specific news results. Troubleshooting Workflow not triggering at 7AM: Confirm the workflow is Active — inactive workflows do not run on a schedule Check that your n8n instance is running at 7AM — self-hosted instances that are off will not fire scheduled workflows Check your n8n server's timezone setting — the cron expression runs based on server time, which may differ from your local timezone To test immediately, click on node 1. Schedule — Every Day 7AM and use the manual Execute option No topics appearing in the email (digest sent with no articles): Confirm your Topics tab has at least one row with Active set to exactly TRUE (not true or True) — the filter check is case-insensitive but the value must be present Confirm YOUR_GOOGLE_SHEET_ID in node 2. Google Sheets — Read Topics is replaced with your actual Sheet ID Open the execution log of step 3 to check how many rows passed the active filter Articles not loading for a specific topic: The Search Keywords for that topic may be too specific or produce no results on Google News — try broader keywords or check the topic's keywords work in a direct Google News search Open the execution log of node 4. HTTP — Fetch Google News RSS and check the raw RSS response — if it is empty or returns an error, the keywords or URL format may be incorrect Some topics may simply have no new articles on a given day — the workflow skips them silently; this is expected behavior Gmail failing to send: Confirm the Gmail OAuth2 credential in node 11. Gmail — Send Digest Email is connected and not expired — re-authorize if needed Confirm YOUR_EMAIL_ADDRESS in the Send To field is replaced with a valid email address Check your Gmail account's daily sending limit — if you send many test runs, you may approach Gmail's limit Google Sheets log not saving rows: Confirm YOUR_LOG_SHEET_ID in node 12. Google Sheets — Log Digest is replaced with your actual Sheet ID — note this may differ from the Topics Sheet ID Confirm the tab is named Digest Log exactly and all 5 column headers in row 1 match exactly Check that the Google Sheets OAuth2 credential is connected in node 12 — it is easy to authorize in node 2 but forget in node 12 Support Need help setting this up or want a custom version built for your team or agency? 📧 Email: info@incrementors.com 🌐 Website: https://www.incrementors.com/
by Incrementors
Description Submit your landing page URL, current headline, conversion goal, and target audience using a simple form and the workflow does the rest. It scrapes your page, cleans the content, and sends everything to GPT-4o-mini which generates 10 headline variations — each using a different psychological framework such as benefit-led, pain-led, curiosity, urgency, and social proof. Every headline is scored on four dimensions and ranked by test priority. All 10 are logged to Google Sheets and a Gmail report groups them by priority with specific testing tips, ready to hand straight to your developer. Built for marketers, growth teams, and conversion specialists who want data-driven headline options without spending hours writing them manually. What This Workflow Does Scrapes the landing page for real context** — Fetches the actual page content so GPT generates headlines grounded in your real copy and offer — not generic variations Generates 10 headlines across 10 frameworks** — Each variation uses a different psychological approach: benefit-led, pain-led, curiosity, social proof, specificity, urgency, before and after, question, bold claim, and FOMO Scores every headline on four dimensions** — Clarity, emotional pull, specificity, and SEO fit are each rated 1–10 and averaged into an overall score Assigns test priority automatically** — The two strongest headlines are marked "Test First", the next three "Test Second", the next three "Test Third", and the remaining two "Lower Priority" Logs all 10 headlines to Google Sheets** — Each headline gets its own row with framework, copy, all four scores, priority label, and submission details Sends a Gmail report grouped by priority** — The email organises all 10 headlines into priority sections with a testing tip per headline and step-by-step instructions for running the A/B test Setup Requirements Tools Needed n8n instance (self-hosted or cloud) OpenAI account with GPT-4o-mini API access Google Sheets (one sheet with a tab named Headline Tests) Gmail account (the account you want to receive the report) Credentials Required OpenAI API key Google Sheets OAuth2 Gmail OAuth2 Estimated Setup Time: 10–15 minutes Step-by-Step Setup Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Fill in Config Values — Open node 2. Set — Config Values → replace all three placeholders: | Field | What to enter | |---|---| | PASTE_YOUR_GOOGLE_SHEET_ID_HERE | The ID from your Google Sheet URL (the string between /d/ and /edit) | | PASTE_YOUR_EMAIL_HERE | The email address where the headline report should be sent | | PASTE_YOUR_NAME_HERE | Your name for the email greeting and sign-off | Connect OpenAI — Open node 6. OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection Create your Google Sheet tab — Open your Google Sheet → add a tab named exactly Headline Tests → add these 13 column headers in row 1: Date, Page URL, Page Name, Headline #, Framework, Headline Copy, Clarity Score, Emotional Pull, Specificity, SEO Fit, Overall Score, Test Priority, Submitted By Connect Google Sheets — Open node 9. Google Sheets — Log Headline Tests → click the credential dropdown → add Google Sheets OAuth2 → sign in with your Google account → authorize access Connect Gmail — Open node 12. Gmail — Send Headline Report → click the credential dropdown → add Gmail OAuth2 → sign in with the Gmail account that matches your email address → authorize access Activate the workflow — Toggle the workflow to Active → copy the Form URL from node 1. Form — Landing Page Headline Generator → open it in a browser to submit your first page How It Works (Step by Step) Step 1 — Form: Landing Page Headline Generator You open the form URL in a browser and fill in six fields: the landing page URL, your current headline, the page name, the conversion goal (e.g. "Book a demo"), the target audience (e.g. "SaaS founders"), and your name. Submitting the form kicks off the entire workflow automatically. Step 2 — Set: Config Values Your Google Sheet ID, recipient email, sender name, and all six form inputs are stored here. Today's date is also generated automatically for the sheet log. Step 3 — HTTP: Scrape Landing Page An HTTP request fetches the raw HTML of the page URL you submitted with a 15-second timeout. The response is returned as plain text for cleaning. Step 4 — Code: Clean Page Content The raw HTML is cleaned by removing all script blocks, style blocks, HTML comments, navigation, header, and footer sections. Structural tag closings are converted to line breaks. All remaining HTML tags are stripped and common HTML entities are decoded. The result is capped at 3,500 characters. If the page returns less than 100 characters, the workflow throws an error and stops rather than sending near-empty content to GPT. Step 5 — AI Agent: Generate Headlines GPT-4o-mini receives the current headline, conversion goal, target audience, page name, and cleaned page content. It writes exactly 10 headline variations — one for each of the 10 psychological frameworks. Each headline is under 12 words and directly connected to the conversion goal. For each headline it returns: the framework name, the headline copy, four scores (clarity, emotional pull, specificity, SEO fit each from 1–10), an overall score as the average of the four, a test priority label, and one specific testing tip under 20 words. Step 6 — OpenAI: GPT-4o-mini Model This is the language model powering the generation step. It runs at temperature 0.7 for creative, varied headlines and is capped at 1,500 tokens to comfortably fit all 10 structured headlines in one response. Step 7 — Parser: Structured Headline Output This step enforces the exact array schema GPT-4o-mini must return. It validates that all 10 headlines are present and each has all required fields in the correct format before results move forward. Step 8 — Code: Split Headlines for Sheets The array of 10 headlines is converted into individual rows — one per headline — so each can be written to Google Sheets separately. An isLastRow flag is set to true only on headline number 10. The full headline array is also attached to the last row so the Gmail report has all 10 headlines available when it fires. Step 9 — Google Sheets: Log Headline Tests Each headline is appended as one row to your Headline Tests tab. All 13 columns are populated: date, page URL, page name, headline number, framework, headline copy, all four scores, overall score, test priority, and submitter name. All 10 rows are logged before the Gmail step fires. Step 10 — IF: All Headlines Logged? After each row is written, this check reads the isLastRow flag. If true (YES path — all 10 are logged), the workflow moves to build and send the Gmail report. If false (NO path — more rows still need logging), the workflow routes to 13. Set — More Rows and continues to the next headline. Step 11 — Code: Build Gmail Report All 10 headlines are sorted by overall score and grouped into their four test priority sections: Test First, Test Second, Test Third, and Lower Priority. Each section lists the framework, headline copy, overall score, all four sub-scores, and the specific testing tip. A step-by-step testing guide is appended at the end explaining how to run the A/B test starting with the Test First headlines and working down. The email subject includes the page name and today's date. Step 12 — Gmail: Send Headline Report The complete report is sent to your configured email address with no attribution footer. The full breakdown arrives in one plain-text email grouped by priority and ready to forward to your developer or testing tool. Step 13 — Set: More Rows This step handles non-final headline rows during the logging loop. It sets a brief in-progress message and the loop continues to the next row. Key Features ✅ Ten frameworks in one run — Every submission covers all major psychological approaches so you always have a diverse set of options ready to test ✅ Page-grounded headlines — GPT reads your actual page content before writing — every headline connects to your real offer and audience, not generic templates ✅ Four-dimension scoring — Clarity, emotional pull, specificity, and SEO fit are scored separately so you know exactly why each headline ranks where it does ✅ Automatic test priority ranking — No manual sorting needed — the two strongest headlines are flagged Test First so your team knows exactly where to start ✅ Gmail fires exactly once — The isLastRow flag ensures the report arrives after all 10 rows are logged, not after each individual headline ✅ Structured output enforced — A schema parser validates all 10 headlines and all required fields before anything reaches your sheet — no broken or incomplete rows ✅ Step-by-step testing instructions in the email — The Gmail report includes a testing guide so you can hand it directly to whoever runs your A/B tests ✅ Permanent headline library in Sheets — Every run adds 10 rows to your Headline Tests tab — over time you build a searchable database of headline ideas by page and framework Customisation Options Change the number of headlines — In node 5. AI Agent — Generate Headlines, edit the prompt to request a different number of headlines (e.g. 5 instead of 10) — also update the isLastRow check in node 8. Code — Split Headlines for Sheets to match the new count (h.headlineNumber === 5). Replace a framework with one specific to your industry — In node 5. AI Agent — Generate Headlines, edit the frameworks list in the prompt to swap one of the default options for something more relevant — for example replace "Fear of missing out" with "Authority and expertise" for B2B pages. Add a Slack notification when the report is ready — After node 12. Gmail — Send Headline Report, add a Slack step that posts the page name, top headline, and its score to a #growth or #marketing channel so your team sees the best headline immediately without checking email. Run audits on a recurring basis — Replace the form trigger with a Schedule trigger and a Set step with hardcoded page URLs to automatically re-audit the same pages every month and track whether your live headline score improves over time. Send headlines to a different team member per page — In node 2. Set — Config Values, add logic that maps the pageName field to different email addresses — for example pricing page audits go to the sales team, homepage audits go to the marketing lead. Troubleshooting Form submission not starting the workflow: Confirm the workflow is Active — inactive workflows do not receive form submissions Copy the Form URL fresh from node 1. Form — Landing Page Headline Generator after activating — URLs copied before activation will not work Make sure the Landing Page URL starts with http — the HTTP scrape step will fail on any other format Page scraping returning empty or very short content: Some pages block automated requests — add a User-Agent header to node 3. HTTP — Scrape Landing Page: Name = User-Agent, Value = Mozilla/5.0 (compatible; n8n-bot/1.0) If the page uses JavaScript rendering (e.g. React or Vue), the HTML may arrive empty — these pages cannot be scraped with a basic HTTP request Check the execution log of node 3 for the response status code — a 403 means the site is blocking bots OpenAI not generating all 10 headlines: Confirm the API key is connected in node 6. OpenAI — GPT-4o-mini Model and your account has available credits Check the execution log of node 5. AI Agent — Generate Headlines for the raw GPT response — if fewer than 10 headlines are returned, the schema parser in node 7 will flag the missing fields If the issue is consistent, increase maxTokens in node 6 from 1500 to 2000 to give GPT more room Google Sheets not logging all 10 rows: Confirm the Google Sheets OAuth2 credential in node 9. Google Sheets — Log Headline Tests is connected and not expired Check that PASTE_YOUR_GOOGLE_SHEET_ID_HERE in node 2. Set — Config Values is replaced with your actual sheet ID from the URL Confirm the tab is named Headline Tests exactly — capitalization must match sheetName in Config Values Verify all 13 column headers in row 1 match exactly: Date, Page URL, Page Name, Headline #, Framework, Headline Copy, Clarity Score, Emotional Pull, Specificity, SEO Fit, Overall Score, Test Priority, Submitted By Gmail report not arriving: Confirm the Gmail OAuth2 credential in node 12. Gmail — Send Headline Report is connected and authorized Check that PASTE_YOUR_EMAIL_HERE in node 2. Set — Config Values is replaced with your actual email address Check the execution log of node 10. IF — All Headlines Logged? to confirm isLastRow reached true — if it never fires YES, the 10th headline may not have been processed correctly Check your spam or promotions folder on the first send Support Need help setting this up or want a custom version built for your team or agency? 📧 Email: info@incrementors.com 🌐 Website: https://www.incrementors.com/
by Incrementors
Description Connect Fireflies to this workflow once and every client meeting you record automatically generates a polished recap email sent directly to your client. The moment transcription finishes, the workflow detects the client's email from the participant list, uses GPT-4o-mini to write a warm 250-word professional recap with key points and action items, and sends it via Gmail with your address as the reply-to. Every sent email is also logged to Google Sheets for tracking. Built for account managers, consultants, and agency owners who want to follow up with clients professionally after every call — without spending 15 minutes writing the email themselves. What This Workflow Does Triggers automatically when a meeting ends** — Fireflies fires the workflow the moment transcription completes, so the recap reaches your client while the meeting is still fresh Detects the client email intelligently** — Uses three strategies to find the right recipient: looks for an external participant domain, checks the meeting title for an embedded email, then falls back to your default client email Writes a warm professional recap** — GPT-4o-mini produces a 250-word email with a greeting, thank-you opener, key points as bullets, action items, and a sign-off — all grounded in real meeting content Sends the email via Gmail with your reply-to** — The email arrives from your Gmail account and replies come directly back to you, with no AI footprint or Fireflies links visible to the client Extracts the client name from their email** — Converts the email address into a readable first name for the greeting automatically Logs every sent recap to Google Sheets** — Appends a 7-column record per email including meeting date, title, client email, subject, status, and Fireflies link for delivery tracking Setup Requirements Tools Needed n8n instance (self-hosted or cloud) Fireflies.ai account with webhook access OpenAI account with GPT-4o-mini API access Gmail account (the account you want to send recaps from) Google Sheets (one sheet with a tab named Recap Email Log) Credentials Required Fireflies API key (pasted into 2. Set — Config Values) OpenAI API key Gmail OAuth2 Google Sheets OAuth2 Estimated Setup Time: 15–20 minutes Step-by-Step Setup Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Activate the workflow and copy the webhook URL — Toggle the workflow to Active → click on node 1. Webhook — Fireflies Transcript Done → copy the Production URL shown Register the webhook in Fireflies — Log in to app.fireflies.ai → Settings → Developer Settings → Webhooks → paste the webhook URL → save Get your Fireflies API key — In Fireflies, go to Settings → Integrations → Fireflies API → copy your API key Fill in Config Values — Open node 2. Set — Config Values → replace all placeholders: | Field | What to enter | |---|---| | YOUR_FIREFLIES_API_KEY | Your Fireflies API key from step 4 | | YOUR FULL NAME | Your name as it should appear in the email sign-off | | you@yourcompany.com | Your email address (must match the Gmail account you connect in step 8) | | YOUR COMPANY NAME | Your company name (used in the email sign-off and AI prompt) | | YOUR_GOOGLE_SHEET_ID | The ID from your Google Sheet URL (the string between /d/ and /edit) | | client@example.com | A fallback email used when no external participant is detected — set this to your most common client email or a test address | | yourcompany.com | Your company's email domain (e.g. incrementors.com) — used to identify which participant is the client | > ⚠️ Do NOT change the meetingId field — it is extracted automatically from the Fireflies webhook. Connect OpenAI — Open node 6. OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection Create your Google Sheet tab — Open your Google Sheet → add a tab named exactly Recap Email Log → add these 7 column headers in row 1: Date, Meeting Title, Client Email, Email Subject, Status, Fireflies URL, Logged At Connect Gmail — Open node 8. Gmail — Send Recap Email → click the credential dropdown → add Gmail OAuth2 → sign in with the Gmail account that matches senderEmail in your Config Values → authorize access Connect Google Sheets — Open node 9. Google Sheets — Log Sent Recaps → click the credential dropdown → add Google Sheets OAuth2 → sign in with your Google account → authorize access Activate the workflow — Confirm the workflow is Active — Fireflies will now fire it automatically after every recorded meeting How It Works (Step by Step) Step 1 — Webhook: Fireflies Transcript Done This step listens for a signal from Fireflies. Every time a meeting finishes transcribing, Fireflies sends a request to this webhook URL containing the meeting ID. The workflow fires instantly — no manual trigger is ever needed. Step 2 — Set: Config Values Your Fireflies API key, sender name, sender email, company name, Google Sheet ID, sheet tab name, default client email, your company domain, and the meeting ID are all stored here. The meeting ID is extracted automatically from all possible Fireflies payload formats. Step 3 — HTTP: Fetch Transcript A request is sent to the Fireflies API using your API key and the meeting ID. It retrieves the meeting title, date, duration, participants, transcript URL, gist, overview, bullet points, keywords, and action items from the Fireflies summary. Only lightweight summary fields are fetched — no full sentence-by-sentence transcript. Step 4 — Code: Extract Data and Detect Client Email This step runs three detection strategies to find the client email. First, it scans the participant list for any email address whose domain does not match your company domain — that participant is the client. Second, if no external participant is found, it checks whether an email address is embedded directly in the meeting title. Third, if neither strategy works, it falls back to the defaultClientEmail from your config. Once the client email is identified, the first name is extracted from the email address (e.g. john.smith@client.com becomes "John Smith") and used as the greeting name. All meeting metadata is also cleaned and formatted here. Step 5 — AI Agent: Write Recap Email GPT-4o-mini receives the meeting details, Fireflies summary, key points, action items, client name, and sender details. It writes a plain-text email following a fixed structure: a greeting using the client's name, a warm thank-you opener referencing the meeting topic, 3–4 bullet points summarizing key discussion points from the real meeting content, a next steps section listing action items, a warm closing sentence, and a sign-off with your name and company. The email contains no AI mentions, no Fireflies links, and no internal notes. Step 6 — OpenAI: GPT-4o-mini Model This is the language model powering the writing step. It runs at temperature 0.6 for a natural, warm writing style — not too creative and not too robotic — and is capped at 600 tokens to keep the email within the 250-word target. Step 7 — Code: Prepare Email Fields The AI-generated email body is read and validated — if it is under 50 characters, the step throws an error and stops rather than sending a broken email. The email subject line is assembled automatically as: Meeting Recap — [Meeting Title] — [Meeting Date]. All fields needed for both sending and logging are packaged into one clean output. Step 8 — Gmail: Send Recap Email The recap email is sent to the detected client email address. Your sender email is set as the reply-to address so any client reply comes directly back to your inbox. The email has no n8n attribution footer. Step 9 — Google Sheets: Log Sent Recaps At the same time as the email is sent, a new row is appended to your Recap Email Log tab with all 7 columns: meeting date, meeting title, client email, email subject, status (always "Sent"), the Fireflies transcript URL, and the logged-at timestamp. Both steps 8 and 9 run simultaneously — logging never delays sending. Key Features ✅ Three-strategy client email detection — Finds the right recipient from participant domain, meeting title, or fallback — no manual input needed per meeting ✅ No AI footprint in the email — The prompt explicitly forbids any mention of AI, automation, or Fireflies — the email reads as if you wrote it personally right after the call ✅ Reply-to set to your address — Client replies go directly to your inbox, not to an n8n webhook or unmonitored address ✅ Client name extracted automatically — The first name is parsed from the client's email address and used in the greeting without any manual entry ✅ Parallel sending and logging — Gmail sends and Google Sheets logs run at exactly the same time — the sheet is always current ✅ Error guard on AI output — If GPT fails to generate a proper email body, the workflow stops cleanly rather than sending a blank or broken message to a client ✅ Auto-generated subject line — The subject is assembled from the meeting title and date automatically — consistent format every time, no editing needed ✅ Lightweight Fireflies fetch — Only summary fields are pulled (no full transcript), keeping each API call fast and the response small Customisation Options Add CC to your manager — In node 8. Gmail — Send Recap Email, add a cc field in the options and set it to your manager's email address so they are automatically copied on every client recap without you having to remember. Change the email tone — In node 5. AI Agent — Write Recap Email, edit the prompt instruction from "warm professional" to "formal" or "casual" to match your relationship with different client types — you can also add client-specific instructions like "this client prefers very brief emails." Send a Slack notification after every sent recap — After node 8. Gmail — Send Recap Email, add a Slack node that posts to a #client-updates channel with the client email, meeting title, and a note that the recap was sent — giving your team visibility without checking the sheet. Add a 10-minute delay before sending — After node 7. Code — Prepare Email Fields, add a Wait step set to 10 minutes before the Gmail step — giving you a window to check the Google Sheet log and cancel if something looks wrong before the client receives it. Use a different email for different client domains — In node 4. Code — Extract Data and Detect Client Email, add a lookup object that maps known client domains to specific sender names or email addresses — useful for agencies managing multiple branded accounts. Troubleshooting Workflow not triggering when a meeting ends: Confirm the workflow is Active — inactive workflows do not receive Fireflies webhooks Log in to app.fireflies.ai → Settings → Developer Settings → Webhooks → confirm the URL matches the Production URL from node 1. Webhook — Fireflies Transcript Done exactly Fireflies only fires webhooks for meetings where you are the organizer — guest meetings will not trigger it Email sent to the wrong person or to the fallback address: Check that yourEmailDomain in node 2. Set — Config Values is your actual company domain (e.g. incrementors.com, not @incrementors.com) — the @ symbol must not be included Check the participant list in the Fireflies transcript for this meeting — if all participants share your domain, the workflow will fall through to defaultClientEmail For internal-only meetings, update defaultClientEmail to a safe test address so the fallback does not send to a real client Gmail credential error or email not sending: Confirm the Gmail OAuth2 credential in node 8. Gmail — Send Recap Email is connected with the same Gmail account as senderEmail in Config Values — mismatched accounts cause auth failures If the Gmail credential expired, re-authorize it in n8n Settings → Credentials → find the Gmail credential → reconnect OpenAI not generating the email body: Confirm the API key is connected in node 6. OpenAI — GPT-4o-mini Model and your account has available credits If the generated body is under 50 characters, step 7. Code — Prepare Email Fields throws an error and stops the workflow — check the execution log of node 5. AI Agent — Write Recap Email for the raw GPT response Google Sheets not logging rows: Confirm the Google Sheets OAuth2 credential in node 9. Google Sheets — Log Sent Recaps is connected and not expired — re-authorize if needed Check that YOUR_GOOGLE_SHEET_ID in node 2. Set — Config Values is the ID from the sheet URL, not the full URL Confirm the tab is named Recap Email Log exactly — capitalization must match sheetName in Config Values Verify all 7 column headers in row 1 match exactly: Date, Meeting Title, Client Email, Email Subject, Status, Fireflies URL, Logged At Support Need help setting this up or want a custom version built for your team or agency? 📧 Email: info@incrementors.com 🌐 Website: https://www.incrementors.com/
by WeblineIndia
AI-Powered Abandoned Cart Recovery (WooCommerce + CoCart + n8n) This workflow automatically tracks abandoned carts from a WooCommerce store, waits for a defined time, rechecks the cart status, generates a personalized reminder email using AI, sends it to the customer via Gmail and notifies the internal team on Slack. It helps recover lost revenue by following up with customers at the right time using personalized, human-friendly messaging — without any manual work. This workflow listens for abandoned cart events from your store, waits for a configurable delay (such as 30–60 minutes), verifies whether the cart is still unpaid and then automatically sends a personalized reminder email generated by AI. At the same time, it sends a Slack notification to your internal team for visibility. You receive: Automated abandoned cart detection** AI-generated personalized reminder emails** Customer email delivery via Gmail** Internal Slack notifications for your team** Ideal for ecommerce teams who want a simple, automated way to recover abandoned carts and improve conversion rates. What It Does This workflow automates the full abandoned cart recovery process: Receives abandoned cart data from the store via webhook. Normalizes incoming cart and customer information. Waits for a defined time to allow natural checkout completion. Rechecks the cart status using the CoCart API. Validates whether: Items are still in the cart Payment is still pending Generates a personalized reminder email using OpenAI. Extracts email subject and body from AI output. Sends the reminder email to the customer via Gmail. Sends a Slack message to notify the internal team. If the cart is already completed, the workflow stops automatically. Who’s It For This workflow is ideal for: Ecommerce store owners WooCommerce merchants Marketing teams handling cart recovery Sales teams tracking abandoned purchases Agencies building automation for ecommerce clients Anyone wanting automated abandoned cart follow-ups Requirements to Use This Workflow To run this workflow, you will need: n8n instance** (cloud or self-hosted) WooCommerce store** CoCart plugin** installed and configured OpenAI API key** Gmail account** with OAuth access Slack workspace** (for internal notifications) Basic understanding of webhooks and API responses How It Works Webhook Trigger – Store sends abandoned cart data to n8n. Data Normalization – Cart key, email, product details are structured. Wait Period – Workflow pauses for a defined time (30–60 minutes). Recheck Cart – Cart status is fetched again from CoCart. Abandoned Cart Validation – Checks if items exist and payment is pending. AI Email Generation – OpenAI creates a friendly reminder email. Email Parsing – Subject and body are extracted from AI output. Customer Email – Gmail sends the reminder to the customer. Slack Notification – Internal team is notified about the abandoned cart. Setup Steps Import the provided n8n workflow JSON file. Connect the Webhook node to your store so abandoned cart data is sent correctly. Configure the Wait node with your desired delay (example: 30–60 minutes). Ensure the CoCart API endpoint is accessible and accepts the cart key. Connect your OpenAI account to generate email content. Configure the Gmail node to send reminder emails to customers. Connect Slack credentials to receive internal notifications. Activate the workflow — abandoned cart recovery starts automatically. How To Customize Nodes Customize Wait Time Adjust the Wait node to: Send reminders faster (15–30 minutes) Send reminders later (1–2 hours) Customize Email Content Modify the AI Agent prompt to: Change email tone (formal, friendly, urgent) Add discount messaging Include brand voice or CTA text Customize Slack Notifications You can: Change the Slack channel Add mentions (@team, @sales) Include cart value or product links Add-Ons (Optional Enhancements) You can extend this workflow to: Send multiple reminder emails (1st, 2nd, final) Add SMS or WhatsApp reminders Apply discount codes automatically Track recovered carts in a database Segment customers by cart value Add analytics or dashboards Use Case Examples 1\. Cart Recovery Recover lost sales automatically without manual follow-ups. 2\. Sales Team Visibility Slack alerts keep your team informed of high-value abandoned carts. 3\. Personalized Marketing AI generates human-like emails tailored to each customer. 4\. Scalable Automation Works for one store or hundreds of carts per day. Troubleshooting Guide | Issue | Possible Cause | Solution | |---------------------|------------------------------|-----------------------------------------------| | No webhook data | Webhook not connected | Verify store webhook URL | | Email not sent | Gmail not authenticated | Reconnect Gmail credentials | | Cart always skipped | IF conditions incorrect | Check item count & payment status | | AI output empty | OpenAI API issue | Verify API key and limits | | Slack alert missing | Wrong channel or token | Reconnect Slack credentials | Need Help? If you need help customizing or extending this workflow with advanced features such as adding multi-step reminders, discounts, analytics or scaling it for production, then our n8n automation experts at WeblineIndia are happy to assist you.
by isaWOW
Description Automatically convert any video URL into a fully structured, publish-ready SEO blog post using WayinVideo AI transcription, GPT-4o-mini, and Google Sheets — zero manual writing required. What This Workflow Does This workflow takes a single video URL and does everything for you. It transcribes the video using WayinVideo — a powerful multilingual video transcription API that accurately converts spoken content into clean, structured text — then passes that transcript to an AI Agent that writes a complete SEO blog post with title, meta description, slug, sections, FAQs, key takeaways, and tags. The final output is saved directly as a draft row in Google Sheets, ready for review and publishing. Perfect for content marketers, YouTubers, agencies, and SEO teams who want to repurpose video content at scale without touching a keyboard. Key Features AI-powered transcription via Wayin: Uses the WayinVideo API to transcribe any video URL into clean, timestamped text segments with word count and duration metadata — supporting multilingual content. Smart polling loop: Automatically polls Wayin every 5 seconds until transcription is complete — no manual waiting or webhook setup needed. Structured SEO output: GPT-4o-mini generates a complete blog post with H2 sections (300+ words each), meta description (155 chars), URL slug, focus keyword, secondary keywords, FAQs, and a CTA conclusion. Strict JSON schema enforcement: A Structured Output Parser validates every AI response — no broken outputs, no missing fields. Google Sheets auto-logging: Every blog post is instantly saved as a draft row with date, video URL, word count, read time, tags, and status. Webhook-triggered: Works as part of any larger pipeline — trigger it from Make, Zapier, or your own frontend. How It Works Receive Video URL — Webhook accepts a POST request with {"url": "your-video-link"} Submit Transcription — Wayin — Sends the video URL to WayinVideo API to start English transcription job Poll Transcription Status — Fetches job status using the transcription ID every 5 seconds Wait 5 Seconds — Pauses execution between each poll attempt to avoid rate limits Is Transcription Complete? — IF status = SUCCEEDED → move forward, ELSE → re-poll Process Transcript Data — Joins all text segments, calculates word count and video duration Generate SEO Blog Post — AI Agent (GPT-4o-mini) writes the full structured blog post Parse Blog JSON Output — Enforces strict JSON schema and auto-fixes any format issues Save to Google Sheets — Appends all blog fields as a new draft row Return Success Response — Sends confirmation back to the webhook caller Setup Requirements Tools you'll need: Active n8n instance (self-hosted or n8n Cloud) WayinVideo account + API key (for video transcription) OpenAI API key (GPT-4o-mini for blog generation) Google Sheets with OAuth access (for draft storage) Estimated setup time: 10–15 minutes Configuration Steps 1. Add credentials in n8n: OpenAI API key Google Sheets OAuth API 2. Add your WayinVideo API Key: Open Submit Transcription — Wayin node → replace YOUR_WAYIN_API_KEY in the Authorization header Open Poll Transcription Status node → replace YOUR_WAYIN_API_KEY in the Authorization header 3. Set up your Google Sheet: Create a sheet with these exact column headers: Date | Video URL | SEO Title | Slug | Focus Keyword | Meta Description | Secondary Keywords | Read Time | Tags | Word Count | Duration (min) | Status 4. Update Sheet Document ID: Open Save to Google Sheets node Replace YOUR_GOOGLE_SHEET_DOCUMENT_ID with your actual Sheet ID (found in the Google Sheet URL) 5. Test the workflow: Activate the workflow Send a POST request to your webhook URL: POST https://your-n8n-domain/webhook/43129e0a-... Body: {"url": "https://youtube.com/watch?v=example"} Check your Google Sheet for the new draft row Use Cases Content marketers: Repurpose every YouTube video, webinar, or podcast episode into an SEO blog post automatically — 10x your content output without extra writing. SEO agencies: Generate first-draft blog posts for clients from recorded calls, demos, or training videos in minutes. Course creators: Turn every lesson or tutorial video into a standalone blog post to drive organic search traffic. YouTubers & podcasters: Build a content library of written posts from existing video content with zero extra effort. Customization Options Change the AI model: Replace gpt-4o-mini with gpt-4o or gpt-4-turbo in both OpenAI nodes for higher quality output on complex topics. Add WordPress publishing: Connect a WordPress REST API node after Save to Google Sheets to auto-publish instead of saving as draft. Change output language: Modify the WayinVideo API target_lang parameter and GPT system prompt to generate blog posts in any language. Adjust blog structure: Edit the system prompt in Generate SEO Blog Post to change section count, word targets, tone, or add custom fields like author bio or schema markup. Add Slack/email notifications: Insert a Slack or Gmail node after Return Success Response to notify your team when a new draft is ready. Troubleshooting Transcription stuck in polling loop: Check your WayinVideo API key is valid and the video URL is publicly accessible. Private or age-restricted videos may fail. AI output missing fields: The Structured Output Parser auto-fixes most issues. If errors persist, add explicit field instructions to the GPT system prompt. Google Sheets not updating: Verify OAuth credentials are connected and the Sheet Document ID is correct (not the full URL, just the ID string between /d/ and /edit). Webhook not triggering: Make sure the workflow is activated (toggle ON) before sending test requests. Test mode webhooks use a different URL than production. Resources WayinVideo — Transcription API n8n Documentation OpenAI API Reference Google Sheets API Support Need help setting up or want a custom version built for your use case? 📧 Email: info@isawow.com 🌐 Website: https://isawow.com/
by isaWOW
Description Submit your webinar recording URL along with the webinar title, host name, company name, date, and CTA link and the workflow automatically handles every follow-up. WayinVideo summarizes the webinar and extracts numbered highlights, then GPT-4o-mini writes a personalized 150–200 word email per registered Salesforce lead — addressing them by first name, referencing their role and company, and citing 2–3 specific things covered in the webinar. Gmail sends each email, Salesforce logs a completed Task activity on each lead record, and Google Sheets logs every send with the Salesforce Task ID. Built for marketing teams, sales teams, and agencies who want to follow up with every registered lead immediately after a webinar ends — without writing a single email manually. What This Workflow Does Summarizes the webinar automatically** — WayinVideo extracts a structured summary with numbered highlights from the recording so GPT has real content to reference in every email Fetches all registered leads from Salesforce** — A query pulls up to 500 leads where the webinar name matches your Salesforce custom field — no manual list export needed Writes a personalized email per lead** — GPT addresses each lead by first name, references their job title and company, and cites 2–3 specific webinar highlights relevant to their role Sends each email via Gmail** — Every lead receives a personalized email sent from your Gmail account with your company name as the sender Logs a completed Task on each Salesforce lead record** — A Task activity is created with WhoId linking it to the correct lead — so your CRM shows the follow-up was completed and when Logs every send to Google Sheets** — Each row captures the webinar title, lead details, email subject, personalized intro, Salesforce Lead ID, Salesforce Task ID, sent status, and timestamp Polls automatically until the summary is ready** — Waits 90 seconds then checks every 30 seconds until WayinVideo finishes processing the recording Setup Requirements Tools Needed n8n instance (self-hosted or cloud) WayinVideo account with API access OpenAI account with GPT-4o-mini API access Salesforce org with OAuth2 access and a Webinar_Name__c custom field on the Lead object Gmail account connected via OAuth2 Google Sheets (one sheet with a tab named Follow-up Log) Credentials Required WayinVideo API key (pasted into 2. WayinVideo — Submit Summarization and 4. WayinVideo — Get Summary Results) OpenAI API key Salesforce OAuth2 (used in 8. Salesforce — Query Registered Leads and 13. Salesforce — Log Email as Activity) Gmail OAuth2 Google Sheets OAuth2 > ⚠️ WayinVideo API key appears in 2 steps — replace YOUR_WAYINVIDEO_API_KEY in both 2. WayinVideo — Submit Summarization and 4. WayinVideo — Get Summary Results. Missing either one will cause the workflow to fail. Estimated Setup Time: 30–40 minutes Step-by-Step Setup Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Get your WayinVideo API key — Log in to your WayinVideo account → go to Account Settings → copy your API key Add your WayinVideo API key to node 2 — Open node 2. WayinVideo — Submit Summarization → find the Authorization header value Bearer YOUR_WAYINVIDEO_API_KEY → replace YOUR_WAYINVIDEO_API_KEY with your actual key Add your WayinVideo API key to node 4 — Open node 4. WayinVideo — Get Summary Results → find the same Authorization header → replace YOUR_WAYINVIDEO_API_KEY with the same key Connect OpenAI — Open node 10. OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection Verify your Salesforce custom field — In your Salesforce org, confirm the Lead object has a field with the API name Webinar_Name__c that is populated at registration time. If your field has a different API name, open node 8. Salesforce — Query Registered Leads and update the SOQL query to use your actual field name. Connect Salesforce for lead query — Open node 8. Salesforce — Query Registered Leads → click the credential dropdown → add Salesforce OAuth2 → complete the authorization flow in your browser Connect Salesforce for task logging — Open node 13. Salesforce — Log Email as Activity → click the credential dropdown → select the same Salesforce OAuth2 credential Connect Gmail — Open node 12. Gmail — Send Follow-Up Email → click the credential dropdown → add Gmail OAuth2 → complete the Google authorization flow Create your Google Sheet tab — Open your Google Sheet → add a tab named exactly Follow-up Log → add these 10 column headers in row 1: Webinar Title, Lead Email, Lead Name, Lead Company, Email Subject, Personalized Intro, Salesforce Lead ID, Salesforce Task ID, Sent Status, Sent On Get your Google Sheet ID — Open your Google Sheet in a browser → copy the string between /d/ and /edit in the URL — this is your Sheet ID Connect Google Sheets — Open node 14. Google Sheets — Log Follow-Up → click the document field → replace YOUR_GOOGLE_SHEET_ID by selecting your spreadsheet or entering the Sheet ID manually → click the credential dropdown → add Google Sheets OAuth2 → authorize access Activate the workflow — Toggle the workflow to Active → copy the Form URL from node 1. Form — Webinar URL + Details → open it in a browser to submit your first webinar How It Works (Step by Step) Step 1 — Form: Webinar URL + Details You open the form URL and fill in six fields: the webinar recording URL, the webinar title (which must match the value in your Salesforce Webinar_Name__c field exactly), the host or speaker name, the company or brand name, the webinar date, and the CTA link for the follow-up email. Submitting the form starts the entire pipeline. Step 2 — HTTP: WayinVideo — Submit Summarization The webinar URL is sent to WayinVideo's Summarization API. WayinVideo accepts the job and returns a task ID confirming the summarization has started. Step 3 — Wait: 90 Seconds The workflow pauses 90 seconds before the first status check, giving WayinVideo time to process the recording. Step 4 — HTTP: WayinVideo — Get Summary Results A GET request checks the summarization results endpoint using the task ID. It returns the current status and, once complete, the summary text, highlights array, and tags array. Step 5 — IF: Summary Complete? This is the polling gate. If the status equals SUCCEEDED (YES path), the summary is ready and the workflow moves forward. If still processing (NO path), the workflow routes to 6. Wait — 30 Seconds Retry which pauses 30 seconds then loops back to step 4. This repeats until SUCCEEDED. Step 6 — Wait: 30 Seconds Retry When the summary is not yet ready, the workflow waits 30 seconds then returns to step 4 for another check. Step 7 — Code: Extract Summary Data The summary text, numbered highlights (formatted as 1. highlight, 2. highlight, etc.), and tags are extracted from the WayinVideo results. All six form inputs are also packaged here. Everything is assembled into one clean object that feeds both the Salesforce query and the GPT email prompt. Step 8 — Salesforce: Query Registered Leads A SOQL query runs against your Salesforce org to fetch all leads where Webinar_Name__c matches the webinar title you entered in the form, with a limit of 500 leads. The results include each lead's first name, last name, email, company, and job title. Each lead becomes one email to send. Step 9 — AI Agent: Write Personalized Email GPT-4o-mini receives the full lead details (first name, last name, email, company, job title) alongside the webinar context (title, host name, company, date, CTA link, recording URL, full summary, and numbered highlights). It writes a 150–200 word email in three labeled sections: a subject line 45–55 characters long referencing the webinar topic, a 1–2 sentence personalized opening that references the lead's role or company, and the full email body starting with "Hi [FirstName]" — warm in tone, referencing 2–3 specific highlights, including the recording URL and CTA link, and ending with the host's name as the signature. Step 10 — OpenAI: GPT-4o-mini Model This is the language model powering the personalized email writing for each lead. Step 11 — Code: Parse Email Output The three labeled sections — SUBJECT_LINE, PERSONALIZED_INTRO, and EMAIL_BODY — are extracted from the GPT output using regex. Lead details from step 8 and webinar details from step 7 are also packaged for the Gmail, Salesforce, and Sheets steps. If the subject line is not found, a fallback subject using the webinar title is used. Step 12 — Gmail: Send Follow-Up Email The personalized email is sent to the lead's email address using the full email body from GPT. The sender name is set to your company name from the form. Each lead receives their own individual email — not a broadcast. Step 13 — Salesforce: Log Email as Activity A completed Task is created in Salesforce linked to the lead's record using their Salesforce Lead ID as the WhoId. The Task is marked Completed with today's date, Normal priority, and a description that includes the webinar title, email subject, and the lead's email address. This means your CRM reflects the follow-up as done immediately. Step 14 — Google Sheets: Log Follow-Up One row is appended to your Follow-up Log tab with all 10 columns: webinar title, lead email, lead full name, lead company, email subject, personalized intro, Salesforce Lead ID, Salesforce Task ID (returned by step 13), Sent Status set to Sent, and the current timestamp. The final result is a personalized email sent to every registered lead, a completed CRM Task on every lead record, and a full send log in Google Sheets — all triggered by one form submission. Key Features ✅ Personalized per lead using their first name, title, and company — Every email addresses the lead by name and frames the webinar highlights around their specific role — not a mass blast ✅ Webinar highlights referenced in every email — GPT cites 2–3 numbered highlights from the actual webinar content — making each email feel relevant to what the lead attended ✅ Salesforce Task logged with WhoId association — Each completed Task is linked to the correct lead record via WhoId — your CRM shows the follow-up is done without any manual logging ✅ Recording URL included in every email — Every lead gets a link to rewatch the recording so they can engage further without needing a separate reminder email ✅ Up to 500 leads processed per run — The Salesforce SOQL query fetches up to 500 registered leads so even large webinars are covered in one form submission ✅ Sender name set to your company — Gmail sends each email with your company or brand name as the sender — not a generic n8n address ✅ Salesforce Task ID captured in Google Sheets — The sheet log includes the Task ID returned by Salesforce so you can cross-reference sends against CRM records at any time Customisation Options Add a retry limit to stop infinite polling — Before node 6. Wait — 30 Seconds Retry, add a Set step that increments a poll counter, then add a second IF check to stop after 15 polls and send a Gmail error notification to the form submitter instead of looping indefinitely. Use a different Salesforce field to match leads — In node 8. Salesforce — Query Registered Leads, edit the SOQL query to use a different field if your org does not use Webinar_Name__c — for example Campaign_Name__c or a tag field — as long as it identifies which leads attended which webinar. Add a Salesforce lead status update after sending — After node 13. Salesforce — Log Email as Activity, add a Salesforce Update step that sets the lead's Status to "Webinar Follow-Up Sent" so your sales team can filter CRM views by follow-up status. Add a Slack notification when all emails are sent — After the last lead row is processed, add a Slack step that posts the webinar title and total number of emails sent to a #marketing or #sales channel so your team knows the follow-up campaign is complete. Change the email length — In the system prompt of node 9. AI Agent — Write Personalized Email, change the rule from 150-200 words to 100-150 words for shorter emails or 200-250 words for more detailed follow-ups depending on your audience preference. Troubleshooting WayinVideo returning an error on submission: Confirm YOUR_WAYINVIDEO_API_KEY in node 2. WayinVideo — Submit Summarization is replaced with your actual API key — not the placeholder Confirm the same replacement was made in node 4. WayinVideo — Get Summary Results — both steps require the key Check the execution log of node 2 for the raw error — a 401 means wrong key, a 422 means the URL format is unsupported Salesforce query returning zero leads: Confirm the Webinar Title you entered in the form exactly matches the value stored in the Webinar_Name__c field on your lead records — including capitalization and spacing Open node 8. Salesforce — Query Registered Leads and review the SOQL query — if your field name is different from Webinar_Name__c, update it to match your org's actual API field name Confirm the Salesforce OAuth2 credential is connected and your user has permission to query Lead records Gmail sending errors: Confirm the Gmail OAuth2 credential in node 12. Gmail — Send Follow-Up Email is connected and not expired — re-authorize if needed Check that the lead's Email field in Salesforce is populated — leads with empty email fields will cause this step to fail Gmail has a daily sending limit — if you are sending to more than ~500 leads in one run, consider using a transactional email service instead Salesforce Task not being created: Confirm the Salesforce OAuth2 credential in node 13. Salesforce — Log Email as Activity has permission to create Task records — some restricted Salesforce profiles block Task creation via API Check the execution log of node 13 for the raw Salesforce error — a common issue is the WhoId field not accepting Lead IDs if your org has Task configuration restrictions Confirm the lead ID from step 8 is being passed correctly — check the execution log of node 11. Code — Parse Email Output to verify leadId is populated Google Sheets not logging rows: Confirm YOUR_GOOGLE_SHEET_ID in node 14. Google Sheets — Log Follow-Up is replaced with your actual sheet ID from the URL Confirm the tab is named Follow-up Log exactly and all 10 column headers in row 1 match exactly Check that the Google Sheets OAuth2 credential is connected and not expired — re-authorize if needed Support Need help setting this up or want a custom version built for your team or agency? 📧 Email:info@isawow.com 🌐 Website:https://isawow.com
by isaWOW
Submit a call recording and get a full AI-powered analysis delivered automatically. Your recording is transcribed with OpenAI Whisper, then GPT-4o breaks down sentiment, objections, buying signals, deal risk, next steps, and a ready-to-send follow-up email. Results are saved to Airtable, posted to your Slack channel, and shown to the rep as a rich summary page the moment the form is submitted. This workflow is built for sales teams, revenue operations managers, and sales coaches who want consistent call intelligence without manual review. What This Workflow Does Automatic transcription** — downloads your audio file and converts it to text using OpenAI Whisper, handling mp3, wav, and m4a formats Deep AI analysis** — GPT-4o reads the full transcript and identifies sentiment, deal risk, momentum, objections with direct quotes, and buying signals Deal stage recommendation** — suggests whether the deal should advance, stay, or retreat based on what actually happened on the call Coaching feedback** — generates one specific, actionable coaching tip for the rep based on their talk ratio and call behaviour CRM-ready note** — writes a professional 2–3 sentence note you can paste directly into any CRM Follow-up email draft** — generates a warm, personalised follow-up email referencing something the prospect actually said Multi-channel delivery** — saves the full analysis to Airtable, sends a summary to Slack, and shows the rep an HTML results page instantly Setup Requirements Tools you'll need Active n8n instance (self-hosted or n8n Cloud) OpenAI account with API access (Whisper + GPT-4o) Airtable account with a base and table ready Slack workspace with an incoming webhook configured Estimated Setup Time: 15–20 minutes Step-by-Step Setup Get your OpenAI API key Go to https://platform.openai.com/api-keys and create a new secret key. In n8n, open the 4. OpenAI — Transcribe with Whisper1 node → find the Authorization header → replace YOUR_OPENAI_API_KEY with your key. > ⚠️ This key appears in 1 node (Whisper). The AI Agent uses a separate n8n credential — see step 2. Connect your OpenAI credential for the AI Agent In n8n: go to Credentials → Add credential → OpenAI API → paste your API key. Open the 7. OpenAI — Chat Model (GPT-4o) node → select your new credential from the dropdown. Connect your Airtable credential In n8n: go to Credentials → Add credential → Airtable Personal Access Token → paste your token (get it at https://airtable.com/create/tokens). Open the 9. Airtable — Save Full Analysis node → select your credential, then choose your base and table from the dropdowns. Your Airtable table should have columns matching these names exactly: Submission ID, Rep Name, Rep Email, Company, Contact Name, Contact Email, Deal Stage (Before), Deal Stage (AI Recommended), Deal Value, Call Duration (min), Word Count, Sentiment, Sentiment Score, Primary Intent, Deal Risk, Deal Momentum, Objection Count, Buying Signal Count, Competitors Mentioned, Summary, CRM Note, Coaching Tip, Rep Talk Ratio, Follow-up Email Draft, Submitted At, Processed At. Connect your Slack webhook In Slack, go to https://api.slack.com/apps → create an app → enable Incoming Webhooks → copy the webhook URL. In n8n, go to Credentials → Add credential → Slack → Webhook → paste the URL. Open the 10. Slack — Post Analysis to Channel node → select your Slack credential. Activate the workflow Click the toggle at the top of the workflow editor to set it to Active. Copy the form URL from the 1. Form — Sales Rep Submits Call1 node and share it with your sales team. How It Works (Step by Step) Step 1 — Form (n8n Form Trigger) The sales rep fills out a web form with their name, email, the prospect's details, current deal stage, estimated deal value, and a direct link to the audio recording. They can also add optional notes before the analysis runs — for example, flagging that a competitor was mentioned. When they submit, the workflow starts automatically. Step 2 — Code: Clean & Validate Form Data The workflow reads and cleans every field from the form submission. It strips extra whitespace, normalises email addresses to lowercase, and checks that required fields — rep name, email, company, contact name, and audio link — are all present. If anything is missing, the workflow stops and returns an error immediately. A unique submission ID is generated (formatted as CALL- followed by a timestamp) so every call record is trackable. Step 3 — HTTP: Download Audio File The workflow makes an HTTP request to the audio URL the rep provided and downloads the file. It supports any direct-download link to an mp3, wav, or m4a file. A 60-second timeout is set in case the file is slow to download. Step 4 — OpenAI: Transcribe with Whisper The downloaded audio is sent to OpenAI's Whisper API. Whisper converts the spoken audio into a full text transcript with timestamps. The response format is set to verbose_json so the workflow receives structured output. This step has a 3-minute timeout for long calls. Step 5 — Code: Merge Transcript with Call Data The transcript text is pulled from the Whisper response and checked — if it comes back empty, the workflow throws an error explaining the audio may be silent or corrupted. The word count is calculated, then the transcript is merged together with all the original form data so the next step has everything it needs in one place. Step 6 — AI Agent: GPT-4o Sales Analysis The full transcript and all call metadata are passed to a GPT-4o AI agent with a detailed system prompt. The agent is instructed to return a single valid JSON object containing: a 3–5 sentence summary, overall sentiment with a score out of 100, primary prospect intent, deal risk level, deal momentum, a recommended deal stage, estimated rep talk ratio, a list of objections with direct quotes, buying signals, competitor names, next steps with owners and deadlines, a coaching tip, a CRM note, and a personalised follow-up email draft. The agent is told never to hallucinate — if something isn't in the transcript, it returns an empty array or null. Step 7 — Code: Parse & Combine AI Analysis The raw text output from the AI agent is cleaned of any accidental markdown formatting, then parsed as JSON. The parsed analysis is merged with the original call data into one complete record, and a processedAt timestamp is added. Step 8, 9, 10 — Fan-out: Airtable, Slack, and HTML Page The complete record is sent to three places simultaneously. The 9. Airtable — Save Full Analysis node creates a new row with all 26 fields. The 10. Slack — Post Analysis to Channel node sends a notification to your sales channel. The 11. Code — Build HTML Confirmation Page node builds a formatted HTML results page — including summary, sentiment score, objections, next steps, coaching tip, and the full follow-up email draft — which is returned directly to the rep via the 12. Webhook — Show Results Page to Rep node as their form confirmation. Key Features ✅ Audio format flexibility — works with mp3, wav, and m4a files from any direct-download URL ✅ Quote-backed objection detection — every objection includes a direct quote from the transcript, not a paraphrase ✅ Deal stage intelligence — compares the rep's reported stage with the AI's recommended stage after the call ✅ Rep talk ratio — estimates how much the rep vs. the prospect spoke, enabling targeted coaching ✅ Zero-hallucination rules — the AI is instructed to return empty arrays rather than guess when data isn't present ✅ Instant rep results page — the rep sees their full analysis the moment they submit, no waiting for an email ✅ Parallel delivery — Airtable, Slack, and the results page are all updated in the same execution, not sequentially ✅ Submission IDs — every call gets a unique ID for tracking, filtering, and referencing in follow-up conversations Customisation Options Switch to a cheaper model for high-volume teams Open the 7. OpenAI — Chat Model (GPT-4o) node and change the model from gpt-4o to gpt-4o-mini. This reduces cost by roughly 15× with minimal quality loss for standard sales calls. Add a CRM update step after Airtable After the 9. Airtable — Save Full Analysis node, add a HubSpot or Salesforce node to automatically update the deal stage, log the CRM note, and create a follow-up task using the next steps from the analysis. Tag the rep in Slack by email In the 10. Slack — Post Analysis to Channel node, extend the message template to look up the rep's Slack user ID by their email address using the Slack users.lookupByEmail API, then @mention them directly in the notification. Add a language detection step Before the AI agent, add a Code node that checks transcript.length and language — then pass the detected language to the Whisper node's language parameter and adjust the GPT-4o prompt to respond in the same language as the transcript. Send the follow-up email automatically After the HTML page step, add a Gmail or Outlook node that sends the analysis.follow_up_email directly to the prospect's email address (contactEmail), so reps can approve and send in one click rather than copy-pasting. Troubleshooting Whisper transcription returns an error: Check that the audio URL is a direct download link — not a Google Drive share link or a page URL Confirm the file format is mp3, wav, or m4a Verify your OpenAI API key in the 4. OpenAI — Transcribe with Whisper1 node is correct and has available credits Increase the download timeout in the 3. HTTP — Download Audio File1 node if the file is large GPT-4o returns an empty or unparseable response: Open the 8. Code — Parse & Combine AI Analysis node and check the error message — it will show the first 300 characters of the raw GPT-4o output Make sure the OpenAI credential in the 7. OpenAI — Chat Model (GPT-4o) node has GPT-4o access enabled on your OpenAI account If the response contains markdown fences, the cleanup code in node 8 handles this automatically — but check that the credential is correctly selected Airtable row not being created: Confirm your Airtable table has columns with names that match exactly (including spaces and capitalisation) — e.g. Deal Stage (Before) not Deal Stage Before Check that your Airtable Personal Access Token has write access to the correct base Slack notification not arriving: Test your webhook URL directly using a tool like Postman or curl to confirm it's active Verify the credential is selected in the 10. Slack — Post Analysis to Channel node — a missing credential causes the node to silently fail due to continueOnFail: true The form submits but the rep never sees the results page: The workflow uses responseMode: lastNode, meaning the form waits for the final webhook response node to complete. If any step errors out silently (Airtable or Slack failures are set to continue on fail), the HTML page should still render — check the 12. Webhook — Show Results Page to Rep node execution log for errors. Support Need help setting this up or want a custom version built for your team or agency? 📧 Email:info@isawow.com 🌐 Website:https://isawow.com/
by isaWOW
Description Add your old YouTube video URLs to a Google Sheet once and every Monday at 9AM the workflow automatically processes each one end to end. WayinVideo runs two sequential APIs — first Summarization to extract structured highlights and tags, then AI Clipping to produce up to 3 viral short-form clips with 9:16 reframe, animated captions, and HD quality. GPT-4o-mini then writes platform-specific captions for TikTok, Facebook, and LinkedIn for each clip. Every clip is downloaded from WayinVideo and uploaded to Google Drive before the export link expires, all captions and Drive links are saved to a Content Calendar sheet, and the video row is marked Processed. Built for content creators, social media managers, and agencies who want to automatically repurpose their existing video library into short-form content every week without touching a single tool. What This Workflow Does Runs two WayinVideo APIs per video sequentially** — First Summarization extracts structured highlights and tags, then AI Clipping produces up to 3 vertical clips with 9:16 reframe and animated captions Writes three platform captions per clip** — GPT-4o-mini produces a TikTok caption (max 150 characters), a Facebook post (100–200 words), and a LinkedIn post (150–250 words) for every clip Downloads clips before export links expire** — Each clip is downloaded from WayinVideo immediately and uploaded to Google Drive so you never lose access Logs 16 fields per clip to the Content Calendar sheet** — Video summary, clip title, score, timestamp, WayinVideo export link, Google Drive link, all three captions, hashtags, and status are all saved in one row Marks each video as Processed automatically** — After all clips are saved, the Video List row is updated with Processed status and today's date so it is never processed again Runs two independent retry loops** — One loop handles summarization polling, another handles clipping polling — each retrying every 30 seconds independently until SUCCEEDED Processes all pending videos every Monday** — Every video in the sheet with a pending status is picked up and run through the full pipeline in one automated weekly run Setup Requirements Tools Needed n8n instance (self-hosted or cloud) WayinVideo account with API access OpenAI account with GPT-4o-mini API access Google Sheets (two tabs: Video List and Content Calendar) Google Drive (one folder for clips) Credentials Required WayinVideo API key (pasted into 3. WayinVideo — Submit Summarization, 5. WayinVideo — Get Summary Results, 9. WayinVideo — Submit AI Clipping, and 11. WayinVideo — Get Clip Results) OpenAI API key Google Sheets OAuth2 (used in 2. Google Sheets — Read Pending Videos, 20. Google Sheets — Save to Content Calendar, and 21. Google Sheets — Mark Video as Processed) Google Drive OAuth2 > ⚠️ WayinVideo API key appears in 4 steps — replace YOUR_WAYINVIDEO_API_KEY in all four: 3. WayinVideo — Submit Summarization, 5. WayinVideo — Get Summary Results, 9. WayinVideo — Submit AI Clipping, and 11. WayinVideo — Get Clip Results. Missing any one will cause the workflow to fail. > ⚠️ Two separate Google Sheet IDs are used — replace YOUR_VIDEO_LIST_SHEET_ID in 2. Google Sheets — Read Pending Videos and 21. Google Sheets — Mark Video as Processed, and replace YOUR_CONTENT_CALENDAR_SHEET_ID in 20. Google Sheets — Save to Content Calendar. Estimated Setup Time: 25–30 minutes Step-by-Step Setup Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Get your WayinVideo API key — Log in to your WayinVideo account → go to Account Settings → copy your API key Add your WayinVideo API key to node 3 — Open node 3. WayinVideo — Submit Summarization → find the Authorization header value Bearer YOUR_WAYINVIDEO_API_KEY → replace the placeholder with your actual key Add your WayinVideo API key to node 5 — Open node 5. WayinVideo — Get Summary Results → find the same Authorization header → replace the placeholder with the same key Add your WayinVideo API key to node 9 — Open node 9. WayinVideo — Submit AI Clipping → find the Authorization header → replace the placeholder Add your WayinVideo API key to node 11 — Open node 11. WayinVideo — Get Clip Results → find the same Authorization header → replace the placeholder Connect OpenAI — Open node 16. OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection Create your Video List sheet — Open your Google Sheet → add a tab named exactly Video List → add these 5 column headers in row 1: Video URL, Video Title, Niche / Category, Status, Last Processed Date → add your first video URLs in the rows below, leaving Status blank Create your Content Calendar sheet — In the same spreadsheet or a separate one → add a tab named exactly Content Calendar → add these 16 column headers: Video URL, Video Title, Niche, Video Summary, Clip Number, Clip Title, Clip Score, Clip Timestamp, WayinVideo Export Link, Google Drive Link, TikTok Caption, Facebook Caption, LinkedIn Caption, Hashtags, Processed On, Status Get your Video List Sheet ID — Open the Google Sheet containing the Video List tab in a browser → copy the string between /d/ and /edit in the URL Connect Google Sheets for reading and marking — Open node 2. Google Sheets — Read Pending Videos → click the document field → replace YOUR_VIDEO_LIST_SHEET_ID with your actual Sheet ID → connect Google Sheets OAuth2 → repeat the same Sheet ID replacement in node 21. Google Sheets — Mark Video as Processed Get your Content Calendar Sheet ID — If it is a separate spreadsheet, open it and copy the Sheet ID from the URL; if it is the same spreadsheet, use the same Sheet ID Connect Google Sheets for content calendar — Open node 20. Google Sheets — Save to Content Calendar → replace YOUR_CONTENT_CALENDAR_SHEET_ID with the correct Sheet ID → confirm Google Sheets OAuth2 is connected Get your Google Drive folder ID — Open your target Google Drive folder in a browser → the folder ID is the string at the end of the URL after /folders/ Connect Google Drive — Open node 19. Google Drive — Upload Clip → click the credential dropdown → add Google Drive OAuth2 → authorize access → replace YOUR_GOOGLE_DRIVE_FOLDER_ID in the folder field with your actual folder ID Activate the workflow — Toggle the workflow to Active — it will run automatically every Monday at 9AM. To test immediately, click on node 1. Schedule — Every Monday 9AM and use the manual Execute option. How It Works (Step by Step) Step 1 — Schedule: Every Monday 9AM The workflow fires automatically every Monday at 9AM using the cron expression 0 9 * * 1. No manual trigger is needed once the workflow is active. Step 2 — Google Sheets: Read Pending Videos All rows from your Video List tab are read. Each row contains a video URL, title, and niche. Every unprocessed video is picked up and run through the full pipeline. Step 3 — HTTP: WayinVideo — Submit Summarization The video URL is sent to WayinVideo's Summarization API. WayinVideo processes the video and returns a task ID confirming the summarization job has started. Step 4 — Wait: 90 Seconds Summary The workflow pauses 90 seconds before checking the summarization status, giving WayinVideo time to process the video. Step 5 — HTTP: WayinVideo — Get Summary Results A GET request checks the summarization results endpoint using the task ID. It returns the current status and, once complete, the summary text, highlights array, and tags array. Step 6 — IF: Summary Complete? This is the first polling gate. If the status equals SUCCEEDED (YES path), the summary is ready and the workflow moves forward to extract the data. If still processing (NO path), the workflow routes to 7. Wait — 30 Seconds Summary Retry which pauses 30 seconds then loops back to step 5. This repeats until SUCCEEDED. Step 7 — Wait: 30 Seconds Summary Retry When the summary is not yet ready, the workflow waits 30 seconds then returns to step 5 for another check. Step 8 — Code: Store Summary Data The completed summary data is extracted: the summary text, highlights joined as a pipe-separated string, and tags as a comma-separated string. The video URL, title, and niche from the sheet row are also packaged here. All five fields are carried forward to both the caption writing and the content calendar log. Step 9 — HTTP: WayinVideo — Submit AI Clipping The same video URL is submitted to WayinVideo's AI Clipping API. The request specifies: clips between 30 and 60 seconds, up to 3 clips, HD 720 resolution, animated captions in the original language using caption template temp-7, AI reframe to 9:16 vertical format, and export enabled so download links are generated. WayinVideo returns a task ID for the clipping job. Step 10 — Wait: 90 Seconds Clips The workflow pauses another 90 seconds before checking the clipping status. AI clipping takes longer than summarization because video editing is involved. Step 11 — HTTP: WayinVideo — Get Clip Results A GET request checks the clipping results endpoint using the clipping task ID. It returns the current status and, once complete, the clips array with title, description, score, timestamps, and export download link for each clip. Step 12 — IF: Clips Complete? This is the second polling gate. If the status equals SUCCEEDED (YES path), the clips are ready. If still processing (NO path), the workflow routes to 13. Wait — 30 Seconds Clips Retry which pauses 30 seconds then loops back to step 11. This second loop runs independently from the summarization loop. Step 13 — Wait: 30 Seconds Clips Retry When clips are not yet ready, the workflow waits 30 seconds then returns to step 11 for another check. Step 14 — Code: Extract Clips Array The clips array is split into individual rows — one per clip. Millisecond timestamps are converted to MM:SS format. All summary data from step 8 is merged into each clip row so every downstream step has the full video context alongside the clip-specific data. Step 15 — AI Agent: Write Platform Captions GPT-4o-mini receives the clip description, title, viral score, clip tags, the full video summary, highlights, tags, video title, and niche. It writes four labeled sections: a TikTok caption under 150 characters with a scroll-stopping hook, a Facebook caption of 100–200 words with storytelling and a CTA, a LinkedIn caption of 150–250 words framed as a thought leadership post, and 5–8 universal hashtags for use across all platforms. Step 16 — OpenAI: GPT-4o-mini Model This is the language model powering the caption writing. It runs with default settings for natural, platform-matched output. Step 17 — Code: Parse Caption Output All four labeled sections (TIKTOK_CAPTION, FACEBOOK_CAPTION, LINKEDIN_CAPTION, HASHTAGS) are extracted from the AI output using regex. All clip metadata and caption text are packaged for the download and logging steps. Step 18 — HTTP: Download Clip File The WayinVideo export link for this clip is fetched and the .mp4 file is downloaded as a binary file. This step happens immediately so the export link does not expire before the file is saved. Step 19 — Google Drive: Upload Clip The downloaded clip is uploaded to your specified Google Drive folder. The filename is auto-generated as Video Title — Clip N — Clip Title.mp4. Google Drive returns the file's web view link which is passed to the sheet log. Step 20 — Google Sheets: Save to Content Calendar One row is appended to your Content Calendar tab with all 16 columns: video URL, video title, niche, video summary, clip number, clip title, viral score, timestamp range, WayinVideo export link, Google Drive web view link, TikTok caption, Facebook caption, LinkedIn caption, hashtags, processed timestamp, and Status set to Ready to Post. Step 21 — Google Sheets: Mark Video as Processed The Video List row matching this video URL is updated with Status set to Processed and the current date in the Last Processed Date column. This prevents the same video from being picked up in future Monday runs. Key Features ✅ Two WayinVideo APIs per video — Summarization then Clipping — The workflow runs both APIs sequentially per video, using the summary data to enrich captions and the clipping API to produce ready-to-post vertical clips ✅ Two independent retry loops — Summarization and clipping each have their own 30-second polling loop — one never blocks the other ✅ 9:16 vertical reframe built in — Every clip is automatically reframed to 9:16 aspect ratio with animated captions in the same WayinVideo request — no manual editing needed ✅ Clips downloaded before links expire — WayinVideo export links have a limited lifespan — the workflow downloads and uploads to Drive immediately after clipping completes ✅ Three platform captions per clip in one GPT call — TikTok, Facebook, and LinkedIn are all written in one request with platform-specific rules enforced in the prompt ✅ Structured Drive filename per clip — Files are named as Video Title — Clip N — Clip Title.mp4 so your Drive folder is organized and scannable without opening files ✅ Status tracking prevents double-processing — Videos marked Processed in the Video List are skipped on all future Monday runs — add new videos any time and they will be picked up automatically ✅ Runs fully unattended every Monday — Once activated, you only need to add video URLs to the sheet — the entire pipeline runs without any manual intervention Customisation Options Change the weekly run day or time — In node 1. Schedule — Every Monday 9AM, edit the cron expression from 0 9 * * 1 to run on a different day — for example 0 9 * * 3 for Wednesday at 9AM or 0 7 * * 1 for Monday at 7AM. Increase the number of clips per video — In node 9. WayinVideo — Submit AI Clipping, change "limit": 3 to a higher number such as 5 to generate more clips per video — useful for longer videos with more shareable moments. Change the clip duration range — In node 9. WayinVideo — Submit AI Clipping, change "target_duration": "DURATION_30_60" to "DURATION_15_30" for shorter TikTok-style clips or "DURATION_60_90" for slightly longer content. Add a Slack notification when a video is fully processed — After node 21. Google Sheets — Mark Video as Processed, add a Slack step that posts the video title and the number of clips generated to a #content-team channel so your team knows new clips are ready in Drive without checking the sheet. Send a weekly digest email — After node 21. Google Sheets — Mark Video as Processed (on the last video processed each Monday run), add a Gmail step that lists all videos processed that week, how many clips were generated, and a link to the Content Calendar sheet. Troubleshooting Workflow not triggering on Monday: Confirm the workflow is Active — inactive workflows do not run on a schedule Check that your n8n instance is running at 9AM Monday — self-hosted instances that are off will not fire scheduled workflows To test immediately, click on node 1. Schedule — Every Monday 9AM and use the manual Execute option — do not wait for the scheduled run to verify setup WayinVideo API key errors: Confirm YOUR_WAYINVIDEO_API_KEY is replaced in all four steps: 3. WayinVideo — Submit Summarization, 5. WayinVideo — Get Summary Results, 9. WayinVideo — Submit AI Clipping, and 11. WayinVideo — Get Clip Results — missing any one causes that step to fail with a 401 error Check execution logs for the specific node that failed — the raw API error will show which step the key is missing from Either polling loop stuck and not completing: Check that the video URL in your Video List sheet is publicly accessible — private YouTube videos, unlisted videos with login walls, or expired links will not be processed by WayinVideo Open the execution log of node 5 or 11 for the raw response — WayinVideo may have returned FAILED with a specific error message The summarization and clipping loops are independent — if summarization gets stuck, clipping never starts. Fix the URL and resubmit. Google Drive upload failing: Confirm the Google Drive OAuth2 credential in node 19. Google Drive — Upload Clip is connected and not expired — re-authorize if needed Confirm YOUR_GOOGLE_DRIVE_FOLDER_ID is replaced with just the folder ID from the URL — not the full Drive URL If the clip download in step 18 returned an empty or failed file, the upload in step 19 will also fail — check step 18's execution log for the HTTP status of the WayinVideo export link Content Calendar not logging or Video List not updating: Confirm YOUR_CONTENT_CALENDAR_SHEET_ID in node 20 and YOUR_VIDEO_LIST_SHEET_ID in nodes 2 and 21 are all replaced with the correct Sheet IDs Confirm the tab names match exactly: Content Calendar and Video List — including capitalization and spacing Check that the Google Sheets OAuth2 credential is connected in all three sheet steps — it is easy to connect it in node 2 but forget to connect it in nodes 20 and 21 Support Need help setting this up or want a custom version built for your team or agency? 📧 Email:info@isawow.com 🌐 Website:https://isawow.com