53 min readDeterministic automation

Implementation Guide: Auto-schedule tutoring sessions and send reminders based on student calendars

Step-by-step implementation guide for deploying AI to auto-schedule tutoring sessions and send reminders based on student calendars for Education clients.

Hardware Procurement

Client Workstation (Existing)

Client Workstation (Existing)

AnyN/A — uses existing client PCs, Macs, tablets, or ChromebooksQty: 0

$0 — leverages existing client hardware

All tutors, administrators, students, and parents access the scheduling system via a modern web browser. No dedicated hardware is needed for the SaaS-based deployment path.

APC Back-UPS BE600M1 (Optional — Self-Hosted Only)

APC by Schneider ElectricBE600M1Qty: 1

$70 MSP cost / $120 suggested resale

Provides battery backup for a self-hosted mini-PC running n8n and Cal.com. Only required if the client chooses the self-hosted deployment alternative. Not needed for the recommended SaaS path.

Beelink SER5 Pro Mini PC (Optional — Self-Hosted Only)

BeelinkSER5 PRO (AMD Ryzen 5 5600H, 16GB RAM, 500GB SSD)Qty: 1

$350 MSP cost / $550 suggested resale

Compact on-premises server for hosting n8n Community Edition and Cal.com when the client requires full data sovereignty for FERPA compliance. Only required for the self-hosted alternative path.

Software Procurement

TutorCruncher

TutorCruncher LtdSaaS — monthly subscriptionQty: 1

€28/month base (Essentials tier) — MSP resale at $75–$100/month bundled with managed support

Primary tutoring management platform providing scheduling engine, tutor availability management, student/parent CRM, booking portal, Stripe payment integration, and API access for automation workflows. Handles session types (1-on-1, group), recurring bookings, tutor-student matching, and invoicing.

Google Workspace Business Standard

GooglePer-seat SaaS — annual or monthly billingQty: 1 seat per tutor + admin accounts

$14/user/month (annual) — MSP resale at $18–$20/user/month via Google Workspace Reseller program

Provides Google Calendar for tutor and student calendar sync via Google Calendar API, Gmail for transactional email delivery, and Google Meet for virtual tutoring session links. Each tutor requires a seat; admin accounts also need seats.

Make.com (Core Plan)

Celonis SE (Make)Core Plan — SaaS monthly subscription with operation creditsQty: 10,000 operations/month

$9/month (Core); MSP resale at $50–$75/month as 'managed automation engine'

Workflow automation platform that orchestrates the scheduling pipeline: listens for new/updated/canceled bookings from TutorCruncher via webhooks, syncs events to Google Calendar, triggers Twilio SMS reminders at configured intervals, and updates accounting records. More cost-effective than Zapier for multi-step scenarios.

Twilio Programmable SMS

Twilio Inc.Usage-based API — pay per messageQty: Per message + per phone number/month

$0.0079/outbound SMS + $1.15/month per phone number — MSP resale at $0.02–$0.03/msg (150–275% margin)

Sends automated SMS reminders to students and parents at configurable intervals (e.g., 24 hours before, 1 hour before). Also handles cancellation/rescheduling confirmation SMS messages.

Twilio SendGrid (Essentials Plan)

Twilio Inc.SaaS — monthly subscriptionQty: 50,000 emails/month

$19.95/month (MSP resale at $35–$50/month)

Transactional email delivery for booking confirmations, calendar invitations, email reminders, cancellation notices, and weekly schedule summary digests. Provides deliverability analytics, bounce handling, and template management.

Twilio Phone Number

Twilio Inc.Local Phone NumberQty: 1

$1.15/month per local number — include in Twilio SMS resale bundle

Dedicated local phone number for sending/receiving SMS reminders. Provides a professional, recognizable sender identity for the tutoring business.

