Importazione CSV dei contatti
Importa contatti in blocco in un’area di lavoro da un file CSV. L’importazione viene eseguita in background: il file viene caricato nello storage a oggetti, un worker lo analizza e lo ingerisce a blocchi, e l’interfaccia mostra l’avanzamento in tempo reale.Panoramica
- Dalla pagina Contatti, fai clic su Importa CSV.
- Scegli uno o più file
.csvdal disco (seleziona più file per accodarli in sequenza). - Ogni file viene caricato, accodato per l’elaborazione, e vedrai
Caricamento → In coda → Elaborazione → Completato ✓con una barra di avanzamento per file e contatori aggiornati. - Le righe non andate a buon fine vengono riepilogate con un pulsante Visualizza errori — controllale, correggile nel tuo foglio di calcolo e ricarica il file corretto.
Colonne obbligatorie
Colonne opzionali
Le intestazioni delle colonne vengono confrontate senza distinzione tra maiuscole e minuscole. Le colonne non fornite
vengono ignorate — le colonne extra vengono saltate in sicurezza.
Formato del numero di telefono
Tutti i numeri di telefono devono essere normalizzati in formato E.164 — un formato internazionale che inizia con+, il prefisso internazionale, e solo cifre (senza spazi, trattini o
parentesi).
Suggerimento: se il tuo foglio di calcolo rimuove il
+ iniziale o introduce la notazione scientifica,
formatta la colonna del telefono come Testo prima di esportare.
Esempio di CSV
Limiti
- Dimensione file: 10 MB per file.
- Numero di righe: massimo consigliato 50.000 righe per file. Suddividi elenchi più grandi in più file e caricali in un’unica operazione — verranno elaborati in sequenza.
- Codifica: UTF-8. Esporta da Excel come “CSV UTF-8 (delimitato da virgole)” su macOS, oppure “CSV (delimitato da virgole) (*.csv)” con codifica UTF-8 su Windows.
- Terminatori di riga: sono supportati sia
\nche\r\n. - Escape: citazione CSV standard — racchiudi un campo tra
"…"per includere virgole o a capo, esegui l’escape di una virgoletta interna come"".
Risoluzione dei problemi
“missing name” / “missing phone” Alla riga manca un valore obbligatorio. Assicurati che la riga di intestazione usiname e
phone (o uno degli alias elencati) e che ogni riga di dati abbia entrambi i campi
compilati.
“invalid phone format”
Il numero di telefono non è stato normalizzabile in formato E.164. Aggiungi un prefisso internazionale con un
+ iniziale (es. +39…, +1…) oppure rimuovi i caratteri non numerici che interrompono
l’analisi.
“duplicate phone number (contact already exists)”
Un altro contatto nell’area di lavoro ha già questo numero di telefono. Le importazioni
non sovrascrivono i contatti esistenti — elimina o aggiorna prima il record esistente
se devi sostituirlo.
Importazione bloccata su “In coda”
Il worker in background è temporaneamente in ritardo sui job. L’interfaccia si aggiornerà
automaticamente quando il worker prenderà in carico il job — lascia la pagina aperta, oppure
controlla più tardi; lo stato del job viene mantenuto lato server.
“upload failed: 413”
Il tuo file supera il limite di 10 MB. Suddividilo in file più piccoli e caricali
insieme.
Come funziona
Sotto il cofano:POST /api/contacts/importaccetta dati multipart form, valida il file e lo carica nel bucket di storage a oggetticontact-importsal percorso{workspaceId}/{importId}/{filename}.- Viene inserita una riga in
public.contact_import_jobscon statopending, e viene accodato un job outboxcontacts.import.process. - Il worker prende in carico il job, scarica il file, analizza le righe, normalizza
i numeri di telefono e inserisce i contatti a blocchi di 100 — aggiornando
processed_rows,successful_rows,failed_rowseerror_reportdopo ogni blocco. GET /api/contacts/import/:idrestituisce lo stato corrente affinché l’interfaccia possa effettuare il polling.