n8n Examples: 10 Step-by-Step Workflow Guides

If you are a solopreneur or small team operator spending hours every week on repetitive tasks — sending follow-up emails, posting to social media, chasing invoices, entering data — you already know the pain. You also know that hiring help or subscribing to expensive SaaS tools is not always in the budget. That is exactly where n8n examples become your secret weapon. n8n is an open-source workflow automation platform with over 400 integrations, a generous free tier offering 5,000 monthly executions, and the flexibility to replace tools that cost $25 or more per month. In this guide, you will get 10 complete, step-by-step n8n workflow guides you can build today — each one designed to save you real hours every single week. No fluff, no theory. Just the exact nodes, configurations, and troubleshooting steps you need to get each automation running.

The average solopreneur saves 6 to 8 hours per week by implementing just three or four of these n8n examples. With the free tier providing roughly 160 executions per day, you can run most of these workflows without spending a dollar. Whether you are nurturing leads, processing receipts, or generating weekly reports, this guide walks you through every click. If you are new to the platform, start with the n8n workflow automation guide for foundational concepts, then come back here to build.

Most Valuable Takeaways

  • Every workflow is free-tier compatible — all 10 n8n examples run within the free 5,000 monthly execution limit for most small businesses
  • Total time savings across all 10 workflows: 15 to 25 hours per week — the equivalent of hiring a part-time assistant at $0 cost
  • Each guide includes exact node names, field configurations, and common error fixes — no guesswork required
  • Lead nurturing and invoice reminders deliver the fastest ROI — email automation generates $42 for every $1 spent, and automated payment reminders recover $2,500 to $5,000 monthly in overdue invoices
  • AI-powered workflows cost pennies — sentiment analysis and receipt categorization using OpenAI run at $0.001 to $0.002 per request
  • The troubleshooting section covers the 6 most common n8n errors — 401 authentication failures, timeout errors, rate limiting, silent failures, duplicates, and field mapping mismatches

Workflow 1: Automated Email Follow-Up System for Lead Nurturing

Email remains the highest-ROI marketing channel for small businesses, generating $42 for every $1 spent. Yet 60 percent of solopreneurs never systematize their follow-ups because of time constraints. This n8n example automates a three-touch email sequence that saves 2 to 3 hours per week and increases response rates by 20 percent. Small teams using automated follow-ups convert 15 percent more leads to paying customers. The execution cost on the free tier is $0 per follow-up.

What You Need Before Starting

Step-by-Step Build

  1. Open Gmail and create a new label called Follow-up Queue. Any email you label with this tag will enter the automation.
  2. In n8n, create a new workflow and add a Gmail Trigger node. Set the Event to Message Received. Under Filters, set Label to Follow-up Queue. Authenticate using a Gmail App Password — go to your Google Account, then Security, then 2-Step Verification, then App passwords, and generate a 16-character password. Paste this into the n8n credentials (no spaces).
  3. Add a Wait node after the Gmail Trigger. Set the Wait Amount to 3 and the Unit to Days. This gives your prospect time to reply before the first follow-up fires.
  4. Add a Gmail node configured to Get Many Messages. Set the Query to search for replies from the prospect’s email address in the last 3 days. This checks whether they have already responded.
  5. Add an IF node. Set the condition: Number of messages returned equals 0. If true (no reply), the workflow continues. If false (reply exists), the workflow stops.
  6. On the true branch, add a Gmail Send node. Set the To field to the prospect’s email address (pulled from the trigger data). Set the Subject to Follow-up: {{original subject}}. Write a brief, friendly follow-up in the body.
  7. Add a second Wait node set to 7 Days.
  8. Add another Gmail node to check for replies again, followed by a second IF node with the same no-reply condition.
  9. On the true branch, add a third Gmail Send node for the final follow-up. Use a more direct tone: mention this is your last message and invite them to reply when the timing is right.
  10. After the final send, add an Airtable Create Record node. Map the prospect’s email to the Email field, the subject to the Subject field, and today’s date to the Date Added field in your Cold Leads table.
  11. Finally, add a Gmail node set to Modify Message Labels. Remove the Follow-up Queue label and add the Archived label. This prevents the workflow from triggering duplicate sequences on the same email.

If everything is configured correctly, you should see the workflow execute in the n8n canvas with green checkmarks on each node. Test it by labeling a real email with Follow-up Queue and watching the trigger fire. For a deeper understanding of how each node type works, check the n8n nodes guide.

Common mistake: Forgetting to remove the Gmail label after the sequence completes. This causes the trigger to fire again on the same email, creating duplicate follow-up sequences running simultaneously.

