PlanDocket
Intermediate 20 min

Bulk Operations

Import up to 1,000 contacts or participants at once.

Prerequisites

  • An API key with the required scopes
  • An active PlanDocket account
1

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".

2

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"}
    ]
  }'
3

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}
    ]
  }'
Esc to close