by panyanyany
Transform Your Selfies into 3D Figurines with Nano Banana AI Overview This workflow utilizes the Defapi API with Google's Nano Banana AI model to transform your selfies into stunning 3D figurines, action figures, and collectible merchandise designs. Simply upload a selfie photo, provide a creative prompt describing your desired 3D figurine or action figure design, and watch as AI generates professional-quality product visualizations. Input: Your selfie photo + creative prompt + API key Output: AI-generated 3D figurine and action figure designs perfect for collectibles, merchandise, and product visualization Users can interact through a simple form, providing a text prompt describing the desired creative scene, a product image URL, and their API key. The system automatically submits the request to the Defapi API, monitors the generation status in real time, and retrieves the final creative image output. This solution is ideal for marketers, product designers, e-commerce businesses, and content creators who want to quickly generate compelling product advertisements and creative visuals with minimal setup. Perfect for creating 3D figurines and collectible merchandise designs. Prerequisites A Defapi account and API key: Sign up at Defapi.org to obtain your API key. An active n8n instance (cloud or self-hosted) with HTTP Request and form submission capabilities. Basic knowledge of AI prompts for product creative generation to achieve optimal results, especially for 3D figurines and collectible designs. Example prompt: Create a 1/7 scale commercialized 3D figurine of the characters in the picture, in a realistic style, in a real environment. The figurine is placed on a computer desk. The figurine has a round transparent acrylic base, with no text on the base. The content on the computer screen is the Zbrush modeling process of this figurine. Next to the computer screen is a packaging box with rounded corner design and a transparent front window, the figure inside is clearly visible. A product image for creative generation. Important Note: Avoid using dark photos as input, as the generated **3D figurine will also appear dark. Setup Instructions Obtain API Key: Register at Defapi.org and generate your API key. Store it securely—do not share it publicly. Configure the Form: In the "Upload Image" form trigger node, ensure the following fields are set up: Image (file upload), API Key (text field), and Prompt (text field). Test the Workflow: Click "Execute Workflow" in n8n. Access the generated form URL, upload your product image, enter your prompt, and provide your API key. The workflow will process the image through the "Convert to JSON" node, then send the request to the Defapi API. The system will wait 10 seconds and then poll the API status until the image generation is complete. Handle Outputs: The final "Format and Display Image Results" node formats and displays the generated creative image URL for download or embedding. Workflow Structure The workflow consists of the following nodes: Upload Image (Form Trigger) - Collects user input: image file, API key, and prompt Convert to JSON (Code Node) - Converts uploaded image to base64 and formats data Send Image Generation Request to Defapi.org API (HTTP Request) - Submits generation request Wait for Image Processing Completion (Wait Node) - Waits 10 seconds before checking status Obtain the generated status (HTTP Request) - Polls API for completion status Check if Image Generation is Complete (IF Node) - Checks if status equals 'success' Format and Display Image Results (Set Node) - Formats final image URL output Technical Details API Endpoint**: https://api.defapi.org/api/image/gen (POST request) Model Used: google/nano-banana (Nano Banana AI**) Status Check Endpoint**: https://api.defapi.org/api/task/query (GET request) Wait Time**: 10 seconds between status checks Image Processing**: Uploaded images are converted to base64 format for API submission Authentication**: Bearer token authentication using the provided API key Specialized For: **3D figurines, collectible merchandise, and product visualization Customization Tips Enhance Prompts: Include specifics like scene setting, lighting, style (e.g., realistic, artistic, cinematic), product placement, and visual elements to improve AI creative image quality. For **3D figurines, specify scale, materials, and display context. Form Fields*: The form accepts image files (image/), API key (text), and prompt (text) as required fields. Error Handling**: The workflow includes conditional logic to check for successful completion before displaying results. Best Practices for Nano Banana AI: Use detailed descriptions for **figurine designs, specify lighting conditions, and include environmental context for realistic 3D figurine generation. Photo Quality Tips: Use well-lit photos for best results. Avoid dark images as they will make the generated **3D figurine appear dark too.
by 1Shot API
Swap Tokens with Li.Fi The growing popularity of agentic payments has lead to the development of protocols like x402 where agents and humans can pay for internet resources over standard http protocols using stablecoins. This workflow lets you run your own swap relayer where callers can provide an x402-compatible payment header and a desired destination network to instantly receive gas tokens. This setup is trust minimized - user's have the following guarantees: They will be the receiver of the swap. Only the amount of tokens the authorized will be swapped. Setup In order to run this relayer workflow, you will need an account on 1Shot API. You must then import the 1Shot Gas Station contract into your business for any chain you wish to support with your relayer. Next, follow the directions in the worflow sticky notes to update the Payment Configs for the tokens you wish to support swaps for. Lastly, distrubute your webhook api endpoint to your users.
by V3 Code Studio
Odoo Customers API – Export to JSON or Excel provides a simple way to fetch customer records from your Odoo database and get them back either as a structured JSON response or a downloadable Excel (.xlsx) file. ⚙️ What it does Listens for HTTP GET requests on the endpoint /api/v1/get-customers. Checks for the required name parameter and builds a search filter automatically. Queries the res.partner model to return only customer contacts (is_company = false). Delivers results in JSON by default, or as an Excel (.xlsx) export when response_format=excel is included. 📥 Parameters name — Required. Used for partial matching on customer names (via Odoo’s Like filter). response_format — Optional. Accepts json (default) or excel. 🔗 Examples Excel Example GET /api/v1/get-customers?name=Demo&response_format=excel JSON Example GET /api/v1/get-customers?name=Demo&response_format=json 🧩 Default fields display_name, name, email, phone, mobile, parent_id, company_id, country_code, country_id 🛠️ Setup Open the Odoo node and connect your Odoo API credentials. Adjust the fieldsList in the node if you want to include more data fields (e.g., address, city, or VAT). Trigger the flow from its webhook URL or run it manually inside n8n to test the output. 💡 Notes Built and tested for n8n v1.108.2+
by Paul Roussel
Automated workflow to remove video backgrounds and composite foreground video on static image backgrounds. Perfect for creating branded content, professional presentations, and consistent visual branding across your videos. How it works • Upload inputs: Provide foreground video URL and background image URL (both must be publicly accessible) • Remove background: API automatically removes video background with AI-powered segmentation • Composite on image: Video is centered on custom image background with aspect ratio preserved • Save to Drive: Final composed video is automatically uploaded to Google Drive with shareable link Set up steps ⏱️ Total setup time: ~7 minutes • Get VideoBGRemover API Key (~2 min): Visit https://videobgremover.com/api-management, sign up, and copy your API key • Add API key to n8n (~2 min): Go to Settings → Variables, add VIDEOBGREMOVER_KEY with your API key as value. Find the api key -> https://videobgremover.com/n8n • Connect Google Drive (~2 min): Click "Upload to Google Drive" node, click "Connect", and authorize n8n • Test workflow (~1 min): Use manual trigger with sample URLs provided in the "Sample URLs (Edit Here)" node Use cases: Branded content with company backgrounds and logos Product demos with custom imagery or brand colors AI avatars on professional office/studio backgrounds Social media content requiring consistent visual branding Profile videos with custom scenes or patterns Presentation videos with company branding Pricing: VideoBGRemover API charges $0.50-$2.00 per minute of video processed. Free trial credits available. Triggers: Webhook (for automation) or Manual (for testing) Processing time: Typically 3-5 minutes per minute of video
by Jitesh Dugar
🧼 Email Subscription Cleaner A fully automated workflow that cleans, validates, and restructures your subscriber list using Google Sheets and VerifiEmail. Perfect for marketers, SaaS teams, or anyone maintaining an email database. 🚀 What This Workflow Does In one automated run, it: Accepts a cleaning request via Webhook Extracts list settings, preferences, and options Fetches all subscribers from Google Sheets Normalizes emails and formats subscriber fields Performs real-time verification using VerifiEmail Classifies each subscriber as: remove (invalid / disposable / role), keep (valid & safe), tag (special cases) Deletes bad emails directly from the source sheet Stores all valid emails in a clean, curated CleanSubscribers sheet Returns a structured JSON summary to the caller 🔍 Why This Template Is Useful Improves deliverability Removes spam traps, bots, disposable domains Cleans and reorganizes messy lists Reduces bounce rates Builds a healthier mailing list for campaigns No CSV download/upload required — runs directly on Google Sheets 🧠 How It Works (In Simple Steps) Webhook receives batch-clean request Extract Inputs parses settings (listId, priority, options) Fetch Subscribers reads rows from Google Sheets Normalize each subscriber’s fields Validate Email quality (MX check, disposable, provider data) Merge subscriber info + validation results Classify each subscriber into keep/remove/tag Clean Up: remove → deletes the row keep → appends to clean list Respond with a clean JSON summary Fast, simple, reliable — perfect for weekly or on-demand cleanup. 🔧 Setup Required Connect 2 credentials: Google Sheets** (read / delete / append) VerifiEmail** (API key) Update: Sheet name (SubscriberList) Clean list sheet (CleanSubscribers) Optional tag rules in “Classify Email” No other configuration needed. 🏁 Perfect For Newsletters Marketing teams Event lists SaaS mailing lists CRM cleanup Lead verification Removing dead/invalid emails automatically 🏷️ Tags email, cleanup, validation, google-sheets, verifiemail, marketing, automation, list-cleaner, webhook
by Bilel Aroua
Sora 2 Video Generator - No Watermark (Minimal Setup) This n8n workflow enables you to generate professional AI videos using OpenAI's Sora 2 without watermarks. Create videos from text descriptions or animate your images with a simple web form interface - ready to use in just 5 minutes! Generate cinematic AI videos for social media, marketing campaigns, product demos, or creative projects. The workflow handles both text-to-video and image-to-video generation with automatic status polling until your video is ready. Good to know: • Kie.AI charges per video generation. Check their pricing page for current rates • Videos typically take 30-60 seconds for standard quality, 60-120 seconds for HD • The workflow automatically retries status checks every 30 seconds until completion • No watermarks on output videos How it works • Users submit video requests via a beautiful web form with description, aspect ratio, and quality options • The workflow detects if an image was uploaded and routes to either text-to-video or image-to-video • For image uploads, the file is automatically uploaded to ImgBB to generate a public URL • The request is sent to Sora 2 API via Kie.AI with your specifications (prompt, quality, aspect ratio) • The workflow waits 30 seconds, then checks if video generation is complete • If not ready, it automatically loops back and checks again every 30 seconds • Once complete, the video is downloaded and optionally sent via Telegram notification • Clean, watermark-free MP4 video output ready for use Set up steps Step 1: Get Kie.AI API Key • Sign up at kie.ai and navigate to your dashboard • Go to API Keys section and generate a new key • Copy the API key for the next step Step 2: Configure n8n Credentials • In n8n, go to Credentials → New Credential • Select "HTTP Header Auth" • Name: Kie Ai(Veo and more) (exact name required) • Header Name: Authorization • Header Value: Bearer YOUR_API_KEY • Save the credential Step 3: ImgBB Setup (for Image-to-Video) • Get a free API key from api.imgbb.com • Open the "Upload to ImgBB" node in the workflow • Replace the YOUR_ImgBB_API_KEY parameter with your ImgBB API key Step 4: (Optional) Telegram Notifications • Create a bot with @BotFather on Telegram • Get your Chat ID from @get_id_bot • Update YOUR_CHAT_ID in both Telegram nodes • Or delete Telegram nodes entirely if not needed Requirements • Kie.AI account with API access for Sora 2 • ImgBB account for image hosting (free tier available) • (Optional) Telegram bot for video delivery notifications Customising this workflow • Adjust wait times in the Wait nodes if generation takes longer in your region • Add email notifications instead of/in addition to Telegram • Modify the form to collect additional metadata (user info, project names, etc.) • Add error handling nodes for production deployments • Connect to cloud storage (Google Drive, Dropbox) instead of Telegram for video delivery • Integrate with your existing CMS or content management system For assistance and support: contact@bilsimaging.com
by David Olusola
🌐 Crypto + FX Micro-API (Webhook JSON) 📌 Overview Spin up a tiny, serverless-style API from n8n that returns BTC/ETH prices & 24h changes plus USD→EUR and USD→NGN from public, no-key data sources. Ideal for dashboards, low-code apps, or internal tools that just need a simple JSON feed. ⚙️ How it works Webhook (GET /crypto-fx) — entrypoint for your client/app. HTTP: ExchangeRate-API — USD-base FX rates (no API key). HTTP: CoinGecko — BTC/ETH prices + 24h % change (no API key). Merge — combines payloads. Code (v2) — shapes a clean JSON: btc.price, btc.change_24h eth.price, eth.change_24h usd_eur, usd_ngn, ts (ISO timestamp) Respond to Webhook — returns the JSON with HTTP 200. 🛠 Setup Guide 1) Webhook path & URL In the Webhook node, confirm HTTP Method = GET and Path = crypto-fx. Use the Test URL while building; switch to Production URL for live usage. 2) Test the endpoint Curl: curl -s https://<your-n8n-host>/webhook/crypto-fx Browser / fetch(): fetch('https://<your-n8n-host>/webhook/crypto-fx') .then(r => r.json()) .then(data => console.log(data)) 3) Response mapping (already wired) Respond to Webhook → Response Body is set to {{$json}}. The Code node outputs the exact JSON structure shown above, so no extra mapping is required. 🔐 Security (recommended) Add a Webhook Secret (query header check in Code node) or IP allowlist via your reverse proxy. If embedding in public sites, proxy through your backend and apply rate-limit/cache headers there. 🚀 Usage ideas Frontend dashboards (Chart.js, ECharts). HomeAssistant / Node-RED info panels. Google Apps Script to store the JSON into Sheets on a timer. 🎛 Customization More coins: extend CoinGecko ids= (e.g., bitcoin,ethereum,solana). More FX: read additional codes from fx.rates and add to the payload. Timestamps: convert ts to your preferred timezone on client side. CORS: if calling from browsers, add CORS headers in Respond (options → headers). 🧩 Troubleshooting Empty/partial JSON: run the two HTTP nodes once to verify responses. 429s / rate limiting: add a short Wait node or cache outputs. Wrong URL: ensure you’re using Production URL outside the n8n editor. Security errors: if you add a secret, return 401 when it’s missing/invalid.
by 1Shot API
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. Dollar Cost Averaging with Uniswap V3 This workflow lets you set up an scheduled workflow to dollar cost average (DCA) into any token on a custom schedule using 1Shot API and the Uniswap V3 protocol. Choose your schedule input token and output token and optionally configure the workflow to send you notifications in Telegram everytime your workflow completes a swap. YouTube Tutorial You can watch the full end-to-end tutorial for this workflow on our YouTube channel. Wallet Delegation Importantly, this workflow uses Metamasks Delegation Framework which lets you DCA from an account you custody whithout ever exporting your private key or giving up control of your assets. Setup Create a free 1Shot API account, provision a server wallet to relay transactions, and generate an API key to connect to n8n. Import the following Uniswap contracts into your 1Shot API account for the chain you want to swap on: QuoterV2, SwapRouter02, and the token pool (needed to compute time-weighted average price (TWAP). Import the approve function for the ERC-20 token you want to use to purchase your target asset (this should be the token0 or token1 of the pool you imported in step 2). Click on the server wallet details you created, fund it with enough gas tokens to pay for your transactions, then generate a delegation for the SwapRouter02 contract and the ERC-20 token from steps 2 and 3. Import the DCA workflow and use your 1Shot API key/secret to create a credential. Point the 1Shot API nodes at the appropriate smart contract functions you imported in steps 2 and 3. In the Swap Configs node, set the amount of the in token you want to spend on each purchase - for example, if you are using USDC (which has 6 decimals) and you want to purchase $10 every purchase, then amountDCA should be 10000000. Also set the correct addresses for the SwapRouterV2, token0, token1 and fee of the pool you are using. Lastly, set the frequency of your DCA in the trigger node and activate! Optional Telegram Notifications You can configure a Telegarm bot to notifiy you everytime the workflow completes to send you a transaction has and you remaining balance in your purchasing funds.
by ConnectSafely
Send Connection Requests to LinkedIn Post Commenters - Automated Outreach with Personalized Messages using ConnectSafely.AI Who's it for This workflow is built for content creators, founders, sales professionals, and LinkedIn thought leaders who want to convert post engagement into real connections. Perfect for anyone who creates content that attracts comments but doesn't have time to manually connect with every person who engages. If you're publishing LinkedIn content regularly and want to build your network with warm leads (people already interested in what you're saying), this automation handles the tedious work of sending personalized connection requests while you focus on creating more content. How it works The workflow automates the entire connection request process by combining intelligent filtering with personalized messaging through ConnectSafely.ai's API. The process flow: Displays a web form where you paste your LinkedIn post URL Fetches all comments from the specified post via ConnectSafely.ai API Splits commenters into individual items for sequential processing Loops through each commenter one at a time Checks relationship status (already connected? pending request?) Filters out existing connections and pending invitations Generates unique personalized messages using spin text variations Sends connection request with the personalized message Waits 1-2 hours between requests for rate limiting Loops back to process the next commenter until complete The smart filtering ensures you never send duplicate requests or spam existing connections. Setup steps Step 1: Install ConnectSafely.ai Community Node Install the Package Go to Settings → Community Nodes in your n8n instance Search for n8n-nodes-connectsafely.ai Click Install IMPORTANT: Restart n8n completely after installation Alternative (Command Line): npm install n8n-nodes-connectsafely.ai Documentation: https://connectsafely.ai/n8n-docs Step 2: Configure ConnectSafely.ai API Credentials Obtain API Key Log into ConnectSafely.ai Dashboard Navigate to Settings → API Keys Generate a new API key Copy your Account ID from the Accounts section Add Credentials in n8n Go to Credentials in n8n Click Add Credential → ConnectSafely API Paste your API key Save the credential This credential is used by all ConnectSafely nodes in the workflow. Step 3: Configure the Form Trigger The workflow uses a Form Trigger to capture your LinkedIn post URL: | Field | Configuration | |-------|---------------| | Form Title | 🔗 LinkedIn Post Engagement Automation | | Form Description | Enter your LinkedIn post URL below to automatically send personalized connection requests | | Field Label | LinkedIn Post URL | | Placeholder | https://www.linkedin.com/posts/your-post-url... | | Required | Yes | To get your form URL: Click Test Workflow button Copy the webhook URL that appears Open this URL in your browser to access the form Step 4: Customize Your Connection Message Edit the spin text template in the Generate Personalized Message code node: const template = `{Thanks for|Really appreciate|Awesome to see|Loved seeing|Grateful for} {you|you taking a moment to|you recently} {liking|engaging with|reacting to|showing interest in|checking out} {my|our|the} {post|recent post|latest content piece|content|update} on {this topic|that topic|the subject}. {Would love to|Happy to|Let's definitely|Open to|Excited to} connect {and|so we can|to} {exchange ideas|share insights|continue the conversation|explore potential collaborations|stay connected professionally}. {Always enjoy connecting with|Always excited to meet|Love meeting|Great connecting with} {like-minded people|professionals in the space|people exploring similar topics|others in this domain}. {Cheers|Best regards|Thanks again|Looking forward|Talk soon|Warm regards}, YourName `; Spin Text Syntax: Use {option1|option2|option3} for random variations Each request gets a unique combination Keep total message under 300 characters (LinkedIn limit) Step 5: Configure Rate Limiting The Wait (Rate Limiting) node controls the delay between connection requests: | Setting | Recommended Value | Description | |---------|-------------------|-------------| | Wait Time | 1-2 hours | Time between each connection request | | Unit | Hours | Keeps your account safe from spam detection | Pro Tip: Start with 2-hour delays for new accounts, reduce to 1 hour once your account is warmed up. Step 6: Test the Workflow Click Test Workflow to get the form URL Open the form URL in your browser Paste a LinkedIn post URL with comments Submit the form Verify each step: Comments are fetched correctly Relationship check returns status Messages generate with variations Connection request sends successfully First Run Tips: Start with a post that has 5-10 comments Test during off-hours Monitor closely for any errors Customization Message Personalization The workflow automatically includes the commenter's name in the greeting: customMessage: "Hi {{ $('🔄 Loop Over Items').item.json.authorName }},\n\n{{ $json.generatedMessage }}" Add more personalization by referencing the comment text: // Access the actual comment they left const theirComment = $('🔄 Loop Over Items').item.json.commentText; Filter Logic Edit the Should Send Request? IF node conditions: Current Logic (Both must be TRUE): connected = false (not already connected) invitationSent = false (no pending request) Additional Filters You Can Add: Filter by connection degree (2nd vs 3rd degree) Filter by profile completeness Filter by follower count // Example: Only connect with 2nd degree connections $json.connectionDegree === "DISTANCE_2" Rate Limiting Adjustments | Account Status | Recommended Delay | Daily Limit | |----------------|-------------------|-------------| | New Account | 2 hours | 10-12 requests | | Warmed Up (1-2 weeks) | 1 hour | 20-24 requests | | Established (1+ month) | 45 minutes | 30-35 requests | Use Cases Content Creator Growth**: Convert every engaged follower into a connection automatically Thought Leadership**: Build relationships with people who resonate with your ideas Sales Prospecting**: Connect with warm leads who already showed interest in your content Community Building**: Expand your network with like-minded professionals Event Promotion**: Connect with commenters before launching webinars or courses Recruiting**: Reach candidates who engage with your company culture posts Troubleshooting Common Issues & Solutions Issue: ConnectSafely node not appearing after install Solution**: Completely restart n8n (not just refresh). Kill the process and start again. Issue: "Invalid Profile ID" error Solution**: The workflow uses publicIdentifier (username), not the full URL. Verify the mapping is correct. Issue: Connection request fails with "already connected" Solution**: The relationship check should filter these out. Verify the IF node conditions are set correctly. Issue: Messages appear identical Solution**: Check that the spin text syntax uses {option1|option2} format with the pipe character, not commas. Issue: Workflow stops after first person Solution**: Ensure the Wait node connects back to the Loop node, and the Loop node has Reset: FALSE configured. Issue: Form URL not appearing Solution**: You must click "Test Workflow" first to generate the webhook URL. Issue: Rate limiting warnings from LinkedIn Solution**: Increase the wait time between requests. Start with 2-hour delays and ensure your account is warmed up. Documentation & Resources Official Documentation ConnectSafely.ai Docs**: https://connectsafely.ai/docs n8n Package Docs**: https://connectsafely.ai/n8n-docs API Reference**: Available in ConnectSafely.ai dashboard Support Channels Email Support**: support@connectsafely.ai Documentation**: https://connectsafely.ai/docs Custom Workflows**: Contact us for custom automation Connect With Us Stay updated with the latest automation tips, LinkedIn strategies, and platform updates: LinkedIn**: linkedin.com/company/connectsafelyai YouTube**: youtube.com/@ConnectSafelyAI-v2x Instagram**: instagram.com/connectsafely.ai Facebook**: facebook.com/connectsafelyai X (Twitter)**: x.com/AiConnectsafely Bluesky**: connectsafelyai.bsky.social Mastodon**: mastodon.social/@connectsafely Need Custom Workflows? Looking to build sophisticated LinkedIn automation workflows tailored to your business needs? Contact our team for custom automation development, strategy consulting, and enterprise solutions. We specialize in: Multi-channel engagement workflows AI-powered personalization at scale Lead scoring and qualification automation CRM integration and data synchronization Custom reporting and analytics pipelines
by Aitor | 1Node
This workflow connects JotForm submissions to Vapi AI, triggering a personalized outbound call via an AI voice assistant immediately after a user submits your form. Requirements JotForm A JotForm account JotForm API credentials** enabled in n8n A published JotForm form with a phone number field Vapi A Vapi account with credit A connected phone number for making calls An assistant created and ready for outbound calls Your Vapi API key Workflow Steps 1. JotForm Trigger Starts the workflow when a new form submission is received. 2. Information Extractor Formats the phone number** with a +, country code, and full number (e.g., +391234567890) for compatibility with Vapi. 4. Set Fields for Vapi Configure these fields: phone_number_id: ID of the Vapi number used for the call assistant_id: ID of the Vapi assistant api_key: Your Vapi API key 5. Start Outbound Vapi Call Sends a POST request to https://api.vapi.ai/call with: The formatted phone number All required Vapi fields Any additional info mapped from the form, for personalization Customization Add more form fields:** Include extra data (such as name, appointment time) and add to the Vapi payload. Conditional logic:** Use n8n filter nodes to control if/when calls are made. Dynamic assistant selection:** Route submissions to different assistants or numbers based on user responses. Notes Ensure phone numbers are formatted correctly in the extractor node to prevent call errors. Any field from your form can be passed in the API payload and used in the assistant's script. Need Help? For additional resources or help, visit 1 Node.
by Moe Ahad
How it works: This flow checks the user's Google calender of events from Sunday to Saturday of current week, to determine how many hours have been booked each day. If a day has over 6 hours booked, it blocks out the remaining work hours for dedicated focus time. The flow assumes 8 work hours per day. For example, if the Monday of this week has 6.5 hours booked (for meetings, tasks etc.), it automatically blocks off the remaining 1.5 hours for dedicated focus time, so external users can see and not book new events for those hours. Benefit: Prevents users from being overloaded with meetings and gives time for dedicated deep work/focus time. Set up steps: Update start time of the "Schedule Trigger," this is the time the flow will run daily. Note: the workflow assumes a 9AM-5PM work schedule so it's recommended to schedule the flow to trigger before 9AM. Update the credentials for the "Get Full Weeks Events" and "Create Focus Time Event" nodes. Use your Google credentials so the workflow can connect to your Google calendar.
by Paolo Ronco
A complete workflow to create, send, and verify digital certificates fully automated with n8n.Perfect for courses, events, onboarding, internal training, or product education. Visit my website for the: full deploy guide) See my Templates on Github: paoloronco/n8n-templates) Example-certificate ✔ 1. Certificate Generation When a POST webhook request arrives, the workflow: reads name, surname, course, and email generates a unique Certification ID saves everything in the Data Table ✔ 2. Data Storage Every issued certificate is recorded in an n8n Data Table containing: Name Surname CertificationID This creates a permanent, searchable certificate registry. ✔ 3. PDF Creation Uses PDF Generator API to create a professional PDF certificate from an HTML template: fully customizable (layout, colors, branding) includes candidate data, course, ID, and date ✔ 4. Email Delivery The workflow automatically sends the certificate to the recipient using Gmail OAuth2 with: a predefined subject the PDF attached a customizable message ✔ 5. Verification System A public endpoint /certificationscheck allows: validation of Certification IDs returning the candidate’s name and surname if valid responding with ok: true/false ✔ 6. Included Mini Verification Website A ready-to-use HTML file allows users to: enter a Certification ID verify its authenticity view name and surname if the certificate exists Fully customizable (CSS, texts, branding). 🛠 Requirements Before using this workflow, you must have: n8n Data Table with ID fields: Name (string) Surname (string) CertificationID (string) PDF Generator API accountCredentials set in n8n as pdfGeneratorApi. Gmail OAuth2 credentialsConfigured in n8n as gmailOAuth2. Ability to call HTTP POST endpoints from your website, backend, forms, etc. 🚀 Installation 1. Import workflow In n8n: Go to Workflows → Import Paste the JSON provided in this repository 2. Configure Data Table Update the following nodes to point to your Data Table: Insert_Certificaton Find_Certification_By_ID Find_Certification_By_ID1 Make sure the Data Table has the fields: | Field | Type | | --- | --- | | Name | string | | Surname | string | | CertificationID | string | 3. Configure Credentials In the workflow: Node Generate_PDF → set PDF Generator API credentials Node Email_Certification → set Gmail OAuth2 credentials 4. Activate Workflow Click Activate in n8n. 🔧 How the Workflow Works 🧩 1. Webhook /certifications Receives candidate data and triggers the workflow. POST https://YOUR-N8N-DOMAIN.com/webhook/certification Headers: name: John surname: Doe course: email: john.doe@example.com 🧩 2. Unique ID Generation A Code node creates a random alphanumeric ID.If it already exists, a new one is generated. 🧩 3. Data Table Insert Stores the certificate data for future lookup. 🧩 4. PDF Generation Builds a PDF from the (fully editable) HTML template. 🧩 5. Email Sending Delivers the certificate to the candidate. 🔍 Certificate Verification (/certificationscheck) API Behavior Send a POST request https://YOUR-N8N-DOMAIN.com/webhook/certificationcheck with header id: CERTIFICATION-ID. Valid ID: { "ok": "true", "name": "John", "surname": "Doe" } Invalid ID: { "ok": "false" } This request can be made manually (from tools like Postman, cURL, or your backend), or automatically through the HTML verification page included in the GitHub repository (the Cerification_Check.html template) found in your project files