Skip to main content

Meta 광고

Meta(Facebook) 광고 계정의 캠페인·광고세트·광고·저장된 타겟을 조회하고, 입력 데이터셋으로 캠페인·광고세트·광고를 등록하는 노드입니다.


설명

이 노드는 동작 모드(mode)대상(level) 두 축으로 동작합니다.

캠페인광고세트광고저장된 타겟
조회(view)
등록(create)

조회 결과를 데이터 변환 노드로 가공한 뒤 다시 등록 모드에 연결하면, 조회 → 변환 → 재등록 흐름을 캔버스 안에서 완성할 수 있습니다.

기존 광고를 늘리는 거라면 복제가 더 낫습니다

조회해서 다시 등록하면 우리가 읽지 않는 설정이 전부 사라집니다. 실제 광고세트를 측정해보면 값이 들어있는 필드 26개 중 조회가 읽는 것은 13개입니다. bid_strategy, pacing_type, targeting_optimization_types 같은 것들이 안 읽히고, 재등록하면 조용히 기본값으로 리셋됩니다.

기존 캠페인을 변형해서 늘리는 작업이라면 Meta 광고 복제 노드를 쓰세요. Meta가 우리가 모르는 필드까지 전부 옮기고, 그 위에 바꿀 것만 덮어씁니다.

인증은 액세스 토큰을 노드 속성으로 직접 입력합니다. 별도의 계정 연동(OAuth) 절차가 없습니다.

저장된 타겟은 만들 수 없습니다

Meta가 저장된 타겟(Saved Audience)에 대해 생성·수정·삭제 API를 제공하지 않습니다. 조회만 가능합니다.

새 타겟을 만들려면 Meta 광고 관리자에서 직접 만들어야 합니다. 다만 광고세트를 등록할 때 나이대·성별·지역을 직접 지정할 수 있고, 기존 저장된 타겟의 설정을 그대로 재사용할 수도 있습니다 (타겟팅 지정 방법 참고).


액세스 토큰 발급

Meta Marketing API를 호출할 수 있는 장기 토큰이 필요합니다.

  1. Meta 비즈니스 관리자에서 비즈니스 설정 → 사용자 → 시스템 사용자로 이동합니다
  2. 시스템 사용자를 추가하고, 대상 광고 계정에 권한을 부여합니다
  3. 광고를 등록할 거라면 페이지도 함께 할당합니다 (소재의 page_id)
  4. 토큰 생성을 클릭하고 앱을 선택합니다
  5. 권한으로 ads_management 를 선택합니다 (조회만 하면 ads_read 로 충분)
  6. 만료 기간은 만료 안 함으로 두고, 생성된 토큰을 복사합니다 (한 번만 표시됩니다)

광고 계정 ID는 따로 찾지 않아도 됩니다. 토큰을 입력하면 접근 가능한 광고 계정 목록이 드롭다운에 자동으로 채워집니다.

토큰은 캔버스에 평문으로 저장됩니다

액세스 토큰 입력란은 화면에서 •••• 로 가려지지만, 값 자체는 캔버스 데이터에 그대로 저장되며 노드를 실행할 때마다 실행 이력에도 사본이 남습니다. 캔버스를 공유받은 사용자는 토큰을 확인할 수 있고, 나중에 토큰을 교체해도 과거 이력의 옛 토큰은 남습니다.

  • 개인 계정 토큰 대신 시스템 사용자 토큰을 사용하세요
  • 필요한 최소 권한(ads_read 또는 ads_management)만 부여하세요
  • 캔버스를 외부와 공유할 때는 토큰을 비우거나 별도 계정의 토큰을 사용하세요

포트 구성

입력 포트

  • 데이터셋 (선택): 등록할 데이터. 등록(create) 모드에서만 필요하며, 조회 모드에서는 연결하지 않아도 됩니다.

출력 포트

  • 데이터셋:
    • 조회 모드 — 조회한 목록
    • 등록 모드 — 입력 행에 결과 ID 컬럼(_meta_campaign_id / _meta_adset_id / _meta_ad_id, _meta_status)이 추가된 등록 결과

속성

액세스 토큰 (accessToken) · 광고 계정 (adAccountId)

토큰을 입력하면 광고 계정 드롭다운이 자동으로 채워집니다. 토큰이 잘못되었거나 권한이 없으면 그 자리에서 오류가 표시되므로, 노드를 실행해보기 전에 문제를 알 수 있습니다. 비활성 상태인 계정은 이름 뒤에 (비활성) 이 붙습니다.

