---
title: "BigCommerce 연동 가이드"
description: "고객 데이터 동기화, 로열티 프로그램, 마케팅 자동화를 위해 Tajo를 BigCommerce 스토어와 연동하는 완전한 가이드"
url: https://tajo.io/kr/docs/ecommerce-platforms/bigcommerce/
markdown: https://tajo.io/kr/docs/ecommerce-platforms/bigcommerce.md
lang: ko-KR
robots: noindex
---

Tajo 사전 이용 신청

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

# BigCommerce 연동 가이드

이 가이드는 고객 인게이지먼트, 로열티 프로그램, 마케팅 자동화 기능을 활용할 수 있도록 Tajo를 BigCommerce 스토어와 연동하는 과정을 안내합니다.

## 개요

Tajo와 BigCommerce를 연동하면 다음을 할 수 있습니다:

- **고객 데이터 동기화** BigCommerce 스토어에서 자동으로 가져옵니다
- **주문과 상품 추적** 개인화된 마케팅에 활용합니다
- **로열티 프로그램 운영** 포인트, 등급, 리워드를 제공합니다
- **마케팅 캠페인 자동화** Brevo를 통해 이메일, SMS, WhatsApp으로 실행합니다
- **고객 세분화** 구매 행동과 인게이지먼트를 기준으로 나눕니다
- **다중 스토어프런트 지원** 여러 스토어프런트 운영을 지원합니다

## 사전 준비 사항

연동을 시작하기 전에 다음을 준비하세요:

- **BigCommerce 스토어** 모든 요금제 가능 (Standard, Plus, Pro, Enterprise)
- **Tajo 계정** 활성 구독 상태
- **Brevo 계정** (선택 사항, 마케팅 자동화용)
- **스토어 API 자격 증명** (적절한 스코프를 가진 API 계정)

## 1단계: Tajo 앱 설치

### BigCommerce 앱 마켓플레이스에서 설치

1. BigCommerce 관리자 패널로 이동합니다
2. **Apps → Marketplace**로 이동합니다
3. “Tajo”를 검색합니다
4. **Get This App**을 클릭합니다
5. 권한을 검토하고 **Install**을 클릭합니다
6. 설정 마법사를 따라 Tajo 계정을 연결합니다

### API 설정

설치가 끝나면 API 접근을 설정합니다:

```json
{
  "api_credentials": {
    "client_id": "your_client_id",
    "client_secret": "your_client_secret",
    "access_token": "your_access_token",
    "store_hash": "your_store_hash"
  },
  "scopes": [
    "store_v2_customers",
    "store_v2_orders",
    "store_v2_products",
    "store_cart",
    "store_checkout"
  ]
}
```

## 2단계: 데이터 동기화 설정

### 고객 동기화 설정

동기화할 고객 데이터를 설정합니다:

```json
{
  "sync_settings": {
    "customers": {
      "enabled": true,
      "sync_frequency": "real-time",
      "fields": [
        "email",
        "first_name",
        "last_name",
        "phone",
        "company",
        "customer_group_id",
        "store_credit",
        "addresses",
        "date_created"
      ]
    },
    "orders": {
      "enabled": true,
      "sync_frequency": "real-time",
      "include_products": true,
      "include_shipping": true,
      "include_coupons": true
    },
    "products": {
      "enabled": true,
      "sync_frequency": "hourly",
      "include_variants": true,
      "include_images": true,
      "include_custom_fields": true
    }
  }
}
```

### 웹훅 설정

Tajo는 다음 BigCommerce 웹훅을 등록합니다:

| 웹훅 | 목적 |
| --- | --- |
| `store/customer/created` | 신규 고객을 Tajo와 Brevo로 동기화 |
| `store/customer/updated` | 고객 프로필을 최신 상태로 유지 |
| `store/order/created` | 구매를 추적하고 로열티 포인트 적립 |
| `store/order/statusUpdated` | 상태 기반 캠페인 트리거 |
| `store/cart/created` | 장바구니 방치 추적을 위한 장바구니 기록 |
| `store/cart/updated` | 장바구니 방치 시퀀스 업데이트 |
| `store/product/updated` | 상품 카탈로그 동기화 유지 |

### 다중 스토어프런트 지원

스토어프런트가 여러 개인 BigCommerce Enterprise의 경우:

