---
title: "BigCommerce 커넥터"
description: "BigCommerce를 Tajo를 통해 Brevo와 연동하여 고객, 주문, 제품, 스토어프론트 데이터를 동기화하는 완벽 가이드입니다."
url: https://tajo.io/kr/docs/connectors/ecommerce/bigcommerce/
markdown: https://tajo.io/kr/docs/connectors/ecommerce/bigcommerce.md
lang: ko-KR
robots: noindex
---

Tajo 사전 이용 신청

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

# BigCommerce 커넥터

커넥터 상태: 개발 중 구축 중입니다. 아직 검증되지 않았습니다.

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

BigCommerce 스토어를 Tajo를 통해 Brevo에 연결하여 완전한 이커머스 데이터 동기화를 구현하세요. 고객, 주문, 제품, 장바구니 이벤트를 동기화하여 타겟팅된 마케팅 캠페인, 장바구니 이탈 복구, 구매 후 자동화를 구동할 수 있습니다.

## 개요

| 속성 | 값 |
| --- | --- |
| **플랫폼** | BigCommerce |
| **카테고리** | 이커머스 |
| **설정 난이도** | 보통 |
| **공식 통합** | 아니오 |
| **동기화되는 데이터** | 고객, 주문, 제품, 장바구니 |
| **사용 가능한 스킬** | 10 |

## 주요 기능

- **고객 동기화** - Brevo 연락처로의 실시간 고객 데이터 동기화
- **주문 추적** - 구매 후 마케팅 플로우를 위한 주문 라이프사이클 이벤트
- **제품 카탈로그 동기화** - 이메일 추천 및 동적 콘텐츠를 위한 제품 동기화
- **장바구니 이탈** - 자동화된 이메일로 이탈한 장바구니 추적 및 복구
- **다중 스토어프론트 지원** - 여러 BigCommerce 스토어프론트 연결
- **웹훅 기반 업데이트** - BigCommerce 웹훅을 통한 실시간 데이터 업데이트
- **커스텀 필드** - BigCommerce 커스텀 필드를 Brevo 연락처 속성에 매핑
- **재고 추적** - 재입고 알림을 위한 재고 수준 동기화

## 사전 준비 사항

시작하기 전에 다음 사항이 준비되어 있어야 합니다.

1. Store Owner 또는 Admin 액세스 권한이 있는 BigCommerce 스토어
2. 적절한 OAuth 스코프를 가진 BigCommerce API 계정
3. Store Hash (스토어 URL 또는 API 자격 증명에서 확인 가능)
4. API 액세스가 가능한 Brevo 계정
5. API 자격 증명이 있는 Tajo 계정

## 인증

### API 계정 자격 증명

BigCommerce는 OAuth 기반 API 계정을 사용합니다. BigCommerce 관리 패널의 **Settings > API > API Accounts**에서 생성할 수 있습니다.

다음을 받게 됩니다.

- **Client ID** - 앱 식별자
- **Client Secret** - 앱 시크릿 (안전하게 보관)
- **Access Token** - API 인증에 사용
- **Store Hash** - 고유한 스토어 식별자

```bash
curl https://api.bigcommerce.com/stores/{store_hash}/v3/catalog/products \
  -H "X-Auth-Token: YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json"
```

### 필수 OAuth 스코프

| 스코프 | 액세스 | 목적 |
| --- | --- | --- |
| `store_v2_customers` | Read | 고객 데이터 동기화 |
| `store_v2_orders` | Read | 주문 이벤트 추적 |
| `store_v2_products` | Read | 제품 카탈로그 동기화 |
| `store_cart` | Read | 장바구니 이탈 추적 |
| `store_v2_information` | Read | 스토어 설정 |
| `store_v2_content` | Read | 스토어프론트 콘텐츠 |

## 설정

### 기본 설정

```yaml
connectors:
  bigcommerce:
    enabled: true
    store_hash: "your-store-hash"
    access_token: "your-access-token"
    client_id: "your-client-id"

    # Data sync options
    sync:
      customers: true
      orders: true
      products: true
      carts: true
      inventory: false

    # Brevo list assignment
    lists:
      all_customers: 40
      buyers: 41
      abandoned_cart: 42
```

