Skip to content

Scheduling System (Beta) - Feature Documentation

Overview

ConnectGain Scheduling is a comprehensive appointment booking system integrated directly into the ConnectGain platform. It provides Calendly-like functionality with advanced features such as Google Calendar integration, custom branding per event type, and seamless CRM integration.

Status: Beta Version: 1.0.0 Last Updated: November 2025

Table of Contents

  1. Getting Started
  2. Event Types
  3. Availability Management
  4. Google Calendar Integration
  5. Booking Process
  6. Customization & Branding
  7. API Reference
  8. Troubleshooting

Getting Started

Accessing Scheduling

  1. Navigate to Scheduling in the main sidebar (marked with Beta badge)
  2. The scheduling dashboard shows all your event types
  3. Click "New Event Type" to create your first booking type

Initial Setup

  1. Create Your First Event Type
  2. Click "New Event Type"
  3. Enter a title (e.g., "30-minute Consultation")
  4. Set the duration
  5. Choose a location type (Google Meet recommended)
  6. Save to generate your booking link

  7. Configure Your Availability

  8. Edit the event type
  9. Go to the "Availability" tab
  10. Set your working hours for each day
  11. Block specific dates as needed

  12. Connect Google Calendar (Optional but Recommended)

  13. Go to Scheduling > Integrations
  14. Click "Connect Google Calendar"
  15. Authorize ConnectGain to access your calendar
  16. Your calendar events will now block booking slots

  17. Share Your Booking Link

  18. Copy the generated link for your event type
  19. Format: https://app.connectgain.io/schedule/[your-username]/[event-slug]
  20. Share with clients, add to email signatures, or embed on websites

Event Types

Creating Event Types

Event types define the different kinds of meetings people can book with you.

Required Fields: - Title: Display name for the event type - Slug: URL-friendly identifier - Duration: Length of the meeting (5 min - 8 hours) - Location Type: Where the meeting will take place

Optional Settings: - Description: Explain what the meeting is for - Theme Color: Brand color for booking pages - Banner Image URL: Header image for branding - Buffer Time: Minutes between back-to-back bookings - Daily Limit: Maximum bookings per day - Advance Notice: Minimum hours before booking - Availability Window: How far ahead bookings can be made - Confirmation Message: Custom message after booking

Location Options

  • Google Meet: Automatically creates Meet link (requires Google Calendar)
  • Zoom: Native Zoom integration via OAuth — connect your Zoom account and meeting links are created automatically
  • Phone Call: Collect phone number from guest
  • In-Person: Specify meeting location
  • Custom: Any custom location details

Managing Event Types

  • Edit: Click the three-dot menu > Edit
  • Clone: Duplicate an event type with new settings
  • Activate/Deactivate: Toggle availability without deleting
  • Delete: Permanently remove (also deletes associated bookings)
  • Copy Link: Get the public booking URL

Availability Management

Setting Weekly Availability

Define your standard working hours for each event type:

  1. Edit the event type
  2. Go to "Availability" tab
  3. For each day:
  4. Toggle on/off
  5. Set start time
  6. Set end time
  7. Save changes

Blocking Dates

Mark specific dates as unavailable: - Holiday blocks - Vacation time - Personal days - One-time conflicts

Time Zone Handling

  • Host availability is set in their local time zone
  • Guests see times in their detected time zone
  • All bookings stored in UTC for consistency

Availability Calculation

The system checks multiple sources to determine available slots: 1. Availability Rules: Your defined working hours 2. Existing Bookings: Already scheduled appointments 3. Google Calendar Events: If connected, blocks busy times 4. Blocked Dates: Manually blocked days 5. Buffer Times: Spacing between appointments 6. Advance Notice: Minimum booking lead time


Google Calendar Integration

Setup Process

  1. Navigate to Scheduling > Integrations
  2. Click "Connect Google Calendar"
  3. Sign in with your Google account
  4. Grant necessary permissions:
  5. View calendar events (for availability)
  6. Create calendar events (for bookings)
  7. Select primary calendar or choose specific calendar
  8. Connection confirmed!

