---
title: "Meta Ads 커넥터"
description: "Tajo를 통해 Meta Ads의 Facebook 및 Instagram 광고 오디언스, 전환, 캠페인 데이터를 Brevo와 동기화하는 완전한 통합 가이드입니다."
url: https://tajo.io/kr/docs/connectors/marketing/meta-ads/
markdown: https://tajo.io/kr/docs/connectors/marketing/meta-ads.md
lang: ko-KR
robots: noindex
---

Tajo 사전 이용 신청

이름과 회사 이메일 주소를 입력하세요. Tajo 이용 신청을 확인할 수 있는 링크를 이메일로 보내드립니다.

# Meta Ads 커넥터

커넥터 상태: 예정 아직 구축되지 않았습니다. Tajo는 현재 이 커넥터를 실행하지 않습니다.

| 원본 필드 | 대상 필드 | 예시 값 |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Tajo를 통해 Meta Ads(Facebook & Instagram)를 Brevo에 연결하여 Custom Audience를 동기화하고, Conversions API를 통해 전환 이벤트를 가져오며, 유료 소셜 광고와 라이프사이클 마케팅 자동화를 연결하십시오.

## 개요

| 속성 | 값 |
| --- | --- |
| **플랫폼** | Meta Ads (Facebook, Instagram, Messenger, WhatsApp) |
| **카테고리** | Marketing |
| **설정 복잡도** | 고급 |
| **공식 통합** | 아니오 |
| **동기화 데이터** | 오디언스, 전환, 캠페인, 리드 |
| **사용 가능한 스킬** | 8 |
| **API 버전** | v25.0 (Graph API) |

## 기능

- **Custom Audience 동기화** - Brevo 연락처 목록을 Meta Custom Audience로 업로드
- **Conversions API (CAPI)** - 정확한 귀속을 위해 서버 측 전환 이벤트 전송
- **리드 폼 동기화** - Facebook 리드 광고 제출을 Brevo 연락처로 직접 가져오기
- **캠페인 인사이트** - Tajo 대시보드로 광고 성능 지표 가져오기
- **Lookalike 오디언스** - 동기화된 Brevo 세그먼트에서 Lookalike 오디언스 생성
- **카탈로그 동기화** - 동적 제품 광고용 제품 카탈로그 동기화
- **멀티 플랫폼** - 단일 통합으로 Facebook, Instagram, Messenger, WhatsApp 광고 커버

## 사전 요구 사항

시작하기 전에 다음이 준비되어 있는지 확인하십시오.

1. Meta Business Manager 계정
2. Marketing API 접근 권한이 있는 Facebook 앱
3. 적절한 권한이 있는 System User
4. `ads_management` 및 `ads_read` 권한이 있는 액세스 토큰
5. API 접근이 가능한 Brevo 계정
6. API 자격 증명이 있는 Tajo 계정

## 인증

### System User 액세스 토큰

Meta는 서버-서버 통합에 System User 토큰 사용을 권장합니다. 이러한 토큰은 만료되지 않습니다.

```bash
# System User에 필요한 권한
ads_management
ads_read
business_management
leads_retrieval
pages_read_engagement
catalog_management
```

### 앱 수준 인증

```bash
curl -G "https://graph.facebook.com/v25.0/act_AD_ACCOUNT_ID/campaigns" \
  -d "access_token=SYSTEM_USER_ACCESS_TOKEN" \
  -d "fields=name,status,objective"
```

## 구성

### 기본 설정

```yaml
connectors:
  meta_ads:
    enabled: true
    app_id: "your-facebook-app-id"
    app_secret: "your-facebook-app-secret"
    access_token: "your-system-user-access-token"
    ad_account_id: "act_123456789"
    business_id: "987654321"
    pixel_id: "111222333444"

    # 데이터 동기화 옵션
    sync:
      custom_audiences: true
      conversions_api: true
      lead_forms: true
      campaign_insights: true

    # API 버전
    api_version: "v25.0"
```

### Custom Audience 구성

Brevo 목록을 Meta Custom Audience로 동기화합니다.

