
Out-of-the-box seamless Shopify integration for your Strapi instance
released May 8, 2025
npm install @strapi-community/shopify
A powerful Strapi plugin that seamlessly connects your Strapi application with Shopify stores through a user-friendly interface. It features a custom Shopify Product field, robust webhook management, and efficient product synchronization capabilities. The plugin comes with built-in content types for store management, along with configurable caching mechanisms to optimize performance.
npm install @strapi-community/shopify@latest
# or
yarn add @strapi-community/shopify@latestshopify (Step-by-Step with Images)Follow these steps to configure your Shopify store and connect it to your Strapi instance using this plugin. Visual guidance is provided with embedded images for each step.










address: Your Shopify store address (e.g., your-store.myshopify.com)apiSecretKey: The API secret key from your Shopify appadminApiAccessToken: The Admin API access tokenapiKey: The API keyNote:
/api/shopify/webhooks).The plugin requires a configuration object. You must provide a host (publicly accessible URL of your Strapi instance) and select a cache engine (memory or redis).
{
host: string (URL), // required
engine: 'memory' | 'redis', // required
encryptionKey: string (32 chars), // required
// If engine is 'redis', provide connection details:
connection?: {
host: string, // required for redis
port: number, // required for redis
db: number, // required for redis
password?: string,
username?: string
}
}module.exports = {
'shopify': {
host: 'https://your-strapi-instance.com',
encryptionKey: 'random 32 chars string',
engine: 'memory',
},
};module.exports = {
'shopify': {
host: 'https://your-strapi-instance.com',
encryptionKey: 'random 32 chars string',
engine: 'redis',
connection: {
host: 'localhost',
port: 6379,
db: 0,
password: 'yourpassword', // optional
username: 'youruser', // optional
},
},
};vendor (string, required)address (string, required)apiSecretKey (string, required)
Used to validate incoming Shopify webhook signatures. Only requests signed with this key are accepted.isActive (boolean, required, default: true)adminApiAccessToken (string, required)apiKey (string)webhooks (relation to webhooks)topic (enum: ProductsCreate, ProductsUpdate, ProductsDelete, OrdersCreate, OrdersUpdated, OrdersDelete)shopifyId (string)format (enum: Json)callbackUrl (string)errors (json)shop (relation to shop)service (string, required)method (string, required)When a Strapi content type includes the custom Shopify product field, the plugin will automatically attach the corresponding Shopify product data to API responses for that content type. This is handled transparently in the plugin's middleware during the findOne and findMany actions.
Supported queries:
findOne (single record fetch)findMany (list fetch, including collection endpoints)Caching:
engine: 'memory' | 'redis').Reference: See server/src/register.ts, middleware in the strapi.documents.use block for details on how product data is attached to responses.
The plugin exposes a webhook endpoint for Shopify:
POST /api/shopify/webhooksapiSecretKey (HMAC signature) via Shopify's official SDK. Only requests with a valid signature are processed; all others are rejected.For the plugin to work correctlyβespecially in verifying incoming Shopify webhook signaturesβit is required to have access to the raw (unparsed) request body. This is achieved by configuring Strapi's body parser middleware to include the unparsed body.
To do so, update your application's middleware configuration in apps/example-app/config/middlewares.ts as follows:
{
name: 'strapi::body',
config: {
includeUnparsed: true,
},
}This setting leverages the Koa Body parser's includeUnparsed option. For more details, please refer to the Strapi V5 documentation and the koa-body parser documentation.
yarn buildyarn test:serveryarn test:ts:frontYou can also used official support platform of Strapi, and search [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
