# Creative Agency Operations Hub  

## Dashboard (Multi‑Page) – How to Use  
A **four‑page command center** that gives you instant access to the most critical views for a creative agency:  

| Page | What You’ll See | Quick Link |
|------|----------------|------------|
| **Overview** | KPI summary – total revenue, billable hours, active projects, overdue invoices. | `[[Dashboard – Overview]]` |
| **Projects** | Kanban board of every project, filterable by client, type, or status. | `[[Dashboard – Projects]]` |
| **Finance** | Real‑time invoicing, cash‑flow forecast, and profit‑margin calculator. | `[[Dashboard – Finance]]` |
| **Client Portal** | One‑click access to the read‑only portal for the selected client. | `[[Dashboard – Client Portal]]` |

> **Tip:** Duplicate the entire template (Share → Duplicate) before editing. All pages are linked, so any change you make in one place propagates automatically.

### Quick start (2 min)  
1. Duplicate the template into your workspace.  
2. Drag the markdown file into Notion – it will create the four dashboard pages automatically.  
3. Convert each table to a **Full‑page database** (`/table – Full page`).  
4. Set the property types exactly as described in each section below.  
5. Open **Dashboard – Overview** → click any client name to jump to its portal.

---  

## Clients  
Store every client with contact info, contract status, billing preferences, and custom tags. All other pages reference this table.

| Client Name | Contact | Email | Contract Status | Hourly Rate | Preferred Currency | Tags | Auto‑Renew |
|-------------|---------|-------|-----------------|------------|---------------------|------|------------|
| **PixelPulse Studios** | Maya Liu | maya@pixelpulse.com | Active | $120 | USD | `Branding, Retainer` | ✅ |
| **BrightWave Marketing** | Carlos Ramos | carlos@brightwave.io | Pending | $100 | USD | `Social, Campaign` | ❌ |
| **Luna & Co.** | Elena Petrova | elena@luna.co | Active | €90 | EUR | `Web, E‑commerce` | ✅ |

* **Title column:** **Client Name** (Title)  
* **Contact:** Text  
* **Email:** Email  
* **Contract Status:** Select (Active, Pending, On‑hold, Closed)  
* **Hourly Rate:** Number (currency)  
* **Preferred Currency:** Select (USD, EUR, GBP, etc.)  
* **Tags:** Multi‑select (customizable by you)  
* **Auto‑Renew:** Checkbox (if checked, a **Zapier** automation will send a renewal reminder 30 days before contract end)

> **Best practice:** Keep **Contract Status** current – the client portal view automatically hides “Closed” clients.

---  

## Projects  
One row per project, linked to a client, with budget, timeline, status, and auto‑calculated profit margin.  

| Project Title | Client | Project Type | Start Date | End Date | Status | Budget (USD) | Profit Margin % | Revenue Forecast |
|---------------|--------|--------------|------------|----------|--------|--------------|----------------|-------------------|
| **Brand Refresh – PixelPulse** | PixelPulse Studios | Branding | 2024‑07‑01 | 2024‑08‑15 | In Progress | 8,000 | 15 | `prop("Budget (USD)") * (1 + prop("Profit Margin %") / 100)` |
| **Social Media Campaign – BrightWave** | BrightWave Marketing | Social | 2024‑08‑01 | 2024‑09‑30 | Planned | 5,500 | 10 | `prop("Budget (USD)") * (1 + prop("Profit Margin %") / 100)` |
| **Website Redesign – Luna & Co.** | Luna & Co. | Web Design | 2024‑06‑15 | 2024‑09‑01 | Completed | 12,000 | 0 | `prop("Budget (USD)")` |

* **Title column:** **Project Title** (Title)  
* **Client:** Relation → **Clients** (required)  
* **Project Type:** Select (Branding, Social, Web Design, Video, etc.) – add new types in the property settings.  
* **Start Date / End Date:** Date  
* **Status:** Select (Planned, In Progress, Review, Completed, On Hold)  
* **Budget (USD):** Number (currency)  
* **Profit Margin %:** Number (percentage) – default values are pre‑filled per project type but can be overridden.  
* **Revenue Forecast:** Formula (see note below)