```yaml
custom_audiences:
  enabled: true
  lists:
    - brevo_list_id: 5
      audience_name: "All Customers"
      subtype: "CUSTOM"
    - brevo_list_id: 6
      audience_name: "High LTV Customers"
      subtype: "CUSTOM"
    - brevo_list_id: 7
      audience_name: "Recent Purchasers"
      subtype: "CUSTOM"

  # 매칭 필드
  match_keys:
    - EMAIL
    - PHONE
    - FN     # 이름
    - LN     # 성
    - CT     # 도시
    - ST     # 주
    - ZIP
    - COUNTRY

  schedule: "daily"
  sync_mode: "mirror"
```

### Conversions API 구성

```yaml
conversions_api:
  enabled: true
  pixel_id: "111222333444"
  test_event_code: ""  # 테스트용으로 설정, 프로덕션에서는 비움

  events:
    - brevo_event: "order_completed"
      meta_event: "Purchase"
      value_field: "revenue"
      currency_field: "currency"
    - brevo_event: "cart_updated"
      meta_event: "AddToCart"
    - brevo_event: "customer_created"
      meta_event: "Lead"
    - brevo_event: "page_viewed"
      meta_event: "ViewContent"
```

## API 엔드포인트

| 메서드 | 엔드포인트 | 설명 |
| --- | --- | --- |
| `POST` | `/v25.0/act_{id}/customaudiences` | Custom Audience 생성 |
| `POST` | `/v25.0/{audience_id}/users` | Custom Audience에 사용자 추가 |
| `DELETE` | `/v25.0/{audience_id}/users` | Custom Audience에서 사용자 제거 |
| `POST` | `/v25.0/{pixel_id}/events` | Conversions API 이벤트 전송 |
| `GET` | `/v25.0/act_{id}/campaigns` | 캠페인 목록 |
| `GET` | `/v25.0/act_{id}/insights` | 캠페인 인사이트 가져오기 |
| `GET` | `/v25.0/{form_id}/leads` | 리드 폼 제출 가져오기 |
| `POST` | `/v25.0/act_{id}/adcreatives` | 광고 크리에이티브 생성 |
| `GET` | `/v25.0/{catalog_id}/products` | 카탈로그 제품 목록 |

## 코드 예제

### Meta Ads 커넥터 초기화

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