```json
{
  "multi_storefront": {
    "enabled": true,
    "storefronts": [
      {
        "channel_id": 1,
        "name": "Main Store",
        "loyalty_program": "default"
      },
      {
        "channel_id": 2,
        "name": "Wholesale",
        "loyalty_program": "b2b_program"
      },
      {
        "channel_id": 3,
        "name": "International",
        "loyalty_program": "global_program"
      }
    ],
    "sync_across_channels": true
  }
}
```

## 3단계: 로열티 프로그램 설정

### 포인트 시스템 설정

```javascript
const pointsConfig = {
  // Points per dollar spent
  purchasePoints: {
    enabled: true,
    rate: 1, // 1 point per $1
    roundingMode: 'floor'
  },

  // Bonus actions
  bonusPoints: {
    accountCreation: 100,
    firstPurchase: 200,
    reviewSubmitted: 50,
    referralMade: 500,
    birthdayBonus: 100,
    newsletterSignup: 25
  },

  // Customer group multipliers
  customerGroupMultipliers: {
    'Retail': 1.0,
    'VIP': 1.5,
    'Wholesale': 0.5,
    'Platinum': 2.0
  }
};
```

### 로열티 등급

```javascript
const loyaltyTiers = [
  {
    name: 'Bronze',
    minPoints: 0,
    benefits: [
      '1 point per $1 spent',
      'Birthday bonus points',
      'Member-only promotions'
    ]
  },
  {
    name: 'Silver',
    minPoints: 1000,
    benefits: [
      '1.25x points multiplier',
      'Free shipping on orders $50+',
      'Early access to sales'
    ]
  },
  {
    name: 'Gold',
    minPoints: 5000,
    benefits: [
      '1.5x points multiplier',
      'Free shipping on all orders',
      'Exclusive product access',
      'Priority support'
    ]
  },
  {
    name: 'Platinum',
    minPoints: 15000,
    benefits: [
      '2x points multiplier',
      'Free express shipping',
      'VIP experiences',
      'Dedicated account manager'
    ]
  }
];
```

## 4단계: B2B 고객 관리

### 회사 계정

BigCommerce는 Tajo와 연동되는 B2B 기능을 지원합니다:

```javascript
const b2bConfig = {
  companyAccounts: {
    enabled: true,
    syncCompanyData: true,
    fields: [
      'company_name',
      'tax_id',
      'credit_limit',
      'payment_terms',
      'price_list'
    ]
  },

  // B2B-specific loyalty rules
  b2bLoyalty: {
    orderVolumeBonus: {
      threshold: 10000,
      bonusMultiplier: 1.5
    },
    reorderPoints: {
      enabled: true,
      rate: 0.5 // 0.5 points per $1 on reorders
    }
  }
};
```

### 고객 그룹 연동

```javascript
// Map BigCommerce customer groups to Tajo segments
const customerGroupMapping = {
  'Retail': {
    tajoSegment: 'retail_customers',
    loyaltyTier: 'Bronze',
    emailList: 'retail_newsletter'
  },
  'Wholesale': {
    tajoSegment: 'wholesale_customers',
    loyaltyTier: 'Silver',
    emailList: 'wholesale_updates'
  },
  'VIP': {
    tajoSegment: 'vip_customers',
    loyaltyTier: 'Gold',
    emailList: 'vip_exclusive'
  }
};
```

## 5단계: 방치된 장바구니 복구

### 장바구니 추적

```javascript
// BigCommerce cart webhook handler
async function handleCartWebhook(event) {
  const cart = await bigcommerce.carts.get(event.data.cartId);

  if (!cart.customer_id && !cart.email) {
    return; // Can't track without identity
  }

  await tajo.carts.track({
    customerId: cart.customer_id,
    email: cart.email,
    cartId: cart.id,
    items: cart.line_items.physical_items.map(item => ({
      productId: item.product_id,
      variantId: item.variant_id,
      title: item.name,
      quantity: item.quantity,
      price: item.sale_price || item.list_price,
      image: item.image_url
    })),
    totalPrice: cart.cart_amount,
    currency: cart.currency.code,
    checkoutUrl: cart.redirect_urls?.checkout_url
  });
}
```

### 복구 시퀀스

```json
{
  "abandoned_cart_sequence": {
    "trigger": {
      "event": "cart_abandoned",
      "delay": "1 hour"
    },
    "messages": [
      {
        "delay": "1 hour",
        "channel": "email",
        "template": "cart_reminder_1",
        "subject": "You left something behind!"
      },
      {
        "delay": "24 hours",
        "channel": "email",
        "template": "cart_reminder_2",
        "subject": "Your cart is waiting - 10% off inside"
      },
      {
        "delay": "72 hours",
        "channel": "sms",
        "template": "cart_sms_final"
      }
    ],
    "exit_conditions": [
      "order_completed",
      "cart_emptied",
      "unsubscribed"
    ]
  }
}
```

