Zoom Integration Test Plan
Step-by-step testing instructions for the Streamli9 Zoom Marketplace integration.
Prepared for the Zoom Marketplace review team.
1. Overview
Streamli9 is an AI-powered meeting accountability platform. After a Zoom meeting ends, Streamli9 reads the cloud recording transcript and extracts action items with owners, due dates, and priorities using AI (Anthropic Claude Haiku). It monitors email threads for status updates, sends automated reminders, and tracks dependencies across recurring meetings.
Key point: Streamli9 only accesses text-based transcripts and metadata. No audio or video recordings are downloaded or stored.
2. Test Credentials
| Role | Account | Purpose |
|---|---|---|
| Primary test user (Host) | streamli9testing@outlook.com | Signs in via Microsoft OAuth. Zoom is pre-connected. Pro plan with unlimited tokens. Pre-loaded with demo meetings and action items. |
| Team members (Participants) | 6 mock users @streamli9.com | Pre-seeded participants who appear as action item owners in demo meetings. Not interactive accounts — they demonstrate the multi-user experience. |
Password for streamli9testing@outlook.com: Provided separately in the "Test account and credentials" section of the App Submission build flow.
3. Setup & Authorization
Step 1: Download the desktop app
- Visit https://www.streamli9.com/download
- Click "Download for Windows" to get the installer
- Run
Streamli9-Setup-x.x.x.exeand follow the installation wizard - Launch Streamli9 from the Start menu or desktop shortcut
Step 2: Sign in
- On the login screen, click "Sign in with Microsoft"
- Enter the test credentials:
streamli9testing@outlook.com - Complete Microsoft OAuth authorization
- You will be redirected back to the Streamli9 app
Step 3: Verify Zoom connection
- Navigate to Settings > Integrations
- Verify that Zoom shows as "Connected"
- The test account has Zoom pre-connected with all required scopes
If Zoom is not connected: Click "Connect Zoom". You will be redirected to Zoom's OAuth authorization page. Authorize the app to grant access to the requested scopes. You will be redirected back to Streamli9.
4. Scope-by-Scope Testing Instructions
Below are the 12 granular OAuth scopes requested by Streamli9, with the exact functionality each scope enables and how to verify it.
4.1 User Scopes
user:read:user — View user profile
Purpose: Retrieve the Zoom user's display name and account ID to associate meetings with the correct Streamli9 user.
How to test:
- Go to Settings > Integrations
- The Zoom connection card shows the connected Zoom account name
- This name is fetched via
GET /v2/users/meusing this scope
user:read:email — View user email
Purpose: Verify the Zoom account email matches the signed-in user, preventing cross-account data access.
How to test:
- Go to Settings > Integrations
- The Zoom connection card shows the connected email address
- This is used to match meeting participants to Streamli9 users
4.2 Meeting Scopes
meeting:read:meeting — View a meeting
Purpose: Fetch metadata (title, start time, duration) for individual meetings.
How to test:
- Navigate to Meetings in the sidebar
- Click on any meeting to view its detail page
- The title, date, time, and duration are fetched via
GET /v2/meetings/{meetingId}
meeting:read:list_meetings — View user's meetings
Purpose: List upcoming and past meetings to discover new transcripts.
How to test:
- Navigate to Meetings in the sidebar
- The meetings list shows all synced Zoom meetings with titles and dates
- New meetings are discovered automatically via
GET /v2/users/me/meetings
meeting:read:participant — View meeting participant
Purpose: Retrieve participant names and emails for action item assignment.
How to test:
- Click on any meeting in the Meetings page
- The meeting detail page shows a Participants section with names and emails
- These participants appear as suggested owners when action items are extracted
meeting:read:list_past_instances — View past meeting instances
Purpose: For recurring meetings, discover individual instances to process.
How to test:
- Navigate to Meetings > Recurring Series
- Click on the "Weekly Sprint Planning" series
- The series detail page shows individual instances (e.g., #3, #4) with their dates
- Each instance is discovered via
GET /v2/past_meetings/{meetingId}/instances
meeting:read:list_past_participants — View past meeting participants
Purpose: Retrieve participant lists for completed meetings (used for action item ownership matching).
How to test:
- Click on any completed meeting
- The participant list includes attendees from the actual meeting session
- Fetched via
GET /v2/past_meetings/{meetingId}/participants
meeting:read:summary — View meeting AI summary
Purpose: Retrieve Zoom AI Companion summaries to supplement action item extraction.
How to test:
- Click on any meeting in the Meetings page
- If Zoom AI Companion generated a summary, it appears in the meeting detail under "AI Summary"
- This supplements the transcript-based extraction with Zoom's own AI analysis
- Fetched via
GET /v2/meetings/{meetingId}/meeting_summary
4.3 Cloud Recording Scopes
cloud_recording:read:list_user_recordings — List user's cloud recordings
Purpose: Discover which meetings have cloud recordings with transcripts available.
How to test:
- After a Zoom meeting with cloud recording ends, Streamli9 automatically checks for new recordings
- Navigate to Meetings — newly synced meetings appear within minutes
- Fetched via
GET /v2/users/me/recordings
cloud_recording:read:list_recording_files — List meeting recording files
Purpose: Identify which recording files are transcripts (vs. video/audio files that are not accessed).
How to test:
- Streamli9 filters recording files to find only
TRANSCRIPTtype files - Audio and video files are never downloaded or stored
- The transcript file URL is used in the next scope to download the text
cloud_recording:read:recording — View a recording
Purpose: Access the recording metadata needed to retrieve the transcript file.
How to test:
- Click on any meeting — the meeting detail shows the extracted transcript text
- This scope provides the download URL for the transcript file
- Note: Only the text transcript is downloaded. No audio/video is ever accessed.
cloud_recording:read:meeting_transcript — Read meeting transcript
Purpose: Download the actual VTT/text transcript for AI action item extraction.
How to test:
- Click on any meeting to view its detail page
- The "Transcript" section shows the raw meeting transcript text
- Below the transcript, the "Action Items" section shows items extracted by AI
- Each action item has: description, assigned owner, due date, priority, and status
- Use "Approve & Send" to confirm items or "Reject" to discard
5. Feature Walkthrough
5.1 Dashboard
- Click Dashboard in the sidebar
- View the summary cards: overdue items, due today, upcoming, completed
- "Needs Attention" shows items requiring action
- "My Items" shows items assigned to you
- "Team Items" shows items from meetings you hosted
5.2 Action Items
- Click Action Items in the sidebar
- Filter by status (Pending, In Progress, Blocked, Complete)
- Filter by priority (High, Medium, Low)
- Click any item to view details, add notes, change status, or see the source meeting
5.3 Dependencies
- Click Dependencies in the sidebar
- View blocking relationships between action items
- Example: "Launch checklist sign-off" is blocked by "Security audit fixes" and "Analytics export"
5.4 Recurring Series
- Click Meetings > Recurring Series
- Click "Weekly Sprint Planning"
- View carry-forward items (incomplete items from previous instances)
- View completion rate across the series
5.5 Personal Action Items
- Click Action Items > Personal
- View personal items created outside of meetings
- Click "+" to create a new personal item manually or via AI text extraction
5.6 Notifications
- Click the Bell icon in the sidebar
- View notifications for extracted meetings, completed items, overdue alerts, and dependency resolutions
5.7 Settings
- Navigate to Settings
- General: Extraction mode, default due days, notification preferences
- Integrations: Connected platforms (Zoom shows as connected)
- Reminders: Pre-due, due date, overdue, weekly summary, host summary configuration
- Account: Profile, data export, account deletion
6. Zoom App Removal (Deauthorization)
Option A: Remove from within Streamli9
- Go to Settings > Integrations
- Click "Disconnect" next to Zoom
- Confirm the disconnection
- Streamli9 revokes the access token via Zoom's
POST /v2/oauth/revokeendpoint - All Zoom-related OAuth tokens are deleted from Streamli9's database
- Previously synced meeting data is retained (user can delete individual meetings)
Option B: Remove from Zoom Marketplace
- Sign in to Zoom App Marketplace
- Click Manage > Added Apps
- Find "Streamli9" and click Remove
- Zoom sends a deauthorization webhook to Streamli9
- Streamli9 receives the webhook at
/api/v1/webhooks/zoom/deauthorize - All Zoom OAuth tokens and connection data are automatically deleted
- The user's Streamli9 account remains active (they can re-connect Zoom later)
Data handling after removal
- OAuth tokens are immediately deleted from Streamli9's database
- Previously extracted action items are retained (owned by the user)
- Meeting transcripts are auto-deleted after 7 days regardless
- Users can delete all their data via Settings > Account > Delete Account
7. Webhook Handling
Streamli9 processes the following Zoom webhook events:
| Event | Endpoint | Action |
|---|---|---|
meeting.ended | /api/v1/webhooks/zoom | Triggers transcript sync for the ended meeting |
recording.completed | /api/v1/webhooks/zoom | Triggers cloud recording transcript download |
recording.transcript_completed | /api/v1/webhooks/zoom | Triggers transcript processing when transcript is ready |
meeting.summary_completed | /api/v1/webhooks/zoom | Fetches Zoom AI Companion summary |
app_deauthorized | /api/v1/webhooks/zoom/deauthorize | Deletes all Zoom OAuth tokens for the user |
All webhook requests are verified using HMAC-SHA256 signature validation with timing-safe comparison and 5-minute timestamp replay prevention.
8. Security & Privacy
- No audio/video: Only text transcripts and metadata are accessed
- Encryption: OAuth tokens encrypted with AES-256-GCM (application-level) + database-level AES-256
- Transcript retention: Auto-deleted after 7 days
- Data deletion: Full account deletion with 30-day grace period
- GDPR compliant: Data export, right to erasure, DPO contact
- Infrastructure: Render (SOC 2), Neon PostgreSQL (SOC 2), Cloudflare CDN
9. Support
| Channel | Details |
|---|---|
| support@streamli9.com | |
| Support page | www.streamli9.com/support |
| Hours | Monday-Friday, 9 AM - 6 PM IST |
| First response SLA | Within 24 hours |
Last updated: April 2026 · App version: 3.7.3 · Prepared for Zoom Marketplace review