동작 모드 (mode)

  • 조회 (view) (기본값) / 등록 (create)

조회 대상 (level)

조회 시등록 시
캠페인 (campaign) (기본값)캠페인 목록캠페인 생성
광고세트 (adset)광고세트 목록 + 나이대·성별·지역광고세트 생성 (나이대를 여기서 지정)
광고 (ad)광고 목록소재 + 광고 생성
저장된 타겟 (savedAudience)미리 만들어 둔 타겟 설정❌ Meta 미지원

상태 필터 (statusFilter) — 조회 모드

전체 (기본값) / 게재 중(ACTIVE) / 일시 중단(PAUSED) / 보관됨(ARCHIVED). 저장된 타겟에는 적용되지 않습니다.

신규 항목 상태 (newAdStatus) — 등록 모드

  • 일시 중단 (PAUSED) (기본값, 권장) / 즉시 게재 (ACTIVE)
ACTIVE 선택 시 즉시 과금이 시작됩니다

Meta는 생성 시 ACTIVE 또는 PAUSED만 허용합니다. ACTIVE로 등록하면 심사 통과 직후 게재가 시작되고 실제 광고비가 지출됩니다. 기본값인 PAUSED로 등록한 뒤 광고 관리자에서 확인하고 직접 게재를 시작하는 것을 권장합니다. 워크플로우를 반복 실행하거나 스케줄로 자동 실행하는 경우 특히 주의하세요.

원본 타겟 JSON 포함 (includeRawTargeting)

광고세트·저장된 타겟 조회 시 Meta의 targeting 원본을 targeting__raw 컬럼(JSON)으로 함께 가져옵니다. 광고세트를 등록할 때 이 컬럼을 그대로 연결하면 타겟팅이 손실 없이 재사용됩니다.

최대 행 수 (maxRows)

조회 시 가져올 최대 행 수입니다. 기본값 1000.


조회 결과 컬럼

첫 컬럼은 항상 라운드트립 키입니다 — 등록 모드의 입력으로 그대로 연결할 수 있습니다.

대상주요 컬럼
캠페인_meta_campaign_id, name, objective, status, buying_type, 예산, 게재 기간
광고세트_meta_adset_id, name, campaign_id, optimization_goal, billing_event, 예산, age_min, age_max, genders, geo_locations_countries
광고_meta_ad_id, name, adset_id, campaign_id, creative_id, status
저장된 타겟_meta_saved_audience_id, name, description, age_min, age_max, genders, 지역/관심사/행동, 예상 도달 상·하한, sentence_lines(Meta가 만든 요약 문구)

광고세트와 저장된 타겟은 같은 컬럼 이름으로 나이대를 배출하므로 두 출력을 그대로 조인·비교할 수 있습니다.


등록 값 입력 방법

등록에 필요한 값은 노드에서 직접 입력하거나 입력 데이터셋의 컬럼으로 넣습니다. 둘 다 있으면 데이터셋 컬럼이 우선합니다.

상황방법
1건만 등록노드 속성만 채우고 실행 (입력 포트 연결 불필요)
여러 건을 한 번에데이터셋 컬럼으로 넣기
행마다 다른 값 + 공통 값 섞임다른 값은 컬럼으로, 공통 값은 노드 속성으로 한 번만

노드 속성은 선택한 대상(level) 에 맞는 것만 표시됩니다. 아래 표의 컬럼명은 데이터셋을 쓸 때의 이름이며, 노드 속성으로 넣을 때는 같은 항목이 한글 라벨로 표시됩니다.

캠페인 등록

컬럼 (노드 속성)필수설명
name캠페인 이름
objectiveOUTCOME_TRAFFIC, OUTCOME_SALES, OUTCOME_AWARENESS
special_ad_categories특수 광고 카테고리. 생략 시 NONE
daily_budget / lifetime_budget예산 (최소 화폐 단위, 원화는 원). 여기에 넣으면 캠페인 예산 최적화(CBO)가 됩니다
bid_strategyLOWEST_COST_WITHOUT_CAP(최고 볼륨), LOWEST_COST_WITH_BID_CAP, COST_CAP
buying_type, start_time, stop_time그대로 전달
캠페인에 예산을 넣으면 bid_strategy 도 같이 정하세요

LOWEST_COST_WITH_BID_CAP 이나 COST_CAP 으로 잡히면 하위 광고세트마다 bid_amount 를 요구해서 광고세트 등록이 막힙니다. 입찰가 한도를 쓸 게 아니라면 LOWEST_COST_WITHOUT_CAP 으로 지정해두는 편이 안전합니다.

