?
Needs attention
Good
Great
All changes saved
Backfilling a pre-existing client? Set "Client since" to when they actually signed on β otherwise it defaults to today. Add their historical total in "Cash collected" and it's added on top of whatever gets logged in Payment history from here on.
Lifetime
Cash collected
β
Gross profit (all-time)
β
Lifetime revenue β expenses
This cycle
Revenue (this cycle)
β
Synced from Asana
Expenses (this cycle)
β
Editor/staff costs attributed
Gross profit (this cycle)
β
Revenue β expenses, this cycle
About this client
Client since
β
Cycle day
β
Client documents
Not linked yet
Add a Drive link above to enable this
Open β
Revenue & expense log β synced from Asana, plus manual entries
Asana-synced rows update automatically and can't be edited here. For anything that never went through Asana β old invoices, one-off costs β add a manual entry below; it counts toward Revenue, Expenses and Gross profit everywhere, including the agency dashboard.
Revenue log
Nothing synced yet.
To log a manual revenue entry, use "+ Log payment" on the Payment History tab β it's added here and to Cash collected together.
Expenses (editor/staff costs attributed to this client)
Nothing synced yet.
Cycle reports β archived automatically
A permanent snapshot of Revenue, Expenses and Gross profit is written here the moment a cycle ends β so this stays the record even after "this cycle" moves on to the next one.
No cycles have closed yet β the first report is written when this client's active cycle rolls over.
Asana cycle sync
Paste each project's Asana link (or its GID) β the "Whitzy Hub β Client cycle runway check" scheduled task reads these to find and build this client's cycles automatically.
Current cycleβ
Highest builtβ
Cycles retainedβ
Next payment dueβ
Active cycle startedβ
These are written by the runway check every day it runs β not editable here, so the Hub can't drift out of sync with Asana. "Active cycle started" is Day 1 for the Cycle Day widget on Home.
Cycle Plan β steady-state plan for Cycle 2 onward
This is what the runway check writes into each cycle's Payment Due task. Change it whenever the price changes for this client β it takes effect for the next cycle built after the change, not retroactively.
This is the plan the "Whitzy Hub β Client cycle runway check" reads to auto-build every cycle after the first. Weekly quantities can vary week to week β leave a week at 0 for a type that skips it. For a type with no fixed count β the client just uploads whatever they've got that week, e.g. Camera roll clips β switch it to "Select weeks (no fixed count)" and tick the weeks it applies to instead of typing a number. Visibility in the Client Portal is inferred automatically from Footage source (client uploads / B-roll are client-facing, admin uploads are internal-only) β nothing to set by hand. Use Custom cycle override below for anything that doesn't fit this pattern at all.
Changing "Weeks per cycle" automatically resizes every video type's weekly quantities to match β nothing to fix up by hand.
Each one becomes a subtask under "Send client monthly content guidance", built fresh every cycle.
Additional tasks
A fully freeform escape hatch for anything that isn't a standard video type β one-off admin tasks, internal payments, no-edit uploads, whatever comes up for this client. Runs alongside the video-types build above, not instead of it β most clients will leave this empty. Visibility is inferred from the task name, same rule as above (a "Footage Uploadβ¦" name is client-facing, an internal task like a payment stays master-project-only) β nothing to set by hand. Not the same as the override below: this adds extra tasks on top of a normal build, the override replaces the whole build.
Generate PDFs
These fields are only used to generate the two PDFs below β the runway check never reads them, so they don't need to be kept in sync cycle to cycle.
Generates straight from this client's details β contact info, Asana and Drive links from Home, and the fields above. No need to save first, but save changes if you want this kept for next time.
Follower count
Manual for now β type in the count whenever you check it. Auto-pulling this from Instagram would need a real Meta API integration, which is its own project.
Video performance log
| Video | Date | Views | Likes | Comments | Shares | Notes |
|---|
Group links however makes sense β one category per row, add as many links under each as you want.
New note
Note history
Total collected
β
All payments, all time
Payments logged
β
Last payment
β
Log a payment
Cycle Payment Due tasks sync here automatically from Asana β use this form only for anything extra: add-ons, one-off work, or anything the client pays for outside the normal cycle billing.
Payment history β cycle payments synced from Asana + manual entries
Save this client first.