> **Tip:** The **Revenue Forecast** formula adds the profit margin you set. Adjust the percentage per project or client.

---  

## Assets & Milestones  
Track deliverables, files, and key milestones. Each row is linked to a project; the **Completed** checkbox drives project‑status automation.

| Asset / Milestone | Project | Type | Due Date | Completed | File (URL) | Owner |
|-------------------|---------|------|----------|-----------|------------|-------|
| **Logo Concepts** | Brand Refresh – PixelPulse | Asset | 2024‑07‑10 | ✅ | https://drive.google.com/… | Maya Liu |
| **First Draft Copy** | Social Media Campaign – BrightWave | Milestone | 2024‑08‑15 | ☐ | — | Carlos Ramos |
| **Final Site Handoff** | Website Redesign – Luna & Co. | Milestone | 2024‑09‑01 | ☐ | — | Elena Petrova |
| **Style Guide PDF** | Brand Refresh – PixelPulse | Asset | 2024‑07‑20 | ☐ | https://drive.google.com/… | Maya Liu |

* **Title column:** **Asset / Milestone** (Title)  
* **Project:** Relation → **Projects** (required)  
* **Type:** Select (Asset, Milestone, Review)  
* **Due Date:** Date  
* **Completed:** Checkbox  
* **File (URL):** URL  
* **Owner:** Person (assigns responsibility)

> **Best practice:** The **Completed** checkbox feeds a rollup that automatically updates the parent project’s **Status** (see Automation section).

---  

## Invoices & Revenue Forecast  
Create an invoice per project phase, auto‑calculate totals, and roll up to the client’s financial view.  

| Invoice # | Project | Client | Issue Date | Due Date | Amount (USD) | Paid | Invoice Link | Payment Method |
|-----------|---------|--------|------------|----------|--------------|------|--------------|----------------|
| INV‑001 | Brand Refresh – PixelPulse | PixelPulse Studios | 2024‑07‑05 | 2024‑07‑20 | 4,000 | ✅ | https://invoice.example.com/INV‑001 | Stripe |
| INV‑002 | Social Media Campaign – BrightWave | BrightWave Marketing | 2024‑08‑10 | 2024‑08‑25 | 2,750 | ☐ | https://invoice.example.com/INV‑002 | PayPal |
| INV‑003 | Website Redesign – Luna & Co. | Luna & Co. | 2024‑07‑30 | 2024‑08‑15 | 6,000 | ☐ | https://invoice.example.com/INV‑003 | Transfer |

* **Title column:** **Invoice #** (Title)  
* **Project:** Relation → **Projects** (required)  
* **Client:** Rollup (Project → Client) – **Read‑only**  
* **Issue Date / Due Date:** Date  
* **Amount (USD):** Number (currency)  
* **Paid:** Checkbox  
* **Invoice Link:** URL  
* **Payment Method:** Select (Stripe, PayPal, Transfer, Other)

> **Tip:** Add a **Formula** column `Status` = `if(prop("Paid"), "Paid", if(prop("Due Date") < now(), "⚠️ Overdue", "Outstanding"))` to filter overdue invoices on the **Finance** dashboard.

---  

## Client Portal (Read‑only)  
A filtered view that each client can access via a shared link. It shows only their projects, assets, and invoices.

1. **Create a new page** called **Client Portal – {Client Name}** (duplicate for each client).  
2. Inside, add three **linked databases**:  
   - **Projects** filtered where `Client` **contains** the current client.  
   - **Assets & Milestones** filtered where `Project → Client` **contains** the current client.  
   - **Invoices** filtered where `Client` **contains** the current client.  
3. Choose the view type you prefer (Table, Board, or Calendar).  
4. Click **Share → Share to web**, toggle **Allow duplicate as template** off, and set **Read‑only** permissions.  
5. Copy the link and send it to the client. Because the filters are based on the relation, clients can never see other clients’ data.

