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
Missing 1 required scope
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json