Criteo OneTag

웹사이트의 소스 코드에 Criteo OneTag를 직접 구현하기위한 가이드

[[disclaimer-developer_ko]]

개요

이 가이드에서는 Criteo OneTag 솔루션을 소스코드에 어떻게 구현해야 하는지를 설명 할 것입니다. 그리고 Criteo OneTag는 웹사이트의 각 페이지에 헤드(head) 나 본문(body)태그에 적용을 해야 하며 아래에 있는 로더 스크립트 및 태그들를 적용해야 합니다.

  1. 로더 스크립트

  2. 홈페이지 태그

  3. 카테고리/검색/리스팅 태그

  4. 상품 태그

  5. 장바구니 태그

  6. 세일즈 태그

  7. 세일즈 태그(네이버페이 주문형)

피드

Google Shopping Feed가 있다면 Criteo 담당자에게 전달하여 주시고 아직 없는 경우에는 Criteo 피드 사양과 일치하는 제품 피드를 만들어 주시면 됩니다.

태그

로더 스크립트

모든 페이지에서 실행되도록 아래 스크립트를 사이트 헤드(head)에 설치해야 합니다. 로더는 Criteo 태그가 작동하기 위해 꼭 필요합니다.

<!-- Criteo 로더 파일 -->
<script type="text/javascript" src="//dynamic.criteo.com/js/ld/ld.js?a={{accountid}}" async="true"></script>
<!-- END Criteo 로더 파일 -->

홈페이지 태그

웹 사이트의 아래 페이지에 다음 태그를 설치 하실 수 있습니다:

  • 홈페이지 (예: {{homepageurl}})
  • 카테고리, 검색, 리스팅, 상품, 장바구니, 구매완료 페이지를 제외한 오디언스를 트랙킹 하기 원하는 페이지 (예: {{homepageurl}}/event_1)
필드 개요 예제 구문 필수
User Email 일반 텍스트 혹은 MD5 해시된 유저의 이메일 79054025255fb1a26e4bc422aef54eb4 문자열(String) 가용시 필수
Zip Code 배송지 우편번호. 크리테오의 데이터베이스에 저장되기 전에 값은 해시됩니다. 크리테오는 개인식별정보를 저장하지 않으며 모든 현지법을 준수합니다. 12345 문자열(String) 추천

구조 및 설명

##으로 둘러싸인 필드를 동적인 사용자 정보로 바꿉니다. 예제 참조

<!-- Criteo 홈페이지 태그 -->
<script type="text/javascript">
window.criteo_q = window.criteo_q || [];
var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
window.criteo_q.push(
 { event: "setAccount", account: {{accountid}}},

 // To Do 1. 현재 유저의 이메일 주소(공백 제거 및 소문자로 변환 후). 유저의 이메일을 알수 없는 상황이면 빈 문자열로 전달
 { event: "setEmail", email: "##User Email##" },

 // To Do 2. 현재 유저의 저장된 배송지 우편번호. 유저의 배송지 우편번호를 알수 없는 상황이면 빈 문자열로 전달
 { event: "setZipcode", zipcode: "##Zip Code##" },

 { event: "setSiteType", type: deviceType},
 { event: "viewHome"});
</script> 
<!-- END Criteo 홈페이지 태그 -->

예제

<!-- Criteo 홈페이지 태그 -->
<script type="text/javascript">
window.criteo_q = window.criteo_q || [];
var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
window.criteo_q.push(
 { event: "setAccount", account: {{accountid}}},
 { event: "setEmail", email: "79054025255fb1a26e4bc422aef54eb4" },
 { event: "setZipcode", zipcode: "12345" },
 { event: "setSiteType", type: deviceType},
 { event: "viewHome"});
</script>
<!-- END Criteo 홈페이지 태그 -->

카테고리/검색/리스팅 태그

웹 사이트의 아래 페이지에 다음 태그를 설치하실 수 있습니다:

  • 목록 페이지
  • 카테고리 페이지 (예: {{homepageurl}}/category?id=categoryid_1)
  • 검색 결과 페이지 (예: {{homepageurl}}/search?q=search_keywords)
