Importing Links
Move your links from Bitly, Short.io, Rebrandly, Dub, Cutt.ly or TinyURL: how to export from each service, how columns are matched, and what happens when a short address is already taken.
Updated August 14, 2026
Everything you already built somewhere else comes across in one pass: destinations, short addresses, titles, tags and the UTM parameters sitting inside your destination URLs. The importer reads a CSV file, so anything that can export a CSV can be moved — the six services below are simply recognised automatically.
Open Campaigns → Bulk import in your workspace, pick the service you are leaving, and follow the four steps: upload, check the column mapping, review the rows, import.
What moves and what does not
| Moves | Stays behind | | --- | --- | | Destination URL, including every UTM parameter | Click history and analytics | | Short address (the part after the slash) | Your old branded domain | | Title | QR codes generated by the old service | | Tags, where the export has them | Redirect rules, expiry, passwords |
Two of these deserve a plain explanation.
Click history does not move, because no service exports it per click — you only get a total. Your imported links start at zero, and that number is honest: it counts clicks that went through this platform.
Your old branded domain does not move by itself. A domain can only point at one service at a time, so go.yourbrand.com keeps sending traffic to your old provider until you repoint its DNS here. The usual order is: import the links first, check they work on one of your connected domains, then connect the domain and cut over. Between those two moments both sets of links work, because the addresses are identical.
Exporting from each service
Bitly
Open your links list, select the links (or all of them) and use Export → CSV. The file has a bitlink column with the full short link and a long_url column with the destination. The address is taken from the path of the short link, so bit.ly/summer-sale becomes summer-sale on your domain.
Short.io
In the dashboard open your domain → Links → Export CSV. The Path column becomes the short address and Original URL the destination. Short.io exports one file per domain, so import them one at a time and pick the matching destination domain for each.
Rebrandly
Links → Export. The slashtag column becomes the short address and destination the target URL. Rebrandly also exports a domain column; if that domain is already connected here, the row lands on it, otherwise it goes to your default domain.
Dub
Links → the three-dot menu → Export as CSV. Dub exports key (the short address), url (the destination), domain, title, description and tags. Tags separated by commas become separate tags here.
Cutt.ly
Open your links list and use Export to CSV. Cutt.ly exports the short link in full, so the address is taken from its path, and the destination comes from the Full link column. Titles come across; Cutt.ly's click counts do not.
TinyURL
My URLs → Export. The Alias column becomes the short address and Long URL the destination. If your export has a TinyURL column with the full link instead of an alias, that works too — the address is taken from the path.
Any other CSV
Pick Another service or my own CSV. One column is required — the destination URL. Everything else is optional:
url,slug,title,tags,domain
https://example.com/summer-sale,summer,Summer sale,"promo,email",
https://example.com/docs,,Docs (address is generated),,
A row with an empty slug gets a generated short address. A row with an empty domain lands on your default domain. The wizard offers a template file to download.
Column names are matched automatically and you can correct any of them by hand, with the first rows of your file shown underneath so you can see what you are matching. One useful option lives in the address dropdown: take path from short URL, for a column that holds a full short link rather than a bare address.
Addresses that are already taken
Before anything is created, every address in the file is checked against your destination domain — against both existing links and bio pages, because they share one address space. Conflicts are listed before the import runs, and you choose what happens:
- Skip these rows. The conflicting rows are not imported. Everything else goes through.
- Create them under a free address. Each conflicting row gets the nearest free address:
promobecomespromo-2, thenpromo-3, and so on.
An existing link is never overwritten. It may be printed on something, and a CSV file is not a good reason to change where it points.
Skipped rows appear in the results file with the reason, so a row never disappears silently.
Limits and results
A single file holds up to 1000 data rows. For a larger catalogue, split it — nothing is lost between passes, because a second import simply reports the addresses that the first one created as taken.
Links are created in batches of 100 with a progress bar. Rows that fail validation — a malformed URL, an unknown domain, an address that breaks the address rules — are marked and skipped without stopping the rest of the file.
When the run finishes, download the results CSV: one row per input row, with the new short link, the destination, and the reason for every row that did not make it.
Imported links are subject to the same plan limit as links you create by hand, and the wizard tells you how many your plan still allows before you start.