How to Auto-Report Zoom Usage by Department with n8n

admin1234 Avatar

## Introduction

In growing organizations, tracking Zoom meeting usage across various departments is crucial for operational analysis, budgeting, and resource management. Manual tracking is tedious and error-prone, especially as usage scales. This guide will show you how to build an automated workflow using n8n to report Zoom usage by department. This automation will benefit Operations teams by delivering timely, departmental usage reports without manual intervention.

## Prerequisites

– An n8n instance with internet access
– Zoom API credentials with appropriate scopes (dashboard:read:admin or metrics:read:admin)
– A data source that maps Zoom users to departments (Google Sheets, CSV, or internal database)
– Slack or Email account for report distribution

## What Problem Does This Solve?

Operations teams need to monitor Zoom usage metrics such as meeting duration, participant count, and meeting counts per department to optimize costs and understand communication patterns. Manually gathering this data is inefficient and not scalable. The automation provides:
– Scheduled data retrieval from Zoom
– Aggregation of usage metrics by department
– Automated report generation
– Distribution via email or Slack

## Tools and Services Integrated

– n8n as the automation orchestrator
– Zoom API for meeting usage data
– Google Sheets to store user-department mappings
– Slack or Email for report delivery

## Workflow Overview

1. Trigger: Scheduled run (e.g., every Monday 8 AM)
2. Fetch Zoom user list and usage stats over the last week
3. Retrieve user-to-department mapping from Google Sheets
4. Join Zoom data with department data
5. Aggregate usage metrics by department
6. Generate a summary report (CSV or formatted message)
7. Send the report via Slack channel or email

## Step-by-Step Tutorial

### Step 1: Set Up Scheduled Trigger

– In n8n, create a new workflow.
– Add a **Cron** node to trigger the workflow weekly (e.g., every Monday at 8:00 AM).

### Step 2: Retrieve Zoom Users

– Add an **HTTP Request** node.
– Configure it to call Zoom’s Users API (`GET https://api.zoom.us/v2/users`).
– Use OAuth or JWT authentication with your Zoom API credentials.
– This returns the list of users with their emails and IDs.

### Step 3: Retrieve Zoom Meeting Usage Data

– For each user, retrieve their meeting metrics using the Zoom Dashboard API:
– Endpoint: `GET https://api.zoom.us/v2/metrics/meetings?type=past` with date range parameters
– Use the **SplitInBatches** node to process users in manageable chunks to avoid rate limits.
– Store relevant fields like meeting duration, start time, and participant count.

### Step 4: Fetch Department Mapping from Google Sheets

– Use the **Google Sheets** node to read the sheet containing user emails mapped to departments.
– Ensure the sheet has columns like `email` and `department`.

### Step 5: Join Zoom Usage Data with Department Data

– Use the **Merge** node in ‘Merge By Field’ mode to join usage data with department data based on email address.
– The output will enrich meeting data with department information.

### Step 6: Aggregate Usage Metrics by Department

– Use the **Function** node with JavaScript code to iterate over the merged data.
– Aggregate total meeting duration, total meetings, and total participants per department.
– Output a summarized array, e.g.,
“`
[
{ department: “Sales”, totalMeetings: 30, totalDuration: 1200, totalParticipants: 450 },
{ department: “Engineering”, totalMeetings: 25, totalDuration: 950, totalParticipants: 300 }
]
“`

### Step 7: Generate Report

– Format the summary as a CSV string using a **Function** node or use n8n’s **Spreadsheet File** node.
– Alternatively, compose a Slack message with the summary stats.

### Step 8: Distribute Report

– Send an email using the **Email** node or a message to Slack channel using **Slack** node.
– For email, attach the CSV file.
– For Slack, display as a message block with well-formatted text.

## Common Errors and Tips

– **Zoom API Rate Limits:** Use batching and add delays using the **Wait** node between requests to avoid throttling.
– **Authentication Errors:** Ensure OAuth tokens are refreshed or JWT is correctly configured.
– **Data Mismatch:** Emails must exactly match between Zoom users and Google Sheets; normalize casing.
– **Missing Department Data:** Handle users without department mapping explicitly (assign ‘Unknown’).
– **Handling Large Data:** If organization is large, process metrics incrementally or limit timeframe.

## How to Adapt or Scale

– **Add Other Metrics:** Extend data retrieval to webinar usage or Zoom phone usage by adding API calls.
– **Multiple Data Sources:** Integrate with HR systems or company directories for user mapping.
– **Dashboard Integration:** Instead of emails/Slack, push aggregated data into BI tools like Google Data Studio or Power BI.
– **Alerting:** Add thresholds to send alerts if usage exceeds budgets.
– **Multiple Departments per User:** Adapt the model to support users belonging to multiple departments.

## Summary

With this workflow, Operations teams can automatically generate and receive insightful Zoom usage reports segmented by department, enabling data-driven decision-making without manual overhead.

## Bonus Tips

– Use TypeScript or stricter validation in the **Function** node to ensure data integrity.
– Store raw data in a database or Google Sheets for historical trend analysis.
– Secure sensitive information using n8n’s credential management and environment variables.

By implementing this n8n automation, you streamline operational visibility into your Zoom usage and empower your team with timely, actionable insights.