Перейти к содержанию

Salesforce: создание или обновление записи

Используйте элемент Salesforce: создание или обновление записи, чтобы создать или обновить одну запись Salesforce на шаге Journey по полю внешнего идентификатора: он обновляет запись, если значение уже существует, и создает ее, если нет. У Salesforce нет статического токена API, поэтому этот элемент аутентифицируется через подключенное приложение, зарегистрированное один раз для всей учетной записи. В самом элементе нет поля для токена.

Типичные варианты использования:

  • Синхронизация с Salesforce: создание или обновление контакта (Contact) или лида (Lead) по мере продвижения пользователя по Journey, чтобы отдел продаж видел актуальные данные.
  • Синхронизация активности в Journey с CRM: установка значения поля, когда пользователь достигает определенного этапа, чтобы отдел продаж мог фильтровать данные или создавать отчеты по ним.
  • Избежание дублирования записей: сопоставление по внешнему идентификатору означает, что пользователь, который снова проходит через этот элемент, обновляет ту же запись, а не создает новую.

Перед началом работы

Anchor link to

Создайте подключенное приложение в вашей организации Salesforce и подключите его в разделе Settings > 3rd-party integrations > Salesforce:

  1. В Salesforce создайте External Client App (или классическое подключенное приложение) с включенным OAuth и областью действия Manage user data via APIs (api).
  2. Включите для него Client Credentials Flow и выберите пользователя для запуска (run-as user). Элемент будет выполнять запись от имени этого пользователя, поэтому его профиль определяет, к каким объектам и полям он может обращаться.
  3. В Pushwoosh, в поле My Domain host, введите хост вашей организации без https://, например acme.my.salesforce.com.
  4. В поля Consumer Key и Consumer Secret вставьте учетные данные приложения. Секрет хранится в режиме “только для записи”: Pushwoosh больше никогда его не покажет, поэтому для замены вставьте новый.
  5. Нажмите Connect Salesforce.
Форма подключения Salesforce в настройках с полями My Domain host, Consumer Key и Consumer Secret

После подключения Salesforce установите интеграцию, чтобы элемент появился в конструкторе Journey.

Также на стороне Salesforce должны быть выполнены два условия:

  • Поле, по которому вы выполняете сопоставление, должно быть помечено как External ID для этого объекта. Обычного текстового поля, даже Email, недостаточно — Salesforce отклонит запрос с ошибкой NOT_FOUND, если поле не является внешним идентификатором.
  • Пользователь Run As подключенного приложения должен иметь доступ на уровне поля к этому полю. Поле, созданное через Setup или API, само по себе не предоставляет никаких прав, и без разрешения Salesforce ответит той же ошибкой NOT_FOUND: Field name provided ... does not match an External ID — поле невидимо для этого пользователя, поэтому со стороны API оно не существует. Добавьте его в набор разрешений, назначенный пользователю Run As.

Настройка элемента

Anchor link to
  1. Перетащите элемент Salesforce: создание или обновление записи из раздела Integrations левой панели на холст.
  2. Дважды щелкните по элементу и введите Step Name.
  3. В поле My Domain host введите тот же хост, на котором находится подключенное приложение.
Окно настроек элемента Salesforce: создание или обновление записи с заполненным полем Step Name и доменом Salesforce в поле My Domain host
  1. В поле Object введите API-имя объекта — Contact, Lead или кастомный объект, заканчивающийся на __c.
Поле Object установлено в значение Contact
  1. В поле External id field введите API-имя поля, помеченного как External ID.
Поле External id field установлено в значение Pushwoosh_HWID__c
  1. В поле External id value введите значение для сопоставления, обычно это макрос, например {{device:hwid}}.
Поле External id value установлено в значение макроса hwid устройства
  1. В разделе Fields добавьте по одной строке для каждого поля Salesforce, которое нужно установить. Введите API-имя поля и его значение. Имена должны быть непустыми и уникальными. Среди них должны быть обязательные поля объекта, иначе Salesforce откажется создавать новую запись. Значением может быть фиксированный текст или макрос пользователя, например {{device:hwid}}, те же макросы, что и в теле Webhook. Или нажмите Insert Dynamic Value, чтобы выбрать атрибут, созданный на предыдущем шаге этого Journey, например, ответ от LLM или сопоставленное значение из Webhook.
Таблица полей с именем и значением, где поле Email сопоставлено с макросом тега
  1. Нажмите Save.

Ответ

Anchor link to

Пользователь переходит к следующему шагу, который вы подключите на холсте.

Атрибуты после выполнения шага

Anchor link to
АтрибутЧто содержит
salesforce_record_idID записи

Как использовать в последующих шагах

Anchor link to

Пользователь уже перешел к следующему шагу независимо от этого атрибута. Сохраните его в тег с помощью элемента Update user profile, если вам нужно будет ссылаться на эту конкретную запись позже, например, через собственный API Salesforce.

Сбои и непредвиденные ответы

Anchor link to

Откройте Calls log в окне настроек элемента и проверьте ответ:

  • 401 — неверные учетные данные подключенного приложения, или для него не включен client credentials flow.
  • NOT_FOUND в теле ответа — имя объекта или поле внешнего идентификатора не соответствует ничему в этой организации. Убедитесь, что поле действительно помечено как External ID.
  • REQUIRED_FIELD_MISSING в теле ответа — для создания новой записи требуется поле, которое элемент не отправляет. Добавьте его в Fields.
  • INVALID_FIELD в теле ответа — имя в Fields не является API-именем для этого объекта. API-имя кастомного поля заканчивается на __c.

Неудачный запрос удаляет пользователя из Journey. См. Errors and failed requests.

Пример сценария: маршрутизация запроса на консультацию из приложения в отдел продаж

Anchor link to

Приложение для здорового образа жизни позволяет пользователям нажать Связаться с консультантом в приложении. Команда хочет, чтобы этот запрос становился контактом в Salesforce, с которым мог бы связаться менеджер.

  1. Добавьте элемент Trigger-based entry и настройте его на срабатывание по событию AdvisorCallRequested.
  2. Добавьте элемент Salesforce: create or update record сразу после него. Установите Object в Contact, External id field в Pushwoosh_HWID__c и External id value в {{device:hwid}}. В Fields установите Email в {{tag:Email}}.
  3. Нажмите Save.

После запуска этого сценария каждый запрос на консультацию из приложения будет попадать в Salesforce как контакт, сопоставленный по устройству, так что повторное нажатие обновит тот же контакт, а не создаст дубликат.