by Nalin
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. Qualify and enrich inbound leads with contextual insights and Slack alerts Who is this for? Sales teams, account executives, and RevOps professionals who need more than just basic lead scoring. Built for teams that want deep contextual insights about qualified prospects to enable truly relevant conversations from the first touchpoint. What problem does this solve? Most qualification stops at "good fit" or "bad fit" - but that leaves sales teams flying blind when it comes to actually engaging the prospect. You know they're qualified, but what are their specific pain points? What value propositions resonate? Which reference customers should you mention? This workflow uses Octave's context engine to not only qualify leads but enrich them with actionable insights that turn cold outreach into warm, contextualized conversations. What this workflow does Inbound Lead Processing: Receives lead information via webhook (firstName, companyName, companyDomain, profileURL, jobTitle) Processes leads from website forms, demo requests, content downloads, or trial signups Validates and structures lead data for intelligent qualification and enrichment Contextualized Lead Qualification: Leverages Octave's context engine to score leads against your specific ICP Analyzes company fit, role relevance, and timing indicators Generates qualification scores (1-10) with detailed rationale Filters out low-scoring leads (configurable threshold - default >5) Deep Lead Enrichment: Uses Octave's enrichment engine to generate contextual insights about qualified leads Identifies primary responsibilities, pain points, and relevant value propositions Suggests appropriate reference customers and use cases to mention Provides sales teams with conversation starters grounded in your business context Enhanced Sales Alerts: Sends enriched Slack alerts with qualification score plus actionable insights Includes suggested talking points, pain points, and reference customers Enables sales teams to have contextualized conversations from first contact Setup Required Credentials: Octave API key and workspace access Slack OAuth credentials with channel access Access to your lead source system (website forms, CRM, etc.) Step-by-Step Configuration: Set up Octave Qualification Agent: Add your Octave API credentials in n8n Replace your-octave-qualification-agent-id with your actual qualification agent ID Configure your qualification agent with your ICP criteria and business context Set up Octave Enrichment Agent: Replace your-octave-enrichment-agent-id with your actual enrichment agent ID Configure enrichment outputs based on the insights most valuable to your sales process Test enrichment quality with sample leads from your target market Configure Slack Integration: Add your Slack OAuth credentials to n8n Replace your-slack-channel-id with the channel for enriched lead alerts Customize the Slack message template with the enrichment fields most useful for your sales team Set up Lead Source: Replace your-webhook-path-here with a unique, secure path Configure your website forms, CRM, or lead source to send data to the webhook Ensure consistent data formatting across lead sources Customize Qualification Filter: Adjust the Filter node threshold (default: score > 5) Modify based on your lead volume and qualification standards Test with sample leads to calibrate scoring Required Webhook Payload Format: { "body": { "firstName": "Sarah", "lastName": "Johnson", "companyName": "ScaleUp Technologies", "companyDomain": "scaleuptech.com", "profileURL": "https://linkedin.com/in/sarahjohnson", "jobTitle": "VP of Engineering" } } How to customize Qualification Criteria: Customize scoring in your Octave qualification agent: Product Level:** Define "good fit" and "bad fit" questions that determine if someone needs your core offering Persona Level:** Set criteria for specific buyer personas and their unique qualification factors Segment Level:** Configure qualification logic for different market segments or use cases Multi-Level Qualification:** Qualify against Product + Persona, Product + Segment, or all three levels combined Enrichment Insights: Configure your Octave enrichment agent to surface the most valuable insights: Primary Responsibilities:** What this person actually does day-to-day Pain Points:** Specific challenges they face that your solution addresses Value Propositions:** Which benefits resonate most with their role and situation Reference Customers:** Similar companies/roles that have succeeded with your solution Conversation Starters:** Contextual talking points for outreach Slack Alert Format: Customize the enrichment data included in alerts: Add or remove enrichment fields based on sales team preferences Modify message formatting for better readability Include additional webhook data if needed Scoring Threshold: Adjust the Filter node to match your qualification standards Integration Channels: Replace Slack with email, CRM updates, or other notification systems Use Cases High-value enterprise lead qualification and research automation Demo request enrichment for contextual sales conversations Event lead processing with immediate actionable insights Website visitor qualification and conversation preparation Trial signup enrichment for targeted sales outreach Content download lead scoring with context-aware follow-up preparation
by Max Mitcham
An intelligent automation workflow that monitors thought leader activity via social listening, tracks high-value prospects who engage with industry content, and systematically builds a qualified lead database through social intelligence gathering. Overview This workflow transforms passive social listening into proactive lead generation by identifying prospects who demonstrate genuine interest in industry topics through their engagement with thought leader content. It creates a continuous pipeline of warm prospects with enriched data for personalized outreach. 🔄 Workflow Process 1. Social Intelligence Webhook Real-time engagement monitoring Integrated with Trigify.io social listening platform Monitors thought leader posts and their engagers Captures detailed prospect and company enrichment data Processes LinkedIn engagement activities in real-time Includes enriched contact information (email, phone, LinkedIn URLs) 2. Data Processing & Extraction Structured data organization Post Data Extraction**: Isolates LinkedIn post URLs, content, and posting dates Prospect Data Extraction**: Captures first/last names, job titles, LinkedIn profiles, and locations Company Data Extraction**: Gathers company names, domains, sizes, industries, and LinkedIn pages Prepares data for duplicate detection and storage systems 3. Duplicate Detection System Data quality maintenance Queries existing Google Sheets database by post URL Identifies previously tracked thought leader content Filters out duplicate posts to maintain data quality Only processes genuinely new thought leader activities Maintains clean, unique post tracking records 4. New Content Validation Gate Quality control checkpoint Validates that post URLs are not empty (indicating new content) Prevents processing of duplicate or invalid data Ensures only fresh thought leader content triggers downstream actions Maintains database integrity and notification relevance 5. Thought Leader Post Tracking Systematic content monitoring Appends new thought leader posts to "Social Warming" Google Sheets Records post URLs, content text, and publication dates Creates searchable database of industry thought leadership content Enables trend analysis and content performance tracking 6. Real-Time Slack Notifications Immediate team alerts Sends formatted alerts to #comment-strategy channel Includes post content, publication date, and direct links Provides action buttons (View Post, Engage Now, Save for Later) Enables rapid response to thought leader activity Facilitates team coordination on engagement opportunities 7. ICP Qualification Filter Smart prospect identification Filters engagers by job title keywords (currently: "marketing") Customizable ICP criteria for targeted lead generation Focuses on high-value prospects matching ideal customer profiles Prevents database pollution with irrelevant contacts 8. Qualified Lead Database Systematic prospect capture Appends qualified engagers to "Engagers" Google Sheets Records comprehensive prospect and company data Includes contact enrichment (emails, phone numbers) Creates actionable lead database for sales outreach Maintains detailed company intelligence for personalization 🛠️ Technology Stack n8n**: Workflow orchestration and webhook management Trigify.io**: Social listening and engagement monitoring platform Google Sheets**: Lead database and content tracking system Slack API**: Real-time team notifications and collaboration Data Enrichment**: Automated contact and company information gathering ✨ Key Features Real-time thought leader content monitoring Automated prospect discovery through social engagement ICP-based lead qualification and filtering Duplicate content detection and prevention Comprehensive prospect and company data enrichment Integrated CRM-ready lead database creation Team collaboration through Slack notifications Customizable qualification criteria for targeted lead generation 🎯 Ideal Use Cases Perfect for sales and marketing teams seeking warm prospects: B2B Sales Teams** seeking warm prospects through social engagement Marketing Professionals** building targeted lead databases Business Development Teams** identifying engaged prospects Account-Based Marketing Campaigns** requiring social intelligence Sales Professionals** needing conversation starters with warm leads Companies** wanting to identify prospects already engaged with industry content Teams** requiring systematic lead qualification through social activity Organizations** seeking to leverage thought leadership for lead generation 📈 Business Impact Transform social listening into strategic lead generation: Warm Lead Generation**: Identifies prospects already engaged with industry content Social Selling Intelligence**: Provides conversation starters through engagement history ICP Qualification**: Focuses efforts on prospects matching ideal customer profiles Relationship Building**: Enables outreach based on genuine interest demonstration Market Intelligence**: Tracks industry engagement patterns and trending content Sales Efficiency**: Prioritizes prospects who show active industry engagement Personalization Data**: Provides context for highly personalized outreach campaigns 💡 Strategic Advantage This workflow creates a fundamental shift from cold outreach to warm, contextual conversations. By identifying prospects who have already demonstrated interest in industry topics through their engagement behavior, sales teams can approach leads with genuine relevance and shared context. The system delivers: Continuous Pipeline**: Automated flow of warm prospects showing industry engagement Social Context**: Rich background data for meaningful, personalized conversations Quality Focus**: ICP-filtered prospects matching ideal customer profiles Engagement History**: Conversation starters based on actual prospect interests Competitive Advantage**: Proactive lead identification before competitors Rather than interrupting prospects with cold messages, this workflow enables sales teams to join conversations prospects are already having, dramatically increasing response rates and relationship-building success.
by Intuz
This n8n template from Intuz provides a complete solution to automate your expense approval and accounting process. It seamlessly connects an Airtable base, where expenses are submitted, to your QuickBooks account, eliminating manual data entry and ensuring financial records are always up-to-date. Who's this workflow for? Accountants & Bookkeepers Small Business Owners Finance Teams Operations Managers How it works 1. Trigger on New Expense: The workflow starts automatically when a new expense record is added to your Airtable base. 2. Filter for Approval: It checks if the expense's Status field is marked as "Approved". Unapproved items are ignored. 3. Create Expense in QuickBooks: For every approved item, the workflow creates a new expense record in QuickBooks, mapping data like amount, date, vendor, and accounts directly from Airtable. 4. Download and Upload Receipt: It downloads the receipt from the URL provided in Airtable and uploads it as an attachment to the corresponding expense record in QuickBooks. 5. Update Airtable Status: Once the expense and receipt are successfully logged in QuickBooks, the workflow updates the record's Status in Airtable to "Done", closing the loop. Setup Instructions 1. Airtable Configuration: Create an Airtable base with a table for your expenses. Ensure your table includes the following columns: Status, Receipt URL, Amount, Date, Memo, QBO Vendor ID, QBO Expense Account ID, and QBO Payment Account ID. Connect your Airtable account to n8n. In the Airtable Trigger, Search records, and Update record nodes, select your credentials and specify your Base ID and Table ID. 2. QuickBooks Configuration: Connect your QuickBooks account to n8n using OAuth2 credentials. In the QBO-Create Expense and QBO-Upload File nodes, replace {YOUR_QUICKBOOKS_COMPANY_ID} in the URL with your actual QuickBooks Company ID. Ensure the Vendor ID and Account IDs in your Airtable records correspond to valid IDs in your QuickBooks account. 3. Activate Workflow: Save the workflow and toggle the "Active" switch to ON. Your expense management is now fully automated! Connect with us: Website: https://www.intuz.com/services Email: getstarted@intuz.com LinkedIn: https://www.linkedin.com/company/intuz Get Started: https://n8n.partnerlinks.io/intuz For Custom Worflow Automation Click here- Get Started
by KlickTipp
Community Node Disclaimer: This workflow uses KlickTipp community nodes. How It Works This workflow listens for new or updated customers and for checkout confirmations in Stripe and automatically creates or updates contacts in KlickTipp, enriching profiles for segmentation and automated messaging. Tags are applied dynamically: high-value orders (≥100) get a Premium Customer tag, and purchases with certain SKUs (e.g., clothing) receive product-based tags. The process keeps your database clean, accurate, and updated in real time for targeted campaigns. Perfect for digital product sellers, course creators, and service providers seeking an end-to-end automated sales confirmation process. Setup Instructions KlickTipp Preparation Prepare custom fields Products (Text) Total (Decimal Number) Payment ID (Text) Receipt URL (URL) Prepare tags: Premium customer Clothing buyer Credential Configuration Connect your Stripe account using an API key from the Stripe Dashboard. Authenticate your KlickTipp connection with username/password credentials (API access required). Customization Launch upsell or membership campaigns using tags. Use KlickTipp placeholders ([[Stripe | Products]], [[Stripe | Total]], etc.) for dynamic emails. Route buyers to portals (e.g., Memberspot, Mentortools). Trigger CRM, Slack notification, or invoice creation.
by Jaures NYA
This workflow automates the process of scraping local business listings from Google Maps and generating clean, AI-powered summaries for each one — using Apify (community node) and OpenAI’s GPT-4o. All results are then saved automatically into Google Sheets, ready for lead generation, enrichment, or outreach. What it does This workflow saves hours of manual research by automatically: Scraping structured business data from Google Maps (name, category, address, phone, website, etc.) Creating natural-language summaries for each business using GPT-4o Storing everything into Google Sheets — perfectly formatted for outreach or CRM import Who’s it for This automation is ideal for: Lead generators and sales teams building B2B lists from local businesses Freelancers and agencies prospecting new clients in specific cities or industries Recruiters or marketers looking to enrich business data for campaigns Automation enthusiasts who want to summarize and structure raw scraped data — without writing a single line of code How it works Trigger: The workflow starts manually via the Execute Workflow trigger (ideal for testing or batch runs). Scrape: It uses an Apify actor to scrape Google Maps search results and collect structured business info (name, category, address, phone, website, Google Maps URL...). Fetch Data: The dataset is retrieved from Apify using the actor's dataset ID, and each business is loaded for processing. Deduplicate: Removes duplicate business listings to keep your database clean. Loop Over: Iterates over each business to generate a clean summary, one at a time. Generate Summary: Sends the business data to OpenAI to generate a human-readable paragraph (including name, category, address, city, phone, and Google Maps link). Store: Appends the summarized info into a Google Sheet — your final lead database. Pause for rate limit: Adds a short delay (optional) to control flow or avoid rate limits. Customization Tips Change the Apify search query to target different cities, industries, or keywords. Adjust the OpenAI prompt to include tone, length, or focus areas (e.g., add business highlights). Add filters (e.g., add-on: reviews, add-on: images, etc.). Setup Guide Apify Setup Use a Google Maps scraping actor in Apify. Copy your Actor ID and Token — add them to your Apify node in n8n. Note your Dataset ID (where results are stored). OpenAI Setup Add your OpenAI API key to the Generate Summary node. The model gpt-4o is recommended for best quality/cost balance. Google Sheets Setup Connect your Google account. How to use Set up your Apify actor for Google Maps scraping (or use a prebuilt one). Connect your OpenAI API key to the Message node (company summary). Connect your Google Sheets account and select the target sheet. Run the workflow → it will: 1 Scrape business data 2 Clean and summarize each one 3 Save everything to your spreadsheet. Requirements ✅ A working Apify actor that scrapes Google Maps listings ✅ An OpenAI account (GPT-4) with API access ✅ A Google Sheet for storing the summarized results ❓ Need help Contact me for consulting and support: LinkedIn / YouTube / Skool
by emmanuelchilaka779
Gather leads into Mailchimp, automate marketing, and sales process.
by Marth
How It Works: The 5-Node Security Flow This workflow efficiently performs a scheduled file integrity audit. 1. Scheduled Check (Cron Node) This is the workflow's trigger. It schedules the workflow to run at a specific, regular interval. Function:** Continuously runs on a set schedule, for example, daily at 3:00 AM. Process:** The Cron node automatically initiates the workflow on its schedule, ensuring consistent file integrity checks without manual intervention. 2. List Files & Checksums (Code Node) This node acts as your static database, defining which files to monitor and their known-good checksums. Function:** Stores the file paths and their verified checksums in a single, easy-to-update array. Process:** It configures the file paths and their valid checksums, which are then passed on to subsequent nodes for processing. 3. Get Remote File Checksum (SSH Node) This node connects to your remote server to get the current checksum of the file being monitored. Function:** Executes a command on your server via SSH. Process:** It runs a command like sha256sum /path/to/file on the server. The current checksum is then captured and passed to the next node for comparison. 4. Checksums Match? (If Node) This is the core detection logic. It compares the newly retrieved checksum from the server with the known-good checksum you stored. Function:** Compares the two checksum values. Process:* If the checksums *do not match**, it indicates a change in the file, and the workflow is routed to the notification node. If they do match, the workflow ends safely. 5. Send Alert (Slack Node) / End Workflow (No-Op Node) These nodes represent the final action of the workflow. Function:** Responds to a detected file change. Process:* If the checksums don't match, the *Slack* node sends a detailed alert with information about the modified file, the expected checksum, and the detected checksum. If the checksums match, the *No-Op** node ends the workflow without any notification. How to Set Up Implementing this essential cybersecurity monitor in your n8n instance is quick and straightforward. 1. Prepare Your Credentials & Server Before building the workflow, ensure all necessary accounts are set up and their credentials are ready. SSH Credential:* Set up an *SSH credential** in n8n with your server's hostname, port, and authentication method (e.g., private key or password). The SSH user must have permission to run sha256sum on the files you want to monitor. Slack Credential:* Set up a *Slack credential* in n8n and note the *Channel ID** of your security alert channel (e.g., #security-alerts). Get Checksums:* *This is a critical step.** Manually run the sha256sum [file_path] command on your server for each file you want to monitor. Copy and save the generated checksum values—these are the "known-good" checksums you will use as your reference. 2. Import the Workflow JSON Get the workflow structure into your n8n instance. Import:** In your n8n instance, navigate to the "Workflows" section. Click the "New" or "+" icon, then select "Import from JSON." Paste the provided JSON code into the import dialog and import the workflow. 3. Configure the Nodes Customize the imported workflow to fit your specific monitoring needs. Scheduled Check (Cron):** Set the schedule according to your preference (e.g., daily at 3:00 AM). List Files & Checksums (Code):* Open this node and *edit the filesToCheck array**. Enter your actual server file paths and paste the "known-good" checksums you manually obtained in step 1. Get Remote File Checksum (SSH):* Select your *SSH credential**. Send Alert (Slack):* Select your *Slack credential* and replace YOUR_SECURITY_ALERT_CHANNEL_ID with your actual *Channel ID**. 4. Test and Activate Verify that your workflow is working correctly before setting it live. Manual Test:** Run the workflow manually. Verify that it connects to the server and checks the files without sending an alert (assuming the files haven't changed). Verify:** To test the alert, manually change one of the files on your server and run the workflow again. Check your Slack channel to ensure the alert is sent correctly. Activate:** Once you're confident in its function, activate the workflow. n8n will now automatically audit the integrity of your critical files on the schedule you set.
by Kidlat
This workflow automates the process of extracting and qualifying leads from LinkedIn post comments based on your Ideal Customer Profile (ICP) criteria. It turns LinkedIn engagement into a structured, downloadable list of qualified leads—without manual review. Who’s this for Sales and business development teams generating outbound lead lists Marketing teams running LinkedIn engagement campaigns Recruiters sourcing candidates with specific job titles Operators who want to convert LinkedIn comments into actionable data What problem does this solve Manually reviewing LinkedIn post comments to identify relevant prospects is slow, repetitive, and error-prone. This workflow automates the entire process—from scraping comments to enriching profiles and filtering by ICP—saving hours of manual work and ensuring consistent results. What this workflow does Collects a LinkedIn post URL and ICP criteria via a form Scrapes post comments using Apify (supports up to 1,000 comments) Deduplicates commenters and enriches profiles with LinkedIn data Filters profiles by selected job titles and countries Exports matched leads as a downloadable CSV file How to set up Create an Apify account and generate an API key Add your Apify credentials in n8n (Settings → Credentials → Apify API) Execute the workflow and submit a LinkedIn post URL and ICP criteria Requirements Apify account with API access - Apify offers a free tier with $5 in monthly credits, which is enough to test this workflow on smaller LinkedIn posts How to customize the workflow Update job titles and target countries in the Form Trigger Increase pagination limits to support larger posts Replace CSV export with a CRM, Google Sheets, or database integration
by amudhan
Companion workflow for Switch node docs
by Robert Breen
🧑💻 Description This workflow checks a Monday.com board/group for items with Status = "Stuck" and sends a Slack alert (e.g., to a user or channel). Great for nudging owners on blocked work without manual chasing. ⚙️ Setup Instructions 1️⃣ Connect Monday.com Node In Monday.com → go to your Admin → API Copy your Personal API Token Docs: Generate Monday API Token In n8n → Credentials → New → Monday.com API Paste your token and save. Open the Get many items node → choose your credential → set your Board ID and Group ID (these must match where your items live). 2️⃣ Connect Slack API Create an app → https://api.slack.com/apps OAuth & Permissions → add scopes: chat:write (send messages) channels:read, groups:read, users:read (to look up channels and users) Install the app to your workspace → copy the Bot User OAuth Token In n8n → Credentials → New → Slack OAuth2 API → paste token and save In the Slack node (“Alert Team”), select your Slack credential and pick a user or channel. 🧠 How it works Get many items** (Monday.com): pulls items from your board/group Set Columns**: maps item fields (Name, Status, Due Date) Filter for Stuck Items**: keeps only items where Status = "Stuck" Alert Team** (Slack): posts a message like "<Item Name> task is stuck" ✅ Tips Adjust the Status column index/field mapping if your board uses a different column order or a custom status label. Point the Slack node to a channel (for team visibility) or a user (for direct nudges). Add a Schedule Trigger if you want automatic daily/weekly checks. 📬 Contact Need help mapping custom columns or routing alerts by owner? 📧 robert@ynteractive.com 🔗 Robert Breen 🌐 ynteractive.com
by Antonio Gasso
Overview Stop manually creating folder structures for every new client or project. This workflow provides a simple form where users enter a name, and automatically duplicates your template folder structure in Google Drive—replacing all placeholders with the submitted name. What This Workflow Does Displays a form where users enter a name (client, project, event, etc.) Creates a new main folder in Google Drive Calls Google Apps Script to duplicate your entire template structure Replaces all {{NAME}} placeholders in files and folder names Key Features Simple form interface** — No technical knowledge required to use Recursive duplication** — Copies all subfolders and files Smart placeholders** — Automatically replaces {{NAME}} everywhere Production-ready** — Works immediately after setup Prerequisites Google Drive account with OAuth2 credentials in n8n Google Apps Script deployment (code below) Template folder in Drive using {{NAME}} as placeholder Setup Step 1: Create your template folder 📁 {{NAME}} - Project Files ├── 📁 01. {{NAME}} - Documents ├── 📁 02. {{NAME}} - Assets ├── 📁 03. Deliverables └── 📄 {{NAME}} - Brief.gdoc Step 2: Deploy Apps Script Go to script.google.com Create new project → Paste code below Deploy → New deployment → Web app Execute as: Me | Access: Anyone Copy the deployment URL Step 3: Configure workflow Replace these placeholders: DESTINATION_PARENT_FOLDER_ID — Where new folders are created YOUR_APPS_SCRIPT_URL — URL from Step 2 YOUR_TEMPLATE_FOLDER_ID — Folder to duplicate Step 4: Test Activate workflow → Open form URL → Submit a name → Check Drive! Apps Script Code function doPost(e) { try { var params = e.parameter; var templateFolderId = params.templateFolderId; var name = params.name; var destinationFolderId = params.destinationFolderId; if (!templateFolderId || !name) { return jsonResponse({ success: false, error: 'Missing required parameters: templateFolderId and name are required' }); } var templateFolder = DriveApp.getFolderById(templateFolderId); if (destinationFolderId) { var destinationFolder = DriveApp.getFolderById(destinationFolderId); copyContentsRecursively(templateFolder, destinationFolder, name); return jsonResponse({ success: true, id: destinationFolder.getId(), url: destinationFolder.getUrl(), name: destinationFolder.getName(), mode: 'copied_to_existing', timestamp: new Date().toISOString() }); } else { var parentFolder = templateFolder.getParents().next(); var newFolderName = replacePlaceholders(templateFolder.getName(), name); var newFolder = parentFolder.createFolder(newFolderName); copyContentsRecursively(templateFolder, newFolder, name); return jsonResponse({ success: true, id: newFolder.getId(), url: newFolder.getUrl(), name: newFolder.getName(), mode: 'created_new', timestamp: new Date().toISOString() }); } } catch (error) { return jsonResponse({ success: false, error: error.toString() }); } } function replacePlaceholders(text, name) { var result = text; result = result.replace(/\{\{NAME\}\}/g, name); result = result.replace(/\{\{name\}\}/g, name.toLowerCase()); result = result.replace(/\{\{Name\}\}/g, name); return result; } function copyContentsRecursively(sourceFolder, destinationFolder, name) { var files = sourceFolder.getFiles(); while (files.hasNext()) { try { var file = files.next(); var newFileName = replacePlaceholders(file.getName(), name); file.makeCopy(newFileName, destinationFolder); Utilities.sleep(150); } catch (error) { Logger.log('Error copying file: ' + error.toString()); } } var subfolders = sourceFolder.getFolders(); while (subfolders.hasNext()) { try { var subfolder = subfolders.next(); var newSubfolderName = replacePlaceholders(subfolder.getName(), name); var newSubfolder = destinationFolder.createFolder(newSubfolderName); Utilities.sleep(200); copyContentsRecursively(subfolder, newSubfolder, name); } catch (error) { Logger.log('Error copying subfolder: ' + error.toString()); } } } function jsonResponse(data) { return ContentService .createTextOutput(JSON.stringify(data)) .setMimeType(ContentService.MimeType.JSON); } Use Cases Agencies** — Client folder structure on new signup Freelancers** — Project folders from intake form HR Teams** — Employee onboarding folders Schools** — Student portfolio folders Event Planners** — Event documentation folders Notes Apps Script may take +60 seconds for large structures Timeout is set to 5 minutes for complex templates Your Google account needs edit access to template and destination folders
by Avkash Kakdiya
How it works This workflow automatically scrapes LinkedIn job postings for a list of target companies and organizes the results in Google Sheets. Every Monday morning, it checks your company list, runs a LinkedIn job scrape using Phantombuster, waits for the data to be ready, and then fetches the results. Finally, it formats the job postings into a clean structure and saves them into a results sheet for easy analysis. Step-by-step Start with Scheduled Trigger The workflow runs automatically at 9:00 AM every Monday. It reads your “Companies Sheet” in Google Sheets and filters only those marked with Status = Pending. Scrape LinkedIn Jobs The workflow launches your Phantombuster agent with the LinkedIn profile URLs from the sheet. It waits 3 minutes to let the scraper finish running. Then it fetches the output CSV link containing the job posting results. Format the Data The scraped data is cleaned and structured into fields like: Company Name Job Title Job Description Job Link Date Posted Location Employment Type Save Everything in Google Sheets The formatted job data is appended into your “Job Results” Google Sheet. Each entry includes a scrape date so you can track when the data was collected. Why use this? Automates job market research and competitive hiring analysis. Collects structured job posting data from multiple companies at scale. Saves time by running on a schedule with no manual effort. Keeps all results organized in Google Sheets for easy review and sharing. Helps HR and recruitment teams stay ahead of competitors’ hiring activity.