필드 개요 예제 구문 필수
User Email 일반 텍스트 혹은 MD5 해시된 유저의 이메일 79054025255fb1a26e4bc422aef54eb4 문자열(String) 가용시 필수
Zip Code 배송지 우편번호. 크리테오의 데이터베이스에 저장되기 전에 값은 해시됩니다. 크리테오는 개인식별정보를 저장하지 않으며 모든 현지법을 준수합니다. 12345 문자열(String) 추천
Product ID 상품의 고유 ID ProductID_1 문자열(String) 필수

구조 및 설명

##으로 둘러싸인 필드를 동적인 사용자 정보로 바꿉니다. 예 참조

<!-- Criteo 카테고리/검색/리스팅 태그 -->
<script type="text/javascript">
window.criteo_q = window.criteo_q || [];
var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
window.criteo_q.push(
 { event: "setAccount", account: {{accountid}}},

 // To Do 1. 현재 유저의 이메일 주소(공백 제거 및 소문자로 변환 후) 전달. 유저의 이메일을 알수 없는 상황이면 빈 문자열로 전달
 { event: "setEmail", email: "##User Email##" },

 // To Do 2. 현재 유저의 저장된 배송지 우편번호. 유저의 배송지 우편번호를 알수 없는 상황이면 빈 문자열로 전달
 { event: "setZipcode", zipcode: "##Zip Code##" },

 { event: "setSiteType", type: deviceType},

 // To Do 3. 가장 위에있는 3개의 상품 ID를 전달. 태그에서 전달되는 상품 ID와 피드에서 전달 주신 상품 ID가 매칭이 되어야 함. 3개 이상의 상품을 넣을 경우 엔진 학습에는 사용되지 않으며 웹사이트 퍼포먼스가 낮아지니 되도록이면 3개의 상품 ID만 전달주시기를 추천
 { event: "viewList", item: ["##Product ID 1##", "##Product ID 2##", "##Product ID 3##"] }); 

</script>
<!-- END Criteo 카테고리/검색/리스팅 태그 -->

예제

<!-- Criteo 카테고리/검색/리스팅 태그 -->
<script type="text/javascript">
window.criteo_q = window.criteo_q || [];
var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
window.criteo_q.push(
 { event: "setAccount", account: {{accountid}}},
 { event: "setEmail", email: "79054025255fb1a26e4bc422aef54eb4" },
 { event: "setZipcode", zipcode: "12345" },
 { event: "setSiteType", type: deviceType},
 { event: "viewList", item: ["ProductID_1", "ProductID_2", "ProductID_3"] });
</script>
<!-- END Criteo 카테고리/검색/리스팅 태그 -->

상품 태그

웹 사이트의 상품 세부 사항 페이지에 다음 태그를 설치하십시오. URL 예 : {{homepageurl}}/product?id=productid_1

필드 개요 예제 구문 필수
User Email 일반 텍스트 혹은 MD5 해시된 유저의 이메일 79054025255fb1a26e4bc422aef54eb4 문자열(String) 가용시 필수
Zip Code 배송지 우편번호. 크리테오의 데이터베이스에 저장되기 전에 값은 해시됩니다. 크리테오는 개인식별정보를 저장하지 않으며 모든 현지법을 준수합니다. 12345 문자열(String) 추천
Product ID 상품의 고유 ID ProductID_1 문자열(String) 필수

구조 및 설명

##으로 둘러싸인 필드를 동적인 사용자 정보로 바꿉니다. 예 참조

<!-- Criteo 상품 태그 -->
<script type="text/javascript">
window.criteo_q = window.criteo_q || [];
var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
window.criteo_q.push(
 { event: "setAccount", account: {{accountid}}},

 // To Do 1. 현재 유저의 이메일 주소(공백 제거 및 소문자로 변환 후) 전달. 유저의 이메일을 알수 없는 상황이면 빈 문자열로 전달
 { event: "setEmail", email: "##User Email##" },

 // To Do 2. 현재 유저의 저장된 배송지 우편번호. 유저의 배송지 우편번호를 알수 없는 상황이면 빈 문자열로 전달
 { event: "setZipcode", zipcode: "##Zip Code##" },

 { event: "setSiteType", type: deviceType},

 // To Do 3. 현재 유저가 보고있는 상품의 ID 전달. 태그에서 전달되는 상품 ID와 피드에서 전달 주신 상품 ID가 매칭이 되어야 함
 { event: "viewItem", item: "##Product ID 1##" });

