이벤트 추적

Adobe Target의 이벤트 추적 기능을 사용하여 비즈니스 및 사용 사례에 가장 중요한 지표를 효과적으로 측정합니다. 추적 이벤트는 성과가 있거나 성과가 없는 변형 또는 경험을 알려주기 때문에 실험 또는 개인화 활동의 성공을 측정하는 데 중요합니다. 이를 이해하면 사용자가 지속적으로 변화하는 환경에서 제품에 관심을 갖거나 진화하는 방법을 이해하는 데 도움이 됩니다.

Adobe Target의 SDK를 통해 이벤트를 추적하려면 다음 2단계 프로세스를 따르십시오.

  1. SDK를 설치하고 Adobe Target에 이벤트를 보내는 코드를 배포합니다.

  2. UI에서 목표 지표를 사용하여 Adobe Target 활동을 만들고 활성화합니다.

    대체 이미지

목표 지표 및 이벤트

다음 표는 Target의 보고 기능을 사용하여 Target 활동으로 정의하고 측정할 수 있는 목표와 이벤트의 조합을 정의합니다.

기본 목표
이벤트
변환
페이지 확인함, mbox 확인함 및 mbox 클릭함
수입
mbox를 보고 mbox를 클릭함
참여
페이지 보기 수, 고객 점수 및 사이트에서 보낸 시간

노출 수가 트리거되는 방법

Target SDK에서 기본 배달 API를 호출합니다. 필수 매개변수가 있는 실행 객체가 요청 자체 내에 있을 때 노출은 자격 있는 활동에 대해 자동으로 증가합니다. 노출을 자동으로 증가시키는 SDK 메서드는 다음과 같습니다.

  • getOffers()
  • getAttributes()
NOTE
미리 가져오기 개체가 요청 내에서 전달되면 미리 가져오기 개체 내에 mbox가 있는 활동에 대한 노출이 자동으로 증가하지 않습니다.

sendNotifications 메서드를 사용하여 이벤트를 Adobe Target에 수동으로 보내고 노출을 트리거할 수 있습니다.

Node.js
code language-js line-numbers
TargetClient.sendNotifications(options: Object): Promise
Java
code language-java line-numbers
ResponseStatus TargetClient.sendNotifications(TargetDeliveryRequest request)

샘플 코드

다음 코드 샘플은 전환, 매출 또는 참여 여부에 관계없이 모든 목표 지표 유형에 대해 작동합니다.

페이지 또는 Mbox 확인함

이 샘플은 먼저 getOffers을(를) 사용하여 Target mbox 오퍼를 가져옵니다. 그런 다음 해당 mbox 오퍼를 기반으로 한 알림으로 요청을 구성합니다.

알림 type 속성이 display(으)로 설정되어 있습니다.

페이지가 조회되었음을 나타내려면 알림 페이로드에 주소 개체를 지정해야 합니다. URL을 적절하게 설정해야 합니다.

mbox의 경우 알림 개체에 mbox 속성을 설정하고 targetResult의 옵션 배열을 기반으로 토큰 배열을 제공해야 합니다.

Node.js
code language-js line-numbers
const TargetClient = require("@adobe/target-nodejs-sdk");
const { v4: uuidv4 } = require("uuid");

const client = TargetClient.create({
  client: "acmeclient",
  organizationId: "1234567890@AdobeOrg",
  events: { clientReady: onTargetReady },
});