### 고객 필드 매핑

BigCommerce 고객 필드를 Brevo 속성에 매핑합니다.

```yaml
customer_mapping:
  email: email
  first_name: FIRSTNAME
  last_name: LASTNAME
  phone: SMS
  company: COMPANY

  # Address fields
  addresses[0].city: CITY
  addresses[0].state: STATE
  addresses[0].country: COUNTRY
  addresses[0].zip: ZIP

  # E-commerce metrics
  orders_count: ORDER_COUNT
  total_spent: TOTAL_SPENT
  date_created: SIGNUP_DATE

  # Customer group
  customer_group_id: CUSTOMER_GROUP
```

### 웹훅 설정

```yaml
webhooks:
  - scope: "store/customer/created"
    destination: "customer_created"
  - scope: "store/customer/updated"
    destination: "customer_updated"
  - scope: "store/order/created"
    destination: "order_placed"
  - scope: "store/order/updated"
    destination: "order_updated"
  - scope: "store/order/statusUpdated"
    destination: "order_status_changed"
  - scope: "store/cart/created"
    destination: "cart_created"
  - scope: "store/cart/updated"
    destination: "cart_updated"
  - scope: "store/cart/abandoned"
    destination: "cart_abandoned"
  - scope: "store/inventory/updated"
    destination: "inventory_changed"
```

## API 엔드포인트

| Method | 엔드포인트 | 설명 |
| --- | --- | --- |
| `GET` | `/v3/customers` | 고객 목록 조회 |
| `POST` | `/v3/customers` | 고객 생성 |
| `PUT` | `/v3/customers` | 고객 업데이트 |
| `GET` | `/v2/orders` | 주문 목록 조회 |
| `GET` | `/v2/orders/{id}` | 주문 세부 정보 조회 |
| `GET` | `/v3/catalog/products` | 제품 목록 조회 |
| `GET` | `/v3/catalog/products/{id}` | 제품 세부 정보 조회 |
| `GET` | `/v3/catalog/products/{id}/variants` | 제품 variant 목록 |
| `GET` | `/v3/carts` | 장바구니 목록 조회 |
| `GET` | `/v3/abandoned-carts` | 이탈 장바구니 목록 조회 |
| `POST` | `/v3/hooks` | 웹훅 생성 |
| `GET` | `/v3/catalog/categories` | 카테고리 목록 조회 |

## 코드 예제

### BigCommerce 커넥터 초기화

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

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

// Connect BigCommerce store
await tajo.connectors.connect('bigcommerce', {
  storeHash: process.env.BC_STORE_HASH,
  accessToken: process.env.BC_ACCESS_TOKEN,
  clientId: process.env.BC_CLIENT_ID
});
```

### 고객 가져오기 및 동기화

```javascript
// Fetch customers from BigCommerce
const response = await fetch(
  `https://api.bigcommerce.com/stores/${STORE_HASH}/v3/customers?limit=250`,
  {
    headers: {
      'X-Auth-Token': ACCESS_TOKEN,
      'Content-Type': 'application/json'
    }
  }
);

const { data, meta } = await response.json();
// data: [{ id, email, first_name, last_name, phone, ... }]
// meta.pagination: { total, count, per_page, current_page, total_pages }
```

### 웹훅 이벤트 처리

```javascript
// BigCommerce webhook handler
app.post('/webhooks/bigcommerce', async (req, res) => {
  const { scope, store_id, data } = req.body;

  // Verify the webhook is from your store
  if (store_id !== process.env.BC_STORE_HASH) {
    return res.status(401).send('Unauthorized');
  }

  // Forward to Tajo
  await tajo.connectors.handleWebhook('bigcommerce', {
    topic: scope,
    payload: data
  });

  res.status(200).send('OK');
});
```

### 제품 카탈로그 동기화

```javascript
// Full product catalog sync
await tajo.connectors.sync('bigcommerce', {
  type: 'full',
  resources: ['products'],
  includeVariants: true,
  includeImages: true
});

