> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nekt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Salesloft as a data source

> Bring data from Salesloft to your Lakehouse.

Salesloft is a sales engagement platform where revenue teams run their outbound and follow-up motion: cadences (sequences of calls, emails and tasks), contacts and accounts, meetings, and the opportunities they generate. Nekt extracts this data through the Salesloft API v2.

For more info on the streams and permissions, check the [Salesloft API documentation](https://developers.salesloft.com/docs/api/).

## Configuring Salesloft as a Source

In the [Sources](https://app.nekt.ai/sources) tab, click on the "Add source" button located on the top right of your screen. Then, select the Salesloft option from the list of connectors.

Click **Next** and you'll be prompted to add your access.

### 1. Add account access

The connector authenticates with an API key issued from your own Salesloft account. To create one, open Salesloft, go to **Your Applications > API Keys** and click **Create New**. When creating the key, select the read scopes of the data you want to sync — for the full set of streams, that means `accounts:read`, `people:read`, `cadences:read`, `emails:read`, `calls:read`, `meetings:read`, `tasks:read`, `notes:read`, `opportunities:read`, `crm:read`, `team:read` and `workflow:read`.

<Warning>An API key acts on behalf of the user who created it and inherits that user's visibility. If the key is missing a scope, the streams that depend on it are skipped with a warning instead of failing the extraction.</Warning>

The following configuration is required:

* **API Key**: The API key created under Your Applications > API Keys.

Optionally, under advanced settings:

* **Start Date**: The earliest date from which records will be synced for incremental streams. When omitted, the first sync fetches the full history.

Once you're done, click **Next**.

### 2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.

> Tip: The stream can be found more easily by typing its name.

Select the streams and click **Next**.

### 3. Configure data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.

* **Layer**: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
* **Folder**: a folder can be created inside the selected layer to group all tables being created from this new data source.
* **Table name**: we suggest a name, but feel free to customize it. You have the option to add a **prefix** to all tables at once and make this process faster!
* **Sync Type**: you can choose between INCREMENTAL and FULL\_TABLE.
  * Incremental: every time the extraction happens, we'll get only the new data - which is good if, for example, you want to keep every record ever fetched.
  * Full table: every time the extraction happens, we'll get the current state of the data - which is good if, for example, you don't want to have deleted data in your catalog.

Once you are done configuring, click **Next**.

### 4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters.

To define your [Trigger](https://docs.nekt.com/get-started/core-concepts/triggers), consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times).

Once you are ready, click **Next** to finalize the setup.

### 5. Check your new source

You can view your new source on the [Sources](https://app.nekt.ai/sources) page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.

<Warning>For you to be able to see it on your [Catalog](https://app.nekt.ai/catalog), you need at least one successful source run.</Warning>

## Rate limits

Salesloft applies a team-wide budget of 600 request "cost" per minute, shared by every integration connected to your Salesloft team. The connector watches the remaining budget, pauses when it runs low and retries rate-limited requests, so extractions coexist with your other Salesloft integrations. Very large first syncs may therefore take longer than the incremental runs that follow.

# Streams and Fields

Below you'll find all available data streams from Salesloft and their corresponding fields. Streams that expose an `updated_at` timestamp are synced incrementally; configuration and reference streams (stages, tiers, tags, dispositions, templates attachments, users, team) are extracted as full tables.

<AccordionGroup>
  <Accordion title="Accounts">
    Companies tracked in Salesloft, including CRM identifiers, owner and engagement counters. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - ID of Account
    * `created_at` - Datetime of when the Account was created
    * `updated_at` - Datetime of when the Account was last updated
    * `archived_at` - Datetime of when the Account was archived, if archived
    * `name` - Account Full Name
    * `domain` - Website domain, not a fully qualified URI
    * `conversational_name` - Conversational name of the Account
    * `description` - Description
    * `phone` - Phone number without formatting
    * `website` - Website
    * `linkedin_url` - Full LinkedIn url
    * `twitter_handle` - Twitter handle, with @
    * `street` - Street name and number
    * `city` - City
    * `state` - State
    * `postal_code` - Postal code
    * `country` - Country
    * `locale` - Time locale
    * `industry` - Industry
    * `company_type` - Type of the Account's company
    * `founded` - Date or year of founding
    * `revenue_range` - Estimated revenue range
    * `size` - Estimated number of people in employment
    * `crm_id` - CRM ID
    * `crm_url` - CRM url
    * `crm_object_type` - CRM object type
    * `owner_crm_id` - Mapped owner field from the CRM
    * `prospector_engagement_score` - Prospector engagement score for this account, normalized on a scale of 0.0 to 5.0. For the customers that do not opt-in to account engagement scoring, it will always be null
    * `prospector_engagement_level` - Prospector engagement level for this account, derived from prospector\_engagement\_score. For the customers that do not opt-in to account engagement scoring, it will always be null
    * `last_contacted_at` - Datetime this Account was last contacted
    * `last_contacted_type` - The type of the last touch to this Account. Can be call, email, other
    * `do_not_contact` - Whether this company has opted out of communications. Do not contact someone at this company when this is set to true
    * `custom_fields` - Custom fields are defined by the user's team. Only fields with values are presented in the API. (JSON object)
    * `user_relationships` - Filters by accounts matching all given user relationship fields, \_is\_null or \_unmapped can be passed to filter accounts with null or unmapped user relationship values (JSON object)
    * `tags` - All tags applied to this Account
    * `counts` - Counts (JSON object)
    * `owner_id` - ID of the user that is marked as the owner of this Account
    * `creator_id` - ID of the user that created this Account
    * `last_contacted_by_id` - ID of the user that last contacted this Account
    * `last_contacted_person_id` - ID of the person who was last contacted at this Account
    * `company_stage_id` - ID of the company Stage that this Account has set. This is referred to as Account Stage in other parts of the API. When sorting by account\_stage, the company stage's order is used
    * `account_tier_id` - ID of the account Tier that this Account has set
  </Accordion>

  <Accordion title="People">
    Contacts tracked in Salesloft, with contact details, ownership, stage and engagement counters. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - Person ID
    * `created_at` - Datetime of when the person was created
    * `updated_at` - Datetime of when the person was last updated
    * `last_contacted_at` - Last datetime this person was contacted
    * `last_replied_at` - Last datetime this person replied to an email
    * `first_name` - First name
    * `last_name` - Last name
    * `display_name` - Either the full name or the email address. Use this when showing a person's name
    * `email_address` - Email address
    * `full_email_address` - Full email address with name
    * `secondary_email_address` - Alternate email address
    * `personal_email_address` - Personal email address
    * `phone` - Phone without formatting
    * `phone_extension` - Phone extension without formatting
    * `home_phone` - Home phone without formatting
    * `mobile_phone` - Mobile phone without formatting
    * `linkedin_url` - Linkedin URL
    * `title` - Job title
    * `city` - City
    * `state` - State
    * `country` - Country
    * `work_city` - Work location - city
    * `work_state` - Work location - state
    * `work_country` - Work location - country
    * `crm_url` - CRM url
    * `crm_id` - CRM ID
    * `account_crm_id` - Account CRM ID
    * `crm_object_type` - CRM object type
    * `owner_crm_id` - Mapped owner field from your CRM
    * `person_company_name` - Company name. This property is specific to this person, unrelated to the company object. Updating the company object associated with this person is recommended
    * `person_company_website` - Company website. This property is specific to this person, unrelated to the company object. Updating the company object associated with this person is recommended
    * `person_company_industry` - Company industry. This property is specific to this person, unrelated to the company object. Updating the company object associated with this person is recommended
    * `do_not_contact` - Whether or not this person has opted out of all communication. Setting this value to true prevents this person from being called, emailed, or added to a cadence in SalesLoft. If this person is currently in a cadence, they will be removed
    * `bouncing` - Whether this person's current email address has bounced
    * `locale` - Time locale of the person
    * `locale_utc_offset` - The locale's timezone offset from UTC in minutes
    * `eu_resident` - Whether this person is marked as a European Union Resident or not
    * `personal_website` - The website of this person
    * `twitter_handle` - The twitter handle of this person
    * `last_contacted_type` - The type of the last touch to this person. Can be call, email, other
    * `job_seniority` - The Job Seniority of a Person, must be one of director, executive, individual\_contributor, manager, vice\_president, unknown
    * `job_function` - The Job Function of a Person
    * `custom_fields` - Custom fields are defined by the user's team. Only fields with values are presented in the API. (JSON object)
    * `tags` - All tags applied to this person
    * `contact_restrictions` - Specific methods of communication to prevent for this person. This will prevent individual execution of these communication types as well as automatically skip cadence steps of this communication type for this person in SalesLoft. Values currently accepted: call, email, message
    * `success_count` - The person's success count. 1 if person has any active successes, 0 otherwise
    * `starred` - Whether this person is starred by the current user
    * `untouched` - The person's untouched status
    * `hot_lead` - Whether this person is marked as a hot lead
    * `partially_created` - True if the person was auto-captured with only an email and has not yet been updated with full name details
    * `external_source` - The external source from where a person was imported
    * `counts` - Counts (JSON object)
    * `account_id` - ID of the account that this person is associated to
    * `owner_id` - ID of the user that is marked as the owner of this person
    * `last_contacted_by_id` - ID of the user that last contacted this person
    * `import_id` - ID of the import that this person was a part of
    * `person_stage_id` - ID of the person stage that this person has set
    * `most_recent_cadence_id` - ID of the cadence this person was most recently added to
    * `last_completed_step_cadence_id` - ID of the cadence of the last completed step this person
    * `last_completed_step_id` - ID of the last completed step of the cadence
    * `cadences` - The list of active cadences person is added to (JSON array of objects)
  </Accordion>

  <Accordion title="Person Stages">
    Stages a person can be placed in. This stream is always fully synced.

    **Fields:**

    * `id` - ID of Person Stage
    * `name` - Name of Person Stage
    * `created_at` - Datetime of when the Person Stage was created
    * `updated_at` - Datetime of when the Person Stage was last updated
    * `order` - Sortable value of Person Stage order
    * `active` - Flag signalizing whether the Person Stage is active
  </Accordion>

  <Accordion title="Account Stages">
    Stages an account can be placed in. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - ID of Account Stage
    * `name` - Name of Account Stage
    * `created_at` - Datetime of when the Account Stage was created
    * `updated_at` - Datetime of when the Account Stage was last updated
    * `order` - Order of Account Stage
    * `active` - Flag signalizing whether the Account Stage is active
  </Accordion>

  <Accordion title="Account Tiers">
    Tiers used to prioritize accounts. This stream is always fully synced.

    **Fields:**

    * `id` - ID of Account Tier
    * `name` - Name of the Account Tier
    * `order` - The order of the account tier
    * `created_at` - Datetime of when the Account Tier was created
    * `updated_at` - Datetime of when the Account Tier was last updated
    * `active` - Flag signalizing whether the Person Stage is active
  </Accordion>

  <Accordion title="Successes">
    Successes logged against people, with the activity counters that led to them. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - ID of success
    * `created_at` - Datetime of when the success was created
    * `updated_at` - Datetime of when the success was last updated
    * `succeeded_at` - Datetime of when the success was recorded
    * `success_window_started_at` - Datetime of when this person was first worked, leading up to the success
    * `user_id` - ID of the user that created this success
    * `person_id` - ID of the the person who a success occurred on
    * `latest_email_id` - ID of the the email that was most recently sent to this person before the success
    * `latest_call_id` - ID of the the call that was most recently made to this person before the success
    * `latest_action_id` - ID of the the action that was most recently completed on this person before the success
    * `latest_cadence_id` - ID of the the cadence with the action that was most recently completed on this person before the success
    * `latest_step_id` - ID of the the step of the cadence's action that was most recently completed on this person before the success
    * `counts` - Counts (JSON object)
  </Accordion>

  <Accordion title="Imports">
    Batches of people imported into Salesloft. This stream is always fully synced.

    **Fields:**

    * `id` - Import ID
    * `name` - Name of Import
    * `created_at` - Datetime of when the import was created
    * `updated_at` - Datetime of when the import was last updated, ignoring relationship changes
    * `current_people_count` - Count of People that have not been deleted
    * `imported_people_count` - Count of People that have ever been on this Import
    * `errors_list` - Array of the errors (JSON array of objects)
    * `user_id` - ID of the user who created the import
    * `import_type` - Type of import
  </Accordion>

  <Accordion title="Tags">
    Tags used across the team. This stream is always fully synced.

    **Fields:**

    * `id` - ID of Tag
    * `name` - Name of the tag
  </Accordion>

  <Accordion title="Custom Fields">
    Custom fields defined by the team for people, accounts and opportunities. This stream is always fully synced.

    **Fields:**

    * `id` - ID of Custom Field
    * `name` - Name of the Custom Field
    * `field_type` - Type of the Custom Field. Value must be one of: person, company, opportunity
    * `value_type` - Value Type of the Custom Field. Value must be one of: text, date
    * `created_at` - Datetime of when the Custom Field was created
    * `updated_at` - Datetime of when the Custom Field was last updated
  </Accordion>

  <Accordion title="Cadences">
    Cadences (sequences of steps) built by the team, with their settings and counters. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - ID of cadence
    * `created_at` - Datetime of when the cadence was created
    * `updated_at` - Datetime of when the cadence was last updated
    * `archived_at` - Datetime of when the cadence was archived, if archived
    * `latest_active_date` - Date of when the cadence was last used
    * `team_cadence` - Whether this cadence is a team cadence. A team cadence is created by an admin and can be run by all users
    * `shared` - Whether this cadence is visible to team members (shared)
    * `archived` - Whether this cadence is archived
    * `remove_bounces_enabled` - Whether this cadence is configured to automatically remove people who have bounced
    * `remove_replies_enabled` - Whether this cadence is configured to automatically remove people who have replied
    * `opt_out_link_included` - Whether this cadence is configured to include an opt-out link by default
    * `draft` - Whether this cadence is in draft mode
    * `override_contact_restrictions` - Whether this cadence is an Operational Cadence. An operational cadence is only created by an admin and accounts with the correct permission
    * `cadence_framework_id` - ID of the cadence framework used to create steps for the cadence
    * `archived_by` - Name or email of the user who archived the cadence
    * `knowledge_library_document_ids` - IDs of knowledge library documents associated with this cadence
    * `cadence_function` - The use case of the cadence. Possible values are: outbound: Denotes an outbound cadence, typically for sales purposes inbound: Denotes an inbound sales cadence event: Denotes a cadence used for an upcoming event other: Denotes a cadence outside of the standard process
    * `name` - Cadence name
    * `external_identifier` - Cadence External ID
    * `tags` - All tags applied to this cadence
    * `current_state` - The state of the Cadence. Read Only. Valid states are: draft, pending\_review, active, archived, expired, deleted
    * `creator_id` - ID of the user that created this cadence
    * `owner_id` - ID of the user that is marked as the owner of this cadence
    * `bounced_stage_id` - ID of the stage set when person on cadence bounces
    * `replied_stage_id` - ID of the stage set when person on cadence replies
    * `added_stage_id` - ID of the stage set when person is added to cadence
    * `finished_stage_id` - ID of the stage set when person is finished with cadence
    * `cadence_priority_id` - ID of the priority of the cadence
    * `groups` - Groups to which this cadence is assigned, if any (JSON array of objects)
    * `counts` - Counts (JSON object)
  </Accordion>

  <Accordion title="Cadence Memberships">
    Associations between people and cadences, with per-membership activity counters. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - Cadence membership ID
    * `added_at` - Datetime of when the person was last added to this cadence
    * `created_at` - Datetime of when the person was first added to this cadence
    * `updated_at` - Datetime of when the record was last updated
    * `person_deleted` - Whether the associated person has since been deleted
    * `currently_on_cadence` - Whether the person is currently on the cadence
    * `current_state` - The current state of the person on the cadence. Possible values are: processing: The person is being processed on a cadence. Cadence-related changes cannot be made at this time staged: The person is waiting for the first step in the cadence to occur active: The cadence has begun processing this person and is still in the process, but idle scheduled: The cadence has begun processing this person and is still in the process, with an activity scheduled to occur pending: The person is waiting to be added to the cadence due to throttling limits completed: The cadence has been completed for this person removed: The person was manually or automatically removed from the cadence removed\_no\_action: The person was removed from the cadence before any action occurred reassigned: The person's cadence execution was transferred to a different user, ending this user's interaction archived: The cadence this person belonged to has been archived and all actions and people were archived with it
    * `cadence_id` - ID of the the cadence that the person is on
    * `step_id` - ID of the the cadence step that the person is on
    * `person_id` - ID of the the person that is on the cadence
    * `user_id` - ID of the the user that is acting on the person in the cadence
    * `latest_action_id` - ID of the the most recent action associated with the record
    * `counts` - Counts (JSON object)
  </Accordion>

  <Accordion title="Steps">
    Steps that make up a cadence. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - ID of Step
    * `created_at` - Datetime of when the Step was created
    * `updated_at` - Datetime of when the Step was last updated
    * `disabled` - Whether this step is currently active
    * `type` - The type of the action scheduled by this step. Valid types are: email, phone, integration, other. New types may be added in the future
    * `name` - Name of the step
    * `display_name` - Display name of the step
    * `day` - Day this step is associated with up
    * `step_number` - The number of the step for this day
    * `multitouch_enabled` - Whether this step is a multitouch cadence step
    * `details_id` - ID of the details pertaining to the specific step type
    * `cadence_id` - ID of the the cadence of the step
  </Accordion>

  <Accordion title="Actions">
    Actions a user must take to complete a cadence step. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - ID of Action
    * `due` - Whether this step is due
    * `created_at` - Datetime of when the Action was created
    * `updated_at` - Datetime of when the Action was last updated
    * `type` - The type of this action. Valid types are: email, phone, other. New types may be added in the future
    * `status` - The current state of the person on the cadence. Possible values are: in\_progress: this action has not been completed pending\_activity: this action has been acted upon, but the action has not been completed. (i.e. the email is scheduled to send, but has not been delivered yet)
    * `due_on` - When action is due
    * `multitouch_group_id` - ID of the multitouch group
    * `action_details_id` - ID of the the type specific action details
    * `user_id` - ID of the user assigned to action
    * `person_id` - ID of the the subject of an action
    * `cadence_id` - ID of the the cadence of an action
    * `step_id` - ID of the the step of an action
    * `task_id` - ID of the the task associated with an action
  </Accordion>

  <Accordion title="Calls">
    Calls logged in Salesloft, including disposition, sentiment and recordings. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - ID of Call
    * `to` - Phone number that received the call
    * `duration` - Length of the call in seconds
    * `sentiment` - Outcome of the conversation
    * `disposition` - Result of the call
    * `positive` - Indicates if the call is positive (according to current Positive Calls metric configuration)
    * `connected` - Indicates if the call is connected (according to current Connected Calls metric configuration)
    * `call_data_record_ids` - IDs of associated CallDataRecords
    * `direction` - Direction of the call. Can be one of: inbound, outbound
    * `log_source` - Source of the call log
    * `created_at` - Datetime of when the call was created
    * `updated_at` - Datetime of when the call was last updated
    * `recordings` - The recordings for this this call and their status (JSON array of objects)
    * `user_id` - ID of the user that made the call
    * `action_id` - ID of the action associated to the call
    * `task_id` - ID of the task that this call was loged from, or null if not sent through a cadence
    * `called_person_id` - ID of the the person called
    * `crm_activity_id` - ID of the cRM Activity associated with the call
    * `note_id` - ID of the note for this call
    * `cadence_id` - ID of the cadence the call was made on
    * `step_id` - ID of the step the call was made on
  </Accordion>

  <Accordion title="Emails">
    Emails sent from Salesloft, with delivery status and engagement counters. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - ID of Email
    * `created_at` - Datetime of when the email was created
    * `updated_at` - Datetime of when the email was last updated
    * `recipient_email_address` - Email address of the recipient
    * `status` - Status of this email through the sending process. Possible values are: sent, sent\_from\_gmail, sent\_from\_external, pending, pending\_reply\_check, scheduled, sending, delivering, failed, cancelled, pending\_through\_gmail, pending\_through\_external
    * `bounced` - Whether this email bounced
    * `send_after` - When this email will be sent, or null if already sent
    * `sent_at` - When this email was sent, or null if it was not sent
    * `view_tracking` - Whether this email had view tracking enabled
    * `click_tracking` - Whether this email had click tracking enabled
    * `message_id` - ID of Client Email Message
    * `headers` - Selected headers that are included if this email used them. Available keys are: cc, bcc (JSON object)
    * `personalization` - Percentage of this email that has been personalized
    * `subject` - Subject of the email. This field has been determined sensitive and requires a specific scope to access it
    * `body` - Email Body
    * `error_message` - Error message of the email. This field has been determined sensitive and requires a specific scope to access it
    * `draft_with_ai` - Whether this email body was drafted with AI assistance
    * `email_thread_id` - ID of the email thread this email belongs to
    * `counts` - Counts (JSON object)
    * `user_id` - ID of the user that sent this email
    * `recipient_id` - ID of the the person whom received this email
    * `mailing_id` - ID of the the mailing that this email was a part of
    * `action_id` - ID of the action that this email was sent from, or null if not sent through a cadence
    * `task_id` - ID of the task that this email was sent from, or null if not sent through a cadence
    * `crm_activity_id` - ID of the cRM Activity associated with this email
    * `cadence_id` - ID of the cadence the email was sent on
    * `step_id` - ID of the step the email was sent on
    * `email_template_id` - ID of the template used for this email
    * `additional_recipients` - The list of people, other than the (primary) recipient, who received this email via TO and CC (JSON array of objects)
  </Accordion>

  <Accordion title="Meetings">
    Meetings booked through Salesloft, including attendees and CRM references. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - ID of the meeting
    * `title` - Title of the meeting
    * `start_time` - Start time of the meeting
    * `end_time` - End time of the meeting
    * `calendar_id` - Calendar ID of the meeting owner
    * `calendar_type` - Calendar type of the meeting owner. Possible values are: gmail, azure, nylas, nylas\_v3, linkedin\_azure, cerebro, external, internal
    * `meeting_type_id` - Meeting type ID
    * `meeting_type` - Meeting type
    * `recipient_name` - Name of the meeting invite recipient
    * `recipient_email` - Email of the meeting invite recipient
    * `location` - Location of the meeting
    * `description` - Description of the meeting
    * `event_id` - ID of the meeting created by target calendar
    * `account_id` - ID of the account the recipient associated to
    * `task_id` - ID of the created task
    * `created_at` - Datetime of when the meeting was created
    * `updated_at` - Datetime of when the meeting was last updated
    * `guests` - The list of attendees emails of the meeting
    * `attendees` - The attendees of the meeting. Each attendee includes the following fields: status, email, name, organizer (JSON array of objects)
    * `person_id` - ID of the salesloft Person record for the recipient
    * `cadence_id` - ID of the salesloft Cadence record associated with meeting
    * `step_id` - ID of the salesloft Step record associated with meeting
    * `owned_by_user_id` - ID of the owner of the meeting
    * `booked_by_user_id` - ID of the user who booked the meeting
    * `crm_references` - List of crm references associated with the meeting (JSON object)
    * `crm` - Crm fields mapping from intake form (JSON object)
    * `event_source` - Source of the meeting. Possible values are: 'external' - The event was synced to Salesloft platform via Calendar Sync, 'internal' - The event was created via Salesloft platform
    * `canceled_at` - Datetime of when the meeting was canceled
    * `all_day` - Whether the meeting is an all-day meeting
    * `no_show` - Whether the meeting is a No Show meeting
    * `crm_custom_fields` - List of crm custom fields which will be logged to SFDC (JSON object)
    * `strict_attribution` - Strict attribution means that we 100% sure which cadence generate the meeting
    * `i_cal_uid` - UID of the meeting provided by target calendar provider
    * `status` - Status of the meeting. Possible values are: pending, booked, failed, retry
    * `reschedule_status` - Status of the meeting rescheduling progress. Possible values are: pending, booked, failed, retry
    * `owned_by_meetings_settings` - Owned by meetings settings (JSON object)
    * `booked_by_meetings_settings` - Booked by meetings settings (JSON object)
    * `reschedule_guid` - Unique identifier (GUID) for the reschedule meeting link. Use this GUID as a parameter in the API endpoint to retrieve a meeting link
    * `recurring` - Whether the calendar event is a recurring event
    * `recurrence` - List of RRULE for a recurring event, as specified in RFC5545. This field is omitted for single events or instances of recurring events
    * `recurring_interval` - Specifies how often a recurring event repeats (Daily, Weekly, Monthly, Yearly). This field is omitted for single events or instances of recurring events
    * `last_occurrence_at` - The timestamp of the last occurrence in a series of recurring events
    * `undo_completion_count` - The number of times a meeting has been rescheduled after completion
    * `count_towards_meetings_attended_metric` - Whether the meeting counts towards the Meetings Attended configurable metric
    * `count_towards_meetings_booked_metric` - Whether the meeting counts towards the Meetings Booked configurable metric
    * `created_on_demand` - Whether the meeting was created on-demand (internal calendar type with do\_not\_sync\_external\_calendar)
    * `notes` - Notes for the meeting
    * `failed_recording_reason` - The reason why the meeting recording failed
  </Accordion>

  <Accordion title="Notes">
    Notes attached to people, accounts and calls. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - Note ID
    * `content` - The content of the note
    * `created_at` - Datetime of when the note was created
    * `updated_at` - Datetime of when the note was last updated
    * `associated_type` - Type of associated resource ('person' or 'account')
    * `crm_activity_metadata` - JSONB metadata for CRM activity tracking (JSON object)
    * `user_id` - ID of the user that wrote this note
    * `associated_with_id` - ID of the item on which the note was made
    * `call_id` - ID of the call linked to the note
  </Accordion>

  <Accordion title="Tasks">
    Tasks assigned to users. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - ID of Task
    * `created_at` - Datetime of when the Task was created
    * `updated_at` - Datetime of when the Task was last updated
    * `description` - A description of the task recorded for person at completion time
    * `due_date` - Date of when the Task is due, ISO-8601 date format required
    * `due_at` - Datetime of when the Task is due, can be null. ISO-8601 datetime format required
    * `subject` - Subject line of the task
    * `current_state` - The state of the task. Valid states are: scheduled, completed
    * `person_id` - ID of the the person to be contacted
    * `opportunity_id` - ID of the the opportunity associated with task
    * `user_id` - ID of the user who is assigned the task
    * `created_by_user_id` - ID of the user who created the task
    * `task_type` - The type of the task. Valid types are: call, email, general
    * `remind_at` - Datetime of when the user will be reminded of the task, ISO-8601 datetime format required
    * `expires_after` - Datetime of when the the task will expire, ISO-8601 datetime format required
    * `completed_at` - Datetime of when the task was completed, ISO-8601 datetime format required
    * `completed_by_id` - ID of the user who completed the task
  </Accordion>

  <Accordion title="Call Data Records">
    Raw call data records produced by the Salesloft dialer. This stream is always fully synced.

    **Fields:**

    * `user_id` - ID of the user that made or received the call, if the call was to a user
    * `user_guid` - Globally unique ID of the user that made or received the call, if the call was to a user
    * `updated_at` - Datetime of when the call was last updated
    * `to` - Phone number that received the call
    * `status` - The outcome of the call. Can be one of: queued, initiated, ringing, in-progress, completed, busy, no-answer, canceled, failed
    * `started_at` - Datetime of when the call started
    * `recording` - The recording for this this call data record, with a status (JSON object)
    * `id` - ID of CallDataRecord
    * `from` - Phone number that placed the call
    * `ended_at` - Datetime of when the call ended
    * `duration` - Length of the call in seconds
    * `direction` - Direction of the call. Can be one of: inbound, outbound
    * `dialer_recording_uuid` - UUID of the the dialer recording resource for the call recording
    * `created_at` - Datetime of when the call was created
    * `called_person_id` - ID of the the person called
    * `call_uuid` - UUID of the call. Legs of the same call will have the same call\_uuid
    * `call_type` - Type of the call. Can be one of: call, bridge, collaboration. Though exact values may change over time
    * `call_id` - ID of the call that this record was logged to, if logged to a call
  </Accordion>

  <Accordion title="Call Dispositions">
    Call outcomes configured for the team. This stream is always fully synced.

    **Fields:**

    * `id` - ID of CallDisposition
    * `created_at` - Datetime of when the call disposition was created
    * `updated_at` - Datetime of when the call disposition was last updated
    * `name` - An available call disposition text
    * `crm_value` - CRM value associated with the call disposition
  </Accordion>

  <Accordion title="Call Sentiments">
    Call sentiments configured for the team. This stream is always fully synced.

    **Fields:**

    * `id` - ID of CallSentiment
    * `created_at` - Datetime of when the call sentiment was created
    * `updated_at` - Datetime of when the call sentiment was last updated
    * `name` - An available call sentiment text
  </Accordion>

  <Accordion title="Phone Number Assignments">
    Phone numbers assigned to users. This stream is always fully synced.

    **Fields:**

    * `id` - PhoneNumberAssignment ID
    * `number` - The phone number associated with this assignment
    * `user_id` - ID of the user associated with this phone number assignment
  </Accordion>

  <Accordion title="Opportunities">
    Opportunities synced from the CRM or created through the API. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - ID of Opportunity
    * `name` - Opportunity Name
    * `amount` - Estimated total sale amount
    * `stage_name` - Stage name
    * `probability` - Probability
    * `crm_id` - The identifier for this record in the CRM
    * `crm_type` - CRM type
    * `account_crm_id` - Account CRM id
    * `owner_crm_id` - Owner CRM id
    * `account_name` - Account Full Name
    * `created_by_crm_id` - Created By CRM id
    * `opportunity_type` - Opportunity Type
    * `owner_crm_name` - Owner CRM Name
    * `crm_last_updated_date` - Datetime of when the Opportunity was most recently updated in CRM
    * `close_date` - Date when the opportunity is expected to close
    * `is_closed` - Whether the opportunity is closed
    * `is_won` - Whether the opportunity is closed won
    * `crm_url` - CRM url, currently Salesforce.com only
    * `created_at` - Datetime of when the Opportunity was created
    * `updated_at` - Datetime of when the Opportunity was last updated
    * `created_date` - Datetime of when the Opportunity was created in CRM
    * `opportunity_window_person_id` - ID of when the attributed person was created in Salesloft
    * `opportunity_window_started_at` - Datetime of when the attributed person was created in Salesloft
    * `custom_fields` - Custom fields are defined by the user's team. Only fields with values are presented in the API. (JSON object)
    * `currency_iso_code` - Currency ISO Code
    * `tags` - All tags applied to this Opportunities
    * `most_recent_cadence_id` - ID of the the most recent cadence associated with the Opportunity
    * `most_recent_step_id` - ID of the the most recent step associated with the Opportunity
    * `most_recent_step_number` - The most recent step number associated with the Opportunity
    * `most_recent_step_account_id` - ID of the the most recent step account id associated with the Opportunity
    * `owner_id` - ID of the the owner associated with the Opportunity
    * `creator_id` - ID of the the creator associated with the Opportunity
    * `account_id` - ID of the the account that this opportunity is associated to
  </Accordion>

  <Accordion title="Opportunity People">
    Associations between people and opportunities. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - ID of OpportunityPerson record
    * `person_id` - ID of the Salesloft Person
    * `opportunity_id` - ID of the Salesloft Opportunity
    * `opportunity_crm_id` - Opportunity CRM ID
    * `person_crm_id` - Person CRM ID
    * `crm_id` - CRM ID of the Association object, ie the OpportunityContactRole
    * `created_at` - Datetime of when the OpportunityPerson was created
    * `updated_at` - Datetime of when the OpportunityPerson was last updated
  </Accordion>

  <Accordion title="Opportunity Stages">
    Opportunity stages synced from the CRM. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - ID of Opportunity Stage
    * `name` - Name of Opportunity Stage
    * `created_at` - Datetime of when the Opportunity Stage was created
    * `updated_at` - Datetime of when the Opportunity Stage was last updated
    * `order` - Sortable value of Opportunity Stage order
    * `active` - Flag signalizing whether the Opportunity Stage is active
  </Accordion>

  <Accordion title="CRM Activities">
    Activities Salesloft logged to the CRM. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - CrmActivity ID
    * `created_at` - Datetime of when the crm activity was created
    * `updated_at` - Datetime of when the crm activity was last updated
    * `subject` - The subject field of the activity in your CRM
    * `description` - The description field of the activity in your CRM
    * `crm_id` - The ID of the activity in your CRM, if written to your CRM
    * `activity_type` - The type of activity that is being recorded, if available. The values can change over time, but could be one of: email, phone, email reminder, inmail
    * `error` - Information about why this crm activity failed to sync, if it did fail to sync. Failed activities will be automatically retried and may become successful in the future
    * `custom_crm_fields` - Additional fields that are logged to your CRM, if mapped by the team at the time of writing to your CRM (JSON object)
    * `crm_record_type` - The object type in the CRM for the activity
    * `person_id` - ID of the person that this crm activity is for
    * `user_id` - ID of the user that triggered this crm activity
  </Accordion>

  <Accordion title="CRM Activity Fields">
    CRM fields Salesloft can write activities to. This stream is always fully synced.

    **Fields:**

    * `id` - ID of CrmActivityField
    * `created_at` - Datetime of when the CrmActivityField was created
    * `updated_at` - Datetime of when the CrmActivityField was last updated
    * `title` - A human friendly title for this field
    * `salesforce_object_type` - The Salesforce object type that this field maps to. Valid object types are: Task. More object types may be added in the future
    * `crm_object_type` - The CRM object type that this field maps to. Valid object types are CRM dependent: Task, Phonecall, Email
    * `source` - SalesLoft object that this field is mapped for. Valid sources are: email, phone
    * `field` - The CRM field name
    * `field_type` - The type of this field in your CRM. Certain field types can only accept structured input
    * `value` - A value to always be written. This value does not need to be sent to other endpoints' crm params, but must be the exact value if sent. Email source fields will always have a value present
    * `picklist_values` - Valid picklist values, if present for this field. The format is \{label => value}. If present, only values in the picklist structure can be used as a crm param. (JSON object)
    * `nillable` - Whether this field can be left empty in the CRM. False means the field is required
    * `createable` - Whether this field can be set during record creation
    * `defaulted_on_create` - Whether this field is automatically populated by the CRM on record creation
  </Accordion>

  <Accordion title="CRM Users">
    CRM users mapped to Salesloft users. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - Crm User ID
    * `crm_id` - CRM ID
    * `created_at` - Datetime of when the crm user was created
    * `updated_at` - Datetime of when the crm user was last updated
    * `first_name` - Account first name
    * `last_name` - Account last name
    * `name` - Account name
    * `crm_username` - CRM Username
    * `user_id` - ID of the user
  </Accordion>

  <Accordion title="Team">
    The team of the authenticated user, with its plan and team-wide settings. This stream is always fully synced.

    **Fields:**

    * `id` - Team ID
    * `name` - Team name
    * `created_at` - Datetime of when the team was created
    * `updated_at` - Datetime of when the team was last updated
    * `group_privacy_setting` - Visibility setting for resources across the team. Possible values are: group\_public, all\_public. When the value is group\_public, certain resources will only be visible to members of the same group. When the value is all\_public, all resources are visible to all users on this team
    * `team_visibility_default` - The default visibility of resources on the team, in the UI only. The API does not utilize this default. Possible values are: public, private
    * `plan` - Plan type of the team, Possible values are: group, professional, enterprise
    * `plan_features` - Add on features for this team (JSON object)
    * `license_limit` - Count of seats that this team has licensed
    * `local_dial_enabled` - Whether this team has local dial enabled
    * `record_by_default` - Whether calls will record by default
    * `call_recording_disabled` - Whether all call recording is disabled
    * `email_daily_limit` - Daily email limit for each member on the team
    * `click_tracking_default` - The team default for click tracking when composing emails
    * `allow_automated_email_steps` - Whether team members are allowed to have automated email steps
    * `custom_tracking_domain` - The domain click and open tracking will be proxied through
    * `dispositions_required` - Whether team members are required to mark disposition at the end of calls
    * `sentiments_required` - Whether team members are required to log sentiments
    * `deactivated` - Indicates if the team has been deactivated
  </Accordion>

  <Accordion title="Users">
    Users of the team, with their settings and email configuration. This stream is always fully synced.

    **Fields:**

    * `id` - User ID
    * `guid` - Globally unique user ID. Newer endpoints explicitly accept this over the numeric id
    * `created_at` - Datetime of when the user was created
    * `updated_at` - Datetime of when the user was last updated
    * `name` - Display name of the user
    * `first_name` - First name of the user
    * `last_name` - Last name of the user
    * `email` - Email address the user signs in to Salesloft with
    * `full_email_address` - Email address of the user including the display name
    * `sending_email_address` - Email address emails are sent from on behalf of the user
    * `from_address` - Email address used in the From header of the user's emails
    * `bcc_email_address` - Email address automatically BCC'd on the user's emails
    * `email_client_email_address` - Email address of the mailbox connected to Salesloft
    * `email_client_configured` - Whether the user has connected an email client
    * `email_signature` - Email signature appended to the user's emails
    * `email_signature_type` - Format of the email signature (text or html)
    * `email_signature_click_tracking_disabled` - Whether click tracking is disabled inside the signature
    * `active` - Whether the user seat is currently active
    * `team_admin` - Whether the user is an administrator of the team
    * `job_role` - Job role the user selected for themselves
    * `time_zone` - Time zone configured for the user
    * `slack_username` - Slack username of the user
    * `twitter_handle` - Twitter handle of the user
    * `crm_connected` - Whether the user has connected their CRM account
    * `click_to_call_enabled` - Whether click-to-call is enabled for the user
    * `local_dial_enabled` - Whether local dial is enabled for the user
    * `group_id` - ID of the user's group
    * `role_id` - ID of the user's role
    * `team_id` - ID of the user's team
    * `phone_client_id` - ID of the phone client used by the user
    * `phone_number_assignment_id` - ID of the phone number assigned to the user
    * `external_feature_flags` - Feature flags enabled for the user (JSON object)
  </Accordion>

  <Accordion title="Groups">
    Groups used to organize users. This stream is always fully synced.

    **Fields:**

    * `id` - ID of the Group
    * `name` - Name of the Group
    * `parent_id` - ID of the parent Group
    * `accessible_groups` - Groups accessible if any (JSON array of objects)
    * `parent_groups` - Parent groups if any (JSON array of objects)
  </Accordion>

  <Accordion title="Email Templates">
    Email templates owned by users. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - ID of email template
    * `title` - Title of the email template
    * `subject` - Subject of the email template
    * `body` - Sanitized body of the email template without email signature
    * `body_preview` - A plain text version of the first 100 characters of the body of the email template
    * `created_at` - Datetime of when the email template was created
    * `updated_at` - Datetime of when the email template was last updated
    * `last_used_at` - Datetime of when the email template was last used
    * `archived_at` - Datetime of when the email template was archived, if archived
    * `shared` - Whether this email template is visible to team members (shared)
    * `open_tracking_enabled` - Whether open tracking is enabled for this email template
    * `click_tracking_enabled` - Whether click tracking is enabled for this email template
    * `cadence_template` - Whether this email template is only used on a cadence step. These templates are not visible in the SalesLoft application template list. If false, this email template is visible in the SalesLoft application, and may be used when composing an email or creating a cadence step
    * `counts` - Counts (JSON object)
    * `template_owner_id` - ID of the user that owns this email template
    * `team_template_id` - ID of the associated team template, if any
    * `_links` - Links to attachments and tags resources for this email template. (JSON object)
    * `tags` - All tags applied to this email template
    * `groups` - Groups to which this template is assigned, if any (JSON array of objects)
  </Accordion>

  <Accordion title="Email Template Attachments">
    Files attached to email templates. This stream is always fully synced.

    **Fields:**

    * `id` - ID of email template attachment association
    * `attachment_id` - ID of the email template attachment
    * `email_template_id` - ID of the link and id of specific email template
    * `name` - Name of the attachment
    * `download_url` - Download url of the attachment
    * `attachment_file_size` - The size of the attachment
    * `scanned` - Checks if attachment has been scanned
    * `attachment_content_type` - Content type of the attachment
    * `attachment_fingerprint` - Unique attachment Identifier
  </Accordion>

  <Accordion title="Team Templates">
    Email templates shared across the whole team. Incremental sync is supported through the `updated_at` field.

    **Fields:**

    * `id` - ID of team template
    * `title` - Title of the team template
    * `subject` - Subject of the team template
    * `body` - Body of the team template
    * `body_preview` - A plain text version of the first 100 characters of the body of the team template
    * `created_at` - Datetime of when the team template was created
    * `updated_at` - Datetime of when the team template was last updated
    * `last_used_at` - Datetime of when the team template was last used
    * `archived_at` - Datetime of when the team template was archived, if archived
    * `last_modified_at` - Datetime of when the team template was last modified
    * `open_tracking_enabled` - Whether open tracking is enabled for this team template
    * `click_tracking_enabled` - Whether click tracking is enabled for this team template
    * `counts` - Counts (JSON object)
    * `last_modified_user_id` - ID of the user that last modified this team template
    * `groups` - Groups to which this team template is assigned, if any (JSON array of objects)
    * `owner_email_template_id` - The email template ID created for the owner account, if requested
    * `_links` - Links to attachments resource for this template (JSON object)
    * `tags` - All tags applied to this team template
  </Accordion>

  <Accordion title="Team Template Attachments">
    Files attached to team templates. This stream is always fully synced.

    **Fields:**

    * `id` - ID of team template attachment association
    * `attachment_id` - ID of the team template attachment
    * `team_template_id` - ID of the details pertaining to the specific team template
    * `name` - Name of the attachment
    * `download_url` - Download url of the attachment
    * `attachment_file_size` - The size of the attachment
  </Accordion>
</AccordionGroup>