async function onTargetReady() {
  const targetResult = await client.getOffers({
    request: {
      targetRequest,
      prefetch: {
        mboxes: [
          {
            name: "homepage",
            index: 1
          }
        ]
      },
      sessionId: uuidv4()
    }
  });

  const { mboxes = [] } = targetResult.response.prefetch;

  const request = {
    context: { channel: "web" },
    notifications: mboxes.map(mbox => {
      const { options = [] } = mbox;

      return {
        id: targetResult.response.id,
        impressionId: uuidv4(),
        address: {
          url: "http://www.target-demo-site.com"
        },
        timestamp: new Date().getTime(),
        type: "display",
        mbox: {
          name: mbox.name
        },
        tokens: options.map(option => option.eventToken)
      };
    })
  };
  // send the notification event
  await client.sendNotifications({ request });
}
Java
code language-java line-numbers
ClientConfig clientConfig = ClientConfig.builder()
                .client("acmeclient")
                .organizationId("1234567890@AdobeOrg")
                .build();

TargetClient targetClient = TargetClient.create(clientConfig);

Context context = new Context()
        .channel(ChannelType.WEB)
        .address(new Address().url("http://www.target-demo-site.com"));

TargetDeliveryResponse targetResult = targetJavaClient.getOffers(TargetDeliveryRequest.builder()
        .context(context
        )
        .prefetch(new PrefetchRequest()
                .mboxes(new ArrayList() {{
                    add(new MboxRequest().name("homepage").index(1));
                }})
        )
        .build());

List<Notification> notifications = new ArrayList<>();
List<PrefetchMboxResponse> mboxes = targetResult.getResponse().getPrefetch().getMboxes();

for (PrefetchMboxResponse mbox : mboxes) {
    List<Option> options = mbox.getOptions();

    notifications.add((Notification) new Notification()
            .id(targetResult.getResponse().getRequestId())
            .impressionId(UUID.randomUUID().toString())
            .timestamp(System.currentTimeMillis())
            .type(MetricType.DISPLAY)
            .mbox(new NotificationMbox().name(mbox.getName()))
            .tokens(options.stream().map(Option::getEventToken).collect(Collectors.toList()))
            .address(new Address().url("http://www.target-demo-site.com"))
    );
}

TargetDeliveryRequest notificationRequest = TargetDeliveryRequest.builder()
        .context(context)
        .notifications(notifications).build();

targetJavaClient.sendNotifications(notificationRequest);

Mbox 클릭

이 샘플은 먼저 getOffers을(를) 사용하여 Target mbox 오퍼를 가져옵니다. 그런 다음 해당 mbox 오퍼를 기반으로 한 알림으로 요청을 구성합니다.

알림 type 속성이 click(으)로 설정되어 있습니다.

알림 개체에 mbox 속성을 설정하고 targetResult의 지표 배열을 기반으로 토큰 배열을 제공해야 합니다.

Node.js
code language-js line-numbers
const TargetClient = require("@adobe/target-nodejs-sdk");
const { v4: uuidv4 } = require("uuid");

const client = TargetClient.create({
  client: "acmeclient",
  organizationId: "1234567890@AdobeOrg",
  events: { clientReady: onTargetReady },
});

async function onTargetReady() {
  const targetResult = await client.getOffers({
    request: {
      targetRequest,
      prefetch: {
        mboxes: [
          {
            name: "homepage",
            index: 1
          }
        ]
      },
      sessionId: uuidv4()
    }
  });

  const { mboxes = [] } = targetResult.response.prefetch;

  const request = {
    context: { channel: "web" },
    notifications: mboxes.map(mbox => {
      const { options = [], metrics = [] } = mbox;

      return {
        id: targetResult.response.id,
        impressionId: uuidv4(),
        address: {
          url: "http://www.target-demo-site.com"
        },
        timestamp: new Date().getTime(),
        type: "click",
        mbox: {
          name: mbox.name
        },
        tokens: metrics
                  .filter(metric => metric.type === "click")
                  .map(metric => metric.eventToken)
      };
    })
  };
  // send the notification event
  await client.sendNotifications({ request });
}
Java
code language-java line-numbers
ClientConfig clientConfig = ClientConfig.builder()
                .client("acmeclient")
                .organizationId("1234567890@AdobeOrg")
                .build();

TargetClient targetClient = TargetClient.create(clientConfig);

