CSV Imports
Riseact imports supporters and donations from CSV files. The importers are meant to load an organization's initial data, not to sync with an external CRM.
Principles
- Existing records are not updated. If a record matches an existing one (according to the deduplication keys), it stays as it is.
- Re-importing the same file creates no duplicates. Deduplication uses external
references (
external ref) and, for rows without a key, an internal row marker. - In-app report. Every import appears in Settings > Imports, with status, counts and discarded rows. A summary email is sent when it finishes.
- One import at a time per organization.
File limits
| Constraint | Value |
|---|---|
| Data rows (excluding the header) | max 10,000 |
| File size | max 10 MB |
| Encoding | UTF-8 (or UTF-8 with BOM) |
| Separator | comma (,) |
| Currency | EUR |
Larger files must be split into multiple imports.
Header format
Headers are lowercase, with words separated by spaces: first name,
supporter external ref, payment date. Case and outer whitespace are ignored,
multiple internal spaces are reduced to one. It is the same convention as the
exports, so an exported file can be fixed and uploaded
again without renaming anything.
Two exceptions:
- custom field columns use the
custom_prefix (see Custom fields); - identifier columns (
id,supporter id,donation id) are ignored: ids are assigned by Riseact. Any other unknown column is an error, so typos are caught.
Values: format rules
They apply to both importers.
Amounts (
amount):x.xx, dot as decimal separator, exactly two decimals (regex^\d{1,10}\.\d{2}$). Rejected: decimal comma (12,34), thousands separator (1.234,56), zero or one decimal (12,12.3), zero or negative values.Dates and timestamps (
payment date): strict ISO 8601, for example:2026-12-312026-06-25 13:29:572026-06-25T13:29:57.566Z
31/12/2026is not accepted. Without a time zone UTC is assumed, without a time00:00.Date of birth (
date of birth):YYYY-MM-DD.Country code (
country code): ISO 3166-1 alpha-2 (e.g.IT).Tax identification number and VAT number: format validation only (alphanumeric, within the maximum length).
Booleans (marketing consents and BOOLEAN custom fields): only
t/f,true/false,0/1, case-insensitive. Empty cell = not set. Any other value (yes,si,x) makes the row fail.Multi-value tags: comma separated in the same cell, which must therefore be enclosed in quotes:
...,altro,"x,y,z",altro,..."x,y,z"produces three tags:x,y,z.
Deduplication
Supporter: the first key that finds a match wins, in this order:
supporter external ref -> email -> ssn -> vat
With no key set, a new supporter is always created. If a secondary key (email, ssn,
vat) matches more than one supporter, the one with the lowest id wins.
Donation: key donation external ref. Rows with the same value merge into a
single donation with multiple payments. Without donation external ref each row
becomes a one-off donation.
Payment: key (donation, payment date, amount), so re-importing the file does
not duplicate payments.
Custom fields
They are imported with custom_<key> columns, where <key> is the key of the custom
field definition (e.g. custom_numero_tessera).
- The definition must already exist: an unknown
<key>is a header error. - The value goes to the entity of the definition: a supporter field on the supporter, a donation field on the donation.
- The supporters importer accepts only supporter fields.
BOOLEANfollows the boolean rule above,SELECTmust be one of the definition's options,TEXTis free.
Report and outcome
In Settings > Imports you will find:
- the status (
Pending,In progress,Completed,Failed); - the created records (supporters, donations, payments) and the number of discarded rows;
- the discarded rows with their reason, exportable to CSV to fix and upload again.
A file error (unreadable CSV, invalid headers, file too large, failed pre-flight
check) makes the import fail without creating records. A row error discards
only that row and the import stays Completed.
The columns are listed in: