Pretty UTMsOpen app ↗

Help center

Set up Pretty UTMs.

Copy a prompt. Hand it to Codex or Claude.

They’ll get the steps. You handle account sign-in and approvals.

Plain Markdown for agents ↗

Instant links · no setup

1. Just make a link

  1. Open your client and choose New link.
  2. Add the destination, pick where you’ll share it, and edit the ending. Keep Instant selected.
  3. Create link. Copy it from Links. Click tracking works automatically.

Your first Instant link claims one workspace name. It stays fixed; link endings are editable.

Prompt for Codex or Claude

go.yourdomain.com · recommended for branding

2. Use your own subdomain

  1. In your client’s Domains tab, choose Add domain → Branded subdomain (DNS records). Use an unused subdomain.
  2. Copy the exact CNAME and TXT records shown in the app to your DNS provider. On Cloudflare, keep the CNAME DNS only (gray cloud).
  3. Choose Check DNS in Pretty UTMs. Wait until the domain and HTTPS are active, then choose this domain in New link.

No Cloudflare account connection, Worker or tracking key to set up. Pretty UTMs hosts the redirects. Your website stays where it is.

Prompt for Codex or Claude

yourdomain.com/sale · Cloudflare required

3. Use paths on your website

  1. Confirm you can access the Cloudflare account for this exact hostname. Its website DNS record must already be proxied (orange cloud).
  2. In Pretty UTMs, open Settings → Connections and connect that account. Your workspace administrator approves access.
  3. Add Existing website (Cloudflare) in your client’s Domains tab. Open Connection options → choose the account → Connect automatically.
  4. Recheck until the domain is Live. The app installs the Worker and click-tracking key for you.

Already have a Worker on that route? Keep it. Use an unused branded subdomain instead, or ask a developer to review an integration.

Prompt for Codex or Claude

Codex + Claude

Manage links from your agent.

Connect once. Create and update links, keep your click history, and check counts from your chat.

Server URL: https://app.prettyutms.com/api/mcp

Connect Codex

Run these commands, then finish sign-in and choose your workspace.

Codex commands
Connect Claude

Open Customize → Connectors → Add custom connector. Name it Pretty UTMs and paste the server URL above. Choose sign-in and Register automatically for the OAuth client. Connect, approve the workspace, then enable it in your chat. A Team or Enterprise owner may need to add the connector first.

Example prompt

Create the client in the app first. Agent access stays in the workspace you approve. Disconnect anytime in Settings → Agents.

Open agent settings ↗

Something stuck?

The domain is still waiting for DNS or HTTPS.

Check the record names and values against the current app. Some DNS providers add your root domain automatically: enter the relative name if needed so it is not doubled. Keep the branded CNAME DNS only, with no conflicting record at that same name. Add any extra validation TXT records the app shows. DNS and certificates can take a few minutes or longer; choose Check DNS again later.

My domain is missing from the Cloudflare account.

Check that you connected the account which owns this domain’s Cloudflare zone, not the account for Pretty UTMs or another client. Connect another account under Settings → Connections if needed. Keep the website’s current nameservers and DNS records in place.

Setup says an existing Worker route conflicts.

Pretty UTMs will not replace an existing website Worker. Use an unused subdomain such as go.yourdomain.com with the branded option. Integrating an existing Worker needs a developer’s review; the generic Worker download is not a drop-in replacement.

How do I check clicks?

Instant and live branded links track automatically. Existing-website links track once their Worker and tracking key are configured. A normal visit adds a recorded click; HEAD checks, known bots and previews are excluded. Refresh clicks on Links, or open Analytics. Counts are visits, not unique visitors; GA4 measures sessions separately. Past clicks cannot be recovered.

How do I check a redirect without adding a click?

Use a HEAD request, for example: curl --head "https://go.yourdomain.com/summer-sale". Confirm HTTP 302 and the expected destination with its UTMs in Location. A normal browser visit adds a test click; tell the user before testing that way.

I need the manual Worker setup.
  1. Use this only when automatic setup is unavailable and no existing Worker route conflicts. Open the domain’s Connection options → View manual setup.
  2. Download the current generic Worker from https://app.prettyutms.com/pretty-utms-worker.js. Create a Worker in the customer’s Cloudflare account. Set APP_URL = https://app.prettyutms.com.
  3. Enter this domain’s TRACKING_KEY as a Worker secret using Copy tracking key in the app. Enter the value privately in Cloudflare or an approved secret workflow; never paste it into an agent chat or commit it.
  4. If finishing a recorded automatic installation, also set DOMAIN_HOST to the exact hostname and VERIFY_TOKEN to the value from the app’s manual setup panel. Preserve the existing installation rather than overwriting a different Worker.
  5. After reviewing routes, attach only the intended hostname/* route, for example clientdomain.com/*. Keep the website’s existing proxied DNS and unrelated routes intact. Do not add www or other hostnames unless separately configured.
  6. Deploy and choose Recheck in Pretty UTMs. Confirm the domain is Live, a saved link returns the expected 302/UTMs with HEAD, and unrelated website pages still load. Tracking starts after setup; no backfill.
Download current Worker ↗

Give your agent the exact details.

In your client’s Domains tab, open DNS records or Connection options, then choose Copy setup prompt. It includes that domain’s current records and setup page. Tracking keys and account credentials stay out of the prompt.

Copy the full guide
View full guide text