Custom Domain SSL Certificate (via Let's Encrypt)

Internet Security Research GroupFree — open source

$0

SSL/TLS certificate for securing the custom booking portal subdomain (e.g., book.clienttutoring.com). Auto-renews via Certbot or Caddy.

Prerequisites

  • Client has an active internet connection of 25 Mbps or greater at their primary location
  • Client owns a registered domain name with DNS management access (e.g., via GoDaddy, Cloudflare, or Namecheap) for creating a booking portal subdomain such as book.clienttutoring.com
  • Client has or is willing to purchase Google Workspace Business Standard licenses for all tutors and at least one admin user (minimum 2 seats)
  • Client has or is willing to create a Stripe business account for payment processing (required by TutorCruncher for invoicing and session payments)
  • Client provides a complete list of all tutors with: full name, email address, phone number, subjects taught, and weekly availability windows
  • Client provides a list of all active students with: full name, parent/guardian name, parent email, parent phone number, enrolled subjects, and preferred session frequency
  • Client confirms whether any students are under 13 years of age (triggers COPPA compliance requirements for parental consent workflows)
  • Client identifies their primary calendar provider (Google Calendar or Microsoft Outlook) — this guide assumes Google Calendar; see alternatives section for Microsoft 365
  • Client designates at least one internal administrator who will serve as the platform admin and primary MSP contact
  • MSP technician has access to the client's DNS management panel to create CNAME/A records for the booking subdomain
  • MSP has a Twilio account (master account) with sub-account capability for client isolation, or client creates their own Twilio account
  • If the tutoring center works with any school districts, the client must provide copies of existing Data Processing Agreements (DPAs) or identify districts requiring new DPAs
  • Client confirms their state of operation for state-specific student privacy law compliance (particularly relevant for California SOPIPA, New York Education Law §2-d, and similar statutes)

Installation Steps

Step 1: Create and Configure TutorCruncher Account

Sign up for TutorCruncher at the Essentials tier (or higher based on client size). This is the central hub for all tutoring operations — scheduling, student management, tutor profiles, and invoicing. During initial setup, configure the company profile, timezone, currency, and branding (logo, colors) to match the client's identity.

1
Navigate to https://tutorcruncher.com and click 'Start Free Trial'
2
Complete registration with client admin email
3
Under Settings > Company, set: Company Name: [Client Tutoring Business Name], Timezone: [Client timezone, e.g., America/New_York], Currency: USD, Logo: Upload client logo (PNG, min 200x200px)
4
Under Settings > Notifications, enable: Email notifications for new bookings, Email notifications for cancellations, Set reminder intervals: 24 hours, 1 hour before session
Note

TutorCruncher offers a free trial period. Transition to paid Essentials plan (€28/mo) before trial expires. If the client has multiple branches/locations, the branch add-on is £40/branch/month. Ensure the admin email belongs to the client (not the MSP) for account ownership, but add the MSP admin as a secondary administrator.

Step 2: Configure Tutor Profiles and Availability

Create individual tutor accounts in TutorCruncher and configure each tutor's availability schedule, subjects, hourly rates, and service types (in-person, online, group). This availability data drives the auto-scheduling engine — students can only book during windows where a qualified tutor is available.

1
Navigate to Contractors > Add New Contractor
2
Enter: Name, Email, Phone, Subjects (as Skills)
3
Under Availability, set weekly recurring schedule: Monday: 3:00 PM – 8:00 PM, Tuesday: 3:00 PM – 8:00 PM, (etc., per tutor's actual schedule)
4
Set session types: 1-on-1 (60 min), Group (90 min)
5
Set hourly rate per tutor
6
Invite tutor via email to create their login
Note

Each tutor will receive an invitation email to set up their own login. They can then self-manage their availability going forward (e.g., blocking off vacation days). Emphasize to tutors that keeping availability current prevents double-bookings. TutorCruncher supports both recurring weekly availability and one-off overrides.

Step 3: Configure Student and Parent Accounts

Import or manually create student profiles in TutorCruncher. Each student record links to a parent/guardian contact for billing and communications. For students under 13, mark the account to trigger COPPA-compliant workflows (parent-only communications, no direct student data collection).

Option A: Bulk import via CSV

1
Prepare CSV with columns: student_first_name, student_last_name, parent_email, parent_phone, subjects, preferred_tutor
2
Navigate to Clients > Import > Upload CSV
3
Map columns to TutorCruncher fields
4
Review and confirm import

Option B: Manual entry

1
Navigate to Clients > Add New Client
2
Enter parent as primary contact (name, email, phone)
3
Add student as recipient of services
4
Link to subjects/skills and preferred tutor(s)
5
Set session preferences: frequency (weekly/biweekly), preferred day/time
Note

For FERPA compliance, only collect minimum necessary PII: name, contact info, subjects, and scheduling preferences. Do NOT store academic records, grades, or disability information in TutorCruncher unless specifically required and covered by a DPA. For COPPA (students under 13), ensure the parent is the account holder and all communications go to the parent email/phone only.

Step 4: Connect Stripe Payment Processing

Integrate TutorCruncher with the client's Stripe account to enable automatic invoicing when sessions are scheduled and payment collection. This is critical for the auto-scheduling workflow — when a session is booked, an invoice is automatically generated and the parent can pay via the client portal.

1
Client creates Stripe account at https://stripe.com (if not existing)
2
In TutorCruncher: Settings > Integrations > Stripe
3
Click 'Connect with Stripe' and authorize TutorCruncher
4
Configure billing settings: Invoice generation: Automatic on session completion | Payment terms: Due on receipt (or Net 7, per client preference) | Tax rate: Set per local tax requirements
5
Test with a $1.00 test transaction and refund
Note

Stripe charges 2.9% + $0.30 per transaction. The tutoring business should factor this into their pricing. TutorCruncher also supports PayPal, but Stripe is recommended for better automation support and lower fees on recurring payments. Ensure PCI compliance by never storing card numbers outside of Stripe.

Step 5: Set Up Google Workspace and Calendar API Access

Configure Google Workspace for all tutors and create a Google Cloud project with Calendar API enabled. This allows bidirectional calendar synchronization — when a session is booked in TutorCruncher, it automatically appears on the tutor's and student's Google Calendar, and vice versa.

A. Google Workspace Setup (if not already provisioned)

1
Go to https://workspace.google.com/signup
2
Register with client's domain
3
Verify domain ownership via DNS TXT record
4
Create user accounts for each tutor: tutor1@clientdomain.com
5
Create a service account for API access

B. Google Cloud Console — API Setup

1
Go to https://console.cloud.google.com
2
Create new project: 'TutoringScheduler'
Create the Google Cloud project via CLI
bash
gcloud projects create tutoring-scheduler-prod --name='Tutoring Scheduler'
1
Enable Google Calendar API
Enable the Google Calendar API for the project
bash
gcloud services enable calendar-json.googleapis.com --project=tutoring-scheduler-prod
1
Create OAuth 2.0 credentials: Navigate to APIs & Services > Credentials > Create Credentials > OAuth 2.0 Client ID. Set Application type to 'Web application'. Set Authorized redirect URIs to: https://www.integromat.com/oauth/cb/google-calendar (for Make.com)
2
Download client_secret.json and store securely
3
Configure OAuth consent screen: App name: [Client Business] Scheduling. Scopes: https://www.googleapis.com/auth/calendar. User type: Internal (if all users on same Workspace domain) or External
Note

For the OAuth consent screen, if set to 'External' and accessing more than 100 users, Google requires app verification which takes 2-4 weeks. For most tutoring centers (<100 users on the same Workspace domain), use 'Internal' to avoid verification. Store the client_secret.json securely in the MSP's credential vault — never share in plaintext via email. The Calendar API has a free quota of 1,000,000 queries/day, which is more than sufficient.

Step 6: Create Twilio Account and Configure SMS

Set up a Twilio sub-account (or standalone account) for the tutoring client, purchase a local phone number, and configure messaging services for SMS reminder delivery. Using a sub-account under the MSP's master Twilio account enables centralized billing and management.

1
Option A — Via Twilio Console > Account > Subaccounts > Create Subaccount. Name: [Client Business Name] - Tutoring SMS
2
Option B — Sign up at https://www.twilio.com/try-twilio, then verify business identity (required for A2P 10DLC compliance)
3
Purchase a local phone number: Twilio Console > Phone Numbers > Buy a Number. Select local number in client's area code and enable SMS capability.
4
Register for A2P 10DLC (required for US business SMS): Twilio Console > Messaging > Trust Hub > US A2P Brand Registration. Fill out business profile, EIN, and website. Create Messaging Campaign with category = 'Education'. Wait for approval (typically 1–5 business days).
5
Create a Messaging Service: Twilio Console > Messaging > Services > Create. Name it 'TutoringReminders', add the purchased phone number to the service, and set a fallback URL (optional, for delivery failure logging).
6
Note down these values for Make.com integration: Account SID, Auth Token, Messaging Service SID, and From Number.
Values to collect for Make.com integration
text
Account SID: ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Auth Token: (from Console > Account > API Keys, or main dashboard)
Messaging Service SID: MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
From Number: +1XXXXXXXXXX
Note

A2P 10DLC registration is MANDATORY for US business SMS as of 2024. Without it, SMS messages will be filtered or blocked by carriers. Registration costs $4/brand + $15/campaign (one-time). Processing takes 1-5 business days — start this step early. For Canadian clients, use Twilio's Canadian long codes with CRTC compliance. For UK/EU clients, use Twilio's Alphanumeric Sender IDs. SMS opt-out is automatic with Twilio — recipients can text STOP to unsubscribe, which is legally required.

Step 7: Configure Twilio SendGrid for Email Reminders

Set up SendGrid for transactional email delivery including booking confirmations, email reminders, cancellation notices, and weekly schedule digests. Configure sender authentication (SPF, DKIM, DMARC) to ensure emails land in inboxes rather than spam folders.

1
Sign up for SendGrid Essentials at https://sendgrid.com
2
Authenticate sender domain by adding DNS records to client's domain: - CNAME: em1234.clientdomain.com -> u1234.wl.sendgrid.net - CNAME: s1._domainkey.clientdomain.com -> s1.domainkey.u1234.wl.sendgrid.net - CNAME: s2._domainkey.clientdomain.com -> s2.domainkey.u1234.wl.sendgrid.net
3
Create API Key: Settings > API Keys > Create API Key. Name: MakeComIntegration. Permissions: Full Access (or restricted to Mail Send only for least-privilege). Save the key: SG.xxxxxxxxxxxxxxxxxxxx
4
Create Dynamic Email Templates: Email API > Dynamic Templates > Create Dynamic Template. Create templates for: a) booking_confirmation - Subject: 'Your tutoring session is confirmed!' b) reminder_24h - Subject: 'Reminder: Tutoring session tomorrow at {{session_time}}' c) reminder_1h - Subject: 'Starting soon: Tutoring in 1 hour with {{tutor_name}}' d) cancellation_notice - Subject: 'Session cancelled: {{session_date}}' e) weekly_digest - Subject: 'Your tutoring schedule for the week of {{week_start}}'
5
Configure suppression management: Settings > Tracking > Unsubscribe groups. Create group: 'Session Reminders'. All reminder emails must include one-click unsubscribe per CAN-SPAM.
Note

Domain authentication (SPF/DKIM) is critical — without it, reminder emails will likely end up in spam. The DNS propagation for these records can take up to 48 hours, so complete this step early in the project. SendGrid's free tier (100 emails/day) may suffice for small tutoring centers during testing, but the Essentials plan ($19.95/mo for 50K emails) is recommended for production to avoid hitting daily limits and to get dedicated IP reputation.

Step 8: Configure Make.com Automation Workspace

Set up the Make.com workspace that will serve as the automation orchestration layer. This connects TutorCruncher events to Google Calendar, Twilio SMS, and SendGrid email. Create the Make.com account, connect all services, and establish the core data routing.

