Complete user guide clk.ms
Document version: 6 September 2026. This guide covers the user features in the current service version. Button names match the selected interface language. Feature availability depends on service settings and your account permissions.
If you are using the URL shortener for the first time, start with the practical course. To quickly find an answer, open the help or use the browser page search.
1. How short links work
A short link consists of a domain and a code, for example https://clk.ms/sale-2026. The destination is the address to which the service redirects a visitor. Changing an existing link’s destination lets you update a campaign page while keeping the short URL you have already published.
A link can have an expiry date, a start time, a click limit, a password, email verification, referrer restrictions, intermediate pages, UTM parameters and destination rules. These settings serve different purposes and can be used together.
A link without an expiry date has no scheduled end date. This does not mean an HTTP 301 redirect or a promise to store the link forever. Click limits, access restrictions and service rules still apply. Links may be deleted after three years without a click.
Identifier — the part of the address after /. In the interface, it is also referred to as "your identifier." Only Latin letters A–Z, a–z, numbers, hyphen, and underscore are allowed for a personal identifier; length — from 3 to 100 characters. For example, sale-2026 is allowed, but продажи-2026 and sale 2026 are not. Uppercase and lowercase Latin letters are distinguished. Reserved names, such as help, account, and api, cannot be taken.
2. Creating and looking up links
- Open main page. To manage the link later, first log in to your account.
- Paste the target URL into the «Full URL» field. For a regular site, use the full address, for example
https://example.com/catalog?category=books. - If you are inserting an address without a scheme, select the protocol on the left. If the scheme is already specified in the address itself, it is used.
- If necessary, set the start time, duration, limit, custom ID, password and additional restrictions.
- Click the scissors button. Wait for the result or error message.
- Copy the short address using the button next to the result. In a supported browser, you can open the «Share» system menu; Available applications are determined by the device.
- Open the address in a separate window and check the actual click on the link. Such a click on a link is counted as a real click if the link successfully passes the visitor.
The result may include the destination, expiry and click information, a QR code and download controls. Available options depend on the link type and service settings. Wait for a successful result before publishing; an error or a pending review is not a ready-to-use link.
Entering a short URL from this service switches the form to lookup mode, with a ? button. Lookup displays the available link information without visiting the destination. Public lookup hides the destination when a link has a password, email/OTP or referrer restrictions, or has not yet passed review.
Shortening the same URL again with compatible, matching settings may return an existing link. Creating a link therefore does not always produce a new code or a separate counter. Use different UTM parameters or custom codes when you need to measure channels separately.
Supported addresses
| Scheme | Destination |
|---|---|
https, http |
Web page |
ftp, ftps, sftp |
Resource of the corresponding file protocol |
mailto |
Creating a letter in the mail application |
tel, sms |
Call or message on a supported device |
webcal |
Calendar subscription |
magnet |
Opening a magnet link in a compatible app |
The presence of a scheme in this list means that the address is supported by the shortener. To open it on the visitor's device, you need a suitable application. javascript:, data:, ws: and wss: are not accepted. You cannot shorten the address of the service itself or its subdomains when creating a chain to it. The default destination URL length is limited to 2048 characters; the actual limit can be configured by the service.
Duration, start time and number of clicks on the link
| Field | How to use |
|---|---|
| Start time UTC | Until this point, the visitor will see a message stating that the link is not yet working. An empty field means start immediately. |
| Expires at | The moment when a regular click on a link stops. For no date, enable «Permanent». |
| Click limit | An integer from 1 to 1,000,000. Enable «Unlimited clicks» to remove the limit. |
| Backup URL after expiration or limit | An address that opens instead of a completed offer, for example, the “Promotion has ended” page. |
| HTTP redirect status | 302 default; 301, 307, 308 are also supported. |
Enter all fields labelled UTC in UTC, converting from local time when necessary. For example, if your current offset is UTC+3, 12:00 UTC is 15:00 locally. The offset can be different on another date.
301 and 308 indicate a permanent redirect, which browsers and intermediaries may cache. 302 is usually more convenient for campaigns whose destination can change. 307 and 308 preserve the request method when redirecting. These status codes do not change how long the service stores a link.
When the fallback URL is used after expiry or after the click limit is reached, that visit no longer increments the link’s normal click counter. The fallback does not override other causes of unavailability, such as moderation rejection or a frozen owner account. It cannot work after the short link itself has been deleted.
3. Account, sign-in and profile
An account is needed to return to links, change their settings, view analytics and use management tools. Links created without logging in should not be considered automatically linked to a future account.
Registration and restoration of access
- Select «Login» → «Register», fill in the displayed fields, password and arithmetic check.
- Open the confirmation email and follow the link. The email confirmation link is valid for two days.
- Log in with email or username and password. After logging in, «My links» and «Profile» will appear.
- If the password is forgotten, use «Forgot password?». The reset link is valid for two hours. Set a new password using the form in the letter.
If the entry is incorrect, correct the field indicated by the message and resolve the current security check. Repeated unsuccessful login attempts may be temporarily restricted. If the letter has not arrived, check your address and Spam folder; If you have a delivery problem, contact support at the address in the site header.
The welcome window after registration explains the available options. Close it with the continue button. It does not replace email confirmation.
Login with the code from the email and sessions
If there is «Login with a code from email» on the login page, open it and provide a verified email. Complete the shown security check, request a message, and enter the eight digits from the last message. The service shows the same request notification regardless of whether the account exists. If this method is not available to your account, the message will not be sent.
Usually, the code is valid for ten minutes, a repeat request is possible after one minute, and after five incorrect attempts a new code is required. Available periods and limits may vary; follow the form's message. A new code cancels the previous one. The code is one-time use; do not forward it to others.
In the profile, open «Security» → «Login methods». It indicates what is available: the password, the code from the message, or both methods. If both methods are allowed, you can uncheck «Allow login with a code from email» and save. The change will end other sessions. If login by code is disabled for the service, use the password or its recovery.
The «End other sessions» button keeps the current login active but requires re-login on other devices and cancels previously issued codes. If you suspect unauthorized access, also change your password and check the security of your email. The account login code and the visitor access code to a protected link are different codes for different actions.
Profile settings
In profile, you can update available user data, change the password, set up notifications, grant access to another user, freeze account links, or request account deletion. Email is displayed separately; Do not consider editing your name as changing your email address.
When changing your password, provide your current password, new password, and confirmation. The account password and the specific link password are independent: changing one does not change the other.
Freezing an account pauses redirects for links owned by that account. Select the freeze checkbox and save. To resume redirects, clear that checkbox and save again. Verify the result in a separate window while signed out. Freezing does not delete links or extend an expired link’s lifetime.
Deleting an account requires email confirmation; the confirmation link is valid for two hours. Save any reports and settings you need before confirming. Use freezing when you only want to pause a campaign. The user interface cannot restore a deleted account and all its associated data.
To exit, use the «Logout» button. On a shared computer, log off after work.
4. My links and the workspace
The «My links» page shows links that you own and are accessible by rights granted. The table contains the short address, target URL and key indicators. Use available sorting and list pages. The ... menu next to the line opens actions: click on the link to statistics/settings and delete if you have the right.
In the link card, sections are switched by tabs:
| Tab | What's inside |
|---|---|
| Overview | Key indicators and link status |
| Statistics | Link click distributions, heat map, sources, attribution and anomalies |
| QR | Design, Target URL, Business Card, Background Upload, Download and Print |
| UTM | Campaign, template and labels for this link |
| Groups | Link belonging to groups |
| Integrations | Webhooks, conversion tracking and related tools |
| Activity | Recorded link clicks, scans and events |
| Settings | Target URL, address, timing, access, routing rules and target URL history |
The «Check before publishing» button in the card header opens the routing simulator and diagnostic report. These tools are described in section 14.
After saving the form, the page may open in the default tab. Return to the desired tab and check the saved value. Fields of different forms are saved with their own buttons: saving QR does not save unsaved changes in access settings.
Changing the target URL and short address
In «Settings» → «Destination», enter the new full address, add a note if necessary, and save. The short identifier itself remains the same. A change note can be up to 512 characters long.
In the «Routing» block, you can change your own ID and select an available verified branded domain. This already changes the published short address. Update placements and QRs if they contain the old address; automatic alias from the old identifier is not promised.
5. Groups and collaboration
Organization of links
- Open «Groups».
- Enter a name of up to 128 characters and select an icon.
- Save the group. Through the group menu you can change the name/icon or delete it.
- In the link card, open the «Groups» tab and configure membership in the desired groups.
One link can belong to several groups. For example, “Client A”, “Fall 2026” and “Printed Materials” at the same time. The group does not add UTM tags or change the target URL of the link.
When deleting a group, carefully check the box for deleting your own links that are only in that group. If you enable this feature, the deletion will affect more than just the list organization. Normally deleting a group without this checkbox preserves the links.
Access to another user
In your profile, find the access control block, enter your colleague's username and select permissions. A colleague needs his own account. A shared account password is not required for collaboration.
| Resolution | What it allows |
|---|---|
| View links | See available owner links |
| Create links | Create links on behalf of the owner in an accessible context |
| Changing links | Change allowed basic link data |
| Delete links | Remove owner links |
| View metrics | Open analytics; also required by new verification tools |
| Manage groups | Change the organization of links |
| Manage UTM | Work with tags, campaigns and templates |
| Manage QR | Change design and export QR |
| Targeting management | Configure rules for selecting target URL |
| Manage webhooks | Configure external event handlers |
| Manage settings | Change the corresponding link settings |
| Manage access | Change link access restrictions |
Grant only the permissions you need. Permission to view statistics does not mean permission to remove the link. Feature availability settings also remain in effect. Revoke access when the collaboration ends and verify it from the recipient's account.
Access term and independent tools
When granting rights, fill in «Access expires (UTC)» or leave the field empty if unlimited access is allowed. The time is set in UTC. After the term expires, the rights are automatically revoked. To correct an existing entry, click «Change rights», check the participant, checkboxes, and term, then save. Unchecked boxes withdraw the corresponding rights; for complete revocation, use a separate button in the row.
The right to the QR editor does not require the right to view statistics. The participant sees the available tools; restricted access settings, domain tokens, and other people's tools do not appear on the card. Full access applies to link functions but does not transfer account ownership and does not allow granting access to others on its behalf. The feature should be available to both participants. If the participant limit is reached, revoke unnecessary rights; if the duration is limited, specify the allowable end time.
6. Importing and exporting links
The import and export buttons are located on the «My links» page. CSV is useful for batch creation and transfer of master addresses. This is not a full backup: the file does not contain passwords, OTP/referrer restrictions, groups, QR design, targeting rules, webhooks, history and all analytics.
The following columns are supported:
url,custom_code,starts_at_utc,expires_at_utc,max_clicks,expiration_redirect_url,redirect_status_code
https://example.com/catalog,sale-2026,,,1000,https://example.com/finished,302
https://example.com/support,help-desk,,,,,302
Only the url header is required. An empty self-identifier means automatic selection. An empty end date means no date, an empty limit means no limit, and an empty HTTP status means 302. For dates, use a single-digit ISO 8601 format with an hour offset, such as 2027-01-15T09:00:00Z.
Import requirements:
- UTF-8, comma delimited, first line - column names. The case of column names is not important.
- File size no more than 1 MiB; no more than 100 non-empty data rows per import.
- Enclose semicolon values in double quotes, and double quotes within them. Do not use line breaks within the same value.
- Own identifiers and target URL are subject to normal verification. A busy ID is not overwritten by the import.
- Processing is done line by line. Successful lines are preserved even if there is an error in another line. Read the result and re-import only the corrected rows.
The export includes viewable links. url records the current destination URL, including UTM. For protection when opening in tables, dangerous beginnings of values are screened; When preparing a new import, check the actual text of the cells. Don't rely on CSV import to recover deleted IDs.
7. Branded domains
Connect your own domain by verifying ownership with a file or TXT DNS record. Configure CNAME, check the connection and HTTPS, then choose this domain for short links.
- Open «Domains», enter the hostname and add it. Do not enter the path to the page instead of the domain.
- Copy the contents of the test file shown by the service. It looks like
clk-ms-verify=YOUR_TOKEN. - Place it on your domain at the path
/.well-known/clk-ms-domain-verification.txt, accessible without logging in or blocking requests. - Click domain verification and wait for confirmation. If there is an error, check the exact hostname, file contents, external accessibility, and HTTPS settings.
- Prepare the direction of domain traffic to the service and the correct TLS certificate together with the serving party. Proof of ownership itself does not create a DNS record or issue a certificate.
- Select a verified and included domain when creating a link or in its routing settings.
- Check the finished short address from another device and network.
Switching a domain affects the published address. Before disabling or deleting a domain, check the links and printed materials that refer to it. If the domain is already occupied in the service, adding it again does not transfer rights to it.
Domain verification example
Let's say you added go.example.com. In your browser, open https://go.example.com/.well-known/clk-ms-domain-verification.txt and compare the text shown with the value from the domain card. What you need is verification text for this domain, not an HTML page with an error message, a login form, or a file that is only accessible on your local network. A token from another added domain is not suitable.
If a regular browser opens a file and the service check fails, check accessibility from the external network, server restrictions, and site security rules. The card displays the result of the last attempt; After correction, repeat the check. Do not replace the contents of the file with the example YOUR_TOKEN from this tutorial - copy your actual value.
Verifying ownership verifies your ability to manage the domain name. The final check of the short link checks another chain: DNS, HTTPS, hit of the request to the service, identifier and target URL. Save both results before bulk domain replacement in placements.
Connecting a domain via TXT and CNAME
Instead of a verification file, ownership can be confirmed via DNS. Add, for example, go.example.com and reveal «TXT record and connection verification». Copy the full TXT record name _clk.go.example.com and the exact value clk-ms-verify=YOUR_TOKEN, replacing YOUR_TOKEN with your token. In the DNS panel, the record inside the zone example.com is usually called _clk.go; some providers expect the full name. Do not add the zone name twice.
Save the TXT record, wait for it to propagate, and click «Verify via DNS». TXT confirms ownership; to direct traffic, create a CNAME for go.example.com with the value specified in section «CNAME target». This is the hostname without https:// and the path. Then click «Check DNS connection». Repeated checks are limited; wait between attempts.
For an address like aa.com/short_link, a root domain aa.com is required. A regular CNAME at the zone root is not supported by all providers; ALIAS, ANAME, or CNAME flattening is required. If this is not possible, use go.aa.com/short_link. When IP addresses match, diagnostics report this separately from the confirmed CNAME chain. DNS provider proxying may hide the CNAME and change addresses; in this case, check its connection settings to the service.
DNS and domain ownership do not yet confirm HTTPS readiness. A certificate must be set up for your domain. If there is a certificate error, contact support; do not publish the link until it is fixed. When HTTPS works, select the domain when creating the link and open the result from another network. Old links on the main domain keep their addresses. Disabling your own domain stops clicks on its links; after enabling a verified domain, check them again.
8. UTM parameters, campaigns and templates
UTM tags are added to the target URL and sent to the target website. They help its analytics system differentiate between traffic sources. The mere presence of UTM does not create a conversion and does not enable analytics on the landing page.
| Label | Meaning | Example |
|---|---|---|
utm_source |
Source | newsletter |
utm_medium |
Channel | email |
utm_campaign |
Campaign | autumn_2026 |
utm_term |
Keyword or segment | returning_customers |
utm_content |
Ad/Button Option | hero_a |
You can set tags when creating a link or in the UTM tab of its card. If UTM is used, fill in three required values: source, medium and campaign. This also applies to addresses that already contain UTM. Adhere to a single register and directory of names. The values Email and email may become different rows in third-party analytics.
Campaigns and templates are created on the «UTM tools» page. The campaign stores the name and base values source/medium/campaign. The template helps reuse a set of labels, including term/content. The UTM campaign name field of the template supports the {campaign_name} substitution; do not translate or rename it.
After selecting a campaign/template, check the final values of the link and save them. Editing a campaign or template and applying changes to associated links are separate steps. The apply button allows you to update the associated target URL; Before doing this, evaluate the impact on already running reports.
The UTM clear button removes managed tags from the target URL. The remaining request parameters and the fragment #... are saved. Deleting a campaign or template should not be used as a way to delete the link itself.
For a printed poster, it is convenient to create a separate link with utm_source=poster, utm_medium=offline, utm_campaign=autumn_2026, and for mailing - a second link with newsletter/email. The channels are then distinguishable regardless of the primary landing page match.
9. QR codes, contact cards and printing
Dynamic link and embedded vCard
In link mode, the QR contains the click address on the link /qr/{code}. The crawl accesses the service, so the target URL can be changed without retyping as long as the domain and ID are preserved. Terms, limits, access restrictions and link routing apply. Crawls are counted separately from regular link clicks.
In vCard mode, the QR contains contact information directly inside the image. The phone prompts you to save the contact. Already printed contact information cannot be updated by changing the record in the service: you need to create and distribute a new QR. Reading the built-in vCard does not access the /qr/{code}, so you cannot expect statistics on its scans on the site.
Visual business card and QR content are separate settings. Contacts printed next to a QR do not automatically become the content of the code. Always check the selected content mode.
Working with the editor
- Open the link card → QR.
- Choose your original layout: square, poster, or business card.
- Adjust the canvas width and height, QR size and position.
- Specify the QR, background, and accent colors. The color of the QR itself and the background should be different; Maintain strong contrast for easy scanning.
- Select a frame: solid, dotted or no frame; adjust the indentation, thickness and rounding.
- Add frame text, signature and text logo. If necessary, adjust their size and position.
- Drag and drop objects in the preview; use resizing handles. Exact coordinates are also specified in the form fields.
- Add decorative blocks, select the one you want from the list and change its position, size, rotation, fill, stroke and transparency. Delete the unnecessary block.
- Turn on Preview mode to see the layout without editing elements. Clicking on the layout returns editing.
- Save the design, then download the desired format and check the finished file.
Available block shapes: rectangle, circle, ellipse, triangle, diamond, rounded block, hexagon, star and line. Up to 40 blocks are supported. Objects can overlap each other: to drag, select a free part of the desired object or use its coordinate fields. Do not cover the service squares and the white field around the QR with decorative elements.
Canvas sizes are limited to 240–2000 pixels on each side; values that are too large or small are normalized by the service. The QR must fit on the canvas. Frame text is limited to 80 characters, signature - 160, logo text - 32. For long text, check the downloaded file, especially before printing.
Background and contact information
For background images, PNG, JPEG and WebP are supported, up to 3,000,000 bytes. Image size - no more than 4096x4096, no more than 16 million pixels. Choose fill with clipping, fit entirely, or stretch, then adjust the opacity from 0 to 100%. To remove, use the separate background removal checkbox and save the form.
In business card mode, name, organization, position, phone, email, website and address are available, as well as design layouts, alignment and text options. For vCard, fill in at least one of the fields: name, organization, phone or email. The email must be correct, the website must be an HTTP/HTTPS address.
Download and print
- SVG is suitable for scaling and vector layout.
- PNG is convenient for inserting into documents and publishing in raster form.
- PDF is convenient for transferring layout and printing.
- The print page offers business card, flyer, menu, and packaging layouts; use the print button and check the options in the browser dialog.
Scan exactly the exported file or proof print on a real device. Check the target URL, sharpness, margins and readability at the intended size. The monitor preview does not guarantee the quality of a particular printer or camera.
If only the target URL of a dynamic link is updated, the old QR is retained. If the domain, ID, content mode, or embedded vCard changes, prepare and distribute a new QR. Expiration or deletion of a link affects old dynamic QRs in the same way as a regular short URL.
Cancel changes and check readability
The «Undo change» and «Redo change» buttons work with the history of the current editor: up to 59 steps are available. Loading a new background file starts the history over; after reloading, the saved layout is used. During vCard data changes, the preview rebuilds the code. If the data does not pass verification or the request fails, correct the fields; do not use an unfinished preview for publishing.
First, save the layout, then open «Checking QR readability». The service tries to read the finished PNG and compares its data with the expected one. The report shows the image size, module size, and contrast. Warnings help identify pale colors, overly small codes, inverted colors, and overlaps with logos, text, or shapes. Values of 4 pixels per module and a contrast of 4.5:1 are practical guidelines for this check, not a guarantee that all cameras will read it.
Download the JSON report if necessary. Changes not yet saved in the editor are not included in the report or export. The check does not create clicks on links. Before running a print run, scan the final file with different devices and perform a test print at the actual size. If the limit for layout size, background file, or number of shapes is reached, reduce the corresponding value. Limits account for the availability of the feature for both the owner and collaborators.
10. Routing rules and A/B testing
Open the link card → «Settings» → «Dynamic redirect rules». The rule selects the target URL based on request characteristics, time and weight. It does not permit access contrary to password, time limit, or other link restrictions.
Create a rule
Fill in the name, full target address and priority, then the required conditions. Enable the rule and save. Through the line menu you can edit, temporarily disable or delete a rule. Maximum - 100 rules per link; name - up to 128 characters.
| Field | Condition and example |
|---|---|
| Priority | The smaller number is checked first. Acceptable is 0–1,000,000. |
| Countries | Codes separated by commas, for example DE,AT. |
| Regions | Region codes transmitted by the service infrastructure, for example BE. |
| Browser languages | For example ru,en,de-DE. The language of the site and the language of the visitor’s browser are different settings. |
| Devices | ios,android,desktop,mobile,tablet,bot,unknown. Use technical meanings without translation. |
| Browsers | For example Chrome,Safari; case is not important. |
| Date from/to UTC | Period of validity of the rule. The end point is not included. |
| Time from/to UTC | Daily interval. Please fill out both fields. The interval may cross midnight, for example 22:00–06:00. |
| Traffic weight | Integer 1–10,000 to distribute among eligible options of the same priority; an empty field means no weight. |
| Fallback | Use the rule as a fallback if there is a known problem with the main target URL. |
An empty condition does not restrict visitors on this basis. Values within one list are combined using “OR”, different filled fields are combined using “AND”. For example, DE,AT and de and desktop indicate a German-language desktop browser from Germany or Austria.
Selection order
- The service considers the included rules that match the dates, times and characteristics of the request.
- If a freshly saved health check reports a supported problem for the target URL, an appropriate fallback rule can be selected.
- Among the normal rules, the first matching priority is used.
- If this group has rules with weights, the choice is made between them in proportion to the weight. Suitable rules without weight are not included in this group.
- If the rule is not selected, the main target URL of the link is used.
For a 50/50 test, create two matching rules with the same priority and weights 1 and 1. For 80/20 - 4 and 1. Equal priority without weights does not by itself create an A/B test.
Weighted selection is stable for a combination of short code, IP address and User-Agent. Refreshing the page repeatedly as the same visitor does not have to show different variants. Small samples need not match the configured proportions exactly. Switching networks or browsers can change the variant, as can changing the rules or their weights.
Country and region come from headers supplied by the service infrastructure; the service does not promise to determine location from every IP address. Missing country data uses ZZ, missing language uses und, and a missing region is left empty. Device and browser detection uses User-Agent and can be inaccurate or spoofed. Test requests with unknown attributes as well, and keep the primary destination available.
Before starting, use routing simulator: it will show the result of the selection without test clicks and spending the limit.
11. Passwords, email/OTP and access restrictions
All these settings are available when creating a link in the corresponding additional blocks and subsequently in the link card → «Settings». Save each modified form.
Link password
Specify a non-blank password of up to 256 characters. The password cannot consist only of spaces. Give it to the recipient in a separate, convenient way. When opened, the link will show the form; the correct password allows you to continue checking and clicking on the link. An incorrect password should not open the target URL.
To change, enter a new password and save. To remove protection, use the «Remove password» flag. The field does not show the previously saved password. Do not use your account password here.
Access via email and one-time code
Enable email/OTP and, if necessary, set allowed emails or domains. The visitor enters the address, receives a six-digit code and confirms it. The code is valid for 10 minutes; Up to five entry attempts are allowed. The number of code requests for one link is limited to ten per minute.
List examples: person@example.com, @example.com, *.example.com. Separate values with commas, semicolons, or line breaks. The list is limited to 2048 characters. An empty list does not set domain restrictions: confirmation of the entered email is required, but not affiliation with a specific organization.
If there is no letter, check your email, Spam folder and allowed list. After requesting a new code, use the current email. Do not publish the code you receive: it is intended to confirm the recipient's access.
Allowed referrers
Referrer - browser information about the source of the click on the link. You can add a host name, origin, or a subdomain mask to the list: for example, partner.example, https://partner.example, *.trusted.example. The separators are the same as for the email list; maximum length is 2048 characters.
If the restriction is enabled, direct opening from the address bar, app, or QR may fail to pass the referrer and result in a denial. The source site or browser itself may also be hiding it. To check, follow the link from a truly authorized page. Referrer is not a reliable proof of identity; for specific people access, use a password or email/OTP.
Preview and warning
The preview page lets visitors review a link before continuing. The warning page asks for an additional confirmation. You can enable either mode alone or combine them with other restrictions. Continuing does not bypass the remaining access checks.
Use a new private window to test the entire access flow: the current session may already remember some confirmations. Use the simulator when it is sufficient, instead of increasing a click limit merely to run repeated tests. Password and OTP access still need to be checked with a real visit.
12. Statistics, activity and shared reports
What do the indicators mean?
| Indicator | How to read |
|---|---|
| Link click counter | Uses of a link that affect its limit |
| Recorded visits | Detailed records available for analytics |
| Unique visitors | The number of different technical keys of the visitor; this is an estimate, not a number of identified individuals |
| Humans/bots | Classification based on User-Agent characteristics |
| QR scanning | Dynamic QR route calls |
| Conversions | Individual events from a pixel or API |
| Conversion value | The passed numeric value of the event; The service does not automatically determine the currency |
General counter, detailed records and QR scans measure different activities. They don't have to match. Don't put them together without understanding the source. Scripts, messenger previews, proxies, disabled trackers, and repeat visits affect the interpretation of the result.
The distributions show countries, cities, browser languages, devices, OS, browsers and sources of link clicks. "No data", unknown code and direct are acceptable: the request may not contain relevant information. Geography and device recognition are not guaranteed to be accurate for VPNs, proxies, and non-standard clients.
The heat map groups the last 30 days of activity by weekday and UTC hour. Conversion attribution also uses a 30-day window: for a recognised visitor, it uses the first recorded source in that window; otherwise, it uses the conversion’s own referrer or direct. This is the report’s technical attribution model, not a complete reconstruction of a person’s journey across devices.
The anomalies section shows the deviations found by the service. The signal requires analysis of the original data and does not prove fraud on its own. Check the period, source, share of bots and your own test visits.
Analytics export
Use CSV or JSON export from the link card. The CSV contains strings of types visit, qr_scan, conversion, time, visit attributes, referrer, event name and value. Null values in columns that are not suitable for the row type are normal. This data is different from the CSV list of links.
Provide access to reports deliberately: referrer and event metadata may contain information about your campaigns and visitors. The service processes network attributes of requests; Don't assume a report is completely anonymous just because a person's name is missing.
General statistics page
In integrations, you can enable a common report page and select open or password-protected mode. For a private report, set a password, save the settings and copy the generated address /stats/{token}. The report password is different from the shortest link password.
Check the address without logging into your account. The recipient sees the provided report, but this link does not give him the right to edit your links. To stop access, disable the shared page. Do not count on automatic expiration of such an address: the current form does not set an expiration date for the general page.
13. Conversions, webhooks and notifications
Pixel and Conversion API
In the integrations tab, copy the address of the pixel with the token. Place it on the successful completion of the desired action page, and not on all pages of the site. If the Thank You page is reopened, the pixel may record a repeat event: There is no automatic order deduplication.
The pixel returns a 1x1 transparent image. Parameters eventName and value specify the name and numeric value of the event. For example:
<img src="https://clk.ms/api/links/sale-2026/conversions/pixel?token=YOUR_TRACKING_TOKEN&eventName=signup" width="1" height="1" alt="">
Use the real address from your card and your token. The given example with a placeholder does not record the event. A blocker, the target site's security policy, or failure to load the image may prevent recording. A response with an image does not in itself confirm a successful conversion: the pixel returns an image even in some rejected events. Check the entry in the link activity.
For server integration, you can send a JSON event:
POST /api/links/sale-2026/conversions
Content-Type: application/json
X-Clk-Conversion-Token: YOUR_TRACKING_TOKEN
{"eventName":"purchase","value":149.90,"metadataJson":"{\"orderId\":\"demo-123\"}"}
metadataJson - a string with a valid JSON object, up to 4096 characters, with a depth of up to 16. Do not transmit payment details or secrets. The numerical value is limited to the range −10¹⁵ to 10¹⁵. Check the successful response recorded: true; Validation errors, invalid token, and unreachable link are not recorded events. Requests are limited to 300 per minute per IP and link ID combination.
The conversion token allows events to be sent and is not a commercial API token or report password. Store it according to the integration method; in a pixel it is inevitably visible to the page visitor.
Webhooks
Webhook sends an HTTP POST with JSON to your handler. In the link card → «Integrations», set the event, mode, if necessary, the number of clicks on the link and the HTTPS address, then save.
| Event/Mode | When to use |
|---|---|
click + every_click |
Every link click that counts |
click + exact_click |
When the total counter reaches exactly the specified value |
click + every_nth_click |
When the total counter is a multiple of the specified number |
expired |
When processing a terminated link |
Example request body:
{"eventType":"click","linkId":123,"shortCode":"sale-2026","useCount":10,"occurredAtUtc":"2026-09-06T12:00:00Z"}
The handler must be accessible via HTTPS from the outside. Local, private and other prohibited network addresses are not suitable. Return successful HTTP status quickly; Do long-term work separately. Do not use automatic opening of someone else's page as a replacement for your own webhook handler.
In the webhooks table you can check the last delivery time, HTTP status and error, temporarily disable the handler or delete it. The counter value applies to the link as a whole: enabling exact_click=3 when there have already been ten clicks on the link does not trigger the event retroactively.
The current protocol does not add an HMAC body signature and does not provide re-delivery settings in the interface. Don't base a critical operation on the assumption of guaranteed delivery exactly once. Take this into account when designing the receiver and match the events with the link data. Webhook click is not a conversion notification.
Notifications to owner
In your profile, you can enable notifications of clicks via email and Telegram, exclusion of bots, and a minimum interval between messages. For Telegram, the chat identifiers and, if necessary, topics available in the form are specified. The bot must be able to send messages to this chat; specifying an arbitrary username does not replace the required identifier.
Save your settings, make one real click on the link and check your receipt. The absence of a message may be due to a minimum interval, a bot filter, a disabled channel, or a problem with an external delivery service. Notifications do not replace the statistics of all link clicks. The routing simulator does not send notifications.
14. Checking a link before publication
Open «My links» → link card → «Check before publishing». You need the right to view metrics and the availability of the corresponding tool for the owner and the user who opens it. The simulator and diagnostic report can be accessed independently of each other.
Routing simulator
The simulator shows which destination the current rules select for a given request. It uses the same selection algorithm as a real redirect, so you can check a campaign before sending visitors to it.
- Enter one country, one region and one language, for example
DE,BE,de-DE. Empty fields represent a lack of information. - Specify the User-Agent of the desired client. For example, for iPhone you can use
Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 Version/17.0 Mobile/15E148 Safari/604.1. - Select a virtual visitor number from 1 to 254. Different numbers allow you to check the weight distribution; repeating the same number with the same User-Agent maintains technical identity in the simulator.
- If necessary, set UTC to 2000–2100. Empty time means the current moment.
- Click «Check route» and compare the selected address, recognized features and time with the expected ones.
- Change one attribute at a time and repeat: different language, device, country, time outside the interval, unknown attributes.
Simulation does not open the destination site, consume the click allowance, record a visit, scan or conversion, create a destination version, or send notifications. It checks destination selection. It does not test whether a visitor can pass password, OTP, referrer or other access restrictions.
Fallback routing uses saved destination health information. The simulator makes no network request and cannot predict a future outage. Selecting a future timestamp changes schedule evaluation and the age of the saved health result; it does not create a hypothetical health check.
For practice, create two rules for ru with the same priority and weights of 1:1, and keep the English page as the primary destination. Test ru with several virtual visitors, then test en and an empty language. Do not expect an exact 50/50 split from just a few samples.
Diagnostic report
The report evaluates the saved settings at the time it is generated. Refresh the page after making changes. Findings have the following severity levels:
| Level | Meaning |
|---|---|
| Blocks | There is a known reason preventing the normal transition now |
| Warning | Setting or condition requires attention before posting |
| Information | Feature that should be taken into account when checking |
Checks cover the owner’s status, moderation, start time, expiry and click limit, expiry within 24 hours, ten or fewer remaining clicks, permanent HTTP redirects, destinations without HTTPS, additional access pages, referrer restrictions, incomplete UTM campaigns, missing current health checks, destination problems, expired rules, and a mixture of weighted and unweighted rules at the same priority.
For example, 301 is a reminder to consider caching, and a configured password is a reminder to test access. These findings do not necessarily indicate an error. A report with no findings only means that none of the listed known issues were detected in the saved data.
The JSON download creates clk-preflight-{code}.json. It contains schemaVersion, the short URL, checkedAtUtc, and a list of findings with stable codes and severity levels of blocked, warning and info. It does not include passwords or visitors’ personal data. Technical codes remain untranslated, so you can compare reports produced in different interface languages.
Save the report before an important publication, along with notes from a real test visit. Use it alongside a browser check of the destination and a test scan of the printed QR code.
15. Destination history and rollback
The link card → «Settings» → «Destination history» displays address versions, active periods, change type, author and note. History helps determine where a link led during a particular campaign.
To search, specify the UTC moment and press «Find version». The main target URL is checked at this point; choosing a personal routing rule for a specific visitor is a separate issue.
To revert, select an available previous version, provide a note if necessary, and click rollback. Rollback makes the selected address current and saves the change in history; past entries are not overwritten. Check the relevance of the address itself, UTM and rules after the return.
The target URL history is not a backup of all link settings. It does not restore the deleted account, groups, QR design or all access restrictions. To investigate, compare the history with dates in activity and saved reports.
16. Destination health and Health Score
The link card can display the last check result, time, HTTP status, response latency, redirect chain, HTTPS, suspicious signs, and final status score. The checks are performed by the service in the background, so the information is relevant to the specified moment.
Statuses help differentiate between page unreachable, server error, timeout, DNS, TLS issue, or redirect loop. The absence of data does not mean that the site has been checked and is working correctly. Ratings do not guarantee content is secure or available in every country, network, or device.
Backup rules use supported problem statuses from a fairly recent record—no older than seven days. This is not an instant switch on every unavailability: the event must be detected by a check. After fixing the target URL, check the next update time and the actual result with a regular visit.
The diagnostic report separately reminds you if the check is missing, older than seven days, or refers to a different stored address. It does not perform a new network check on click.
17. Public and commercial APIs
Creation via public API
POST /api/links
Content-Type: application/json
{"url":"https://example.com/catalog","protocol":"https","isPermanent":true,"redirectStatusCode":302}
A successful HTTP 200 response contains shortCode, shortUrl, longUrl, originalUrl, dates, limit, counter, limit information, and isExisting. Use the returned shortUrl rather than collecting the domain and ID manually. The value isExisting=true means reuse of the matching entry.
The following fields are used for additional settings:
| Request fields | Destination |
|---|---|
useCustomCode, customCode |
Own ID |
startsAtUtc, expiresAtUtc, isPermanent |
Start and date |
maxClicks, expirationRedirectUrl, redirectStatusCode |
Link click limit and behavior |
password |
Visitor password |
allowedReferrers, isPreviewEnabled, isWarningEnabled |
Source and intermediate pages |
isEmailOtpEnabled, otpAllowedEmails |
Email/OTP |
customDomainId |
Available verified domain |
campaignId, utmTemplateId, utm |
UTM; object utm contains source, medium, campaign, term, content |
ownerUserId |
Create for the owner if the logged-in user is granted the appropriate right |
Capabilities that require an account cannot be achieved by simply adding a JSON field. Login, permissions and feature availability are checked. For public creation there is a limit of 100 new links per hour per IP; exceeding this may result in a time limit of 24 hours. Matching existing records are not registered as new creations.
Verification and QR via API
GET /api/links/lookup?url=https%3A%2F%2Fclk.ms%2Fsale-2026
GET /api/links/sale-2026/qr
GET /api/links/sale-2026/qr/download
In lookup, pass the full short URL with correct URL encoding. The response provides available information, including isExpired, isPasswordProtected, and moderation status. The destination URL of a secure link may be empty; This is not a JSON parsing error. Availability of QR depends on the settings and status of the link.
Commercial integration
A commercial API requires a token issued for integration with creation permission. Pass it as Authorization: Bearer YOUR_API_TOKEN or X-Api-Token: YOUR_API_TOKEN:
POST /api/commercial/links
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
{"url":"https://example.com/catalog","isPermanent":true,"customCode":"sale-api-2026","useCustomCode":true}
Do not publish such a token in the code of a public page, repository, or QR. The integration token and regular account login are not interchangeable. The presence of a token does not mean that the created link will automatically appear in the personal account of the user you have chosen.
For a commercial request, you can pass an object utm with fields source, medium, campaign, term and content; the first three are required when using tags. For example: "utm":{"source":"newsletter","medium":"email","campaign":"launch"}. These values are appended to the target URL, preserving the remaining parameters and URL fragment. The commercial token does not give access to other people's campaigns, templates or domains: you cannot assign an owner through ownerUserId or use it campaignId and utmTemplateId.
The interactive specification is located on commercial API page if access is provided. Securing the specification page itself and authorizing the API are different mechanisms.
Error Handling
Check the HTTP status and response body. Basic situations: invalid URL or field, occupied identifier, missing login/token, insufficient rights, disabled function, prohibited target URL and exceeding restrictions. Service errors have machine code and sometimes a cause; Automatic model checking errors may have the format Problem Details with errors by fields. Don't assume that all errors are in the same JSON format.
Don't endlessly retry a request with bad data or a revoked token. When re-creating, consider isExisting and the own ID conflict. The error code is not translated; a user message can be matched to it in your application.
18. Deletion, expiry and code reuse
The link stops regular clicking on the link when it expires or reaches the limit. If a fallback destination URL is configured after completion, it may open. Otherwise, the service shows an unavailable state; background procedures may subsequently delete the master entry.
Removing from “My Links” is a separate action. Check the selected line and confirmation. After removal, the usual click on the link and associated tools may no longer be available. Historical information is not a promise of full recovery through the interface.
The service also clears links that have not been used for three years. For a link without a single click on the link, the period is counted from creation, otherwise - from the last click on the link. Having a forever mode or fallback URL does not override this inactivity rule.
The released short identifier can be reused. Therefore, deleting an old link cannot be considered a way to permanently reserve its address. For a long-lasting printable QR, keep the active link and change its target URL instead of deleting and re-creating it.
19. Languages, themes and mobile use
The language is selected in the site header. 32 languages supported: English, Russian, Simplified Chinese, Hindi, Spanish, French, Arabic, Bengali, Portuguese, Urdu, Indonesian, German, Japanese, Marathi, Vietnamese, Telugu, Hausa, Turkish, Punjabi, Swahili, Filipino, Tamil, Persian, Korean, Amharic, Thai, Javanese, Italian, Gujarati, Kannada, Yoruba and Polish.
Arabic, Urdu and Persian use the direction from right to left. URLs, technical identifiers, UTM keys, error codes and JSON fields save the technical record. Changing the interface language does not change the link data and does not set the browser language of future visitors for routing.
In the header you can choose a light, dark or gray theme. The theme affects the interface, and the colors of the exported QR are set by its own settings. Preferences are saved by the browser; In a private window or on another device, the selection may differ.
On a narrow screen, shapes are rearranged. Wide tables can scroll within their own block. For large QR layouts and long reports, use an appropriate scale, but still be able to read captions and click buttons. The keyboard allows you to navigate between fields; the visible focus frame shows the current element.
20. Troubleshooting
| Situation | What to check |
|---|---|
| Target URL not accepted | Scheme, completeness of the address, length and absence of a link to the service itself. Copy the exact error message. |
| Own ID is busy | Use a different ID; check case and service names. |
| The link doesn't work yet | UTC start time and actual current UTC. |
| Link has ended | End date, counter and limit; Availability of a backup URL. |
| All owner links are unavailable | Status of account freezing and service messages. |
| The correct password does not immediately lead to the site | An OTP, warning or other check may remain. Go through the entire chain in a new session. |
| OTP does not arrive | Email, allowed list, code period, request frequency, Spam folder and mail delivery. |
| Referrer is prohibited | The actual source page and the browser's transmission to the referrer; direct opening may not transmit it. |
| Unexpected target URL is selected | Priorities, inclusion, dates, UTC, empty conditions, weights and up-to-date status information. Compare the scenario in the simulator. |
| One person always sees one A/B option | This is expected if the visitor's technical key is stable. Check different virtual numbers. |
| The new address did not appear after the change | Form saving, active targeting rule, permanent redirect cache and openable short address. |
| QR looks correct but doesn't scan | Contrast, white margins, overlapping blocks, print size, image quality and content mode. |
| Old phone in printed vCard | Contacts are built into the QR itself. Generate and distribute new code. |
| No conversions | Token, actual pixel execution/POST, API response, link state and download blocking. |
| Webhook did not arrive | HTTPS, public handler availability, mode and threshold, inclusion, last delivery error. |
| Fewer notifications than clicks | Interval between messages, exclusion of bots and channel availability. |
| CSV partially imported | Result by line, encoding, separator, dates, 100 line limit and occupied identifiers. |
| No function button | Login, owner access rights and feature availability for the account. |
| Copying is prohibited by the browser | Select the short address and copy it manually or allow access to the clipboard for the site. |
To contact support, please prepare a short address, time of the problem with the time zone, action, expected and actual result, error text, language and browser. Do not send passwords, one-time codes or API tokens. The support contact is located in the header of the site.
21. Publication checklist
- The link has been created in the desired account; the domain and ID correspond to the location.
- The target URL opens and contains the correct UTMs.
- Dates are recalculated in UTC, the limit corresponds to the plan, and the completion of the campaign is provided for.
- For each significant language, device, and time, the rule selection is tested; There is a working default option.
- The comments in the diagnostic report were studied; saved JSON if you need a startup log.
- In the new session, the real password chain, OTP, referrer, warnings and link click are checked.
- The exported QR and proof print are scanned; The link/vCard mode was chosen deliberately.
- Test conversion and webhook are checked where they are needed; messages reached through the selected channels.
- Colleagues were given the necessary rights, the recipient's report was checked without the owner logging in.
- Once published, actual link clicks and the status of the destination URL are tracked; old printed links are not removed without assessing the consequences.
To consistently master these actions, go to Practical course.