---
title: "BigCommerce Connector"
description: "Complete BigCommerce integration guide for syncing customers, orders, products, and storefront data with Brevo through Tajo."
url: https://tajo.io/docs/connectors/ecommerce/bigcommerce/
markdown: https://tajo.io/docs/connectors/ecommerce/bigcommerce.md
lang: en-US
robots: noindex
---

# BigCommerce Connector

Connector status: In progress Being built. Not verified yet.

| Source field | Destination field | Sample value |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Connect your BigCommerce store to Brevo through Tajo for complete e-commerce data synchronization. Sync customers, orders, products, and cart events to power targeted marketing campaigns, abandoned cart recovery, and post-purchase automation.

## Overview

| Property | Value |
| --- | --- |
| **Platform** | BigCommerce |
| **Category** | E-commerce |
| **Setup Complexity** | Medium |
| **Official Integration** | No |
| **Data Synced** | Customers, Orders, Products, Carts |
| **Available Skills** | 10 |

## Features

- **Customer sync** - Real-time customer data synchronization to Brevo contacts
- **Order tracking** - Order lifecycle events for post-purchase marketing flows
- **Product catalog sync** - Sync products for email recommendations and dynamic content
- **Cart abandonment** - Track and recover abandoned carts with automated emails
- **Multi-storefront support** - Connect multiple BigCommerce storefronts
- **Webhook-driven updates** - Real-time data updates via BigCommerce webhooks
- **Custom fields** - Map BigCommerce custom fields to Brevo contact attributes
- **Inventory tracking** - Sync stock levels for back-in-stock notifications

## Prerequisites

Before you begin, ensure you have:

1. A BigCommerce store with Store Owner or Admin access
2. A BigCommerce API account with appropriate OAuth scopes
3. Your Store Hash (found in your store URL or API credentials)
4. A Brevo account with API access
5. A Tajo account with API credentials

## Authentication

### API Account Credentials

BigCommerce uses OAuth-based API accounts. Create one in your BigCommerce control panel under **Settings > API > API Accounts**.

You will receive:

- **Client ID** - Your app identifier
- **Client Secret** - Your app secret (store securely)
- **Access Token** - Used for API authentication
- **Store Hash** - Your unique store identifier

```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"
```

### Required OAuth Scopes

| Scope | Access | Purpose |
| --- | --- | --- |
| `store_v2_customers` | Read | Customer data sync |
| `store_v2_orders` | Read | Order event tracking |
| `store_v2_products` | Read | Product catalog sync |
| `store_cart` | Read | Cart abandonment tracking |
| `store_v2_information` | Read | Store configuration |
| `store_v2_content` | Read | Storefront content |

## Configuration

### Basic Setup

```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
```

### Customer Field Mapping

Map BigCommerce customer fields to Brevo attributes:

```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
```

### Webhook Configuration

```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 Endpoints

| Method | Endpoint | Description |
| --- | --- | --- |
| `GET` | `/v3/customers` | List customers |
| `POST` | `/v3/customers` | Create customers |
| `PUT` | `/v3/customers` | Update customers |
| `GET` | `/v2/orders` | List orders |
| `GET` | `/v2/orders/{id}` | Get order details |
| `GET` | `/v3/catalog/products` | List products |
| `GET` | `/v3/catalog/products/{id}` | Get product details |
| `GET` | `/v3/catalog/products/{id}/variants` | List product variants |
| `GET` | `/v3/carts` | List carts |
| `GET` | `/v3/abandoned-carts` | List abandoned carts |
| `POST` | `/v3/hooks` | Create a webhook |
| `GET` | `/v3/catalog/categories` | List categories |

## Code Examples

### Initialize BigCommerce Connector

```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
});
```

### Fetch and Sync Customers

```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 }
```

### Handle Webhook Events

```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');
});
```

### Sync Product Catalog

```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
// }
```

## Rate Limits

| Plan | Limit | Details |
| --- | --- | --- |
| **Standard** | 150 requests/30 sec | Per store |
| **Plus** | 300 requests/30 sec | Per store |
| **Pro** | 450 requests/30 sec | Per store |
| **Enterprise** | Unlimited | Custom limits |

Additional limits:

| Resource | Limit |
| --- | --- |
| **Webhooks** | 100 per store |
| **Per page** | 250 records max |
| **Concurrent requests** | Plan-dependent |

Rate Limit Headers

Monitor `X-Rate-Limit-Requests-Left` and `X-Rate-Limit-Time-Reset-Ms` headers to manage your API usage within limits.

## Troubleshooting

| Issue | Cause | Solution |
| --- | --- | --- |
| `401 Unauthorized` | Invalid access token | Regenerate API credentials in BigCommerce admin |
| `403 Forbidden` | Missing OAuth scope | Check API account scopes and add required permissions |
| Webhooks not firing | Webhook limit reached | Check webhook count (max 100) and remove unused ones |
| Cart events missing | Storefront scripts not loaded | Verify tracking script on BigCommerce storefront |
| Products out of sync | Catalog cache | Trigger a manual sync or wait for webhook updates |
| `429 Too Many Requests` | Rate limit exceeded | Implement request queuing with rate limit header monitoring |
| Customer groups missing | V2 vs V3 API | Customer groups use the V2 API; check endpoint version |

## Best Practices

1. **Use V3 API where possible** - The V3 API offers better pagination, filtering, and JSON responses
2. **Monitor rate limit headers** - Track `X-Rate-Limit-Requests-Left` to avoid hitting limits
3. **Register webhooks for real-time sync** - Use webhooks instead of polling for customer and order updates
4. **Batch customer updates** - Use the V3 bulk customer endpoints for large data syncs
5. **Include variants in product sync** - Sync product variants for accurate inventory tracking
6. **Set up abandoned cart webhooks** - Critical for cart recovery email automation
7. **Use pagination** - Always paginate list endpoints; max 250 records per page

## Security

- **OAuth token authentication** - Secure token-based API access
- **Scoped permissions** - API accounts restricted to specific data scopes
- **HTTPS only** - All API communication encrypted via TLS
- **Webhook verification** - Verify webhook source using store hash
- **PCI DSS compliant** - BigCommerce handles payment data securely
- **SOC 2 Type II** - BigCommerce platform is SOC 2 certified

## Related Resources

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

## Open-Source Implementation Map

This section is derived from official or public repository material discovered for the BigCommerce connector. Use it as the engineering companion to the setup guide above: it shows where the API surface lives, what implementation assets exist, and how Tajo should translate them into reliable Brevo sync behavior.

### Repository Snapshot

| Repository | Commit | Languages / formats | Files |
| --- | --- | --- | --- |
| [bigcommerce/api-specs](https://github.com/bigcommerce/api-specs) | dcf4840 | YAML (166), JSON (61), Markdown (6), YAML (4), gitignore (2), github/codeowners (1) | 244 |

### Integration Shape

```mermaid
graph LR
  Source["BigCommerce API / repository"] --> Auth["Auth and scopes"]
  Source --> Objects["Objects, events, and schemas"]
  Auth --> Tajo["Tajo connector runtime"]
  Objects --> Tajo
  Tajo --> Brevo["Brevo contacts, attributes, lists, campaigns"]
  Tajo --> Ops["Backfill, cursor, retries, logs"]
```

### What To Reuse

- BigCommerce API Specifications
- **As of December 27, 2023, you can find all the public BigCommerce DevDocs at [https://github.com/bigcommerce/docs](https://github.com/bigcommerce/docs)!**
- This repository is archived and read only. The final commit has been tagged.
- If you maintain API clients, the new bigcommerce/docs repo is now your source for the most up-to-date API specifications.
- This consolidation lets the BigCommerce DX team offer a more streamlined developer experience. issues, discussions, and pull requests at bigcommerce/docs!

### Tajo Revamp Checklist

- Keep authentication setup aligned with the vendor docs and the public repository’s current API shape.
- Map primary resources into explicit Tajo sync objects with stable external IDs.
- Prefer cursor-based or updated-at incremental sync where the API exposes it; otherwise document the fallback.
- Treat webhook handlers as idempotent and replay-safe, especially for order, contact, ticket, and campaign events.
- Capture pagination, rate limits, retry headers, and partial-failure behavior in connector smoke tests.
- Keep examples small and runnable against sandbox or test-mode accounts.

### Sources

- [bigcommerce/api-specs](https://github.com/bigcommerce/api-specs)
- [Vendor documentation](https://developer.bigcommerce.com/docs/api)