Context context = new Context()
        .channel(ChannelType.WEB)
        .address(new Address().url("http://www.target-demo-site.com"));

TargetDeliveryResponse targetResult = targetJavaClient.getOffers(TargetDeliveryRequest.builder()
        .context(context
        )
        .prefetch(new PrefetchRequest()
                .mboxes(new ArrayList() {{
                    add(new MboxRequest().name("homepage").index(1));
                }})
        )
        .build());

List<Notification> notifications = new ArrayList<>();
List<PrefetchMboxResponse> mboxes = targetResult.getResponse().getPrefetch().getMboxes();

for (PrefetchMboxResponse mbox : mboxes) {
    List<Metric> metrics = mbox.getMetrics();

    notifications.add((Notification) new Notification()
            .id(targetResult.getResponse().getRequestId())
            .impressionId(UUID.randomUUID().toString())
            .timestamp(System.currentTimeMillis())
            .type(MetricType.CLICK)
            .mbox(new NotificationMbox().name(mbox.getName()))
            .tokens(metrics.stream()
                    .filter(metric -> MetricType.CLICK.equals(metric.getType()))
                    .map(Metric::getEventToken)
                    .collect(Collectors.toList()))
            .address(new Address().url("http://www.target-demo-site.com"))
    );
}

TargetDeliveryRequest notificationRequest = TargetDeliveryRequest.builder()
        .context(context)
        .notifications(notifications).build();

targetJavaClient.sendNotifications(notificationRequest);

보기 확인함

이 샘플은 먼저 getOffers을(를) 사용하여 대상 보기를 가져옵니다. 그런 다음 해당 보기를 기반으로 알림으로 요청을 구성합니다.

알림 type 속성이 display(으)로 설정되어 있습니다.

보기의 경우 알림 개체에 view 속성을 설정하고 targetResult의 옵션 배열을 기반으로 토큰 배열을 제공해야 합니다.

Node.js
code language-js line-numbers
const TargetClient = require("@adobe/target-nodejs-sdk");
const { v4: uuidv4 } = require("uuid");

const client = TargetClient.create({
  client: "acmeclient",
  organizationId: "1234567890@AdobeOrg",
  events: { clientReady: onTargetReady },
});

async function onTargetReady() {
  const targetResult = await client.getOffers({
    request: {
      targetRequest,
      prefetch: {
        views: [{}]
      },
      sessionId: uuidv4()
    }
  });

  const { views = [] } = targetResult.response.prefetch;

  const request = {
    context: { channel: "web" },
    notifications: views.map(view => {
      const { options = [], metrics = [] } = view;

      return {
        id: targetResult.response.id,
        impressionId: uuidv4(),
        address: {
          url: "http://www.target-demo-site.com"
        },
        timestamp: new Date().getTime(),
        type: "display",
        view: {
          name: view.name
        },
        tokens: options.map(option => option.eventToken)
      };
    })
  };
  // send the notification event
  await client.sendNotifications({ request });
}
Java
code language-java line-numbers
ClientConfig clientConfig = ClientConfig.builder()
                .client("acmeclient")
                .organizationId("1234567890@AdobeOrg")
                .build();

TargetClient targetClient = TargetClient.create(clientConfig);

Context context = new Context()
        .channel(ChannelType.WEB)
        .address(new Address().url("http://www.target-demo-site.com"));

TargetDeliveryResponse targetResult = targetJavaClient.getOffers(TargetDeliveryRequest.builder()
        .context(context)
        .prefetch(new PrefetchRequest()
                .views(new ArrayList() {{
                    add(new ViewRequest());
                }})
        )
        .build());

List<Notification> notifications = new ArrayList<>();
List<View> views = targetResult.getResponse().getPrefetch().getViews();

