외부 랜딩페이지에서 API로 리드 접수하기
외부 랜딩페이지 폼을 DID API에 연결해 리드를 접수합니다. 엔드포인트, 필드 규칙, 요청 예시를 안내합니다.
DID 설치 코드를 붙일 수 없는 외부 랜딩페이지나 자체 서버에서 받은 문의도 API로 보내면 리드로 접수됩니다. 이 글은 개발자가 요청을 만들 때 필요한 주소, 인증, 필드 규칙을 안내합니다.
시작하기 전에
- 개인정보 처리 위탁 계약에 서명해야 합니다. 서명하지 않으면 요청이 403
lead_agreement_required오류로 거절됩니다. - 사이트 키가 필요합니다. 사이트 > 설정 > 사이트 설정의 사이트 키 영역에서 확인합니다. 비공개 키는 키를 볼 권한이 있는 멤버만 확인할 수 있습니다.
- 접수 요청은 비공개 키로 보냅니다. 공개 키로 보낸 쓰기 요청은 403 오류로 거절됩니다.
- 비공개 키는 서버 연동에만 사용합니다. 방문자의 브라우저 코드에 포함하면 키가 노출됩니다.
순서
- 사이트 > 설정 > 수집 설정을 선택하고 API 연동 탭을 선택합니다.
- 엔드포인트 영역에서 메서드, URL, 인증, 형식을 확인합니다. 메서드는 POST, 형식은 application/json이고, 인증은
Authorization: Bearer <사이트 키>헤더입니다.
- 요청 필드 규칙에 맞게 본문을 작성합니다.
fields.email또는fields.phone중 하나는 필수입니다.fields에는email,phone,name,company,consent_personal,consent_marketing,consent_third_party를 보낼 수 있습니다.- 그 밖의 항목은
attributes로 보냅니다. 최대 50개까지 저장됩니다. - 접수된 위치는
context.entry_point로 구분합니다. 접수 위치 영역의 허용 접수 위치에 표시된 값을 사용합니다. - 담당자를 지정하려면
assignment.assignee_ulid에 담당자의 ULID를 보냅니다.
- 요청 예시 영역의 cURL 복사를 선택해 예시를 복사하고, 키와 값을 실제 값으로 변경합니다. 예시는 다음과 같습니다.
curl -X POST 'https://did.kr/api/v1/leads' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer your_app_secret_key' \
-d '{
"fields": {
"email": "[email protected]",
"phone": "010-2334-5678",
"name": "Jane",
"company": "DID",
"consent_personal": true,
"consent_marketing": false
},
"attributes": {
"점포보유여부": "1",
"예산": "5500 미만",
"address": "서울 강남구"
},
"context": { "entry_point": "homepage" }
}'
- JavaScript 예시 영역의 Fetch 복사를 선택하면 같은 요청을 fetch 코드로 복사할 수 있습니다.
- 요청을 보낸 뒤 응답을 확인합니다. 접수되면 상태 코드 201과 함께
data.status와data.ulid가 돌아옵니다.data.status가created이면 새 리드,updated이면 기존 리드에 합쳐진 것입니다. - 사이트 > 설정 > 접수 내역이나 리드 목록에서 문의가 들어왔는지 확인합니다.
응답과 오류
| 상태 | 뜻 | 확인할 점 |
|---|---|---|
| 201 | 접수됐습니다 | data.status로 새 리드인지 합쳐진 리드인지 구분합니다. |
| 202 | 요청은 받았지만 리드로 바로 등록되지 않았습니다 | 접수 규칙이나 확인 절차에 걸려 보관됐을 수 있습니다. 접수 내역에서 확인합니다. |
| 401 | 인증에 실패했습니다 | Authorization: Bearer 헤더와 키 값을 확인합니다. |
| 403 | 키 종류나 계약이 맞지 않습니다 | 공개 키가 아닌 비공개 키를 사용하고, 위탁 계약 서명 여부를 확인합니다. |
| 422 | 값이 규칙에 맞지 않습니다 | 이메일과 전화번호 중 하나가 있는지, 접수 규칙에 맞는지 확인합니다. |
이후에는
- 접수된 문의는 리드 목록에 등록되고 접수 내역에 원본이 남습니다.
- 같은 전화번호나 이메일로 병합 기간 안에 다시 보내면 새 리드가 만들어지지 않고 기존 리드에 합쳐집니다. 기간은 접수 규칙과 중복 접수 설정에서 정합니다.
- 설치 코드가 있는 페이지에서 보낼 때는 JavaScript 예시처럼
window.DID로 유입과 방문 정보를 함께 보낼 수 있습니다.
안 될 때
| 증상 | 원인 | 해결 |
|---|---|---|
| 필수 값이 없다는 오류가 납니다 | fields.email과 fields.phone이 모두 비었습니다 |
둘 중 하나 이상을 보냅니다. |
| 항목이 리드 상세에 나타나지 않습니다 | 필드 이름이 규칙과 다릅니다 | 기본 항목은 fields, 그 밖의 항목은 attributes 아래에 보냅니다. 이름의 철자를 화면 예시와 맞춥니다. |
| 401 오류가 납니다 | 키가 없거나 잘못됐습니다 | 사이트 설정의 사이트 키를 다시 복사합니다. 키 앞에 Bearer 와 공백이 있어야 합니다. |
| 키가 노출됐습니다 | 비공개 키가 브라우저 코드나 저장소에 포함됐습니다 | 노출이 의심되면 고객 지원에 알려 주세요. 앞으로는 서버에서만 호출합니다. |
| 같은 문의를 여러 번 보냈는데 리드가 하나입니다 | 병합 기간 안의 같은 번호나 이메일입니다 | 정상 동작입니다. 병합 기간은 수집 설정의 중복 접수 처리에서 확인합니다. |
| 접수는 됐는데 리드 목록에 없습니다 | 접수 규칙에 맞지 않아 보관됐습니다 | 사이트 > 설정 > 접수 내역의 확인 필요 항목을 확인합니다. |