Article image

Workflow 2: Social Media Content Scheduling with Auto-Posting

Solopreneurs spend 4 to 6 hours every week publishing content across social platforms. Tools like Buffer start at $15 per month. This n8n example replaces that cost entirely by posting pre-written content to Twitter/X, LinkedIn, and Instagram simultaneously on a fixed schedule. Brands posting four or more times per week see 38 percent higher engagement and 23 percent more conversions.

Prerequisites

  • Google Sheet with columns: Post Text, Platform, Status, Scheduled Date, Published Timestamp
  • Twitter Developer account with Bearer token (apply at developer.twitter.com — approval takes 1 to 3 days)
  • LinkedIn Page with an app registered in the LinkedIn Developer Portal (OAuth 2.0 token with w_member_social scope)
  • Instagram Business Account connected to a Facebook Page (access token via Facebook Graph API Explorer)

Step-by-Step Build

  1. Create a new workflow in n8n. Add a Schedule Trigger node. Set the Trigger Interval to Daily and the Hour to 9 (9 AM in your timezone).
  2. Add a Google Sheets node. Set the Operation to Read Rows. Select your spreadsheet and sheet. Under Filters, set Status column equals Ready.
  3. Add a Function node to format content. Use encodeURIComponent() on any hashtags in the post text to prevent API rejections. Add character limit checks: if text exceeds 280 characters, truncate for Twitter; LinkedIn allows 3,000; Instagram allows 2,200.
  4. After the Function node, create three parallel branches using a Switch node. Set the routing field to Platform with values Twitter, LinkedIn, and Instagram.
  5. On the Twitter branch, add an HTTP Request node. Set Method to POST, URL to https://api.twitter.com/2/tweets. Under Authentication, select Generic Credential Type and add your Bearer token. Set the Body to JSON: {“text”: “{{postText}}”}.
  6. On the LinkedIn branch, add an HTTP Request node. Set Method to POST, URL to https://api.linkedin.com/v2/ugcPosts. Use OAuth 2.0 authentication. Include your LinkedIn Page ID in the payload along with the post text.
  7. On the Instagram branch, add an HTTP Request node. Set Method to POST, URL to https://graph.facebook.com/v18.0/{{instagramAccountId}}/media. Include the caption text and image URL in the payload. Note: the Instagram Graph API requires a Business Account, not a Personal account.
  8. After each platform node, add an IF node checking if the HTTP response status code equals 429 (rate limit). On the true branch, add a Wait node set to 15 minutes, then loop back to retry the request.
  9. Merge all three branches back together using a Merge node.
  10. Add a Google Sheets Update node. Set the Status column to Published and populate the Published Timestamp column with the current date and time.

When the workflow runs successfully, you will see your Google Sheet update with “Published” status and a timestamp for each row. Verify by checking each social platform for the live post. If LinkedIn posts do not appear, confirm your OAuth token has the w_member_social write permission scope in the Developer Portal.

Workflow 3: Lead Data Collection from Website Forms to CRM

Seventy-two percent of small business leads are lost because follow-up does not happen within 24 hours. Manual CRM entry delays average 18 hours. This lead capture automation workflow captures form submissions instantly and syncs them to Airtable in real time, reducing data entry errors by 99 percent compared to copy-paste methods.

Step-by-Step Build

  1. In n8n, add a Webhook node. Set the HTTP Method to POST. Copy the unique webhook URL that n8n generates — you will need this in the next step.
  2. In Typeform, go to Connect, then Webhooks, then click Add a webhook. Paste the n8n webhook URL. Toggle it on.
  3. Add a Set node in n8n to parse the Typeform payload. Map the fields: form_response.answers[0].text to firstName, form_response.answers[1].email to email, form_response.answers[2].text to phone, form_response.answers[3].text to company, form_response.answers[4].text to projectDescription.
  4. Add an IF node to filter out test submissions. Set the condition: email does not contain test AND email does not contain @example.com.
  5. Add a second IF node for lead routing. Condition: if company field is not empty, route to the qualified-leads table. If empty, route to the leads table.
  6. On each branch, add an Airtable node set to Search Records. Query where Email equals the submitted email. This checks for duplicates.
  7. Add an IF node after the search. If the record count is greater than 0, skip creation (duplicate detected). If 0, proceed.
  8. Add an Airtable Create Record node. Map firstName to First Name, email to Email, phone to Phone, company to Company, and projectDescription to Project Details. Field names are case-sensitive and must match your Airtable column headers exactly.
  9. Add a Slack node. Set the Channel to #leads. Format the message: New lead: {{firstName}} from {{company}} — {{email}}.
  10. Add a Respond to Webhook node at the very end. Set the Response Code to 200. This confirms receipt to Typeform and prevents “webhook response status 200 expected” errors.

