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 imports data from Google Sheets into a MySQL database.
by Jan Oberhauser
Read XLS from file Convert it to JSON Insert it in Postgres
by Dick
Basis workflow to convert FileMaker Data API ... to Flat File Array ...
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 Lorena
This workflow exports the contents of a JSON file to Google Sheets.
by Teeflo
This Workflows share a Jokes on Twitter with DadJokes API or BlaBlagues API for ImageJokes
by amudhan
Companion workflow for Spreadsheet File node docs
by rrezart
Workflow JSON TO CSVWorkflow JSON TO CSVWorkflow JSON TO CSVWorkflow JSON TO CSV
by Srinivasan KB
Get location insights using free APIs Transform GPS coordinates into rich location data using 100% free APIs. This webhook aggregates address, timezone, weather, and sun data into a single response. Perfect for location tracking apps, travel platforms, and IoT projects. What You'll Get A single API endpoint returning 28 enriched data fields: Detailed address with components (suburb, city, state, country, postcode) Timezone data (name, abbreviation, current local time and date) Live weather (temperature, humidity, pressure, conditions with icon) Sun times (sunrise, sunset, day length) Visual assets (weather icons and country flag URLs) How It Works Webhook receives coordinates via GET request (lat and lon parameters) Parallel API calls to 4 free services (OpenStreetMap, TimezoneDB, Sunrise-Sunset, OpenWeatherMap) Data merging combines all responses Format and structure transforms data into 28 clean fields JSON response returns enriched location data Response time: 1 to 3 seconds Set Up Steps 1. Get Free API Keys OpenWeatherMap: Sign up at openweathermap.org (free tier: 60 calls/min) TimezoneDB: Register at timezonedb.com (free tier available) Note: OpenStreetMap and Sunrise-Sunset require no keys 2. Configure Credentials Add OpenWeatherMap credentials to the OpenWeatherMap node Replace TimezoneDB API key in HTTP Request node with your key 3. Activate and Test Activate workflow to generate webhook URL Test with sample: ?lat=27.1751495&lon=78.0395673 Example Usage Request: curl "https://your-n8n.com/webhook/geo-details?lat=27.1751495&lon=78.0395673" Response: JSON array with 28 fields including address, timezone, weather, and sun data. Use Cases Location tracking applications Travel and tourism platforms Weather dashboards Fleet management systems Geographic analytics tools Smart home automation Educational projects Why This Template? Zero cost (all APIs are free) Production ready with error handling Fast response via parallel processing Well documented with sticky notes Easy to customize and extend No vendor lock-in Perfect for startups, indie developers, students, and budget-conscious projects. Rate Limits (Free Tiers) OpenStreetMap: 1 req/sec TimezoneDB: 1 req/sec OpenWeatherMap: 60 calls/min, 1M calls/month Sunrise-Sunset: No documented limits Tip: Implement caching to stay within limits. Tags: location, geocoding, weather, timezone, free-api, webhook, rest-api, gps
by Mauricio Perera
This n8n workflow converts invoices in PDF format into a structured, ready-to-use JSON, using AI and XML transformation — without writing any code. 🚀 How it works Upload form → The user uploads a PDF file. Text extraction → The PDF content is extracted as plain text. XML schema definition → A standard invoice structure is defined with fields such as: Invoice number Customer and issuer details Items with description, quantity, and price Totals and taxes Bank account details AI (Gemini) → The model rewrites the PDF text into a valid XML following the predefined schema. XML cleanup → Removes extra tags, line breaks, and unnecessary formatting. JSON conversion → The XML is transformed into a clean, structured JSON object, ready for integrations, APIs, or storage. ✨ Benefits Transforms unstructured PDFs into normalized JSON data. No coding required, only n8n nodes. Scalable to different invoice formats with minimal adjustments. Leverages AI to interpret complex textual content. 🛠️ Use cases Automating invoice data capture. Integration with ERPs, CRMs, or databases. Generating financial reports from PDFs.
by tanaypant
Does pretty much what this workflow does but is triggered by a slash command using a Webhook node.