API 사용하기

시작하기 페이지의 필수 조건을 완료한 후 이 페이지에서 이벤트를 전송하고 테스트 이벤트 도구를 사용하는 방법을 알아보세요. 이벤트를 전송한 후 설정을 확인하세요.

전환 API는 그래프 API를 기반으로 구축된 Facebook 마케팅 API에 기반합니다. 마케팅 및 그래프 API는 버전 사용 중단 일정이 각각 다릅니다. 릴리스 사이클은 그래프 API를 따라가므로 모든 버전이 2년 이상 지원됩니다. 이 예외 사항은 전환 API에만 유효합니다.

전환 API: 개요매개변수

전환 API를 사용하여 공유된 웹, 앱 및 오프라인 매장 이벤트에는 특정 매개변수가 필요합니다. 전환 API를 사용하면 회원님이 아는 한도 내에서 action_source 매개변수가 정확하다는 데 동의하게 됩니다. 필요한 매개변수의 리스트는 여기에서 확인할 수 있습니다.

요청 보내기

새 이벤트를 전송하려면 https://graph.facebook.com/{API_VERSION}/{PIXEL_ID}/events?access_token={TOKEN} 경로에서 이 API의 /events 에지로 POST 요청을 보내세요. 이 에지로 POST 요청을 보내면 Facebook이 새 서버 이벤트를 생성합니다.