Test by submitting a real form response in Typeform using the Test feature. You should see a new record appear in your Airtable base and a Slack notification within seconds. If you get an “Airtable field not found” error, double-check that your field names match exactly, including capitalization and spaces.

Workflow 4: Automated Invoice and Payment Reminders

Forty-five percent of small business revenue is tied up in overdue invoices. The average payment collection takes 45 days instead of 30. This billing automation workflow sends an initial invoice, a friendly reminder at day 10, and an escalation email at day 30 — all automatically. Small businesses recover an average of $2,500 to $5,000 per month in overdue payments after implementing automated reminders, and solopreneurs save 3 to 4 hours monthly on payment follow-up conversations.

Step-by-Step Build

  1. Add a Webhook node to listen for new invoice creation events from Stripe, Wave, or QuickBooks. Alternatively, use a Google Sheets Trigger node watching for new rows if you track invoices manually.
  2. Add a Set node to extract: invoiceAmount, dueDate, clientEmail, clientName, invoiceNumber, and paymentUrl from the webhook payload.
  3. Add a Function node to calculate days until due: (new Date(dueDate).getTime() – new Date().getTime()) / (1000 * 60 * 60 * 24). Use ISO 8601 date format (YYYY-MM-DD) to avoid calculation errors.
  4. Add an Email Send node for the initial invoice notification. Set SMTP to smtp.gmail.com port 587. Subject: Invoice #{{invoiceNumber}} — Payment Due {{dueDate}}. Body: include the amount, due date, and payment link.
  5. Add a Wait node set to 10 Days.
  6. Add an HTTP Request node to check payment status. For Stripe, use GET https://api.stripe.com/v1/invoices/{{invoiceId}} and check if status equals paid.
  7. Add an IF node. If status equals paid, end the workflow. If unpaid, continue.
  8. Add a second Email Send node for the friendly reminder. Subject: Reminder: Invoice #{{invoiceNumber}} Due in 20 Days. Keep the tone polite.
  9. Add a second Wait node set to 20 Days (30 days total from invoice creation).
  10. Add another HTTP Request node to check payment status again, followed by another IF node.
  11. If still unpaid, add a third Email Send node with an escalation tone. Subject: URGENT: Invoice #{{invoiceNumber}} Now Overdue. Mention late fees and service suspension.
  12. Add an Airtable Create Record node to log the unpaid invoice to a Collections table with fields: clientName, invoiceAmount, daysOverdue, lastContactDate.

After building, create a test invoice in your accounting system and watch the workflow fire. You should see the initial email arrive immediately. The Wait nodes will hold the workflow in a pending state — visible in the n8n Executions panel — until the delay period completes. Customize each email template with escalating urgency: polite for the first, firm for the second, urgent for the third.

Workflow 5: Customer Feedback Collection and Sentiment Analysis

Sixty-eight percent of small businesses do not actively collect customer feedback. Those who do improve retention by 25 percent and product satisfaction by 19 percent. This n8n example automatically sends post-purchase surveys, analyzes responses with AI, and routes at-risk customers for immediate outreach — all for about $0.10 to $0.20 per month in API costs for 100 survey responses.

Step-by-Step Build

  1. Add a Webhook node to receive purchase events from Shopify, Stripe, or WooCommerce.
  2. Add a Set node to extract: customerEmail, customerName, productPurchased, purchaseDate, orderValue.
  3. Add a Wait node set to 7 Days. This gives the customer time to use your product or service before you ask for feedback.
  4. Add an Email Send node with your survey. Include three questions: a 1-to-5 satisfaction rating, an open-text improvement question, and a yes/no recommendation question. Link to a Typeform survey for easy response collection. Include an unsubscribe link per CAN-SPAM Act compliance.
  5. Create a second workflow with a Webhook node to receive Typeform survey responses.
  6. Add an OpenAI node (or HTTP Request node calling the OpenAI API). Set Model to gpt-3.5-turbo, Temperature to 0.3, Max Tokens to 100. Set the System Prompt to: Classify this customer feedback as positive, neutral, or negative sentiment. Example positive: ‘Great product, love it!’ Example negative: ‘Disappointed with quality.’ Feedback: {{responseText}}.
  7. Parse the OpenAI response from choices[0].message.content to extract the sentiment label.
  8. Add a Switch node with three branches based on the sentiment value: positive, neutral, negative.
  9. On the positive branch, add an Airtable Create Record node to tag the customer as Promoter and add their feedback to a Testimonials table.
  10. On the negative branch, add an Airtable Create Record node to tag the customer as At-Risk, then add a Slack node sending an urgent message to your #customer-success channel for immediate outreach.
  11. On the neutral branch, add an Airtable Create Record node tagging the customer as Passive.
  12. After all branches, add a final Airtable Create Record node logging every response with: customerEmail, sentimentLabel, feedbackText, timestamp, productPurchased.

