Skip to content

Settings

Settings live at Short.io → Settings. Every one of them can be overridden in config/short-io.php; a setting that is overridden shows as read-only in the control panel.

Copy vendor/coysh-digital/craft-short-io/src/config.php to config/short-io.php to start.

Connection

SettingNotes
API keyYour Short.io secret key. Enter $SHORT_IO_API_KEY rather than the key itself.
DomainThe Short.io domain links are created on. Once a valid key is saved, your domains appear as suggestions - or enter $SHORT_IO_DOMAIN to read it from an environment variable.

The field suggests the domains on your account, and also accepts an environment variable reference. That combination matters on a multi-domain account: a plain dropdown could not hold $SHORT_IO_DOMAIN, so staging and production could not use different domains from the same deployed code.

The domain is validated against your account, but only when the account's domain list can actually be fetched. If there is no key yet, or Short.io is unreachable, validation stands aside rather than blocking you from saving the screen at all.

SettingDefaultNotes
SectionsAllOnly sections with URLs are listed. Overridable per environment with SHORT_IO_SECTIONS.
SitesEvery siteOr only the primary site, on a multi-site install.
Create links automaticallyOnOff makes short links opt-in: nothing happens until an editor types a path.
Path prefixPrepended to automatic paths, e.g. blog/.
Redirect type302301 is cached hard by browsers, which makes a link effectively permanent.
Use the entry titleOnSends the title to Short.io so links are recognisable in its dashboard.
TagsApplied to every link the plugin creates.
Destination templateAn object template; the resolved entry URL is {url}. For anything campaign parameters can't express.

Campaign tracking

A default for each of utm_source, utm_medium, utm_campaign, utm_term and utm_content. Blank means the parameter is not added. Each may be an object template, so a default can vary per entry - {slug} for a campaign name, say.

Any entry can override these, or switch them off for itself, from its sidebar. See Campaign tracking.

Lifecycle

SettingDefaultNotes
When an entry is unpublishedExpire the linkOr delete it, or leave it alone.
When an entry is deletedExpire the linkApplies to soft deletes. A permanent delete always deletes the link.
Expired link destinationSite home pageWhere an expired link sends visitors.
If Short.io is unreachableSave anyway and retry laterApplies to outages, timeouts and rate limits only. Needs the queue running.
Protect existing linksOnNever rename, repoint or take over a link the plugin didn't create. See Sharing a domain.
Adopt existing pathsOffTake over an unclaimed link sitting at a path you want. Ignored while the above is on.
Sync on console commandsOffLeave off unless you want resave/entries to sync links.

How "expire" actually behaves

Archiving a link on Short.io does not stop it working. Their documentation is explicit that an archived link "remains accessible and functions as intended" - archiving only hides it from the dashboard. So archiving an unpublished entry's link would leave it redirecting cheerfully to a 404.

The plugin sets an expiry and a fallback destination instead, which does stop it, keeps the path reserved, and is undone the moment the entry goes live again.

Link expiry is a paid Short.io feature. On a plan without it the API answers 402, and the plugin falls back to repointing the link at the fallback URL. The visible outcome is the same - visitors no longer land on a missing page - and it is just as reversible, because the entry's own URL is still on the plugin's record ready to be restored.

QR codes

SettingDefaultNotes
Show in the entry sidebarSmall iconOr a full image, or nothing.
StylingSize, foreground, background, format. Blank cells use the domain's own settings.
Size is a scale factor from 1 to 99, not a pixel count. There is no margin option - Short.io
does not have one, and colours are sent as plain hex without a #. See
QR codes.

Clicks and advanced

SettingDefault
Show click countsOn
HTTP timeout10 seconds
Statistics cache900 seconds
Domain cache3600 seconds
QR cache2592000 seconds (30 days)

The QR cache holds the image URL for a link, which is why it is so long - the image itself is cached by browsers and CDNs like any other remote image.

Digital help you can trust.