1
Create Make.com account at https://www.make.com
2
Create Organization: [Client Name] Tutoring Automation
3
Subscribe to Core plan ($9/month)
4
Add Connections (Make.com > Connections > Add): a) TutorCruncher: API Key connection - Get API key from TutorCruncher > Settings > API > Generate Key - In Make.com: Add Connection > HTTP > Header Auth - Header Name: Authorization - Header Value: token [TutorCruncher API Key] - Base URL: https://secure.tutorcruncher.com/api/ b) Google Calendar: OAuth 2.0 - Use the OAuth credentials from Step 5 - Authorize access to tutor calendars c) Twilio: API credentials - Account SID and Auth Token from Step 6 d) SendGrid: API Key - Use API key from Step 7
5
Set webhook endpoint for TutorCruncher: - In Make.com: Create new scenario > Add Webhook trigger - Copy the webhook URL - In TutorCruncher: Settings > Webhooks > Add webhook - Paste Make.com webhook URL - Select events: appointment.created, appointment.updated, appointment.cancelled
Note

Make.com's Core plan includes 10,000 operations/month. For a mid-size tutoring center with 20 tutors running 50 sessions/week, each session triggers approximately 6-8 operations (webhook receive, calendar sync, 2 SMS reminders, 2 email reminders, logging). That's ~300-400 operations/week or ~1,600/month — well within the 10,000 limit. Monitor usage in Make.com > Organization > Operations and upgrade to Pro ($16/mo) if approaching limits.

Step 9: Build Core Scheduling Automation Workflow (Make.com Scenario 1: New Booking)

Create the primary Make.com scenario that fires when a new tutoring session is booked. This workflow syncs the session to both tutor and student Google Calendars, sends an immediate booking confirmation email, and schedules SMS and email reminders at 24-hour and 1-hour intervals before the session.

1
Make.com Scenario: 'New Booking Pipeline'
2
Trigger: Webhook (from TutorCruncher appointment.created event)
3
Module 1: Webhook — Receive TutorCruncher Payload — Parse JSON body containing: appointment_id, tutor_name, tutor_email, student_name, parent_email, parent_phone, session_date, session_time, session_duration, session_type, subject, location_or_meetlink
4
Module 2: Router (splits into parallel paths)
  • Path A: Google Calendar Sync
  • Module 2A-1: Google Calendar - Create Event (Tutor Calendar) — Calendar ID: tutor_email, Summary: 'Tutoring: {{student_name}} - {{subject}}', Start: {{session_date}}T{{session_time}}, End: {{session_date}}T{{session_end_time}} (calculated: start + duration), Description: 'Student: {{student_name}}\nSubject: {{subject}}\nType: {{session_type}}', Location: {{location_or_meetlink}}, Reminders: default, Color: 10 (green)
  • Module 2A-2: Google Calendar - Create Event (Student/Parent Calendar) — Calendar ID: parent_email, Summary: 'Tutoring with {{tutor_name}} - {{subject}}', Start/End: same as above, Description: 'Tutor: {{tutor_name}}\nSubject: {{subject}}\nLocation: {{location_or_meetlink}}'
  • Path B: Immediate Confirmation Email
  • Module 2B-1: SendGrid - Send Email (Dynamic Template) — To: {{parent_email}}, Template ID: [booking_confirmation template ID], Dynamic data: tutor_name, student_name, session_date, session_time, subject, location
  • Path C: Schedule SMS Reminder (24h before)
  • Module 2C-1: Tools - Set Variable — reminder_24h_time = {{session_date}}T{{session_time}} minus 24 hours
  • Module 2C-2: Tools - Sleep (delay until 24h before) — NOTE: For production, use Make.com Scheduling instead of Sleep module
  • Module 2C-3: Twilio - Send SMS — To: {{parent_phone}}, From: {{messaging_service_sid}}, Body: 'Reminder: {{student_name}} has tutoring with {{tutor_name}} tomorrow at {{session_time}}. Subject: {{subject}}. Reply STOP to opt out.'
  • Path D: Schedule SMS Reminder (1h before) — Similar structure to Path C with 1-hour offset
  • Path E: Schedule Email Reminder (24h before)
  • Module 2E-1: SendGrid - Send Email (reminder_24h template) — Scheduled send time: session_time minus 24 hours
  • Path F: Log to Data Store
  • Module 2F-1: Data Store - Add Record — Store: ScheduledSessions, Fields: appointment_id, tutor, student, date, time, status='confirmed'
Note

IMPORTANT: Make.com's Sleep module is NOT suitable for long delays (24 hours) as it consumes operations and can timeout. Instead, implement the reminder scheduling in one of two better ways: (1) Use Make.com's built-in scheduling with a separate scenario that runs every 15 minutes, queries the Data Store for sessions happening in the next 24h/1h that haven't had reminders sent yet, and sends them. (2) Use SendGrid's scheduled send feature (schedule_send_at parameter in the API) for emails, and Twilio's Message Scheduling feature for SMS. Option 2 is recommended and detailed in the custom_ai_components section.

Step 10: Build Reminder Dispatcher Workflow (Make.com Scenario 2: Timed Reminders)

Create a separate Make.com scenario that runs on a 15-minute interval schedule, queries the session data store for upcoming sessions, and dispatches reminders at the appropriate times. This is more reliable than Sleep-based delays and handles edge cases like cancellations.

1
Make.com Scenario: 'Reminder Dispatcher'
2
Trigger: Schedule — every 15 minutes
3
Module 1: Data Store - Search Records | Store: ScheduledSessions | Filter: status = 'confirmed' AND session_datetime > now() AND session_datetime < now() + 25 hours
4
Module 2: Iterator — loop through matching sessions
5
Module 3: Router
6
Path A: 24-Hour SMS Reminder | Filter: session_datetime is between now()+23h45m and now()+24h15m AND reminder_24h_sent = false | Module 3A-1: Twilio - Send SMS | Body: 'Reminder: {{student_name}} has tutoring tomorrow at {{session_time}} with {{tutor_name}}. Subject: {{subject}}. Location: {{location}}. Reply STOP to opt out.' | Module 3A-2: Data Store - Update Record | Set reminder_24h_sent = true
7
Path B: 1-Hour SMS Reminder | Filter: session_datetime is between now()+45m and now()+1h15m AND reminder_1h_sent = false | Module 3B-1: Twilio - Send SMS | Body: 'Starting soon! {{student_name}} has tutoring in 1 hour with {{tutor_name}}. Subject: {{subject}}. {{location}}' | Module 3B-2: Data Store - Update Record | Set reminder_1h_sent = true
8
Path C: 24-Hour Email Reminder | Filter: same time window as Path A AND email_24h_sent = false | Module 3C-1: SendGrid - Send Email (reminder_24h template) | Module 3C-2: Data Store - Update Record
9
Path D: 1-Hour Email Reminder | Filter: same time window as Path B AND email_1h_sent = false | Module 3D-1: SendGrid - Send Email (reminder_1h template) | Module 3D-2: Data Store - Update Record
Note

The 15-minute interval with a 30-minute time window (±15 min around the target time) ensures every session gets exactly one reminder per interval without duplicates. The reminder_sent boolean flags in the Data Store prevent double-sends if the scenario runs while a reminder is already in progress. Set Make.com error handling to 'Resume' (not 'Rollback') so a failure sending one reminder doesn't block others in the same batch. Configure Make.com email notifications for scenario errors to alert the MSP.

Step 11: Build Cancellation and Rescheduling Workflow (Make.com Scenario 3)

Handle the lifecycle of session changes — when a tutoring session is cancelled or rescheduled in TutorCruncher, this workflow updates Google Calendar events, sends cancellation/rescheduling notifications, and suppresses pending reminders for cancelled sessions.

Make.com Scenario: 'Session Update Handler' — Trigger: Webhook (from TutorCruncher appointment.updated and appointment.cancelled)

Path A: Cancellation (event_type = 'appointment.cancelled')