When working correctly, you will see each survey response automatically classified and routed. Negative feedback triggers an immediate Slack alert so you can reach out before the customer churns. The OpenAI API cost for this is approximately $0.001 per response — 100 monthly surveys cost about $0.10 to $0.20 total.

n8n examples

Workflow 6: Inventory and Stock Alert Automation

Twenty-seven percent of small businesses experience lost sales due to inventory gaps. Manual stock checks consume 30 to 60 minutes weekly. This inventory automation workflow monitors your product catalog daily, sends urgent Slack alerts for out-of-stock items, and creates reorder lists automatically — saving $200 to $400 monthly in lost sales for the average small business.

Step-by-Step Build

  1. Add a Schedule Trigger node set to run Daily at 6 AM.
  2. Add a Shopify node (or HTTP Request node for WooCommerce/Square). Set the Operation to Get All Products. For Shopify, use the endpoint https://your-store.myshopify.com/admin/api/2024-01/products.json. Authenticate with Private App credentials (generate in Shopify Admin, then Apps, then Develop apps). Required scopes: read_products and read_inventory.
  3. Add a Function node to extract each product’s inventory_quantity field and compare it against a reorder point. Use the formula: reorder point = (average daily sales × lead time in days) + safety stock. Example: 2 units per day × 7-day lead time + 5 safety stock = 19 units.
  4. Add a Filter node. Condition: inventory_quantity is less than the reorder_point.
  5. Add a Switch node with two branches. Branch 1: inventory_quantity equals 0 (out of stock). Branch 2: inventory_quantity is between 1 and your threshold (low stock).
  6. On the out-of-stock branch, add a Slack node. Set the channel to #inventory. Message: ⚠️ URGENT: {{productName}} is OUT OF STOCK. Current inventory: 0 units. Mention @owner in the message.
  7. On the low-stock branch, add an Airtable Create Record node. Add a row to a Reorder List table with fields: productName, currentStock, reorderQuantity (calculated as reorder point × 2), supplierName, lastOrderDate.
  8. Optionally, add an HTTP Request node to trigger an automatic purchase order if your supplier has an API. Send a POST request with the product SKU, quantity, and shipping address.
  9. Merge both branches and add an Email Send node. Send a daily summary to yourself with the subject: Daily Inventory Report — {{lowStockCount}} Products Need Reordering. Include a table of all flagged items.
  10. Add a final Airtable Create Record node to log the daily inventory check with a timestamp and the number of products flagged.

After activation, you will receive a daily Slack notification for any out-of-stock items and an email summary of everything that needs reordering. If Shopify API calls fail with a 401 error, verify your Private App has read_products and read_inventory scope permissions. If notifications feel spammy, increase the schedule to every 12 hours or raise the alert threshold to 2 units.

Workflow 7: Automated Expense Categorization and Receipt Processing

Small business owners spend 3 to 4 hours monthly organizing receipts, and 35 percent of receipts are lost before categorization. This OCR automation workflow extracts data from receipt images, categorizes expenses automatically, and syncs everything to your accounting software. It reduces manual expense entry from 5 to 10 minutes per receipt down to 30 seconds and improves tax deduction capture by 22 percent.

