Snapshot template: what each column means
Three files: one row per clinician, one row per clinician per pay period, one row per month.
This is our own format, and it is the one thing on this site you never have to guess about. If your practice software will not hand you something close to it, the other pages here are about turning what it does hand you into this.
Nothing in it identifies a client. That is deliberate: the format is built so that the file which answers a money question does not have to carry anybody's health information to do it.
Only the clinicians and periods files are needed to see per-clinician numbers. The monthly financials file is what lets the practice-level picture reconcile against your books.
Every column in the file
clinicians.csv
One row per clinician. This is the roster: who they are and how they are paid.
| Column | What it holds |
|---|---|
clinician_id | Decides the moneyRequired. Clinician name or ID. |
status | Decides the moneyRequired. Employment status. active, on leave, departing, or departed. |
billing_rate | Decides the moneyRequired. Billing rate ($/hr). What a clinical hour brings in for this clinician. If you take insurance, use what an hour actually collects on their panel mix, not the billed charge — contracted rates and write-offs mean those differ. |
comp_model | Decides the moneyRequired. Pay model. How this clinician is paid: commission, fee-split, salaried, or hybrid (base + fee split). |
comp_admin_rate | Optional. Admin pay rate ($/hr). Commission model only: hourly pay for admin time. |
comp_clinical_rate | Optional. Clinical pay rate ($/hr). Commission model only: hourly pay for clinical hours above the threshold. |
comp_clinical_threshold_hrs | Optional. Clinical hours threshold. Commission model only: clinical hours per period before the clinical rate applies (default 6). |
comp_fee_pct | Decides the moneyOptional. Fee-split share. Fee-split model only: the clinician's share of their revenue (e.g. 0.40 = 40%). The split applies to whatever basis their contract names — billed or collected. If you take insurance, the safe norm is a share of collections. |
comp_floor_rate | Optional. Admin floor rate ($/hr). Fee-split model only: minimum hourly pay for admin time. |
comp_annual_salary | Optional. Annual salary. Salaried model only: gross annual salary. |
comp_base_annual | Optional. Annual base. Hybrid model only: guaranteed gross annual base, paid on top of the fee-split share. |
comp_split_threshold | Optional. Split threshold ($/period). Hybrid model only: per-period revenue the fee-split applies above (default 0 — split on all revenue). |
er_payroll_tax_rate | Optional. Employer payroll tax. Employer-side payroll taxes as a share of wages (default 7.65%). |
k401_match_rate | Optional. 401(k) match. Employer 401(k) match as a share of wages. |
benefits_mo | Optional. Benefits ($/mo). Employer-paid benefits cost per month. |
supervision_hrs_pp | Optional. Supervision hrs/period. Supervision hours provided to this clinician each pay period. |
supervision_rate | Optional. Supervision rate ($/hr). Fully-loaded cost per supervision hour. |
supervisor | Optional. Supervised by. The name or ID of the clinician who supervises this one, exactly as it appears in the clinician column. Filling this in credits that supervisor for the supervision they provide, so their own numbers reflect the work. Leave it blank when the supervision comes from outside the practice. |
admin_ratio | Optional. Admin-to-clinical ratio. Admin hours per clinical hour (e.g. 1.5 = 1.5 admin hrs for every clinical hr). |
target_hrs_per_period | Optional. Current target hrs/period. Clinical hours you expect this clinician to hit now; a ramping clinician's is lower than their goal. |
fully_ramped_target_hrs | Optional. Fully-ramped target hrs/period. Their steady-state caseload goal once fully ramped. |
clinician_periods.csv
One row per clinician per pay period. This is what they did and what it brought in.
| Column | What it holds |
|---|---|
clinician_id | Decides the moneyRequired. Clinician name or ID. |
period_start | Decides the moneyRequired. Pay period start. |
period_end | Decides the moneyRequired. Pay period end. |
clinical_hours | Decides the moneyRequired. Clinical hours. Billable clinical hours in the period. |
admin_hours | Optional. Admin hours. |
billed_revenue | Decides the moneyRequired. Billed revenue. Revenue billed for this clinician in the period. |
collected_revenue | Decides the moneyOptional. Collected revenue. What actually landed in the bank for this clinician's sessions in the period, after payer adjustments, denials, and write-offs. For a private-pay practice it's close to billed; if you take insurance it's the number that matters, and your EHR's payments report already has it. When this column is filled in, the Snapshot computes that clinician's revenue from it directly. |
financials.csv
One row per month. This is the practice-level total the per-clinician numbers reconcile against.
| Column | What it holds |
|---|---|
month | Decides the moneyRequired. Month. |
total_revenue | Decides the moneyRequired. Total revenue. |
total_expenses | Decides the moneyRequired. Total expenses. |
net_income | Decides the moneyRequired. Net income. |
Which columns decide practice economics
Per-clinician economics need four things and no more: who the clinician is, how they are paid, how many clinical hours they held, and what those hours brought in. Everything else in the roster sharpens the picture rather than making it possible.
What this file cannot tell you
What will bite you
- Revenue is per clinician per pay period, not per session. If your export is per session, it needs to be summed first, which is what the step that removes client data does on its way through.
- Where a column is left blank, an assumption fills it, and the report says which assumption it used.
Drop this exact file here
Drop this exact file in. Nothing in it identifies a client, so it goes straight into the free Snapshot. It runs in your browser and nothing is uploaded.
Sample files: clinicians.csv, clinician_periods.csv, financials.csv
All the export files we have written up · Last checked 2026-08-13