Bulk Operations
Import up to 1,000 contacts or participants at once.
Prerequisites
- An API key with the required scopes
- An active PlanDocket account
Prepare Your Data
Prepare your data in JSON format. The bulk import supports contacts and participants with up to 1,000 records per request. You can use three modes: "create" (default, skip existing), "update" (only update existing), or "upsert" (create or update). Records are matched by "email" (default) or "customer_number".
Import Contacts
Send contact data to the bulk import endpoint. Use "mode" to control create/update behavior, "match_field" to specify how to find existing records, and "skip_on_error" (default: true) to continue on individual record failures.
curl -X POST "https://your-tenant.plandocket.com/api/v1/bulk-import/contacts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mode": "upsert",
"match_field": "email",
"skip_on_error": true,
"records": [
{"email": "john@example.com", "first_name": "John", "last_name": "Doe", "company_name": "Acme Inc"},
{"email": "jane@example.com", "first_name": "Jane", "last_name": "Smith", "company_name": "Beta Corp"}
]
}'
Import Participants
Import participants for a specific event. Provide the "event_key" to link participants to an event. The "create_contacts" option (default: true) automatically creates contacts for records that do not yet exist. Set it to false to skip records without an existing contact.
curl -X POST "https://your-tenant.plandocket.com/api/v1/bulk-import/participants" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"event_key": "expo-2025",
"mode": "create",
"match_field": "email",
"create_contacts": true,
"records": [
{"email": "john@example.com", "is_confirmed": true},
{"email": "jane@example.com", "is_confirmed": false}
]
}'