Salesforce: создание или обновление записи
Используйте элемент Salesforce: создание или обновление записи, чтобы создать или обновить одну запись Salesforce на шаге Journey по полю внешнего идентификатора: он обновляет запись, если значение уже существует, и создает ее, если нет. У Salesforce нет статического токена API, поэтому этот элемент аутентифицируется через подключенное приложение, зарегистрированное один раз для всей учетной записи. В самом элементе нет поля для токена.
Типичные варианты использования:
- Синхронизация с Salesforce: создание или обновление контакта (Contact) или лида (Lead) по мере продвижения пользователя по Journey, чтобы отдел продаж видел актуальные данные.
- Синхронизация активности в Journey с CRM: установка значения поля, когда пользователь достигает определенного этапа, чтобы отдел продаж мог фильтровать данные или создавать отчеты по ним.
- Избежание дублирования записей: сопоставление по внешнему идентификатору означает, что пользователь, который снова проходит через этот элемент, обновляет ту же запись, а не создает новую.
Перед началом работы
Anchor link toСоздайте подключенное приложение в вашей организации Salesforce и подключите его в разделе Settings > 3rd-party integrations > Salesforce:
- В Salesforce создайте External Client App (или классическое подключенное приложение) с включенным OAuth и областью действия Manage user data via APIs (api).
- Включите для него Client Credentials Flow и выберите пользователя для запуска (run-as user). Элемент будет выполнять запись от имени этого пользователя, поэтому его профиль определяет, к каким объектам и полям он может обращаться.
- В Pushwoosh, в поле My Domain host, введите хост вашей организации без
https://, напримерacme.my.salesforce.com. - В поля Consumer Key и Consumer Secret вставьте учетные данные приложения. Секрет хранится в режиме “только для записи”: Pushwoosh больше никогда его не покажет, поэтому для замены вставьте новый.
- Нажмите Connect Salesforce.

После подключения 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- Перетащите элемент Salesforce: создание или обновление записи из раздела Integrations левой панели на холст.
- Дважды щелкните по элементу и введите Step Name.
- В поле My Domain host введите тот же хост, на котором находится подключенное приложение.

- В поле Object введите API-имя объекта —
Contact,Leadили кастомный объект, заканчивающийся на__c.

- В поле External id field введите API-имя поля, помеченного как External ID.

- В поле External id value введите значение для сопоставления, обычно это макрос, например
{{device:hwid}}.

- В разделе Fields добавьте по одной строке для каждого поля Salesforce, которое нужно установить. Введите API-имя поля и его значение. Имена должны быть непустыми и уникальными. Среди них должны быть обязательные поля объекта, иначе Salesforce откажется создавать новую запись. Значением может быть фиксированный текст или макрос пользователя, например
{{device:hwid}}, те же макросы, что и в теле Webhook. Или нажмите Insert Dynamic Value, чтобы выбрать атрибут, созданный на предыдущем шаге этого Journey, например, ответ от LLM или сопоставленное значение из Webhook.

- Нажмите Save.
Ответ
Anchor link toПользователь переходит к следующему шагу, который вы подключите на холсте.
Атрибуты после выполнения шага
Anchor link to| Атрибут | Что содержит |
|---|---|
salesforce_record_id | ID записи |
Как использовать в последующих шагах
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, с которым мог бы связаться менеджер.
- Добавьте элемент Trigger-based entry и настройте его на срабатывание по событию
AdvisorCallRequested. - Добавьте элемент Salesforce: create or update record сразу после него. Установите Object в
Contact, External id field вPushwoosh_HWID__cи External id value в{{device:hwid}}. В Fields установитеEmailв{{tag:Email}}. - Нажмите Save.
После запуска этого сценария каждый запрос на консультацию из приложения будет попадать в Salesforce как контакт, сопоставленный по устройству, так что повторное нажатие обновит тот же контакт, а не создаст дубликат.