The Links screen
Short.io → Links lists every short link the plugin manages, with its destination, the entry it belongs to, click counts and creation date.
Click counts are snapshots
The numbers here come from a local snapshot, not a live API call. That is deliberate: statistics live on a separate Short.io host, and a fifty-row page would otherwise be fifty HTTP requests before it could render.
The snapshots keep themselves current. Opening this screen queues a background job for any row whose figures have aged past Statistics cache (15 minutes by default), so the numbers are refreshed by Craft's queue rather than by anything you have to schedule. Rows always render immediately from the snapshot, which means a count can lag a few minutes behind Short.io.
Opening an entry refreshes that entry's row as well: the sidebar fetches live figures anyway, so the snapshot is written from the same call.
There is still a command for doing the lot in one go - after short-io/adopt, say, or if you would rather run it from cron:
php craft short-io/links/refresh-statsIt works oldest-first and throttles itself, so it is safe to run against a large account.
Finding a link
The screen is one of Craft's admin tables, so it behaves like the Sections or Fields listings: search across paths, short URLs, destinations and titles, sort by short link, clicks or creation date, and page through the results.
Actions
Re-sync rebuilds a link from its entry - useful after changing the destination template, or when someone has edited a link by hand in the Short.io dashboard. Tick one or more links and press Re-sync above the table.
Delete is the ✕ at the end of each row. It asks first, then removes the link from Short.io and from Craft. The short URL stops working immediately.
Both need the Create, rename and remove short links permission; without it the checkboxes and the delete buttons aren't rendered.
Permissions
There are three gates, and they stack. All of them live under Settings → Users → (group or user) → Permissions.
| Permission | Grants | Provided by |
|---|---|---|
| Access Short.io | Reaching the plugin's control panel section at all | Craft |
| View short links | The Links screen, the entry sidebar panel, and QR images | This plugin |
| Create, rename and remove short links | Editing the path field in the sidebar, and the re-sync and delete actions | This plugin |
Access Short.io is Craft's own accessPlugin-short-io permission, which every plugin with a control panel section gets automatically. Without it the section is unreachable even for a user who has View short links.
Without View short links, the Short.io nav item is hidden entirely, and the entry sidebar panel is not rendered.
Create, rename and remove short links is nested under View short links, so granting it implies the other.
What each level can actually do
| Nobody | Viewer | Manager | Admin | |
|---|---|---|---|---|
| Short.io nav item | hidden | visible | visible | visible |
| Links screen | 403 | yes | yes | yes |
| Settings screen | 403 | 403 | 403 | yes |
| Entry sidebar panel | not rendered | read-only | editable | editable |
| Re-sync / delete a link | 403 | 403 | yes | yes |
| QR images | 403 | yes | yes | yes |
Settings are admin-only regardless of the plugin permissions, because they hold the API key.
Enforcement is server-side
The sidebar's path field is rendered read-only for users without the manage permission, but that is only markup. The save handler independently ignores a posted shortIoPath from anyone who lacks the permission - so hand-crafting a request cannot rename a link, and cannot delete one by posting an empty path.
Automatic behaviour is unaffected: an editor without the manage permission still gets a short link created for their entry, they just cannot steer it.
Orphans
Deleting an entry deletes its link row too. If rows are ever left behind - a raw SQL purge, say - clean them up with:
php craft short-io/links/prune --dry-run
php craft short-io/links/prune