## 6단계: 마케팅 자동화

### 고객 세그먼트

```javascript
const bigcommerceSegments = [
  // Purchase behavior
  {
    name: 'First-Time Buyers',
    conditions: { orders_count: 1 }
  },
  {
    name: 'Repeat Customers',
    conditions: { orders_count: { $gte: 2 } }
  },
  {
    name: 'High-Value Customers',
    conditions: { total_spent: { $gte: 1000 } }
  },

  // Customer groups
  {
    name: 'Wholesale Accounts',
    conditions: { customer_group: 'Wholesale' }
  },

  // Engagement
  {
    name: 'At-Risk Customers',
    conditions: {
      last_order_date: { $lt: '-90 days' },
      orders_count: { $gte: 2 }
    }
  }
];
```

### 자동화된 캠페인

```javascript
// Order status change triggers
bigcommerce.webhooks.on('store/order/statusUpdated', async (event) => {
  const order = await bigcommerce.orders.get(event.data.orderId);
  const customer = await tajo.customers.getByEmail(order.billing_address.email);

  switch (event.data.status.new_status) {
    case 'Shipped':
      await brevo.trackEvent(customer.email, 'order_shipped', {
        orderId: order.id,
        trackingNumber: order.tracking_number,
        carrier: order.shipping_carrier
      });
      break;

    case 'Completed':
      // Award loyalty points
      const points = calculatePoints(order, customer);
      await tajo.loyalty.awardPoints(customer.id, points);

      // Trigger review request after 14 days
      await brevo.scheduleEvent(customer.email, 'review_request', {
        orderId: order.id,
        products: order.products
      }, { delay: '14 days' });
      break;
  }
});
```

## 7단계: 분석

### 대시보드 지표

```javascript
const dashboardMetrics = {
  customers: {
    total: await tajo.analytics.count('customers'),
    byChannel: await tajo.analytics.groupBy('customers', 'channel_id'),
    newThisMonth: await tajo.analytics.count('customers', {
      created_at: { $gte: 'this_month' }
    })
  },

  revenue: {
    total: await tajo.analytics.sum('orders.total'),
    byChannel: await tajo.analytics.groupBy('orders', 'channel_id', {
      aggregate: 'sum',
      field: 'total'
    }),
    averageOrderValue: await tajo.analytics.avg('orders.total')
  },

  loyalty: {
    activeMembers: await tajo.analytics.count('loyalty_members'),
    pointsIssued: await tajo.analytics.sum('points.awarded'),
    redemptionRate: await tajo.analytics.pointsRedemptionRate()
  }
};
```

## 문제 해결

### API 요청 한도

```javascript
// Implement rate limiting
async function bigcommerceApiCall(endpoint, options, retries = 3) {
  for (let i = 0; i < retries; i++) {
    try {
      const response = await fetch(endpoint, options);

      if (response.status === 429) {
        const retryAfter = response.headers.get('X-Rate-Limit-Time-Reset-Ms');
        await sleep(parseInt(retryAfter) || Math.pow(2, i) * 1000);
        continue;
      }

      return response;
    } catch (error) {
      if (i === retries - 1) throw error;
    }
  }
}
```

### 웹훅 검증

```javascript
// Verify BigCommerce webhook signature
function verifyWebhook(payload, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('base64');

  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}
```

## 다음 단계

1. **[Brevo 연동 설정](https://tajo.io/kr/docs/platform-integration/tajo-brevo-integration)** 이메일과 SMS 캠페인을 위해 설정합니다
2. **[웹훅 설정](https://tajo.io/kr/docs/webhook-configuration/setup-guide)** 실시간 이벤트를 위해 설정합니다
3. **[고객 세그먼트 만들기](https://tajo.io/kr/docs/contact-management)** 타깃 마케팅을 위해 만듭니다
4. **[이메일 템플릿 만들기](https://tajo.io/kr/docs/messaging-api)** 자동화된 캠페인을 위해 만듭니다

## 지원

- **연동 지원**: [support@tajo.io](mailto:support@tajo.io)
- **BigCommerce 문서**: [developer.bigcommerce.com](https://developer.bigcommerce.com/)
- **API 레퍼런스**: [docs.tajo.io/api](https://tajo.io/kr/docs/endpoints/rest-api)
- **지원 문의하기**: [/kr/contact](https://tajo.io/kr/contact)
