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 Bedrijfautomatiseren.nl
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. ## Scrape Google Maps leads to Google Sheets via Apify Who's it for This workflow is ideal for marketers, sales professionals, and solo entrepreneurs who want to collect local leads based on Google Maps search terms. For example, restaurants in North Holland. What it does This workflow uses an Apify actor to scrape business details from Google Maps and automatically appends them to a Google Sheet with the following fields: Business name Street Postal code City Website Phone number How it works The workflow starts with a manual trigger (you can replace it with any other trigger). The Google Maps Scraper Apify actor is launched. A short wait ensures the actor completes the task (you can increase the wait time for more extensive outputs). The resulting dataset is retrieved from Apify. Data is mapped and added into a connected Google Sheet. How to set up Step 1: Configure the “Run Apify scraper” node Go to the Google Maps Scraper actor on Apify. Create a new Task with your search term. Find your actor from list. Step 2: Edit the “Find your last run” node Select the correct actor (Google Maps Scraper) from the dropdown in this node. Step 3: Fetch the dataset In the “Get the data from Apify” node, use {{$json.defaultDatasetId}} to dynamically pull the correct dataset. Step 4: Connect your Google Sheet Link your Google account and select the desired spreadsheet and tab (for example, Leads). Make sure the column headers match the data fields. Current column headers: Title Street Postcode City Website Phone If you have any questions, feel free to reach out to info@ai-amigos.com
by DataForSEO
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. Who’s it for SEO analysts and marketers who want to capture and analyze source references from Google’s AI Mode answers, track competitor mentions or measure brand visibility in generative search features. Note: this template uses DataForSEO community node and works for self-hosted n8n instances only.* What it does This workflow automates the process of gathering source references from Google’s AI Mode results. Using the DataForSEO SERP API, it extracts the source title, URL, and domain, and records that data in Google Sheets. You can use this template to monitor how often your site appears in AI-generated answers or what competitor domains get mentioned for your target keywords. How it works Triggers on your chosen schedule (default: every 7 days). Calls the DataForSEO SERP API for your keyword. Extracts and cleans Google AI Mode results. Stores the data in a Google Sheet. Requirements Self-hosted n8n instance DataForSEO account A Google Sheet that contains the Source, Domain, URL, Title, and Text columns (as in the example: https://docs.google.com/spreadsheets/d/1XCjkjyVxrtpTUQenHeR3B07xfEZ489mhuVidjhGOO7I/edit?usp=sharing). Customization You can change the schedule or swap the Google Sheet for BI dashboards or reporting tools.
by DataForSEO
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. Who’s it for SEOs and digital marketers who want to track the sources Google cites in its AI Overview SERP feature for specific keywords, monitor competitor visibility, or their website’s presence in AI-generated snippets. Note: this template uses DataForSEO community node and works for self-hosted n8n instances only.* What it does This workflow automatically collects all source references from Google’s AI Overview results using the DataForSEO SERP API. It extracts the source title, URL, and domain, and logs that data in Google Sheets for easy filtering and analysis. You can use this template to monitor how often your site appears in AI-generated summaries or to discover high-authority domains mentioned for your target keywords. How it works Triggers on your chosen schedule (default: every 7 days). Calls the DataForSEO SERP API for your keyword. Parses AI Overview results to extract source citations. Saves the structured data in a Google Sheet. Requirements Self-hosted n8n instance DataForSEO account A Google Sheet that contains the Source, Domain, URL, Title, and Text columns (as in the example: https://docs.google.com/spreadsheets/d/1XCjkjyVxrtpTUQenHeR3B07xfEZ489mhuVidjhGOO7I/edit?usp=sharing). Customization You can change the schedule or swap the Google Sheet for BI dashboards or reporting tools.
by Ruslan Elishev
🛡️ BotGuard - Telegram Bot Authorization Layer What This Workflow Does Ever noticed how most Telegram bot tutorials assume everyone can just... use your bot? No questions asked, no protection, nothing. That's fine for a simple "Hello World" bot, but the moment you connect AI APIs, paid services, or sensitive operations - you're in trouble. Anyone who discovers your bot can drain your API credits, overload your systems, or access things they shouldn't. BotGuard fixes this in the simplest way possible: a whitelist. Only User IDs you explicitly allow can interact with your bot. Everyone else gets a polite "access denied" message. Plus, you get instant notifications when someone unauthorized tries to use your bot - complete with their User ID, so you can add them if they're legit. Think of it as a bouncer for your bot. No fancy authentication flows, no databases, no complexity. Just a clean authorization check that sits between the Telegram trigger and your actual workflow. Your expensive AI calls, paid API requests, and sensitive operations stay protected. 🚀 Getting Started in 2 Minutes Step 1: Import and Configure Import this workflow into n8n and connect your Telegram bot credentials. You'll see a clean workflow with sticky notes explaining everything. Step 2: Add Your User ID Don't know your Telegram User ID? No problem. Just message your bot - you'll get denied, but the message will show: Your User ID: 123456789. Copy that number. Open the "BotGuard Authorization" node and add yourself: const AllowedUsers = [ { userId: 222222222, userName: 'allowed_user_name', subscriptionType: 'admin' }, { userId: YOUR_USER_ID_HERE, userName: 'your_username', subscriptionType: 'premium' } ]; Step 3: Test It Save, activate the workflow, and message your bot again. You're in! Try from another account - denied. Check your admin account for the unauthorized access notification. 🎨 Making It Yours Want to Change the Messages? All user-facing messages are in the BotGuard Authorization node. Look for these lines: authorizedMessage - What approved users see (default: "✅ Authorization Successful...") userMessage - What denied users see (default: "🚫 Access Denied...") adminMessage - What you receive for each unauthorized attempt Make them friendlier, add your support contact, suggest a /request command - whatever fits your bot's personality. Need Subscription Tiers? The workflow already supports it! Each user has a subscriptionType field (basic/premium/admin). Use this in your main workflow to enable/disable features based on their tier. The BotGuard passes all this data forward in the botGuard object. Want Multiple Admins? Just add more entries to the Administrators array. Every admin receives notifications when unauthorized users attempt access: const Administrators = [ { userId: 111111111, userName: 'admin_user_name', chatId: 111111111 }, { userId: 333333333, userName: 'your_cofounder', chatId: 333333333 } ]; 💡 Why This Workflow Exists I built this after watching someone's OpenAI credits get drained in 3 hours because their bot went viral on a Telegram group. No authorization, no rate limiting, nothing. Just a helpful bot that cost them $200 before they noticed. Most tutorials skip authorization entirely - it's not sexy, not what people want to learn. But the moment you deploy something real, you need it. Instead of everyone reinventing the wheel with complex databases and auth systems, here's a simple pattern you can copy-paste into any bot workflow. The multi-admin notification system came from needing to know WHO was trying to access our bots. Sometimes it's legitimate users who found your bot organically. Sometimes it's automated scanners. Either way, if you want to know, now you can. 🔧 Real-World Tips After protecting dozens of production bots: Do: Keep the User ID list in code for small teams (5-50 users) - it's simple and works Set up admin notifications - you'll catch legitimate users before they give up Include the User ID in denial messages - makes it easy for users to request access Test with an unauthorized account first - make sure the denial flow is clear Don't: Hard-code thousands of users - if you're that big, use a database instead Skip the admin notifications - they're your early warning system Forget to update the placeholder IDs (111111111, etc.) - those won't work! Share your workflow publicly with real User IDs - privacy matters
by Aitor | 1Node
This n8n automation connects your Google Sheets to Vapi, enabling you to automatically call new contacts as soon as their information is added to your spreadsheet. Instantly reach out with a personalized voice call from a Vapi AI assistant, based on any event that adds a new row to your sheet. 🧾 Requirements Google Sheets Google Sheets credentials** enabled and tested in n8n. A table in your Google Sheet formatted as follows: Required Columns & Data Types | Column Name | Example Value | Data Type | Notes | |---------------|----------------|-------------------|-----------------------------------------------| | phone_number | +11234567890 | Text (String) | Must include the + and country code, no spaces or dashes. Mandatory for workflow. | | (optional) | first_name | John | Text (String) | For call personalization. | | (optional) | email | test@email.com | Text (String) | For follow-ups or records. | | (additional)| Any extra info | | | Can be used for advanced customization. | Ensure all columns contain data in plain text format. Phone number field must never be empty and follow the E.164 international format: + + country code + phone number. Vapi A Vapi account with credit. A connected phone number (to originate calls). An assistant (AI voice agent) created and ready to make calls. Your Vapi API key. 🔗 Useful Link Vapi Docs 🛠️ Comprehensive Setup Instructions 1. Prepare Your Google Sheet Create a Google Sheet with the required column names as listed above. Ensure your phone_number column is correctly formatted (international format, no spaces). Optionally, add columns such as first_name, email, or any field your workflow should use. 2. Set Up Google Sheets Credentials in n8n In n8n, go to "Credentials" and create Google Sheets credentials. Authenticate with your Google account and test the connection. 3. Configure the n8n Workflow Add a Google Sheets Trigger node: Set trigger mode to "New Row". Select your Google Sheet and worksheet. Add a Wait node: Configure a wait time (e.g., 4 minutes) between trigger and next action. 4. Map & Set Vapi Fields Add a Set node: Create fields required by the Vapi API: phone_number_id: Copy from your Vapi dashboard. assistant_id: Use the ID of your AI assistant. api_key: Store securely (see n8n secret management). to: Set as the Google Sheet's phone_number value. Example: {{ $json["phone_number"] }} (Optional) Map extra fields from Sheet (e.g., first_name, email) for personalized calls. 5. Add the HTTP Request to Vapi Add an HTTP Request node: Method: POST URL: https://api.vapi.ai/call Body parameters: Use all mapped fields from previous step. 6. Test the Workflow Add a new row to your Google Sheet. Verify that, after the wait period, Vapi attempts the call and uses personalized information. 🎨 Customization Options Personalize Calls Further:** Add additional columns like first_name, product, or appointment_time in Google Sheets. Map these into the API call so Vapi can use them for dynamic greetings or contextual responses. Conditional Flows:** Insert n8n logic nodes (IF, Switch) before making the Vapi call. For example, only call if a "Consent" column is TRUE, or select different assistants based on region or product interest. Multiple Assistants/Numbers:** Store different assistant IDs or phone number IDs in columns, and dynamically route calls based on sheet data (e.g., region-specific assistants). Advanced Field Mapping:** Pass any relevant sheet fields into the API payload and configure your Vapi assistant scripts to utilize these variables for high-touch, customized user interactions. 📇 Example Google Sheet Setup | phone_number | first_name | email | product | consent | |--------------|------------|------------------|------------|---------| | +11234567890 | John | j@email.com | Widget A | TRUE | | +44207123456 | Maria | maria@x.co.uk | Widget B | FALSE | In n8n, map only those rows where consent=TRUE. 🙋♂️ Need Help? Feel free to contact us at 1 Node Get instant access to a library of free resources we created.
by Harry Gunadi Permana
Forex News Trading Result Data This n8n template simulates the results if we take every trade based on the previous workflow: https://n8n.io/workflows/8340-automated-forex-news-alert-system-with-forex-factory-and-telegram/ Use Cases Analyze which news events have a higher probability of generating profit. Decide on Take Profit and Stop Loss levels for specific currency pairs or news events. Currency Pairs EURUSD, GBPUSD, AUDUSD, NZDUSD, USDJPY, USDCHF, USDCAD, XAUUSD Limitations We use High, Low, and Live Prices from MyFxBook. These values may differ depending on the broker. Spread widening and slippage will vary across brokers. Price gaps may occur over weekends. Profit/Loss also depends on when the trade is closed. How It Works Each day, the workflow checks if the Sheets have empty High and Low Price values. It queries MyFxBook for updated High and Low Prices for Date+1 (the next trading day after opening a buy/sell position) using the HTTP Request node. The response from the HTTP Request is parsed. If new High and Low data are available, the workflow retrieves the date. It scrapes the new High and Low Price data and calculates the multiplier for the respective currency pair. Example: USDJPY prices have 3 decimals, so the multiplier is 1000. Sheets are updated with High, Low, Points Up, and Points Down. The workflow checks if the buy/sell position results in profit or loss. Example: if we have a EURUSD Buy position and Points Up > 0, then there is a possibility of profit. Points Up can be negative if the new High Price remains below the Buy position entry price. If we have a Buy position and Points Up ≤ 0, then there is a possibility of a loss. How to Use Enter all required credentials. Create or download a Google Sheets file (example): https://docs.google.com/spreadsheets/d/1OhrbUQEc_lGegk5pRWWKz5nrnMbTZGT0lxK9aJqqId4/edit?usp=drive_link Run the workflow. Requirements Enable the Google Drive API in Google Cloud Console. Provide Google Sheets credentials. Need Help? Join the Discord or ask in the Forum! Thank you!
by 1Shot API
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. Self-Hosted x402 Facilitator In the x402 payment protocol, a facilitator is a role which helps sellers settle stablecoin payments onchain without dealing with blockchain complexities. This workflow allows you to run your own fully-featured, specification-compliant facilitator in n8n. You might want to do this if you want to accept payments in tokens not supported by existing facilitators or as your own business! Details A facilitator supports three routes: /verify, /settle, and /supported. These routes are all created for you in this workflow with proper error handling and responses. A seller will first hit /verify with their payment details to ensure the payment information is correct. Next they will hit the /settle endpoint with the same payment information to settle the paymet on the blockchain. The /supported endpoint is used to indicate to sellers which blockchains you choose to support in a programatic fashion. Setup Create a 1Shot API account Create 1Shot API wallets for the networks where you wish to facilitate token payments and load them with sufficient gas tokens. Using 1Shot Prompts, import the transferWithAuthorization functions for the tokens you will settle payments for. Import this workflow into n8n and create a credential to link the 1Shot API community node to your 1Shot API business account. Enter the token and network information into the payment token and network configuration nodes indicated by the sticky nodes. Turn on your workflow and settle payments!
by Amir
Telegram Command Center ℹ️ What is this workflow This workflow is using Telegram chat as a command center. Simple interface for user to run wokflows and receive answers by Telgram message or other mediums like email etc. 💼 Business Cases User want to initiate a wokflows by different commands ⚙️ How Does It Work wokflow listen to telgram command from user check if user has authorize and proceed, or send access denied message with uer Account ID. Account ID can use for authorize user in the workflow Route to the relevant workflow based on command. If command doesnt exist, it will return with the list of commands If command valid, it will call the Sub-workflow with input parameter and reply back with the relevant message. 🔗 Integrated Services Telegram bot API key Sub-Workflow for the command 🛠 How to Set Up Install the workflow template. Configure Telegram credential Update Access Control by Authorize Account ID Update Valie Commands Update List of command to switch Connect to right SUbworkflows Update/Select Telgram reply
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 Omer Fayyaz
This n8n template implements a Calendly Availability Checker that provides real-time availability information for your Calendly event types via a simple API endpoint Who's it for This template is designed for developers, businesses, and service providers who need to programmatically check Calendly availability. It's perfect for: Web developers** building custom booking interfaces that need real-time availability data Chatbot developers** who want to suggest available times to users Website builders** who want to display available slots on their site Integration developers** who need to check availability before creating bookings Businesses** that want to build custom scheduling experiences on top of Calendly Service providers** who need availability data for their own applications or dashboards How it works / What it does This workflow creates a RESTful API endpoint that returns real-time availability information from your Calendly account. The system: Accepts webhook requests via POST with optional parameters: event_type_uri (optional) - Specific event type to check days_ahead (optional, default: 7) - Number of days to check ahead Authenticates with Calendly API using OAuth2 credentials to access your account Retrieves user information to get your Calendly user URI and account details Lists all active event types from your Calendly account Selects the target event type: Uses the event_type_uri from the request if provided Otherwise defaults to the first active event type Fetches available time slots from Calendly's availability API for the specified date range Formats the availability data into a structured response including: Total number of available slots Next available slot (formatted and ISO timestamp) Array of all available slots with formatted times and booking URLs Slots grouped by day for easy consumption Complete list of all event types Returns a comprehensive JSON response with all availability information ready for integration How to set up 1. Configure Calendly OAuth2 Credentials Go to calendly.com/integrations Click "API & Webhooks" Create an OAuth2 application or use Personal Access Token In n8n, create a new credential: Type: "Calendly OAuth2 API" Follow the OAuth flow to connect your Calendly account The credential will be used by all HTTP Request nodes in the workflow 2. Activate the Workflow Open the workflow in n8n Ensure the Calendly OAuth2 credential is properly configured Activate the workflow to make the webhook endpoint available 3. Test the Workflow Use the "Test workflow" button in n8n to manually trigger it Or send a POST request to the webhook URL: { "event_type_uri": "optional-event-uri", "days_ahead": 7 } Verify the response contains availability data Check that the "Get Current User" node successfully retrieves your account info 4. Customize (Optional) Adjust the default days_ahead value in the "Set Configuration" node (currently 7 days) Modify the date range calculation in "Get Available Times" node Customize the response format in "Respond with Availability" node Add filtering logic to select specific event types Add caching to reduce API calls Requirements Calendly account** with at least one active event type n8n instance** (self-hosted or cloud) Calendly OAuth2 API credentials** configured in n8n Webhook access** (if using n8n cloud, webhooks are automatically available) How to customize the workflow Modify Date Range Edit the "Set Configuration" node to change the default days_ahead value Update the start_time and end_time calculations in "Get Available Times" node Currently checks from tomorrow (1 day ahead) to 7 days ahead by default Adjust the date calculation expressions as needed Filter Specific Event Types Modify the "Select Event Type" node to add filtering logic Add an IF node to check event type names or slugs Filter by duration, active status, or custom criteria Return multiple event types if needed Customize Response Format Edit the "Respond with Availability" node to change the JSON structure Add or remove fields from the response Format dates/times differently Include additional metadata from event types Add pagination for large slot lists Add Caching Insert a Code node before "Get Available Times" to check cache Store availability data temporarily to reduce API calls Set appropriate cache expiration times Consider using n8n's built-in cache or external storage Add Error Handling Enhance error handling in HTTP Request nodes Add validation for request parameters Return meaningful error messages in the response Handle cases where no event types exist Handle cases where no availability exists Integrate with Other Services Add nodes to log availability checks to a database Send availability data to analytics platforms Trigger notifications when availability changes Sync availability with external calendars Build availability dashboards Key Features RESTful API endpoint** - Simple POST endpoint for checking availability Real-time availability** - Fetches current availability directly from Calendly API Flexible event type selection** - Supports specific event type or auto-selects first available Configurable date range** - Customizable number of days to check ahead Comprehensive response format** - Returns formatted and raw availability data Multiple data views** - Provides slots as array, grouped by day, and summary statistics Event type information** - Includes details about all available event types Human-readable formatting** - Formats dates and times for easy display Booking URLs included** - Each slot includes direct booking URL Error resilience** - Nodes configured with continueRegularOutput to handle API errors gracefully Use Cases Custom booking widgets** - Display available slots on your website without embedding Calendly Chatbot integration** - Let AI assistants suggest available times to users Mobile app integration** - Check availability before showing booking options in mobile apps Multi-calendar systems** - Aggregate availability from multiple Calendly accounts Availability dashboards** - Build internal dashboards showing team availability Smart scheduling** - Check availability before sending meeting invitations Booking confirmation flows** - Verify availability before processing bookings Calendar sync verification** - Ensure Calendly availability matches other calendar systems Analytics and reporting** - Track availability patterns and booking trends Custom scheduling UIs** - Build completely custom scheduling interfaces using availability data Data Fields Returned User Information User name, email, scheduling URL User URI and organization URI Event Type Information Event type name, duration (minutes), URI Complete list of all active event types with details Availability Summary has_slots - Boolean indicating if any slots are available total_slots - Total number of available slots next_available - Human-readable formatted string of next available slot next_available_iso - ISO 8601 timestamp of next available slot Available Slots Array Each slot includes: start_time - ISO 8601 timestamp formatted - Human-readable date/time string booking_url - Direct URL to book this specific slot Slots by Day Grouped object with days as keys Each day contains array of time slots with formatted times and booking URLs Format: { "Monday, Dec 2": [{ time: "10:00 AM", url: "..." }] } Metadata checked_at - ISO timestamp of when availability was checked success - Boolean indicating successful execution Workflow Architecture The workflow uses a linear processing pattern with data transformation at each step: Webhook Trigger → Receives POST requests with optional parameters Set Configuration → Extracts and sets default values for event_type_uri and days_ahead Get Current User → Authenticates and retrieves Calendly user information Extract User Info → Parses user data to extract URIs and account details Get Event Types → Fetches all active event types for the user Select Event Type → Chooses target event type (from request or first available) Get Available Times → Queries Calendly API for available time slots Format Availability → Transforms raw API data into structured, formatted response Respond with Availability → Returns comprehensive JSON response to caller Example Scenarios Scenario 1: Check Default Availability Developer sends POST request to webhook endpoint with empty body Workflow uses default 7-day lookahead period Workflow selects first active event type automatically Returns availability for next 7 days with all slots formatted Developer displays slots in custom booking interface Scenario 2: Check Specific Event Type Developer sends POST request with specific event_type_uri Workflow uses provided event type instead of default Checks availability for that specific event type only Returns slots grouped by day for easy calendar display Developer shows availability in day-by-day calendar view Scenario 3: Extended Date Range Developer sends POST request with days_ahead: 30 Workflow checks availability for next 30 days Returns comprehensive list of all available slots Developer uses data to show monthly availability view User can see all available times for the next month Scenario 4: Chatbot Integration User asks chatbot "When are you available?" Chatbot calls webhook endpoint to get availability Workflow returns next available slot and total count Chatbot responds: "I have 15 slots available. Next available: Monday, Dec 2 at 10:00 AM" Chatbot offers to book the next available slot This template provides a powerful API endpoint for checking Calendly availability, enabling developers to build custom scheduling experiences while leveraging Calendly's robust scheduling infrastructure.
by Lorena
This workflow queries a table in MySQL and inserts the data into Google Sheets.