Client Project Database Template
A client project database template is a structured record of every active project at your agency — one row per project, with columns for client, status, budget, hours, invoicing, and next due dates. It gives you a single place to answer the questions that otherwise require opening four different apps: what's in progress, what's near its budget, what's awaiting client input, and what still needs to be invoiced.
The template
One row per project. One database for all active client work. Copy the columns below into a spreadsheet or rebuild as an Ascend Database.
Core columns — Project record
| Column | Type | Description |
|---|---|---|
| Project name | Text | Required. Descriptive enough to identify without the client name (e.g. "Brand refresh Q2") |
| Client | Text / linked record | Required |
| Project type | Dropdown | Website build / Brand identity / SEO retainer / Content retainer / Ad management / Development / Other |
| Status | Dropdown | Discovery / In Progress / Review / Awaiting Client / On Hold / Invoiced / Complete / Archived |
| Priority | Dropdown | High / Normal / Low |
| Start date | Date | When work began or is scheduled to begin |
| Deadline | Date | Agreed delivery or milestone date |
| Brief / scope reference | Text | Link to or filename of the brief or agreed scope document |
| Project lead | Text | Team member responsible |
| Involved team members | Text | Additional people working on this project |
Financial columns
| Column | Type | Description |
|---|---|---|
| Fee type | Dropdown | Fixed price / Hourly / Retainer / Value-based |
| Quoted fee ($) | Number | The agreed project fee or monthly retainer value |
| Estimated hours | Number | Hours budgeted at quote |
| Hours logged | Number | Actual hours tracked to date |
| Hours remaining | Formula | Estimated hours − hours logged |
| Budget used (%) | Formula | (Hours logged ÷ estimated hours) × 100 |
| Invoiced to date ($) | Number | Total invoiced so far — update when each invoice is sent |
| Outstanding balance ($) | Formula | Quoted fee − invoiced to date |
| Invoice status | Dropdown | Not yet invoiced / Deposit invoiced / Partially invoiced / Fully invoiced / Paid in full / Overdue |
| Deposit amount ($) | Number | Discovery deposit or upfront payment (if applicable) |
| Deposit paid? | Checkbox |
Delivery columns
| Column | Type | Description |
|---|---|---|
| Current milestone | Text | What is being worked on right now — free text, updated weekly |
| Next due date | Date | Next deliverable or check-in deadline |
| Revision rounds used | Number | Track against agreed rounds in the scope |
| Revision rounds agreed | Number | From the agreed scope — e.g. 2 |
| Change requests | Number | Count of approved scope change requests |
| Client sign-off received? | Checkbox | Final approval from client before handoff |
Relationship columns
| Column | Type | Description |
|---|---|---|
| Client contact name | Text | Primary contact for this project |
| Client contact email | ||
| Discovery call date | Date | When the scoping call happened |
| Onboarding completed? | Checkbox | Client questionnaire received, access granted, kickoff held |
| Project notes | Long text | Ongoing internal notes — decisions, context, risks |
| Project link / URL | URL | Live site, staging URL, shared folder, or design file link |
Suggested views / filters
| View | Filter |
|---|---|
| Active projects | Filter: Status = In Progress |
| Blocked by client | Filter: Status = Awaiting Client |
| Cash-flow alert | Filter: Invoice status = Overdue |
| Near budget cap | Filter: Budget used > 90% |
| Urgency queue | Sort: Deadline ascending |
| Per-client view | Group by: Client |
Clients reference table (optional companion)
| Column | Type | Description |
|---|---|---|
| Client name | Text | Canonical name — match exactly to the Project database |
| Primary contact | Text | |
| Contact email | ||
| Active since | Date | |
| Billing address | Long text | |
| Default payment terms | Dropdown | Net 14 / Net 30 / Due on receipt |
| Fee type (default) | Dropdown | |
| Notes | Long text | Risk flags, preferences, communication style |
How to use this template
- Create an Ascend Database with the columns above.
- Each project becomes a record — click the record to open a full project page.
- Log time from Ascend's time tracking against the project record; update hours logged as work progresses.
- At invoice time, filter by "Outstanding balance > 0" to see what's still to be billed.
- Link the Projects database to a Clients database for a full agency roster view.
The problem with tracking projects across tools
Most small agencies manage projects across a mix of tools: a task manager for delivery, a time tracker for hours, a spreadsheet for invoicing, and email for everything else. The client project database closes a different gap than any of those individually — it is the roster. The single view that answers "what are we working on right now, for whom, at what budget, and where does each project stand?"
Without it, the answer to "are we profitable this month?" requires pulling three apps together. With it, the answer is one filtered view.
The columns most project trackers skip
Standard project trackers capture status and due dates. The three columns a small-agency project database adds that a task manager typically doesn't:
Budget used (%) — knowing a project is 80% through its timeline means nothing without knowing it's also 95% through its budgeted hours. When both columns are in the same row, the risk is visible before the project goes over, not after.
Revision rounds used vs agreed — scope creep almost always arrives through revisions. Tracking rounds used against rounds agreed — right in the project record — flags the conversation before extra work is done for free. Use the scope change request form template to document any rounds that go over.
Invoice status — the gap between "work delivered" and "invoice sent and paid" is where studio cash flow lives. Keeping invoice status in the same row as delivery status means nothing gets fully delivered and forgotten to bill.
What "each row opens a page" means for a working agency
In a spreadsheet, every project is a row. In a database where each record opens a full page, every project is also a workspace: the place where notes live, where linked time entries sit, where the brief is attached, and where the invoice history is visible. The difference is that the page keeps context intact when the project is referenced months later — the row just holds the numbers.
The agency deliverables tracker template gives the production-level view within each project: what's going out this week, to whom, and where it sits in the approval cycle.
Related templates
Retainer Burn Tracker Template
For ongoing retainer clients — track hours, rollover, and overage month by month.
Agency Deliverables Tracker Template
Production-level view: every deliverable across all clients in one place.
Scope Change Request Form Template
Document approved changes against the project record.
Website Project Handoff Checklist
Close the project record properly — credentials, invoice, and sign-off.
Frequently asked questions
What is a client project database?+
A client project database is a structured record of every active project at an agency — one row per project, with columns tracking client, status, budget, hours logged, invoice status, and key dates. It is the single source of truth for what your agency is working on and where each project stands.
How is a project database different from a task manager?+
A task manager tracks individual to-dos. A project database tracks the project as a unit — its budget, fee, total hours, invoice status, and client relationship. Most agencies need both: a project database for the roster view and a task manager for the detailed work.
What columns should a client project database have?+
At minimum: project name, client, status, deadline, quoted fee, hours estimated, hours logged, and invoice status. Add revision rounds agreed and used, and budget-used percentage, to catch scope creep and over-delivery before they hit the invoice.
Can I use this template in Ascend?+
Yes — a client project database is the native use case for Ascend Databases. Each project is a record; clicking it opens a full project page. Time logged in Ascend flows to the project record, and that data feeds the invoice.
How do I keep the database current without it becoming overhead?+
Make updating it part of the weekly check-in, not a separate admin task. When you log time, update status. When you send an invoice, update the invoice status. Discipline at the record level — 30 seconds per update — keeps the aggregate view accurate.
Should I have one database for all clients or one per client?+
One database for all active projects, filtered by client when needed. One database per client creates an information silo — you can't get the agency-wide view without manually checking each client's database.
How does a project database connect to retainer tracking?+
A project database is for defined engagements with a quoted fee and a delivery end. For ongoing retainer clients, pair it with a retainer burn tracker template that handles contracted hours, rollover, and overage month by month.
Related template
Retainer Burn Tracker Template
For ongoing retainer clients, pair this project database with a burn tracker that handles contracted hours, rollover, and overage month by month.
Make every project record the source of truth.
A copied template works until the data gets stale. In Ascend, each project record holds the hours logged against it, and those hours feed the invoice directly. The free tier covers one client end to end.
Start with Ascend free