// Meta Ads 계정 연결
await tajo.connectors.connect('meta-ads', {
  appId: process.env.META_APP_ID,
  appSecret: process.env.META_APP_SECRET,
  accessToken: process.env.META_ACCESS_TOKEN,
  adAccountId: 'act_123456789',
  pixelId: '111222333444'
});
```

### Conversions API 이벤트 전송

```javascript
// Conversions API를 통해 구매 이벤트 전송
const response = await fetch(
  `https://graph.facebook.com/v25.0/${PIXEL_ID}/events`,
  {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      data: [{
        event_name: 'Purchase',
        event_time: Math.floor(Date.now() / 1000),
        action_source: 'website',
        user_data: {
          em: [hashSHA256('jane@example.com')],
          ph: [hashSHA256('+15551234567')],
          fn: [hashSHA256('jane')],
          ln: [hashSHA256('kim')],
          client_ip_address: '192.168.1.1',
          client_user_agent: 'Mozilla/5.0...',
          fbc: 'fb.1.1234567890.AbCdEfG',  // Click ID
          fbp: 'fb.1.1234567890.987654321'  // Browser ID
        },
        custom_data: {
          value: 89.99,
          currency: 'USD',
          content_ids: ['SKU-001'],
          content_type: 'product'
        }
      }],
      access_token: process.env.META_ACCESS_TOKEN
    })
  }
);
```

### Brevo 목록에서 Custom Audience 동기화

```javascript
// Brevo 연락처 목록을 Meta Custom Audience로 업로드
await tajo.connectors.syncAudience('meta-ads', {
  brevoListId: 5,
  audienceName: 'High Value Customers',
  matchKeys: ['EMAIL', 'PHONE', 'FN', 'LN'],
  syncMode: 'mirror'
});
```

### 캠페인 인사이트 가져오기

```javascript
// 캠페인 성능 지표 가져오기
const insights = await tajo.connectors.query('meta-ads', {
  resource: 'campaigns',
  fields: ['campaign_name', 'impressions', 'clicks', 'spend',
           'actions', 'cost_per_action_type'],
  dateRange: { since: '2024-01-01', until: '2024-01-31' },
  level: 'campaign'
});
```

## 속도 제한

| 리소스 | 제한 | 세부 사항 |
| --- | --- | --- |
| **Marketing API** | 티어 기반 | 앱 접근 수준 및 지출 기반 |
| **Custom Audience 업로드** | 시간당 700 요청 | 광고 계정당 |
| **Conversions API** | 2,000 이벤트/초 | Pixel당 |
| **Insights API** | 시간당 200 호출 | 광고 계정당 |
| **리드 가져오기** | 시간당 200 호출 | 페이지당 |
| **배치 요청** | 배치당 50 요청 | 배치 호출당 |

비즈니스 검증 필수

전체 Marketing API 접근에는 Meta Business Manager에서 비즈니스 검증이 필요합니다. 검증되지 않은 앱은 속도 제한이 제한된 개발 모드로 제한됩니다.

## 문제 해결

| 문제 | 원인 | 해결 방법 |
| --- | --- | --- |
| `OAuthException` | 토큰 만료되거나 잘못됨 | System User 액세스 토큰 재생성 |
| 낮은 Custom Audience 매칭률 | 낮은 데이터 품질 | 모든 PII를 SHA-256으로 해시, 여러 매칭 키 포함 |
| 전환이 귀속되지 않음 | `fbc`/`fbp` 매개변수 누락 | 쿠키에서 Facebook Click ID 및 Browser ID 전달 |
| `RATE_LIMIT_REACHED` | API 호출이 너무 많음 | 지수 백오프 구현, API 접근 티어 확인 |
| 리드 폼이 동기화되지 않음 | `leads_retrieval` 권한 누락 | System User에 권한 추가 |
| 테스트 모드의 이벤트 | `test_event_code`가 여전히 설정됨 | 프로덕션에서 테스트 이벤트 코드 제거 |

## 모범 사례

1. **System User 토큰 사용** - System User는 서버 통합에 안정적이고 만료되지 않는 토큰 제공
2. **모든 PII 해시** - Meta로 전송하기 전에 모든 개인 식별 정보를 SHA-256으로 해시
3. **CAPI와 Pixel 모두 전송** - 중복 제거를 포함한 중복 추적에 Conversions API와 Meta Pixel 모두 사용
4. **이벤트 ID 포함** - 중복 제거를 활성화하려면 CAPI와 Pixel 이벤트 모두에 `event_id` 설정
5. **`fbc` 및 `fbp` 전달** - 최대 전환 귀속을 위해 Facebook Click ID 및 Browser ID 포함
6. **비즈니스 검증** - 전체 API 접근 및 더 높은 속도 제한을 위해 비즈니스 검증 완료
7. **`test_event_code` 사용** - 라이브로 전환하기 전에 Events Manager에서 Conversions API 이벤트 테스트

## 보안

- **System User 토큰** - 비개인적이며 비즈니스 범위의 인증 토큰
- **SHA-256 해시** - Meta 서버로 전송하기 전에 모든 PII 해시
- **App Secret Proof** - 선택적 추가 인증 보안 계층
- **비즈니스 범위 지정** - 특정 광고 계정 및 페이지로 권한 범위 지정
- **Meta 규정 준수** - Meta 플랫폼 약관 및 광고 정책 적용
- **데이터 처리 약관** - EU 데이터에 Meta의 데이터 처리 약관 적용

## 관련 리소스

- [Google Ads 커넥터](https://tajo.io/kr/docs/connectors/marketing/google-ads)
- [Klaviyo 커넥터](https://tajo.io/kr/docs/connectors/marketing/klaviyo)
- [Brevo 커넥터](https://tajo.io/kr/docs/connectors/marketing/brevo)
- [고객 동기화 스킬](https://tajo.io/kr/docs/skills/data-sync/customer-sync)