Step-by-Step Build

  1. Create a dedicated email address for receipts (for example, receipts@yourdomain.com). Alternatively, set up a Slack channel where you upload receipt photos.
  2. In n8n, add an Email Trigger (IMAP) node. Configure it to watch the receipts inbox for new messages.
  3. Add a Move Binary Data node to extract the receipt image or PDF attachment from the email.
  4. Add an HTTP Request node to call the Google Vision API. Set Method to POST, URL to https://vision.googleapis.com/v1/images:annotate?key={{apiKey}}. Set the request type to DOCUMENT_TEXT_DETECTION and pass the base64-encoded image in the body. Google Vision’s free tier covers 1,000 images per month.
  5. Add a Function node to parse the OCR text using regex patterns. Extract the date with \d{1,2}\/\d{1,2}\/\d{4}, the total amount with total.*?\$?(\d+\.\d{2}) (case-insensitive), and the vendor name from the first two lines of extracted text.
  6. For higher accuracy, add an OpenAI node instead of (or in addition to) regex parsing. Prompt: Extract from this receipt text: date (MM/DD/YYYY format), vendor name, total amount, and expense category (food, office supplies, travel, software, or other). Receipt text: {{ocrText}}. Cost: $0.001 per request.
  7. Add a Switch node for conditional routing. If amount is greater than $2,500, route to a manual approval branch with a Slack notification to the owner. If the date is older than 90 days, send a warning email about potential tax documentation issues. Otherwise, proceed to automatic categorization.
  8. Add a second OpenAI node (or a rule-based Function node) for category determination. Prompt: Categorize this expense: Food and Dining, Office Supplies, Travel, Software and Subscriptions, Marketing, Equipment, or Other. Vendor: {{vendorName}}, Amount: {{amount}}.
  9. Add a QuickBooks node (or Wave/FreshBooks HTTP Request node). Set the operation to Create Expense. Map: date to {{extractedDate}}, vendor to {{vendorName}}, amount to {{totalAmount}}, category to {{determinedCategory}}, memo to Auto-imported via n8n.
  10. Add an Airtable Create Record node as a backup log with all extracted fields plus the original receipt image URL.
  11. Add an Email Send node to reply to the original email: Receipt processed successfully: ${{amount}} categorized as {{category}} for vendor {{vendorName}}.

Test by forwarding a clear receipt photo to your receipts email address. Within seconds, you should receive a confirmation reply with the extracted details. If OCR does not extract text clearly, add an image preprocessing step — increase brightness by 15 percent and contrast by 20 percent, and convert to grayscale before sending to the Vision API. If wrong categories are assigned frequently, refine the categorization prompt with specific examples like “Starbucks equals Food and Dining, not Office Supplies.”

Workflow 8: Customer Birthday and Anniversary Automated Outreach

Personalized outreach on customer milestones increases customer lifetime value by 18 to 22 percent and retention by 15 percent. Yet 73 percent of small businesses never send birthday or anniversary messages because manual tracking is too difficult. This customer engagement workflow runs daily, checks your database for milestones, and sends personalized emails with discount codes — all at $0 cost on the free tier.

Step-by-Step Build

  1. Add a Schedule Trigger node set to run Daily at 8 AM.
  2. Add an Airtable node set to List Records. Pull all customer records with fields: firstName, email, birthday, firstPurchaseDate, unsubscribed.
  3. Add a Filter node. Exclude records where unsubscribed equals true OR email is empty. This keeps you CAN-SPAM compliant.
  4. Add a Function node for date comparison. Check if today’s month and day match the customer’s birthday month and day: new Date().getMonth() === new Date(birthday).getMonth() && new Date().getDate() === new Date(birthday).getDate(). Do the same for firstPurchaseDate (anniversary). Handle leap year birthdays: if birthday is February 29 and the current year is not a leap year, match on March 1 instead.
  5. Add a Switch node with three branches: Birthday today, Anniversary today, Both today.
  6. On the Birthday branch, add a Set node to calculate customer tenure: current year minus first purchase year. Then add an Email Send node. Subject: Happy Birthday {{firstName}}! 🎉. Body: Happy Birthday {{firstName}}! Thank you for being a valued customer for {{yearsAsCustomer}} years. Here is 15% off your next purchase — use code BDAY15 at checkout. Offer valid for 7 days.
  7. On the Anniversary branch, add a Set node to calculate total orders (query order history count). Then add an Email Send node. Subject: Celebrating {{yearsAsCustomer}} Years Together! 🎊. Body: include the order count and a 20 percent discount code ANNIVERSARY20.
  8. On the Both branch, send a single combined email with a 25 percent discount code.
  9. After all branches, add an Airtable Update Record node. Set the lastBirthdayEmailSent field to today’s date. This prevents duplicate sends if the workflow runs more than once in a day.
  10. Optionally, create a separate follow-up workflow: Schedule Trigger set to 7 days later, check if the discount code was used, and if not, send a reminder email: Do not forget — your birthday discount expires in 24 hours!

If no customers appear on their birthday, the most common cause is inconsistent date format in your database. Ensure all birthday fields use the same format — either MM/DD/YYYY or YYYY-MM-DD — throughout your Airtable base. Mixing formats causes the date comparison to fail silently. For pre-built templates that speed up this kind of setup, browse the n8n templates guide.

Workflow 9: Lead Scoring and Qualification Automation

