Freelancers can turn Coda into a single hub for projects, invoices and client portals. This step‑by‑step guide shows you how to build a project tracker, generate invoices, and share a live client view—all without writing code. Follow the numbered steps, copy the example tables, and you’ll have a working system in under an hour.
Go to coda.io and click “Sign up”. Use Google or an email address. The free tier gives you 1,000 rows per doc and basic packs.
In the dashboard, click “New doc” → “Template gallery” → “Project Management”. This template includes a task table, timeline view and status column.
Click the document title at the top and type Freelance Hub. This name appears in your browser tab and in shared links.
Open the Tasks table. Add three columns:
Client (text) – the name of the client.Rate ($/hr) (number) – your hourly rate for that client.Billable Hours (number) – hours you log each day.=If([Status]="Complete", [Billable Hours]*[Rate ($/hr)], 0)
Place this formula in a new column called Earned. It calculates revenue only for completed tasks.
Click “+ Add view” → “Table” and name it Client Summary. Group rows by Client and add a summary row that totals Earned.
In the original Tasks view, add a filter: Status != "Cancelled". This keeps the list clean.
Make a new table called Invoices with columns:
Invoice # (auto‑number)Client (lookup from Tasks → Client)Period (date range)Total ($) (formula)Paid (checkbox)=Sum(Filter(Tasks, Client=thisRow.Client AND [Date] >= thisRow.[Period].Start AND [Date] <= thisRow.[Period].End), Earned)
This pulls every earned amount for the selected period and client.
Insert a Button column called PDF with the action “Export as PDF”. Set the target view to a hidden “Invoice Layout” page that formats the data in a printable style.
Add a new page named Client Portal. Insert a Table view of Invoices and set a filter: Client = thisDoc.User(). This shows only rows that match the logged‑in user.
Open the doc settings → “Sharing”. Turn on “Row‑level permissions”. For the Invoices table, set Client column as the “User” column. Now each client sees only their invoices.
Copy the page URL and send it to the client. They can view invoices, mark them as paid, and add comments without editing anything else.
Click “+ Automation” → “When a row matches condition”. Choose Invoices where Paid = false AND Due Date = Today().
Set the action to “Send email”. Use the following template:
Subject: Invoice {{thisRow.[Invoice #]}} is due today
Body:
Hi {{thisRow.Client}},
Your invoice for {{thisRow.Period}} totals ${{thisRow.[Total ($)]}}. Please pay by end of day.
[Pay now]({{thisRow.[Payment Link]}})
Replace {{thisRow.[Payment Link]}} with a Stripe or PayPal URL stored in a hidden column.
Mark an invoice as unpaid with a due date of today. Click “Run now” on the automation to confirm the email is sent.
| Feature | Coda | Notion | Airtable |
|---|---|---|---|
| Row‑level permissions | Yes (Pro) | No | Limited (Enterprise) |
| Built‑in formulas | Excel‑style | Basic | Formula fields |
| Automation runs | Unlimited (Pro) | 10/mo (Free) | 100/mo (Free) |
| API access | Full REST (Free) | Beta (Limited) | REST + Scripting |
| Mobile app | iOS & Android | iOS & Android | iOS & Android |
| Pricing for freelancers | $10/mo (Pro) | $8/mo (Personal Pro) | $12/mo (Plus) |
For freelancers who need client‑specific views and unlimited automations, Coda’s Pro plan offers the best value. Notion is cheaper but lacks row‑level security. Airtable shines with rich field types but caps automation runs on lower plans.
A free Coda account is enough for a single client or small project. For unlimited docs, automation, and API access, the Pro plan ($10/month) is recommended.
Yes. Use the Stripe Pack or a simple embed block with the invoice URL. The data syncs automatically.
Coda uses TLS encryption in transit and at rest. You can set row‑level permissions so each client only sees their own rows.
The iOS and Android apps mirror the desktop experience. All tables, buttons and formulas work offline and sync later.
Yes. Build a simple automation that triggers an email when the “Due Date” column passes and the “Paid” box is unchecked.
With these steps you now have a live project tracker, instant invoice generator, and secure client portal—all inside Coda. Keep the doc updated, add new automations as you grow, and you’ll spend less time on admin and more time on billable work.