BigCommerce
Out-of-the-box seamless BigCommerce integration for your Strapi instance
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
- 📋 Requirements
- 📦 Installation
- ⚙️ BigCommerce Configuration
- 🔧 Plugin Configuration
- 👨💻 Development & Testing
- 🔗 Links
- 💬 Community Support
- 📄 License
✨ 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
- Log in to your BigCommerce admin dashboard.
2. Go to Store-level API accounts
- Search for
Store-level API accounts
and got there.
3. Create new account with proper permissions
- Create new account with
V2/V3 API Token
type set.
- Set
Products
permissions toread-only
. - Set
Storefront API tokens
permissions tomanage
.
4. Copy Tokens & Secret to your Strapi Plugin settings page or file
- Copy
ClientID
. - Copy
Client secret
. - Copy
Access token
.
🔧 Plugin Configuration
Required 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 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[]
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)
- Discord (For live discussion with the Community and Strapi team)
- Community Forum (Questions and Discussions)
📄 License
See the MIT License file for licensing information.
Install now
npm install @strapi-community/bigcommerce
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.