From the console
New links are created from the assistant. Say what you want in your own words — “shorten https://example.com/spring with utm_source newsletter and utm_medium email, under the Spring campaign”. When it refuses, it says why. Owners, admins and members can create links; viewers only see them. Every link then appears at https://app.utmkit.co/links, reading Not live yet until the edge confirms it, then Live.What a link is made of
- A destination, starting with
http://orhttps://. For WhatsApp, give the phone number and the message and the address is composed for you. A link can also carry iOS and Android destinations — see deep links. - UTM parameters:
utm_source,utm_medium,utm_campaign,utm_termandutm_content. The assistant sets only the ones you asked for and never invents a value. - A short code. A generated code is exactly 7 characters. A code you choose must be 8 to 64 characters — letters, numbers, hyphens and underscores, starting with a letter or a number. The two lengths never overlap, so your code can never collide with a generated one. If it is already taken on that domain, the refusal suggests free alternatives.
- A short domain: the shared UTMKit domain, unless your organization has connected its own. With more than one choice, the assistant asks which to use rather than picking; say “shared” for the shared one. See custom domains.
- A campaign. Name an existing one and the link is grouped under it. Without a
utm_campaignof your own, one is derived from the campaign’s name, written as your convention wants; autm_campaignyou give always wins. See campaigns.
What the rules check
Before saving, the workspace’s convention is consulted: casing and separator, required parameters, approved values, dependency rules and any parameter locked for your seat. It also warns when Google Analytics 4 would file a medium under an unexpected channel. A refusal is one plain sentence naming the parameter, the value and what to use instead: utm_source ‘Newsletter’ is not approved in this workspace. The approved values are: ‘newsletter’, ‘partner’. In block mode nothing is created until you fix it; in warn mode the link is created and carries the warning.The destination is checked first
A destination that is not a public address — a private network, a machine name — is refused. So is one listed as malware or phishing by a reputation authority, and the refusal says what it is listed as. A bad destination never becomes a link.If the safety check cannot answer at that moment, the link is not created either. Try again in a few minutes — your address is not being called dangerous.
One tagged URL, one link
If the workspace already has a link with the same destination and the same five UTM values, the new one is refused and the refusal names the existing link: two codes for one tagged URL split its clicks. The domain does not matter, and a link with no UTM parameters at all is not subject to this rule. Link creation is rate-limited per workspace to protect the safety check: 300 new links a day, the same on every plan. Past it, the refusal says when to try again.From the API and the MCP
POST /api/v1/links creates a link with exactly the same checks; create_link is the MCP tool that does the same. Both require a token carrying links:write; listing and reading links needs links:read. A duplicate is answered with a conflict, and a rule or safety refusal with the sentence the console would show. The reference owns the parameters.