for (View view : views) {
    List<Option> options = view.getOptions();
    List<Metric> metrics = view.getMetrics();

    notifications.add((Notification) new Notification()
            .id(targetResult.getResponse().getRequestId())
            .impressionId(UUID.randomUUID().toString())
            .timestamp(System.currentTimeMillis())
            .type(MetricType.DISPLAY)
            .view(new NotificationView().name(view.getName()))
            .tokens(options.stream().map(Option::getEventToken).collect(Collectors.toList()))
            .address(new Address().url("http://www.target-demo-site.com"))
    );
}

TargetDeliveryRequest notificationRequest = TargetDeliveryRequest.builder()
        .context(context)
        .notifications(notifications).build();

targetJavaClient.sendNotifications(notificationRequest);

보기를 클릭함

이 샘플은 먼저 getOffers을(를) 사용하여 대상 보기를 가져옵니다. 그런 다음 해당 보기를 기반으로 한 알림으로 요청을 구성합니다.

알림 type 속성이 click(으)로 설정되어 있습니다.

알림 개체에 view 속성을 설정하고 targetResult의 지표 배열을 기반으로 토큰 배열을 제공해야 합니다.

Node.js
code language-js line-numbers
const TargetClient = require("@adobe/target-nodejs-sdk");
const { v4: uuidv4 } = require("uuid");

const client = TargetClient.create({
  client: "acmeclient",
  organizationId: "1234567890@AdobeOrg",
  events: { clientReady: onTargetReady },
});

async function onTargetReady() {
  const targetResult = await client.getOffers({
    request: {
      targetRequest,
      prefetch: {
        views: [{}]
      },
      sessionId: uuidv4()
    }
  });

  const { views = [] } = targetResult.response.prefetch;

  const request = {
    context: { channel: "web" },
    notifications: views.map(view => {
      const { options = [], metrics = [] } = view;

      return {
        id: targetResult.response.id,
        impressionId: uuidv4(),
        address: {
          url: "http://www.target-demo-site.com"
        },
        timestamp: new Date().getTime(),
        type: "click",
        view: {
          name: view.name
        },
        tokens: metrics
                  .filter(metric => metric.type === "click")
                  .map(metric => metric.eventToken)
      };
    })
  };
  // send the notification event
  await client.sendNotifications({ request });
}
Java
code language-java line-numbers
ClientConfig clientConfig = ClientConfig.builder()
                .client("acmeclient")
                .organizationId("1234567890@AdobeOrg")
                .build();

TargetClient targetClient = TargetClient.create(clientConfig);

Context context = new Context()
        .channel(ChannelType.WEB)
        .address(new Address().url("http://www.target-demo-site.com"));

TargetDeliveryResponse targetResult = targetJavaClient.getOffers(TargetDeliveryRequest.builder()
        .context(context)
        .prefetch(new PrefetchRequest()
                .views(new ArrayList() {{
                    add(new ViewRequest());
                }})
        )
        .build());

List<Notification> notifications = new ArrayList<>();
List<View> views = targetResult.getResponse().getPrefetch().getViews();

for (View view : views) {
    List<Option> options = view.getOptions();
    List<Metric> metrics = view.getMetrics();

    notifications.add((Notification) new Notification()
            .id(targetResult.getResponse().getRequestId())
            .impressionId(UUID.randomUUID().toString())
            .timestamp(System.currentTimeMillis())
            .type(MetricType.CLICK)
            .view(new NotificationView().name(view.getName()))
            .tokens(metrics.stream()
                    .filter(metric -> MetricType.CLICK.equals(metric.getType()))
                    .map(Metric::getEventToken)
                    .collect(Collectors.toList()))
            .address(new Address().url("http://www.target-demo-site.com"))
    );
}

TargetDeliveryRequest notificationRequest = TargetDeliveryRequest.builder()
        .context(context)
        .notifications(notifications).build();

targetJavaClient.sendNotifications(notificationRequest);
recommendation-more-help
6906415f-169c-422b-89d3-7118e147c4e3