by System Admin
Tagged with: , , , ,
by System Admin
Tagged with: , , , ,
by System Admin
Tagged with: , , , ,
by System Admin
Tagged with: , , , ,
by System Admin
Tagged with: , , , ,
by System Admin
Tagged with: Workflows
by Oneclick AI Squad
SmartPoll Automator is an n8n-powered workflow that automatically creates and publishes polls in Telegram. It helps teams, communities, and businesses run polls without manual work. You simply send a command or submit a form — the workflow creates the poll and posts it in your selected Telegram group/channel. Key Features Create polls automatically from a webhook or form input Support for single-choice and multi-vote polls Option to schedule polls Logs all poll requests and results Sends confirmation and status updates Works across multiple Telegram groups/channels Use Cases Daily team check-in polls Customer feedback polls Community/Q&A voting Training/quiz polls Opinion surveys for Telegram groups Marketing campaign polls Workflow Steps | Step | Action | Description | | ---- | ---------------------- | ----------------------------------------------- | | 1 | Webhook Trigger | Receives poll request data (question + options) | | 2 | Data Validation | Checks if poll question & options are valid | | 3 | Poll Formatting | Structures poll text and options | | 4 | Telegram API Poll Send | Sends poll to selected Telegram group/channel | | 5 | Optional Scheduler | Delay or schedule poll time | | 6 | Logging | Stores poll details for logs | | 7 | Confirmation | Sends success message to user or admin | Input Format Example JSON input via webhook: { "poll_question": "Which feature should we build next?", "options": [ "AI Email Assistant", "Scraper Automation", "DevOps Bot" ], "multiple_answers": false, "target_chat_id": "123456789", "schedule_time": "" } Output Poll posted in Telegram group Confirmation message returned Log entry stored Example confirmation response: Poll successfully created and posted to Telegram! Requirements Telegram Bot Token Telegram Chat ID n8n instance Webhook URL or Google Form/CRM connection Benefits Saves time Ensures consistent poll format Improves engagement in Telegram communities Enables automated market research & internal feedback No coding required after setup Enhancement Ideas Add AI to generate poll questions Add Google Sheets poll request form Add analytics dashboard Trigger polls from Slack/CRM Status ✅ Fully Automated ✅ Multi-group support ✅ Real-time logging 🕒 Optional scheduling
by KlickTipp
Community Node Disclaimer: This workflow uses KlickTipp community nodes. Introduction This workflow automates Zoom recurring webinar registrations by capturing form submissions from a KlickTipp Landingpage and enriching contacts with webinar details. Depending on the registrant’s webinar choice (for example “E-Mail Zustellung für Anfänger” or “E-Mail Zustellung für Experten”), the system fetches the correct Zoom webinar info and writes it into KlickTipp. Ideal for running scalable webinar funnels without manual data entry. Benefits Instant contact enrichment**: Automatically populates KlickTipp with Zoom join links and session times. Dynamic segmentation**: Applies specific tags for “Beginner” or “Expert” webinar participants. Scalable structure**: Router logic allows easy extension for more webinar types. Key Features KlickTipp Trigger**: Starts the workflow when a landing-page form is submitted via outbound webhook. Switch Router**: Routes based on the webinar selection. Supports multiple webinar options. Zoom API Integration**: Retrieves recurring webinar data including join URL and future occurrences. webinar IDs are set per path (Beginner vs Expert). KlickTipp Contact Sync**: Updates or subscribes contacts in the correct list. Writes custom fields for join link and next session timestamp. Applies topic-specific tags for segmentation. Custom Fields (KlickTipp Setup) | Name | Field type | |---------------------------------|----------------| | Zoom \| webinar choice | Line Text | | Zoom \| webinar start timestamp | Date & Time | | Zoom \| Join URL | URL | | Zoom \| Registration ID | Line Text | | Zoom \| Duration webinar | Line Text | Tags (Segmentation) Zoom webinar E-Mail Zustellung für Anfänger Zoom webinar E-Mail Zustellung für Experten Setup Instructions KlickTipp Preparation Create the custom fields above. Add dropdown for webinar choice on landing page. Configure outbound webhook to n8n. Credential Configuration Authenticate KlickTipp API. Connect Zoom via OAuth2 (webinar:write:registrant scope). Insert correct Zoom webinar IDs in workflow nodes. Field Mapping Map the zoom data to the newly created KlickTipp custom fields. Ensure tags match campaign setup. Testing and Deployment Submit a registration form. Confirm workflow triggers and Zoom data is fetched. Verify KlickTipp contact is updated with: Join URL Start timestamp Correct segmentation tag ⚠️ Note: Zoom OAuth tokens may expire — refresh when needed. Zoom may also enforce API rate limits. Campaign Expansion Ideas Add more webinar types and extend router. Build reminder and follow-up campaigns in KlickTipp by tag. Track attendance tags for automated post-event actions. Customization Adapt Zoom nodes for webinars. Add fallback logic if Zoom data is missing. Trigger cross-tool automations (CRM, Slack, invoicing). Resources: Use KlickTipp Community Node in n8n Automate Workflows: KlickTipp Integration in n8n
by TUMUSIME David
Who's it for This template is perfect for sales teams, marketing professionals, recruiters, and business development specialists who need to efficiently collect targeted lead data from multiple sources. Whether you're building prospect lists, conducting market research, or expanding your contact database, this automated solution saves hours of manual data collection. How it works The workflow uses an n8n built-in form to collect search parameters, then automatically scrapes targeted leads from Google Maps and/or LinkedIn within Apify Actors based on your criteria. All collected data is cleaned, structured using Edit field nodes, and stored in your Supabase database for easy access and analysis. Key features: Interactive form for easy lead targeting Dual-source scraping (Google Maps + LinkedIn), you choose one or Both. Automatic data collection and cleaning, and structuring from Apify actors. Direct database storage in Supabase Flexible result limits and location targeting. How to set up Step 1: Set Up Apify Account Create account at apify.com Navigate to Settings > Integrations > API tokens Create new API token and copy it Ensure you have access to these actors: LinkedIn Profile Search Scraper (harvestapi/linkedin-profile-search) Google Maps Scraper (compass/crawler-google-places) Step 2: Configure Supabase Database Create new project at supabase.com Go to SQL Editor in your Supabase dashboard Run the SQL scripts from the Requirements section to create tables Navigate to Settings > API to copy: Project URL (starts with https://...) Service role key (secret key, not anon public) Step 3: Import and Configure Workflow Download the workflow JSON file In n8n Cloud, go to Workflows > Import from File Select the downloaded JSON file Configure credentials by clicking on each node that shows a warning: For Apify nodes (linkedin_dataset & googlemaps_dataset): Click "Create New Credential" Name: "Apify account" API Token: [Paste your Apify token from Step 1] Save credential For Supabase nodes (save_linkedin & save_googlemaps): Click "Create New Credential" Name: "Supabase account" Host: [Your Supabase project URL from Step 2] Service Role Secret: [Your service role key from Step 2] Save credential Step 4: Test the Workflow Click on the "On form submission" node Copy the Production URL (webhook link) Open this URL in a new browser tab Fill out the test form: Title/Industry: "restaurants" Location: "San Francisco, CA" Source: "Google Maps" Number of results: "3" Click Submit and wait for processing Check your Supabase tables to verify data was saved Step 5: Verify Setup Success In Supabase, go to Table Editor Check the googlemaps table for new entries Verify all fields are populated correctly Test with LinkedIn source to confirm both paths work The workflow is designed to be plug-and-play once credentials are configured. Simply share the form URL with your team or bookmark it for regular lead generation tasks. How to customize the workflow Search Parameters: Modify Apify actor configurations in the dataset nodes Adjust search query formats for better targeting Change result limits based on your needs Data Processing: Edit the Set nodes to extract additional fields Add data validation steps Implement duplicate detection logic Storage Options: Replace Supabase with other databases (Airtable, PostgreSQL) Add data export to CSV/Excel Implement real-time notifications Support: Check n8n community forum for help Review Apify actor documentation The workflow is designed to be plug-and-play once credentials are configured. Simply fill out the form with your target criteria and let the automation handle the rest. Requirements External Services: Apify account with credits (for web scraping) Supabase account (for data storage) Supabase Table Schemas: LinkedIn Table (LinkedIn): publicidentifier (text) linkedinurl (text) name (text) headline (text) about (text) premium (boolean) verified (boolean) openprofile (boolean) topskills (text) connectionscount (integer) followercount (integer) latest_experience (text) education (text) Google Maps Table (googlemaps): title (text) category_name (text) address (text) neighborhood (text) street (text) city (text) postal_code (text) state (text) country_code (text) website (text) phone (text) phone_unformatted (text) location (text) total_score (numeric) Node Requirements: Form Trigger (built-in), you may use others, or a webhook. Switch (built-in) Set (built-in) Supabase (built-in) Apify (community node), you'll have to install it first. How to customize the workflow Form Customisation: Modify form fields in the "On form submission" node to add additional search criteria if you want more. You may adjust dropdown options for different lead sources. Add validation rules for better data quality Search Parameters: Customize Apify actor configurations for different scraping behaviours. Modify the number of results per search. Add additional location targeting options Data Processing: Enhance the Set nodes to extract additional LinkedIn profile data Add data validation and cleaning steps Implement duplicate detection logic Storage Options: You may replace Supabase with other databases (Airtable, Google Sheets, etc.) Add data enrichment steps before storage Implement data export functionality Advanced Features: Add email notifications when scraping completes Implement error handling and retry logic Create data quality scoring mechanisms Let's connect: TUMUSIME David
by tanaypant
Does pretty much what this workflow does but is triggered by a slash command using a Webhook node.
by WeblineIndia
Auto-Generate GitHub Release Notes and Notify via Slack (n8n Workflow) This n8n workflow automates the process of: Generating structured GitHub release notes from merged pull requests since the last tag. Creating a draft GitHub release using the latest tag and PR info. Sending a formatted summary to a Slack channel. All of this is triggered manually via a form, where the user inputs the repository, owner and target branch. Who's It For This flow is perfect for: Open-source maintainers** looking to automate changelog management. DevOps engineers** handling release cycles. Engineering teams** maintaining structured, consistent GitHub releases. Technical writers** who prepare release notes. How It Works Node Summary: | Node No | Node Name | Description | |---------|------------------------------------|---------------------------------------------------------------| | 1 | GitHub Release Input Form | Takes user inputs (owner, repo, branch). | | 2 | Config | Extracts input and defines PR label grouping config. | | 3 | Get Latest Git Tag | Fetches latest Git tag (used as reference point). | | 4 | Get Commit Date of Latest Tag | Gets the exact timestamp of the latest tag's commit. | | 5 | Fetch All Merged PRs Since Last Tag | Queries GitHub for PRs merged after that timestamp. | | 6 | Group PRs & Generate Release Notes | Organizes PRs by label and generates markdown notes. | | 7 | GitHub Pre-release | Creates a draft GitHub release with those notes. | | 8 | Send Message to Slack | Sends the final release summary to Slack. | How to Set Up Clone or import this workflow into your n8n instance. Configure the following credentials: GitHub OAuth or PAT (Personal Access Token) Slack Webhook URL or OAuth credentials Open the form node and fill in: owner: GitHub username/org repo: GitHub repository name branch: Base branch (e.g., main) Run the workflow manually and observe the release note being: Created as a draft on GitHub Sent to Slack Requirements | Requirement | Description | |-----------------|-----------------------------------------------------| | n8n version | Cloud or Self-Hosted | | GitHub Access | A token with repo and write:repo_hook permissions | | Slack Access | Webhook URL or Slack OAuth app | | Git Tags | Semantic versioning tags pushed to the repo | | Labels | PRs should be labeled (e.g., feature, bug, other) for grouping | How to Customize | Feature | How to Customize | |---------------------|---------------------------------------------------------------| | Label Grouping | Modify the config map in the Config node (step 2). | | PR Filtering | Adjust the search query in node 5 to fit your repo's conventions. | | Markdown Template | Tweak markdown generation logic in node 6. | | Slack Message Format| Customize the Slack text in node 8. | | Tag Format | Switch from semantic versioning if needed in node 3 logic. | | Release Type | Change draft: true to false in node 7 for immediate publishing. | Add‑ons You can extend the flow by: Adding a cron scheduler for periodic releases. Sending release notes via email (use the Email node). Publishing directly to Jira or Confluence. Posting GitHub release links to Discord. Use Case Examples | Scenario | Description | |---------------------------|---------------------------------------------------------------| | OSS Team Weekly Releases | Automatically publish weekly release notes summarizing merged PRs. | | Sprint Review Reports | Use it at the end of each sprint to generate change summaries. | | CI/CD Pipelines | Integrate with GitHub Actions or Jenkins for automated tagging + release. | Common Troubleshooting | Issue | Possible Cause | Solution | |----------------------------------------|-------------------------------------------|----------------------------------------------------------------------| | No data found for item-index: "1" | GitHub Search returned no PRs | Ensure PRs were merged after the last tag and branch name is correct | | Cannot access $node in code | Wrong script execution context | Ensure JavaScript is selected and variables are accessed properly | | draft must be boolean | Draft field passed as string | Use true (not "true") in JSON input of HTTP node | | PR labels not grouped | PRs have no matching labels | Update your label config map or ensure labels exist on PRs | | Empty Slack message | Slack node not receiving data | Ensure $json.release_notes is being passed correctly | Need Help? Need help setting this up for your team or extending it for more features (e.g., JIRA, auto-tagging, changelog export)? We're here to help you customize, debug and scale this flow. Feel free to reach out WeblineIndia if you need: One-on-one setup assistance. Custom n8n nodes or scripts. Advanced GitHub/Slack integrations.
by WeblineIndia
Extract a key–value pair by index from JSON to fields in n8n This template takes a JSON object and a row index and returns exactly one key–value pair at that index. It’s a handy helper when you only need a single entry from a structured JSON payload (e.g., picking one form field for downstream logic). Who’s it for Makers who want a quick JSON picker without writing full parsing logic. Developers testing API payloads or building proofs of concept. Ops/analysts who need to pluck a single field for emails, documents or notifications. How it works Manual Trigger (When clicking ‘Test workflow’) starts the flow. Set → Input JSON Node holds your sample payload with: myData: an object of key → value pairs. rowIndex: a 0‑based index indicating which pair to extract. Code (Python) → Find Key‑Value Pair iterates myData and returns [key, value] at rowIndex as result. Set → Key maps result[0] to a field named result. Set → Value maps result[1] to a field named result[1]. The selected key and value are then available to any downstream nodes. How to set up Open the workflow and select Input JSON Node. Replace the sample with your own JSON: { "myData": { "name": "Alice", "age": "30", "city": "Paris" }, "rowIndex": "1" } Click Execute Workflow. Check the Key and Value nodes for the outputs. Requirements n8n running (cloud or self‑hosted). Code node (Python)** enabled in your n8n version. Input payload structure: myData: object with keys/values rowIndex: integer (0‑based) How to customize Pick by key name** (instead of index): adjust the Python code to look up a specific key. Handle nested objects/arrays**: walk or flatten the structure before selecting. Change output shape**: return { "key": ..., "value": ... } or write directly to next‑node fields. Validate inputs**: add checks for out‑of‑range rowIndex, non‑object myData, or empty objects. Add‑ons Webhook intake**: Replace Manual Trigger with a Webhook to accept live JSON. Schema guard**: Add an If/Function step to ensure myData is an object and rowIndex is numeric. Audit log**: Append the selected key/value to Google Sheets or a database. Use Case Examples Pull one field from a large API response to include in an email. Extract a specific answer from a form submission for conditional routing. Read a configuration pair from a settings object to control a downstream step. Common troubleshooting | Issue | Possible Cause | Solution | |---|---|---| | “Index out of range” | rowIndex is larger than the number of keys | Use a valid 0‑based index; add a guard in the Code node to clamp or default. | | Wrong key returned | Object key order differs from expectations | Object key order isn’t guaranteed across sources—prefer pick by key name for reliability. | | Empty/invalid output | myData is not an object or is empty | Ensure myData is a flat object with at least one key. | | Python errors | Code node’s Python runtime not available | Enable Python in the Code node or convert the snippet to JavaScript. | | Value type mismatch | Value isn’t a string | Cast as needed in the Set node or normalize types in the Code node. | Need Help? If you’d like this to pick by key, handle nested JSON, accept data via Webhook or fully customized to your needs, write to us and we’ll adapt the template to your exact use case.