</script>
<!-- END Criteo 상품 태그 -->

예제

<!-- Criteo 상품 태그 -->
<script type="text/javascript">
window.criteo_q = window.criteo_q || [];
var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
window.criteo_q.push(
 { event: "setAccount", account: {{accountid}}},
 { event: "setEmail", email: "79054025255fb1a26e4bc422aef54eb4" },
 { event: "setZipcode", zipcode: "12345" },
 { event: "setSiteType", type: deviceType},
 { event: "viewItem", item: "ProductID_1" });
</script>
<!-- END Criteo 상품 태그 -->

장바구니 태그

웹 사이트의 장바구니 페이지에 다음 태그를 설치하십시오. URL 예: {{homepageurl}}/cart

필드 개요 예제 구문 필수
User Email 일반 텍스트 혹은 MD5 해시된 유저의 이메일 79054025255fb1a26e4bc422aef54eb4 문자열(String) 가용시 필수
Zip Code 배송지 우편번호. 크리테오의 데이터베이스에 저장되기 전에 값은 해시됩니다. 크리테오는 개인식별정보를 저장하지 않으며 모든 현지법을 준수합니다. 12345 문자열(String) 추천
Product ID 상품의 고유 ID ProductID_1 문자열(String) 필수
Unit Price 상품 단가 20000 소수(Decimal) 필수
Quantity 추가 된 유닛 수 2 정수(Integer) 필수

구조 및 설명

##으로 둘러싸인 필드를 동적인 사용자 정보로 바꿉니다. 예 참조