1
Module 1: Router based on event type
2
Module A-1: Google Calendar - Delete Event (Tutor Calendar) — Event ID: {{google_calendar_event_id}} (stored in Data Store from creation)
3
Module A-2: Google Calendar - Delete Event (Student Calendar)
4
Module A-3: SendGrid - Send Email (cancellation_notice template) — To: {{parent_email}}, Dynamic data: tutor_name, student_name, original_date, original_time
5
Module A-4: Twilio - Send SMS — Body: 'Notice: {{student_name}}\'s tutoring session on {{session_date}} at {{session_time}} has been cancelled. Contact us to reschedule.'
6
Module A-5: Data Store - Update Record — Set status = 'cancelled' (this suppresses future reminders in Scenario 2)

Path B: Rescheduling (event_type = 'appointment.updated', datetime changed)

1
Module B-1: Google Calendar - Update Event (Tutor Calendar) — Update start/end times to new values
2
Module B-2: Google Calendar - Update Event (Student Calendar)
3
Module B-3: SendGrid - Send Email — Template: rescheduling_notice, Dynamic data: old_date, old_time, new_date, new_time, tutor_name
4
Module B-4: Twilio - Send SMS — Body: 'Updated: {{student_name}}\'s tutoring moved from {{old_date}} {{old_time}} to {{new_date}} {{new_time}} with {{tutor_name}}.'
5
Module B-5: Data Store - Update Record — Update session_datetime, reset reminder flags to false
Note

Store the Google Calendar event IDs in the Make.com Data Store during the creation workflow (Scenario 1) so they can be referenced for updates and deletions. If the event ID is not stored, use Google Calendar's 'List Events' module to search by summary and time range. TutorCruncher's webhook payload for 'appointment.updated' includes both old and new values, making it straightforward to detect what changed. For rescheduling, resetting the reminder_sent flags ensures new reminders are sent for the updated time.

Step 12: Configure Booking Portal and Website Integration

Set up the client-facing booking portal where students and parents can self-schedule tutoring sessions. TutorCruncher provides an embeddable booking widget and a hosted booking page. Configure a custom subdomain (book.clientdomain.com) pointing to the booking portal for a professional appearance.

1
In TutorCruncher: Settings > Client Portal — Enable self-service booking. Set booking rules: Minimum advance booking: 24 hours, Maximum advance booking: 30 days, Cancellation policy: 12 hours minimum notice, Allow rescheduling: Yes (with 12h notice). Customize appearance: Upload logo, set brand colors.
2
Get embed code: TutorCruncher > Settings > Website Widget — Copy the JavaScript embed snippet.
3
Add to client's website.
4
Configure custom subdomain (optional but recommended): In client's DNS management panel, add CNAME record. In TutorCruncher: Settings > Custom Domain > book.clientdomain.com.
5
Test the booking flow: Visit book.clientdomain.com, select a subject and tutor, choose available time slot, complete booking with student/parent details, verify confirmation email and calendar event are generated.
TutorCruncher booking widget embed snippet — paste into your website's HTML
html
<!-- TutorCruncher Booking Widget -->
<div id='tutorcruncher-widget'></div>
<script src='https://secure.tutorcruncher.com/widget/[CLIENT_ID]/booking.js'></script>
DNS CNAME record to add in client's DNS management panel for custom subdomain
dns
book.clientdomain.com CNAME secure.tutorcruncher.com
Note

The booking widget respects tutor availability set in Step 2 — students only see time slots where a qualified tutor is free. If the client's website is on WordPress, the embed code goes in a Custom HTML block on the desired page. For Squarespace or Wix, use the code injection or HTML embed features respectively. The custom subdomain requires TutorCruncher's custom domain hosting option, which may be at an additional cost — verify with TutorCruncher support. Alternative: simply link to the hosted TutorCruncher booking page URL from the client's website.

Step 13: Set Up Make.com Data Store for Session Tracking

Create the Make.com Data Store that persists session data between scenarios. This data store acts as the central record of all scheduled sessions and their reminder status, enabling the timed Reminder Dispatcher (Scenario 2) to function correctly.

1
Navigate to Make.com: Data Stores > Create a Data Store
2
Name the store: ScheduledSessions
3
Set Maximum records to 10000 (default Make.com Core plan limit)
4
Enable: 'Search and count records' capability
ScheduledSessions Data Store structure.
json
# appointment_id is the primary key (from TutorCruncher). session_datetime
# uses ISO 8601 format. session_type accepts '1-on-1' or 'group'. status
# accepts 'confirmed', 'cancelled', or 'completed'. All reminder_* fields
# default to false.

{
  "appointment_id": "text",
  "tutor_name": "text",
  "tutor_email": "text",
  "student_name": "text",
  "parent_email": "text",
  "parent_phone": "text",
  "subject": "text",
  "session_datetime": "date",
  "session_duration_minutes": "number",
  "session_type": "text",
  "location": "text",
  "google_event_id_tutor": "text",
  "google_event_id_student": "text",
  "status": "text",
  "reminder_24h_sms_sent": "boolean",
  "reminder_1h_sms_sent": "boolean",
  "reminder_24h_email_sent": "boolean",
  "reminder_1h_email_sent": "boolean",
  "created_at": "date",
  "updated_at": "date"
}
Note

Make.com Data Stores on the Core plan allow up to 10,000 records. For a tutoring center running 200 sessions/month, this covers ~4 years of data without cleanup. Implement a monthly cleanup scenario that deletes records older than 90 days (status = completed, session_datetime < now - 90 days) to keep the data store performant. If the client needs longer retention for compliance, export old records to a Google Sheet or CSV before deletion.

Step 14: Configure Error Handling and Monitoring

Set up comprehensive error handling across all three Make.com scenarios and configure alerting so the MSP is notified of failures. This ensures that missed reminders or failed calendar syncs are caught and resolved quickly — critical for a system that directly affects student experience.

1
In each Make.com scenario: Click on each module > Error Handling > Add Error Handler. For Twilio/SendGrid modules: Add 'Resume' handler (log error, continue). For Google Calendar modules: Add 'Retry' handler (retry 3x, then Resume). For Data Store modules: Add 'Rollback' handler (prevent partial updates).
2
Configure scenario-level error notifications: Scenario Settings > Notifications. Enable: 'Notify me when a scenario encounters an error'. Email: msp-alerts@mspdomain.com
3
Create Error Logging scenario: Trigger: Make.com Error Webhook (built-in). Action: Google Sheets - Add Row to 'Error Log' spreadsheet. Columns: timestamp, scenario_name, module_name, error_message, input_data. Share the Google Sheet with client admin for visibility.
4
Set up Make.com scenario monitoring: Organization > Usage > Set alert at 80% of operation limit. Set incomplete execution storage: 30 days. Enable: Sequential processing (prevents race conditions).
5
Create a health-check scenario: Trigger: Schedule - runs daily at 8:00 AM. Module 1: HTTP Request to TutorCruncher API (GET /api/appointments/). Module 2: HTTP Request to Google Calendar API (calendar list). Module 3: Twilio - Send test SMS to MSP number. Module 4: SendGrid - Send test email to MSP address. If any module fails: Send alert email to MSP. If all pass: Log 'Health check passed' to Google Sheet.
Note

The daily health check scenario consumes ~5 operations per run (35/week, ~150/month) which is negligible within the 10,000/month quota. This proactive monitoring catches issues like expired API tokens, Twilio account suspension, or SendGrid domain authentication problems before they affect students. Review the error log weekly during the first month post-deployment, then monthly thereafter. Include error log review in the MSP's monthly managed service report to the client.

Step 15: Implement FERPA and COPPA Compliance Controls

Configure access controls, data handling procedures, and consent mechanisms to ensure the system complies with FERPA, COPPA, and applicable state student privacy laws. This step is non-negotiable for any tutoring business serving K-12 students.

TutorCruncher Access Controls

1
Navigate to Settings > Permissions in TutorCruncher
2
Admin role: Full access (client admin + MSP admin)
3
Tutor role: View own schedule only, view assigned student names only
4
Parent role: View own student's schedule, make bookings, view invoices
5
NEVER grant tutors access to other tutors' students or financial data

