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.
- β¨ Features
- π Requirements
- π¦ Installation
- βοΈ BigCommerce Configuration
- π§ Plugin Configuration
- π¨βπ» Development & Testing
- π Links
- π¬ Community Support
- π License
- Attach BigCommerce products to Strapi Content Types using dedicated BigCommerce Custom Field
- Map product data between BigCommerce and Strapi
- 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)
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
- Log in to your BigCommerce admin dashboard.
- Search for
Store-level API accounts
and got there.
- Create new account with
V2/V3 API Token
type set.
- Set
Products
permissions toread-only
. - Set
Storefront API tokens
permissions tomanage
.
- Copy
ClientID
. - Copy
Client secret
. - Copy
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 ifengine
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.
- Build:
yarn build
- Test backend:
yarn test:server
- Test frontend:
yarn test:ts:front
- GitHub (Bug reports, contributions)
You can also use the official Strapi support platform and search for [VirtusLab]
prefixed people (maintainers)
- Discord (For live discussion with the Community and Strapi team)
- Community Forum (Questions and Discussions)
See the MIT License file for licensing information.