> **Best practice:** Add a **“Contact Us”** button (via a Notion button block) that opens a pre‑filled email to your agency’s support address.

---  

## Automation & Formulas (No‑Code Guidance)  

| Automation | Description | Notion Implementation | External Integration (optional) |
|------------|-------------|-----------------------|---------------------------------|
| **Project Status Sync** | When **all** milestones for a project are marked *Completed*, the project status automatically switches to **Completed**. | 1. In **Assets & Milestones**, add a Rollup `Milestones Completed %` → **Completed** → **Percent checked**.<br>2. In **Projects**, add a Formula `if(prop("Milestones Completed %") == 1, "Completed", prop("Status"))`. | Use **Zapier** → Notion → “Update Project Status” trigger when a Milestone checkbox is toggled (keeps external tools in sync). |
| **Renewal Reminder** | Sends an email 30 days before a contract’s end date if **Auto‑Renew** is checked. | Add a Formula `if(and(prop("Auto‑Renew"), dateAdd(prop("Contract End Date"), -30, "days") <= now()), "🔔 Reminder", "")` in **Clients**. | **Make (Integromat)**: Watch for the formula flag, then send Gmail/Outlook email. |
| **Invoice Overdue Highlight** | Flags invoices past due and unpaid, and pushes a Slack notification. | Formula column `Status` as described above. | **Zapier**: New “Overdue” status → Post to #agency‑finance channel. |
| **Monthly Revenue Dashboard** | Shows expected vs. actual revenue for the current month, with profit margin. | In **Dashboard – Finance**, create a **Table view** of **Invoices** filtered to `Issue Date` within this month. Group by **Paid** and add a **Sum** of **Amount (USD)**. Add a Formula `prop("Amount (USD)") * (1 - prop("Profit Margin %") / 100)` in **Projects** and roll it up to **Clients** → **Projected Profit**. | **Make**: Pull the monthly sum into a Google Sheet for deeper analysis (optional). |
| **Asset Delivery Notification** | When an asset’s **File (URL)** is added, automatically emails the assigned **Owner** with the download link. | Add a Formula `if(prop("File (URL)") != "", "📎 Ready", "")` in **Assets & Milestones**. | **Zapier**: Trigger on “Ready” flag → Send email via Gmail/Outlook. |

> **All formulas** use native Notion syntax (`prop("Field")`, `now()`, `if()`, `dateAdd()`). No custom code is required, but the optional integrations give you push‑notifications and email automation that top competitors lack.

---  

## How to Set Up in Notion  

1. **Duplicate** this template (Share → Duplicate) into your workspace.  
2. **Import** the markdown file: drag it onto a Notion page; Notion will auto‑create the four dashboard pages.  
3. For each table, click **Convert to database** → **Full page**.  
4. **Set property types** exactly as listed under each table (Title, Text, Email, Select, Multi‑select, Relation, Date, Number, Checkbox, URL, Person, Rollup, Formula).  
5. In **Projects**, create Relations to **Clients** and **Assets & Milestones**; enable reciprocal back‑links.  
6. In **Assets & Milestones**, add the Relation to **Projects** and the **Owner** Person property.  
7. In **Invoices**, add the Relation to **Projects**, then a Rollup to pull the client name. Add the **Payment Method** Select and the **Status** Formula.  
8. Build the **Client Portal** pages: duplicate the portal template, replace `{Client Name}` with the actual client, and set the filter values accordingly.  
9. **Configure automations**:  
   - Open the **Automation & Formulas** section, copy each formula into the indicated property.  
   - For external triggers (Zapier/Make), create a new Zap/Scenario, select “Notion – Updated Database Item” as the trigger, and map the fields as described.  
10. (Optional) Turn on **Share → Publish to web** for the **Dashboard – Overview** if you want a public showcase, and enable **Allow duplicate as template** so teammates can copy it.  

Your agency now has a **customizable, automated, multi‑page dashboard** that streamlines project updates, client communication, and financial tracking—all inside Notion. Enjoy the boost in efficiency and client satisfaction!