Trailhop is a self-hosted URL shortener, link-in-bio and QR code platform built on Laravel 12. Run it for yourself, your agency or your clients — or open it up as a multi-tenant SaaS with sign-ups, workspaces, plans, coupons and payments. Short links with deep analytics, link-in-bio pages, QR codes, campaigns, custom domains, an AI copilot (bring your own key) and a REST API come in one codebase, with an admin panel on top.
It installs through a six-step web installer, ships with 33 pages of buyer documentation at /docs, and includes the production vendor/ folder and compiled front end — no Composer and no Node.js on the server.
Who it’s for
Creators and agencies who want branded short links and bio pages on their own domain, founders who want to launch a link-management service, marketers who need campaign tracking with UTM, pixels and split tests, and developers who want a documented API and webhooks on code they can read and change.
What your customers get
Short links & redirects
- Custom or generated slugs, titles, notes, tags and folders; 301 / 302 / 307 redirects; password protection, start and end dates, click limits and an expired-link URL
- Targeting rules by country, region, device, operating system or browser language (first match wins), a rotator (random, weighted, sequential) and a read-only targeting simulator
- Fixed query parameters, UTM fields and a UTM builder with saved presets
- Bulk import (pasted URLs or CSV, up to 1,000 rows), CSV export with spreadsheet-formula protection, bulk actions, and anonymous shortening on the home page with per-IP rate limits and optional captcha
- Link safety: URL validation, loop protection, blocklists (domain, keyword, TLD, IP, e-mail domain), optional Google Safe Browsing lookups with your own key and a public abuse-report form
Analytics
- Totals, uniques and time series; countries, devices, operating systems, browsers, languages and referrers; bots and link-preview traffic filtered out
- Visitors are stored as a keyed hash, not as an IP address; optional signed public statistics page per link; CSV export; automatic pruning
- Plain short links write the click to a local spool during the redirect.
trailhop:clicks:drain (the every-minute cron) imports that spool, and opening any normal page also imports a small batch. Password-protected, click-limited, targeted and interstitial links record the click during the redirect itself
Link-in-bio pages
- 14 block types, 18 themes, a live preview, drafts, SEO fields, per-block statistics, e-mail capture with CSV export of leads and a whitelisting custom-CSS sanitiser
QR codes
- 11 content types, static or dynamic (website URL and WhatsApp), colours and gradients, module / eye / frame styles, logo upload, a scan-quality check, and PNG, SVG and PDF downloads
Campaigns & conversion tools
- Campaigns with combined statistics and an optional public landing page; A/B/n split tests with an indicative significance hint and manual winner selection
- Tracking pixels for 17 platforms plus an optional sandboxed custom snippet (Do-Not-Track and consent switches); splash pages, popup / bar / call-to-action overlays and media pages with official player embeds
Domains, teams & developer tools
- Custom domains with TXT-record verification, hourly re-checks, a grace period and shared domains for all customers
- Workspaces with owner / admin / editor / viewer roles, e-mail invitations, ownership transfer and an activity log
- REST API v1 with scoped, hashed API keys, per-plan rate limits, an OpenAPI document and an API reference page; signed webhooks (HMAC-SHA256) with retries, a delivery log and redelivery; Zapier-ready REST hooks (an unpublished app template, not a published Zapier app) and a Slack
/shorten slash command
AI copilot — bring your own key
- Slug suggestions, bio-page drafts and click-insight summaries using your own OpenAI, Google Gemini or Anthropic key
- Per-feature credit costs, monthly plan allowances and bonus credits, rate limits and a fallback provider
- A demo mode with sample responses needs no key, so you can see the flow before connecting a provider. The AI screenshots on this listing were produced with that mock provider (sample slugs and sample ledger rows), not a live OpenAI, Gemini or Claude account
- AI providers were verified with automated tests and simulated responses, not against live accounts
Run it as a business
Trailhop includes the pieces needed to offer link management as a paid service:
- Plans with feature switches and numeric limits — links, clicks per month, bio pages, QR codes, domains, team seats, campaigns, pixels, AI credits and API rate. Free, Starter, Pro and Agency are seeded as examples ($0 / $9 / $19 / $49 per month with yearly prices); edit or replace them in the admin.
- Billing — Stripe Checkout, PayPal subscriptions and orders, and manual bank transfer with admin approval; trials, coupons (percent or fixed; once, repeating or forever), one flat tax rate, manual plan grants, and invoices as HTML and PDF
- White-label pages and custom domains that you can reserve for higher tiers
- Moderation — abuse reports, blocklists, link / bio / QR / campaign review and an audit log
Billing, honestly: Stripe, PayPal and SMTP were verified in code and by automated tests with simulated responses — not against live accounts. Test with your own gateway sandbox before charging customers. There is one flat tax rate. Coupons do not apply to PayPal auto-renewing subscriptions. Switching to another paid plan is a new checkout: there is no proration. Bank-transfer refunds are manual.
Licence: offering Trailhop as a hosted service where other people sign up or pay requires the Extended licence. Nothing here is an income guarantee; results depend on your market, pricing and marketing.
What you get as the operator
- Admin overview with health checks (cron, queue, cache, debug mode); user management with impersonation; moderation tools; abuse reports; audit log; settings; e-mail templates; optional admin IP allow-list and mandatory two-factor authentication for administrators
- Blog, help centre and custom pages with starter content; theme colour editor, custom CSS and a child-theme view folder that updates never overwrite
- Languages: English, German, Spanish and Arabic (right-to-left supported) with in-browser editing and JSON export / import. The German, Spanish and Arabic translations are machine-quality and much of the admin panel is English only.
- Sign-in with e-mail and password, optional e-mail verification, two-factor authentication (TOTP and recovery codes), Google / Facebook / X sign-in, and reCAPTCHA v2 / v3, hCaptcha or Cloudflare Turnstile
- Optional GeoIP: CDN country headers, or a MaxMind-format database that you download and upload yourself. No GeoIP database is bundled in the zip
Installer, updates & documentation
- Web installer with a requirements check, live database test, and a lock once finished
- Signed update packages with automatic backup and rollback (
trailhop:update, trailhop:backup). Trailhop never contacts a remote update server — you download updates from the marketplace and upload them.
- Documentation at
/docs: installation, requirements, shared hosting and VPS setup, cron, mail, custom domains, payments, API reference, webhooks, teams, security, backups and troubleshooting, plus a changelog and a third-party licence list
Tech stack & requirements
- Laravel 12, PHP 8.2+, MySQL 5.7.8+ or MariaDB 10.3+ (developed and hand-tested on MariaDB 10.4), Blade + Alpine.js + Tailwind CSS (pre-built assets included)
- Apache with
mod_rewrite or Nginx with PHP-FPM; one cron entry every minute (php artisan schedule:run), which runs trailhop:clicks:drain plus billing and domain checks; HTTPS strongly recommended
- Standard PHP extensions (curl, dom, fileinfo, gd, mbstring, openssl, pdo_mysql and others — the installer checks them).
zip and sodium are recommended, not required.
- No Redis, Supervisor or Node.js required
Install overview
- Upload and extract the package on your host (or open it from
htdocs on a local XAMPP)
- Open the site in your browser — the installer starts automatically
- Check requirements, connect the database, set your site name, address, time zone, language and administrator account, and optionally enter SMTP
- Add the cron entry shown on the final step
- Configure plans, payments, mail and branding in the admin panel
What’s included in the download
- Complete Laravel 12 source, compiled front end (
public/build) and production vendor/
- Web installer, update tooling and a database seeder with starter plans, pages and help articles
- An optional demo-data seeder for local evaluation (it refuses to run in production)
docs/ (33 pages of buyer documentation), README.md, CHANGELOG.md, THIRD-PARTY-LICENSES.md, license.txt and a production .env.example
- No secrets, no database dumps, no uploads, no logs, no tests
Known limitations
No WordPress plugin, mobile app or browser extension; no published Zapier app and no OAuth 2 for the API. Only website-URL and WhatsApp QR codes can be dynamic. HTTPS certificates for customer domains are not issued by Trailhop. MySQL / MariaDB only for production. Seeded legal pages are templates, not legal advice. The full list is in the documentation.
Support & updates
Support is provided by the Trailhop author through this listing: help with installation and bug reports for the delivered product. It does not cover custom development, server administration, third-party account setup or modified code. Updates are published as new versions of this product. Server setup, gateway integration and custom work can be arranged with the seller — see the Installation Service add-on.