Eighty percent of leads generated by small businesses are never followed up on because manual qualification is too time-intensive. This lead scoring workflow automatically evaluates leads based on engagement, company size, and behavior, then routes high-value prospects for immediate outreach. It typically increases conversion rates from 2 to 3 percent up to 5 to 7 percent and saves 2 to 3 hours weekly of manual lead qualification.

Step-by-Step Build

  1. Add a Webhook node (or Airtable Trigger node watching for new rows in your Leads table) to fire when a new lead is created.
  2. Add a Set node to extract: companySize, industry, emailOpens, linkClicks, formSubmissions, leadCreatedDate.
  3. Add a Function node to build the scoring matrix. Assign points as follows: company size 1 to 10 employees = 20 points (your ideal solopreneur customer), 11 to 50 = 30 points (small team with potentially higher contract value), 51 or more = 10 points (longer sales cycle). Industry match against your target list (technology, ecommerce, consulting, marketing, SaaS) = 15 points. Email opens = 5 points each. Link clicks = 10 points each. Form submissions = 20 points each. Lead created in the last 7 days = 10 points. Last 30 days = 5 points. Sum the total.
  4. Add a Switch node with three branches. Hot Lead: score 60 or above. Warm Lead: score 40 to 59. Cold Lead: score below 40.
  5. On the Hot Lead branch, add a Slack node sending an urgent message to #sales: High-priority lead: {{companyName}} scored {{score}} points. Contact within 24 hours. Then add an Airtable Update Record node setting status to Hot Lead and nextAction to Immediate outreach.
  6. On the Warm Lead branch, add an Airtable Update Record node setting status to Warm Lead and nextAction to Add to nurture sequence with nextActionDate set to today plus 3 days. Optionally trigger a separate 14-day email drip workflow using the Execute Workflow node.
  7. On the Cold Lead branch, add an Airtable Update Record node setting status to Cold Lead and nextActionDate to today plus 90 days for a quarterly check-in.
  8. After all branches merge, add a final Airtable Update Record node logging the totalScore, companySize, industry, and all engagement metrics for every lead regardless of score.
  9. Quarterly, review your conversion data by score bracket. If leads scoring 60 or above are not converting at a higher rate, adjust your point allocations. If too many leads are marked “Hot” (more than 20 percent of total), raise the threshold or lower individual point values.

Test with a sample lead by manually adding a row to your Airtable Leads table with known values. Verify the calculated score matches your expectations by adding a temporary Set node that outputs the score to the n8n execution log. If leads are not routing correctly, this is the fastest way to debug the scoring math.

Workflow 10: Scheduled Report Generation and Stakeholder Distribution

Fifty-nine percent of small business owners spend 2 to 3 hours weekly compiling performance reports manually from multiple sources. This automated reporting workflow aggregates data from Google Analytics, Stripe, and social media APIs into a single formatted report and delivers it to your inbox every Monday morning. Setup takes 3 to 4 hours, then it runs fully automated.

Step-by-Step Build

  1. Add a Schedule Trigger node. Set it to Weekly on Monday at 8 AM. Explicitly set the timezone to match your location — defaulting to UTC will send reports at the wrong time.
  2. Add an HTTP Request node to query Google Analytics 4. Use the GA4 Data API endpoint: https://analyticsdata.googleapis.com/v1beta/properties/{{propertyId}}:runReport. Authenticate with a service account. Request metrics: sessions, conversions, bounceRate, screenPageViews. Set the date range dynamically: start date = 7 days ago, end date = yesterday.
  3. Add a second HTTP Request node to query Stripe. Use GET https://api.stripe.com/v1/charges?created[gte]={{sevenDaysAgoTimestamp}}. Authenticate with your Stripe API key. Extract: total revenue, transaction count, and calculate average order value in a Function node.
  4. Add a third HTTP Request node for social media metrics. Query the Instagram Graph API for follower count and engagement rate, and the LinkedIn API for post impressions over the past 7 days.
  5. Add a Function node to calculate week-over-week growth percentages. Compare this week’s values against the previous week (store last week’s values in a Google Sheet or Airtable row that updates each run).
  6. Add a Function node to compile all data into an HTML email template. Use HTML table formatting with inline styles. Apply green text for metrics that improved and red text for metrics that declined. Format revenue as $5,234 (not 5234 or 5234.00).
  7. Add an Email Send node. Set the recipient to your email (and any stakeholders). Subject: Weekly Performance Report — Week of {{startDate}}. Set the body content type to HTML and paste the compiled template.
  8. Add a Google Drive node (optional). Save the HTML report as a file in a Weekly Reports folder for archival access.
  9. Add an Airtable Create Record node to log the report generation with a timestamp and a success/failure flag for monitoring.
  10. Add an IF node after each API call to check if the response status equals 200. If any API fails, route to a Slack node that alerts you: Weekly report generation failed — {{apiName}} returned error {{statusCode}}.

