---
title: "ゴールをコンバージョンする"
slug: "convert-a-goal"
abstract: ""
---
# ゴールをコンバージョンする

このトピックでは、トラッカーからトリガーされた目標をxConnectに保存される前にカスタム目標に変換する方法を説明します。

## カスタム目標モデルの作成

using Sitecore.XConnect;
using System;

namespace Documentation
{
 public class NewsletterSignupGoal : Goal
 {
 public static Guid NewsletterGoalID = Guid.Parse("{1779CC42-EF7A-4C58-BF19-FA85D30755C9}");

 public NewsletterSignupGoal(DateTime timestamp, Guid newsletterID) : base(NewsletterGoalID, timestamp)
 {
 NewsletterId = newsletterID;
 }

 public Guid NewsletterId { get; private set; }
 }
}

## 目標変換プロセッサを作成する

1.  ConvertPageEventDataToEventBaseを継承するパイプラインプロセッサを作成します。
2.  示した通り CreateEvent と CanProcessPageEventData を実装します。このハンドラは NewsletterId が Data プロパティに保存されていると仮定しています。

using Sitecore.Analytics.Model;
using Sitecore.Analytics.XConnect.DataAccess.Pipelines.ConvertToXConnectEventPipeline;
using Sitecore.Framework.Conditions;
using Sitecore.XConnect;

namespace Documentation
{
 public class ConvertNewsletterSignupGoal : ConvertPageEventDataToEventBase
 {
 protected override bool CanProcessPageEventData(PageEventData pageEventData)
 {
 Condition.Requires(pageEventData, nameof(pageEventData)).IsNotNull();

 if (pageEventData.PageEventDefinitionId == NewsletterSignupGoal.NewsletterGoalID)
 {
 return true;
 }

 return false;
 }

 protected override Event CreateEvent(PageEventData pageEventData)
 {
 var newsletter = Guid.Empty;

 Guid.TryParse(pageEventData.Data, out newsletter);

 NewsletterSignupGoal newsletterSignupGoal = new NewsletterSignupGoal(pageEventData.DateTime, newsletter);

 return newsletterSignupGoal;
 }
 }
}

## レジスタ目標変換プロセッサ

**MyBrand.CustomEvents.config**という新しい設定ファイルを作成し、表示通りハンドラーでパッチを当ててください:

> !重要最終ゴールハンドラーの前にプロセッサーを接続しなければなりません。

<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
 <sitecore>
 <pipelines>
 <convertToXConnectEvent>
 <processor patch:before="processor@type='Sitecore.Analytics.XConnect.DataAccess.Pipelines.ConvertToXConnectEventPipeline.ConvertPageEventDataToGoal, Sitecore.Analytics.XConnect'" type="Documentation.ConvertNewsletterSignupGoal, Documentation"/>
 </convertToXConnectEvent>
 </pipelines>
 </sitecore>
</configuration>

## 目標を発動する

目標変換パイプラインプロセッサが期待するカスタムデータで目標をトリガーします:

var ev = Sitecore.Analytics.Tracker.MarketingDefinitions.GoalsNewsletterSignupGoal.NewsletterGoalID;

if (ev != null)
{
 var newsletterId = Guid.NewGuid(); // Fake newsletter ID
 var pageData = new Sitecore.Analytics.Data.PageEventData(ev.Alias, ev.Id);

 pageData.Data = newsletterId.ToString();

 Sitecore.Analytics.Tracker.Current.CurrentPage.Register(pageData);
}