Execute Data Processing Agreements (DPAs)

1
TutorCruncher: Request DPA from support@tutorcruncher.com
2
Google Workspace: Use Google's Education DPA at https://workspace.google.com/terms/dpa_terms.html
3
Twilio: Request DPA from Twilio legal (available at https://www.twilio.com/legal/data-protection-addendum)
4
SendGrid: Covered under Twilio DPA
5
Make.com: Request DPA from Make.com support
6
Store executed DPAs in client's compliance folder
1
In TutorCruncher, tag accounts with students under 13
2
Ensure all booking/reminder communications go to PARENT contacts only
3
Do NOT create student-facing accounts for under-13 users
4
Document parental consent: add consent checkbox to booking form
5
Consent text: 'I am the parent/guardian of [student] and consent to the collection of scheduling data for tutoring services.'

Data Retention Policy

1
Configure in TutorCruncher: Archive student records 12 months after last session
2
In Make.com Data Store: Auto-delete records >90 days old
3
In Google Calendar: Events auto-archive after 18 months (Google default)
4
In Twilio: Message logs auto-delete after 13 months (Twilio default)
5
Document retention schedule in client's privacy policy
Note

DPA execution is the MSP's responsibility to facilitate but the legal agreement is between the tutoring business and each vendor. Keep copies of all signed DPAs in a secure shared location accessible to the client. For tutoring businesses working with school districts, the school district typically provides their own DPA template — ensure the scheduling system's data flows are compatible with the district's requirements. Review compliance controls quarterly as part of the managed service agreement.

Step 16: Build Weekly Schedule Digest Workflow (Make.com Scenario 4)

Create an automated weekly email that sends each tutor and each parent a summary of their upcoming week's tutoring sessions. This provides a consolidated view and catches any scheduling issues before the week begins.

1
Make.com Scenario: 'Weekly Schedule Digest'
2
Trigger: Schedule - Every Monday at 7:00 AM (client's timezone)
3
Module 1: Data Store - Search Records — Filter: status = 'confirmed' AND session_datetime between Monday and Sunday of current week
4
Module 2: Array Aggregator — group by parent_email — Create array of sessions per parent
5
Module 3: Iterator — loop through parent groups
6
Module 4: SendGrid - Send Email (weekly_digest template) — To: {{parent_email}} — Dynamic data: student_name, sessions: [array of {date, time, tutor_name, subject, location}], total_sessions_this_week
7
Module 5: Array Aggregator — group by tutor_email
8
Module 6: Iterator — loop through tutor groups
9
Module 7: SendGrid - Send Email (tutor_weekly_digest template) — To: {{tutor_email}} — Dynamic data: tutor_name, sessions: [array of {date, time, student_name, subject, location}], total_sessions_this_week, total_hours
Note

The weekly digest is a high-value feature that tutoring center clients love — it reduces 'I forgot about my session' issues and gives parents a clear overview. This is also an excellent upsell feature for the MSP: include it in the premium managed service tier. For tutors, the weekly digest doubles as a payroll reference since it shows total scheduled hours. Template design tip: use a clean HTML table format with session date, time, student/tutor name, subject, and a direct link to join (for online sessions).

Custom AI Components

TutorCruncher Webhook Receiver and Normalizer

Type: integration

A Make.com webhook receiver module configuration that accepts incoming webhook payloads from TutorCruncher, validates the event type, extracts and normalizes session data into a standard format used by all downstream automation scenarios. This is the entry point for all scheduling events.

Make.com Custom Webhook Configuration

Step 1: Create Webhook in Make.com

1
New Scenario > Add Module > Webhooks > Custom Webhook
2
Name: TutorCruncher Events
3
Copy the generated URL (e.g., https://hook.make.com/abc123xyz)

Step 2: Register Webhook in TutorCruncher

1
TutorCruncher > Settings > API > Webhooks
2
Add New Webhook
3
URL: https://hook.make.com/abc123xyz
4
Events to subscribe: appointment.created, appointment.updated, appointment.cancelled, appointment.completed
5
Save and test

Step 3: Data Structure Definition

After receiving the first test webhook, define the data structure in Make.com:

Example TutorCruncher webhook payload structure
json
{
  "event_type": "appointment.created",
  "data": {
    "id": 12345,
    "status": "confirmed",
    "datetime_start": "2025-07-15T15:00:00-04:00",
    "datetime_end": "2025-07-15T16:00:00-04:00",
    "service": {
      "id": 101,
      "name": "Math Tutoring - 1 on 1",
      "duration": 60
    },
    "contractor": {
      "id": 201,
      "first_name": "Jane",
      "last_name": "Smith",
      "email": "jane@clientdomain.com",
      "phone": "+15551234567"
    },
    "client": {
      "id": 301,
      "first_name": "John",
      "last_name": "Doe",
      "email": "parent@example.com",
      "phone": "+15559876543"
    },
    "student": {
      "first_name": "Billy",
      "last_name": "Doe"
    },
    "location": "Room 3B",
    "online_link": "https://meet.google.com/abc-defg-hij",
    "notes": "Focus on algebra chapter 5"
  }
}

Step 4: Normalizer Module (Set Multiple Variables)

After the webhook module, add a Tools > Set Multiple Variables module with the following variable mappings:

  • appointment_id{{data.id}}
  • event_type{{event_type}}
  • tutor_name{{data.contractor.first_name}} {{data.contractor.last_name}}
  • tutor_email{{data.contractor.email}}
  • student_name{{data.student.first_name}} {{data.student.last_name}}
  • parent_email{{data.client.email}}
  • parent_phone{{data.client.phone}}
  • session_date{{formatDate(data.datetime_start; "YYYY-MM-DD")}}
  • session_time{{formatDate(data.datetime_start; "h:mm A")}}
  • session_datetime_iso{{data.datetime_start}}
  • session_end_iso{{data.datetime_end}}
  • duration_minutes{{data.service.duration}}
  • subject{{data.service.name}}
  • location{{ifempty(data.online_link; data.location)}}
  • is_online{{if(data.online_link; true; false)}}

Step 5: Router Module

Add a Router after the normalizer that branches based on event_type. Each route connects to its respective downstream scenario via Make.com's scenario-linking or inline modules.

  • Route 1: Filter event_type = appointment.created → New Booking Pipeline
  • Route 2: Filter event_type = appointment.updated → Update Handler
  • Route 3: Filter event_type = appointment.cancelled → Cancellation Handler
  • Route 4: Filter event_type = appointment.completed → Completion Logger

Smart Reminder Scheduler with Deduplication

Type: workflow A Make.com scenario that runs every 15 minutes to dispatch SMS and email reminders for upcoming sessions. It includes deduplication logic to prevent double-sends, handles timezone-aware time comparisons, and respects cancellation status to suppress reminders for cancelled sessions.

Scenario Settings

  • Schedule: Every 15 minutes
  • Max executions: 1 (sequential, no parallel runs)
  • Error behavior: Resume (don't stop on individual send failures)

Module Chain

Module 1: Data Store — Search Records

  • Data Store: ScheduledSessions
  • Filter: status EQUALS 'confirmed' AND session_datetime GREATER THAN {{now}} AND session_datetime LESS THAN {{addHours(now; 25)}}
  • Limit: 100 records per execution
  • Sort: session_datetime ASC

Module 2: Iterator

  • Iterate over search results from Module 1

Module 3: Router (4 parallel paths with filters)

Path A: 24-Hour SMS Reminder

Filter condition:

Path A router filter condition
text
reminder_24h_sms_sent EQUALS false
AND session_datetime GREATER THAN {{addHours(now; 23)}}
AND session_datetime LESS THAN {{addHours(now; 25)}}

Module A1 — Twilio: Send SMS

  • To: {{parent_phone}}
  • Messaging Service SID: MGxxxxxxxx
Path A SMS body
text
Reminder: {{student_name}} has {{subject}} tutoring tomorrow at {{session_time}} with {{tutor_name}}. 
📍 {{location}}
Need to cancel or reschedule? Reply HELP or call [tutoring center phone].
Reply STOP to opt out of SMS reminders.

Module A2 — Data Store: Update Record

  • Key: {{appointment_id}}
  • Set: reminder_24h_sms_sent = true, updated_at = {{now}}
Note

Error Handler on A1: Resume → Log error, set reminder_24h_sms_sent = 'error' for manual review

Path B: 1-Hour SMS Reminder

Filter condition:

Path B router filter condition
text
reminder_1h_sms_sent EQUALS false
AND session_datetime GREATER THAN {{addMinutes(now; 45)}}
AND session_datetime LESS THAN {{addMinutes(now; 75)}}

Module B1 — Twilio: Send SMS

Path B SMS body
text
Starting soon! {{student_name}}'s {{subject}} session with {{tutor_name}} begins in ~1 hour at {{session_time}}.
📍 {{location}}

Module B2 — Data Store: Update Record

  • Set: reminder_1h_sms_sent = true

Path C: 24-Hour Email Reminder

Filter condition:

Path C router filter condition
text
reminder_24h_email_sent EQUALS false
AND session_datetime GREATER THAN {{addHours(now; 23)}}
AND session_datetime LESS THAN {{addHours(now; 25)}}

Module C1 — SendGrid: Send Email (v3 API)

  • To: {{parent_email}}
  • From: reminders@clientdomain.com
  • Template ID: d-xxxxxxxxxxxx (reminder_24h template)
SendGrid dynamic template data payload
json
{
  "student_name": "{{student_name}}",
  "tutor_name": "{{tutor_name}}",
  "session_date": "{{formatDate(session_datetime; 'dddd, MMMM D, YYYY')}}",
  "session_time": "{{session_time}}",
  "subject": "{{subject}}",
  "location": "{{location}}",
  "cancel_url": "https://book.clientdomain.com/reschedule/{{appointment_id}}"
}

Module C2 — Data Store: Update Record

  • Set: reminder_24h_email_sent = true

Path D: 1-Hour Email Reminder

Same structure as Path C with 1-hour time window and reminder_1h template.

Operations Budget

  • Per execution (15-min interval): 1 search + N iterations + up to 4N send+update operations
  • Worst case for 200 sessions/month: ~800 reminder operations/month
  • Well within Make.com Core plan's 10,000/month limit

Timezone Handling

  • All session_datetime values stored in ISO 8601 with timezone offset
  • Make.com's now function respects the scenario's timezone setting
  • Set scenario timezone to match client's primary timezone in Scenario Settings > Timezone

Google Calendar Bidirectional Sync Manager

Type: integration Manages creation, update, and deletion of Google Calendar events for both tutors and students/parents. Stores Google Calendar event IDs for future reference (updates, cancellations). Handles timezone conversion and generates Google Meet links for online sessions.

Implementation

Google Calendar Sync — Make.com Module Configuration

Prerequisites

  • Google Calendar connection authenticated in Make.com (OAuth 2.0)
  • Each tutor's Google Calendar ID = their Google Workspace email address
  • Parent/student calendar access: either shared calendar or events sent via email invitation

Create Event Module Configuration

For Tutor Calendar

Make.com Module: Google Calendar > Create an Event

Tutor calendar event configuration in Make.com
text
Calendar ID: {{tutor_email}}
Event Title: Tutoring: {{student_name}} — {{subject}}
Start Date & Time: {{session_datetime_iso}}
End Date & Time: {{session_end_iso}}
Timezone: America/New_York (or client timezone)
Description: 
  Student: {{student_name}}
  Subject: {{subject}}
  Session Type: {{session_type}}
  Notes: {{notes}}
  ---
  Auto-scheduled by [Client Business Name]
Location: {{location}}
Color: 10 (Basil/Green — visually distinguishes tutoring from personal events)
Reminders:
  - Method: popup, Minutes: 30
  - Method: popup, Minutes: 5
Conference Data (for online sessions):
  Create Request:
    Request ID: tutor-session-{{appointment_id}}
    Conference Solution Key: hangoutsMeet
  (This auto-generates a unique Google Meet link)
Attendees:
  - Email: {{parent_email}} (sends calendar invitation to parent)
Critical

After this module executes, capture the output: - Event ID → Store in Data Store as google_event_id_tutor - HangoutLink → Store as meet_link (if online session)

For Student/Parent Calendar

Approach B: Direct parent calendar event configuration
text
Module: Google Calendar > Create an Event
Calendar ID: {{parent_email}}
Event Title: Tutoring with {{tutor_name}} — {{subject}}
Color: 7 (Peacock/Teal)
(Same fields as tutor event, no attendees needed)
Store output Event ID as `google_event_id_student`

Update Event Module Configuration

Update event configuration in Make.com
text
Module: Google Calendar > Update an Event
Calendar ID: {{tutor_email}}
Event ID: {{google_event_id_tutor}} (retrieved from Data Store)
Start Date & Time: {{new_session_datetime_iso}}
End Date & Time: {{new_session_end_iso}}
(Other fields: update only changed values)
Send Notifications: Yes (sends update notification to attendees)

Delete Event Module Configuration

Delete event configuration in Make.com
text
Module: Google Calendar > Delete an Event
Calendar ID: {{tutor_email}}
Event ID: {{google_event_id_tutor}}
Send Notifications: Yes (notifies parent of cancellation)

Conflict Detection (Pre-booking Validation)

Before creating a new event, add a conflict check. This prevents double-bookings that could occur if a tutor manually adds events to their Google Calendar outside of TutorCruncher.

Conflict detection: list events in the proposed session window
text
Module: Google Calendar > List Events
Calendar ID: {{tutor_email}}
Time Min: {{session_datetime_iso}}
Time Max: {{session_end_iso}}
Single Events: true
1
Run the List Events module with the proposed session time window
2
Apply filter: If result count > 0 → Route to conflict handler
3
Conflict handler: Send alert email to admin
4
Do NOT create duplicate event if conflict is detected

Recurring Session Generator

Type: workflow Automates the creation of recurring tutoring sessions. When a student enrolls for weekly tutoring, this workflow generates individual session records for the next 4 weeks (configurable) based on a recurring pattern, creates corresponding calendar events, and refreshes the series as sessions are completed.

Implementation

Make.com Scenario: Recurring Session Generator

Trigger

  • Webhook — TutorCruncher recurring appointment series created
  • Manual trigger by admin with parameters

Input Parameters

Webhook or manual trigger input payload
json
{
  "student_name": "Billy Doe",
  "parent_email": "parent@example.com",
  "parent_phone": "+15559876543",
  "tutor_email": "jane@clientdomain.com",
  "tutor_name": "Jane Smith",
  "subject": "Math Tutoring",
  "recurrence_pattern": "weekly",
  "day_of_week": "Tuesday",
  "start_time": "15:00",
  "duration_minutes": 60,
  "location": "Room 3B",
  "series_start_date": "2025-07-15",
  "generate_weeks_ahead": 4,
  "series_id": "recurring-301-201"
}

Module Chain

Module 1: Tools — Set Multiple Variables

Calculate the dates for the next N sessions:

Make.com variable expressions for session date calculation
text
week_1_date = {{series_start_date}}
week_2_date = {{addDays(series_start_date; 7)}}
week_3_date = {{addDays(series_start_date; 14)}}
week_4_date = {{addDays(series_start_date; 21)}}

Module 2: Tools — Create Array

Array of session date objects passed to the iterator
json
[
  {"session_date": "{{week_1_date}}", "week_number": 1},
  {"session_date": "{{week_2_date}}", "week_number": 2},
  {"session_date": "{{week_3_date}}", "week_number": 3},
  {"session_date": "{{week_4_date}}", "week_number": 4}
]

Module 3: Iterator — Loop through session dates

Module 4: Google Calendar — List Events (Conflict Check)

  • Check tutor calendar for existing events at this date/time
  • If conflict found → Skip this date, log to error sheet

Module 5: Data Store — Add Record (if no conflict)

Data Store record fields per session iteration
text
appointment_id: {{series_id}}-W{{week_number}}
session_datetime: {{session_date}}T{{start_time}}:00
duration_minutes: {{duration_minutes}}
status: confirmed
(all other fields from input parameters)
(all reminder flags: false)

Module 6: Google Calendar — Create Event

Create calendar event per Step 9 / Calendar Sync component.

Module 7: SendGrid — Send Series Confirmation Email

Only after all iterations complete — use Aggregator.

  • Subject: Recurring {{subject}} sessions scheduled!
  • Body: Lists all scheduled dates with times

Auto-Refresh Logic

Create a companion scenario that runs weekly (Sunday night):

1
Query Data Store for recurring series (identified by series_id pattern)
2
Find the latest scheduled session in each series
3
If the latest session is within 1 week → generate next 2 weeks
4
This maintains a rolling 4-week window of scheduled sessions

Handling Holidays/Breaks

  • Maintain a 'blackout dates' array in Make.com Variables
  • During generation, check each date against blackout dates
  • Skip blackout dates and optionally notify parent
  • MSP updates blackout dates at client's request or per school calendar

Blackout dates example:

Blackout dates array stored in Make.com Variables
json
["2025-11-27", "2025-12-25", "2025-12-31"]

No-Show and Attendance Tracker

Type: workflow

Tracks session attendance and automates follow-up for no-shows. After each scheduled session time passes, if the tutor hasn't marked attendance in TutorCruncher, the system sends a prompt to the tutor and, if no-show is confirmed, sends a follow-up message to the parent to reschedule.

Implementation

Make.com Scenario: Attendance and No-Show Handler

Trigger: Schedule — Every 30 minutes

Module 1: Data Store — Search Records

Filter sessions that should have started 15+ minutes ago but less than 4 hours ago:

Data Store filter expression
text
status EQUALS 'confirmed'
AND session_datetime LESS THAN {{addMinutes(now; -15)}}
AND session_datetime GREATER THAN {{addHours(now; -4)}}

Module 2: TutorCruncher API — Check Appointment Status

TutorCruncher appointment status check
http
GET https://secure.tutorcruncher.com/api/appointments/{{appointment_id}}/
Authorization: token [API_KEY]

Parse response for status field:

  • completed → Session attended
  • awaiting_report → Session likely happened, tutor needs to submit report
  • confirmed → Session time passed but no status update (potential no-show)

Module 3: Router

Path A: Session Completed

Filter: TutorCruncher status = 'completed' OR 'awaiting_report'

  • Data Store: Update status = 'completed'
  • No further action needed

Path B: Potential No-Show (status still 'confirmed' 15+ min after start)

Filter: TutorCruncher status = 'confirmed'

1
Module B1 — Twilio: Send SMS to Tutor
2
Module B2 — Tools: Sleep (wait 30 minutes for tutor response). NOTE: In production, use a separate scheduled check instead of Sleep.
3
Module B3 — TutorCruncher API: Re-check status
4
Module B4 — Router: If now 'completed': Update Data Store, done. If still 'confirmed' after 45+ minutes: Mark as no-show.
Module B1 — Twilio SMS to tutor
text
To: {{tutor_phone}}
Body: Hi {{tutor_name}}, your {{session_time}} session with {{student_name}} ({{subject}}) appears unconfirmed. Please update the session status in TutorCruncher. If the student didn't attend, mark as no-show. Reply HELP for assistance.
Note

In production, use a separate scheduled check instead of the Sleep module for the 30-minute tutor response wait.

Path C: Confirmed No-Show

1
Module C1 — Data Store: Update status = 'no_show'
2
Module C2 — SendGrid: Send Email to Parent using template 'no_show_follow_up'
3
Module C3 — Twilio: Send SMS to Parent
4
Module C4 — Google Sheets: Log No-Show to 'No-Show Tracker' spreadsheet
Module C2 — SendGrid email to parent
text
Template: no_show_follow_up
Subject: Missed tutoring session — let's reschedule
Dynamic data:
  student_name, tutor_name, session_date, session_time, subject
  reschedule_url: https://book.clientdomain.com
Module C3 — Twilio SMS to parent
text
To: {{parent_phone}}
Body: Hi, {{student_name}} missed their {{subject}} session today at {{session_time}}. To reschedule, visit {{reschedule_url}} or reply to this message.
Module C4 — Google Sheets no-show log row
text
Spreadsheet: No-Show Tracker
Row: [date, student_name, tutor_name, subject, session_time, parent_contacted]

Monthly No-Show Report

Create a companion scenario (monthly trigger) that:

1
Reads the No-Show Tracker spreadsheet
2
Aggregates no-show count per student
3
Sends summary report to client admin
4
Flags students with 3+ no-shows for admin follow-up

Testing & Validation

1
TEST 1 — New Booking End-to-End: Create a test booking in TutorCruncher for a test tutor and test student. Verify within 2 minutes: (a) confirmation email received at parent email address via SendGrid, (b) Google Calendar event appears on tutor's calendar with correct title, time, and description, (c) Google Calendar invitation email received by parent, (d) record created in Make.com Data Store with all fields populated and status='confirmed'.
2
TEST 2 — 24-Hour SMS Reminder: Create a test session scheduled for exactly 24 hours from now. Wait for the Reminder Dispatcher scenario to execute (within 15 minutes). Verify: (a) SMS received on parent's phone with correct session details, (b) Data Store record shows reminder_24h_sms_sent=true, (c) no duplicate SMS sent on subsequent Dispatcher runs.
3
TEST 3 — 24-Hour Email Reminder: Same setup as Test 2. Verify: (a) email received at parent's email using the correct SendGrid template with dynamic data populated, (b) email not in spam folder (check SPF/DKIM pass in email headers), (c) Data Store record shows reminder_24h_email_sent=true.
4
TEST 4 — 1-Hour SMS and Email Reminders: Create a test session scheduled for 1 hour from now. Verify both SMS and email reminders are delivered within 15 minutes and Data Store flags are updated. Confirm message content includes session time, tutor name, subject, and location.
5
TEST 5 — Cancellation Flow: Cancel the test session in TutorCruncher. Verify within 2 minutes: (a) Google Calendar event deleted from tutor's calendar, (b) cancellation notification email sent to parent, (c) cancellation SMS sent to parent, (d) Data Store record status updated to 'cancelled', (e) no further reminders are sent for this session (wait through next Dispatcher cycle to confirm).
6
TEST 6 — Rescheduling Flow: Update a test session's date/time in TutorCruncher. Verify: (a) Google Calendar event updated with new time, (b) rescheduling notification sent via email and SMS with both old and new times, (c) Data Store record updated with new datetime and reminder flags reset to false, (d) reminders sent at correct intervals relative to the NEW time.
7
TEST 7 — Double-Booking Prevention: Attempt to book two different students with the same tutor at the same time. Verify that TutorCruncher's availability engine prevents the conflict, OR if using the Google Calendar conflict detection module, verify the second booking triggers a conflict alert.
8
TEST 8 — Timezone Handling: Create a booking for a student in a different timezone than the tutoring center (e.g., EST center with PST student). Verify that: (a) calendar events show correct local times for both tutor and student, (b) reminder SMS/email reference the correct time in the recipient's context.
9
TEST 9 — SMS Opt-Out Compliance: Send a test SMS reminder, then reply STOP from the test phone. Verify: (a) Twilio automatically handles the opt-out, (b) subsequent reminders to that number are suppressed by Twilio (not by our system — Twilio handles this), (c) reply START re-enables messages.
10
TEST 10 — Weekly Digest Email: Trigger the weekly digest scenario manually. Verify: (a) parent receives email listing all their student's sessions for the current week in chronological order, (b) tutor receives email listing all their sessions with student names and subjects, (c) empty week produces a 'No sessions scheduled this week' message instead of a blank email.
11
TEST 11 — Error Recovery: Temporarily disable the Twilio connection in Make.com (simulate API failure). Run the Reminder Dispatcher. Verify: (a) email reminders still send successfully (independent of Twilio), (b) failed SMS sends are logged in the error Google Sheet, (c) MSP receives error notification email, (d) Data Store reminder flag is NOT set to true for the failed SMS (allowing retry on next run after fix).
12
TEST 12 — Load Test (Mid-Size Center): Create 50 test sessions across 10 tutors for the upcoming week. Run the Reminder Dispatcher and Weekly Digest scenarios. Verify: (a) all reminders dispatched within expected timeframe, (b) Make.com operations stay within plan limits, (c) no timeout errors on any module.
13
TEST 13 — FERPA Access Control: Log in as a tutor-role user in TutorCruncher. Verify: (a) tutor can only see their own schedule, not other tutors' schedules, (b) tutor cannot access financial/billing information, (c) tutor cannot view other tutors' students, (d) tutor can update their own availability.
14
TEST 14 — Health Check Scenario: Run the daily health check scenario manually. Verify: (a) TutorCruncher API responds with 200 OK, (b) Google Calendar API responds successfully, (c) Twilio test SMS is received, (d) SendGrid test email is received, (e) all results logged to health check Google Sheet.
15
TEST 15 — Recurring Session Generation: Configure a weekly recurring session series for a test student. Verify: (a) 4 individual sessions created in Data Store, (b) 4 Google Calendar events created, (c) parent receives series confirmation email listing all dates, (d) no sessions created on blackout dates.

Client Handoff

Client Handoff Deliverables

Training Sessions (2 sessions, 1 hour each)

Session 1: Administrator Training

  • How to add new tutors and set their availability in TutorCruncher
  • How to add new students and link to parent contacts
  • How to view and manage the master schedule
  • How to handle cancellations and rescheduling
  • How to view booking analytics and no-show reports
  • How to update blackout dates (holidays, school breaks) — send list to MSP
  • How to access the error log Google Sheet and what to escalate vs. handle internally
  • Stripe payment dashboard overview and refund process

Session 2: Tutor Training

  • How to log into TutorCruncher and view their schedule
  • How to update their availability (block time off, change recurring hours)
  • How tutoring sessions appear on their Google Calendar
  • How to mark sessions as completed or no-show
  • What automated messages parents receive (so tutors know what to expect)
  • Who to contact for scheduling issues (admin) vs. technical issues (MSP)

Documentation Package

1
System Architecture Diagram — visual map of all connected services (TutorCruncher → Make.com → Google Calendar / Twilio / SendGrid)
2
Admin Operations Guide — step-by-step procedures for common tasks: add tutor, add student, create recurring series, update availability, handle cancellation, process refund
3
Troubleshooting Runbook — common issues and resolutions: reminder not received (check opt-out status, check error log), calendar not synced (re-authenticate Google connection), booking widget not loading (check embed code)
4
Credential Register — secure document (stored in client's password manager) listing all account credentials, API keys, and who has access to what. Include: TutorCruncher admin login, Google Workspace admin, Make.com access, Twilio console, SendGrid dashboard
5
Compliance Documentation — copies of all signed DPAs, data retention policy, COPPA consent form template, privacy policy language for client's website, incident response plan
6
Vendor Contact Sheet — support contacts for TutorCruncher, Google Workspace, Twilio, SendGrid, Make.com

Success Criteria to Review Together

Maintenance

Ongoing MSP Maintenance Responsibilities

Weekly (15 minutes)

  • Review Make.com error log Google Sheet for any failed sends or API errors
  • Verify Reminder Dispatcher scenario executed on schedule (check Make.com > Scenarios > Execution History)
  • Check Twilio account balance if prepaid (ensure sufficient SMS credits for the coming week)
  • Review no-show tracker for any systemic issues

Monthly (1 hour)

  • Run Make.com operations usage report: verify usage is within plan limits, forecast growth
  • Review Twilio SMS delivery reports: check for bounce rates, carrier filtering, opt-out trends
  • Review SendGrid email deliverability stats: bounce rate, spam complaints, open rates
  • Check Google Calendar API quota usage in Google Cloud Console (should be far below limits)
  • Apply any available updates to Make.com scenario modules (Make.com sometimes updates module versions)
  • Test all webhook connections by triggering a test booking through the full pipeline
  • Generate and send monthly report to client: sessions scheduled, reminders sent, no-show rate, system uptime

Quarterly (2 hours)

  • Comprehensive compliance review: verify DPAs are current, review data retention policy adherence, audit access controls in TutorCruncher
  • Renew or rotate API keys and tokens (TutorCruncher API key, Twilio Auth Token, SendGrid API key) per security best practice
  • Review and update Make.com Data Store: archive old records, optimize queries
  • Capacity planning: assess if client growth requires upgrading Make.com plan, adding Twilio numbers, or scaling SendGrid tier
  • Review tutoring platform subscription: assess if client needs higher TutorCruncher tier, branch add-ons, etc.
  • Test disaster recovery: verify that if one service goes down (e.g., Twilio outage), the remaining services continue functioning independently

Annual (4 hours)

  • Full system audit: test every workflow end-to-end, verify all integrations are functional
  • Vendor contract and pricing review: check for price changes, new features, or better alternatives
  • Compliance re-certification: update DPAs if vendor terms have changed, review for new state-level student privacy laws
  • Client business review: assess if automation scope should expand (e.g., add billing automation, progress reports, parent satisfaction surveys)
  • Update documentation package with any changes made during the year

SLA Considerations

  • Response time for workflow failures: 4 business hours (detected via automated error alerts)
  • Resolution time for critical issues (no reminders sending): 8 business hours
  • Resolution time for non-critical issues (cosmetic, reporting): 2 business days
  • Planned maintenance window: Sundays 2:00-6:00 AM (client timezone) for any updates requiring downtime
  • Uptime target: 99.5% for the overall scheduling and reminder pipeline (dependent on upstream SaaS providers)

Escalation Path

1
Level 1 (Client Admin): Handles day-to-day operations: adding students/tutors, managing schedule, viewing reports. References Admin Operations Guide.
2
Level 2 (MSP Technician): Handles workflow failures, API re-authentication, module updates, Data Store maintenance. Receives automated error alerts.
3
Level 3 (MSP Senior Engineer / Vendor Support): Handles complex integration failures, API changes, platform migrations, compliance incidents. Escalated if L2 cannot resolve within SLA.

Cost of Ongoing Managed Service

Alternatives

All-in-One Platform: TutorBird (Solo/Small Operations)

For solo tutors or small centers with 1-5 tutors, use TutorBird ($14.95/month + $4.95/additional tutor) as a single platform that includes built-in scheduling, Google Calendar sync, SMS reminders, payment processing, and a website builder. This eliminates the need for Make.com, Twilio, and SendGrid entirely since TutorBird handles reminders natively.

General-Purpose Scheduling: Calendly Teams + Zapier

Use Calendly Teams ($16/user/month) as the scheduling front-end with Zapier Professional ($19.99/month) connecting to Google Calendar, Twilio, and SendGrid. Calendly provides an excellent booking UX and native calendar conflict detection, while Zapier handles the reminder orchestration. No tutoring-specific management platform is used.

Self-Hosted: Cal.com + n8n Community Edition

Deploy Cal.com (open-source scheduling) and n8n (open-source workflow automation) on a client-owned VPS or on-premises server. All data stays under the client's direct control. Uses PostgreSQL for data storage, Docker for containerization, and Nginx/Caddy for reverse proxy with SSL.

Microsoft 365 + Power Automate Ecosystem

For clients already invested in Microsoft 365, use Outlook Calendar (instead of Google Calendar), Microsoft Bookings (built into M365 Business Standard and above) for scheduling, and Power Automate for workflow orchestration connecting to Twilio/SendGrid. Microsoft Bookings provides a free booking page with calendar sync built-in.

Want early access to the full toolkit?