What Gets Synced

From Google to ConnectGain: - Busy times block booking slots - All-day events block entire days - Recurring events properly handled

From ConnectGain to Google: - New bookings create calendar events - Event includes guest as attendee - Google Meet link automatically added - Cancellations update calendar - Rescheduling moves the event

Managing Connection

  • Test Connection: Verify sync is working
  • Change Calendar: Select different calendar
  • Pause Sync: Temporarily disable without disconnecting
  • Disconnect: Remove integration completely

Booking Process

Guest Experience

  1. Landing Page
  2. Guest visits your booking link
  3. Sees event type details
  4. Views your availability calendar

  5. Date Selection

  6. Choose available date
  7. See available time slots
  8. Times shown in guest's timezone

  9. Information Collection

  10. Enter name (required)
  11. Enter email (required)
  12. Phone number (optional)
  13. Notes/questions (optional)
  14. Custom questions if configured

  15. Confirmation

  16. Booking confirmed immediately
  17. Confirmation page with details
  18. Email sent with calendar invite
  19. Google Meet link if applicable

Host Experience

  1. Notification
  2. Real-time notification of new booking
  3. Email notification (if enabled)
  4. Dashboard update

  5. Calendar Update

  6. Event added to Google Calendar
  7. Guest added as attendee
  8. Meet link in event description

  9. Management

  10. View in Bookings dashboard
  11. Reschedule if needed
  12. Cancel with reason
  13. Add to CRM as contact

Rescheduling

Guests can reschedule using their confirmation link: 1. Access booking via confirmation email 2. Click "Reschedule" 3. Select new date/time 4. Confirm changes 5. Calendar automatically updated

Cancellations

Both host and guest can cancel: - Cancellation reason required - Email notifications sent - Calendar event removed/updated - Slot becomes available again


Customization & Branding

Per-Event Type Branding

Each event type can have unique branding:

Theme Color - Primary color for buttons - Accent color for selections - Applied to booking page UI

Banner Image - Header image on booking page - Recommended: 1200x400px - Supports JPG, PNG formats - Enter URL to hosted image

Custom Messages - Confirmation message after booking - Reminder email templates (coming soon) - Cancellation messages

Public Profile Page

Your scheduling profile (/schedule/[username]): - Lists all active event types - Shows your name and avatar - Professional landing page - Mobile-responsive design

Booking Page Customization

The booking page inherits: - Event type theme color - Banner image if set - Your organization branding - Professional, clean layout


API Reference

Database Tables

event_types

  • id: UUID (Primary Key)
  • profile_id: UUID (Foreign Key to profiles)
  • title: Text
  • slug: Text (URL slug)
  • description: Text
  • duration_minutes: Integer
  • theme_color: Text (hex color)
  • banner_image_url: Text
  • location_type: Text
  • is_active: Boolean
  • Additional configuration fields

bookings

  • id: UUID (Primary Key)
  • event_type_id: UUID (Foreign Key)
  • profile_id: UUID (Host profile)
  • guest_name: Text
  • guest_email: Text
  • start_date_time: Timestamp
  • end_date_time: Timestamp
  • status: Text (confirmed/cancelled/rescheduled)
  • google_calendar_event_id: Text
  • confirmation_token: UUID

availability_rules

  • id: UUID (Primary Key)
  • event_type_id: UUID (Foreign Key)
  • weekday: Integer (0-6, Sunday-Saturday)
  • start_time_minutes: Integer (minutes from midnight)
  • end_time_minutes: Integer

google_calendar_connections

  • id: UUID (Primary Key)
  • profile_id: UUID (Foreign Key)
  • google_user_id: Text
  • google_email: Text
  • access_token: Text (encrypted)
  • refresh_token: Text (encrypted)
  • token_expiry: Timestamp

Service Classes

EventTypeService

