Assign and revoke licenses
Assign a seat on a software license to a person to record who holds it and consume a seat, then revoke it when the person no longer needs the software to free the seat for someone else. Both actions update the license's seat count and add a dated row to its assignment history, so seat usage stays accurate and you keep an audit trail of every grant and removal.
You work from a license's detail page in the admin console. A license has a fixed number of seats — once they're all used, assigning is blocked until you revoke one or add seats.
:::note Before you begin
- You have an admin role (
admin,it-admin, orsuper-admin). - The license already exists in your inventory. To add one, see Manage licenses.
- The person you're assigning to already has a user account in your workspace. :::
Assign a seat to a person
- Open Software licenses in the sidebar and select the license you want to assign.
- In the right column, find the Assign a seat card. Its subtitle shows how many
seats are free, for example
12 of 50 available. - Set the fields below, then select Assign seat.
| Field | Required | Default | Notes |
|---|---|---|---|
| User | Yes | — | Type a name or email to filter the list. Only active workspace users appear. |
| Access level | No | Empty | Free text up to 64 characters — for example Admin, Standard, or Read-only. Recorded for reference only; it doesn't grant anything in the external app. |
| Account identifier | No | Empty | Up to 191 characters — the user's login in the vendor's app, for example user@example.com. |
| Notes | No | Empty | Free text up to 1000 characters. |
On success, the seat count rises by one, the person appears in the Assigned seats
table, and the page shows License seat assigned. The employee can see the software on
their My software page.
The Assign seat button is disabled when no seats remain. Revoke an active seat or raise Total seats on the license first. See Manage licenses to change the seat count.
To grant the same person seats on several licenses at once, use bulk assign from the license list instead of assigning each one by hand.
Revoke a seat
To free a seat when someone leaves the team or stops using the software, revoke it. This stamps the removal on the assignment record and returns the seat to the pool.
- Open the license and find the person's row in the Assigned seats table.
- In the Actions column, select Revoke, then confirm.
The seat count drops by one, the row leaves the Assigned seats table, and the page
shows Seat revoked. Revoking records the change in OnTrackio and frees the seat — it
doesn't sign the user out of the vendor's app or delete their account there. Remove the
account in the vendor's own admin console as well.
The Assigned seats table on the license page lists only active seats and is best for licenses with a handful of holders. For a license with many seats, select View all users to open the full, searchable list described below.
Review and revoke from the full seat list
For a license with many seats, the View all users link (top of the Assigned seats card) opens a dedicated assignments page. Use it to find inactive seats before a renewal.
The page header shows three figures — Total assigned, Inactive (≥30d), and Available — and the table lists every seat.
| Control | What it does |
|---|---|
| Search by name or email | Filters the table to matching users. |
| Show only inactive (≥30 days) | Limits the list to seats whose last-used date is empty or older than 30 days — the reclaim candidates. |
| Sortable columns | Sort by User, Assigned, or Last used. |
| Export CSV | Downloads the current, filtered list. The file matches what you see on screen. |
| Revoke | Frees that seat, with a confirmation prompt. |
Inactive seats — last used more than 30 days ago, or never — are your reclaim candidates. Filter by Show only inactive, then revoke the seats nobody uses. See Audits and utilization for the recurring review workflow.
Assign seats on several licenses at once
To give one person a seat on several licenses in a single pass, work from the license list rather than each license page.
- Open Software licenses in the sidebar.
- Select the checkbox on each license you want to grant. A selection bar appears at the top of the table showing the count.
- In the selection bar, select Assign to…, search for the person, and pick them.
- Select Apply, then confirm.
Each license is handled on its own: a seat is granted on every selected license that has
room and where the person isn't already a holder. Licenses with no free seats or an
existing active seat for that person are skipped, not failed. The result line reports
both totals, for example Bulk assign: 4 assigned, 2 skipped (1 no seats left, 1 already assigned). The person gets one in-app notification covering the whole batch, and a
software.assigned webhook fires for each license that was granted.
Bulk action on the list supports assign only. To revoke, open each license (or the View all users page) and revoke the seat there.
What changes
Assigning and revoking update three things together:
| Surface | On assign | On revoke |
|---|---|---|
| Seat count | Rises by one; the "used of total" figure updates. | Drops by one; the seat returns to Available. |
| Assigned seats | A new row appears with the user, Since date, Access level, and Account. | The row leaves the active list. |
| Integrations | A software.assigned webhook fires. | A software.revoked webhook fires. |
If your workspace sends outbound webhooks, the software.assigned and software.revoked
events carry the license, user, and actor so downstream systems can react. See
API tokens and webhooks.
Verify
- The seat figure on the license page reflects the change — for example
13/50after assigning,12/50after revoking. - The person appears in (or has left) the Assigned seats table.
- After assigning, the employee sees the software on their My software page.
Troubleshooting
| Symptom | What to do |
|---|---|
| Assign seat is greyed out | Every seat is in use. Revoke an active seat, or raise Total seats on the license, then assign. |
No seats remaining on this license. | The last seat was taken between loading the page and submitting. Refresh the page; the seat count is up to date. |
This user already has an active assignment for this license. | The person already holds a seat. Check the Assigned seats table — there's no need to assign a second one. |
| The person isn't in the User list | They don't have an active user account in this workspace. Add or reactivate the user, then return to the license and assign. |
| Bulk assign reports rows skipped | Skipped licenses had no free seats or the person already held a seat. The result line breaks down the reasons; assigned rows still landed. |
Assignment already revoked. | The seat was revoked elsewhere already. Refresh to see the current seat list. |