Add or update locations, services, or staff members from a CSV file

Add (or update) a list of locations, services, or staff members from a CSV file. The endpoint accepts a directory_type path parameter that determines the type of directory to import. The CSV must use comma as the column separator. For pipe-separated multi-value fields, use pipe (|) as the list separator and colon (:) as the key-value separator. The CSV columns vary per type — see each section below.

locations — CSV columns

  • LOCATION_ID

    • optional
    • External identifier of the location. If omitted, a random UUID is generated. Used as the upsert key.
  • LOCATION_NAME

    • required
    • Name of the location.
  • LOCATION_ALTERNATIVE_NAMES

    • optional
    • Alternative names separated by |. Example: Store A|Store B
  • LOCATION_TYPE

    • optional
    • Type/category of the location. Free text.
  • ADDRESS_STREET

    • required
    • Street address of the location.
  • ADDRESS_POSTAL_CODE

    • required
    • Postal/zip code of the location.
  • ADDRESS_CITY

    • optional
    • City of the location.
  • ADDRESS_REGION

    • optional
    • Region or state (country subdivision).
  • COUNTRY_NAME

    • required
    • Country name.
  • LOCATION_PICTURE_URL

    • optional
    • Public image URL. Must start with http:// or https:// and end in .jpg, .jpeg, .png, or .webp. Max 1MB, 550x220px.
  • PHONE_NUMBER

    • optional
    • Phone numbers. Format per entry: number:label. Multiple entries separated by |. Example: +12029182132:Main|+12029182133:Fax
  • TIMEZONE

    • required
    • IANA timezone ID. Example: America/Los_Angeles, Europe/Lisbon.
  • BUSINESS_MON / BUSINESS_TUE / BUSINESS_WED / BUSINESS_THU / BUSINESS_FRI / BUSINESS_SAT / BUSINESS_SUN

    • optional
    • Business hours per weekday. Format per slot: hh:mmAM-hh:mmPM. Multiple slots separated by |. Example: 09:00AM-01:00PM|02:00PM-05:00PM
  • SPECIAL_DATES

    • optional
    • JSON array of special dates/holidays. Each element has the fields name, date (yyyy-MM-dd), repeat_rule (DOES_NOT_REPEATS, MONTHLY, or YEARLY), business_hours (array of open_at/close_at in HH:mm:ss), and notes.

staffs — CSV columns

  • STAFF_ID

    • optional
    • External identifier of the staff member. If omitted, a random UUID is generated.
  • NAME

    • required
    • Full name of the staff member.
  • DESCRIPTION

    • optional
    • Bio or description of the staff member.
  • SPECIALTIES

    • optional
    • Specialties separated by |. Example: cardiology|pediatrics
  • PRONOUNS

    • optional
    • Pronouns. Example: she/her, he/his, they/them
  • MANAGER

    • optional
    • Name of the direct manager/supervisor.
  • JOB_TITLE

    • optional
    • Professional title. Example: Senior Cardiologist
  • CONTACT

    • optional
    • Contact entries separated by |. Format per entry: type:value or type:value:description. Example: phone:+12029182132:Work|email:[email protected]:Work Email
  • PHOTO_URL

    • optional
    • Public photo URL. Must start with http:// or https:// and end in .jpg, .jpeg, .png, or .webp.
  • GENDER

    • optional
    • Gender of the staff member. Free text.
  • LANGUAGES

    • optional
    • Languages spoken, separated by |. Example: English|Spanish
  • DATE_OF_BIRTH

    • optional
    • Date of birth. Format: yyyy-MM-dd or yyyy/MM/dd. Example: 1980-05-15
  • EMPLOYMENT_START_DATE

    • optional
    • Date of hire. Format: yyyy-MM-dd or yyyy/MM/dd. Example: 2018-03-01
  • LOCATION_AND_SERVICE_NAMES

    • optional
    • Location/service relationships separated by |. Format per entry: locationExternalId:serviceExternalId. Either part may be empty (e.g. :serviceId or locationId:). Both IDs must exist for the account, and the service must belong to the referenced location. Example: loc-id-1:svc-id-1|loc-id-2:
  • VISIT_TYPES

    • optional
    • Visit types separated by |. Format per entry: id:name. Example: in-person:In-Person|virtual:Virtual
  • TAGS

    • optional
    • JSON array of tag objects. Each element has the fields tag_name, background_color, and text_color (hex). Example: [{"tag_name":"VIP","background_color":"#EFDBFF","text_color":"#391085"}]

services — CSV columns

  • SERVICE_ID

    • optional
    • External identifier of the service. If omitted, a random UUID is generated.
  • SERVICE_NAME

    • required
    • Name of the service.
  • DESCRIPTION

    • required
    • Description of the service.
  • SERVICE_TYPE

    • optional
    • Type/category of the service. Free text.
  • DURATION

    • optional
    • Duration of the service. Free text. Example: 30-45 minutes
  • VIRTUAL_LOCATION_URL

    • optional
    • URL for virtual/online appointments.
  • PRICE

    • optional
    • Price of the service. Free text. Example: 50$, Free
  • PHONE_NUMBER

    • optional
    • Phone numbers. Format per entry: number:label. Multiple entries separated by |. Example: +12029182132:Appointments
  • TIMEZONE

    • optional — required when any BUSINESS* column or SPECIAL_DATES is provided_
    • IANA timezone ID. Example: Europe/Lisbon.
  • BUSINESS_MON / BUSINESS_TUE / BUSINESS_WED / BUSINESS_THU / BUSINESS_FRI / BUSINESS_SAT / BUSINESS_SUN

    • optional
    • Business hours per weekday. Format per slot: hh:mmAM-hh:mmPM. Multiple slots separated by |. Example: 09:00AM-01:00PM|02:00PM-05:00PM
  • LOCATIONS

    • optional
    • External IDs of associated locations separated by |. Each ID must exist for the account. Example: loc-ext-id-1|loc-ext-id-2
  • SPECIAL_DATES

    • optional
    • JSON array of special dates/holidays. Each element has the fields name, date (yyyy-MM-dd), repeat_rule (DOES_NOT_REPEATS, MONTHLY, or YEARLY), business_hours (array of open_at/close_at in HH:mm:ss), and notes.
Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Scope

locations-directory-bulk-operation:write

Path Params
string
enum
required
length ≥ 1

The directory type to import.

Allowed:
Body Params

CSV file with directory data. The columns vary depending on the directory_type — see the endpoint description above for the full column reference for each type.

file
required

CSV file with the rows to import. The accepted columns depend on the directory_type path parameter:

  • locations — see the locations CSV column reference in the endpoint description.
  • staffs — see the staffs CSV column reference in the endpoint description.
  • services — see the services CSV column reference in the endpoint description.
Responses
202

The file has been accepted and will be processed asynchronously.

Language
Credentials
OAuth2
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json