Passa al contenuto principale

Importazioni CSV

Riseact permette di importare sostenitori e donazioni da file CSV. Gli importatori sono pensati come strumento di onboarding: servono a caricare i dati iniziali di un'organizzazione, non a mantenere una sincronizzazione continua con un CRM esterno.

Principi

  • Nessun aggiornamento dei record esistenti. Se un record corrispondente esiste già (in base alle chiavi di deduplica), viene mantenuto così com'è: i dati presenti non vengono mai sovrascritti.
  • Idempotenza. Reimportare lo stesso file non crea duplicati. La deduplica avviene tramite i riferimenti esterni (external ref) e, per le righe senza chiave, tramite un marcatore interno di riga.
  • Report in app. Ogni importazione genera un evento consultabile in Impostazioni → Importazioni, con stato, conteggi e righe scartate. Al termine viene inviata anche un'email di riepilogo.
  • Un'importazione per organizzazione alla volta. Finché un'importazione è in corso, non è possibile avviarne un'altra per la stessa organizzazione.

Limiti del file

VincoloValore
Righe dati (esclusa l'intestazione)max 10.000
Dimensione filemax 10 MB
CodificaUTF-8 (o UTF-8 con BOM)
Separatorevirgola (,)
ValutaEUR (unica supportata)

File più grandi vanno suddivisi in più importazioni.

Formato dell'intestazione

Le intestazioni sono minuscole, con le parole separate da spazi (non snake case, non Title Case). Esempio: first name, supporter external ref, payment date. Il confronto ignora maiuscole/minuscole e gli spazi esterni; spazi interni multipli vengono normalizzati a uno solo.

Unica eccezione: le colonne dei campi personalizzati, che mantengono il prefisso custom_ con underscore (vedi Campi personalizzati).

Valori: regole di formato

Queste regole valgono per entrambi gli importatori.

  • Importi (amount): formato fisso x.xx - cifre intere, punto come separatore decimale, esattamente due decimali (regex ^\d{1,10}\.\d{2}$). Non sono ammessi: virgola decimale (12,34), separatore delle migliaia (1.234,56), zero o un solo decimale (12, 12.3), valori ≤ 0.

  • Date e timestamp (payment date): ISO 8601 stretto. Formati accettati:

    • 2026-12-31
    • 2026-06-25 13:29:57
    • 2026-06-25T13:29:57.566Z

    Formati ambigui come 31/12/2026 non sono accettati. Se manca il fuso orario si assume UTC; se manca l'ora si assume 00:00.

  • Data di nascita (date of birth): YYYY-MM-DD.

  • Codice paese (country code): ISO 3166-1 alpha-2 (2 lettere, es. IT).

  • Codice fiscale / partita IVA: solo validazione formale (caratteri alfanumerici, entro la lunghezza massima); nessun controllo di esistenza.

  • Valori booleani (consensi marketing e campi personalizzati BOOLEAN): sono ammesse solo queste coppie (case-insensitive): t/f, true/false, 0/1. Cella vuota = valore non impostato. Qualsiasi altro valore (yes, si, x, …) fa fallire la riga.

  • Tag multivalore: più valori separati da virgola nella stessa cella. Poiché la virgola è anche il separatore CSV, la cella va racchiusa tra virgolette:

    ...,altro,"x,y,z",altro,...

    La cella "x,y,z" produce tre tag: x, y, z.

Deduplica

Sostenitore - catena di chiavi, la prima che trova vince e si ferma:

supporter external ref → email → ssn → vat

Se nessuna chiave è valorizzata, viene sempre creato un nuovo sostenitore (anonimo). Quando una chiave secondaria (email/ssn/vat) individua più sostenitori, vince quello con id più basso (regola deterministica).

Donazione - chiave donation external ref. Righe con lo stesso donation external ref confluiscono in una sola donazione con più pagamenti. Senza donation external ref ogni riga diventa una donazione one-off separata.

Pagamento - chiave (donazione, data pagamento, importo): evita di contare due volte lo stesso pagamento quando si reimporta il file.

Campi personalizzati

I campi personalizzati si importano con colonne dedicate custom_<key>, dove <key> è la chiave stabile di una definizione di campo personalizzato dell'organizzazione (es. custom_numero_tessera).

  • La definizione deve già esistere: l'importazione non crea nuovi campi personalizzati. Una <key> inesistente è un errore di intestazione.
  • La colonna viene assegnata all'entità della sua definizione: un custom_<key> di tipo sostenitore va sul sostenitore, uno di tipo donazione va sulla donazione (anche nel file donazioni denormalizzato).
  • Nell'importatore sostenitori sono ammesse solo <key> di tipo sostenitore.
  • Coerenza dei valori: BOOLEAN segue la regola booleana sopra; SELECT deve essere tra le opzioni della definizione; TEXT senza vincoli.

Report ed esito

Al termine, in Impostazioni → Importazioni trovi:

  • stato dell'importazione (In attesa, In corso, Completata, Fallita);
  • conteggi dei record creati (sostenitori, donazioni, pagamenti) e delle righe scartate;
  • l'elenco delle righe scartate con motivo, ed esportazione CSV del solo sottoinsieme scartato, da correggere e ricaricare.

Un errore a livello di file (CSV illeggibile, intestazioni non valide, file troppo grande, pre-flight fallito) fa fallire l'intera importazione senza creare alcun record. Un errore su una singola riga non blocca l'importazione: la riga finisce tra quelle scartate e l'importazione resta Completata.

Vedi le pagine dedicate per l'elenco completo delle colonne: