Every course creator who tells me they "don't really track numbers" turns out to be tracking numbers anyway, just badly, scattered across three different apps and a mental estimate that's usually off by twenty percent in one direction or another. You don't need a business intelligence dashboard to fix this, you need one Google Sheet that updates itself the moment a sale happens, and about an hour spent wiring it up properly. This is the version of that setup built to survive an actual launch week, not the version that looks good in a screenshot and then quietly stops updating three weeks later because a connection broke and nobody noticed.
Why a spreadsheet still beats a dashboard for one person
A dashboard tool promises polish, charts that update themselves, a login screen that looks serious. What it usually delivers, if you're running this alone, is another subscription, another login, and a rigid structure that can't hold the one weird column you actually need, like which referral partner sent a student or whether a discount code was a personal favor rather than a real campaign. A spreadsheet has none of that polish, but it has everything else. You can add a column in ten seconds, share the exact right tab with your CA at tax time without giving them access to anything else, and build formulas that match how your specific business actually works rather than how a product manager somewhere assumed it would. For a solo creator or a small team, that flexibility beats polish almost every time, at least until the volume genuinely outgrows it.
There's also a currency wrinkle worth planning for from the start if you sell internationally. Razorpay handles domestic payments in rupees while Stripe handles international ones in dollars, and if both feed into the same sheet without a currency column, your revenue totals quietly mix two currencies into one number that means nothing. A simple currency column, plus a separate INR-converted total column using a manually updated exchange rate you refresh monthly, keeps the totals honest without needing anything more sophisticated than a spreadsheet already offers.
Getting sales data into the sheet automatically
The mistake most people make here is entering sales manually, copying numbers from a payment gateway dashboard into a spreadsheet once a week, which is exactly the kind of task that gets skipped the week you're busiest and need the numbers most. The fix is a webhook, the same mechanism a course platform uses to trigger an email or a WhatsApp message the moment enrollment completes, except this time it's pointed at Google Sheets instead. A tool like Zapier, Make, or Pabbly sits in between, listening for the payment success event and writing a new row with the date, student name, course, amount, and payment method within seconds of the sale closing. If you've already set up automations for the rest of your course business, this is usually the same trigger, just pointed at a second destination alongside whatever email or messaging step you already built. The same webhook pattern should also cover refunds, since a sheet that only ever adds rows and never subtracts them will overstate your real revenue every single month, sometimes by a meaningful amount if your refund rate runs anywhere close to what's typical for online courses.
Building a sheet that actually tells you something
The columns matter more than people think. Date, student name, course purchased, amount paid, payment method, discount code used if any, and where the student came from, whether that's Instagram, a referral, or your email list, gives you enough to answer the questions that actually come up: which course is carrying the business, whether a discount code paid for itself, and whether your last launch converted better than the one before it. A running SUMIFS formula by month turns this into a live revenue total without you touching anything, and a simple pivot table breaks it down by course or by source in a couple of clicks. It also helps to keep a separate tab for monthly summaries rather than trying to cram everything into one view, a simple set of SUMIFS formulas keyed to month and course name will give you a rolling revenue picture that updates the instant a new row lands, without you ever opening a calculator or exporting anything into another tool. Naming your columns consistently matters more than it sounds too, since "Amount" can quietly mean gross amount one week and net-of-discount amount the next if two different automations are writing to the sheet, and that kind of drift is exactly the sort of thing that produces a monthly total nobody trusts anymore. Pick one definition per column, write it down somewhere, even just a note in the header cell, and keep every automation writing to that same definition.
| Date | Student | Amount |
|---|---|---|
| 3 Jul | Priya K. | ₹4,999 |
| 9 Jul | Rohan S. | ₹1,999 |
| 14 Jul | Meena T. | ₹9,999 |
Once that structure exists, you can start asking sharper questions, like whether the ₹1,999 tier is actually worth keeping given how it compares in volume to the ₹4,999 one, the kind of decision a pricing framework or a price calculator can help you think through once you have real numbers instead of a guess.
Automating the boring follow ups from inside the sheet
Once sales data lives in a sheet, Google Apps Script can watch it and act on it, no separate tool required, though if you'd rather not maintain a script yourself, the automations already built into your course platform can often cover the same ground. A script that runs every hour can scan for a payment marked failed and trigger a follow up email, or flag a row where a discount code was used more times than intended, or total up the day's revenue and message it to you every evening without you opening the sheet at all. None of this needs to be complicated, a script that's maybe thirty lines long can cover the two or three follow ups that actually matter, which for most solo creators are payment failure retries and an abandoned checkout nudge sent a few hours after someone starts but doesn't finish paying.
Where spreadsheets start to break down
This setup holds up well into the hundreds of sales a month, but it does eventually break down, usually around the point where you have multiple people touching the sheet, or where a formula error silently produces a wrong total and nobody catches it for a week. Apps Script triggers, in particular, aren't built for genuine concurrency, so if two students complete checkout within the same few seconds during a launch spike, you can occasionally get a missed row or a duplicate, small enough to not matter most months but exactly the kind of thing that erodes trust in the numbers if it happens during your biggest week. A creator running a five day launch for a digital marketing cohort once told me their sheet looked fine all week, until the final day's numbers were off by six sales, traced eventually to an Apps Script trigger that had quietly stopped firing after an authorization token expired two days earlier, and nobody was checking the sheet daily enough to notice. That's the actual risk with unattended automation, not that it fails loudly, but that it fails quietly, so a once daily glance at the row count, does today's number look roughly right, catches almost everything before it becomes a real problem. Manual edits creep in too, someone fixes a row by hand instead of through the automation, and the sheet slowly drifts from being a source of truth to being a source of arguments. When that starts happening regularly, it's usually a sign you've outgrown a spreadsheet and need something closer to a proper system, whether that's your course platform's built-in reporting layer or a dedicated CRM built for the volume you're now running.
A spreadsheet won't run your business for you, but it will tell you the truth about it, which course actually sold, what your real conversion rate was on the last launch, whether that discount code paid for itself or just gave away margin. Get that truth updating on its own first, and worry about anything more sophisticated only once the numbers actually demand it.