Skip to main content

Import a customer base

You are launching your programme with an existing base: a Salesforce or HubSpot export, or a plain CSV file. Do not create customers one by one: import them in bulk.

Two paths​

CSV importBulk create (JSON)
EndpointPOST/csv-operations/import-csvPOST/clients/bulk
FormatCSV file as multipart/form-dataitems array as application/json
Best forA one-off migration from an exportA recurring sync from your CRM
TrackingGET/csv-operationsGET/bulk-operations/{operationId} or webhookUrl

Before you start​

Step 1 · Prepare the file​

One row per customer. Useful columns: first name, last name, email (required), phone, and if you have them: barcode (your customer number), customer type, starting balance, birth date, renewal date, admission date, company.

RuleWhy
One unique email per customerAn email already in the wallet is rejected (EMAIL_ALREADY_EXISTS).
One unique barcodeTwo customers never share a barcode (BARCODE_ALREADY_EXISTS).
Phone in international format (+33…)Required for SMS.
UTF-8 encodingAccented names stay readable on the card.

For the exact file template (column names, separator), contact eldo wallet support.

Step 2 · Upload the file​

POST/csv-operations/import-csvTry it
curl -L 'https://api-v2.test.eldowallet.fr/csv-operations/import-csv' \
-H 'Accept: application/json' \
-H 'x-lang: en' \
-H 'Authorization: Bearer <token>' \
-F 'file=@"clients.csv"' \
-F 'sendNotificationsToCustomers="false"'
Let curl write the Content-Type

With -F, curl sends multipart/form-data with its boundary. Do not add a Content-Type header yourself.

The import runs in the background. Track it with GET/csv-operations.

Step 3 · Decide who sends the cards​

sendNotificationsToCustomers decides what happens after the import:

ValueWhat happensBest for
"true"eldo wallet sends each customer their add-to-Wallet link.A launch with immediate activation.
"false"Records are created, nobody is notified.A silent migration, then your own campaign when you choose.

On the JSON path (POST/clients/bulk), make the same choice per customer with sendCard.

Alternative · Bulk create in JSON​

POST/clients/bulkTry it
curl -L 'https://api-v2.test.eldowallet.fr/clients/bulk' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'x-lang: en' \
-H 'Authorization: Bearer <token>' \
--data-raw '{
"webhookUrl": "https://crm.example.com/hooks/eldo",
"items": [
{
"firstName": "Marie",
"lastName": "Durand",
"email": "marie@example.com",
"source": "CRM",
"sendCard": true
},
{
"firstName": "Loïc",
"lastName": "Martin",
"email": "loic@example.com",
"barcode": "CRM-000124",
"source": "CRM",
"sendCard": true
}
]
}'
  • Up to 5,000 items per call, processed asynchronously.
  • The response holds the operation id: track it with GET/bulk-operations/{operationId}, or wait for the call on webhookUrl.
  • forceSync: true forces synchronous processing, rejected from 1,000 items (SYNC_EXECUTION_NOT_ALLOWED).

Step 4 · Handle rejects​

Check the operation result: customers created, duplicates, invalid rows. Fix the rejected rows and resend only those. Resending the whole file produces duplicate errors.

Step 5 · Track activation​

Maximum volume

A wallet holds up to 100,000 customers (SYSTEM_DOES_NOT_SUPPORT_MORE_THAN_100000_CUSTOMERS).

Go further​

API news, once a month

New endpoints, upcoming changes, guides and use cases. No spam, one-click unsubscribe.

Report a technical problem

An API error, a pass that does not update, an email that does not arrive? Describe the problem: our technical team will answer.

For a fast answer, include:

  • The method and endpoint (e.g. POST /clients)
  • The error code returned (errorCode) and the body sent
  • The date and time of the call
  • The identifiers involved (customer, template, pass)

Never include an API token or a password.

AI assistant

Beta

Loading…

AI-generated answers (Claude): double-check important details.

Sign in to use the assistant