// Check sync status
const status = await tajo.connectors.status('bigcommerce');
console.log(status);
// {
//   connected: true,
//   lastSync: '2024-01-15T10:30:00Z',
//   customersCount: 8200,
//   ordersCount: 4500,
//   productsCount: 620
// }
```

## 요청 제한

| 플랜 | 제한 | 세부 사항 |
| --- | --- | --- |
| **Standard** | 150회/30초 | 스토어당 |
| **Plus** | 300회/30초 | 스토어당 |
| **Pro** | 450회/30초 | 스토어당 |
| **Enterprise** | 무제한 | 커스텀 제한 |

추가 제한 사항:

| 리소스 | 제한 |
| --- | --- |
| **웹훅** | 스토어당 100개 |
| **페이지당** | 최대 250개 레코드 |
| **동시 요청** | 플랜에 따라 다름 |

요청 제한 헤더

제한 내에서 API 사용량을 관리하려면 `X-Rate-Limit-Requests-Left` 및 `X-Rate-Limit-Time-Reset-Ms` 헤더를 모니터링하세요.

## 문제 해결

| 문제 | 원인 | 해결 방법 |
| --- | --- | --- |
| `401 Unauthorized` | 유효하지 않은 액세스 토큰 | BigCommerce 관리자에서 API 자격 증명을 재생성하세요 |
| `403 Forbidden` | OAuth 스코프 누락 | API 계정 스코프를 확인하고 필수 권한을 추가하세요 |
| 웹훅이 실행되지 않음 | 웹훅 제한 도달 | 웹훅 수(최대 100개)를 확인하고 사용하지 않는 것을 제거하세요 |
| 장바구니 이벤트 누락 | 스토어프론트 스크립트가 로드되지 않음 | BigCommerce 스토어프론트에서 추적 스크립트를 확인하세요 |
| 제품이 동기화되지 않음 | 카탈로그 캐시 | 수동 동기화를 트리거하거나 웹훅 업데이트를 기다리세요 |
| `429 Too Many Requests` | 요청 제한 초과 | 요청 제한 헤더 모니터링과 함께 요청 큐잉을 구현하세요 |
| 고객 그룹 누락 | V2 vs V3 API | 고객 그룹은 V2 API를 사용합니다. 엔드포인트 버전을 확인하세요 |

## 모범 사례

1. **가능한 경우 V3 API 사용** - V3 API는 더 나은 페이지네이션, 필터링 및 JSON 응답을 제공합니다
2. **요청 제한 헤더 모니터링** - 제한에 도달하지 않도록 `X-Rate-Limit-Requests-Left`를 추적하세요
3. **실시간 동기화를 위해 웹훅 등록** - 고객 및 주문 업데이트에 폴링 대신 웹훅을 사용하세요
4. **고객 업데이트 배치 처리** - 대규모 데이터 동기화에 V3 대량 고객 엔드포인트를 사용하세요
5. **제품 동기화에 variant 포함** - 정확한 재고 추적을 위해 제품 variant를 동기화하세요
6. **이탈 장바구니 웹훅 설정** - 장바구니 복구 이메일 자동화에 필수적입니다
7. **페이지네이션 사용** - 목록 엔드포인트는 항상 페이지네이션하세요. 페이지당 최대 250개 레코드

## 보안

- **OAuth 토큰 인증** - 안전한 토큰 기반 API 액세스
- **스코프 권한** - API 계정은 특정 데이터 스코프로 제한됩니다
- **HTTPS 전용** - 모든 API 통신은 TLS로 암호화됩니다
- **웹훅 검증** - store hash를 사용해 웹훅 출처를 확인합니다
- **PCI DSS 규정 준수** - BigCommerce는 결제 데이터를 안전하게 처리합니다
- **SOC 2 Type II** - BigCommerce 플랫폼은 SOC 2 인증을 받았습니다

## 관련 리소스

- [Shopify 커넥터](https://tajo.io/kr/docs/connectors/ecommerce/shopify)
- [WooCommerce 커넥터](https://tajo.io/kr/docs/connectors/ecommerce/woocommerce)
- [Customer Sync Skill](https://tajo.io/kr/docs/skills/data-sync/customer-sync)
- [Abandoned Cart Skill](https://tajo.io/kr/docs/skills/email-marketing/abandoned-cart)