curl -X POST \ -F 'data=[ { "event_name": "Purchase", "event_time": 1714788517, "user_data": { "em": [ "309a0a5c3e211326ae75ca18196d301a9bdbd1a882a4d2569511033da23f0abd" ], "ph": [ "254aa248acb47dd654ca3ea53f48c2c26d641d23d7e2e93a1ec56258df7674c4", "6f4fcb9deaeadc8f9746ae76d97ce1239e98b404efe5da3ee0b7149740f89ad6" ], "client_ip_address": "123.123.123.123", "client_user_agent": "$CLIENT_USER_AGENT", "fbc": "fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890", "fbp": "fb.1.1558571054389.1098115397" }, "custom_data": { "currency": "usd", "value": 123.45, "contents": [ { "id": "product123", "quantity": 1, "delivery_category": "home_delivery" } ] }, "event_source_url": "http://jaspers-market.com/product/123", "action_source": "website" } ]' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v19.0/<PIXEL_ID>/events
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const Content = bizSdk.Content; const CustomData = bizSdk.CustomData; const DeliveryCategory = bizSdk.DeliveryCategory; const EventRequest = bizSdk.EventRequest; const UserData = bizSdk.UserData; const ServerEvent = bizSdk.ServerEvent; const access_token = '<ACCESS_TOKEN>'; const pixel_id = '<ADS_PIXEL_ID>'; const api = bizSdk.FacebookAdsApi.init(access_token); let current_timestamp = Math.floor(new Date() / 1000); const userData = (new UserData()) .setEmails(['joe@eg.com']) .setPhones(['12345678901', '14251234567']) // It is recommended to send Client IP and User Agent for Conversions API Events. .setClientIpAddress(request.connection.remoteAddress) .setClientUserAgent(request.headers['user-agent']) .setFbp('fb.1.1558571054389.1098115397') .setFbc('fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890'); const content = (new Content()) .setId('product123') .setQuantity(1) .setDeliveryCategory(DeliveryCategory.HOME_DELIVERY); const customData = (new CustomData()) .setContents([content]) .setCurrency('usd') .setValue(123.45); const serverEvent = (new ServerEvent()) .setEventName('Purchase') .setEventTime(current_timestamp) .setUserData(userData) .setCustomData(customData) .setEventSourceUrl('http://jaspers-market.com/product/123') .setActionSource('website'); const eventsData = [serverEvent]; const eventRequest = (new EventRequest(access_token, pixel_id)) .setEvents(eventsData); eventRequest.execute().then( response => { console.log('Response: ', response); }, err => { console.error('Error: ', err); } );
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; use FacebookAds\Object\ServerSide\ActionSource; use FacebookAds\Object\ServerSide\Content; use FacebookAds\Object\ServerSide\CustomData; use FacebookAds\Object\ServerSide\DeliveryCategory; use FacebookAds\Object\ServerSide\Event; use FacebookAds\Object\ServerSide\EventRequest; use FacebookAds\Object\ServerSide\UserData; $access_token = '<ACCESS_TOKEN>'; $pixel_id = '<ADS_PIXEL_ID>'; $api = Api::init(null, null, $access_token); $api->setLogger(new CurlLogger()); $user_data = (new UserData()) ->setEmails(array('joe@eg.com')) ->setPhones(array('12345678901', '14251234567')) // It is recommended to send Client IP and User Agent for Conversions API Events. ->setClientIpAddress($_SERVER['REMOTE_ADDR']) ->setClientUserAgent($_SERVER['HTTP_USER_AGENT']) ->setFbc('fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890') ->setFbp('fb.1.1558571054389.1098115397'); $content = (new Content()) ->setProductId('product123') ->setQuantity(1) ->setDeliveryCategory(DeliveryCategory::HOME_DELIVERY); $custom_data = (new CustomData()) ->setContents(array($content)) ->setCurrency('usd') ->setValue(123.45); $event = (new Event()) ->setEventName('Purchase') ->setEventTime(time()) ->setEventSourceUrl('http://jaspers-market.com/product/123') ->setUserData($user_data) ->setCustomData($custom_data) ->setActionSource(ActionSource::WEBSITE); $events = array(); array_push($events, $event); $request = (new EventRequest($pixel_id)) ->setEvents($events); $response = $request->execute(); print_r($response);
import time from facebook_business.adobjects.serverside.action_source import ActionSource from facebook_business.adobjects.serverside.content import Content from facebook_business.adobjects.serverside.custom_data import CustomData from facebook_business.adobjects.serverside.delivery_category import DeliveryCategory from facebook_business.adobjects.serverside.event import Event from facebook_business.adobjects.serverside.event_request import EventRequest from facebook_business.adobjects.serverside.user_data import UserData from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' pixel_id = 'ADS_PIXEL_ID>' FacebookAdsApi.init(access_token=access_token) user_data = UserData( emails=['joe@eg.com'], phones=['12345678901', '14251234567'], # It is recommended to send Client IP and User Agent for Conversions API Events. client_ip_address=request.META.get('REMOTE_ADDR'), client_user_agent=request.headers['User-Agent'], fbc='fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890', fbp='fb.1.1558571054389.1098115397', ) content = Content( product_id='product123', quantity=1, delivery_category=DeliveryCategory.HOME_DELIVERY, ) custom_data = CustomData( contents=[content], currency='usd', value=123.45, ) event = Event( event_name='Purchase', event_time=int(time.time()), user_data=user_data, custom_data=custom_data, event_source_url='http://jaspers-market.com/product/123', action_source=ActionSource.WEBSITE, ) events = [event] event_request = EventRequest( events=events, pixel_id=pixel_id, ) event_response = event_request.execute() print(event_response)
import com.facebook.ads.sdk.APIContext; import com.facebook.ads.sdk.APIException; import com.facebook.ads.sdk.serverside.ActionSource; import com.facebook.ads.sdk.serverside.Content; import com.facebook.ads.sdk.serverside.CustomData; import com.facebook.ads.sdk.serverside.DeliveryCategory; import com.facebook.ads.sdk.serverside.Event; import com.facebook.ads.sdk.serverside.EventRequest; import com.facebook.ads.sdk.serverside.EventResponse; import com.facebook.ads.sdk.serverside.UserData; import java.util.Arrays; public class ServerSideApiExample { public static final String ACCESS_TOKEN = "<ACCESS_TOKEN>"; public static final String PIXEL_ID = "<ADS_PIXEL_ID>"; public static void main(String[] args) { APIContext context = new APIContext(ACCESS_TOKEN).enableDebug(true); context.setLogger(System.out); UserData userData = new UserData() .emails(Arrays.asList("joe@eg.com")) .phones(Arrays.asList("12345678901", "14251234567")) // It is recommended to send Client IP and User Agent for Conversions API Events. .clientIpAddress(clientIpAddress) .clientUserAgent(clientUserAgent) .fbc("fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890") .fbp("fb.1.1558571054389.1098115397"); Content content = new Content() .productId("product123") .quantity(1L) .deliveryCategory(DeliveryCategory.home_delivery); CustomData customData = new CustomData() .addContent(content) .currency("usd") .value(123.45F); Event purchaseEvent = new Event(); purchaseEvent.eventName("Purchase") .eventTime(System.currentTimeMillis() / 1000L) .userData(userData) .customData(customData) .eventSourceUrl("http://jaspers-market.com/product/123") .actionSource(ActionSource.website); EventRequest eventRequest = new EventRequest(PIXEL_ID, context); eventRequest.addDataItem(purchaseEvent); try { EventResponse response = eventRequest.execute(); System.out.println(String.format("Standard API response : %s ", response)); } catch (APIException e) { e.printStackTrace(); } } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' pixel_id = '<ADS_PIXEL_ID>' FacebookAds.configure do |config| config.access_token = access_token end user_data = FacebookAds::ServerSide::UserData.new( emails: ['joe@eg.com'], phones: ['12345678901', '14251234567'], # It is recommended to send Client IP and User Agent for Conversions API Events. client_ip_address: request.remote_ip, client_user_agent: request.user_agent, fbc: 'fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890', fbp: 'fb.1.1558571054389.1098115397' ) content = FacebookAds::ServerSide::Content.new( product_id: 'product123', quantity: 1, delivery_category: 'home_delivery' ) custom_data = FacebookAds::ServerSide::CustomData.new( contents: [content], currency: 'usd', value: 123.45 ) event = FacebookAds::ServerSide::Event.new( event_name: 'Purchase', event_time: Time.now.to_i, user_data: user_data, custom_data: custom_data, event_source_url: 'http://jaspers-market.com/product/123', action_source: 'website' ) request = FacebookAds::ServerSide::EventRequest.new( pixel_id: pixel_id, events: [event] ) print request.execute

생성된 안전한 액세스 토큰은 access_token 쿼리 매개변수를 사용하여 요청에 첨부합니다. 그래프 API 탐색기를 사용하여 POST 요청을 /<pixel_id>/events 엔드포인트로 보낼 수도 있습니다.

요청 본문 예시는 다음과 같습니다.

{
   "data": [
      {
         "event_name": "Purchase",
         "event_time": 1633552688,
         "event_id": "event.id.123",
         "event_source_url": "http:\/\/jaspers-market.com\/product\/123",         
         "action_source": "website",
         "user_data": {
            "client_ip_address": "192.19.9.9",
            "client_user_agent": "test ua",
            "em": [
               "309a0a5c3e211326ae75ca18196d301a9bdbd1a882a4d2569511033da23f0abd"
            ],
            "ph": [
               "254aa248acb47dd654ca3ea53f48c2c26d641d23d7e2e93a1ec56258df7674c4",
               "6f4fcb9deaeadc8f9746ae76d97ce1239e98b404efe5da3ee0b7149740f89ad6"
            ],
            "fbc": "fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890",
            "fbp": "fb.1.1558571054389.1098115397"
         },
         "custom_data": {
            "value": 100.2,
            "currency": "USD",
            "content_ids": [
               "product.id.123"
            ],
            "content_type": "product"
         },
         "opt_out": false
      },
      {
         "event_name": "Purchase",
         "event_time": 1633552688,
         "user_data": {
            "client_ip_address": "192.88.9.9",
            "client_user_agent": "test ua2"
         },
         "custom_data": {
            "value": 50.5,
            "currency": "USD"
         },
         "opt_out": false
      }
   ]
}

업로드 시간 vs. 이벤트 트랜잭션 시간

event_time은 이벤트 트랜잭션 시간입니다. 이는 실제 이벤트가 발생한 시점을 표시하는 Unix 타임스탬프(단위: 초)로 전송되어야 합니다. 지정된 시간은 Facebook에 이벤트를 전송하는 시간보다 이를 수 있습니다. 이는 일괄 처리 및 서버 성능 최적화를 위해서입니다.

event_time은 Meta에 이벤트를 전송하기 전 최대 7일까지 가능합니다. data에 최근 7일보다 이전인 event_time이 있을 경우 전체 요청에 대해 오류가 반환되고 이벤트가 처리되지 않습니다. physical_storeaction_source로 포함된 오프라인 및 실물 매장 이벤트의 경우 전환 시점으로부터 62일 이내에 거래를 업로드해야 합니다.

전환 API를 사용하면 회원님이 아는 한도 내에서 action_source 매개변수가 정확하다는 데 동의하게 됩니다.

일괄 요청

data에서 최대 1,000개까지 이벤트를 전송할 수 있습니다. 그러나 최적의 성능을 위해서는 이벤트가 발생하는 즉시 전송하는 것이 좋고 이벤트가 발생하고 1시간 이내이면 가장 이상적입니다. 일괄 전송한 이벤트가 유효하지 않을 경우 전체 배치가 거부됩니다.

해시

고객 정보 매개변수 페이지에서 Facebook에 전송하기 전에 해시되어야 하는 매개변수를 확인하세요. 비즈니스 SDK 중 하나를 사용하는 경우 SDK가 대신 해시를 처리합니다.

전환 API를 위한 비즈니스 SDK 기능

전환 API 사용자용으로 설계된 비즈니스 SDK 기능 3가지, 비동기식 요청, 동시 일괄 처리, HTTP 서비스 인터페이스에 대해 자세히 알아보세요. 이러한 기능을 사용하는 데 필요한 최소 언어 버전은 다음과 같습니다.

  • PHP >= 7.2
  • Node.js >= 7.6.0
  • Java >= 8
  • Python >= 2.7
  • Ruby >= 2

PHP 5에 대한 비즈니스 SDK 지원은 2019년 1월 이후로 사용 중단되었습니다. PHP 7로 업그레이드하여 비즈니스 SDK를 사용하세요.

PHP 5를 사용하는 경우 Swagger 구현을 사용하는 것을 고려하세요.

전환 API 매개변수

이벤트 확인

이벤트를 보내고 나면 이벤트 관리자에서 이벤트를 수신했는지 확인합니다.

  • 데이터 소스 페이지에서 POST 요청의 PIXEL_ID에 해당하는 픽셀을 클릭합니다. 자세한 내용은 비즈니스 지원 센터: 이벤트 관리자 탐색을 참조하세요.
  • 그런 다음, 개요를 클릭합니다. 그러면 수신된 원시 이벤트, 일치 이벤트, 기여 이벤트 수가 표시되고, 연결 방법에 이벤트가 전송된 채널이 보입니다.
  • 각 이벤트를 클릭하여 더욱 자세한 정보를 가져올 수 있습니다.
  • 이벤트 전송을 시작하고 나면 20분 이내에 확인해야 합니다. 이제 서버에서 이벤트 전송을 시작할 수 있습니다.

테스트 이벤트 도구

이벤트 관리자의 테스트 이벤트 기능을 사용하여 Facebook에서 올바르게 서버 이벤트를 수신했는지 확인할 수 있습니다. 도구를 찾으려면 Events Manager > Data Sources > Your Pixel > Test Events로 이동합니다.

테스트 이벤트 도구에서 테스트 ID를 생성합니다. 테스트 ID를 test_event_code 매개변수로 보내면 테스트 이벤트 창에 이벤트 활동이 나타나기 시작합니다.

참고: test_event_code 필드는 테스트에만 사용해야 합니다. 프로덕션 페이로드 전송 시 이를 삭제해야 합니다.

test_event_code를 포함해 전송한 이벤트는 드롭되지 않습니다. 이벤트 관리자로 전송되어 타게팅 및 광고 측정 목적으로 사용됩니다.

요청 구조의 예시는 다음과 같습니다.

{ "data": [ { "event_name": "ViewContent", "event_time": 1714787917, "event_id": "event.id.123", "event_source_url": "http:\/\/jaspers-market.com", "user_data": { "client_ip_address": "1.2.3.4", "client_user_agent": "test user agent" } } ], "test_event_code": "TEST123" }

그래프 API 탐색기에서 요청이 나타나는 모습의 예시는 다음과 같습니다.

이 테스트 페이로드는 페이로드 도우미 도구를 사용하여 생성할 수 있습니다. 테스트 이벤트 코드는 페이로드를 테스트하는 데만 사용합니다.

요청이 전송되면 서버 이벤트가 테스트 이벤트 창에 나타납니다.

미국 사용자의 데이터 처리 옵션

이 두 API의 경우 이벤트의 데이터 매개변수 내에서 각 이벤트 내부에 data_processing_options, data_processing_options_countrydata_processing_options_state를 추가하여 데이터 처리 옵션을 구현합니다.

참고: 앱 이벤트 및 오프라인 전환 API는 더 이상 새로운 통합에 권장되지 않습니다. 대신 전환 API가 웹, 앱, 오프라인 이벤트를 지원하므로 이를 사용하는 것이 좋습니다. 자세한 내용은 앱 이벤트용 전환 API오프라인 이벤트용 전환 API를 참조하세요.

제한된 데이터 사용(LDU)을 명시적으로 활성화하지 않으려면 각 이벤트에 대해 빈 배열을 지정하거나 페이로드에서 해당 필드를 삭제하면 됩니다.

{
    "data": [
        {
            "event_name": "Purchase",
            "event_time": <EVENT_TIME>,
            "user_data": {
                "em": "<EMAIL>"
            },
            "custom_data": {
                "currency": "<CURRENCY>",
                "value": "<VALUE>"
            },
            "data_processing_options": []
        }
    ]
}

LDU를 활성화하고 Meta가 위치 확인을 수행하도록 하려면 다음을 사용합니다.

{
    "data": [
        {
            "event_name": "Purchase",
            "event_time": <EVENT_TIME>,
            "user_data": {
                "em": "<EMAIL>",
                "client_ip_address": "256.256.256.256"
            },
            "custom_data": {
                "currency": "<CURRENCY>",
                "value": "<VALUE>"
            },
            "data_processing_options": ["LDU"],
            "data_processing_options_country": 0,
            "data_processing_options_state": 0
        }
    ]
}

LDU를 활성화하고 위치(예: 캘리포니아)를 수동으로 지정하려면 다음을 사용합니다.

{
    "data": [
        {
            "event_name": "Purchase",
            "event_time": <EVENT_TIME>,
            "user_data": {
                "em": "<EMAIL>"
            },
            "custom_data": {
                "currency": "<CURRENCY>",
                "value": "<VALUE>"
            },
            "data_processing_options": ["LDU"],
            "data_processing_options_country": 1,
            "data_processing_options_state": 1000
        }
    ]
}

수동 업로드 UI

오프라인 전환 API는 .csv 파일에서 이벤트를 수동으로 업로드하는 옵션을 제공합니다. 이 경우 데이터 처리 옵션, 데이터 처리 국가, 데이터 처리 주를 파일 내 열로 추가합니다. 이에 대한 자세한 정보는 업로드 사용자 인터페이스를 참조하세요.


데이터 처리 옵션에 대해 자세히 알아보세요.

API 제한

마케팅 API에는 자체 사용 제한 로직이 있으며 모든 그래프 API 사용 제한에서 제외됩니다. 따라서 마케팅 API를 호출하는 경우 그래프 API 제한으로 계산되지 않습니다.

전환 API에는 특정한 사용 제한이 없습니다. 전환 API 호출은 마케팅 API 호출로 계산됩니다. 유일한 제한은 한 번에 전송할 수 있는 이벤트가 최대 1,000개라는 것입니다. 자세한 내용은 요청 보내기를 참조하세요.

마케팅 API 사용 제한

전환 API 게이트웨이에서 Business SDK API 사용량

이 가이드는 전환 API 게이트웨이 사용자를 위해 설계된 Meta Business SDK 고급 기능을 둘러보는 데 도움이 됩니다. 기본 전환 API 게이트웨이 사용량의 경우 전환 API 게이트웨이 문서를 참조하세요.

전환 API 게이트웨이 인스턴스로 이벤트 보내기

요구 사항

아래에 나와 있는 기능을 사용하기 전에 Meta Business SDK를 설치해야 합니다. Meta Business SDK 시작하기를 참조하거나 여기에 나와 있는 README 지침을 따르세요.

현재 이러한 기능은 PHP 및 Java 비즈니스 SDK에서만 사용할 수 있습니다. 나머지 언어는 2023년 말까지 구현될 예정입니다.

이러한 기능을 사용하는 데 필요한 최소 언어 버전은 다음과 같습니다.

PHP >= 7.2

Java >= 8

참고: 전환 API 엔드포인트에 대한 이벤트에서 중복을 제거하려면 요청에서 eventId를 전달하세요. 이는 전환 API 게시가 활성화되었을 때 중복 이벤트가 표시되지 않도록 도와줍니다.

CAPIGatewayIngressRequest 매개변수 형식 지정

매개변수설명
endpointUrl
문자열

이벤트를 수신하는 전환 API 게이트웨이 엔드포인트. 유효한 URL인지 확인하는 것 외에는 이 매개변수에 대한 사전 검증을 수행하지 않습니다.


예: https://test.example.com


accessKey
문자열

전환 API 게이트웨이 이벤트 엔드포인트에 이벤트를 보내는 데 필요한 전환 API 게이트웨이 액세스 키. 액세스 키를 생성하기 위한 지침이 나와 있습니다.

CAPIGatewayIngressRequest 설정자

매개변수설명
setSendToDestinationOnly
부울

이벤트가 선택된 엔드포인트로만 전송되는지 여부를 나타내는 부울 플래그.


기본값: False


setFilter
CustomEndpointRequest.Filter() function

각 이벤트를 처리하는 필터링 함수. 필터링 로직이 true를 반환하면 이벤트가 전달됩니다. 그렇지 않으면 이벤트가 취소됩니다. 매개변수 이벤트가 있는 인터페이스에 shouldSendEvent 함수를 구현해야 합니다.


기본값: Null



마이그레이션 예: PHP

Business SDK를 이미 사용 중인 시스템의 경우 새로운 CAPIGatewayIngressRequest를 참조하고 eventRequest의 customEndpoint 개체에 첨부해야 합니다.

// this is the standard event request that we attach events to
$event_request = new EventRequest($this->pixel_id);
$capiIngressRequest = new CAPIGatewayIngressRequest($this->cb_url, $this->access_key);
$event_request->setCustomEndpoint($capiIngressRequest);
// pass the events to this event Request object
$event_request->setEvents($events);
$event_request->execute()

마이그레이션 예: Java

Business SDK를 이미 사용 중인 시스템의 경우 새로운 CAPIGatewayIngressRequest를 참조하고 eventRequest의 customEndpoint 개체에 첨부해야 합니다.

// this is the standard event request that we attach events to


EventRequest eventRequest = new EventRequest(PIXEL_ID, context);


CAPIGatewayIngressRequest capiSyncRequest = new CAPIGatewayIngressRequest(CB_URL, CAPIG_ACCESS_KEY);
eventRequest.setCustomEndpoint(capiSyncRequest);
eventRequest.addDataItem(testEvent);
eventRequest.execute();

동기식 옵션

PHP 코드 예

$api = Api::init(null, null, $this->access_token);
$api->setLogger(new CurlLogger());
$event_request = new EventRequest($this->pixel_id);
$capiIngressRequest = new CAPIGatewayIngressRequest($this->cb_url, $this->access_key);
$event_request->setCustomEndpoint($capiIngressRequest);
$user_data = (new UserData())
   ->setEmails(array('joe@eg.com'))
   ->setPhones(array('12345678901', '14251234567'))
   ->setFbc('fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890')
   ->setFbp('fb.1.1558571054389.1098115397');
$event1 = (new Event())
   ->setEventName('Purchase')
   ->setEventId('125')
   ->setEventTime(time())
   ->setEventSourceUrl('http://jaspers-market.com/product/123')
   ->setUserData($user_data);
$events = array($event1, $event2);
$event_request->setEvents($events);
$response = $event_request->execute();
print($response->__toString());

Java 코드 예

EventRequest eventRequest = new EventRequest(PIXEL_ID, context);
UserData userData = new UserData()
       .email("abc@eg.com");
CAPIGatewayIngressRequest capiSyncRequest = new CAPIGatewayIngressRequest(CB_URL, CAPIG_ACCESS_KEY);
eventRequest.setCustomEndpoint(capiSyncRequest);
Event testEvent = new Event();
testEvent.eventId("125").eventName("Purchase")
       .eventTime(System.currentTimeMillis() / 1000L)
       .userData(userData)
       .dataProcessingOptions(new String[]{}).setEventId("134423232");
eventRequest.namespaceId("11")
       .uploadId("22222")
       .uploadTag("upload-tag-4")
       .uploadSource("upload-source-4")
       .testEventCode("test-event-code-5")
       .partnerAgent("partner-agent-6");
eventRequest.addDataItem(testEvent);
eventRequest.execute();

비동기식 옵션

PHP 코드 예

$api = Api::init(null, null, $this->access_token);
$api->setLogger(new CurlLogger());
$event_request = new EventRequestAsync($this->pixel_id);
$capiIngressRequest = new CAPIGatewayIngressRequest($this->cb_url, $this->access_key);
$capiIngressRequest->setSendToDestinationOnly(true);
$event_request->setCustomEndpoint($capiIngressRequest);
$event1 = (new Event())
   ->setEventName('test Async Event')
   ->setEventId('134423232')
   ->setEventTime(time())
   ->setEventSourceUrl('http://jaspers-market.com/product/123');
$events = array($event1, $event2);
$event_request->setEvents($events);
$response = $event_request->execute()->wait();

Java 코드 예

EventRequest eventRequest = new EventRequest(PIXEL_ID, context);
UserData userData = new UserData()
       .email("abc@eg.com");
CAPIGatewayIngressRequest capiSyncRequest = new CAPIGatewayIngressRequest(CB_URL, CAPIG_ACCESS_KEY);
capiSyncRequest.setSendToDestinationOnly(true);
eventRequest.setCustomEndpoint(capiSyncRequest);
Event testEvent = new Event();
testEvent.eventName("test Async Event")
       .eventTime(System.currentTimeMillis() / 1000L)
       .userData(userData)
       .dataProcessingOptions(new String[]{}).setEventId("134423232");
eventRequest.namespaceId("11222")
       .uploadId("22222")
       .uploadTag("upload-tag-4")
       .uploadSource("upload-source-4")
       .testEventCode("test-event-code-5")
       .partnerAgent("partner-agent-6");
eventRequest.addDataItem(testEvent);
eventRequest.executeAsync();

필터링 기능

PHP 코드 예

lass APIFilter implements Filter {
   public function shouldSendEvent(Event $event): bool
   {
       if ($event->getEventId() === '125') {
           return false;
       }
       return true;
   }
}
$capiIngressRequest = new CAPIGatewayIngressRequest($this->cb_url, $this->access_key);
$event_request->setCustomEndpoint($capiIngressRequest);
$capiIngressRequest->setFilter(new APIFilter());

Java 코드 예

CAPIGatewayIngressRequest capiSyncRequest = new CAPIGatewayIngressRequest(CB_URL, CAPIG_ACCESS_KEY);
eventRequest.setCustomEndpoint(capiSyncRequest);


capiSyncRequest.setFilter(new CustomEndpointRequest.Filter() {
   @Override
   public boolean shouldSendEvent(Event event) {
   if (event.getEventId().equals("125")) {
       return true;
   }
   return false;
}
});