When working correctly, you will receive a formatted HTML email every Monday morning with all your key metrics in one place. If the report formatting looks broken in Gmail or Outlook, test your HTML template in both clients — they render inline styles differently. Use simple table layouts and inline CSS only (no external stylesheets). If data mismatches what you see in the source dashboards, verify that your date range filters and timezone settings match.

Article image

Common Workflow Errors and Step-by-Step Fixes

No matter how carefully you build these n8n examples, errors will happen. Forty-two percent of automation implementation failures result from authentication and credential errors alone. Here are the six most common issues you will encounter, with exact fixes for each.

401 Unauthorized Errors (API Authentication Failures)

Error message: “401 Unauthorized — The credentials are incorrect or expired”

Cause: API credentials are wrong, expired, or missing required permission scopes.

  1. Go to your Google Account, then Security, then 2-Step Verification.
  2. Scroll to App passwords.
  3. Generate a new app password for Mail on Other (Custom name).
  4. Copy the 16-character password (format: xxxx-xxxx-xxxx-xxxx).
  5. In the n8n Gmail node, go to the Credentials tab and paste the app password with no spaces.
  6. Click Test to verify the connection.

Prevention: Set a calendar reminder to regenerate app passwords every 90 days. Store backup credentials in a password manager.

Connection Timeout Errors

Error message: “Workflow execution timed out after 120 seconds”

Cause: The API is slow, you are processing too much data in a single execution, or rate limiting is causing delays.

  1. Add pagination to API calls — limit to 50 to 100 records per execution instead of pulling all records at once.
  2. Insert a Wait node with a 2 to 3 second delay between consecutive API calls.
  3. Split the workflow into smaller sub-workflows called sequentially using the Execute Workflow node.
  4. For large datasets, use batch processing: process 100 records, wait 5 minutes, process the next 100.

Rate Limiting Errors (429 Too Many Requests)

Error message: “429 Too Many Requests — Rate limit exceeded”

Cause: Making too many API calls too quickly. Google Sheets allows 100 requests per 100 seconds. Shopify allows 2 requests per second on the standard plan.

  1. Add a Wait node with a minimum 1-second delay between calls for most APIs.
  2. Implement retry logic: add an Error Trigger node, then a Wait node set to 15 minutes, then retry the original request.
  3. Use bulk operations instead of individual calls. Airtable supports batch creation of 10 records at once.
  4. Calculate expected API calls before deploying. Example: 500 customers × 3 API calls each = 1,500 calls. Ensure this is within your daily limit.

Silent Failures (Workflow Succeeds But Data Is Missing)

Error message: None visible. The workflow shows “Success” but data is missing in the destination system.

Cause: Field mapping mismatch, conditional logic filtering out records unintentionally, or the destination API silently rejecting data.

  1. Add a Set node after each critical step that outputs the data being passed — inspect it in the n8n execution log.
  2. Add an IF node checking if the API response status equals 200. If not, route to a Slack notification.
  3. Check the destination system directly (Airtable, CRM) to see if records appeared with unexpected values.
  4. Always test with sample data before deploying to production.

Duplicate Data Entries

Error message: None — but you notice duplicate rows in Airtable or your CRM.

Cause: The trigger fires multiple times, there is no deduplication logic, or old workflow versions are still active.

  1. Add a Search Records node before data creation to check if a record with the same unique field (like email) already exists.
  2. Use an IF node: if the search returns results, skip creation.
  3. Deactivate old workflow versions in the n8n workflow list to prevent concurrent execution.
  4. For webhooks, implement idempotency by storing processed request IDs and filtering out duplicates.

Field Mapping Errors (Field Not Found)

Error message: “Field ‘Client Email’ not found in destination table”

Cause: Field names do not match exactly between source and destination. Airtable field names are case-sensitive, and spaces matter.

  1. Open your destination system and copy the exact field name, including capitalization and spaces.
  2. In the n8n node configuration, paste the exact field name — do not type it from memory.
  3. If source and destination use different naming conventions, add a Set node to rename fields before sending. Map email to Client Email explicitly.

Pre-Deployment Testing Checklist

Before activating any of these n8n examples in production, run through this checklist to prevent the errors described above.

  1. Test the trigger with real data — create a test record in the source system and confirm the workflow fires.
  2. Verify all API credentials are current and have the correct permission scopes.
  3. Check the destination system for test data after the workflow executes.
  4. Monitor the workflow execution in the n8n Executions panel for 24 to 48 hours after deployment.
  5. Set up error notifications — add a Slack or Email Send node that fires when any workflow fails.
  6. Document the expected execution frequency (daily, per new record, etc.) in the workflow description field.