광고세트 등록

컬럼 (노드 속성)필수설명
name광고세트 이름
campaign_id소속 캠페인. _meta_campaign_id 컬럼도 그대로 인정되므로 캠페인 노드 출력을 바로 연결하면 됩니다
billing_eventIMPRESSIONS, LINK_CLICKS
optimization_goalLINK_CLICKS, REACH, OFFSITE_CONVERSIONS
daily_budget / lifetime_budget캠페인에 따라아래 설명 참고
promoted_object목표에 따라전환 최적화(OFFSITE_CONVERSIONS) 시 필수. {"pixel_id": "123", "custom_event_type": "PURCHASE"} 형태의 JSON
countries타겟팅 필수대상 국가 (KR, KR, JP)
age_min / age_max나이대
gendersmale / female / all
advantage_audience어드밴티지 타겟(자동 확장). 기본값 0(사용 안 함), 1이면 켜짐
custom_audience_ids커스텀 오디언스 ID (쉼표 구분)
targeting__raw타겟팅 대안타겟팅 스펙 JSON. 있으면 위 개별 컬럼 대신 이것이 우선합니다
bid_amount, start_time, end_time그대로 전달
예산은 캠페인과 광고세트 중 한쪽에만 넣습니다

Meta는 양쪽에 예산이 있으면 거부합니다 — "광고 세트 예산 또는 캠페인 예산만 설정할 수 있습니다".

  • 캠페인에 예산이 있으면(캠페인 예산 최적화, CBO) 광고세트에는 넣지 마세요
  • 캠페인에 예산이 없으면 광고세트에 daily_budget 또는 lifetime_budget 중 하나가 필요합니다

어느 쪽이 맞는지는 캠페인 설정에 달려 있어 노드가 미리 판단하지 않습니다. 잘못 넣으면 Meta의 오류 메시지가 그대로 표시됩니다.

어드밴티지 타겟 플래그는 자동으로 들어갑니다

Meta가 광고세트 생성 시 이 플래그를 필수로 요구합니다. 노드가 기본값 0(사용 안 함)으로 항상 채워 보내므로 따로 신경 쓸 필요는 없습니다.

0을 기본으로 둔 이유는 지정한 타겟을 그대로 지키기 위해서입니다. 1이면 Meta가 성과가 나올 것 같은 대상으로 타겟을 넓힙니다. targeting__raw로 기존 설정을 재사용할 때 원본에 값이 있으면 그 값을 유지합니다.

나이대를 지정하는 두 가지 방법:

  1. 직접 지정countries + age_min / age_max / genders 컬럼을 채웁니다
  2. 저장된 타겟 재사용level=savedAudience + includeRawTargeting 으로 조회한 뒤, 나온 targeting__raw 컬럼을 광고세트 등록 입력에 그대로 연결합니다
저장된 타겟은 ID로 참조할 수 없습니다

Meta는 광고세트에 저장된 타겟을 ID로 연결하는 방법을 제공하지 않습니다. 그래서 타겟팅 스펙 자체를 복사하는 방식(targeting__raw)을 씁니다. 이렇게 만든 광고세트는 원본 저장된 타겟과 연결이 유지되지 않으므로, 나중에 저장된 타겟을 수정해도 이미 만든 광고세트에는 반영되지 않습니다.

광고 등록

컬럼 (노드 속성)필수설명
name광고 이름 (제목이 아닙니다)
adset_id소속 광고세트. _meta_adset_id 컬럼도 그대로 인정되므로 광고세트 노드 출력을 바로 연결하면 됩니다
page_id소재를 게시할 Facebook 페이지 ID
link랜딩 URL
message본문 문구
headline광고 제목
description, caption설명 / 표시 URL 문구
image_hash 또는 picture이미지 해시 또는 이미지 URL
call_to_action_typeLEARN_MORE, SHOP_NOW
nameheadline 을 혼동하지 마세요

name은 광고 관리자에 표시되는 관리용 이름, headline은 사용자에게 보이는 광고 제목입니다.

image_hashpicture 는 함께 쓸 수 없습니다

Meta가 상호 배타로 규정합니다. 같은 행에 둘 다 값이 있으면 실행 전에 오류로 안내합니다. 둘 다 비워 두면 Meta가 link 의 페이지에서 이미지를 자동으로 가져옵니다.


사용 방법