<!-- Criteo 장바구니 태그 -->
<script type="text/javascript">
window.criteo_q = window.criteo_q || [];
var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
window.criteo_q.push(
 { event: "setAccount", account: {{accountid}}},

 // To Do 1. 현재 유저의 이메일 주소(공백 제거 및 소문자로 변환 후) 전달. 유저의 이메일을 알수 없는 상황이면 빈 문자열로 전달
 { event: "setEmail", email: "##User Email##" },

 // To Do 2. 현재 유저의 저장된 배송지 우편번호. 유저의 배송지 우편번호를 알수 없는 상황이면 빈 문자열로 전달
 { event: "setZipcode", zipcode: "##Zip Code##" },

 { event: "setSiteType", type: deviceType},
 { event: "viewBasket", item: [

  // To Do 3. 현재 유저가 추가한 상품의 정보(상품 ID, 상품 단가, 추가한 수량)를 아래 객체 포멧으로 전달
  // 상품 ID는 태그에서 전달되는 상품 ID와 피드에서 전달 주신 상품 ID가 매칭이 되어야 함
  // 상품 단가는 유저가 선택한 상품의 단가로 전달(옵션 추가 가격 및 할인 가격 포함). 통화 기호 및 천단위 구분자는 제외
  // 수량은 유저가 선택한 값으로 전달
  // Tip 1. 복잡한 추가 구성 상품 및 옵션으로 인해 제대로된 상품 단가 및 수량 전달이 어려운 경우, 최종 가격으로 전달 후 수량은 1로 전달 해주셔도 됩니다.
  {id: "##Product ID 1##", price: ##Unit Price##, quantity: ##Quantity## }
  // 장바구니에 추가 된 각 상품에 대한 새 객체 추가. 새 객체를 추가하실때, 객체 사이를 쉼표(,)로 구분
]}
);
</script>
<!-- END Criteo 장바구니 태그 -->

예제

<!-- Criteo 장바구니 태그 -->
<script type="text/javascript">
window.criteo_q = window.criteo_q || [];
var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
window.criteo_q.push(
 { event: "setAccount", account: {{accountid}}},
 { event: "setEmail", email: "79054025255fb1a26e4bc422aef54eb4" },
 { event: "setZipcode", zipcode: "12345" },
 { event: "setSiteType", type: deviceType},
 { event: "viewBasket", item: [
  {id: "ProductID_1", price: 20000, quantity: 2 },
  {id: "ProductID_2", price: 15000, quantity: 1 }
]}
);
</script>
<!-- END Criteo 장바구니 태그 -->

세일즈 태그

웹 사이트의 판매 확인 또는 감사 페이지에 다음 태그를 설치하십시오. URL 예: {{homepageurl}}/thankyou

필드 개요 예제 구문 필수
User Email 일반 텍스트 혹은 MD5 해시된 유저의 이메일 79054025255fb1a26e4bc422aef54eb4 문자열(String) 가용시 필수
Zip Code 배송지 우편번호. 크리테오의 데이터베이스에 저장되기 전에 값은 해시됩니다. 크리테오는 개인식별정보를 저장하지 않으며 모든 현지법을 준수합니다. 12345 문자열(String) 추천
Product ID 상품의 고유 ID ProductID_1 문자열(String) 필수
Unit Price 상품 단가 20000 소수(Decimal) 필수
Quantity 추가 된 유닛 수 2 정수(Integer) 필수
Transaction ID 확인 또는 주문 번호 7654322 문자열(String) 또는 정수(Integer) 필수

구조 및 설명

##으로 둘러싸인 필드를 동적인 사용자 정보로 바꿉니다. 예 참조

<!-- Criteo 세일즈 태그 -->
<script type="text/javascript">
window.criteo_q = window.criteo_q || [];
var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
window.criteo_q.push(
 { event: "setAccount", account: {{accountid}}},

 // To Do 1. 현재 유저의 이메일 주소(공백 제거 및 소문자로 변환 후) 전달. 유저의 이메일을 알수 없는 상황이면 빈 문자열로 전달
 { event: "setEmail", email: "##User Email##" },

 // To Do 2. 현재 유저의 저장된 배송지 우편번호. 유저의 배송지 우편번호를 알수 없는 상황이면 빈 문자열로 전달
 { event: "setZipcode", zipcode: "##Zip Code##" },

 { event: "setSiteType", type: deviceType},

 // To Do 3. 확인 또는 주문 번호를 전달. 확인 또는 주문 번호가 없을 경우, Math.floor(Math.random()*99999999999)와 같이 랜덤한 숫자를 만들어 전달
 { event: "trackTransaction", id: ##Transaction ID##, item: [

  // To Do 4. 현재 유저가 추가한 상품의 정보(상품 ID, 상품 단가, 추가한 수량)를 아래 객체 포멧으로 전달
  // 상품 ID는 태그에서 전달되는 상품 ID와 피드에서 전달 주신 상품 ID가 매칭이 되어야 함
  // 상품 단가는 유저가 선택한 상품의 단가로 전달(옵션 추가 가격 및 할인 가격 포함). 통화 기호 및 천단위 구분자는 제외
  // 수량은 유저가 선택한 값으로 전달
  // Tip 1. 복잡한 추가 구성 상품 및 옵션으로 인해 제대로된 상품 단가 및 수량 전달이 어려운 경우, 최종 가격으로 전달 후 수량은 1로 전달 해주셔도 됩니다.
  // Tip 2. 크리테오는 이 세일즈 태그에서 전달 주는 상품 단가와 수량을 곱하기하여 매출을 리포팅 하오니, 최대한 정확하게 전달이 중요합니다.
  {id: "##Product ID 1##", price: ##Unit Price##, quantity: ##Quantity## }
  // 장바구니에 추가 된 각 상품에 대한 새 객체 추가. 새 객체를 추가하실때, 객체 사이를 쉼표(,)로 구분
]}
);
</script>
<!-- END Criteo 세일즈 태그 -->

예제

<!-- Criteo 세일즈 태그 -->
<script type="text/javascript">
window.criteo_q = window.criteo_q || [];
var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
window.criteo_q.push(
 { event: "setAccount", account: {{accountid}}},
 { event: "setEmail", email: "79054025255fb1a26e4bc422aef54eb4" },
 { event: "setZipcode", zipcode: "12345" },
 { event: "setSiteType", type: deviceType},
 { event: "trackTransaction", id: 7654322, item: [
  {id: "ProductID_1", price: 20000, quantity: 2 },
  {id: "ProductID_2", price: 15000, quantity: 1 }
]}
);
</script>
<!-- END Criteo 세일즈 태그 -->

세일즈 태그(네이버페이 주문형)

이 세일즈 태그는 네이버페이(주문형)를 사용하시는 경우에만 적용이 됩니다.

웹 사이트의 네이버페이 버튼이 노출되는 페이지에 다음 태그를 설치하십시오. 대게 상품 세부 사항 및 장바구니 페이지. URL 예: {{homepageurl}}/product?id=productid_1

네이버페이 버튼을 클릭시 새 브라우저 탭에서 오픈이 되게 설정을 해주셔야 합니다.

필드 개요 예제 구문 필수
User Email 일반 텍스트 혹은 MD5 해시된 유저의 이메일 79054025255fb1a26e4bc422aef54eb4 문자열(String) 가용시 필수
Zip Code 배송지 우편번호. 크리테오의 데이터베이스에 저장되기 전에 값은 해시됩니다. 크리테오는 개인식별정보를 저장하지 않으며 모든 현지법을 준수합니다. 12345 문자열(String) 추천
Product ID 상품의 고유 ID ProductID_1 문자열(String) 필수
Unit Price 상품 단가 20000 소수(Decimal) 필수
Quantity 추가 된 유닛 수 2 정수(Integer) 필수

[[disclaimer-npay_ko]]

구조

##으로 둘러싸인 필드를 동적인 사용자 정보로 바꿉니다. 예 참조

<!-- Criteo 세일즈 태그 - 네이버페이 주문형 -->
<script type="text/javascript">
window.criteo_q = window.criteo_q || [];
window.criteo_q.push({
 requiresDOM: "non-blocking", cb: function () {
  addEvent("npay_btn_pay", "click", function () {
   if (typeof(Storage) !== "undefined") {


    // Tip 1. 해당 태그의 확인 또는 주문 번호는 npay를 접두사로 랜덤한 11숫자로 만들어지게 셋업이 되어있습니다.
    criteoNpayEvent(
     {{accountid}},

     // To Do 1. 현재 유저가 추가한 상품의 정보(상품 ID, 상품 단가, 추가한 수량)를 아래 객체 포멧으로 전달
     // 상품 ID는 태그에서 전달되는 상품 ID와 피드에서 전달 주신 상품 ID가 매칭이 되어야 함
     // 상품 단가는 유저가 선택한 상품의 단가로 전달(옵션 추가 가격 및 할인 가격 포함). 통화 기호 및 천단위 구분자는 제외
     // 수량은 유저가 선택한 값으로 전달
     // Tip 2. 복잡한 추가 구성 상품 및 옵션으로 인해 제대로된 상품 단가 및 수량 전달이 어려운 경우, 최종 가격으로 전달 후 수량은 1로 전달 해주셔도 됩니다.
     // Tip 3. 크리테오는 이 세일즈 태그에서 전달 주는 상품 단가와 수량을 곱하기하여 매출을 리포팅 하오니, 최대한 정확하게 전달이 중요합니다.
     [{ id: "##Product ID 1##", price: ##Unit Price##, quantity: ##Quantity##}],

     // To Do 2. 현재 유저의 이메일 주소(공백 제거 및 소문자로 변환 후) 전달. 유저의 이메일을 알수 없는 상황이면 빈 문자열로 전달
     "##User Email##",

     // To Do 3. 현재 유저의 저장된 배송지 우편번호. 유저의 배송지 우편번호를 알수 없는 상황이면 빈 문자열로 전달
     "##Zip Code##"
    );
   } 
  });                
 }
});

function criteoNpayEvent(parterId, itemArray, email="", zipcode="") {
 var lastNpayTransaction = localStorage.lastNpayTransaction;
 var itemIdArray = [];
 for (item in itemArray)
  itemIdArray.push(itemArray[item].id);
 itemIdArray.sort();

 if (lastNpayTransaction !== undefined){
  var lastNpayTimestamp = lastNpayTransaction.split("||")[0];
  var lastNpayProductsArray = lastNpayTransaction.split("||")[1].split(",").sort();
  if ((Date.now() - lastNpayTimestamp)/1000/60 < 10 && arraysMatch(itemIdArray, lastNpayProductsArray))
   return;
 }

 var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
 criteo_q.push(
  { event: "setAccount", account: parterId },
  { event: "setEmail", email: email },
  { event: "setZipcode", zipcode: zipcode },
  { event: "setSiteType", type: deviceType },
  { event: "trackTransaction", id: "npay" + Math.floor(Math.random()*99999999999), item: itemArray }
 );
 localStorage.lastNpayTransaction = Date.now() + "||" + itemIdArray.join();
}

function arraysMatch(arr1, arr2) {
 if (arr1.length !== arr2.length) return false;
 for (var i = 0; i < arr1.length; i++) {
  if (arr1[i] !== arr2[i]) return false;
 }
 return true;
};

function addEvent(className, evType, fn) {
 document.addEventListener(evType, function(e){
  if (e.target && e.target.classList.contains(className)) {
   fn();
   return true;
  }
 });
}
</script>
<!-- END Criteo 세일즈 태그 - 네이버페이 주문형 -->

예제

<!-- Criteo 세일즈 태그 - 네이버페이 주문형 -->
<script type="text/javascript">
window.criteo_q = window.criteo_q || [];
window.criteo_q.push({
 requiresDOM: "non-blocking", cb: function () {
  addEvent("npay_btn_pay", "click", function () {
   if (typeof(Storage) !== "undefined") {                        
    criteoNpayEvent({{accountid}}, [{ id: "ProductID_1", price: 20000, quantity: 2},{id: "ProductID_2", price: 15000, quantity: 1 }], "79054025255fb1a26e4bc422aef54eb4", "12345");
   } 
  });                
 }
});

function criteoNpayEvent(parterId, itemArray, email="", zipcode="") {
 var lastNpayTransaction = localStorage.lastNpayTransaction;
 var itemIdArray = [];
 for (item in itemArray)
  itemIdArray.push(itemArray[item].id);
 itemIdArray.sort();

 if (lastNpayTransaction !== undefined){
  var lastNpayTimestamp = lastNpayTransaction.split("||")[0];
  var lastNpayProductsArray = lastNpayTransaction.split("||")[1].split(",").sort();
  if ((Date.now() - lastNpayTimestamp)/1000/60 < 10 && arraysMatch(itemIdArray, lastNpayProductsArray))
   return;
 }

 var deviceType = /iPad/.test(navigator.userAgent) ? "t" : /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(navigator.userAgent) ? "m" : "d";
 criteo_q.push(
  { event: "setAccount", account: parterId },
  { event: "setEmail", email: email },
  { event: "setZipcode", zipcode: zipcode },
  { event: "setSiteType", type: deviceType },
  { event: "trackTransaction", id: "npay" + Math.floor(Math.random()*99999999999), item: itemArray }
 );
 localStorage.lastNpayTransaction = Date.now() + "||" + itemIdArray.join();
}

function arraysMatch(arr1, arr2) {
 if (arr1.length !== arr2.length) return false;
 for (var i = 0; i < arr1.length; i++) {
  if (arr1[i] !== arr2[i]) return false;
 }
 return true;
};

function addEvent(className, evType, fn) {
 document.addEventListener(evType, function(e){
  if (e.target && e.target.classList.contains(className)) {
   fn();
   return true;
  }
 });
}
</script>
<!-- END Criteo 세일즈 태그 - 네이버페이 주문형 -->

확인

[[accurate_ko]]