Importer Dub.co w Elido odczytuje Twoje linki przez REST API Dub, po 100 na żądanie, i tworzy je na jednej domenie Elido z tym samym slugiem. Przenosi slug, docelowy URL, tytuł i nazwy tagów. Nie przenosi folderów, zarchiwizowanych linków, historii kliknięć ani żadnych ustawień linków. To fakty, które mają znaczenie, jeśli planujesz przeprowadzkę.
Wcześniejsza wersja tego wpisu twierdziła, że foldery Dub spłaszczają się do tagów. Przeczytałem importer ponownie na potrzeby tej aktualizacji i to było błędne: kod nigdy nie odczytuje folderów. Ta wersja opisuje, co services/api-core/internal/imports/dub.go robi dziś, sprawdzone z opublikowaną specyfikacją API Dub (dostęp 2026-10-02).
O co importer pyta Dub
Worker wysyła GET https://api.dub.co/links?page=N&pageSize=100 z Twoim kluczem jako tokenem bearer. Według dokumentacji kluczy API Dub (dostęp 2026-10-02) klucz jest powiązany z jednym workspace i może być utworzony jako tylko do odczytu. Klucz tylko do odczytu to wszystko, czego ten import potrzebuje, bo worker tylko listuje linki i nigdy nic nie zapisuje w Dub.
Odpowiedź to zwykła tablica JSON. Nie ma flagi "są kolejne", więc worker żąda kolejnych stron, aż któraś wróci krótsza niż 100 elementów albo pusta:
if len(links) == 0 { break }
// ... import each link ...
if len(links) < dubPageSize { break } // last page
page++
Jedno zastrzeżenie z własnej specyfikacji Dub: parametr page jest oznaczony jako przestarzały na rzecz stronicowania kursorem z startingAfter. Dziś nadal działa, a pageSize przyjmuje do 100. Jeśli Dub usunie page, importer będzie wymagał niewielkiej zmiany, i spodziewałbym się, że objawi się to nieudanym zadaniem z czytelnym błędem HTTP, a nie cichą utratą danych.
Strona limitów szybkości Dub (dostęp 2026-10-02) podaje 60 żądań na minutę w planie Free i 600 w Pro. Importer wstawia linki jeden po drugim do Postgresa między żądaniami, więc w praktyce nie zbliża się do limitu Free. Nie ma też ponawiania: HTTP 429 lub jakakolwiek odpowiedź inna niż 200 kończy zadanie jako nieudane z kodem statusu w komunikacie.
Co ląduje w Elido, pole po polu
| Pole Dub | W Elido | Uwagi |
|---|---|---|
key | Slug | Podlega strategii konfliktów poniżej |
url | Docelowy URL | Link bez URL lub bez klucza jest liczony jako nieudany |
title | Tytuł | Obcięty do 200 znaków |
tags[].name | Tagi | Tylko nazwy, kolory nie są przenoszone |
| (brak) | tag imported:dub | Dodawany do każdego zaimportowanego linku |
domain, folderId, archived, inne | Nieodczytywane | Zobacz dwie następne sekcje |
Wszystko inne w linku Dub jest porzucane: opis, obraz podglądu w mediach społecznościowych, wygaśnięcie, hasło, targetowanie geograficzne i według urządzenia, pola UTM, cele iOS i Android, flagi śledzenia konwersji. Jeśli link od któregoś z nich zależy, odbuduj go po imporcie. Elido ma własne reguły smart linków do targetowania, ale nic nie mapuje reguł Dub automatycznie.
Foldery, zarchiwizowane linki i domeny
Trzy pojęcia Dub nie są obsługiwane i każde może zaskoczyć.
Foldery. W schemacie linku Dub folder pojawia się tylko jako ciąg folderId. Importer nie ma dla niego pola i nie wykonuje drugiego wywołania, by rozwiązać nazwy folderów. Elido ma tagi, nie foldery, więc nawet przyszły importer musiałby je spłaszczyć. Dziś struktura folderów jest tracona. Jeśli ma znaczenie, zanotuj folder dla każdego sluga przed startem, a następnie otaguj zaimportowaną partię (filtr po imported:dub) ręcznie lub przez API.
Zarchiwizowane linki. Endpoint listy Dub przyjmuje parametr showArchived, którego domyślną wartością jest false. Importer nigdy go nie ustawia, więc zarchiwizowane linki nie są zwracane ani importowane. To rozsądne ustawienie domyślne dla migracji, ale warto o nim wiedzieć, jeśli celowo trzymasz stare linki kampanii w archiwum.
Domeny linków. Workspace Dub może zawierać linki na kilku domenach. Importer odczytuje wszystkie, ignoruje pole domain i tworzy każdy link na jednej wybranej przez Ciebie domenie Elido. Jeśli dwie domeny Dub używają tego samego klucza, druga trafia na konflikt. Strategia konfliktów decyduje, co dzieje się dalej, więc wybierz ją z tym na uwadze.
Konflikty, limity i kontrakt workera
Strategię konfliktów wybierasz przy starcie zadania:
suffixpróbujemylink-2,mylink-3i tak dalej do-50, po czym rezygnuje z tego linku i liczy go jako nieudany.skipzostawia istniejący link Elido w spokoju i loguje slug jako pominięty.failzatrzymuje całe zadanie przy pierwszym konflikcie.
Na uruchomienie worker zatrzymuje się na 50 000 linków (MaxLinksPerImport) lub po 30 minutach (ImportRunBudget), zależnie od tego, co nastąpi pierwsze. Postęp jest zapisywany co 50 linków, a dashboard go odpytuje. Dziennik błędów przechowuje najwyżej 1000 wpisów. Każde sprawdzenie sluga to jedno indeksowane wyszukiwanie po (domain_id, slug).
Nie robiłem benchmarku importów Dub na dużym koncie, więc nie podam liczby linków na minutę. Pętla to jedna strona HTTP ze 100 linkami, po której następuje 100 sekwencyjnych wstawień, więc czas trwania zależy od szybkości odpowiedzi Dub i Twojej bazy danych. Najpierw przetestuj na małym workspace.
Obsługa tokena i co dzieje się przy deployu
Klucz podróżuje w ciele żądania POST /imports/dub, jest trzymany w pamięci działającego workera i nigdy nie jest zapisywany: source_token_id w wierszu zadania pozostaje pusty. Tylko opcjonalny tekst workspace_id trafia do kolumny source_filter zadania.
Worker działa w goroutine oderwanej od żądania HTTP przez context.WithoutCancel. To utrzymuje go przy życiu po odpowiedzi, a oznacza też, że deploy lub restart zabija go w trakcie. Zadanie schedulera uruchamia się co 5 minut i oznacza jako nieudany każdy import w stanie running bez postępu przez 30 minut. Ponowne uruchomienie jest bezpieczne przy suffix (dostajesz kopie z -2 wszystkiego, co już zaimportowano) i przy skip (już zaimportowane sluga są pomijane). Nic jeszcze nie wznawia od ostatniej strony.
Lista linków w demonstracyjnym workspace z danymi syntetycznymi. Po imporcie filtruj po tagu imported:dub, by znaleźć partię.
Krótka lista kontrolna przed uruchomieniem
- Utwórz klucz API tylko do odczytu w swoim workspace Dub.
- Przywróć z archiwum wszystkie zarchiwizowane linki, które chcesz zachować, i zanotuj strukturę folderów, na której polegasz.
- Dodaj domenę docelową w Elido i wybierz
skiplubsuffix, wiedząc, że wszystkie domeny Dub zapadają się w tę jedną. - Uruchom import ze strony integracji w dashboardzie albo przez
POST /imports/dubztoken,target_domain_idiconflict_strategy. - Wyrywkowo sprawdź sluga i cele względem Dub, a potem zaktualizuj DNS dla każdej posiadanej domeny niestandardowej. Playbook przełączenia z Bitly opisuje kolejność DNS, która jest taka sama dla każdego dostawcy.
Jeśli wciąż decydujesz, czy w ogóle się przenosić, Elido vs Dub porównuje plany i funkcje, a RODO dla skracaczy URL wyjaśnia stronę rezydencji danych. Przewodnik od strony dostawcy znajduje się na stronie migracji z Dub.
Powiązane na blogu
- Elido vs Dub: SSO, śledzenie konwersji, rezydencja w UE
- Alternatywy dla Dub: 6 platform zarządzania linkami porównanych
- Wdrożenie migracji z Bitly: worker, token, budżet 30 minut
- Wdrożenie migracji z Rebrandly: stronicowanie po 25 na stronę
- Wdrożenie migracji z Short.io: stronicowanie per domena po 150 na stronę
Najczęściej zadawane pytania
Co importer Dub.co przenosi do Elido?
Dla każdego odczytanego linku importer przenosi slug (klucz Dub), docelowy URL, tytuł (obcięty do 200 znaków) i nazwy tagów oraz dodaje tag imported:dub. Nic więcej nie jest odczytywane z rekordu Dub: ani opis, ani wygaśnięcie, ani hasło, ani pola UTM, ani reguły targetowania, ani liczby kliknięć.
Czy moje foldery z Dub przetrwają import?
Nie. Endpoint listy Dub zwraca dla każdego linku tylko folderId, a nie nazwę folderu, i importer nie wyszukuje folderów. Zaimportowane linki zachowują tagi, ale przychodzą bez informacji o folderze. Jeśli polegasz na folderach, zanotuj przed startem, który tag lub wzorzec sluga odpowiada każdemu folderowi.
Czy zarchiwizowane linki Dub są importowane?
Nie domyślnie. Endpoint listy Dub pomija zarchiwizowane linki, chyba że zostanie wysłany parametr showArchived, a importer go nie wysyła. Przed uruchomieniem importu przywróć z archiwum wszystko, co chcesz zachować, albo odtwórz to ręcznie.
Czy mogę ograniczyć import do jednego workspace Dub?
Klucz API Dub należy do jednego workspace, więc klucz już ogranicza to, co jest wylistowane. API przyjmuje opcjonalne pole workspace_id i przekazuje je do Dub jako parametr zapytania, ale udokumentowane parametry listy Dub go nie zawierają. Formularz w dashboardzie nie ma takiego pola, więc traktuj to jako brak działania.
Ile linków może zaimportować jedno uruchomienie i jak długo to może trwać?
Uruchomienie zatrzymuje się na 50 000 linków lub po 30 minutach, zależnie od tego, co nastąpi pierwsze, i odczytuje 100 linków na żądanie. Powyżej tego zadanie jest oznaczane jako nieudane z komunikatem o budżecie w miejscu zatrzymania. Uruchomienie, które przez 30 minut nie robi postępu, jest również oznaczane jako nieudane przez sprzątanie.
Czy importer działa z self-hostowanym Dub?
Dziś nie. Baza API jest w kodzie na stałe ustawiona na https://api.dub.co i nie ma ustawienia ani zmiennej środowiskowej, by to zmienić. Self-hostowanej instancji Dub nie da się wskazać przez dashboard. Wyeksportuj swoje linki z własnej bazy danych i odtwórz je przez API Elido.
Wypróbuj Elido
Wklej URL, otrzymaj krótki link
Bez rejestracji. Link działa 30 dni. Zarejestruj się, aby zachować go na zawsze.
Za darmo, bez rejestracji · 2 dziennie