Features

Scheduling Integration

Seamlessly integrate Calendly or Cal.com scheduling widgets into your forms. Let respondents book appointments, meetings, or consultations without leaving your form.

Overview

The scheduling feature allows you to embed booking widgets from popular scheduling platforms directly into your forms. This is perfect for lead qualification forms, consultation requests, demo bookings, customer onboarding, and any workflow where you need to schedule time with respondents.

Calendly Logo
Calendly

Popular scheduling platform with powerful features for teams and individuals.

Cal.com Logo
Cal.com

Open-source scheduling platform with advanced customization and self-hosting options.

Use Cases

Lead Qualification & Sales

Collect lead information first, then let qualified prospects book a demo or consultation call

Customer Onboarding

Guide new customers through onboarding questions, then schedule a kickoff call

Support & Consultations

Gather issue details or requirements before scheduling a support session

Event Registration

Collect registration info and let attendees choose their preferred time slot

Setting Up Scheduling in Standard Forms

1

Add a Scheduling Question

In your form builder, click "Add Question" and select the Scheduling question type (calendar icon).

2

Choose Your Provider

Select either Calendly or Cal.com from the provider dropdown.

3

Get Your Scheduling URL

For Calendly:

  • Log into your Calendly account
  • Go to the event type you want to use
  • Copy the event URL (e.g., https://calendly.com/yourname/30min)

For Cal.com:

  • Log into your Cal.com account
  • Go to your event type
  • Copy the booking URL (e.g., https://cal.com/yourname/30min)
4

Configure the Widget

Paste your scheduling URL into the appropriate field. The system will automatically validate that the URL matches your selected provider.

If you enter a Calendly URL but selected Cal.com (or vice versa), you'll see an orange warning border and won't be able to publish until fixed.

5

Add Title and Description (Optional)

Customize the title and description that appears above the scheduling widget to provide context.

6

Preview and Publish

Use the preview feature to test the scheduling widget, then publish your form when ready.

Setting Up Scheduling in Workflow Forms

1

Add a Scheduling Node

Drag a Scheduling Node onto your workflow canvas and connect it to your flow.

2

Configure the Node

Click on the scheduling node to open its configuration panel. Select your provider (Calendly or Cal.com) and enter the scheduling URL, just like in standard forms.

3

Connect to Your Workflow

Use conditional logic to show scheduling at the right point in your workflow. For example, only show scheduling to qualified leads, or route different customer types to different calendars.

4

Test the Flow

Preview your workflow to ensure the scheduling widget appears correctly and booking completion is detected properly.

How It Works

Booking Detection

WorkForm automatically detects when a user completes a booking through the embedded widget:

  • Calendly: Listens for the calendly.event_scheduled event
  • Cal.com: Uses the Cal.com JavaScript API to detect the bookingSuccessful callback
Form Progression

The form automatically blocks progression until a booking is completed:

  • Users cannot proceed to the next question/page until they complete a booking
  • Once booking is confirmed, the "Next" or "Submit" button becomes enabled
  • A warning message appears if users try to proceed without booking
Booking Data Captured

WorkForm captures comprehensive booking details that are visible in response viewer and CSV exports:

Cal.com Bookings:

  • Event title (e.g., "30 Minute Meeting")
  • Start and end times (with timezone)
  • Booking status (ACCEPTED, PENDING, etc.)
  • Video call URL (if applicable)
  • Unique booking ID
  • Event type ID

Calendly Bookings:

  • Scheduled time
  • Event URI (unique identifier)
  • Invitee URI
  • Clickable link to view booking details

Viewing Booking Data

Response Viewer

In the response viewer, scheduling questions display:

  • Table view: Shows booking confirmation status and key details (title, date/time)
  • Detail view: Full booking information with clickable links:

Cal.com bookings show:

  • Meeting title
  • Start and end times
  • Status badge
  • "Join Video Call" button (if video URL exists)

Calendly bookings show:

  • Scheduled time
  • "View on Calendly" button (links to booking page)
CSV Export

When exporting responses to CSV, scheduling data includes all booking details in a pipe-separated format:

Cal.com example:
Confirmed: 30 Minute Meeting | 1/28/2026, 9:30 AM - 9:45 AM | Status: ACCEPTED | Video: https://app.cal.com/video/...

Calendly example:
Confirmed (Calendly) | Scheduled: 1/11/2026, 9:03 AM | Event: https://api.calendly.com/scheduled_events/...

Best Practices

Place Scheduling on Its Own Page

For standard forms, it's recommended to put the scheduling question on its own dedicated page. This gives respondents a clean, focused booking experience without distractions.

Collect Context First

Ask qualifying questions before showing the scheduling widget. This ensures you're only booking time with relevant prospects and can personalize the meeting.

Use Different Calendars for Different Paths

In workflow forms, use conditional logic to show different scheduling links based on user type, urgency, or topic. For example, demo requests vs support calls.

Test Both Providers

Before launching, test the complete booking flow with your actual calendar to ensure events are created correctly and confirmations are sent.

Match Provider to URL

Make sure the URL you paste matches the provider you selected. The system validates this automatically, but double-checking prevents configuration errors.

Troubleshooting

Widget Not Loading

Possible causes:

  • Incorrect URL format - ensure it's a valid Calendly or Cal.com booking URL
  • Provider mismatch - verify the URL matches the selected provider
  • Calendar not published - check your scheduling platform settings
  • Browser extensions blocking the widget - try disabling ad blockers
Booking Not Detected

Possible causes:

  • User closed the widget before completing booking
  • Network issues during booking confirmation
  • Pop-up blockers preventing confirmation window

Solution: Ask users to wait for the success message before proceeding.

Orange Warning Border

Cause: The URL doesn't match the selected provider

  • If provider is "Calendly", URL must contain "calendly.com"
  • If provider is "Cal.com", URL must contain "cal.com"

Solution: Either change the provider or update the URL to match.

Technical Details

Event Detection:

  • Calendly: Uses postMessage API to detect calendly.event_scheduled
  • Cal.com: Uses Cal.com JavaScript SDK with bookingSuccessful callback
  • Both implementations include comprehensive debug logging for troubleshooting

Data Storage:

  • Booking completion stored as bookingComplete: true/false
  • All booking metadata stored in bookingDetails object
  • Includes provider identifier for proper display in response viewer

URL Validation:

  • Client-side validation prevents mismatched provider/URL combinations
  • Server-side validation ensures data integrity before form submission
  • Visual warnings guide users to correct configuration