技能 产品商业 SalesLoft人员与流程管理

SalesLoft人员与流程管理

v20260423
salesloft-core-workflow-a
本工作流用于通过API管理SalesLoft平台的核心数据,包括潜在客户(People)和外拨流程(Cadences)。它支持自动查找、创建联系人,列出可用的活动流程,并批量或单个地将联系人加入流程,适用于自动化销售外联、潜在客户培育和销售漏斗管理。
获取技能
492 次下载
概览

SalesLoft Core Workflow A: People & Cadences

Overview

The primary SalesLoft workflow: manage people records, build cadences (multi-step outbound sequences), and enroll prospects. Uses REST API v2 endpoints: /people.json, /cadences.json, /cadence_memberships.json, /steps.json.

Prerequisites

  • Completed salesloft-install-auth setup
  • Understanding of SalesLoft cadence model (cadences contain steps, people are enrolled via memberships)

Instructions

Step 1: Search and Deduplicate People

import axios from 'axios';
const api = axios.create({
  baseURL: 'https://api.salesloft.com/v2',
  headers: { Authorization: `Bearer ${process.env.SALESLOFT_API_KEY}` },
});

// Search by email to avoid duplicates (supports array filter)
async function findOrCreatePerson(email: string, attrs: Record<string, any>) {
  const { data: existing } = await api.get('/people.json', {
    params: { email_addresses: [email] },
  });

  if (existing.data.length > 0) {
    console.log(`Found existing: ${existing.data[0].id}`);
    return existing.data[0];
  }

  const { data: created } = await api.post('/people.json', {
    email_address: email, ...attrs,
  });
  console.log(`Created: ${created.data.id}`);
  return created.data;
}

Step 2: List and Select Cadences

// List cadences -- filter by team_cadence, current_state
const { data: cadences } = await api.get('/cadences.json', {
  params: { team_cadence: true, per_page: 50 },
});

// Each cadence has: id, name, current_state (draft|active|paused|archived)
// counts.people_count, cadence_framework_id, team_cadence
const activeCadences = cadences.data.filter(
  (c: any) => c.current_state === 'active'
);
console.log(`Active cadences: ${activeCadences.length}`);

Step 3: Enroll Person in Cadence

// Create a cadence membership to enroll a person
async function enrollInCadence(personId: number, cadenceId: number) {
  try {
    const { data } = await api.post('/cadence_memberships.json', {
      person_id: personId,
      cadence_id: cadenceId,
    });
    console.log(`Enrolled person ${personId} in cadence ${data.data.cadence.name}`);
    return data.data;
  } catch (err: any) {
    if (err.response?.status === 422) {
      console.warn('Person already enrolled or cadence not active');
    }
    throw err;
  }
}

Step 4: Bulk Import with Cadence Assignment

// Import a CSV of prospects and enroll in a cadence
async function bulkEnroll(prospects: Array<{ email: string; name: string }>, cadenceId: number) {
  const results = { enrolled: 0, skipped: 0, errors: 0 };

  for (const prospect of prospects) {
    try {
      const [first, ...rest] = prospect.name.split(' ');
      const person = await findOrCreatePerson(prospect.email, {
        first_name: first, last_name: rest.join(' '),
      });
      await enrollInCadence(person.id, cadenceId);
      results.enrolled++;
    } catch {
      results.errors++;
    }
  }
  return results; // { enrolled: 47, skipped: 2, errors: 1 }
}

Output

Found existing: 1234
Created: 5678
Enrolled person 5678 in cadence Q1 Outbound
Active cadences: 3
Bulk result: { enrolled: 47, skipped: 2, errors: 1 }

Error Handling

ErrorCauseSolution
422 on create personMissing email_addressRequired field
422 on enrollmentPerson already in cadenceCheck memberships first
404 cadenceCadence archived or deletedVerify cadence current_state
429 bulk importRate limit (600 cost/min)Add delay between batches

Resources

Next Steps

For activity tracking and email analytics, see salesloft-core-workflow-b.

信息
分类 产品商业
名称 salesloft-core-workflow-a
版本 v20260423
大小 4.51KB
更新时间 2026-04-28
语言