How do I import a usage report?
Where a vendor publishes per-person usage, you can upload it to Velory and have it fill the License usage view and the health scores behind it. This is the account-level view from the vendor, as opposed to telemetry, which the tools on your machines report themselves.
It is available on Claude and OpenAI. Other services have no import route, because there is no report to import.
Before you begin
You need Admin access, and a usage export from the vendor as a CSV.
Be aware before you start: importing a CSV can unassign seats. People who have dropped off the report have their licence unassigned automatically, which is intended behaviour but not always what you want on a partial export. Read "What the import changes" below before uploading a file that covers only part of your team.
Run the import
Open the service in Assets → Software, then start the Import Usage flow. It has four steps.
1. Upload
Choose the CSV. Velory shows the file name and row count so you can confirm you picked the right export before going further.
2. Map
Match the file's columns to the fields Velory needs. Velory proposes a mapping from the column names it recognises; correct anything it got wrong. Vendors change their export headers without notice, so check rather than accept on trust.
3. Match employees
Each row is matched to an employee, by work email or by GitHub handle. Every row is labelled:
| Status | Meaning |
|---|---|
| Auto-matched | Velory found the employee — via email or via GitHub handle |
| Manual | You picked the employee yourself |
| Unassigned | No employee matched. Nothing is imported for this row |
Filter by status to work through the unassigned ones, and use the count of unassigned rows against the total as your signal for whether the match is good enough to proceed.
Where a row carries a GitHub handle, you can save it to the employee record with Save GitHub handle, which makes future imports match automatically. Velory warns you first if that handle already belongs to someone else, or would replace a different handle on this employee.
4. Import
Confirm. Velory reports what happened: rows created, updated, skipped and removed, plus any errors.
Two things worth reading in that summary rather than skipping:
- Merged rows. Where a file has several rows for the same employee, only the last row's metrics are kept.
- Dropped rows. A resolved row is dropped when the employee is no longer in scope or the row has no period. Nothing was imported for them.
What the import changes
Beyond filling in usage, a CSV import manages seats: an employee holding a licence who does not appear in the report has that licence unassigned, and the licence records the change so it is traceable afterwards.
That is the point of it — the report is treated as the current truth about who uses the service. It also means a partial export reclaims seats from everybody it omits.
There is one safety catch. If the file resolves to zero users while licences exist, Velory refuses to run the removal step and reports an error instead. An empty report is far more often a bad export than a company that stopped using a tool overnight.
Connecting a usage API rather than uploading a CSV brings in the same data without touching seat assignments.
Good to know
Which services can I do this for?
Claude and OpenAI. Claude can also pull usage automatically once the Anthropic integration is connected, which is less work than a monthly upload; OpenAI is CSV-only.
Should I import a CSV or set up telemetry?
Both, for different reasons. A usage report is the vendor's account-level view and can reconcile who holds a seat. Telemetry is richer — per model, tokens, cache, cost — and is what health scores are actually built from. See What is AI usage telemetry?.
If you only do one, set up telemetry: it needs no monthly upload and covers more.
An import unassigned somebody who still needs the licence.
Reassign them, and check the export covered everyone before the next import. Assignment is covered in How do I assign software to employees?.
Can I undo an import?
No. Usage figures are overwritten and seat changes are applied. The licence's activity log shows what changed, so you can reverse assignments by hand, but there is no single undo.
The mapping step proposed the wrong columns.
Correct them. The proposal is a convenience based on recognisable header names, not a guarantee, and a wrong mapping produces plausible-looking figures that are quietly attributed to the wrong field.
Was this article helpful?