메타 픽셀

샵바이 변수를 이용한 메타 픽셀 '수동' 적용 가이드

관련 문서


메타 픽셀 코드 예시

상단 공통

메타에서 발급 받은 '공통' 픽셀을 적용합니다. (쿠키 생성, 광고의 클릭 아이디 등 생성)

{{pixelID}} 부분은 생성하신 픽셀의 아이디로 변경해주시면 됩니다. (쌍 따옴표는 지우시면 안됩니다.)

<!-- 예시 코드 -->
<script>
  !(function (f, b, e, v, n, t, s) {
    if (f.fbq) return;
    n = f.fbq = function () {
      n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments);
    };
    if (!f._fbq) f._fbq = n;
    n.push = n;
    n.loaded = !0;
    n.version = "2.0";
    n.queue = [];
    t = b.createElement(e);
    t.async = !0;
    t.src = v;
    s = b.getElementsByTagName(e)[0];
    s.parentNode.insertBefore(t, s);
  })(
    window,
    document,
    "script",
    "https://connect.facebook.net/en_US/fbevents.js"
  );
  fbq("init", "{{pixelID}}"); // ""(쌍따옴표)는 지우지 마세요.
  fbq("track", "PageView");
</script>
<noscript
  ><img
    height="1"
    width="1"
    style="display: none"
    src="https://www.facebook.com/tr?id={{pixelID}}&ev=PageView&noscript=1"
/></noscript>

상품 상세 페이지 (ViewContent 이벤트)

소비자들이 보았던 상품을, 소유한 메타 카탈로그 상품(데이터)과(와) 매칭 합니다.

<!-- 예시 코드 -->
<script>
  try {
    if (sb?.product) {
      const {
        baseInfo: { productNo },
        price: { salePrice, immediateDiscountAmt },
      } = sb.product;

      fbq("track", "ViewContent", {
        content_ids: String(productNo),
        content_type: "product",
        value: salePrice - immediateDiscountAmt,
        currency: "KRW",
      });
    }
  } catch (error) {
    console.error("An error occurred:", error);
  }
</script>

장바구니 페이지 (AddToCart)

장바구니 추가 시 작동해야 하는 이벤트 이나,

간단하게 장바구니 페이지에서, 상품이 있는 경우에만 체크하여 스크립트 동작

<!-- 예시 코드 -->
<script>
  try {
    const {
      deliveryGroups = [],
      price: { buyAmt = 0 },
    } = sb.cart;

    if (deliveryGroups.length > 0) {
      const productNos = deliveryGroups.flatMap(({ orderProducts }) =>
        orderProducts.map(({ productNo }) => String(productNo))
      );

      fbq("track", "AddToCart", {
        content_ids: productNos,
        content_type: "product",
        value: buyAmt,
        currency: "KRW",
      });
    }
  } catch (error) {
    console.error("An error occurred:", error);
  }
</script>

회원가입 완료 페이지 (CompleteRegistration)

value는 자유롭게 변경해주셔도 됩니다.

(다만 value key와 value를생략할 경우 페이스북 이벤트 관리자에서 경고 메시지가 발생할 수 있습니다.)

<!-- 예시 코드 -->
<script>
  try {
    fbq("track", "CompleteRegistration", {
      currency: "KRW",
      content_name: "JoinOK",
      value: "1",
    });
  } catch (error) {
    console.error("An error occurred:", error);
  }
</script>

주문서 작성/결제 페이지 (InitiateCheckout)

<!-- 예시 코드 -->
<script>
  try {
    const { deliveryGroups = [] } = sb.orderSheet;

    if (deliveryGroups.length > 0) {
      const products = deliveryGroups.flatMap(
        ({ orderProducts }) => orderProducts
      );
      const productNos = products.map(({ productNo }) => String(productNo));
      const totalPrice = products.reduce((sum, cur) => {
        sum += cur.buyAmt;

        return sum;
      }, 0);

      fbq("track", "InitiateCheckout", {
        content_ids: productNos,
        value: totalPrice,
        currency: "KRW",
        content_type: "product",
      });
    }
  } catch (error) {
    console.error("An error occurred:", error);
  }
</script>

주문 완료 페이지 (Purchase)

<!-- 예시 코드 -->
<script>
    try {
      const { orderOptionsGroupByPartner = [] } = sb.order;
  
      const orderProducts = orderOptionsGroupByPartner.flatMap(
        ({ orderOptionsGroupByDelivery }) =>
          orderOptionsGroupByDelivery.flatMap(({ orderOptions }) => orderOptions)
      );
      const productNos = orderProducts.map(({ productNo }) => String(productNo));
      const totalPrice = orderProducts.reduce((accumulator, product) => {
        return accumulator + (product.orderCnt * product.price.buyPrice);
      }, 0);
  
      fbq("track", "Purchase", {
        content_ids: productNos,
        content_type: "product",
        value: totalPrice,
        currency: "KRW",
      });
    } catch (error) {
      console.error("An error occurred:", error);
    }
</script>

Last updated