If you are a coach looking for a single place to track clients, schedule sessions, and deliver resources, Coda can replace spreadsheets, document folders, and email threads. This guide walks you through the entire process, from the first login to advanced automation patterns that save hours each week.
Go to coda.io and click “Sign up”. The free tier gives you 1,000 rows per table, 50 doc sections, and basic automations. For most solo coaches this is enough. If you run a group program, the Pro plan ($10 per month) adds unlimited rows and the “Row‑Level Permissions” pack.
Coda offers a “Coaching CRM” starter template. Select New from template → Coaching CRM. The template includes a Client List, Session Log, and Invoice table already linked together.
Open the “Automations” panel, click “Add integration”, and choose Gmail or Outlook. Authorize Coda to send messages. This step enables the welcome‑email automation described later.
Duplicate the “Intake Form” page. In the form settings, set the destination table to Clients. Add fields for:
Publish the form (button “Share”) and copy the embed iframe. Paste it on your website or send the link directly to prospects.
The template already creates a Sessions table with a Client lookup column. When you add a new row, choose the client from the dropdown. Use the Rich Text column for notes, and add a Rating column (1‑5).
In the Invoices table, link each invoice to a client and a session. Use a formula to calculate the amount:
=if([Session Type]="One‑on‑One",150,75)
Then create a view called “Outstanding” filtered where Status != "Paid". This view can be shared with a client‑only link for transparency.
Open Automations → New Automation → “Scheduled”. Set it to run every Monday at 9 am. Add an action “Send email” with the following template:
Subject: Your upcoming coaching week
Hi {Client.Name},
Here’s a quick reminder of your next session on {Client.Preferred session time}.
Please review the attached prep worksheet.
Best,
[Your Name]
The automation pulls data from the Sessions view filtered for the coming week.
Duplicate the “Client Dashboard” page. In the page settings, enable “Only people with access can view”. Then, for each client row, click “Share → Add people”, choose the client’s email, and set the permission to “Can edit”. In the dashboard, add a filter Client = CurrentUser(). Each client sees only their own data.
Add a button column to the Sessions table named “Mark Complete”. Set the button action to:
if(thisRow.Completed,
notify("Already marked"),
modifyRows(thisRow, Completed=true, CompletionDate=Today()))
This gives a one‑click way to close a session and automatically stamps the date.
Coda provides a REST API. Example: push new leads from Typeform into the Clients table.
curl -X POST "https://coda.io/apis/v1beta1/docs/{docId}/tables/{tableId}/rows" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"rows": [{
"cells": [
{"column":"c-Name","value":"John Doe"},
{"column":"c-Email","value":"john@example.com"},
{"column":"c-Goal","value":"Run a marathon"}
]
}]
}'
Replace {docId} and {tableId} with values from the doc URL. This pattern lets you keep a single source of truth.
Use the “Google Calendar” pack. Create a button “Add to Calendar” in the Sessions table with this formula:
GoogleCalendar::CreateEvent(
CalendarId="primary",
Title=Concatenate("Coaching – ", thisRow.Client.Name),
Start=thisRow.Date,
End=DateAdd(thisRow.Date, 1, "hour"),
Description=thisRow.Notes
)
When you click the button, the session appears in both your and the client’s calendar (if they have granted access).
Each extra column adds a slight performance hit. Keep tables narrow: use separate linked tables for “Goals”, “Resources”, and “Feedback”.
If you share a doc with “Anyone with the link can edit”, clients can see each other’s data. Always set the doc to “Anyone with the link can view” and use row permissions for edit rights.
After a client finishes a program, move their rows to an “Archive” table. This frees up rows on the free plan and keeps active views fast.
Manual reminders are easy to forget. Set up at least one scheduled automation for each client segment (new, active, renewal).
After creating an automation, use the “Run test” button. Verify that the email content and data mapping are correct before turning it on for all clients.
| Feature | Coda | Google Sheets | Notion |
|---|---|---|---|
| Relational tables | Yes – native lookups | No (requires scripts) | Limited (linked databases) |
| Row‑level permissions | Yes (Pro) | No | No |
| Built‑in automations | Yes (button packs, scheduled) | Limited (Apps Script) | Basic (Zapier only) |
| Embedded forms | Yes, live to tables | No (needs add‑on) | No |
| Free row limit | 1,000 rows | Unlimited cells | Unlimited blocks |
| Learning curve | Medium | Low | Low |
| Best for | Client portals & automation | Simple lists & budgets | Notes & wiki style |
A free Coda account can store up to 1,000 rows per table. Most solo coaches stay under that limit. Larger teams usually upgrade to the Pro plan for unlimited rows and automation.
Use the built‑in permissions. Set the document to “Anyone with the link can view” and give each client a “Can edit” role only on their own row via the Row‑Level Permissions feature.
Yes. Publish the form, copy the iframe code, and paste it into your site. The form writes directly to the table you created.
The “When a row is added” button pack to send a welcome email, and the “Scheduled” automation to remind clients of upcoming sessions.
Coda adds relational tables, templates, and built‑in automations that Google Sheets lacks. If you need only simple lists, Sheets may be cheaper, but for client portals Coda is more flexible.
With the steps above you can launch a professional coaching system in Coda within a day. Start with the template, customize the intake form, and add a few automations. As you grow, layer in portals and API syncs. The result is a single, secure doc that saves you time and keeps clients happy.