Salesforce: 레코드 생성 또는 업데이트
Salesforce: 레코드 생성 또는 업데이트를 사용하여 외부 ID 필드를 기준으로 일치하는 여정 단계에서 하나의 Salesforce 레코드를 업서트(upsert)합니다. 즉, 값이 이미 있으면 레코드를 업데이트하고 없으면 새로 생성합니다. Salesforce에는 정적 API 토큰이 없으므로, 이 지점은 전체 계정에 대해 한 번 등록된 연결된 앱을 통해 인증합니다. 지점 자체에는 토큰 필드가 없습니다.
일반적인 사용 사례:
- Salesforce 동기화 유지: 이동자가 여정을 진행함에 따라 연락처 또는 리드를 생성하거나 업데이트하여 영업팀이 최신 데이터를 볼 수 있도록 합니다.
- 여정 활동을 CRM에 동기화: 이동자가 마일스톤에 도달하면 필드를 설정하여 영업팀이 이를 필터링하거나 보고할 수 있도록 합니다.
- 중복 레코드 방지: 외부 ID로 일치시키면 이 지점을 다시 통과하는 이동자가 새 레코드를 생성하는 대신 동일한 레코드를 업데이트하게 됩니다.
시작하기 전에
Anchor link toSalesforce 조직에 연결된 앱을 생성하고 설정 > 타사 통합 > Salesforce에서 연결합니다.
- Salesforce에서 OAuth가 활성화되고 API를 통해 사용자 데이터 관리(api) 범위가 있는 외부 클라이언트 앱(또는 클래식 연결된 앱)을 생성합니다.
- 클라이언트 자격 증명 흐름을 활성화하고 실행 사용자를 선택합니다. 지점은 해당 사용자로 쓰기 작업을 수행하므로, 해당 사용자의 프로필이 어떤 객체와 필드에 접근할 수 있는지를 결정합니다.
- Pushwoosh의 내 도메인 호스트에
https://없이 조직의 호스트를 입력합니다(예:acme.my.salesforce.com). - 소비자 키와 소비자 시크릿에 앱의 자격 증명을 붙여넣습니다. 시크릿은 쓰기 전용으로 저장됩니다. Pushwoosh는 이를 다시 표시하지 않으므로, 교체하려면 새 시크릿을 붙여넣어야 합니다.
- Salesforce 연결을 클릭합니다.

Salesforce를 연결한 후, 통합을 설치하여 여정 빌더에 지점이 나타나도록 합니다.
Salesforce 측에서도 두 가지가 준비되어야 합니다.
- 일치시키는 필드는 해당 객체에서 외부 ID로 표시되어야 합니다.
Email과 같은 일반 텍스트 필드로는 충분하지 않습니다. 필드가 외부 ID가 아니면 Salesforce는NOT_FOUND로 요청을 거부합니다. - 연결된 앱의 실행 사용자는 해당 필드에 대한 필드 수준 접근 권한이 필요합니다. 설정이나 API를 통해 생성된 필드는 자체적으로 아무런 권한도 부여하지 않으며, 권한이 없으면 Salesforce는 동일한
NOT_FOUND: Field name provided ... does not match an External ID로 응답합니다. 즉, 해당 필드는 해당 사용자에게 보이지 않으므로 API 측에서는 존재하지 않는 것입니다. 실행 사용자에게 할당된 권한 집합에 이를 추가하십시오.
지점 구성하기
Anchor link to- 왼쪽 패널의 통합 섹션에서 Salesforce: 레코드 생성 또는 업데이트를 캔버스로 드래그합니다.
- 지점을 더블 클릭하고 단계 이름을 입력합니다.
- 내 도메인 호스트에 연결된 앱이 있는 동일한 호스트를 입력합니다.

- 객체에 객체의 API 이름을 입력합니다 —
Contact,Lead또는__c로 끝나는 사용자 정의 객체.

- 외부 ID 필드에 외부 ID로 표시된 필드의 API 이름을 입력합니다.

- 외부 ID 값에 일치시킬 값을 입력합니다. 보통
{{device:hwid}}와 같은 매크로를 사용합니다.

- 필드에서 설정할 Salesforce 필드마다 한 행씩 추가합니다. 필드의 API 이름과 값을 입력합니다. 이름은 비어 있지 않아야 하며 고유해야 합니다. 객체의 필수 필드가 포함되어야 하며, 그렇지 않으면 Salesforce는 새 레코드 생성을 거부합니다. 값은 고정된 텍스트이거나
{{device:hwid}}와 같은 이동자 매크로일 수 있으며, 이는 웹훅 본문과 동일한 매크로입니다. 또는 동적 값 삽입을 클릭하여 이 여정의 이전 단계에서 생성된 속성(예: LLM 응답 또는 매핑된 웹훅 값)을 선택할 수 있습니다.

- 저장을 클릭합니다.
이동자는 캔버스에서 다음에 연결하는 단계로 계속 진행합니다.
단계 실행 후의 속성
Anchor link to| 속성 | 내용 |
|---|---|
salesforce_record_id | 레코드의 ID |
이후 단계에서 사용하는 방법
Anchor link to이동자는 이 속성과 관계없이 이미 다음 단계로 진행했습니다. 나중에 이 특정 레코드를 참조해야 하는 경우(예: Salesforce 자체 API를 통해), 사용자 프로필 업데이트를 사용하여 태그에 저장하십시오.
실패 및 예기치 않은 응답
Anchor link to지점의 드로어에서 호출 로그를 열고 응답을 확인하십시오.
- 401 — 연결된 앱의 자격 증명이 잘못되었거나 클라이언트 자격 증명 흐름이 활성화되지 않았습니다.
- 본문의 NOT_FOUND — 객체 이름 또는 외부 ID 필드가 해당 조직의 어떤 것과도 일치하지 않습니다. 필드가 실제로 외부 ID로 표시되었는지 확인하십시오.
- 본문의 REQUIRED_FIELD_MISSING — 새 레코드를 생성하려면 지점이 보내지 않는 필드가 필요합니다. 필드에 추가하십시오.
- 본문의 INVALID_FIELD — 필드의 이름이 해당 객체의 API 이름이 아닙니다. 사용자 정의 필드의 API 이름은
__c로 끝납니다.
실패한 요청은 이동자를 여정에서 제외시킵니다. 오류 및 실패한 요청을 참조하십시오.
예시 시나리오: 인앱 상담 요청을 영업팀으로 라우팅하기
Anchor link to웰니스 앱에서 사용자가 인앱에서 상담사와 상담하기를 탭할 수 있습니다. 팀은 이 요청이 영업 담당자가 후속 조치를 취할 수 있는 Salesforce 연락처가 되기를 원합니다.
- 트리거 기반 진입 요소를 추가하고
AdvisorCallRequested이벤트에서 실행되도록 설정합니다. - 바로 뒤에 Salesforce: 레코드 생성 또는 업데이트를 추가합니다. 객체를
Contact로, 외부 ID 필드를Pushwoosh_HWID__c로, 외부 ID 값을{{device:hwid}}로 설정합니다. 필드에서Email을{{tag:Email}}로 설정합니다. - 저장을 클릭합니다.
이것이 실행되면, 모든 인앱 상담 요청은 Salesforce에 연락처로 기록되며, 장치별로 일치하므로 반복적인 탭은 중복을 생성하는 대신 동일한 연락처를 업데이트합니다.