# Zoom, Sheets, UPI and WhatsApp: how to do all four jobs in one place

> Most Indian coaching runs on Zoom for class, a Google Sheet for the roster, a UPI ID for fees and a WhatsApp group for everything else. Here is what each app is really doing, where the stack breaks, and how each of the four jobs is handled in Prolaud — including the parts you should keep.

Published 2026-09-03 · by Prolaud · 16 min read
Source: https://prolaud.com/blog/zoom-sheets-upi-whatsapp-stack-india

If you teach online in India, there is a very good chance your entire operation runs on four things: Zoom for the class, a Google Sheet for who is in the batch, a UPI ID for the fees, and a WhatsApp group for everything else. Nobody chose that stack. It accumulated. Each piece was the obvious, free-or-cheap answer to a problem you had that week, and each one worked.

It keeps working, too — for one batch. The trouble starts at the third or fourth. Not because any of the four apps is bad, but because you now hold four separate lists of the same students, and the only thing joining them together is you, reading names.

*Four tools, four lists, one human doing the join.*

This article goes job by job. For each of the four, three questions: what is that app actually doing for you, what specifically breaks as you grow, and how the same job is handled in Prolaud (/). Where you should keep the app you already have, we will say so — two of the four have a genuine case for staying.

[Video: The four jobs, in one workspace](https://prolaud.com/blog/four-app-stack/stack-walkthrough.mp4)

## First, name the jobs — not the apps

The reason stack advice usually fails is that it compares apps to apps. "Zoom versus X" is not a useful question, because Zoom is not doing one job for you. It is doing the video call, and also the attendance register, and also — via the recording link you paste in the group afterwards — your content library.

Break the four apps into the jobs they are actually holding and the picture gets clearer:

**Each app is holding two or three jobs it was never designed for. Those are the ones that break.**

| The app | The job you think it does | The jobs it is quietly also doing | What breaks first |
| --- | --- | --- | --- |
| Zoom | Runs the live class | Attendance register, recording archive, the join link | Nobody knows who attended without a manual count |
| Google Sheet | Holds the batch list | Fee status, phone book, progress tracker, refund log | Two versions of the sheet, and the wrong one gets edited |
| UPI ID | Collects the fee | Receipts, reconciliation, proof of who paid | A payment arrives with no name you recognise |
| WhatsApp group | Announcements | Support desk, homework hand-in, recording distribution, reminders | Everything important is 400 messages up |

Read the right-hand column again. Not one of those failures is a failure of Zoom, Sheets, UPI or WhatsApp at the thing it is good at. They are all failures at the *seams* — the places where a fact has to travel from one app to another, and the only transport is your attention.

## The cost is not the subscriptions

Most "consolidate your stack" pitches lead with the bill: add up your subscriptions, compare, save money. That argument is weaker than it looks for Indian coaching, because three of your four tools are effectively free. A Sheet costs nothing. A UPI ID costs nothing. A WhatsApp group costs nothing. Only the video call has a real line item, and plenty of teachers run 40-minute free meetings and simply restart.

So be honest about where the cost actually sits. It is in three places, and none of them appear on a card statement.

- Reconciliation time. The recurring Sunday hour spent matching a UPI reference to a name in a sheet to a person in a WhatsApp group. It scales linearly with students, which means it is the first thing that stops you taking a fourth batch.
- Revenue that quietly leaks. Not fraud — drift. The student who paid for one month, was never marked as lapsed in the sheet, and stayed in the group for four more. Every teacher running this stack has two or three of these and does not know which two or three.
- The decisions you cannot make. You cannot see that attendance in batch B drops every Thursday, or that the students who quit did so within nine days of joining, because attendance lives in Zoom, joining dates live in a sheet, and nothing joins them. The stack does not just cost time — it costs you the ability to know things.

> **The test that matters:** Ask yourself one question: if a student messaged you right now asking "what did I pay, which classes did I miss, and where is last Tuesday's recording?", how many apps would you open? If the answer is more than one, that is your actual stack problem — and it is the same problem your student has, from the other side.

## Job 1 — the live class (Zoom)

Start with the good news, because it is the part most articles get wrong in their eagerness to sell you something: you do not have to give up Zoom. In Prolaud, a scheduled class has a provider, and Zoom is one of them. Paste your Zoom link into the class and it is recognised automatically — the URL is sniffed, so a `zoom.us` link is tagged as Zoom without you picking anything from a dropdown. Google Meet and Microsoft Teams work the same way, and anything else falls back to a generic "other" so an obscure institutional tool still schedules cleanly.

That matters for a specific group of teachers: anyone whose college or coaching chain has already bought Zoom licences, anyone whose students have a decade of muscle memory for the Zoom join screen, and anyone running a hybrid where a physical room's hardware is already wired to one platform. For you, the honest recommendation is to keep it and change the other three jobs.

![The Schedule a Live Class screen in Advanced mode, showing a Provider row of buttons — In-house room (default), Google Meet, Zoom and Microsoft Teams — with Zoom selected.](https://prolaud.com/blog/four-app-stack/03-provider-zoom.png)

*Zoom is a provider, not a migration. Paste a zoom.us link and it is recognised without picking anything; the row is here for when you want to override the detection.*

The alternative is the in-house room, which runs on WebRTC with no external account for anyone. Students click a link in their portal and they are in — no app install, no meeting ID, no "waiting for host". What you get by using it instead of a pasted link is not better video. It is that the class stops being a black box:

- Attendance is recorded by the room itself, not counted off a gallery view. Who joined, when, and for how long — as a record attached to the student, not a screenshot.
- The room has a lifecycle the student portal can see. Scheduled shows a countdown, open means you have entered and students are beamed in, live is in progress, ended shows the wrap-up and the recording. A pasted external link has no such state — the platform cannot know whether your Zoom call has started, so students get a link and a hope.
- Recording lands in the library, attached to the class, rather than in a cloud folder you have to find and paste into a group.
- The in-room teaching tools — whiteboard, polls, raised hands, screen annotation — are part of the same session record.

> **The honest trade-off, stated plainly:** If you paste a Zoom, Meet or Teams link, you keep the scheduling, the reminders and the student-facing timetable — but attendance, recording and the room lifecycle are not ours to give you, because we are not in that call. This is not a nudge or a downgrade; it is a fact about where the software is standing. Choose the pasted link with your eyes open, and know that the attendance register stays a manual job.

## Job 2 — the roster (Google Sheets)

This is the one to change first, and it is worth being blunt about the alternative on offer, because there is a claim here we are *not* going to make: there is no live two-way Google Sheets sync. You cannot point Prolaud at a Sheet and have edits flow both ways. If a vendor tells you they have that, ask them what happens when both sides change the same row in the same minute — the answer is usually that one silently wins.

What exists instead is a set of doors in and out that are deliberately boring and predictable.

### Getting your existing sheet in

Export your Sheet as CSV — the default download — and import it. The columns are detected by header name, so `Name`, `NAME` and `Full Name` all resolve to the same field, and email and phone are matched the same way. Before anything is written you get a preview: how many rows are valid, how many are duplicates of students you already have, how many have malformed email addresses, and how many are duplicated inside the file itself. Disposable-inbox domains are flagged too, which quietly catches the fake addresses that accumulate in any sheet that has ever been filled in by a form.

The import is non-destructive. Existing rows are updated, new rows are added, nothing is deleted. Re-running the same file is safe, which matters more than it sounds — the first import is almost never the last, because you will find a column you forgot to map.

![The CSV import screen after a 12-row roster is dropped in: the Email, Name and Phone columns detected automatically, and four counts reading 10 will import, 0 already in workspace, 1 bad email, 1 repeated in file.](https://prolaud.com/blog/four-app-stack/05-import-preview.png)

*A real twelve-row Sheet, including the two things every real Sheet has — a row pasted twice and an address with a typo. Both are named and counted before a single student is written.*

### Keeping a spreadsheet, on purpose

Some jobs genuinely belong in a spreadsheet. Your accountant wants a flat file. You have a pivot table you have been refining for three years. A partner institution wants a monthly extract. None of that is a reason to keep your roster in a Sheet, and all of it is served by an export rather than a source of truth. Students, courses and orders each export as CSV or JSON, and CSV is the format every spreadsheet, every CRM and Mailchimp already understand.

If you want numbers that refresh rather than a file you download, there is an analytics endpoint built for exactly that — a single call returning revenue, gateway fees, net, a daily breakdown, and student counts in a stable JSON shape, designed to be polled nightly by Google Sheets, Looker Studio or a script. It needs the Developer plugin, which is on Pro and above.

And if you want an event to *push* rather than a report to pull, there are nine webhooks: `student.created`, `student.updated`, `student.deleted`, `enrollment.created`, `enrollment.revoked`, `order.paid`, `order.refunded`, `course.published` and `course.archived`. Wire `order.paid` into a Zapier or Make step and your finance sheet appends a row the moment money lands. That is the sane version of "integrate with Sheets": the platform is the record, the sheet is a view.

> **One more small thing:** If the actual job is showing students a spreadsheet — a syllabus grid, a marks table, a practice tracker — you can embed a Google Sheet directly as a lesson resource. Paste the `docs.google.com/spreadsheets` URL and it is recognised and rendered in place. That job never needed migrating at all.

## Job 3 — the money (UPI)

A UPI ID is the most seductive part of the stack, because the money genuinely does arrive, instantly, with no fee. Every argument against it sounds like a platform trying to insert itself into your revenue. So let us be precise about what a bare UPI ID does not do, and then equally precise about what it costs to fix that.

A payment into a personal VPA arrives as a rupee amount and a reference string. It does not carry which course it was for, whether it was the full fee or an instalment, whether the sender is the student or the student's parent paying from their own app, or what should now be unlocked. Every one of those facts has to be reconstructed by a human, usually from a WhatsApp screenshot. Three consequences follow, and every teacher running this stack has met at least one:

1. Access is granted by hand, which means it is also forgotten by hand. The student who paid on Friday evening and got their link on Monday morning is a refund conversation you did not need to have.
2. There is no receipt worth the name, so there is nothing to show a parent who asks, nothing to attach to a GST return, and nothing to point at when a payment is disputed months later.
3. A screenshot is not proof of anything. It takes about forty seconds to edit one convincingly, and a teacher who has been shown a forged payment screenshot never fully trusts the next one.

Checkout in Prolaud runs on Razorpay, and — this is the part that matters — on your own Razorpay account, not ours. The student pays by UPI, card, NetBanking or no-cost EMI at a checkout that looks like your academy, and the money settles from your account to your bank. The platform never sits in the money flow and takes 0% commission on every plan, including the free one. You pay Razorpay their standard processing fee, which is in the region of two per cent — the same fee you would pay them if you integrated Razorpay yourself with no platform at all.

![The Payouts screen, showing a form to connect your own Razorpay account with a Key ID and Key Secret, and the note that payments settle straight to you, that the platform takes 0%, and that it never sees the money or touches settlement timing.](https://prolaud.com/blog/four-app-stack/07-payouts.png)

*Your keys, your account, your settlement timing. The screen says what the commercial arrangement is rather than making you find it in a pricing table.*

What you get for routing UPI through a checkout instead of a VPA is that the payment arrives already joined to everything else. Access is granted the instant the payment confirms. A GST-compliant invoice is generated with the correct CGST/SGST or IGST split. The order appears against the student record, so "what did they pay" is a fact you look up rather than a conversation you have. And `order.paid` fires, so whatever else you have wired up — a sheet, an accounting tool, a welcome sequence — moves too.

> **If you are only going to change one thing:** Change this one. The roster migration saves you time; the payment change saves you money you are currently losing without being able to name it. It is also the least disruptive, because your students already pay by UPI — the only difference is which screen they tap it on.

## Job 4 — the messages (WhatsApp)

WhatsApp is the second app in this stack you should probably keep, and here the nuance is worth the paragraph. There are two entirely different things people mean by "WhatsApp for my class", and conflating them is why this decision goes wrong.

### The group chat is a community, and it is fine

The batch group where students ask each other questions at 11pm, share memes about the syllabus and generally behave like a class — that is a real thing with real value, and no platform's built-in feed replicates it, because the value is that it lives in the app they already have open. If your group is healthy, keep it. Moving a working community is a rare, unforced error.

### The announcement channel is a broadcast system, and it is failing

The other use — "class in 30 minutes, here is the link", "fees due Friday", "recording uploaded" — is not a conversation. It is transactional messaging, and a group chat is a bad delivery mechanism for it. There is no record of who received it, no fallback when someone has the group muted, no personalisation, and the message is buried under forty replies within the hour.

That is the half worth automating. Class reminders in Prolaud fire at three hours, one hour and fifteen minutes before the scheduled start, across in-app notification, email *and* WhatsApp, each carrying the class name, the time, the instructor and the join link. Students who mute the group still get the fifteen-minute one on their phone. You send nothing.

![Scheduling a class with six students selected, and a Notify students panel with three toggles: In-app reading six students will see a bell notification, Email reading it will go to six students, and WhatsApp reading six of six students have a phone number on file.](https://prolaud.com/blog/four-app-stack/08-notify-channels.png)

*The same six students imported from the CSV two steps earlier, now counted per channel — including which of them WhatsApp can actually reach. Nothing was re-entered between the two screens, which is the entire point.*

### What WhatsApp automation actually involves — the unglamorous truth

Automated WhatsApp is not the same as WhatsApp. It runs through Meta's Cloud API, and Meta's rules are strict in ways that surprise people who have only used the consumer app:

- Proactive messages must use a template Meta has approved in advance. You cannot compose freely and send to someone who has not messaged you recently. A class reminder is an approved template with slots for the name, the link and the time — not free text.
- Outside a 24-hour window from the recipient's last message, free-form text is simply dropped. Not bounced, not errored back to you in any obvious way — dropped. Teachers who bolt this together themselves usually discover it weeks later.
- Template variables cannot contain newlines, tabs or long runs of spaces, and are capped at 1,024 characters. A reminder built by pasting a nicely formatted multi-line message into a variable is rejected outright, and the whole send fails rather than degrading.
- Business messaging is metered by Meta, on terms Meta revises periodically. Any article quoting you an exact per-message rupee figure is quoting a number that may already have changed — check Meta's current pricing rather than trusting a blog, this one included.

None of that is a reason to avoid WhatsApp automation. It is a reason to not build it yourself on a weekend, and a reason to be sceptical of any tool that promises "just connect WhatsApp" without mentioning template approval once.

## What actually changes when it is one record

Here is the thing the feature-by-feature comparison misses. The four jobs above are worth consolidating not because each individual version is better — a purpose-built spreadsheet will always beat a roster screen at being a spreadsheet — but because of what becomes *possible* when a student is one record instead of four rows in four systems.

A single student record means enrolment, payment, attendance, submissions and messages hang off the same person. That is what makes the following ordinary rather than heroic: seeing that a student has attended two of the last six classes and reaching out before they quit; knowing which batch has a completion problem and which has a payment problem; issuing a certificate that is contingent on real attendance rather than on you remembering; answering "what did I pay and what did I miss" in one screen, for the student, without opening anything.

None of those are features. They are consequences of the join. You cannot buy them by adding a fifth app.

## A migration order that does not break your term

Do not move everything in one week, and specifically do not move mid-batch. The order below is deliberate: each step is useful on its own, and none of them requires the next one to have happened.

1. Week 1 — payments only. Set up your own Razorpay, put one course behind a real checkout, and take the next new enrolment through it. Nothing about how you teach changes. You get receipts, GST invoices and automatic access on day one, and you find out immediately whether your students are comfortable with the new screen. They will be; they already pay by UPI.
2. Week 2 — the roster. Export your Sheet, import it, check the preview counts against what you expected. Keep the Sheet open in another tab for a fortnight — you will not need it, but you will feel better. Set up a nightly export or an `order.paid` webhook if your accountant wants a live file.
3. Week 3 — reminders. Turn on class reminders and stop typing "class in 30 mins" into the group. This is the change students notice most and thank you for, because the fifteen-minute reminder reaches the ones who muted you.
4. Week 4 or never — the class itself. Run one class in the in-house room, ideally a low-stakes one, and look at what the attendance record and the recording give you afterwards. If the answer is "not enough to justify moving", keep Zoom and stop here. Three of four is a completely legitimate destination.
5. Leave the group chat alone. Whenever you get to it, the answer is usually still: leave the group chat alone.

> **What to do the week before you start:** Clean the Sheet, not the software. Every messy import is a messy sheet: merged cells, two header rows, phone numbers stored as numbers so the leading zero vanished, a "Paid?" column with seven different spellings of yes. Half an hour on the file saves an afternoon on the other side, and you will want a clean roster whatever you decide to run it on.

## When you should keep the stack

Consolidation is not automatically right, and a platform article that cannot name the cases against itself is not worth reading. Keep what you have if any of these describe you:

- You run one batch of fifteen students and you like it that way. The reconciliation problem is a scale problem. At your scale there isn't one, and the honest saving is close to zero.
- Your institution has already bought Zoom, and the decision is not yours. Then keep Zoom — and note that you can still fix the other three jobs, because a pasted Zoom link schedules perfectly well.
- You teach one-off workshops rather than continuing batches. Ongoing student records are worth most when the relationship is ongoing. A single Saturday masterclass genuinely is a payment link and a Zoom call.
- Your spreadsheet is doing something genuinely bespoke. A scholarship-weighting model or a custom rank list is not a roster; it is a calculation. Export to it, don't try to replace it.

If none of those fit — if you are running three or more batches, reconciling on Sundays, and cannot answer a student's question about their own money without opening two apps — then the four-app stack has stopped being the pragmatic choice and started being the thing limiting how many students you can teach.

[Start free](https://prolaud.com/signup) — Take payments on your own Razorpay with 0% commission, import your roster from the Sheet you already have, and keep Zoom and the group chat if they are working. The free plan is enough to run the first batch through end to end.

## Frequently asked questions

### Can I keep using Zoom with Prolaud?

Yes. A scheduled class can point at Zoom, Google Meet, Microsoft Teams or any other URL, and the provider is detected from the link itself — paste a zoom.us link and it is tagged as Zoom automatically. You keep scheduling, the student timetable and the automated reminders. What you do not get with an external link is automatic attendance, the recording in your library, or the room lifecycle the student portal shows, because the platform is not inside that call. Those come with the in-house room.

### Does Prolaud sync with Google Sheets?

Not as a live two-way sync, and we would rather say so than imply otherwise. What exists is a CSV import that auto-detects your name, email and phone columns and previews duplicates and bad addresses before writing anything; CSV and JSON exports of students, courses and orders; an analytics API designed to be polled by Google Sheets or Looker Studio; and nine webhooks including order.paid, which you can wire through Zapier or Make to append rows to a sheet automatically. The platform holds the record, the sheet becomes a view of it.

### How is taking UPI through the platform different from my own UPI ID?

The money arrives the same way and lands in the same bank account — checkout runs on your own Razorpay account and the platform takes 0% on every plan, so the only fee is Razorpay's own processing charge, around two per cent, which you would pay anyway. The difference is what arrives with the money: which course, which student, full fee or instalment. Access is granted automatically the moment payment confirms, a GST-compliant invoice is generated with the correct CGST/SGST or IGST split, and the order is attached to the student record. A bare UPI transfer carries none of that, which is why it turns into a Sunday reconciliation job.

### Will my students have to install another app?

No. They open a link in a browser. If you use the in-house class room there is no meeting app, no meeting ID and no account to create — the join link works from the portal. Payment is the Razorpay checkout they already recognise, over UPI. And WhatsApp reminders arrive in WhatsApp, on the number they already use.

### Do I have to abandon my WhatsApp group?

No, and usually you should not. Split the two jobs the group is doing. The conversation — students helping each other, questions at odd hours — is a real community and moving it is an unforced error. The broadcasts — reminders, fee notices, recording links — are transactional messaging that a group chat delivers badly, with no record of who saw it. Automate that half with class reminders at three hours, one hour and fifteen minutes, and leave the conversation where it is.

### What does automated WhatsApp actually require?

It runs on Meta's WhatsApp Cloud API, which has rules the consumer app does not. Proactive messages must use a template Meta approved in advance — a class reminder is a template with slots for name, link and time, not free text. Outside a 24-hour window from the recipient's last message, free-form text is dropped rather than delivered. Template variables cannot contain newlines and are capped at 1,024 characters. Meta also meters business messaging on terms it revises periodically, so check its current pricing rather than any figure quoted in an article. None of this stops it working; it is the reason not to build it yourself.

### How long does moving off the four-app stack take?

Do it in four steps over four weeks and never mid-batch. Payments first — one course behind a real checkout, which changes nothing about how you teach. Then the roster, by CSV export and import, keeping the Sheet open for a fortnight for reassurance. Then class reminders, which is the change students notice most. Then, optionally, the class itself. Stopping after three is a legitimate outcome if Zoom is working for you.

### Is this worth it if I only have one small batch?

Probably not yet, and it is fair to say so. The four-app stack fails at the seams, and the seams only start costing real money when you are running several batches at once — reconciling payments to names, chasing who attended, and losing the occasional student who stopped paying but never stopped attending. With one batch of fifteen you are the join, and you can hold it in your head. The point at which it stops being free is usually the third or fourth concurrent batch.
