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¶
- Getting Started
- Event Types
- Availability Management
- Google Calendar Integration
- Booking Process
- Customization & Branding
- API Reference
- Troubleshooting
Getting Started¶
Accessing Scheduling¶
- Navigate to Scheduling in the main sidebar (marked with Beta badge)
- The scheduling dashboard shows all your event types
- Click "New Event Type" to create your first booking type
Initial Setup¶
- Create Your First Event Type
- Click "New Event Type"
- Enter a title (e.g., "30-minute Consultation")
- Set the duration
- Choose a location type (Google Meet recommended)
-
Save to generate your booking link
-
Configure Your Availability
- Edit the event type
- Go to the "Availability" tab
- Set your working hours for each day
-
Block specific dates as needed
-
Connect Google Calendar (Optional but Recommended)
- Go to Scheduling > Integrations
- Click "Connect Google Calendar"
- Authorize ConnectGain to access your calendar
-
Your calendar events will now block booking slots
-
Share Your Booking Link
- Copy the generated link for your event type
- Format:
https://app.connectgain.io/schedule/[your-username]/[event-slug] - 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:
- Edit the event type
- Go to "Availability" tab
- For each day:
- Toggle on/off
- Set start time
- Set end time
- 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¶
- Navigate to Scheduling > Integrations
- Click "Connect Google Calendar"
- Sign in with your Google account
- Grant necessary permissions:
- View calendar events (for availability)
- Create calendar events (for bookings)
- Select primary calendar or choose specific calendar
- 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¶
- Landing Page
- Guest visits your booking link
- Sees event type details
-
Views your availability calendar
-
Date Selection
- Choose available date
- See available time slots
-
Times shown in guest's timezone
-
Information Collection
- Enter name (required)
- Enter email (required)
- Phone number (optional)
- Notes/questions (optional)
-
Custom questions if configured
-
Confirmation
- Booking confirmed immediately
- Confirmation page with details
- Email sent with calendar invite
- Google Meet link if applicable
Host Experience¶
- Notification
- Real-time notification of new booking
- Email notification (if enabled)
-
Dashboard update
-
Calendar Update
- Event added to Google Calendar
- Guest added as attendee
-
Meet link in event description
-
Management
- View in Bookings dashboard
- Reschedule if needed
- Cancel with reason
- 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: Textslug: Text (URL slug)description: Textduration_minutes: Integertheme_color: Text (hex color)banner_image_url: Textlocation_type: Textis_active: Boolean- Additional configuration fields
bookings¶
id: UUID (Primary Key)event_type_id: UUID (Foreign Key)profile_id: UUID (Host profile)guest_name: Textguest_email: Textstart_date_time: Timestampend_date_time: Timestampstatus: Text (confirmed/cancelled/rescheduled)google_calendar_event_id: Textconfirmation_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: Textgoogle_email: Textaccess_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 URLgoogle-oauth-callback: Handle OAuth callbackgoogle-calendar-busy-times: Fetch busy timesgoogle-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¶
- Check this documentation
- Review error messages carefully
- Contact support with:
- Event type ID
- Booking ID (if applicable)
- Error messages
- 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.