조회

  1. 노드를 캔버스에 추가하고 액세스 토큰을 입력합니다
  2. 채워진 드롭다운에서 광고 계정을 선택합니다
  3. 조회 대상을 고르고 실행하기를 클릭합니다

한 건만 빠르게 등록하기

  1. 동작 모드를 등록, 대상을 원하는 레벨로 바꿉니다
  2. 노드에 나타나는 속성(이름·목표·예산·나이대 등)을 채웁니다
  3. 실행하기 — 입력 포트를 연결하지 않아도 됩니다

캠페인 → 광고세트 → 광고 만들기

세 단계를 각각의 노드로 이어 붙입니다. 앞 단계가 배출한 _meta_*_id 를 다음 단계가 그대로 인정하므로 컬럼명을 바꾸는 중간 노드가 필요 없습니다. 다음 단계에 필요한 컬럼만 추가하면 됩니다.

[데이터 만들기] name, objective
→ [Meta 광고] 등록 / 캠페인 → _meta_campaign_id 배출
→ [데이터 변환] 광고세트용 컬럼 추가 (billing_event, optimization_goal, daily_budget, countries, age_min, age_max)
→ [Meta 광고] 등록 / 광고세트 → _meta_adset_id 배출
→ [데이터 변환] 광고용 컬럼 추가 (page_id, link, message, headline, picture)
→ [Meta 광고] 등록 / 광고 → _meta_ad_id 배출
단계마다 정리해야 하는 컬럼이 있습니다

앞 단계의 컬럼이 그대로 따라가기 때문에, 데이터 변환 노드에서 두 가지를 손봐야 합니다.

  • name — 세 레벨이 모두 이 컬럼을 쓰므로 그 단계에 맞는 이름으로 바꿔주세요
  • daily_budget / lifetime_budget — 캠페인에 예산을 넣었다면 광고세트로 넘기기 전에 빼야 합니다. 안 빼면 예산이 양쪽에 들어가 Meta가 거부합니다

저장된 타겟의 나이대를 그대로 쓰기

[Meta 광고] 조회 / 저장된 타겟 (원본 타겟 JSON 포함 켜기)
→ targeting__raw 컬럼
→ [데이터 변환] name·campaign_id·billing_event·optimization_goal·daily_budget 컬럼 추가
→ [Meta 광고] 등록 / 광고세트

주의사항

한 번에 등록 가능한 행은 100개입니다

Meta가 계정 단위 생성 한도를 별도로 적용하고, 광고는 행당 2번의 API 호출(소재 + 광고)이 발생합니다. 100행을 초과하면 오류로 안내하므로 데이터를 나눠서 실행하세요.

등록 실패 시 이전 행은 되돌아가지 않습니다

등록은 행 순서대로 진행되며 오류가 나면 그 지점에서 멈춥니다. 이미 등록된 이전 행은 남아 있습니다. 오류 메시지에 몇 번째 행에서 멈췄는지 표시되므로, 데이터를 수정한 뒤 남은 행만 다시 실행하세요.

광고 등록에서 소재는 만들어졌지만 광고 생성이 실패한 경우, 사용되지 않은 소재가 계정에 남습니다. 과금되지는 않으며 실행 로그의 소재 ID로 광고 관리자에서 정리할 수 있습니다.

ID 컬럼은 반드시 문자열이어야 합니다

Meta의 ID는 18자리(120249405806820238)라 숫자 타입으로는 정확히 담기지 않습니다. 스프레드시트나 CSV에서 숫자로 읽히면 뒷자리가 바뀌어 다른 광고를 가리키게 됩니다.

노드가 이 경우를 감지해 실행 전에 오류로 알려주므로 잘못된 대상에 등록되는 일은 없습니다. 안내가 뜨면 해당 컬럼을 문자열(텍스트) 타입으로 바꿔주세요. 조회 모드가 배출하는 _meta_*_id 컬럼은 항상 문자열이라 그대로 이어 쓰면 안전합니다.

조회 결과가 0행일 때

계정에 해당 항목이 없는 것입니다. 예를 들어 캠페인과 광고세트만 만들어 둔 계정에서 조회 대상을 광고로 두면 0행이 나옵니다. 조회 대상을 바꿔서 확인해보세요.

요청 한도(rate limit)

Meta는 광고 계정 단위로 API 호출 한도를 적용합니다. 한도에 걸리면 노드가 자동으로 잠시 기다린 뒤 재시도하며, 회복까지 오래 걸리면 "약 N분 후 다시 시도해주세요" 안내와 함께 종료합니다.