Skip to main content

Zoom Call Duration Tracking & CPT Code Automation

Abdullah Khan avatar
Written by Abdullah Khan
Updated over 3 weeks ago

Release Date: 5th December 2025
​Version: 1.0
​Status: Live in Production under Ruh Care Inc. and Ruh Corp. Suborgs


🎯 Executive Summary

We've implemented automated tracking of actual Zoom call durations for therapy sessions. This feature automatically captures when therapists start and end Zoom calls, calculates the actual duration, determines the appropriate CPT code for insurance billing, and appends all relevant information to appointment notes. This automation is critical for insurance audits and ensures accurate billing practices.


✨ What's New

Automatic Duration Tracking

The platform now automatically tracks:

  • ⏰ Actual Start Time - When the therapist starts the Zoom call and also track if they joined the session late

  • ⏱️ Actual Stop Time - When the therapist ends the Zoom call

  • ⏲️ Actual Duration - Total time (in minutes) of the Zoom session

  • πŸ₯ CPT Code - Automatically assigned based on appointment type and duration

Smart Admin Notes Appending

Session timing information is automatically appended to appointment notes:

  • βœ… Preserves existing notes (never replaces)

  • βœ… Appends formatted admin section at the end

  • βœ… Includes late start notifications if applicable

  • βœ… Handles multiple Zoom calls for the same appointment

Intelligent CPT Code Assignment

CPT codes are automatically determined based on:

  • πŸ‘₯ Appointment Type - Couples, Family, or Individual therapy

  • ⏱️ Actual Duration - Length of the session

  • 🌎 Geography - Canada vs. US billing requirements


πŸ”§ How It Works

Trigger Mechanism

The system is triggered by Zoom Webhook Events:

  • appointment.participant_joined - When therapist starts the call

  • appointment.participant_left - When therapist ends the call

Timing: Updates occur automatically as soon as the Zoom call ends.


πŸ“‹ Data Captured

Appointment Fields Updated

Field

Description

Example

Actual Duration (minutes)

Total call duration

45

Appointment Notes

Admin section appended with timing details

See format below

Admin Notes Format

The following standardized format is appended to appointment notes:

===== For admin use only. Please don't edit. ===== 
Actual start time: 2:03 PM EST (started 3 mins late)
Actual stop time: 2:48 PM EST
Actual duration: 45 minutes CPT code: 90834

πŸ₯ CPT Code Logic

Ruh Corp. - Rest of The World - No CPT Code

For appointments in Canada & Rest of the World, CPT codes are NOT appended:

  • No CPT code field in admin notes

  • Only timing information is recorded

  • Complies with Canadian billing practices

Ruh Care Inc. - United States - Automated CPT Assignment

Couples & Family Therapy

For appointment types: Couples, Couples Extended, Family, Family Extended

  • CPT Code: 90847 (regardless of duration)

Individual Therapy

Duration

CPT Code

< 38 minutes

90832

38-52 minutes

90834

β‰₯ 53 minutes

90837

Note: Duration ranges are inclusive on the lower bound, exclusive on the upper bound.


🌍 Timezone Handling

All timestamps are recorded in the Therapist's Timezone:

Format Examples

  • Start Time: 2:00 PM EST

  • Stop Time: 2:45 PM EST

  • With Late Start: 2:03 PM EST (started 3 mins late)

Timezone Logic

  • Timestamps converted to therapist's configured timezone

  • Timezone abbreviation displayed (EST, PST, CST, etc.)

  • Consistent time format: HH:MM AM/PM [TZ]


⚠️ Edge Cases & Special Handling

Multiple Zoom Calls for Same Appointment

Scenario: Therapist starts a call, ends it, then starts another call for the same appointment (e.g., client asks to reschedule by 15 minutes)

Action:

  • Option 3 Implementation - Both call durations are recorded

  • First call timing information remains intact

  • Second call timing is appended below

  • Both admin sections are preserved

Example:

===== For admin use only. Please don't edit. ===== 
Actual start time: 2:00 PM EST
Actual stop time: 2:05 PM EST
Actual duration: 5 minutes
CPT code: 90832

===== For admin use only. Please don't edit. =====
Actual start time: 2:15 PM EST
Actual stop time: 3:00 PM EST
Actual duration: 45 minutes
CPT code: 90834

Late Start Detection

Scenario: Therapist starts the Zoom call more than 3 minutes after the scheduled start time

Action:

  • Append (started # mins late) to the actual start time

  • Calculated based on scheduled start time vs. actual start time

  • Example: 2:05 PM EST (started 5 mins late)

Phone & In-Person Sessions

Scenario: Appointment is conducted via phone or in-person (not Zoom)

Action:

  • No automatic tracking - Zoom webhooks don't fire

  • Therapist must manually add timing information

  • Template provided in notes section for manual entry:

===== For admin use only. Please don't edit. ===== 
Actual start time: ##:## AM/PM
Actual stop time: ##:## AM/PM
Actual duration: ## minutes
CPT code: _____

Missing Therapist Timezone

Scenario: Therapist timezone is not configured

Action:

  • Default to Eastern Time (EST/EDT)

  • Log warning for admin review

  • Notify therapist to update profile settings

Zero Duration Calls

Scenario: Therapist starts and immediately ends call (e.g., testing Zoom)

Action:

  • Duration recorded as 0 minutes or 1 minute

  • CPT code defaults to 90832 (shortest session)

  • Admin can manually update if needed


🎁 Benefits to Team

For Therapists

  • πŸš€ No Manual Entry: Duration tracked automatically

  • ⏱️ Time Savings: No need to calculate session times

  • βœ… Accurate Records: Precise timing for all sessions

  • πŸ“ Audit Ready: Automatic documentation for insurance

For Billing Team

  • πŸ’° Correct CPT Codes: Automated, accurate billing codes

  • πŸ” Audit Compliance: Complete session timing records

  • πŸ“Š Better Reporting: Accurate duration data for analysis

  • ⚑ Faster Processing: No need to request timing from therapists

For Compliance

  • πŸ₯ Insurance Audits: Complete audit trail available

  • πŸ“‹ Documentation: Standardized timing records

  • πŸ”’ Data Integrity: System-generated, tamper-resistant

  • βœ… Regulatory Compliance: Meets billing documentation requirements


πŸ” Implementation Details

Data Flow

  1. Therapist starts Zoom call for appointment

  2. Zoom sends participant_joined webhook

  3. System records actual start time in therapist timezone

  4. Compares start time to scheduled time (late detection)

  5. Therapist ends Zoom call

  6. Zoom sends participant_left webhook

  7. System records actual stop time

  8. Calculates duration (stop time - start time)

  9. Determines appointment type and location

  10. Assigns appropriate CPT code (if US-based)

  11. Formats admin notes section

  12. Appends to existing appointment notes

  13. Updates "Actual duration (minutes)" field


πŸ“ž Support & Questions

For questions about this feature or to report issues, please contact:


Last Updated: December 2025

Did this answer your question?