by Alexey from Mingles.ai
AI Image Generator & Editor with GPT-4 Vision - Complete Workflow Template Description Transform text prompts into stunning images or edit existing visuals using OpenAI's latest GPT-4 Vision model through an intuitive web form interface. This comprehensive n8n automation provides three powerful image generation modes: ๐จ Text-to-Image Generation Simply enter a descriptive prompt and generate high-quality images from scratch using OpenAI's gpt-image-1 model. Perfect for creating original artwork, concepts, or visual content. ๐ผ๏ธ Image-to-Image Editing Upload an existing image file and transform it based on your text prompt. The AI analyzes your input image and applies modifications while maintaining the original structure and context. ๐ URL-Based Image Editing Provide a direct URL to any online image and edit it with AI. Great for quick modifications of web images or collaborative workflows. Key Features Smart Input Processing Flexible Form Interface**: User-friendly web form with authentication Multiple Input Methods**: File upload, URL input, or text-only generation Quality Control**: Selectable quality levels (low, medium, high) Format Support**: Accepts PNG, JPG, and JPEG formats Advanced AI Integration Latest GPT-4 Vision Model**: Uses gpt-image-1 for superior results Intelligent Switching**: Automatically detects input type and routes accordingly Context-Aware Editing**: Maintains image coherence during modifications Customizable Parameters**: Control size (1024x1024), quality, and generation settings Dual Storage Options Google Drive Integration**: Automatic upload with public sharing permissions ImgBB Hosting**: Alternative cloud storage for instant public URLs File Management**: Organized storage with timestamp-based naming Instant Telegram Delivery Real-time Notifications**: Results sent directly to your Telegram chat Rich Media Messages**: Includes generated image with prompt details Quick Access Links**: Direct links to view and download results Markdown Formatting**: Clean, professional message presentation Technical Workflow Form Submission โ User submits prompt and optional image Smart Routing โ System detects input type (text/file/URL) AI Processing โ OpenAI generates or edits image based on mode Binary Conversion โ Converts base64 response to downloadable file Cloud Upload โ Stores in Google Drive or ImgBB with public access Telegram Delivery โ Sends result with viewing links and metadata Perfect For Content Creators**: Generate unique visuals for social media and marketing Designers**: Quick concept development and image variations Developers**: Automated image processing for applications Teams**: Collaborative image editing and sharing workflows Personal Use**: Transform ideas into visual content effortlessly Setup Requirements OpenAI API Key**: Access to GPT-4 Vision model Google Drive API** (optional): For Google Drive storage ImgBB API Key** (optional): For alternative image hosting Telegram Bot**: For result delivery Basic Auth Credentials**: For form security What You Get โ Complete image generation and editing pipeline โ Secure web form with authentication โ Dual cloud storage options โ Instant Telegram notifications โ Professional result formatting โ Flexible input methods โ Quality control settings โ Automated file management Start creating AI-powered images in minutes with this production-ready template! Tags: #AI #ImageGeneration #OpenAI #GPT4 #ImageEditing #Telegram #GoogleDrive #Automation #ComputerVision #ContentCreation
by isaWOW
Description Submit any YouTube tutorial or how-to video URL along with your section search query and the workflow finds all the key moments automatically. WayinVideo's Find Moments API scans the full video and returns up to 15 section timestamps, which are then sorted chronologically and sent to GPT-4o-mini in one call to complete three tasks: generate clean chapter timestamps starting with 0:00, write a 3โ4 sentence video description block, and write a 100โ150 word YouTube Community post with the full timestamp list embedded. Everything is saved as one row in Google Sheets with Status set to Ready โ ready to copy and paste directly into YouTube. Built for YouTube creators, educators, and content teams who publish long tutorial videos and want chapter timestamps and a Community post generated automatically without manual scrubbing. What This Workflow Does Finds up to 15 section moments per video** โ WayinVideo's Find Moments API scans the full tutorial based on your search query and returns timestamped moments with titles and descriptions Sorts all moments chronologically** โ All returned moments are sorted by start time before being sent to GPT so the chapter list is always in the correct viewing order Generates formatted chapter timestamps** โ GPT writes clean 3โ6 word chapter titles for every moment with exact MM:SS values, always starting with 0:00 Introduction Writes a video description block** โ A 3โ4 sentence description introduces the video, mentions what viewers will learn, and includes the video URL Creates a YouTube Community post with timestamps embedded** โ A 100โ150 word post hooks the audience, highlights 2โ3 things they will learn, embeds the full chapter list, and ends with a CTA and hashtags Saves everything in one Google Sheets row** โ Formatted timestamps, description block, Community post, hashtags, total chapter count, total moments found, and estimated duration are all in one row per video Polls automatically until moments are ready** โ Waits 90 seconds then checks every 30 seconds until WayinVideo finishes scanning the video 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 (one sheet with a tab named Timestamp Library) Credentials Required WayinVideo API key (pasted into 2. WayinVideo โ Submit Find Moments and 4. WayinVideo โ Get Moments Results) OpenAI API key Google Sheets OAuth2 > โ ๏ธ WayinVideo API key appears in 2 steps โ replace YOUR_WAYINVIDEO_API_KEY in both 2. WayinVideo โ Submit Find Moments and 4. WayinVideo โ Get Moments Results. Missing either one will cause the workflow to fail. 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 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 Find Moments โ 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 Moments Results โ find the same Authorization header โ replace YOUR_WAYINVIDEO_API_KEY with the same key Connect OpenAI โ Open node 9. 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 Timestamp Library โ add these 13 column headers in row 1: Video URL, Video Title, Channel Name, Video Category, Total Chapters, Total Moments Found, Video Duration (min), Formatted Timestamps, Video Description Block, Community Post, Hashtags, Generated On, Status 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 11. Google Sheets โ Save Timestamp Library โ 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 โ Video URL + Details โ open it in a browser to submit your first video How It Works (Step by Step) Step 1 โ Form: Video URL + Details You open the form URL in a browser and fill in six fields: the YouTube video URL, the video title, your channel name, the video category (e.g. SEO Tutorial, Python Course), the target audience, and the section search query. The search query is the most important field โ it tells WayinVideo what kind of moments to find. For a tutorial, a good query might be "step by step tutorial section" or "topic introduction and explanation". Step 2 โ HTTP: WayinVideo โ Submit Find Moments The video URL and search query are sent to WayinVideo's Find Moments API. The request asks for up to 15 matching moments with export disabled. A project name is auto-generated from the video title. WayinVideo accepts the job and returns a task ID. Step 3 โ Wait: 90 Seconds The workflow pauses 90 seconds before the first status check, giving WayinVideo time to scan the full video. Step 4 โ HTTP: WayinVideo โ Get Moments Results A GET request checks the find-moments results endpoint using the task ID from step 2. It returns the current processing status and, once complete, the full clips array with title, description, timestamp, relevance score, and tags for each matched moment. Step 5 โ IF: Find Moments Complete? This is the polling gate. If the status equals SUCCEEDED (YES path), the moments are ready and the workflow moves forward to sorting and aggregation. 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 results are not yet ready, the workflow waits 30 seconds then returns to step 4 for another check. The loop continues automatically. Step 7 โ Code: Collect + Sort All Moments All moments from WayinVideo are sorted by start time in ascending order โ chronological, not by relevance score โ so the timestamps reflect the actual order they appear in the video. Each moment is formatted as Moment N: [MM:SS] Title โ Description and joined into a single text block for GPT. Total moment count and estimated video duration are also calculated. This step produces one single output for GPT โ not one per moment โ which is what allows GPT to see all timestamps at once and generate a coherent chapter list. Step 8 โ AI Agent: Generate Timestamps + Post GPT-4o-mini receives the complete sorted moments list and the full video context. It completes three tasks in one call. Task 1: generate formatted chapter timestamps using the exact MM:SS values from WayinVideo, adding 0:00 Introduction at the top, with clean 3โ6 word chapter titles per line. Task 2: write a 3โ4 sentence video description block that introduces the video, mentions what viewers will learn, references the chapters below, and includes the video URL. Task 3: write a 100โ150 word YouTube Community post with a scroll-stopping hook, 2โ3 specific learning points from the video, the full timestamp list embedded in the post body, a CTA to watch and comment, and 3โ5 relevant hashtags. The output uses five labeled sections. Step 9 โ OpenAI: GPT-4o-mini Model This is the language model powering the three-task generation. It runs with default settings for accurate, structured output. Step 10 โ Code: Parse Timestamps Output All five labeled sections are extracted from the AI output using regex: FORMATTED_TIMESTAMPS, VIDEO_DESCRIPTION_BLOCK, COMMUNITY_POST, HASHTAGS, and TOTAL_CHAPTERS. If the timestamps section is empty, the step throws a clear error. All video metadata from step 7 is also packaged for the sheet row. Step 11 โ Google Sheets: Save Timestamp Library One row is appended to your Timestamp Library tab with all 13 columns: video URL, video title, channel name, video category, total chapters, total moments found, estimated duration, formatted timestamps, video description block, Community post, hashtags, generation timestamp, and Status set to Ready. All three deliverables โ timestamps, description, and Community post โ are available in one row ready to copy and paste. Key Features โ Up to 15 moments per video โ The highest limit used across the WayinVideo workflow series โ suited to longer tutorial videos with many distinct sections โ Chronological sort before GPT โ All moments are sorted by start time before being sent to GPT so the chapter list is always in viewing order โ not relevance order โ Three outputs in one GPT call โ Chapter timestamps, video description block, and Community post are all generated together โ saving API cost and ensuring they are all written from the same context โ Community post includes timestamps embedded โ The Community post does not just mention the video โ it includes the full chapter list inside the post body so viewers see exactly what is covered โ 0:00 Introduction always added โ GPT is instructed to start every chapter list with a 0:00 Introduction entry even if no moment was found at the very beginning โ Total chapter count logged โ The sheet records the exact number of chapters generated so you can compare across videos without opening each timestamp block โ One row per video โ all deliverables in one place โ Every field you need is in a single sheet row so your team can copy timestamps, description, and Community post without switching between files Customisation Options Increase the number of moments returned โ In node 2. WayinVideo โ Submit Find Moments, the limit is already set to the maximum of 15 โ if your video has very densely packed sections, try a more specific search query to get the most relevant moments within that limit. 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 instead of looping indefinitely. Send the three outputs to Gmail for quick review โ After node 11. Google Sheets โ Save Timestamp Library, add a Gmail step that sends the formatted timestamps, description block, and Community post as one plain-text email so you can review and copy directly from your inbox. Add a Slack notification when timestamps are ready โ After node 11. Google Sheets โ Save Timestamp Library, add a Slack step that posts the video title, total chapter count, and a link to the Timestamp Library sheet to a #youtube-content channel so your team knows a new set of timestamps is ready. Use the description block to update a Google Doc โ After node 11. Google Sheets โ Save Timestamp Library, add a Google Docs append step that writes the video title, formatted timestamps, and description block to a running video notes document โ building a permanent formatted archive of all your video descriptions. 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 โ Video URL + Details after activating โ URLs copied before activation will not work Make sure all six fields are filled in โ all are marked required WayinVideo returning an error on submission: Confirm YOUR_WAYINVIDEO_API_KEY in node 2. WayinVideo โ Submit Find Moments is replaced with your actual API key โ not the placeholder Confirm the same replacement was made in node 4. WayinVideo โ Get Moments 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 or request format is invalid No moments found or workflow stuck in polling loop: Check that the YouTube video URL is publicly accessible โ private, unlisted-with-login, or removed videos will not be processed The section search query may be too vague โ try more descriptive phrases like "tutorial step and code demo" instead of just "tutorial" Open the execution log of node 4. WayinVideo โ Get Moments Results and inspect the raw response โ WayinVideo may have returned FAILED with a specific error If the loop runs indefinitely, deactivate the workflow, fix the URL or query, and resubmit GPT not generating all five sections: Confirm the API key is connected in node 9. OpenAI โ GPT-4o-mini Model and your account has available credits Check the execution log of node 8. AI Agent โ Generate Timestamps + Post for the raw GPT output โ if the FORMATTED_TIMESTAMPS section is missing, node 10. Code โ Parse Timestamps Output throws an error If the moments list passed to GPT is very long (15 moments with long descriptions), the combined prompt may push against token limits โ this is rare but can be resolved by using a slightly shorter search query to get fewer moments Google Sheets not saving the row: Confirm YOUR_GOOGLE_SHEET_ID in node 11. Google Sheets โ Save Timestamp Library is replaced with your actual sheet ID from the URL Confirm the tab is named Timestamp Library exactly and all 13 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 Shahzaib Anwar
Quick Overview This webhook-based workflow validates form submissions with Google reCAPTCHA, creates or updates a contact in HubSpot, checks for an existing open ticket, and either creates a new HubSpot ticket or flags it as a duplicate, then emails support and returns an HTML response to the requester. How it works Receives a POST request via a webhook containing the customer and complaint details. Verifies the request using Google reCAPTCHA and stops processing if the verification fails. Creates or updates the contact in HubSpot and retrieves any tickets associated with that contact. Looks up the pipeline stage of associated tickets and detects whether an open ticket already exists. If an open ticket exists, emails the support team with the duplicate details and returns an โalready loggedโ HTML response. If no open ticket exists, creates a new HubSpot ticket, patches the ticket to set the city property, and returns a โticket submittedโ HTML response. After returning the webhook response for a new ticket, sends a confirmation email to the customer and a detailed notification email to the support team via Gmail. Setup Add a HubSpot App Private Token credential and ensure the configured ticket pipeline ID, stage ID, and ticket owner ID match your HubSpot account. Replace the reCAPTCHA secret in the Google reCAPTCHA request and ensure your form sends the g-recaptcha-response field to the webhook. Configure the webhook URL in your form or source system to POST to /hubspot-ticket-webhook with the expected fields (email, first_name, last_name, phone, city, remarks, order_no). Set up Gmail credentials for the customer and CS team emails, and update sender/recipient addresses (for example, support@example.com and no-reply@example.com). Update placeholder values in the HTML/email content (YOUR_HUBSPOT_PORTAL_ID, example.com tracking URL, and YOUR_SUPPORT_PHONE) to match your environment.
by Incrementors
Description Activate this workflow once and every Friday at 5PM it automatically pulls your week's meeting data from Fireflies, calculates seven metrics, and emails a formatted report to your manager inbox. It tracks total meetings, total hours, average duration, busiest day, top participant, and longest meeting โ plus a day-by-day breakdown and a numbered list of every meeting. Every week's summary is also logged to Google Sheets so you can track meeting load trends over time. Built for team leads, operations managers, and founders who want visibility into meeting time without manually checking Fireflies each week. What This Workflow Does Runs automatically every Friday** โ Fires at 5PM every week so your end-of-week report arrives without any manual trigger Calculates seven meeting metrics** โ Computes total meetings, total hours, average duration, busiest day, top participant, longest meeting, and a day-by-day breakdown from raw Fireflies data Identifies the busiest day** โ Counts meetings per day of the week and surfaces which day had the most meetings and exactly how many Finds the top participant** โ Counts how many meetings each person attended and surfaces the most-present person across the week Logs one summary row to Google Sheets** โ Appends a 9-column weekly record for trend tracking so you can compare meeting load week over week Emails a formatted plain-text report** โ Sends the full report with all metrics, daily breakdown, and numbered meeting list to your manager email automatically Exits cleanly with no meetings** โ If no meetings were recorded this week, the workflow stops silently without sending an empty email Setup Requirements Tools Needed n8n instance (self-hosted or cloud) Fireflies.ai account with API access Google Sheets (one sheet with a tab named Weekly Meeting Report) Gmail account (used to send the weekly report) Credentials Required Fireflies API key (pasted into 2. Set โ Config Values) 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 Get your Fireflies API key โ Log in to fireflies.ai โ Settings โ Integrations โ 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 2 | | YOUR_GOOGLE_SHEET_ID | The ID from your Google Sheet URL (the string between /d/ and /edit) | | Weekly Meeting Report | Leave as-is, or change to match your sheet tab name exactly | | manager@yourcompany.com | The email address where the weekly report should be sent | | YOUR NAME | The sender name shown in the email sign-off | | YOUR COMPANY NAME | Your company name (shown in the email subject and body) | Create your Google Sheet โ Open Google Sheets โ add a tab named exactly Weekly Meeting Report โ add these 9 column headers in row 1: Week, Total Meetings, Total Hours, Avg Duration (min), Busiest Day, Top Participant, Longest Meeting, All Participants, Logged At Connect Google Sheets โ Open node 6. Google Sheets โ Log Weekly Summary โ click the credential dropdown โ add Google Sheets OAuth2 โ sign in with your Google account โ authorize access Connect Gmail โ Open node 7. Gmail โ Send Weekly Report โ click the credential dropdown โ add Gmail OAuth2 โ sign in with the Gmail account you want to send reports from โ authorize access Activate the workflow โ Toggle the workflow to Active โ it will run automatically every Friday at 5PM > โ ๏ธ To test immediately โ Click on node 1. Schedule โ Every Friday 5PM and use the manual Execute option to trigger a test run without waiting for Friday. How It Works (Step by Step) Step 1 โ Schedule: Every Friday 5PM This step fires the workflow automatically every Friday evening at 5PM. No manual trigger is needed. Once the workflow is active, it runs on its own every week. Step 2 โ Set: Config Values Your Fireflies API key, Google Sheet ID, sheet tab name, manager email, sender name, company name, and the 7-day date window are stored here. The week start and end dates are calculated automatically from today's date so you never need to update them manually. Step 3 โ HTTP: Fetch Transcripts A request is sent to the Fireflies API using your API key. It retrieves the 100 most recent transcripts from your account โ title, date, duration, and participants for each. Fetching 100 ensures meetings from busy weeks are not missed during the 7-day filter. Step 4 โ Code: Calculate Meeting Metrics The 100 transcripts are filtered to only those recorded in the past 7 days. If no meetings are found, a hasMeetings: false flag is set and the result passes to the gate check. For weeks with meetings, seven metrics are calculated: total meeting count, total minutes and hours, average duration per meeting, busiest day of the week with count, top participant with count, longest meeting with title and duration, and a full list of all unique participants. A day-by-day breakdown is assembled showing meeting count and total minutes per day, sorted chronologically. A numbered meeting list is also built showing each meeting's date, title, and duration, sorted most recent first. Step 5 โ IF: Meetings Found? This is the gate check. If meetings were found (YES path), the workflow continues to log and email the report. If no meetings were found this week (NO path), the workflow routes to 8. Set โ No Meetings Skip and stops cleanly โ no email is sent, no empty row is logged. Step 6 (No path) โ Set: No Meetings Skip This step handles the empty-week case. It sets a brief message confirming no meetings were found and the workflow ends here for that run. Step 6 โ Google Sheets: Log Weekly Summary One row is appended to your Weekly Meeting Report tab with all 9 columns: the week date range, total meetings, total hours, average duration, busiest day, top participant, longest meeting, all participants combined, and the logged-at timestamp. This runs before the email so the sheet is always up to date even if the email step fails. Step 7 โ Gmail: Send Weekly Report A plain-text email is sent to your manager email address. The subject includes your company name and the week date range. The body contains the full summary section (all seven metrics), the day-by-day breakdown, the complete numbered meeting list, and a sign-off with your name and company. A footer notes that data has been logged to Google Sheets and that the report was auto-generated every Friday. The final result: every Friday evening your manager receives a clean, complete meeting hours report in their inbox โ and one row is added to your Google Sheet for trend tracking. Key Features โ Fully automated Friday delivery โ Fires at 5PM every Friday with zero manual input after setup โ Seven metrics calculated automatically โ Total meetings, hours, average duration, busiest day, top participant, longest meeting, and daily breakdown โ all from a single Fireflies API call โ Top participant tracking โ Counts appearances across all meetings and surfaces the most-present person so you can spot meeting bottlenecks โ Trend-ready Google Sheets log โ One row per week means you can chart meeting load trends, spot overloaded weeks, and compare month over month โ Plain-text email format โ Renders cleanly in any email client without HTML formatting issues โ 100-transcript buffer โ Fetches 100 recent transcripts to ensure high-volume weeks are never truncated during the 7-day filter โ Clean empty-week exit โ No meetings this week means a clean stop โ no empty email, no blank Sheets row, no errors โ Chronological daily breakdown โ Day-by-day data is sorted by date, not alphabetically, so the breakdown reads naturally from Monday to Friday Customisation Options Change the report delivery day and time โ In node 1. Schedule โ Every Friday 5PM, edit the cron expression 0 17 * * 5 to change when the report fires. For example, 0 8 * * 1 sends a Monday morning summary of last week's meetings instead. Extend the date window to 30 days for a monthly report โ In node 2. Set โ Config Values, change {days: 7} in both the weekStart and sevenDaysAgoMs fields to {days: 30} and adjust the schedule to monthly for a full meeting hours report. Add a Slack summary alongside the email โ After node 6. Google Sheets โ Log Weekly Summary, add a Slack node that posts a short 3-line summary (total meetings, total hours, busiest day) to a #operations or #team-leads channel so the team sees it without checking email. Filter to specific meeting types only โ In node 4. Code โ Calculate Meeting Metrics, add a keyword filter on the meeting title before calculating metrics โ for example, only include meetings with "client" or "sync" in the title to separate client time from internal meetings. Add a meeting-load alert โ In node 4. Code โ Calculate Meeting Metrics, add a check: if totalHours exceeds a threshold (e.g. 20 hours), set a heavyWeek flag to true. Then add an IF check after step 4 that sends an additional Slack or email alert flagging the overloaded week before the normal report runs. Troubleshooting Workflow not triggering on Friday: Confirm the workflow is toggled to Active โ inactive workflows do not run on a schedule Check the cron expression in node 1. Schedule โ Every Friday 5PM is exactly 0 17 * * 5 โ any accidental edit breaks the schedule To test immediately, click on node 1 and use the manual Execute option Fireflies returning no transcripts or an auth error: Confirm YOUR_FIREFLIES_API_KEY in node 2. Set โ Config Values is replaced with your actual key โ not the placeholder text Get your key from fireflies.ai โ Settings โ Integrations โ API Key If your team recorded more than 100 meetings in the past week, increase the limit value in node 3. HTTP โ Fetch Transcripts from 100 to a higher number in the GraphQL query body Google Sheets not logging rows: Confirm the Google Sheets OAuth2 credential in node 6. Google Sheets โ Log Weekly Summary is connected and not expired โ re-authorize if needed Check that YOUR_GOOGLE_SHEET_ID in node 2. Set โ Config Values matches the ID in your sheet URL exactly Confirm the tab is named Weekly Meeting Report exactly โ capitalization must match sheetName in Config Values Verify all 9 column headers in row 1 match exactly: Week, Total Meetings, Total Hours, Avg Duration (min), Busiest Day, Top Participant, Longest Meeting, All Participants, Logged At Email not being received: Confirm the Gmail OAuth2 credential in node 7. Gmail โ Send Weekly Report is connected and authorized with the correct sending account Check that manager@yourcompany.com in node 2. Set โ Config Values is replaced with the actual recipient email address Check your spam or promotions folder โ automated emails from Gmail OAuth2 sometimes land there on first send Check the execution log of node 7 for any error message from the Gmail API Metrics showing wrong totals or missing meetings: Confirm your n8n instance timezone is set correctly โ the 7-day filter uses millisecond timestamps and timezone mismatches can cause meetings to fall outside the window If meetings are missing, check that the Fireflies transcripts were fully processed before Friday 5PM โ transcripts still processing at trigger time will not appear in the results Check the execution log of node 4. Code โ Calculate Meeting Metrics to see the raw list of meetings that passed the filter 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 Nirav Gajera
๐ AI Real Estate Lead Qualifier โ Typeform to Airtable with Smart Email Routing Automatically qualify property leads, score them with AI, save to Airtable, and send personalised emails โ all in seconds. ๐ Description Every time a prospect submits your Typeform property inquiry, this workflow kicks in automatically. It extracts their details, runs them through an AI lead scoring engine, saves the record to Airtable, and sends a personalised email โ a priority response for hot leads, a nurture email for everyone else. No manual review. No missed leads. No delayed follow-ups. This is built for real estate agencies, leasing companies, and property managers who receive inquiries through Typeform and want instant, intelligent responses without hiring extra staff. โจ Key Features Instant lead capture** โ triggers the moment Typeform receives a submission AI lead scoring** โ Google Gemini classifies every lead as High, Medium, or Low automatically Smart email routing** โ High leads get a priority response, others get a nurture sequence Airtable CRM sync** โ every lead saved with full details + AI assessment Robust AI parsing** โ 4-layer fallback system ensures AI output is always usable Personalised emails** โ name, property type, location, budget pulled into every email automatically No-code maintenance** โ update scoring rules in the prompt, email copy in the nodes ๐ How It Works Prospect submits Typeform inquiry โ Webhook receives the form payload โ Extract Typeform Fields โ name, email, phone, property type โ purpose, location, budget, requirements โ AI Lead Qualifier (Google Gemini) โ lead_score: High / Medium / Low โ intent, timeline, notes โ Parse AI Output (4-layer fallback) โ Save to Airtable CRM โ High Lead? (IF check) โ YES โ Priority Email (contact within 2 hours) โ NO โ Nurture Email (contact within 1-2 days) ๐ค AI Lead Scoring Rules The AI automatically classifies leads based on these criteria: | Score | Criteria | | :--- | :--- | | ๐ด High | Has budget + specific location + clear purpose (investment or near-term buying) | | ๐ก Medium | Partial information โ needs follow-up to qualify further | | ๐ข Low | Vague inquiry, missing budget or location, early exploration | The AI also extracts: Intent** โ what the lead is trying to achieve Timeline** โ how urgently they need a property Notes** โ assessment summary for your sales team ๐ง Email Templates High Lead Email Subject: ๐ [Name], we have properties matching your needs! Dark blue header โ premium feel Full inquiry summary (property, purpose, location, budget, timeline) AI assessment notes included Promise: senior agent contacts within 2 hours Nurture Email (Medium / Low) Subject: Thanks for reaching out, [Name]! Grey header โ warm and professional Inquiry summary (property, location, budget) Preparation tips while they wait Promise: contact within 1-2 business days ๐ Setup Requirements 1. Typeform Setup Create a Typeform with these fields and note their field ref IDs from the Typeform API: | Field | Type | Required | | :--- | :--- | :---: | | Full Name | Short text | โ | | Phone Number | Phone | โ | | Email Address | Email | โ | | Property Type | Multiple choice | โ | | Purpose | Multiple choice | โ | | Preferred Location | Short text | โ | | Budget Range | Multiple choice | โ | | Requirements | Long text | โ | | Consent | Yes/No | Optional | Connect Typeform webhook: Typeform Dashboard โ Connect โ Webhooks URL: your n8n webhook URL (Production URL from the Webhook node) Method: POST 2. Update Field Refs In the Extract Typeform Fields Code node, update the REF_* constants to match your actual Typeform field reference IDs: const REF_NAME = 'your-field-ref-here'; const REF_EMAIL = 'your-field-ref-here'; const REF_PHONE = 'your-field-ref-here'; // ... etc Find your field refs from the Typeform API or by logging a test webhook payload. 3. Airtable Setup Create an Airtable base with a table containing these fields: | Field Name | Field Type | | :--- | :--- | | Full Name | Single line text | | Email Address | Email | | Mobile Phone Number | Phone | | Property Type | Single line text | | Purpose | Single line text | | Preferred Location | Single line text | | Budget Range | Single line text | | Requirements | Long text | | Submit Date | Single line text | | Lead Score | Single line text | | Intent | Single line text | | Timeline | Single line text | | Notes | Long text | Update the Save to Airtable node with your Base ID and Table ID. 4. Credentials Required | Credential | Used for | Free? | | :--- | :--- | :--- | | Google Gemini (PaLM) API | AI lead scoring | Free tier available | | Airtable Personal Access Token | CRM save | Free | | SMTP | Sending emails | Depends on provider | 5. Email Configuration In both email nodes, update: fromEmail โ your sending address SMTP credential โ your email provider details Recommended SMTP providers for testing: Mailtrap (sandbox), Gmail, SendGrid โ๏ธ Workflow Nodes | Node | Type | Purpose | | :--- | :--- | :--- | | Webhook | Webhook | Receives Typeform POST payload | | Extract Typeform Fields | Code | Parses answers by field ref ID | | AI Lead Qualifier | AI Agent | Scores lead using Gemini | | Google Gemini Chat Model | LLM | AI model for scoring | | Parse AI Output | Code | Extracts JSON with 4-layer fallback | | Save to Airtable | Airtable | Creates CRM record | | High Lead? | IF | Routes by lead score | | Priority Email | Email Send | Sends to High leads | | Nurture Email | Email Send | Sends to Medium/Low leads | ๐ง Customisation Change scoring criteria: Edit the prompt in the AI Lead Qualifier node. Add your own rules โ e.g. score higher if budget exceeds a threshold, or if the purpose is investment. Add more email tiers: Add a third IF branch for Low leads with a different nurture sequence, or add a Slack/WhatsApp alert for High leads. Use a different form: The Extract Typeform Fields node uses Typeform's field.ref system. Replace it with a Google Forms or Jotform parser by adjusting how you read the incoming webhook body. Change the AI model: Replace the Google Gemini node with Claude, OpenAI, or any other LLM Chat Model node โ no other changes needed. Add lead deduplication: Before saving to Airtable, add a search step to check if the email already exists and skip or update instead of creating a duplicate. ๐ก Robustness Features The Parse AI Output node uses a 4-layer fallback to ensure the workflow never breaks due to AI formatting issues: Direct JSON parse โ if Gemini returns clean JSON Strip markdown fences โ if Gemini wraps in Regex JSON extraction โ if there's extra text around the JSON Field-by-field regex โ if JSON is malformed, extracts each field individually Default fallback โ if all else fails, sets lead_score: Medium This means the workflow continues and saves the record even if the AI returns unexpected output. ๐ Sample Airtable Record Full Name: Sarah Johnson Email Address: sarah@example.com Mobile Phone: +91 9876543210 Property Type: 2BHK Apartment Purpose: Investment Preferred Location: Bandra, Mumbai Budget Range: โน80L - โน1.2Cr Requirements: Parking, gym, sea view Submit Date: 2026-03-18T10:30:00Z Lead Score: High Intent: Serious buyer looking for investment property with strong rental yield Timeline: Within 3 months Notes: High-intent lead with clear budget and location. Has specific amenity requirements. Recommend immediate callback. ๐ฆ Requirements Summary n8n (cloud or self-hosted) Typeform account (any paid plan for webhooks) Airtable account (free tier works) Google AI Studio account for Gemini API key (free tier available) SMTP email account ๐ก Enhancement Ideas WhatsApp alert** โ send instant WhatsApp to sales team for every High lead via Twilio Calendar booking link** โ include a Calendly link in the High lead email Lead follow-up reminder** โ add a Wait node + reminder email if no reply in 48 hours Slack notification** โ ping your team channel instantly for High leads Lead scoring dashboard** โ connect Airtable to a dashboard tool for weekly reports Built with n8n ยท Google Gemini AI ยท Typeform ยท Airtable ยท SMTP
by Incrementors
Description Submit a new employee's details and your onboarding recording URL via a simple form and the workflow automatically extracts the specific training moments relevant to that employee. WayinVideo's Find Moments API scans the full recording and returns up to 5 matching clips in HD 720 quality with animated captions and download links โ which are downloaded immediately before the export links expire and uploaded to Google Drive with a structured filename. Every clip is saved to the Onboarding Clip Library Google Sheet with the Drive link, and a personalized HTML welcome email is sent to the new employee with the full recording link and instructions. Built for HR teams, learning and development managers, and People Operations teams who run recurring onboarding sessions and want to deliver specific training clips to each new employee automatically โ without manually editing recordings. What This Workflow Does Finds up to 5 topic-specific training moments per recording** โ WayinVideo scans the full onboarding session and returns only the clips that match your training topic query โ not the entire recording Exports clips in HD 720 with animated captions** โ Every clip is generated with animated captions in the original language so new employees can watch silently or with sound Downloads clips before export links expire** โ WayinVideo export links last only 24 hours โ the workflow downloads and uploads to Drive immediately so clips are available permanently Creates structured Drive filenames per clip** โ Each file is named EmployeeName_Department_Clip_N_Score_S.mp4 so your Drive folder is organized and searchable by employee and topic Saves 15 metadata fields to Google Sheets** โ Employee name, email, department, start date, clip title, description, timestamp, score, tags, and a direct Drive link are all logged per clip Sends a personalized HTML welcome email** โ The new employee receives a branded HTML email addressed by first name with the full recording link, their department, start date, and instructions to access their clips Polls automatically until clips are 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 Google Drive (one folder for onboarding clips) Google Sheets (one sheet with a tab named Onboarding Clip Library) Gmail account Credentials Required WayinVideo API key (pasted into 2. WayinVideo โ Submit Find Moments and 4. WayinVideo โ Get Clips Result) Google Drive OAuth2 Google Sheets OAuth2 Gmail OAuth2 > โ ๏ธ WayinVideo API key appears in 2 steps โ replace YOUR_WAYINVIDEO_API_KEY in both 2. WayinVideo โ Submit Find Moments and 4. WayinVideo โ Get Clips Result. Missing either one will cause the workflow to fail. > โ ๏ธ Query tip โ The Training Topic to Extract field works best with 4โ6 descriptive words. Examples that work well: "company culture and team values explanation", "HR leave policy and benefits overview", "tools and software walkthrough for new employees". Single words like "culture" or "HR" will return poor results. 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 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 Find Moments โ 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 Clips Result โ find the same Authorization header โ replace YOUR_WAYINVIDEO_API_KEY with the same key 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 9. Google Drive โ Upload Clip โ click the credential dropdown โ add Google Drive OAuth2 โ authorize access โ replace YOUR_GDRIVE_FOLDER_ID in the folder field with your actual folder ID Create your Google Sheet tab โ Open your Google Sheet โ add a tab named exactly Onboarding Clip Library โ add these 15 column headers in row 1: Employee Name, Employee Email, Department, Start Date, Company, Topic, Clip Title, Description, Timestamp, Score, Tags, Drive Link, Drive File ID, Onboarding Recording URL, Date Added Get your Google Sheet ID โ Open your Google Sheet in a browser โ copy the string between /d/ and /edit in the URL Connect Google Sheets โ Open node 10. Google Sheets โ Save to Library โ 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 Connect Gmail โ Open node 11. Gmail โ Send Welcome Email โ click the credential dropdown โ add Gmail OAuth2 โ complete the Google authorization flow Activate the workflow โ Toggle the workflow to Active โ copy the Form URL from node 1. Form โ New Employee + Onboarding Details โ open it in a browser to submit your first new employee How It Works (Step by Step) Step 1 โ Form: New Employee + Onboarding Details Your HR team opens the form URL and fills in seven fields: the onboarding recording URL, the new employee's full name, their email address, their department, their start date, the training topic to extract (4โ6 descriptive words), and the company name. Submitting the form starts the entire pipeline. Step 2 โ HTTP: WayinVideo โ Submit Find Moments The recording URL, training topic query, and a project name (auto-built as Onboarding โ EmployeeName โ Department) are sent to WayinVideo's Find Moments API. The request asks for up to 5 clips at HD 720 quality, animated captions in the original language using caption template temp-7, export enabled so download links are generated, and AI reframe disabled so the clips stay in their original aspect ratio. WayinVideo returns a task ID. Step 3 โ Wait: 90 Seconds The workflow pauses 90 seconds before the first status check, giving WayinVideo time to scan the full recording. Step 4 โ HTTP: WayinVideo โ Get Clips Result A GET request checks the find-moments results endpoint using the task ID from step 2. It returns the current status and, once complete, the full clips array with title, description, export download link, relevance score, tags, and timestamps for each matched moment. Step 5 โ IF: Find Moments Complete? This is the polling gate. If the status equals SUCCEEDED (YES path), the clips are ready and the workflow moves forward to splitting. If still processing (NO path), the workflow routes to 6. Wait โ 30 Seconds Retry which pauses 30 seconds then loops back to step 4 to check again. This repeats until SUCCEEDED. Step 6 โ Wait: 30 Seconds Retry When clips are not yet ready, the workflow waits 30 seconds then returns to step 4 for another check. Step 7 โ Code: Split Each Clip The clips array is split into individual rows โ one per clip. Each row carries the clip title, export link, relevance score, tags, description, start time in milliseconds, end time in milliseconds, and clip index number. If no clips are returned, the step throws a clear error with a suggestion to try a more descriptive query. Step 8 โ HTTP: Download Clip File For each clip, the workflow fetches the .mp4 file from the WayinVideo export link and downloads it as a binary file. This step runs immediately after splitting so no time is wasted before export links expire. Step 9 โ Google Drive: Upload Clip The downloaded clip is uploaded to your specified Google Drive folder. The filename is auto-generated as EmployeeName_Department_Clip_N_Score_S.mp4 โ for example Sarah_Johnson_Marketing_Clip_1_Score_87.mp4. Spaces in the employee name and department are replaced with underscores. Google Drive returns the file ID and web view link. Step 10 โ Google Sheets: Save to Library One row is appended to your Onboarding Clip Library tab with all 15 columns. The Drive Link is constructed directly from the file ID as https://drive.google.com/file/d/FILE_ID/view โ so every row has a clickable link to the clip without any manual copying. The timestamp column shows the clip's start and end time in seconds. Step 11 โ Gmail: Send Welcome Email After all clips are saved to the sheet, a personalized HTML email is sent to the new employee's email address. The email is addressed by their first name (extracted from the full name), confirms their training clips are ready, shows the topic, department, and start date, includes a link to the full onboarding recording, and instructs them to check the Onboarding Clip Library sheet for their clip links. The sender name is set to the company name from the form. The final result is up to 5 clips in Google Drive, a fully populated sheet row per clip, and a branded welcome email in the new employee's inbox โ all triggered by one HR form submission. Key Features โ Training topic query drives clip selection โ You describe what training content to extract using plain English โ WayinVideo finds only the relevant moments rather than clipping the entire recording โ HD 720 with animated captions on every clip โ Every exported clip has animated captions built in using caption template temp-7 โ ready to share without any post-processing โ Clips downloaded before 24-hour expiry โ WayinVideo export links expire โ the workflow downloads and uploads to Drive immediately so your library is permanent โ Structured Drive filename per employee โ Files are named with the employee name, department, clip number, and score so any team member can search Drive and instantly know what each file is โ Drive link constructed from file ID โ The Google Sheets row includes a ready-to-click Drive link built directly from the uploaded file's ID โ no manual copying or linking required โ Personalized first-name HTML email โ The welcome email addresses the employee by their first name, includes their specific department and start date, and links to the full recording โ WayinVideo project named per employee โ Each submission creates a named WayinVideo project (Onboarding โ Employee โ Department) so your WayinVideo dashboard stays organized across all employees Customisation Options Increase the number of clips per employee โ In node 2. WayinVideo โ Submit Find Moments, change "limit": 5 to a higher number such as 8 to extract more training moments โ useful for longer onboarding sessions covering many topics. Upgrade clips to Full HD โ In node 2. WayinVideo โ Submit Find Moments, change "resolution": "HD_720" to "resolution": "FULL_HD_1080" for higher quality clips โ useful when sharing onboarding recordings with enterprise clients or executives. Add a Slack notification to the HR team โ After node 11. Gmail โ Send Welcome Email, add a Slack step that posts the employee name, department, start date, and number of clips created to a #hr-team or #onboarding channel so your team is notified every time a new employee's clips are ready. Sort clips into employee-specific Drive subfolders โ In node 9. Google Drive โ Upload Clip, change the folder ID to a dynamic expression that creates or selects a subfolder named after the employee โ so each new hire's clips are in their own folder rather than all together. 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 HR instead of looping indefinitely. Troubleshooting WayinVideo returning an error on submission: Confirm YOUR_WAYINVIDEO_API_KEY in node 2. WayinVideo โ Submit Find Moments is replaced with your actual API key โ not the placeholder text Confirm the same replacement was made in node 4. WayinVideo โ Get Clips Result โ 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 or request body format is invalid No clips returned (empty clips array): The training topic query is likely too short or too vague โ WayinVideo's Find Moments needs descriptive phrases of 4โ6 words; try "company culture and team values explanation" instead of just "culture" Check that the recording URL is publicly accessible โ private Zoom links, expired recordings, or login-required videos will not be processed Review the execution log of node 4. WayinVideo โ Get Clips Result for the full WayinVideo response โ it may contain a specific error or an empty clips array with a reason Workflow stuck in the polling loop: Open the execution log of node 4. WayinVideo โ Get Clips Result and check the raw response status โ WayinVideo may have returned FAILED with a specific reason If the loop runs indefinitely, deactivate the workflow, fix the recording URL or query, and resubmit the form Confirm the recording URL does not require authentication โ Zoom recordings with password protection or region-blocked videos will cause processing to stall Google Drive upload failing: Confirm the Google Drive OAuth2 credential in node 9. Google Drive โ Upload Clip is connected and not expired โ re-authorize if needed Confirm YOUR_GDRIVE_FOLDER_ID is replaced with just the folder ID from the URL โ not the full Drive URL If step 8 fails to download the clip file (e.g. the export link expired before download), step 9 will also fail โ check the execution log of step 8 first Google Sheets not saving rows or Gmail not sending: Confirm YOUR_GOOGLE_SHEET_ID in node 10. Google Sheets โ Save to Library is replaced with your actual Sheet ID and the tab is named Onboarding Clip Library exactly Confirm the Gmail OAuth2 credential in node 11. Gmail โ Send Welcome Email is connected โ re-authorize if you see an authentication error in the execution log Check that the New Employee Email field in the form contains a valid email address โ an invalid or missing address will cause the Gmail step to fail 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 Add your competitors' YouTube video URLs to a Google Sheet once and every Monday at 8AM the workflow automatically processes each one. WayinVideo summarizes each video and extracts structured highlights and tags, then GPT-4o-mini reads the summary and extracts ten competitive intelligence fields โ content type, messaging angle, key claims, target audience signals, pricing signals, strengths, weaknesses, opportunity for your team, urgency score, and urgency reasoning. Each video is saved as a structured Airtable record and the sheet row is marked Processed. Built for marketing teams, product managers, and growth teams who want to automatically track what competitors are saying in their video content every week without watching hours of recordings. What This Workflow Does Summarizes competitor videos automatically** โ WayinVideo extracts structured highlights and tags from each competitor video without any manual watching or note-taking Extracts ten competitive intelligence fields per video** โ GPT-4o-mini identifies content type, messaging angle, key claims, audience signals, pricing signals, strengths, weaknesses, opportunity for your team, urgency score, and urgency reasoning Assigns an urgency score from 1 to 10** โ GPT rates how urgently your team needs to respond to this competitor content โ with a one-sentence explanation of why Identifies specific opportunities for your team** โ Each Airtable record includes bullet-pointed actions your team could take in response or content you could create to counter the competitor Creates one Airtable record per video** โ Every competitor video becomes a fully structured intelligence record with Status set to New for your team to review and act on Marks each video as Processed in Google Sheets** โ After saving to Airtable, the sheet row is updated so the same video is never processed again on a future Monday run Runs fully unattended every Monday** โ Just add new competitor URLs to the sheet and the pipeline processes them automatically the next Monday morning Setup Requirements Tools Needed n8n instance (self-hosted or cloud) WayinVideo account with API access OpenAI account with GPT-4o-mini API access Airtable account with a base and table set up Google Sheets (one spreadsheet with a Video Queue tab) Credentials Required WayinVideo API key (pasted into 3. WayinVideo โ Submit Summarization and 5. WayinVideo โ Get Summary Results) OpenAI API key Airtable Personal Access Token (pasted into 11. HTTP โ Save to Airtable) Google Sheets OAuth2 (used in 2. Google Sheets โ Read Pending Videos and 12. Google Sheets โ Mark as Processed) > โ ๏ธ WayinVideo API key appears in 2 steps โ replace YOUR_WAYINVIDEO_API_KEY in both 3. WayinVideo โ Submit Summarization and 5. WayinVideo โ Get Summary Results. Missing either one will cause the workflow to fail. > โ ๏ธ Google Sheet ID appears in 2 steps โ replace YOUR_COMPETITOR_SHEET_ID in both 2. Google Sheets โ Read Pending Videos and 12. Google Sheets โ Mark as Processed. 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 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 YOUR_WAYINVIDEO_API_KEY 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 YOUR_WAYINVIDEO_API_KEY with the same key Connect OpenAI โ Open node 9. OpenAI โ GPT-4o-mini Model โ click the credential dropdown โ add your OpenAI API key โ test the connection Create your Google Sheet โ Open a new or existing Google Sheet โ add a tab named exactly Video Queue โ add these 6 column headers in row 1: Video URL, Video Title, Competitor Name, Your Product / Brand, Status, Processed Date โ add your first competitor video URLs in the rows below, leaving Status and Processed Date blank 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 for reading โ Open node 2. Google Sheets โ Read Pending Videos โ click the document field โ replace YOUR_COMPETITOR_SHEET_ID with your actual Sheet ID โ click the credential dropdown โ add Google Sheets OAuth2 โ authorize access Connect Google Sheets for marking โ Open node 12. Google Sheets โ Mark as Processed โ click the document field โ replace YOUR_COMPETITOR_SHEET_ID with the same Sheet ID โ confirm the Google Sheets OAuth2 credential is selected Create your Airtable table โ In Airtable, open your base โ create a table named Competitor Intelligence โ add these 16 fields: Week (Date), Competitor Name (text), Video Title (text), Video URL (URL), Content Type (single select), Messaging Angle (long text), Key Claims Made (long text), Target Audience Signals (long text), Pricing / Offer Signals (long text), Strengths Identified (long text), Weaknesses / Gaps (long text), Opportunity for Us (long text), Urgency Score (Number), Tags (text), Summary (long text), Status (single select โ add "New" as default option) Get your Airtable Base ID and table name โ Open your Airtable base in a browser โ the Base ID starts with app and is in the URL โ your table name is Competitor Intelligence (URL-encode the space as %20 โ Competitor%20Intelligence) Get your Airtable Personal Access Token โ Go to airtable.com/create/tokens โ click Create new token โ give it a name โ add scope data.records:write โ add your base under Access โ click Create token โ copy the token Add your Airtable credentials to node 11 โ Open node 11. HTTP โ Save to Airtable โ in the URL, replace YOUR_AIRTABLE_BASE_ID with your actual Base ID and YOUR_AIRTABLE_TABLE_NAME with Competitor%20Intelligence โ in the Authorization header, replace YOUR_AIRTABLE_API_KEY with your Personal Access Token Activate the workflow โ Toggle the workflow to Active โ it will run automatically every Monday at 8AM. To test immediately, click on node 1. Schedule โ Every Monday 8AM and use the manual Execute option. How It Works (Step by Step) Step 1 โ Schedule: Every Monday 8AM The workflow fires automatically every Monday at 8AM using the cron expression 0 8 * * 1. No manual trigger is needed once the workflow is active. Step 2 โ Google Sheets: Read Pending Videos All rows from your Video Queue tab are read. Each row contains a video URL, video title, competitor name, and your brand name. Every row that has not been marked Processed is picked up and run through the full intelligence pipeline. Step 3 โ HTTP: WayinVideo โ Submit Summarization The competitor video URL is sent to WayinVideo's Summarization API. WayinVideo accepts the job and returns a task ID confirming the summarization has started. Step 4 โ Wait: 90 Seconds The workflow pauses for 90 seconds before the first status check, 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 from step 3. It returns the current processing status and, once complete, the summary text, highlights array, and tags array. Step 6 โ IF: Summary Complete? This is the polling gate. If the status equals SUCCEEDED (YES path), the summary is ready and the workflow moves directly to GPT analysis โ no intermediate code step needed. If still processing (NO path), the workflow routes to 7. Wait โ 30 Seconds Retry which pauses 30 seconds then loops back to step 5 to check again. This repeats until SUCCEEDED. Step 7 โ Wait: 30 Seconds Retry When the summary is not yet ready, the workflow waits 30 seconds then returns to step 5 for another check. The loop continues automatically. Step 8 โ AI Agent: Extract Competitive Intelligence GPT-4o-mini receives the competitor name, video title, your brand name, video URL, WayinVideo summary text, highlights joined as a pipe-separated string, and tags joined as a comma-separated string โ all passed directly from steps 2 and 5. It writes ten labeled sections: content type from a fixed list, messaging angle, key claims as bullet points, target audience signals, pricing and offer signals, strengths, weaknesses and gaps, opportunity for your team as specific actionable bullet points, an urgency score from 1โ10, and a one-sentence urgency reasoning. GPT is instructed to base everything only on the WayinVideo summary โ no outside knowledge is used. Step 9 โ OpenAI: GPT-4o-mini Model This is the language model powering the competitive analysis. It runs with default settings for structured, consistent intelligence output. Step 10 โ Code: Parse Intelligence Output All ten labeled sections are extracted from the AI output using regex. A Monday week date is calculated from the current date โ this is the date field for Airtable to make records filterable by week. The video URL, title, competitor name, summary text, and tags from the sheet and WayinVideo are also packaged for the Airtable record. Step 11 โ HTTP: Save to Airtable A POST request creates one Airtable record in your Competitor Intelligence table with all 16 fields populated. Status is set to New on every record. Airtable returns the new record ID on success. Step 12 โ Google Sheets: Mark as Processed The Video Queue row matching this video URL is updated with Status set to Processed and today's date in the Processed Date column. This prevents the same video from being picked up in future Monday runs. Key Features โ Fully automated weekly competitor monitoring โ Runs every Monday at 8AM with zero manual input after the one-time setup โ just add new URLs to the sheet whenever you find new competitor content โ WayinVideo summary passed directly to GPT โ No intermediate code step between summarization and analysis โ the summary, highlights, and tags go straight into the GPT prompt for cleaner, faster processing โ Ten structured intelligence fields per video โ Each Airtable record gives your team everything needed to evaluate a competitor video: claims, audience, pricing signals, strengths, gaps, and a specific opportunity bullet list โ Urgency scoring with reasoning โ Every record includes a 1โ10 urgency rating and a one-sentence explanation so your team can triage which videos need an immediate response โ Fixed content type categories โ GPT assigns one of nine content type labels so your Airtable table is filterable and sortable by type across all competitors and weeks โ Monday week date auto-calculated โ Every record is tagged with the Monday date of the week it was processed so you can filter Airtable by week and track competitor activity over time โ Status tracking prevents double-processing โ Videos marked Processed in the sheet are skipped on all future Monday runs โ add new competitor URLs any time and they are picked up automatically Customisation Options Change the weekly run day or time โ In node 1. Schedule โ Every Monday 8AM, edit the cron expression from 0 8 * * 1 to run on a different day or time โ for example 0 7 * * 1 for 7AM Monday or 0 8 * * 3 for Wednesday morning. Add a retry limit to stop infinite polling โ Before node 7. 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 instead of looping indefinitely. Send a Monday digest email after all videos are processed โ After the last video is marked Processed, add a Gmail step that sends a plain-text email listing all competitor videos processed that week, their urgency scores, and direct Airtable links โ so your team gets a Monday morning brief in their inbox. Add a Slack alert for high-urgency videos โ After node 11. HTTP โ Save to Airtable, add an IF check that triggers only when urgencyScore is 7 or higher, then add a Slack step that posts the competitor name, video title, urgency score, and opportunity bullets to a #competitive-intel channel for immediate team visibility. Track multiple competitors with separate Airtable views โ In Airtable, create one filtered view per competitor using the Competitor Name field โ so each team member or account manager can monitor only the competitors relevant to them without filtering manually. 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 8AM Monday โ self-hosted instances that are off will not fire scheduled workflows To test immediately, click on node 1. Schedule โ Every Monday 8AM and use the manual Execute option โ do not wait for the scheduled run to verify your setup WayinVideo returning an error on submission: Confirm YOUR_WAYINVIDEO_API_KEY in node 3. WayinVideo โ Submit Summarization is replaced with your actual API key โ not the placeholder Confirm the same replacement was made in node 5. WayinVideo โ Get Summary Results โ both steps require the key Check the execution log of node 3 for the raw error โ a 401 means wrong key, a 422 means the video URL format is unsupported Workflow stuck in the polling loop: Check that the competitor video URL is publicly accessible โ private YouTube videos, unlisted videos requiring login, or unavailable videos will cause WayinVideo to fail Open the execution log of node 5. WayinVideo โ Get Summary Results and inspect the raw response โ WayinVideo may have returned FAILED with a specific reason If the loop runs indefinitely, deactivate the workflow, fix the video URL in your sheet, and resubmit Airtable records not being created: Confirm YOUR_AIRTABLE_BASE_ID in the URL of node 11. HTTP โ Save to Airtable is replaced with your actual Base ID starting with app Confirm YOUR_AIRTABLE_TABLE_NAME is replaced โ if your table name has a space, encode it as %20 (e.g. Competitor%20Intelligence) Confirm YOUR_AIRTABLE_API_KEY in the Authorization header is replaced with a valid Personal Access Token with data.records:write scope Check the execution log of node 11 for the Airtable error โ a 422 means a field name in the JSON body does not match your actual Airtable column name exactly Google Sheets not reading videos or not marking rows: Confirm YOUR_COMPETITOR_SHEET_ID is replaced in both 2. Google Sheets โ Read Pending Videos and 12. Google Sheets โ Mark as Processed โ they must use the same Sheet ID Confirm the tab is named Video Queue exactly and all 6 column headers match Check that the Google Sheets OAuth2 credential is connected in both steps โ it is easy to connect 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 isaWOW
Description Add your YouTube video URLs to a Google Sheet once and every Monday at 7AM the workflow automatically converts each pending video into a complete newsletter draft. WayinVideo summarizes each video and extracts numbered highlights and tags, then GPT-4o-mini reads the summary and writes a full newsletter issue โ subject line, preview text, hook intro, three H2 content sections, a featured quote, CTA button text, and hashtags โ all assembled into a Markdown-formatted newsletter body with a week-number issue label. The draft is saved to a Newsletter Drafts tab and the video row is marked Processed in the Video Queue. Built for content creators, media brands, newsletter writers, and marketing teams who publish YouTube videos and want a ready-to-send newsletter draft waiting for them every Monday morning without writing anything manually. What This Workflow Does Runs every Monday at 7AM and stops cleanly if the queue is empty** โ An early check detects whether any videos are pending and exits gracefully if there are none โ no errors on empty weeks Summarizes each video automatically** โ WayinVideo extracts a structured summary, numbered highlights, and tags from each YouTube video so GPT has real content to base the newsletter on Assigns a week-number issue label to every draft** โ The issue number is calculated from the current week of the year (e.g. Issue #18 โ 2025) so your newsletter archive stays organized automatically Writes a 12-section newsletter in one GPT call** โ Subject line, preview text, intro hook, three H2 sections with bodies, featured quote, CTA text, and hashtags are all produced together in a single request Assembles a complete Markdown newsletter body** โ All sections are combined into one formatted body with H2 headings and a blockquote for the featured quote โ ready to paste into any email platform Saves 14 fields to the Newsletter Drafts tab** โ Subject line, preview text, full newsletter body, featured quote, CTA text and link, hashtags, word count, and generation timestamp are all saved per draft Marks each video as Processed in the Video Queue** โ After saving the draft, the sheet row is updated so the same video is never processed again on a future Monday 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 (one spreadsheet with two tabs: Video Queue and Newsletter Drafts) Credentials Required WayinVideo API key (pasted into 4. WayinVideo โ Submit Summarization and 6. WayinVideo โ Get Summary Results) OpenAI API key Google Sheets OAuth2 (used in 2. Google Sheets โ Read Pending Videos, 13. Google Sheets โ Save Newsletter Draft, and 14. Google Sheets โ Mark Video Processed) > โ ๏ธ WayinVideo API key appears in 2 steps โ replace YOUR_WAYINVIDEO_API_KEY in both 4. WayinVideo โ Submit Summarization and 6. WayinVideo โ Get Summary Results. Missing either one will cause the workflow to fail. > โ ๏ธ Two separate Google Sheet IDs are used โ replace YOUR_VIDEO_QUEUE_SHEET_ID in 2. Google Sheets โ Read Pending Videos and 14. Google Sheets โ Mark Video Processed, and replace YOUR_NEWSLETTER_SHEET_ID in 13. Google Sheets โ Save Newsletter Draft. These can be the same spreadsheet or different ones โ just make sure each uses the correct Sheet ID. 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 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 4 โ Open node 4. 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 6 โ Open node 6. WayinVideo โ Get Summary Results โ find the same Authorization header โ replace YOUR_WAYINVIDEO_API_KEY with the same key Connect OpenAI โ Open node 11. OpenAI โ GPT-4o-mini Model โ click the credential dropdown โ add your OpenAI API key โ test the connection Create the Video Queue tab โ Open your Google Sheet โ add a tab named exactly Video Queue โ add these 8 column headers in row 1: Video URL, Video Title, Newsletter Niche / Brand, Target Audience, Newsletter Tone, CTA Link, Status, Processed Date โ add your first YouTube video URLs in the rows below, leaving Status and Processed Date blank Create the Newsletter Drafts tab โ In the same spreadsheet or a new one โ add a tab named exactly Newsletter Drafts โ add these 14 column headers in row 1: Video URL, Video Title, Newsletter Niche, Issue Number, Subject Line, Preview Text, Newsletter Body, Featured Quote, CTA Text, CTA Link, Hashtags, Word Count, Generated On, Status Get your Video Queue Sheet ID โ Open the spreadsheet containing the Video Queue 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 โ replace YOUR_VIDEO_QUEUE_SHEET_ID with your actual Sheet ID โ click the credential dropdown โ add Google Sheets OAuth2 โ authorize access โ repeat the same Sheet ID replacement in node 14. Google Sheets โ Mark Video Processed Get your Newsletter Drafts 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 newsletter drafts โ Open node 13. Google Sheets โ Save Newsletter Draft โ replace YOUR_NEWSLETTER_SHEET_ID with the correct Sheet ID โ confirm Google Sheets OAuth2 is selected Activate the workflow โ Toggle the workflow to Active โ it will run automatically every Monday at 7AM. To test immediately, click on node 1. Schedule โ Every Monday 7AM and use the manual Execute option. How It Works (Step by Step) Step 1 โ Schedule: Every Monday 7AM The workflow fires automatically every Monday at 7AM using the cron expression 0 7 * * 1. It can also be triggered manually at any time using the Execute option in n8n. Step 2 โ Google Sheets: Read Pending Videos All rows from your Video Queue tab are read. Each row contains a YouTube video URL, video title, newsletter niche or brand, target audience, newsletter tone, and CTA link. Step 3 โ IF: Any Pending Videos Today? This is the empty queue gate. If the total number of rows is greater than zero (YES path), the workflow has videos to process and continues. If the sheet has no rows (NO path), the workflow stops cleanly โ no error is thrown. This prevents failures on weeks when no new videos have been added. Step 4 โ HTTP: WayinVideo โ Submit Summarization Each YouTube video URL is submitted to WayinVideo's Summarization API. WayinVideo accepts the job and returns a task ID. Multiple videos are processed sequentially โ step 4 runs once per video. Step 5 โ Wait: 90 Seconds The workflow pauses 90 seconds before the first status check, giving WayinVideo time to process the video. Step 6 โ 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 7 โ IF: Summary Complete? This is the polling gate. If the status equals SUCCEEDED (YES path), the summary is ready and the workflow moves forward to extraction. If still processing (NO path), the workflow routes to 8. Wait โ 30 Seconds Retry which pauses 30 seconds then loops back to step 6. This repeats until SUCCEEDED. Step 8 โ Wait: 30 Seconds Retry When the summary is not yet ready, the workflow waits 30 seconds then returns to step 6 for another check. Step 9 โ Code: Extract Summary Data The summary text and numbered highlights (formatted as 1. highlight, 2. highlight) are extracted from the WayinVideo response. Tags are joined as a comma-separated string. All sheet columns (niche, audience, tone, CTA link) are also packaged. The current week number of the year is calculated and formatted as an issue label โ for example Issue #18 โ 2025 โ so every newsletter draft is automatically numbered. Step 10 โ AI Agent: Write Newsletter GPT-4o-mini receives the summary and highlights as the main input and the newsletter context (title, niche, audience, tone, issue number, CTA link, video URL) in the system prompt. It writes 12 labeled sections: SUBJECT_LINE (45โ55 characters), PREVIEW_TEXT (85โ100 characters that never repeats the subject), NEWSLETTER_INTRO (2โ3 sentence hook), SECTION_1_HEADING through SECTION_3_HEADING (four to seven words each), SECTION_1_BODY through SECTION_3_BODY (80โ120 words each from the highlights), FEATURED_QUOTE (the most insightful statement from the highlights), CTA_TEXT (3โ5 word button text), and HASHTAGS (4โ6 niche-relevant hashtags). Step 11 โ OpenAI: GPT-4o-mini Model This is the language model powering the newsletter writing. Step 12 โ Code: Parse Newsletter Output All 12 labeled sections are extracted from the GPT output using regex. A complete Markdown newsletter body is assembled by joining: intro โ blank line โ ## Section 1 Heading โ body โ blank line โ ## Section 2 Heading โ body โ blank line โ ## Section 3 Heading โ body โ blank line โ blockquote of featured quote โ blank line โ CTA as a Markdown link. Word count is calculated from the assembled body. If the subject line or intro are missing, the step throws a clear error. Step 13 โ Google Sheets: Save Newsletter Draft One row is appended to your Newsletter Drafts tab with all 14 columns: video URL, video title, newsletter niche, issue number, subject line, preview text, newsletter body, featured quote, CTA text, CTA link, hashtags, word count, generation timestamp, and Status set to Draft. Step 14 โ Google Sheets: Mark Video Processed The Video Queue row matching this video URL is updated with Status set to Processed and today's date in the Processed Date column. This prevents the same video from being picked up in future Monday runs. Key Features โ Graceful empty queue handling โ The workflow checks whether any videos are queued before doing anything โ runs every Monday without failing on weeks when nothing new is added โ Week-number issue label auto-calculated โ Every draft is tagged with the current week number and year so your newsletter archive is self-organizing without any manual numbering โ Featured quote extracted from highlights โ GPT identifies the single most insightful statement from the video highlights and saves it separately so you can use it as a pull quote in your email design โ Markdown newsletter body fully assembled โ All sections are combined in one code step with correct H2 headings and a blockquote โ ready to paste into Mailchimp, Beehiiv, ConvertKit, or any Markdown-aware editor โ Word count tracked per draft โ The newsletter body word count is logged in the sheet so you can see at a glance whether each draft meets your length target before reviewing โ CTA link pulled from the sheet row โ The CTA link comes directly from your Video Queue row โ so different videos in your queue can point to different CTAs without any prompt changes โ Two-tab separation of concerns โ The Video Queue manages what to process; the Newsletter Drafts stores finished output โ keeping operations clean and easy to manage Customisation Options Change the weekly run day or time โ In node 1. Schedule โ Every Monday 7AM, edit the cron expression from 0 7 * * 1 to a different schedule โ for example 0 6 * * 1 for 6AM Monday or 0 7 * * 3 for Wednesday morning. Add a retry limit to stop infinite polling โ Before node 8. 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 instead of looping indefinitely. Send the newsletter draft to Gmail for review โ After node 13. Google Sheets โ Save Newsletter Draft, add a Gmail step that emails the subject line, preview text, and full newsletter body to your inbox so you receive a formatted preview every Monday without opening the sheet. Add a Slack notification when drafts are ready โ After node 13. Google Sheets โ Save Newsletter Draft, add a Slack step that posts the issue number, video title, subject line, and a link to the Newsletter Drafts sheet to a #newsletter-team channel so your team knows a new draft is ready to review. Change the newsletter length โ In the system prompt of node 10. AI Agent โ Write Newsletter, change 350-500 words total to a different range โ for example 500-700 words for longer newsletters or 250-350 words for shorter digest-style issues. Troubleshooting Workflow running every Monday but no drafts being generated: The most common cause is an empty Video Queue โ if no rows exist in the sheet, step 3 stops the workflow cleanly with no output and no error; this is expected behavior Confirm the workflow is Active and your n8n instance is running at 7AM Monday โ self-hosted instances that are off will not fire To test immediately, click on node 1. Schedule โ Every Monday 7AM and use the manual Execute option WayinVideo API key errors: Confirm YOUR_WAYINVIDEO_API_KEY is replaced in both 4. WayinVideo โ Submit Summarization and 6. WayinVideo โ Get Summary Results โ missing either one causes a 401 error Check the execution log for the specific failing step โ node 4 errors mean the submission failed, node 6 errors mean the polling request failed Confirm your WayinVideo account is active and the key has not expired Polling loop getting stuck: Check that each YouTube URL in the Video Queue is publicly accessible โ private YouTube videos or unavailable videos will not be processed by WayinVideo Open the execution log of node 6. WayinVideo โ Get Summary Results and check the raw response โ WayinVideo may have returned FAILED with a specific reason If a single video causes the loop to run indefinitely, remove it from the queue, reactivate the workflow, and resubmit Newsletter Drafts tab not receiving rows: Confirm YOUR_NEWSLETTER_SHEET_ID in node 13. Google Sheets โ Save Newsletter Draft is the correct Sheet ID โ if the Newsletter Drafts tab is in a different spreadsheet than the Video Queue, it needs its own Sheet ID Confirm the tab is named Newsletter Drafts exactly and all 14 column headers in row 1 match exactly Check that the Google Sheets OAuth2 credential is connected in node 13 โ it is easy to authorize in node 2 but forget in node 13 Video Queue rows not being marked as Processed: Confirm YOUR_VIDEO_QUEUE_SHEET_ID in node 14. Google Sheets โ Mark Video Processed is the same Sheet ID used in node 2 โ they must point to the same spreadsheet Confirm the tab name in node 14 is Video Queue exactly The update matches rows by Video URL โ if the URL in the sheet has a trailing space or slightly different format from what was submitted, the match will fail 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 Submit any YouTube video URL along with your video title, channel name, niche, focus keyword, and a section query for timestamps and the workflow runs two AI processes simultaneously. WayinVideo's Summarization API and Find Moments API both start at the same time โ one generating a structured video summary and the other finding chapter transition moments โ each with its own independent polling loop. Once both complete, a merge step combines everything and GPT-4o-mini writes a complete YouTube SEO package in one call: an 800โ1000 character description with chapters embedded, a standalone chapter list, 15 keyword tags, 6 hashtags, the above-the-fold hook, and SEO notes. Everything is saved to Google Sheets as one row โ Status set to Ready โ ready to paste directly into YouTube Studio. Built for YouTube creators, video agencies, and content managers who publish regularly and want a complete SEO package generated automatically without writing descriptions manually after every upload. What This Workflow Does Runs Summarization and Find Moments APIs simultaneously** โ Both WayinVideo APIs start at the same time from the form submission โ not sequentially โ so the total processing time is the same as running one Uses two independent polling loops** โ Each API has its own 90-second initial wait and 30-second retry loop โ neither blocks the other if one takes longer to complete Sorts chapters chronologically and prepends 0:00 Introduction** โ All found moments are sorted by start time and a 0:00 Introduction line is added automatically if the first moment does not start at the beginning Generates a full YouTube description with chapters embedded** โ The description follows YouTube best practices: focus keyword in the first 100 characters, hook above the fold, bullet points of what viewers will learn, chapters embedded in the body Produces exactly 15 keyword tags and 6 hashtags** โ The tag list mixes exact keyword, broad niche, long-tail, and channel-related terms; hashtags include the focus keyword, niche, and discovery hashtags Saves the above-the-fold hook separately** โ The first two lines of the description are extracted and saved in their own column so you can check the preview without opening the full description Tracks description character count and tag count** โ Both are logged in the sheet so you can verify against YouTube's limits before publishing 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 (one sheet with a tab named YouTube SEO) Credentials Required WayinVideo API key (pasted into 2a. WayinVideo โ Submit Summarization, 2b. WayinVideo โ Submit Find Moments, 4a. WayinVideo โ Get Summary Results, and 4b. WayinVideo โ Get Moments Results) OpenAI API key Google Sheets OAuth2 > โ ๏ธ WayinVideo API key appears in 4 steps โ replace YOUR_WAYINVIDEO_API_KEY in all four: 2a. WayinVideo โ Submit Summarization, 2b. WayinVideo โ Submit Find Moments, 4a. WayinVideo โ Get Summary Results, and 4b. WayinVideo โ Get Moments Results. Missing any one will cause that branch to fail. 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 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 2a โ Open node 2a. 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 2b โ Open node 2b. WayinVideo โ Submit Find Moments โ find the same Authorization header โ replace the placeholder with the same key Add your WayinVideo API key to node 4a โ Open node 4a. WayinVideo โ Get Summary Results โ find the Authorization header โ replace the placeholder with your key Add your WayinVideo API key to node 4b โ Open node 4b. WayinVideo โ Get Moments Results โ find the same Authorization header โ replace the placeholder with your key Connect OpenAI โ Open node 8. 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 YouTube SEO โ add these 16 column headers in row 1: Video URL, Video Title, Channel, Niche, Focus Keyword, Description Hook, YouTube Description, Description Char Count, Chapter Timestamps, Total Chapters, YouTube Tags, Tag Count, Hashtags, SEO Notes, Generated On, Status Get your Google Sheet ID โ Open your Google Sheet in a browser โ copy the string between /d/ and /edit in the URL Connect Google Sheets โ Open node 10. Google Sheets โ Save YouTube SEO Package โ 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 โ Video URL + SEO Details โ open it in a browser to submit your first video How It Works (Step by Step) Step 1 โ Form: Video URL + SEO Details You open the form URL and fill in seven fields: the YouTube video URL, the video title, the channel name, the content niche, the focus keyword (e.g. "SEO tutorial for beginners"), the section query for timestamps (4โ6 descriptive words like "step by step tutorial section transition"), and an optional channel or website link. Submitting the form triggers both API submissions simultaneously. Steps 2a and 2b โ HTTP: WayinVideo Parallel Submissions The form submission triggers two separate API calls at the same time. 2a. WayinVideo โ Submit Summarization sends the video URL to WayinVideo's Summarization API and receives a task ID. 2b. WayinVideo โ Submit Find Moments sends the same URL along with your section query to WayinVideo's Find Moments API with a limit of 12 moments, and receives a separate task ID. Both run independently from this point forward. Steps 3a and 3b โ Wait: 90 Seconds (Independent) Each branch pauses for 90 seconds independently. 3a. Wait โ 90 Seconds (Summary) waits for the summarization branch. 3b. Wait โ 90 Seconds (Moments) waits for the moments branch. Neither branch waits for the other. Steps 4a and 4b โ HTTP: WayinVideo Results Polling 4a. WayinVideo โ Get Summary Results checks the summarization results endpoint using the task ID from step 2a. 4b. WayinVideo โ Get Moments Results checks the find-moments results endpoint using the task ID from step 2b. Each returns its own status and data independently. Steps 5a and 5b โ IF: Status Checks Each branch has its own polling gate. 5a. IF โ Summary Complete? checks whether the summarization status equals SUCCEEDED. If YES, the summary branch passes its data to the merge step. If NO, it routes to 5c. Wait โ 30 Seconds Retry (Summary) which pauses 30 seconds then loops back to step 4a. 5b. IF โ Moments Complete? works identically for the moments branch โ YES passes to merge, NO routes to 5d. Wait โ 30 Seconds Retry (Moments) which loops back to step 4b. Both loops run independently โ if one API finishes before the other, that branch waits at the merge step until the other arrives. Steps 5c and 5d โ Wait: 30 Seconds Retry (Independent) 5c. Wait โ 30 Seconds Retry (Summary) is the summary branch retry. 5d. Wait โ 30 Seconds Retry (Moments) is the moments branch retry. Each loops back only to its own polling step. Step 6 โ Code: Merge + Format API Results This step reads from both completed branches โ the summarization data from step 4a and the moments clips array from step 4b โ and combines them. The moments clips are sorted chronologically by start time. If the first moment does not start at 0:00, a 0:00 Introduction line is prepended. All form inputs are also packaged. The combined output is one clean object ready for GPT: the video summary, numbered highlights, WayinVideo tags, formatted chapter list with total count, and all form metadata. Step 7 โ AI Agent: Write YouTube SEO Package GPT-4o-mini receives the summary, highlights, chapter timestamps, and WayinVideo tags as the main input, and the full video context in the system prompt. It generates six labeled sections: YOUTUBE_DESCRIPTION (800โ1000 characters with chapters embedded and hashtags at the end, focus keyword in the first 100 characters), CHAPTERS_STANDALONE (clean chapter list for copy-paste), YOUTUBE_TAGS (exactly 15 comma-separated lowercase tags), HASHTAGS (exactly 6 hashtags), DESCRIPTION_HOOK (just the first two lines), and SEO_NOTES (2โ3 specific tips for this video's niche). Step 8 โ OpenAI: GPT-4o-mini Model This is the language model powering the SEO package generation. Step 9 โ Code: Parse SEO Output All six labeled sections are extracted from the GPT output using regex. The tag count is calculated by splitting the tags string on commas. The description character count is measured. If the YouTube description or tags are missing, the step throws a clear error. All metadata from the merge step is also packaged for the sheet row. Step 10 โ Google Sheets: Save YouTube SEO Package One row is appended to your YouTube SEO tab with all 16 columns: video URL, video title, channel, niche, focus keyword, description hook, full YouTube description, character count, chapter timestamps, total chapters, YouTube tags, tag count, hashtags, SEO notes, generation timestamp, and Status set to Ready. Key Features โ Two WayinVideo APIs run simultaneously โ Summarization and Find Moments both start from the form submission at the same time โ saving time compared to running them sequentially โ Two fully independent polling loops โ Each API has its own retry loop so if one takes longer than the other, they never block each other โ 0:00 Introduction auto-prepended โ The merge step checks whether the first found moment is at the very start โ if not, a 0:00 Introduction line is added automatically โ YouTube description character count tracked โ The sheet logs the exact character length of the description so you can verify it falls within YouTube's recommended range before publishing โ Above-the-fold hook saved separately โ The first two lines of the description are extracted into their own column so you can quickly check what viewers see before clicking "more" โ Exactly 15 tags and 6 hashtags enforced โ GPT is instructed to generate exactly these counts per YouTube SEO best practice โ not a variable number โ SEO notes specific to the niche โ The SEO_NOTES section gives 2โ3 actionable tips tailored to the video's specific topic and niche โ not generic YouTube advice Customisation Options Increase the number of chapter moments returned โ In node 2b. WayinVideo โ Submit Find Moments, change "limit": 12 to a higher number such as 15 to find more chapter transitions โ useful for longer videos with many distinct sections. Add a retry limit to stop infinite loops on either branch โ Before nodes 5c. Wait โ 30 Seconds Retry (Summary) and 5d. Wait โ 30 Seconds Retry (Moments), add Set steps that increment separate poll counters, then add second IF checks on each to stop after 15 polls and send a Gmail error notification rather than looping indefinitely. Send the SEO package to Gmail for review โ After node 10. Google Sheets โ Save YouTube SEO Package, add a Gmail step that sends the video title, description hook, all 15 tags, and a link to the YouTube SEO sheet so you can review the package in your inbox without opening the sheet. Add a Slack notification when the package is ready โ After node 10. Google Sheets โ Save YouTube SEO Package, add a Slack step that posts the video title, focus keyword, total chapters, and a sheet link to a #youtube-content channel so your team knows a new package is ready. Change the chapter query for different video styles โ The Section Query for Timestamps field in the form directly drives what moments WayinVideo finds โ try "main topic introduction and explanation" for educational videos or "demonstration and example section" for tutorial-style content. 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 โ Video URL + SEO Details after activating Make sure all six required fields are filled in โ the Channel / Website Link field is optional WayinVideo API key errors on either branch: Confirm YOUR_WAYINVIDEO_API_KEY is replaced in all four steps: 2a. WayinVideo โ Submit Summarization, 2b. WayinVideo โ Submit Find Moments, 4a. WayinVideo โ Get Summary Results, and 4b. WayinVideo โ Get Moments Results โ each branch has two steps and missing either one on that branch causes it to fail independently Check the execution log of whichever step failed โ a 401 means wrong key, a 422 means invalid URL or request format Confirm your WayinVideo account is active and the key has not expired Either polling loop stuck and not completing: Check that the YouTube video URL is publicly accessible โ private videos, unlisted videos requiring login, or unavailable videos will cause WayinVideo to fail on that branch Open the execution log of the failing step (4a or 4b) and check the raw response โ WayinVideo may have returned FAILED with a specific reason The two branches are independent โ if only one gets stuck, the other will complete and wait at the merge step; identify which branch failed and fix it specifically GPT not generating all six sections: Confirm the API key is connected in node 8. OpenAI โ GPT-4o-mini Model and your account has available credits Check the execution log of node 7. AI Agent โ Write YouTube SEO Package for the raw output โ if the YOUTUBE_DESCRIPTION or YOUTUBE_TAGS sections are missing, node 9. Code โ Parse SEO Output throws a clear error If the video summary is very short or the moments list is empty, GPT may produce a thinner output โ confirm that both APIs returned data in step 6's execution log Google Sheets not saving the row: Confirm YOUR_GOOGLE_SHEET_ID in node 10. Google Sheets โ Save YouTube SEO Package is replaced with your actual Sheet ID Confirm the tab is named YouTube SEO exactly and all 16 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
Description Submit any customer support call recording URL along with the agent name, customer details, issue category, call date, and product name and the workflow transcribes and analyzes the full call automatically. WayinVideo's Transcription API returns a speaker-labeled timestamped transcript which GPT-4o-mini reads to extract 10 structured fields โ ticket subject, issue summary, root cause, resolution given, follow-up actions, key customer quotes, sentiment, priority, CSAT prediction, and tags. A Zendesk ticket is created via the REST API with the customer as the requester and the full structured summary as the ticket body, and every call is logged to Google Sheets with the Zendesk Ticket ID and URL. Built for customer support teams, customer success managers, and QA teams who record support calls and want structured tickets created automatically without manually listening to recordings after every call. What This Workflow Does Transcribes the full call with speaker labels and timestamps** โ WayinVideo's Transcription API returns every word spoken in the call labeled by speaker and time so GPT has accurate context for every field it extracts Extracts 10 structured support intelligence fields** โ GPT identifies the ticket subject, issue summary, root cause, resolution given, follow-up actions, key customer quotes, sentiment, priority, CSAT prediction, and tags โ all from what was actually said Predicts CSAT on a 1โ5 scale** โ GPT assesses how the call ended and assigns a predicted customer satisfaction score so your team can proactively follow up on low-scoring calls Builds a structured Zendesk ticket body** โ All 10 fields are assembled into a formatted ticket body with clear section headers making it immediately readable in Zendesk Creates the Zendesk ticket with the customer as requester** โ The ticket is opened in Zendesk with the customer's name and email as the requester โ not the agent โ so reply threads go to the right person Maps priority to Zendesk values automatically** โ The GPT priority label (Urgent, High, Normal, Low) is converted to the exact value Zendesk expects before the API call Logs 19 fields to Google Sheets** โ Every field plus the Zendesk Ticket ID and constructed Ticket URL are saved in one row per call for QA review and reporting Setup Requirements Tools Needed n8n instance (self-hosted or cloud) WayinVideo account with API access OpenAI account with GPT-4o-mini API access Zendesk account with API token access Google Sheets (one sheet with a tab named Support Call Log) Credentials Required WayinVideo API key (pasted into 2. WayinVideo โ Submit Transcription and 4. WayinVideo โ Get Transcript Results) OpenAI API key Zendesk subdomain, agent email, and API token (used in 11. HTTP Request โ Create Zendesk Ticket) Google Sheets OAuth2 > โ ๏ธ WayinVideo API key appears in 2 steps โ replace YOUR_WAYINVIDEO_API_KEY in both 2. WayinVideo โ Submit Transcription and 4. WayinVideo โ Get Transcript Results. Missing either one will cause the workflow to fail. > โ ๏ธ Three Zendesk placeholders in node 11 โ replace YOUR_ZENDESK_SUBDOMAIN in both the URL and the Ticket URL column, YOUR_ZENDESK_EMAIL, and YOUR_ZENDESK_API_TOKEN in the Authorization header of 11. HTTP Request โ Create Zendesk Ticket. 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 2 โ Open node 2. WayinVideo โ Submit Transcription โ 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 Transcript Results โ find the same Authorization header โ replace YOUR_WAYINVIDEO_API_KEY with the same key Connect OpenAI โ Open node 9. OpenAI โ GPT-4o-mini Model โ click the credential dropdown โ add your OpenAI API key โ test the connection Get your Zendesk API token โ Log in to Zendesk Admin Center โ go to Apps and Integrations โ APIs โ Zendesk API โ click Add API token โ give it a name โ copy the token (you can only see it once) Get your Zendesk subdomain โ Your Zendesk subdomain is the part before .zendesk.com in your Zendesk URL โ for example if your URL is mycompany.zendesk.com then your subdomain is mycompany Configure Zendesk credentials in node 11 โ Open node 11. HTTP Request โ Create Zendesk Ticket โ in the URL, replace YOUR_ZENDESK_SUBDOMAIN with your actual subdomain โ in the Authorization header value, replace YOUR_ZENDESK_EMAIL with the email address of your Zendesk agent account, replace YOUR_ZENDESK_API_TOKEN with the token you copied in step 6 Create your Google Sheet tab โ Open your Google Sheet โ add a tab named exactly Support Call Log โ add these 19 column headers in row 1: Call Date, Agent Name, Customer Name, Customer Email, Product, Issue Category, Issue Summary, Root Cause, Resolution Given, Follow-up Required, Sentiment, Priority, CSAT Prediction, Tags, Zendesk Ticket ID, Zendesk Ticket URL, Call Duration (min), Recording URL, Created On Get your Google Sheet ID โ Open your Google Sheet in a browser โ copy the string between /d/ and /edit in the URL Connect Google Sheets โ Open node 12. Google Sheets โ Log Support Record โ click the document field โ replace YOUR_GOOGLE_SHEET_ID by selecting your spreadsheet or entering the Sheet ID manually โ also replace YOUR_ZENDESK_SUBDOMAIN in the Zendesk Ticket URL formula in this step โ 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 โ Support Call + Details โ open it in a browser to submit your first call How It Works (Step by Step) Step 1 โ Form: Support Call + Details Your support agent opens the form URL and fills in seven fields: the call recording URL (Zoom, Loom, Google Meet, or any direct link), the agent name, the customer name, the customer email, the issue category (e.g. Billing, Technical Issue, Onboarding), the call date, and the product or service name. Submitting the form starts the workflow. Step 2 โ HTTP: WayinVideo โ Submit Transcription The call recording URL is sent to WayinVideo's Transcription API using the /v2/transcripts endpoint. WayinVideo accepts the job and returns a task ID. The transcription returns speaker-labeled segments โ each with a speaker name, start time, end time, and spoken text. Step 3 โ Wait: 90 Seconds The workflow pauses 90 seconds before the first status check, giving WayinVideo time to transcribe the full call. Step 4 โ HTTP: WayinVideo โ Get Transcript Results A GET request checks the transcription results endpoint using the task ID from step 2. It returns the current status and, once complete, the full transcript array with each speaker-labeled segment. Step 5 โ IF: Transcription Complete? This is the polling gate. If the status equals SUCCEEDED (YES path), the transcript is ready and the workflow moves forward to formatting. 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 transcript is not yet ready, the workflow waits 30 seconds then returns to step 4 for another check. Step 7 โ Code: Format Transcript Each transcript segment is formatted as [Speaker | MM:SS] Spoken text and joined into a single readable block. Total call duration in minutes, unique speakers, and transcript word count are also calculated. All seven form inputs are packaged alongside the formatted transcript for the GPT prompt. Step 8 โ AI Agent: Extract Support Summary GPT-4o-mini receives the full formatted transcript as the main input and the call context (agent, customer, product, category, date, duration, recording URL) in the system prompt. It extracts 10 labeled sections: TICKET_SUBJECT (a specific 60โ80 character subject line), ISSUE_SUMMARY (2โ3 sentences of what the customer reported), ROOT_CAUSE (why it happened or "Under investigation"), RESOLUTION_GIVEN (what was done or "Unresolved โ escalation required"), FOLLOW_UP_REQUIRED (specific actions or "None"), KEY_QUOTES (the most important things the customer said), SENTIMENT (one of five levels), PRIORITY (one of four levels based on tone and severity), CSAT_PREDICTION (a number 1โ5), and TAGS (5โ8 lowercase comma-separated tags). Step 9 โ OpenAI: GPT-4o-mini Model This is the language model powering the support analysis. Step 10 โ Code: Parse Support Output All 10 labeled sections are extracted from the GPT output using regex. The priority text is mapped to the exact Zendesk API priority value using a lookup table (urgent โ urgent, high โ high, normal โ normal, low โ low). A structured Zendesk ticket body is assembled with clear section headers โ SUPPORT CALL SUMMARY, ISSUE SUMMARY, ROOT CAUSE, RESOLUTION GIVEN, FOLLOW-UP REQUIRED, KEY QUOTES FROM CUSTOMER, CALL INTELLIGENCE (sentiment, priority, CSAT), and TAGS โ each on separate lines so the ticket is immediately readable in Zendesk. Step 11 โ HTTP: Create Zendesk Ticket A POST request creates the ticket in Zendesk via the REST API. The ticket includes the subject, the structured body, the customer's name and email as the requester, the mapped Zendesk priority, the type set to "problem", and the tags array parsed from the GPT output. Zendesk returns the new ticket's ID and other metadata. Step 12 โ Google Sheets: Log Support Record One row is appended to your Support Call Log tab with all 19 columns. The Zendesk Ticket ID comes from the API response. The Zendesk Ticket URL is constructed directly in the sheet formula as https://YOUR_ZENDESK_SUBDOMAIN.zendesk.com/agent/tickets/TICKET_ID so every row has a clickable link to the ticket. All other fields come from the parsed GPT output and form inputs. Key Features โ Speaker-labeled transcript passed to GPT โ Each segment includes the speaker name and timestamp so GPT can distinguish between what the customer said and what the agent said when extracting quotes and sentiment โ CSAT prediction per call โ Every ticket includes a predicted satisfaction score based on how the call ended โ allowing your team to prioritize follow-ups before survey results come in โ Structured ticket body with section headers โ The Zendesk ticket body is formatted with labeled sections so any agent opening the ticket can read the summary, root cause, and follow-up in seconds โ Customer set as ticket requester automatically โ The ticket is opened with the customer's email as the requester โ not the agent's โ so Zendesk email threading works correctly from the first reply โ Priority mapped to Zendesk API values โ GPT's priority label is automatically converted to the exact lowercase value Zendesk expects in the API body โ no manual conversion needed โ Zendesk Ticket URL in every sheet row โ The log row includes a direct clickable link to the Zendesk ticket so QA and managers can jump from the sheet to the ticket in one click โ Tags parsed from GPT output and sent to Zendesk โ The tags field from GPT is split, trimmed, and sent as a proper array in the Zendesk API body โ making the ticket filterable immediately 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 agent instead of looping indefinitely. Send a Slack notification when a high-priority ticket is created โ After node 11. HTTP Request โ Create Zendesk Ticket, add an IF check that triggers only when priority equals "urgent" or "high", then add a Slack step that posts the ticket subject, customer name, and Zendesk URL to a #support-escalations channel. Send a confirmation email to the agent โ After node 12. Google Sheets โ Log Support Record, add a Gmail step that sends the agent a plain-text email with the Zendesk ticket subject, ID, URL, and predicted CSAT so they have a record without opening the sheet. Add a Zendesk assignee โ In the JSON body of node 11. HTTP Request โ Create Zendesk Ticket, add "assignee_id": YOUR_ZENDESK_AGENT_ID inside the ticket object to automatically assign every created ticket to a specific agent or team โ get the agent ID from your Zendesk Admin Center. Change the ticket type โ In node 11. HTTP Request โ Create Zendesk Ticket, change "type": "problem" to "type": "incident", "question", or "task" depending on the nature of the support calls you are logging โ this affects how Zendesk categorizes and reports on the tickets. 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 โ Support Call + Details after activating โ URLs copied before activation will not work Make sure all seven fields are filled in โ all are marked required WayinVideo API key errors: Confirm YOUR_WAYINVIDEO_API_KEY in node 2. WayinVideo โ Submit Transcription is replaced with your actual key โ this workflow uses the /v2/transcripts endpoint, confirm the URL in node 2 is correct Confirm the same key replacement was made in node 4. WayinVideo โ Get Transcript Results Check the execution log of node 2 for the raw error โ a 401 means wrong key, a 422 means the URL format is not supported Workflow stuck in the polling loop: Check that the recording URL is publicly accessible โ private Zoom links, password-protected meetings, or expired recordings will not be transcribed Open the execution log of node 4. WayinVideo โ Get Transcript Results for the raw response โ WayinVideo may have returned FAILED with a specific reason Transcription of longer support calls (over 30 minutes) may take several polling cycles before completing โ this is expected Zendesk ticket not being created: Confirm YOUR_ZENDESK_SUBDOMAIN in the URL of node 11. HTTP Request โ Create Zendesk Ticket is replaced with just your subdomain (e.g. mycompany) โ not the full URL Confirm YOUR_ZENDESK_EMAIL is the email address of your Zendesk agent account โ it must be an active agent email with API access Confirm YOUR_ZENDESK_API_TOKEN is replaced with the token generated in Admin Center โ APIs โ tokens can only be viewed once at creation; if lost, generate a new one Check the execution log of node 11 for the Zendesk API error โ a 401 means wrong credentials, a 422 means a field in the request body is invalid Google Sheets not saving the row: Confirm YOUR_GOOGLE_SHEET_ID in node 12. Google Sheets โ Log Support Record is replaced with your actual Sheet ID Confirm YOUR_ZENDESK_SUBDOMAIN in the Zendesk Ticket URL formula in node 12 is also replaced โ this is a second occurrence of the placeholder Confirm the tab is named Support Call Log exactly and all 19 column headers in row 1 match exactly 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 Rahul Joshi
Quick Overview This workflow polls a Google Sheets milestone tracker every 15 minutes, calculates milestone-based invoice amounts, uses OpenAI (gpt-4o-mini) to draft invoice messaging, emails the invoice via Gmail with an approval link, then records approval in Google Sheets and notifies an accounts Slack channel. How it works Runs every 15 minutes and reads milestone rows from a Google Sheets โMilestonesโ tab. Filters for milestones where % Complete is at or above the Invoice Trigger % and the Invoice Status is Pending. Calculates the billable amount, generates an invoice ID, and asks OpenAI (gpt-4o-mini) to return a JSON invoice narrative, payment terms, email subject, and HTML email body. Builds an approval URL token, generates a styled HTML invoice document, and sends the invoice email to the client via Gmail with an Approve Invoice button. After the email step returns an approval result, updates the milestone status to Sent, appends a record to the Google Sheets โInvoice Logโ tab, and stamps the approval timestamp in the Milestones tab. Posts a Slack message to the accounts team with the milestone ID and approval timestamp, and sends a Slack alert if the workflow errors. Setup Add Google Sheets OAuth2 credentials and replace the spreadsheet document ID and sheet tabs for both the โMilestonesโ and โInvoice Logโ operations. Add an OpenAI credential (used with the gpt-4o-mini model) and adjust the prompt/model if you want different invoice wording. Add a Gmail OAuth2 credential and update the recipient address in the Gmail node (CLIENT_EMAIL@example.com) to your client email field or target address. Add Slack OAuth2 credentials and replace both Slack channel IDs (error alerts and accounts notifications) with your workspace channels. Replace YOUR_N8N_WEBHOOK_BASE_URL in the approval URL builder with your live n8n base URL and ensure your Milestones sheet includes the required columns (Milestone ID, Contract ID, Client Name, % Complete, Invoice Trigger %, Contract Value ($), Invoice Status, Currency).
by Jitesh Dugar
Transform proposal creation from hours to minutes - automatically generate beautifully designed PDF proposals from CRM data or form submissions, deliver them instantly via email, store in Google Drive, and notify your sales team - all without lifting a finger. What This Workflow Does Revolutionizes proposal management with automated generation, validation, and multi-channel delivery: Webhook-Triggered Automation** - Accepts proposal data from CRM deal updates, form submissions, or API calls Smart Data Validation** - Verifies required fields, validates email formats, calculates totals, and generates unique proposal numbers Company Branding Enrichment** - Automatically adds your logo, contact information, payment terms, and brand styling Professional HTML Generation** - Creates beautifully designed proposals with modern typography, responsive layouts, and branded colors HTML to PDF Conversion** - Transforms HTML into print-ready PDFs with custom margins and preserved styling Google Drive Storage** - Automatically saves PDFs to organized folders with proper naming conventions Automated Email Delivery** - Sends branded emails to clients with PDF attachments and professional messaging Slack Team Notifications** - Real-time alerts to sales team with proposal details and Drive links Itemized Pricing Tables** - Dynamic line items with automatic calculations for subtotals, discounts, and taxes Terms & Conditions Management** - Customizable payment terms, delivery timelines, and legal terms Multi-Currency Support** - Handles USD, EUR, INR, and other currencies with proper symbols and formatting Proposal Number Generation** - Automatic sequential numbering with year-month-random format (PROP-202411-457) Key Features Data Validation Engine**: Validates all required fields including client information, project details, and line items before generation - preventing errors and ensuring professional output Dynamic Pricing Calculator**: Automatically calculates line item totals, subtotals, discounts, tax amounts, and final totals with proper currency formatting Responsive HTML Templates**: Professional proposal design that looks perfect on screen and in print with modern Inter font family, gradient backgrounds, and structured information cards Intelligent File Naming**: Generates descriptive filenames like "Proposal_PROP-202411-123_Acme_Corp.pdf" for easy organization and searchability Customizable Branding**: Easy company information updates including logo URLs, contact details, colors, and styling to match your brand identity Professional Email Templates**: Pre-written client-facing emails with key proposal highlights, call-to-action, and professional tone Real-Time Notifications**: Instant Slack alerts to sales team with proposal number, client details, total amount, and direct link to PDF Terms Flexibility**: Customizable payment terms (50% upfront, net-30, milestone-based), delivery timelines, and additional terms per proposal Client Information Cards**: Organized presentation of client details, company information, and contact data in visually appealing cards Validity Period Tracking**: Automatic 30-day validity period calculation with clear expiration dates on proposals Optional Field Handling**: Gracefully handles missing optional fields like client phone, address, or company logo Print-Optimized PDFs**: A4 format with proper margins (20mm top/bottom, 15mm sides) and background colors preserved for professional printing Perfect For B2B Service Companies** - Consulting firms, agencies, and professional services needing quick proposal turnaround SaaS Companies** - Software providers sending pricing proposals for custom implementations and enterprise deals Marketing Agencies** - Digital marketing, creative agencies, and media companies proposing campaigns and retainers Web Development Studios** - Design and development firms quoting website projects, apps, and custom software IT Service Providers** - Managed service providers, cloud consultants, and technology solution vendors Training & Coaching Businesses** - Corporate training providers, coaches, and consultants proposing programs Construction & Contractors** - Project-based businesses requiring detailed scope and pricing breakdowns Event Management Companies** - Event planners proposing packages with itemized services and costs Real Estate Developers** - Property developers presenting investment opportunities and partnership proposals Manufacturing Suppliers** - B2B manufacturers quoting custom orders with specifications and pricing What You Will Need Required Integrations HTML to PDF Service** - PDF conversion API (API key required) - supports services like HTML/CSS to PDF API, PDFShift, or similar providers Gmail or SMTP** - Email delivery service for sending proposals to clients (OAuth2 or SMTP credentials) Google Drive** - Cloud storage for PDF archival and sharing (OAuth2 credentials required) Optional Integrations Slack Webhook** - Team notifications (free incoming webhook) CRM Integration** - HubSpot, Pipedrive, Zoho CRM, or Salesforce for deal data enrichment Payment Gateway** - Stripe or PayPal links in proposals for instant payment acceptance E-signature Integration** - DocuSign or HelloSign for proposal acceptance workflow Calendar Integration** - Google Calendar or Calendly links for scheduling follow-up meetings Quick Start Import Template - Copy JSON workflow and import into your n8n instance Configure PDF Service - Add HTML to PDF API credentials in the "HTML to PDF" node Setup Gmail - Connect Gmail OAuth2 credentials in "Send a message" node and update sender email address Connect Google Drive - Add Google Drive OAuth2 credentials and set your preferred folder ID for proposal storage Customize Company Info - Edit "Enrich with Company Data" node to add your company name, address, email, phone, website, and logo URL Update Email Template - Modify email message in Gmail node with your company branding and messaging Configure Slack - (Optional) Add your Slack incoming webhook URL in "Notify Team" node Test Webhook - Use the test URL to submit sample proposal data and verify all nodes execute successfully Customize Styling - Adjust colors, fonts, and layout in "Generate Professional HTML" node CSS section Launch Workflow - Activate workflow and integrate webhook URL with your CRM or form submission tool Customization Options Custom Branding** - Replace default colors (#3b82f6 blue) with your brand colors throughout HTML template Logo Integration** - Add company logo URL or remove logo section to use company name text Payment Terms Library** - Create dropdown of standard payment term options (net-30, net-60, 50/50 split, milestone-based) Multi-Template Support** - Create different HTML templates for different service types or industries Conditional Sections** - Add/remove sections based on deal type (consulting vs product vs hybrid) Approval Workflow** - Insert manager approval step before sending to client Multi-Language Support** - Translate templates for international clients (Spanish, French, German, Hindi) Tax Calculation** - Add automatic tax calculation based on client location or tax rules Discount Rules** - Implement volume discounts, early payment discounts, or promotional pricing Project Timeline** - Add Gantt chart or milestone timeline visualization Case Studies** - Include relevant case study links or testimonials in proposals Video Integration** - Embed personalized video message or product demo links Competitor Comparison** - Add feature comparison tables against competitors ROI Calculator** - Include interactive ROI or savings calculator Follow-Up Automation** - Schedule follow-up emails if proposal not opened or responded to within X days Expected Results 90% time savings** - Reduce proposal creation from 2-3 hours to 5 minutes 100% consistency** - Eliminate formatting errors and brand inconsistencies across proposals 50% faster turnaround** - Send proposals within minutes of deal stage change or client request Zero manual filing** - Automatic organization in Google Drive with searchable filenames Instant team alignment** - Sales team immediately notified via Slack with all proposal details Professional presentation** - Beautifully designed proposals that elevate brand perception Reduced errors** - Data validation prevents missing information and calculation mistakes Better client experience** - Clients receive proposals instantly with clear terms and professional formatting Increased win rates** - Studies show professionally designed proposals increase close rates by 28% Scalable process** - Handle 10x proposal volume without adding staff or slowing down Use Cases Digital Marketing Agency Example Agency receives 15-20 proposal requests weekly. Account managers spend 3+ hours per proposal copying templates, updating pricing, and fixing formatting issues. Bottleneck causes delays and lost deals to faster competitors. Solution: Integrates workflow with Pipedrive CRM. When deal moves to "Proposal Requested" stage, webhook triggers. Account manager fills quick form with project scope and pricing. Workflow generates branded proposal in 3 minutes. Result: Proposal sent same day instead of 2-3 days later. Client impressed by speed and professionalism. Close rate increases from 32% to 47%. Agency wins additional $250,000 in annual revenue. Account managers save 40 hours monthly, reallocating time to client strategy. SaaS Company Example Sales team manually creates proposals in Google Docs for enterprise deals. Process takes 4-6 hours per proposal including pricing tables, terms negotiation, and approval routing. Proposals look different depending on who creates them. Solution: Implements workflow connected to HubSpot. When deal reaches "Proposal" stage, workflow auto-generates proposal using deal data. Pricing pulled from HubSpot line items. Manager approval added before sending. Result: Proposal generation time drops to 15 minutes. Brand consistency across all proposals. Sales velocity increases 65%. Deal size grows 23% due to professional presentation building enterprise confidence. Team closes 4 additional enterprise deals worth $180,000 ARR. Web Development Studio Example Studio loses deals because proposal turnaround takes 5-7 days. Prospects receive competing proposals faster and sign before studio's proposal arrives. Revenue growth stalled despite strong pipeline. Solution: Connects workflow to Airtable project intake form. When prospect completes project scope form, workflow instantly generates customized proposal with accurate pricing based on feature selections and complexity. Result: Proposals delivered in under 1 hour versus 5-7 days. Win rate increases from 18% to 41%. Studio captures 8 additional projects monthly worth $35,000. Client satisfaction scores improve as prospects appreciate speed and professionalism. IT Consulting Firm Example Consultants manually assemble proposals from disparate sources including technical specifications, staffing plans, and pricing spreadsheets. Format inconsistencies hurt credibility. Proposal errors cause scope creep and margin erosion. Solution: Builds workflow that pulls technical requirements from project planning tool, staffing from resource management system, and pricing from rate card database. All data flows into validated proposal template. Result: Proposal accuracy increases to 98% reducing change orders and scope disputes. Professional presentation wins 2 competitive bids against larger firms. Margin protection saves $75,000 annually. Proposal creation time reduced from 8 hours to 20 minutes per opportunity. Training Company Example Small team of 4 sends 30+ training proposals monthly. Founder spends 15+ hours weekly on proposal creation instead of business development. Revenue plateaus despite strong demand. Solution: Implements workflow triggered by Typeform submission after discovery calls. Prospects self-select training modules, duration, and delivery format. Workflow generates proposal with accurate pricing and timeline. Result: Founder reclaims 15 hours weekly for strategic activities. Team handles 3x proposal volume without hiring. Revenue increases 140% year-over-year. Client feedback highlights speed and professionalism. Referral rate increases as satisfied clients rave about seamless buying experience. Pro Tips Pre-fill Data from CRM** - Connect to HubSpot, Pipedrive, or Salesforce to auto-populate client information and pricing Create Proposal Templates by Service Type** - Maintain different HTML templates for consulting vs product vs retainer proposals Use Dynamic Pricing** - Connect to pricing database or spreadsheet to ensure rates stay current Add Expiration Logic** - Automatically follow up when proposals near expiration (25-day mark) Track Engagement** - Integrate with email tracking (Mailtrack, Yesware) to see when clients open proposals Version Control** - Add version numbers to proposals when re-sending with updates Personalization Variables** - Include prospect's name, company, and pain points throughout proposal Social Proof** - Add relevant case studies, testimonials, or client logos to proposals Clear Next Steps** - Include calendar link or specific call-to-action in email Follow-Up Sequences** - Build automated follow-up workflow (day 3, day 7, day 14 if no response) Proposal Analytics** - Track which proposals convert at highest rates and identify patterns Mobile Optimization** - Test proposal PDF readability on mobile devices Legal Review** - Have legal team review terms template annually A/B Test Formats** - Test different proposal layouts, pricing presentation styles, and email subject lines Quick Edits** - Build simple update form for minor proposal tweaks without regenerating entire document Business Impact Metrics Track these key metrics to measure workflow success: Proposal Creation Time** - Measure average minutes from request to sent (target: under 10 minutes) Proposal Volume** - Count monthly proposals generated through automation (expect 3-5x increase in capacity) Error Rate** - Track proposals with data errors or formatting issues (target: under 2%) Time to Delivery** - Monitor hours from opportunity creation to proposal in client inbox (target: same business day) Team Hours Saved** - Calculate monthly hours reclaimed from proposal automation (typical: 30-60 hours for 5-person sales team) Win Rate Impact** - Compare close rates before and after workflow implementation (expect 15-30% improvement) Average Deal Size** - Track if professional proposals increase deal values (typical: 10-20% increase) Brand Consistency Score** - Audit proposal quality and brand adherence (target: 95%+ consistency) Client Feedback** - Survey clients on proposal professionalism and clarity (target: 4.5/5 stars) Sales Velocity** - Measure days from opportunity to closed-won (expect 20-40% reduction in sales cycle) Template Compatibility Compatible with n8n version 1.0 and above Works with n8n Cloud and Self-Hosted instances Requires HTML to PDF API service subscription No coding required for basic setup Fully customizable for industry-specific requirements Mobile-friendly proposal output Multi-currency support built-in Ready to transform your proposal process? Import this template and start sending professional, beautifully designed proposals in minutes instead of hours - boosting your win rates and freeing your team to focus on selling!