
Out-of-the-box seamless BigCommerce integration for your Strapi instance
released May 8, 2025
npm install @strapi-community/bigcommerce
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.
clientIdclientSecretaccessTokenstoreHashProducts: read-only (To read product data)Storefront API Tokens: manage (To create tokens for storefront product searching)npm install @strapi-community/bigcommerce@latest
# or
yarn add @strapi-community/bigcommerce@latestThen, rebuild your Strapi admin panel:
# Using npm
npm run build
# Using yarn
yarn build

Store-level API accounts and got there.
V2/V3 API Token type set.
Products permissions to read-only.Storefront API tokens permissions to manage.
ClientID.Client secret.Access token.
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 IDclientSecret (string): Your BigCommerce App Client SecretaccessToken (string): Your BigCommerce API Account Access TokenstoreHash (string): Your BigCommerce Store HashchannelId (array of numbers): An array containing at least one BigCommerce Channel IDaddressStore (string): The URL for your BigCommerce Address Store API endpointencryptionKey (string): A 32-character string used for encrypting sensitive dataengine (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 []Create or update the file ./config/plugins.js (or .ts):
Using Memory Engine:
// ./config/plugins.js
module.exports = ({ env }) => ({
// ... other plugin configurations
'bigcommerce': {
enabled: true,
config: {
clientId: env('BIGCOMMERCE_CLIENT_ID'),
clientSecret: env('BIGCOMMERCE_CLIENT_SECRET'),
accessToken: env('BIGCOMMERCE_ACCESS_TOKEN'),
storeHash: env('BIGCOMMERCE_STORE_HASH'),
channelId: [parseInt(env('BIGCOMMERCE_CHANNEL_ID', '1'), 10)], // Ensure it's an array of numbers
addressStore: env('BIGCOMMERCE_ADDRESS_STORE_URL'),
allowedCorsOrigins: ['http://localhost:3000'], // Optional
engine: 'memory',
encryptionKey: env('BIGCOMMERCE_ENCRYPTION_KEY'),
},
},
// ... other plugin configurations
});Using Redis Engine:
// ./config/plugins.js
module.exports = ({ env }) => ({
// ... other plugin configurations
'bigcommerce': {
enabled: true,
config: {
clientId: env('BIGCOMMERCE_CLIENT_ID'),
clientSecret: env('BIGCOMMERCE_CLIENT_SECRET'),
accessToken: env('BIGCOMMERCE_ACCESS_TOKEN'),
storeHash: env('BIGCOMMERCE_STORE_HASH'),
channelId: env.array('BIGCOMMERCE_CHANNEL_IDS', [1]).map(Number), // Example parsing env array
addressStore: env('BIGCOMMERCE_ADDRESS_STORE_URL'),
allowedCorsOrigins: [], // Optional
engine: 'redis',
connection: {
host: env('REDIS_HOST', '127.0.0.1'),
port: env.int('REDIS_PORT', 6379),
db: env.int('REDIS_DB', 0),
password: env('REDIS_PASSWORD', undefined),
username: env('REDIS_USERNAME', undefined), // If using Redis ACLs
},
encryptionKey: env('BIGCOMMERCE_ENCRYPTION_KEY'),
},
},
// ... other plugin configurations
});Remember to add the corresponding environment variables to your .env file.
yarn buildyarn test:serveryarn test:ts:frontYou can also use the official Strapi support platform and search for [VirtusLab] prefixed people (maintainers)
See the MIT License file for licensing information.
Share your work with the community and get it listed in the Strapi ecosystem for everyone to discover and use.
Submit