- createEventType(profileId, eventTypeData)
- updateEventType(eventTypeId, updates)
- deleteEventType(eventTypeId)
- getProfileEventTypes(profileId)
- toggleEventTypeStatus(eventTypeId, isActive)

BookingService

- createBooking(bookingData)
- cancelBooking(bookingId, reason, cancelledBy)
- rescheduleBooking(bookingId, newStartDateTime)
- getProfileBookings(profileId, filters)
- getBookingByToken(token)

AvailabilityService

- calculateAvailability(eventTypeId, startDate, endDate)
- isSlotAvailable(eventTypeId, startDateTime, endDateTime)
- getNextAvailableSlot(eventTypeId, afterDate)

GoogleCalendarService

- initiateOAuthFlow(profileId)
- handleOAuthCallback(profileId, code)
- getConnection(profileId)
- disconnect(profileId)
- listCalendars(profileId)

Edge Functions

  • google-calendar-oauth-url: Generate OAuth URL
  • google-oauth-callback: Handle OAuth callback
  • google-calendar-busy-times: Fetch busy times
  • google-calendar-create-event: Create calendar event

Troubleshooting

Common Issues

"No available slots showing" - Check your availability settings - Verify Google Calendar is connected - Check for conflicting events - Ensure advance notice settings aren't too restrictive

"Google Calendar not syncing" - Test connection in integrations - Re-authorize if needed - Check calendar permissions - Verify correct calendar selected

"Booking link not working" - Ensure event type is active - Check URL slug is correct - Verify profile settings

"Can't create event type" - Ensure unique slug - Check required fields - Verify permissions

Beta Limitations

As this feature is in beta, some limitations exist: - Email notifications through edge functions only - Single calendar support per user - Time zone detection based on browser - No recurring appointments yet

Getting Help

  1. Check this documentation
  2. Review error messages carefully
  3. Contact support with:
  4. Event type ID
  5. Booking ID (if applicable)
  6. Error messages
  7. Steps to reproduce

Roadmap

Coming Soon

  • Microsoft Teams: Teams meeting support
  • Recurring Appointments: Weekly/monthly recurring slots
  • Group Events: Multiple attendee support
  • Payment Collection: Stripe integration for paid bookings
  • SMS Reminders: Text message notifications
  • Calendar Feed: iCal subscription for all bookings
  • Round-Robin: Team scheduling distribution
  • Custom Fields: Additional booking form fields
  • Webhooks: Booking event webhooks

Future Enhancements

  • AI-powered scheduling suggestions
  • Meeting preparation automation
  • Post-meeting follow-up workflows
  • Analytics and insights dashboard
  • White-label booking pages
  • Embedding widget for websites
  • Mobile app support
  • Voice-activated booking

Security & Privacy

Data Protection

  • All scheduling data encrypted at rest
  • OAuth tokens securely stored
  • RLS policies enforce data isolation
  • HTTPS-only for all communications

Guest Privacy

  • Minimal data collection
  • No guest account required
  • Data retention policies
  • GDPR compliance ready

Access Control

  • Profile-based access control
  • Event type ownership validation
  • Booking verification via tokens
  • Admin override capabilities

Best Practices

For Sales Teams

  • Create different event types for different stages (Discovery, Demo, Follow-up)
  • Use buffer time to prepare between calls
  • Set daily limits to avoid burnout
  • Include prep questions in booking form

For Consultants

  • Use longer advance notice for preparation
  • Create premium event types with different durations
  • Add detailed descriptions of what's included
  • Use custom branding for professionalism

For Support Teams

  • Create priority slots for urgent issues
  • Use shorter durations for quick help
  • Block time for internal tasks
  • Group similar issues in time blocks

For HR Teams

  • Create separate event types per interview stage
  • Use buffer time for note-taking
  • Include candidate prep information
  • Connect with ATS when available

This documentation is for the Beta version of ConnectGain Scheduling. Features and functionality may change as we gather user feedback and enhance the system.