Migrare l'infrastruttura dei link è un'operazione ad alto rischio. Ogni link abbreviato che hai mai stampato, incorporato in un footer di email o impresso su un codice QR è ora una dipendenza. Un movimento maldestro e generi un 404 su una fetta significativa del traffico in entrata per settimane prima che qualcuno se ne accorga.
Questa guida illustra come passare da Bitly a Elido. Si presuppone che tu abbia già deciso di effettuare il cambio - di solito per la residenza dei dati nell'UE, un'esperienza del piano gratuito più pulita, la rivendita white-label o l'accesso alle API che su Bitly richiede il piano Premium ($199/mese annuale o $300/mese mensile a maggio 2026). Se stai ancora valutando, la pagina di confronto su /compare/vs-bitly è il punto di partenza più indicato.
Cosa devi effettivamente migrare#
Tre elementi si spostano; nient'altro ha importanza a livello di protocollo.
- Link abbreviati attivi. Lo slug, la destinazione, eventuali tag e cartelle e il dominio personalizzato (se presente).
- DNS del dominio personalizzato. Il record CNAME che punta all'edge di Bitly deve puntare a quello di Elido.
- Cronologia dei clic. I contatori aggregati di Bitly - non gli eventi grezzi (questi non sono esportabili).
Tutto il resto - le dashboard di Bitly Sights, i codici QR brandizzati, le configurazioni di deep link - è configurazione ex novo su Elido, non migrazione. Non cercare di portarli; ricostruiscili una volta sola sul nuovo stack.
Fase 1: inventario#
Bitly limita l'export dei dati storici in base al piano. L'export CSV dalla dashboard funziona fino a circa 10.000 link; oltre questo limite va in timeout o impagina male. Per inventari più grandi, accedi direttamente alle API:
curl -H "Authorization: Bearer $BITLY_TOKEN" \
"https://api-ssl.bitly.com/v4/groups/$GROUP_GUID/bitlinks?size=100"
Pagina tramite l'URL pagination.next in ogni risposta. La dimensione massima della pagina è 100. Salva i risultati come JSONL - un link per riga - così puoi riprendere se l'export si blocca.
Cosa ti serve da ogni riga:
link- l'URL abbreviato completo (https://bit.ly/abcohttps://tuodominio.com/abc)long_url- la destinazionetags,archived,created_atlink_clicks(totale nel tempo) - l'unica cronologia dei clic che otterrai da Bitly
Filtra i link archiviati a meno che tu non abbia un motivo per tenerli. La maggior parte dei team scopre che il 30–50% del proprio inventario è inattivo - vecchie campagne, condivisioni occasionali - e la migrazione è il momento giusto per eliminare il superfluo.
Fase 2: pre-provisioning su Elido#
Prima di toccare il DNS, riserva ogni link su Elido sotto lo stesso dominio personalizzato e slug.
Per inventari di grandi dimensioni, usa links.bulkCreate anziché creare link singoli. Avrai bisogno del tuo ID workspace Elido e dell'ID numerico del dominio (cerca prima il dominio con workspaceDomains.list(workspaceId)):
import { ElidoApi } from "@elido/sdk";
const api = new ElidoApi({ apiKey: process.env.ELIDO_API_KEY! });
// Risolvi l'ID numerico del tuo dominio personalizzato una sola volta, prima del ciclo di importazione
const { items: domains } = await api.workspaceDomains.list(WORKSPACE_ID);
const domain = domains.find((d) => d.hostname === "links.tuobrand.com");
if (!domain) throw new Error("Domain not registered in workspace");
// Suddividi il JSONL in blocchi da 100 (il massimo per l'endpoint di creazione in blocco)
async function migrateChunk(rows: BitlyRow[]) {
return api.links.bulkCreate(
WORKSPACE_ID,
{
domain_id: domain.id,
links: rows.map((row) => ({
slug: row.slug,
destination_url: row.long_url,
tags: [
...row.tags,
`bitly-migrated`, // tag per il filtraggio nell'analytics
],
title: row.title ?? undefined,
})),
},
{ idempotencyKey: `mig-batch-${rows[0].slug}` },
);
}
L'endpoint links.bulkCreate (POST /v1/workspaces/{workspace_id}/links/bulk) accetta fino a 100 link per chiamata e restituisce lo stato di successo/fallimento per ogni elemento, quindi un errore parziale non interrompe il batch. Per le importazioni di link singoli, links.create(workspaceId, input, { idempotencyKey }) accetta gli stessi campi domain_id / slug / destination_url / tags e una chiave di idempotenza opzionale in modo che uno script parziale possa riprendere in sicurezza.
Alcune cose da sapere prima di eseguire lo script:
- Prima la registrazione del dominio. Il
domain_idnel corpo della richiesta deve fare riferimento a un dominio già registrato nel tuo workspace. Registra e verifica il dominio tramite il flusso dei domini personalizzati prima di avviare l'importazione. Il dominio non deve essere ancora attivo - puoi registrarlo in Elido prima del cambio DNS. - Limiti del piano. Elido applica limiti di link a livello di workspace per piano. Il pre-provisioning di un inventario da 100.000 link richiede un piano Business.
- Limiti di frequenza. La creazione in blocco è soggetta agli stessi limiti di frequenza a livello di workspace delle creazioni individuali. Una migrazione da 50.000 link richiede circa 10 minuti se si inviano batch da 100 link per chiamata con un modesto parallelismo. Mantieni l'esecuzione seriale o con bassa concorrenza da un unico runner in modo che il log di audit mostri un blocco di importazione pulito.
Fase 3: reindirizzamento del dominio personalizzato#
Questo è il cambio. Tutto ciò che viene prima è reversibile; tutto ciò che viene dopo è in produzione.
Abbassa il TTL sul CNAME Bitly esistente almeno 24 ore prima della finestra di cambio:
links.tuobrand.com. 300 IN CNAME cname.bitly.com.
Se il TTL è stato 86400 per anni, "abbassare il TTL" è un'attesa di 24 ore, non un'operazione di cinque minuti. Pianifica di conseguenza.
Quando si apre la finestra di modifica, sostituisci la destinazione:
links.tuobrand.com. 300 IN CNAME edge.elido.me.
L'edge di Elido usa il TLS automatico on-demand. La prima richiesta dopo la propagazione del DNS attiva l'emissione di un certificato Let's Encrypt - in genere 1–3 secondi di latenza per quella singola richiesta, poi il certificato viene messo in cache e le richieste successive vengono servite dall'edge in regione UE in pochi milliseconds. Il certificato viene predisposto automaticamente; non è previsto alcun passaggio manuale di richiesta del certificato.
Verifica con dig da alcune reti diverse prima di dichiarare completato il cambio. La propagazione DNS è irregolare; verificare solo dal tuo laptop significa aver controllato un solo resolver.
Fase 4: riconciliazione della cronologia dei clic#
Bitly non esporta gli eventi di clic grezzi. Non pianificare tempo per "importare la tua cronologia" - non è possibile, e qualsiasi strumento che lo promette sta leggendo aggregati e li chiama eventi.
Quello che ottieni è il contatore link_clicks per link dall'export dell'API Bitly. Conservalo in un posto dove puoi unirlo al tuo inventario di link Elido - una colonna separata in un dataset Metabase, un tag se lo vuoi in linea. Elido inizia a contare da zero al momento del cambio.
Per il layer di reporting, la formula è: total_clicks = elido_clicks + bitly_lifetime_clicks. L'API di analytics espone i dati dei clic di Elido su /v1/analytics/workspaces/{workspace_id}/timeseries; una query di 20 righe su Metabase o Hex unisce i due numeri se hai conservato il baseline Bitly.
Se hai bisogno di analytics storici granulari - suddivisione geografica per mese, tendenze dei referrer - non torneranno. Ricostruisci le domande sul log degli eventi grezzi di Elido da questo momento in avanti; la migrazione è il limite netto.
Cinque trappole che scattano nella seconda settimana#
1. Link bit.ly hardcoded in asset statici. PDF, materiale stampato, snippet incorporati nelle email di benvenuto. Questi puntano al dominio di Bitly, non al tuo dominio personalizzato. Continuano a funzionare finché mantieni l'account Bitly; si interrompono nel momento in cui annulli. O mantieni in vita un account Bitly gratuito come cimitero solo per i reindirizzamenti, oppure accetta la perdita e non annullare per almeno un anno.
2. Doppio reindirizzamento CDN. Se metti davanti al tuo dominio Cloudflare in modalità proxy (nuvola arancione), l'handshake SSL verso Elido potrebbe entrare in conflitto con l'Universal SSL di Cloudflare. Imposta SSL di Cloudflare su "Full (Strict)" e rimuovi le Page Rules che facevano riferimento alla vecchia destinazione Bitly. Oppure metti il record in grey-cloud temporaneamente durante la finestra di cambio.
3. Troncamento degli UTM nell'export. Bitly a volte mostra un URL di destinazione abbreviato nella dashboard ma memorizza l'URL canonico completo. L'export CSV di solito ha l'URL completo; la vista della dashboard potrebbe non averlo. Se effettui lo scraping della dashboard invece di chiamare l'API, perderai gli UTM. Usa sempre l'API.
4. Limiti di frequenza dell'API Bitly lato lettura. L'API Bitly throttle in modo aggressivo su GET /bitlinks per gli account ad alto volume. Leggere 1 milione di link in sequenza può richiedere giorni. Impagina in parallelo (4–8 paginatori concorrenti) ma monitora i 429; fai backoff quando si verificano.
5. Scoping a livello di account vs. a livello di gruppo Bitly. I gruppi Bitly non sono workspace. Un singolo account Bitly può possedere più gruppi, ciascuno con la propria configurazione di dominio personalizzato. Se il tuo team ha aggiunto domini sotto gruppi diversi nel corso degli anni, l'export deve enumerare tutti i gruppi, non solo quello predefinito. Manca un gruppo e quel dominio non viene migrato.
Conformità: perché la maggior parte dei team effettua davvero il passaggio#
La migrazione è solitamente guidata dalla conformità, non dalle funzionalità. Lo schema ricorrente:
- Il DPO segnala Bitly come sub-incaricato con sede negli USA; l'affidamento al Data Privacy Framework viene contestato in un audit.
- Il procurement richiede l'elenco dei sub-incaricati; quello di Bitly arriva a oltre 20 fornitori.
- Il BAA sul piano Premium ($300/mese fatturato mensilmente, o $199/mese con impegno annuale, a maggio 2026 - verifica il prezzo attuale) diventa un requisito per i clienti adiacenti al settore sanitario, e il salto di piano è il fattore scatenante.
Elido è ospitato nell'UE per impostazione predefinita - gli eventi di clic transitano dalla regione UE, con USA Est e Asia-Pacifico disponibili come regioni opt-in per Business+. L'elenco dei sub-incaricati conta cinque fornitori, pubblicato su /legal/subprocessors. La certificazione ISO 27001 è attiva; SOC 2 Type II è in fase di audit. Il BAA è disponibile su Business+. Schrems II non è un problema nella configurazione predefinita perché i dati non escono dal SEE a meno che un workspace non selezioni esplicitamente una regione non UE.
Se la conformità è il driver, il piano di migrazione dovrebbe includere un diagramma di flusso dei dati affiancato: dove si trovavano gli eventi di clic prima, dove si trovano adesso. Quel diagramma è ciò che il tuo revisore vorrà vedere alla prossima valutazione.
Il self-hosting come alternativa#
Per i team il cui profilo di sicurezza esclude qualsiasi URL shortener SaaS - servizi finanziari, governo, sanità - Elido fornisce un Helm chart Apache 2.0. Stesso binario che gira nella nostra regione UE, deployato nel tuo VPC, KMS BYO per la crittografia, nessun sub-incaricato di terze parti. La migrazione è identica tranne per la fase 3 (DNS) che punta al tuo ingress in-cluster invece di edge.elido.me.
Il runbook per il self-hosting copre l'installazione Helm, il bootstrap dei segreti e il cablaggio del livello di autenticazione; prevedi mezza giornata per un deploy ex novo su un cluster k8s esistente.
Flusso di lavoro per gli sviluppatori dopo la migrazione#
Una volta su Elido, l'API è la superficie principale per qualsiasi team che crea più di qualche link a settimana. Le specifiche OpenAPI 3.1 si trovano su /help; il pacchetto @elido/sdk copre l'API in TypeScript, e un SDK Go è disponibile in packages/sdk-go.
Per i flussi di lavoro basati su agenti, il server MCP open source collega Elido a Claude, Cursor o qualsiasi client compatibile con MCP:
{
"mcpServers": {
"elido": {
"command": "npx",
"args": ["-y", "@elido/mcp-server"],
"env": { "ELIDO_API_KEY": "elido_pk_..." }
}
}
}
Sola lettura per impostazione predefinita - gli agenti possono interrogare l'analytics e cercare link senza scrittura. Concedere il permesso di scrittura è un'impostazione deliberata per workspace.
Checklist finale prima del cambio#
- Il token API Bitly ha accesso a tutti i gruppi, non solo a quello predefinito
- Inventario esportato come JSONL, link archiviati filtrati, conteggio incrociato verificato rispetto alla dashboard Bitly
- Tutti gli slug pre-provisionati su Elido sotto il dominio personalizzato corretto; lo script ha restituito il 100% di successo su un dry-run
- Dominio personalizzato registrato e verificato nel workspace Elido prima di toccare il DNS
- TTL DNS sul CNAME Bitly esistente abbassato a 300s, almeno 24 ore prima del cambio
- Modalità proxy Cloudflare e impostazione SSL verificate compatibili con l'edge di Elido
- Conteggi dei clic a vita Bitly acquisiti all'ora del cambio e conservati per il reporting
- Almeno un link di test inverso stampato e scansionato per confermare il funzionamento end-to-end
- Account Bitly programmato per rimanere attivo per 90 giorni dopo il cambio come assicurazione per i link
bit.lyhardcoded
Fatto correttamente, il cambiamento è invisibile per l'utente finale. Fatto male, si trascorrono due settimane a rispondere a ticket "perché bit.ly non funziona?" da parte di qualcuno che non si rende conto che non è colpa sua.
Il lavoro tecnico è semplice. La disciplina sta nella preparazione.
Correlati sul blog#
- Migrare da Bitly senza rompere i link: un playbook sui modi di fallimento
- Migrare da Rebrandly: handover del dominio brandizzato senza perdita di slug
- Residenza dei dati UE per gli strumenti di marketing: cosa chiede davvero il tuo DPO
- Configurare link abbreviati brandizzati: scegli un dominio, lancia in un pomeriggio
Prova Elido
Incolla un URL, ottieni un link breve
Senza registrazione. Il link vive 30 giorni. Iscriviti per conservarlo.
Gratis, nessuna registrazione richiesta · 2 al giorno