Title: Cortaito
Author: Koke Pérez
Published: <strong>September 23, 2026</strong>
Last modified: September 23, 2026

---

Search plugins

![](https://ps.w.org/cortaito-url-shortener/assets/banner-772x250.png?rev=3709995)

![](https://ps.w.org/cortaito-url-shortener/assets/icon-256x256.png?rev=3709995)

# Cortaito

 By [Koke Pérez](https://profiles.wordpress.org/kokenet/)

[Download](https://downloads.wordpress.org/plugin/cortaito-url-shortener.zip)

 * [Details](https://wordpress.org/plugins/cortaito-url-shortener/#description)
 * [Reviews](https://wordpress.org/plugins/cortaito-url-shortener/#reviews)
 *  [Installation](https://wordpress.org/plugins/cortaito-url-shortener/#installation)
 * [Development](https://wordpress.org/plugins/cortaito-url-shortener/#developers)

 [Support](https://wordpress.org/support/plugin/cortaito-url-shortener/)

## Description

Cortaito lets you create short links directly from your WordPress dashboard, track
every click and see where your visitors come from — without sending data to any 
third-party shortening service.

**Features:**

 * Create short links with auto-generated or custom codes
 * Click statistics: country, city, device, browser and referrer
 * Optional link expiration date
 * Works on your main domain via `/go/CODE` — no extra subdomain needed
 * Optional custom subdomain (e.g. `go.yourdomain.com`) configurable from the Settings
   page
 * Geolocation via ip-api.com (can be disabled from Settings)
 * Clean uninstall: removes all tables and options

**External services:**

When geolocation is enabled (on by default), the visitor’s IP address is sent to**
ip-api.com** to retrieve country and city data. No other personal information is
transmitted. You can disable this at any time from _Cortaito  Settings_.

 * ip-api.com service: https://ip-api.com
 * ip-api.com privacy policy: https://ip-api.com/docs/legal

## Screenshots

[⌊Links list with click counts and copy button.⌉⌊Links list with click counts and
copy button.⌉[

Links list with click counts and copy button.

[⌊New link form with optional custom code and expiry date.⌉⌊New link form with optional
custom code and expiry date.⌉[

New link form with optional custom code and expiry date.

[⌊Click statistics detail view.⌉⌊Click statistics detail view.⌉[

Click statistics detail view.

[⌊Settings page with subdomain and geolocation options.⌉⌊Settings page with subdomain
and geolocation options.⌉[

Settings page with subdomain and geolocation options.

## Installation

 1. Upload the `cortaito` folder to `/wp-content/plugins/`.
 2. Activate the plugin through the _Plugins_ menu.
 3. Go to **Cortaito  New link** to create your first short link.
 4. _(Optional)_ Go to **Cortaito  Settings** to configure a custom subdomain.

## FAQ

### Do I need a subdomain to use Cortaito?

No. By default, short links use the `/go/CODE` path on your main domain (e.g. `https://
yourdomain.com/go/abc123`). A custom subdomain is optional.

### How do I set up a custom subdomain?

Go to _Cortaito  Settings_, enter your subdomain (e.g. `go.yourdomain.com`), save,
and then point that subdomain to your server via a DNS A or CNAME record. The plugin
will guide you through the .htaccess update.

### Can I disable geolocation?

Yes. Go to _Cortaito  Settings_ and uncheck _Enable geolocation for click tracking_.
You can also use the `cortaito_enable_geolocation` filter in your theme or a custom
plugin.

### Is click data stored locally?

Yes. All click data is stored in your WordPress database. The only external request
made (when geolocation is enabled) is to ip-api.com to look up the visitor’s country
and city.

### What happens when I delete the plugin?

All plugin data (tables, options) is removed automatically on deletion.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Cortaito” is open source software. The following people have contributed to this
plugin.

Contributors

 *   [ Koke Pérez ](https://profiles.wordpress.org/kokenet/)

[Translate “Cortaito” into your language.](https://translate.wordpress.org/projects/wp-plugins/cortaito-url-shortener)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/cortaito-url-shortener/),
check out the [SVN repository](https://plugins.svn.wordpress.org/cortaito-url-shortener/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/cortaito-url-shortener/)
by [RSS](https://plugins.trac.wordpress.org/log/cortaito-url-shortener/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.7.3

 * Improved: Removed every remaining inline `style=""` attribute from the admin 
   screens (settings, links list, stats and new-link form); all rules now live in`
   assets/css/admin.css`, which is already enqueued via `wp_enqueue_style()`.
 * Fixed (accessibility): The hidden page `<h1>` on each admin screen now uses WordPress
   core’s `.screen-reader-text` class instead of `style="display:none"`, so it stays
   available to screen readers instead of being hidden from everyone.

#### 1.7.2

 * Fixed: Removed the duplicate “Tested up to” header from the plugin’s main PHP
   file; it is now declared only in readme.txt, as required by the Plugin Directory
   guidelines.
 * Fixed: The consent/redirect notice page no longer prints a raw `<style>` block;
   its CSS is now registered and enqueued via `wp_register_style()` / `wp_add_inline_style()`.
 * Changed: The admin menu item no longer uses a crowded top-level position (20);
   it now sits near the bottom of the admin menu, below the core WordPress items.
 * Removed: Compiled `.po`/`.mo` translation files are no longer bundled in the 
   plugin package, since translations are managed automatically through translate.
   wordpress.org. The `.pot` template remains for reference.

#### 1.7.1

 * Fixed: Deactivating the plugin no longer leaves a stray empty `# BEGIN Cortaito`/`#
   END Cortaito` block in `.htaccess` when the subdomain rule was never enabled.
 * Fixed: The `.htaccess` block is now fully removed (markers included) on deactivation
   and on uninstall, instead of being left behind empty. Any duplicate leftover 
   blocks from previous versions are also cleaned up automatically.
 * Added: `uninstall.php` now removes the `.htaccess` block too, as a safety net
   for when the plugin is deleted without being deactivated first.

#### 1.7.0

 * Fixed: “Tested up to” now reflects an actual released WordPress version.
 * Fixed: Admin CSS/JS moved from inline `<style>`/`<script>` output to properly
   registered files via `wp_enqueue_style()`/`wp_enqueue_script()`.
 * Improved: Completed full i18n coverage — every remaining hardcoded admin string(
   menu labels, headings, table columns, form labels, notices) is now translatable.
 * Added: English (en_US) translation included in `/languages`, since the plugin’s
   source strings are written in Spanish.
 * Added: Explicit `load_plugin_textdomain()` call so translations load correctly
   outside of WordPress.org hosting.

#### 1.6.1

 * Fixed: .htaccess block status badge now correctly reflects real file content 
   for any domain.
 * Fixed: Admin notices no longer appear inside the plugin header card.
 * Fixed: Text Domain updated to match plugin slug (cortaito-url-shortener).
 * Improved: Admin UI visual consistency aligned with Niquelao Image Optimizer.
 * Improved: uninstall.php now removes all plugin options on deletion.

#### 1.5

 * Links now work on any domain via /go/CODE path — no hardcoded domain.
 * Added Settings page: configurable subdomain and geolocation toggle.
 * Geolocation now uses HTTPS and can be disabled; documented as external service.
 * Replaced str_shuffle() with random_bytes() for secure code generation.
 * Full i18n support: all strings wrapped in translation functions (Text Domain:
   cortaito).
 * Added uninstall.php for clean removal.
 * Added wp_cache_get/set on DB queries.
 * Fixed: str_shuffle deprecated in PHP 8.3.

#### 1.4

 * Added link expiration date support.
 * Improved click tracking with referrer and browser detection.

#### 1.3

 * Added geolocation via ip-api.com.
 * Added device detection (Mobile / Tablet / Desktop).

#### 1.2

 * Added click statistics page per link.
 * Improved admin UI with copy-to-clipboard button.

#### 1.1

 * Added .htaccess management for subdomain routing.
 * dbDelta() used for table creation and upgrades.

#### 1.0

 * Initial release.

## Meta

 *  Version **1.7.3**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.8 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [link tracking](https://wordpress.org/plugins/tags/link-tracking/)[redirect](https://wordpress.org/plugins/tags/redirect/)
   [short links](https://wordpress.org/plugins/tags/short-links/)[url shortener](https://wordpress.org/plugins/tags/url-shortener/)
 *  [Advanced View](https://wordpress.org/plugins/cortaito-url-shortener/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/cortaito-url-shortener/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/cortaito-url-shortener/reviews/)

## Contributors

 *   [ Koke Pérez ](https://profiles.wordpress.org/kokenet/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/cortaito-url-shortener/)