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




Installation
- Upload the
cortaitofolder to/wp-content/plugins/. - Activate the plugin through the Plugins menu.
- Go to Cortaito New link to create your first short link.
- (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/CODEpath 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_geolocationfilter 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.
ContributorsTranslate “Cortaito” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by 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 inassets/css/admin.css, which is already enqueued viawp_enqueue_style(). - Fixed (accessibility): The hidden page
<h1>on each admin screen now uses WordPress core’s.screen-reader-textclass instead ofstyle="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 viawp_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/.motranslation files are no longer bundled in the plugin package, since translations are managed automatically through translate.wordpress.org. The.pottemplate remains for reference.
1.7.1
- Fixed: Deactivating the plugin no longer leaves a stray empty
# BEGIN Cortaito/# END Cortaitoblock in.htaccesswhen the subdomain rule was never enabled. - Fixed: The
.htaccessblock 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.phpnow removes the.htaccessblock 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 viawp_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.