Scaling From Your First n8n Workflow to Full Automation

Most solopreneurs start with one or two workflows and wonder when to scale up. Here is a practical roadmap based on execution volume and operational complexity.

  • 1 to 3 workflows (free tier, $0 per month) — Manual testing is sufficient. Basic error notifications are acceptable. Keep a simple note documenting what each workflow does.
  • 4 to 7 workflows (consider Team plan at $20 per month) — Add a logging node on every workflow showing execution start, end, and errors. Set up Slack error notifications for any failed execution. Create a shared spreadsheet documenting what each workflow does and who owns it.
  • 8 to 15 workflows ($40 to $60 per month on n8n plus integrations) — Implement branching workflows using the Execute Workflow node. Set up an Airtable log showing all executions for an audit trail. Add 3 to 5 minute execution delays between similar workflows to prevent API rate limiting. Schedule a monthly workflow review checking failure rates and ROI.
  • 15 or more workflows — Evaluate the self-hosted option to save money ($0 versus $20 or more per month per user), but weigh against the technical setup burden. Switch to a higher tier when consistently hitting 80,000 or more monthly executions.

A real-world example: a freelance marketer starts with one email follow-up automation, expands to five workflows covering email, social media, and CRM, spends 2 to 3 hours on initial setup, then 30 minutes weekly on maintenance. The result is 8 to 10 hours saved every week — a 20 to 25x return on time invested. At 10,000 or more monthly executions, n8n’s cost per execution of $0.001 to $0.002 becomes significantly cheaper than Zapier at $25 or more per month minimum.

Tools and Prerequisites Summary

Before diving into these n8n examples, here is a quick reference of what each workflow requires and what it costs.

  • Workflow 1 (Email Follow-Up) — Gmail account, Airtable free tier, 2-hour setup, $0 cost
  • Workflow 2 (Social Posting) — Twitter Developer account (1 to 3 day approval), LinkedIn Business Page, Instagram Business Account, 3-hour setup, $0 cost
  • Workflow 3 (Lead Collection) — Typeform free tier, Airtable free tier, Slack free tier, 1 to 2 hour setup, $0 cost
  • Workflow 4 (Invoice Reminders) — Stripe/QuickBooks/Wave account, email provider, 1.5-hour setup, $0 cost
  • Workflow 5 (Feedback and Sentiment) — Typeform, OpenAI API key (optional), Airtable, 2-hour setup, $0.10 to $0.20 per month
  • Workflow 6 (Inventory Alerts) — Shopify/WooCommerce admin access, Slack, 2 to 3 hour setup, $0 cost
  • Workflow 7 (Expense Processing) — Google Vision API key, QuickBooks/Wave, Airtable, 2 to 3 hour setup, $0 to $2 per month
  • Workflow 8 (Birthday Outreach) — CRM with birthday fields, email provider, 1.5-hour setup, $0 cost
  • Workflow 9 (Lead Scoring) — CRM/Airtable with lead records, defined scoring criteria, 2-hour setup, $0 cost
  • Workflow 10 (Reporting) — Google Analytics 4, Stripe API, social media business accounts, 3 to 4 hour setup, $0 cost

A solopreneur implementing five of these workflows starts at $0 on all free tiers, increases to $10 to $15 per month once reaching execution limits, and potentially $30 to $40 per month with premium email or analytics services. Total setup time across five workflows is 8 to 12 hours initially, then 30 minutes of weekly maintenance.

Start Building Your First n8n Workflow Today

You now have 10 complete, step-by-step n8n examples covering the most impactful automations for solopreneurs and small teams: lead nurturing, social media scheduling, CRM integration, invoice reminders, customer feedback, inventory alerts, expense processing, birthday outreach, lead scoring, and automated reporting. Each one is designed to run on the free tier, save you real hours every week, and pay for itself in recovered revenue or reduced manual labor.

The best approach is to start with the workflow that addresses your biggest time drain right now. For most solopreneurs, that is either Workflow 1 (email follow-ups) or Workflow 4 (invoice reminders) — both deliver measurable ROI within the first week. Once you have one workflow running smoothly, add a second, then a third. Within a month, you can realistically automate 15 to 25 hours of weekly work without spending a dollar.

Which of these n8n examples are you planning to build first? Have you already automated something that saved you unexpected time? Share your experience in the comments below — your workflow might inspire someone else to take the leap.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *