Strapi plugin logo for BigCommerce

BigCommerce

Out-of-the-box seamless BigCommerce integration for your Strapi instance

thumbnail for BigCommerce
Logo - Strapi BigCommerce Plugin

Strapi BigCommerce Plugin

Out-of-the-box seamless BigCommerce integration for your Strapi instance

NPM version Monthly download on NPM codecov.io

UI preview

A powerful Strapi plugin that seamlessly connects your Strapi application with BigCommerce stores through a user-friendly interface. It features a custom BigCommerce field and efficient product synchronization capabilities. The plugin comes with built-in content types and configurable caching mechanisms to optimize performance.

📋 Table of Contents

✨ Features

  • Attach BigCommerce products to Strapi Content Types using dedicated BigCommerce Custom Field
  • Map product data between BigCommerce and Strapi

📋 Requirements

  • Strapi v5.7.0 or later
  • Node.js 18+
  • For Redis cache: a running Redis instance
  • BigCommerce API credentials:
    • clientId
    • clientSecret
    • accessToken
    • storeHash
  • At least one BigCommerce Channel ID
  • URL for your BigCommerce Address Store API
  • Required BigCommerce API Token Scopes:
    • Products: read-only (To read product data)
    • Storefront API Tokens: manage (To create tokens for storefront product searching)

📦 Installation

npm install @strapi-community/bigcommerce@latest
# or
yarn add @strapi-community/bigcommerce@latest

Then, rebuild your Strapi admin panel:

# Using npm
npm run build

# Using yarn
yarn build

⚙️ Configuring BigCommerce (Step-by-Step with Images)

1. Open Your BigCommerce Store

BigCommerce Store

  • Log in to your BigCommerce admin dashboard.

2. Go to Store-level API accounts

Store-Level API accounts

  • Search for Store-level API accounts and got there.

3. Create new account with proper permissions

Create new account

  • Create new account with V2/V3 API Token type set.

Set permissions

  • Set Products permissions to read-only.
  • Set Storefront API tokens permissions to manage.

4. Copy Tokens & Secret to your Strapi Plugin settings page or file

Copy values

  • Copy ClientID.
  • Copy Client secret.
  • Copy Access token.

🔧 Plugin Configuration

Required Configuration

Plugin Configuration

You need to configure the plugin in your Strapi project's ./config/plugins.js file (or ./config/plugins.ts if using TypeScript).

The following fields are required:

  • clientId (string): Your BigCommerce App Client ID
  • clientSecret (string): Your BigCommerce App Client Secret
  • accessToken (string): Your BigCommerce API Account Access Token
  • storeHash (string): Your BigCommerce Store Hash
  • channelId (array of numbers): An array containing at least one BigCommerce Channel ID
  • addressStore (string): The URL for your BigCommerce Address Store API endpoint
  • encryptionKey (string): A 32-character string used for encrypting sensitive data
  • engine (string): Specifies the storage engine for session data. Can be either 'memory' or 'redis'
  • connection (object, required if engine is 'redis'): Contains Redis connection details:
    • host (string)
    • port (number)
    • db (number)
    • password (string, optional)
    • username (string, optional)

Optional fields:

  • allowedCorsOrigins (array of strings): An array of allowed origins for CORS requests. Defaults to []

Example Configurations

Create or update the file ./config/plugins.js (or .ts):

Using Memory Engine:

1// ./config/plugins.js
2module.exports = ({ env }) => ({
3  // ... other plugin configurations
4  'bigcommerce': {
5    enabled: true,
6    config: {
7      clientId: env('BIGCOMMERCE_CLIENT_ID'),
8      clientSecret: env('BIGCOMMERCE_CLIENT_SECRET'),
9      accessToken: env('BIGCOMMERCE_ACCESS_TOKEN'),
10      storeHash: env('BIGCOMMERCE_STORE_HASH'),
11      channelId: [parseInt(env('BIGCOMMERCE_CHANNEL_ID', '1'), 10)], // Ensure it's an array of numbers
12      addressStore: env('BIGCOMMERCE_ADDRESS_STORE_URL'),
13      allowedCorsOrigins: ['http://localhost:3000'], // Optional
14      engine: 'memory',
15      encryptionKey: env('BIGCOMMERCE_ENCRYPTION_KEY'),
16    },
17  },
18  // ... other plugin configurations
19});

Using Redis Engine:

1// ./config/plugins.js
2module.exports = ({ env }) => ({
3  // ... other plugin configurations
4  'bigcommerce': {
5    enabled: true,
6    config: {
7      clientId: env('BIGCOMMERCE_CLIENT_ID'),
8      clientSecret: env('BIGCOMMERCE_CLIENT_SECRET'),
9      accessToken: env('BIGCOMMERCE_ACCESS_TOKEN'),
10      storeHash: env('BIGCOMMERCE_STORE_HASH'),
11      channelId: env.array('BIGCOMMERCE_CHANNEL_IDS', [1]).map(Number), // Example parsing env array
12      addressStore: env('BIGCOMMERCE_ADDRESS_STORE_URL'),
13      allowedCorsOrigins: [], // Optional
14      engine: 'redis',
15      connection: {
16        host: env('REDIS_HOST', '127.0.0.1'),
17        port: env.int('REDIS_PORT', 6379),
18        db: env.int('REDIS_DB', 0),
19        password: env('REDIS_PASSWORD', undefined),
20        username: env('REDIS_USERNAME', undefined), // If using Redis ACLs
21      },
22      encryptionKey: env('BIGCOMMERCE_ENCRYPTION_KEY'),
23    },
24  },
25  // ... other plugin configurations
26});

Remember to add the corresponding environment variables to your .env file.

👨‍💻 Development & Testing

  • Build: yarn build
  • Test backend: yarn test:server
  • Test frontend: yarn test:ts:front

🔗 Links

💬 Community Support

  • GitHub (Bug reports, contributions)

You can also use the official Strapi support platform and search for [VirtusLab] prefixed people (maintainers)

📄 License

See the MIT License file for licensing information.

Install now

npm install @strapi-community/bigcommerce

STATS

No GitHub star yet7 weekly downloads

Last updated

17 days ago

Strapi Version

5.7.0 and above

Author

github profile image for Maksymilian Pamuła
Maksymilian Pamuła

Useful links

Create your own plugin

Check out the available plugin resources that will help you to develop your plugin or provider and get it listed on the marketplace.