npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@strapi-community/bigcommerce

v1.0.0

Published

Official Strapi BigCommerce Plugin

Readme


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:

// ./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.

👨‍💻 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.