Invoices, Clients & Deals
Three tabs built around your active work: ๐ฐ Invoices for billing, ๐ Client Tracker for engagement hours, and ๐ Biz Dev for your sales pipeline.
Invoices
How Invoicing Works
Water LLM generates professional PDF invoices from a Google Doc template, saves them to your Drive, and creates a Gmail draft with the PDF attached — ready for you to review and send. Nothing is sent automatically.
-
1Enter invoice details in the ๐ฐ Invoices sheet (or use the Invoice Composer)
-
2Water LLM copies your Google Doc template from
Water LLM/Templates/ -
3Replaces every
{{placeholder}}tag with your actual invoice data -
4Converts the filled document to a PDF and saves it to
Water LLM/Invoices/in your Drive -
5Creates a Gmail draft to the client with the PDF attached
-
6Writes a clickable link back to the Invoice Record column in your sheet
Creating an Invoice
-
1Go to
-
2Select a contact from the dropdown — autocomplete searches by name, email, or company
-
3Fill in line items — product names autocomplete from your โ๏ธSettings product list
-
4Click Create Invoice — PDF generated, Gmail draft created, link written back to sheet
-
1Fill in invoice details directly in the ๐ฐ Invoices sheet
-
2Go to
-
3Enter the Invoice Number when prompted
When you move a deal to a terminal stage (e.g., "Closed Won") on the Kanban board, a button appears to launch the Invoice Composer pre-filled with the deal's contact and value data.
If you regenerate an invoice after correcting an error, Water LLM creates a new versioned PDF rather than overwriting:
- First generation:
Invoice 1001.pdf - Second:
Invoice 1001 v2.pdf - Third:
Invoice 1001 v3.pdf
Up to 99 versions per invoice number are supported.
The Invoice Template — Placeholders
Your invoice template is a Google Doc at Water LLM/Templates/Template Invoice.
Any text wrapped in double curly braces {{like this}} is replaced with the
real value from your invoice data when a PDF is generated.
To customize: open the Google Doc in Drive, edit the layout and formatting,
and keep the {{placeholder}} syntax exactly as shown — it's
case-sensitive, spaces included.
| Placeholder | What It Becomes |
|---|---|
{{Invoice Number}} | The invoice number |
{{First Name}} / {{Last Name}} | Client's name |
{{Company}} / {{Email}} | Client's company and email |
{{Date Sent}} | The date from the Date Sent column |
{{Item 1 Name}} | Line item 1 name (same pattern for Items 2–4) |
{{Item 1 Cost Per Unit}} | Price per unit |
{{Item 1 Number of Units}} | Quantity |
{{Item 1 Discount}} | Discount percentage |
{{Total for Item 1}} | Line item total |
{{Total Invoiced}} | Grand total |
{{Costs Reimbursed by Client}} | Reimbursable expenses |
{{Net Profit}} | Total minus non-reimbursable costs |
| Placeholder | What It Produces |
|---|---|
{{Today}} | Today's date at generation time |
{{Today+30}} | 30 days from today (+7, +14, +30, +60, +90 supported) |
{{InvoiceDate+0}} | The invoice date (Date Sent) |
{{InvoiceDate+30}} | Payment due 30 days after invoice (+0, +7, +14, +15, +21, +30, +45, +60, +90) |
If an item's Name is blank, that entire line item is stripped from the PDF. Your invoice only shows items with values — no need to add dummy text for unused line item slots.
If your template is missing or corrupted:
Invoice Reminders
Water LLM can automatically draft payment reminder emails at milestones relative to the invoice due date.
| Default Milestone | What Gets Drafted |
|---|---|
| 7 days before due | Friendly "coming up" notice |
| Due date | "Payment due today" reminder |
| 14 days overdue | First follow-up |
| 30 days overdue | Escalation reminder |
Every Monday you also receive an Aged Receivables digest listing all unpaid overdue invoices.
Configure reminders at — set payment terms, customize milestone days, toggle PDF attachment, and turn the feature on. Enable the automated job in โ๏ธAutomation row 14.
Common Invoice Issues
| Problem | Fix |
|---|---|
| "Invoice Template not found" | The template must be named Template Invoice in Water LLM/Templates/. Go to to restore it. |
| Placeholder shows as literal text in the PDF | The placeholder in your Google Doc must match the column header exactly — case-sensitive, spaces included. Check for extra characters inside {{ }}. |
| Line item missing from PDF | Each line item needs at minimum an Item Name. Blank names are stripped automatically. |
| Can't find the Gmail draft | Check Gmail Drafts. If it's missing, the Email column in the invoice row may be blank or contain an invalid address. |
| Unresolved placeholder warning | A {{placeholder}} in your template doesn't match any column header. Check for typos in the template. |
Client Tracker
What the Client Tracker Does
The ๐ Client Tracker tab is for coaches and consultants who sell packages of hours or run ongoing engagements. It connects to your Google Calendar and automatically calculates how much time you've spent with each client.
For each engagement it calculates:
- Total meeting hours (from Google Calendar, filtered to your date range)
- Hours remaining against contracted hours
- 30-day velocity — how many hours per month you're averaging
- Risk flags: ghosting, renewal due, overuse
- Lifetime value based on rate and hours
Setting Up a Client
Each row is one engagement. Use the Client Tracker Composer () for a guided form, or enter directly into the sheet.
| Column | What to Enter | Required? |
|---|---|---|
| Client Name | Display name for this engagement | Yes |
| Their email — must match the address on Google Calendar invites exactly | Yes | |
| Start Date | When the engagement began — only meetings on or after this date are counted | Yes |
| End Date | When it ends. Leave blank for ongoing engagements. | No |
| Hours Contracted | Total hours in the package. Leave blank for retainers with no cap. | No |
| Rate Or Project Value | Session rate or total project value — used for Lifetime Value calculation | No |
| Client Status | Active, Finished, or Paused. Set to Finished or Paused when done — clears risk flags. | Yes |
Water LLM finds meetings by scanning your Google Calendar for events where the client's email appears in the guest list. If they RSVP from a different email address than what you entered here — for example, their personal Gmail instead of their work address — those meetings won't be counted.
If meeting time shows 0 hours: check whether their calendar invites come from a different address, and update the Email column to match.
Auto-Calculated Columns
These are computed by Water LLM. Do not edit them manually.
| Column | How It Works |
|---|---|
| Total Meeting Time in Date Range | Sum of all Google Calendar event durations where the client's email is in the guest list, from Start Date to End Date (or today). Excludes declined events and "Free" events. |
| Hours Left | Hours Contracted minus Total Meeting Time. Shows "N/A" if no contracted hours. |
| Time Spent / 30 Days | Rolling 30-day meeting hours. Shows your current pace with this client. |
| Lifetime Value | Rate ร total hours, or the project value if set. |
| Client Disappeared? |
Reads Last Contact from the CRM: ๐ฉ GHOSTING — no contact in 28+ days, no future meeting โ ๏ธ RE-ENGAGE — 21–28 days since last contact, no future meeting ๐ BOOKED — a future meeting exists |
| Renewal Risk? |
๐ด OVERUSE — meeting time exceeds contracted hours ๐ RENEWAL DUE — fewer than 2 hours remaining โ ๏ธ LOW HOURS — 2–5 hours remaining |
Risk flags (GHOSTING, OVERUSE, RENEWAL DUE) are cleared automatically when a client is set to Finished or Paused. Time Spent is still calculated within the date range, but the alerts stop firing. When you mark them Active again, all metrics recalculate.
How Meeting Time Is Counted
Water LLM scans your Google Calendar for events where the client's email address is in the guest list.
| An event IS counted ifโฆ | An event is NOT counted ifโฆ |
|---|---|
| The client is an attendee and did not decline | The client declined the invitation |
| You are the organizer and the client is listed as a guest | The event is marked "Free" (transparent) in Google Calendar |
| The event falls within the Start Date to End Date window | The event is outside the date range |
All-day events are skipped by default (counted as 0 hours). To count them, go to and set a value for "All-Day Event Hours" (e.g., 8 to count each as a full day).
A 45-minute meeting = 0.75 hours. A 90-minute session = 1.5 hours. All totals are rounded to two decimal places.
Client Tracker Troubleshooting
| Problem | What to Check |
|---|---|
| Meeting time shows 0 hours |
|
| "GHOSTING" flag but you spoke recently | The flag reads from CRM Last Contact. Run Communication Refresh to update it with recent emails or meetings. |
| "OVERUSE" for a flexible engagement | Leave Hours Contracted blank for retainers or flexible work. This shows "N/A" for Hours Left and disables the overuse flag. |
Biz Dev & Sales Pipeline
How the Pipeline Works
The ๐ Biz Dev tab tracks prospects and deals before they become active clients. Each row is one deal. The pipeline stages are fully customizable — define the stages that match your sales process.
| Column | What It Is |
|---|---|
| Deal ID | Auto-generated (D-001, D-002โฆ) |
| Contact ID | Links to a CRM contact |
| First Name / Last Name / Company / Email | Synced from the linked CRM contact |
| Stage | Current pipeline stage (from your defined stages) |
| Est. Value | Estimated deal value — used in revenue forecasting on the Dashboard |
| Expected Close | When you expect the deal to close |
| Deal Notes | Your notes about this deal |
| Stage Date columns | Timestamps recording when the deal entered each stage |
The Kanban Board
Open the visual view of your pipeline via .
- Drag and drop — move deal cards between stage columns
- Stage timestamps — when you move a deal to a new stage, the date is automatically recorded. Move a deal backward and future stage dates are cleared.
- Deal aging — cards show how long since the last stage update
- Quick actions — edit deal details, delete, or auto-invoice from a closed deal
- Auto-invoice — when you move a deal to a terminal stage (like "Closed Won"), click to launch the Invoice Composer pre-filled with the deal data
Customizing Pipeline Stages
Define your pipeline stages in โ๏ธSettings, column K (rows 27–35). You can set up to 9 stages. Examples:
- Lead โ Discovery โ Proposal โ Negotiation โ Closed Won โ Closed Lost
- Initial Contact โ Qualified โ Demo โ Trial โ Contract โ Won โ Lost
Terminal stages: The last N stages in your list can be configured as terminal (e.g., "Closed Won" and "Closed Lost"). Terminal stages trigger the auto-invoice option on the Kanban board and are treated as final states in revenue forecasting.
Contact data on deals (name, company, email) comes from the CRM. If you update a contact's details, go to to pull the latest into your pipeline.

