URL Shortener

Create and manage smart short links with advanced tracking and customization

Overview

The URL Shortener is the core of GrowQR. Every short link you create is more than a redirect — it's a trackable, customizable asset that captures click data, supports conditional routing, and integrates with the rest of the platform (campaigns, QR codes, landing pages). Links can be created one at a time from the dashboard, in bulk via CSV, or programmatically through the REST API.

What Problem It Solves

Raw URLs are long, ugly, and impossible to track. Sharing https://example.com/products/widget-pro?utm_source=twitter&utm_medium=social&utm_campaign=spring on a social post looks unprofessional and tells you nothing about who clicked. GrowQR replaces that with a clean, branded link like brand.link/widget while silently recording every interaction — device, location, referrer, and timestamp — so you can measure what's working.

How It Works

When a visitor clicks a short link, the GrowQR edge network resolves the alias, logs the click metadata, and issues a 301 or 302 redirect to the destination URL — all in under 50 ms. If the link has conditions (password, expiration, geo-targeting), those are evaluated at the edge before the redirect fires.

Visitor clicks brand.link/widget
  → Edge resolves alias "widget"
  → Evaluates conditions (active, not expired, no password)
  → Logs click (IP, UA, referrer, timestamp)
  → 301 redirect to destination URL

Step-by-Step Usage

  1. Navigate to Dashboard → Links and click New Link.
  2. Paste the destination URL in the Long URL field.
  3. Set a title for easy identification in the dashboard (optional).
  4. Set a custom alias or leave blank for an auto-generated short code.
  5. Select a campaign to associate the link with (optional).
  6. Choose a custom domain from the dropdown (optional — only verified and active domains appear). When a custom domain is selected, your short link becomes yourdomain.com/alias instead of the default platform URL.
  7. Configure advanced options: expiration date, password protection, or UTM parameters.
  8. Click Create Link.

Custom Aliases

Custom aliases make links memorable and on-brand. Rules:

  • 3–64 characters
  • Alphanumeric, hyphens, and underscores only
  • Case-insensitive (/Sale and /sale resolve to the same link)
  • Must be unique within the selected domain

UTM Parameters

GrowQR has a built-in UTM builder so you never have to manually construct query strings. Fill in any combination of the five standard UTM fields:

ParameterPurposeExample
utm_sourceTraffic origintwitter, newsletter
utm_mediumMarketing mediumsocial, email, cpc
utm_campaignCampaign namespring-sale-2026
utm_termPaid keywordurl+shortener
utm_contentAd variationhero-banner-v2

The UTM values are appended to the destination URL at redirect time, keeping the short link itself clean.

Password Protection

Toggle Password Protection when creating or editing a link. Visitors who click the link will see a prompt before being redirected. Use cases include:

  • Gated content for paid subscribers
  • Early-access links for beta testers
  • Internal links shared in public channels

Expiration

Set an Expiration Date to automatically deactivate a link after a deadline. Expired links return a configurable 404 page or redirect to a fallback URL. This is useful for:

  • Limited-time offers
  • Event registrations
  • Temporary download links

For large campaigns, create links in bulk:

  1. Go to Links → Bulk Create (or click the Bulk Create button on the Links page).
  2. Upload a CSV file or add rows manually. The CSV supports these columns:
    • destination_url (required) — the long URL to shorten
    • alias (optional) — custom short code; leave empty for auto-generated
    • title (optional) — a friendly label for the link
  3. Review the preview table. The system validates each row in real time:
    • Checks URL format (must be a valid http:// or https:// URL)
    • Validates alias format (alphanumeric, hyphens, underscores, max 50 chars)
    • Detects duplicate aliases within the batch
    • Color-coded status: green check = valid, red X = error with details
  4. Edit any row inline to fix errors — the table updates validation instantly.
  5. Optionally select a campaign to associate all links with.
  6. Click Create All. Error rows are skipped; valid rows are created.
  7. Review the results page showing success/failure counts and details of any failures.

You can also download a CSV template from the Bulk Create page to get started quickly.

CSV format example:

destination_url,alias,title
https://example.com/page1,my-link,My First Link
https://example.com/page2,,My Second Link
https://example.com/page3,sale-page,

API Usage

Create links programmatically using the REST API. Both JWT tokens and API keys are supported for authentication.

Basic link creation:

curl -X POST https://api.growqr.io/v1/urls \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "destinationUrl": "https://example.com/landing",
    "customAlias": "spring-sale",
    "tags": ["email", "q2"],
    "utmSource": "newsletter",
    "utmMedium": "email",
    "utmCampaign": "spring-sale-2026",
    "expiresAt": "2026-06-01T00:00:00Z"
  }'

With custom domain and campaign:

curl -X POST https://api.growqr.io/v1/urls \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "destinationUrl": "https://example.com/landing",
    "customAlias": "spring-sale",
    "domainId": "uuid-of-verified-domain",
    "campaignId": "uuid-of-campaign",
    "utmSource": "newsletter"
  }'

Bulk creation:

curl -X POST https://api.growqr.io/v1/urls/bulk \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "urls": [
      { "destinationUrl": "https://example.com/page1", "customAlias": "page1" },
      { "destinationUrl": "https://example.com/page2", "customAlias": "page2" }
    ]
  }'

The response includes the full short URL, a unique link ID, and associated domain:

{
  "id": "lnk_abc123",
  "shortUrl": "https://promo.brand.com/spring-sale",
  "destinationUrl": "https://example.com/landing",
  "domain": { "id": "...", "domain": "promo.brand.com" },
  "createdAt": "2026-03-05T10:30:00Z"
}

Best Practices

  • Keep aliases short and descriptive. /spring-sale beats /ss2026q2promo.
  • Use tags consistently. Agree on a tagging taxonomy with your team before you have hundreds of links.
  • Set fallback URLs for expiring links so visitors aren't left on a dead page.
  • Rotate API keys periodically and scope them to the minimum required permissions.
  • Leverage the meta field in the API to store internal reference IDs from your CRM or ad platform for easier reconciliation.
  • Avoid editing destination URLs on high-traffic links without a redirect chain plan — analytics continuity depends on it.

Example Workflows

Email Campaign with A/B Subject Lines

  1. Create two links with the same destination but different UTM content values (subject-a, subject-b).
  2. Place each link in the corresponding email variant.
  3. After sending, compare click-through rates on the campaign analytics page to determine the winning subject line.

Social Media Content Calendar

  1. At the start of each week, bulk-create links for every post in your content calendar.
  2. Tag each link with the platform (twitter, linkedin, instagram) and content pillar.
  3. Use the tag filter in Analytics to see which platforms and topics drive the most engagement.

Partner & Affiliate Tracking

  1. Create a unique short link for each partner pointing to the same landing page.
  2. Assign a partner tag and set utm_source to the partner name.
  3. Share only that partner's link with them.
  4. Use per-link analytics to attribute traffic and conversions to each partner without third-party tracking scripts.