A Shopify catalog with more than 5,400 products turns “make a video for each item” into an automation problem.
At 10 minutes per manually produced video, the work would take about 900 hours — more than 112 eight-hour days. We completed the catalog within one day by treating Shopify as structured input, using one data-driven Zvid design, and orchestrating the process with n8n.
The architecture
Shopify GraphQL
→ eligibility and media checks
→ product-to-template mapping
→ free Zvid validation and quote
→ editor preview or bulk render
→ review links
→ optional Shopify staged upload and association
The workflow maps up to four images plus title, price, compare-at price, description points, sizes, vendor, product type, storefront URL, and product-specific color styling.
It carries the Shopify product GID through every stage. That is important: mapping a finished job by title would be unsafe when titles change or repeat.
Eligibility is more than a tag filter
The default product search excludes the zvid-video tag, but the workflow also inspects Shopify media. Any product with a usable VIDEO or EXTERNAL_VIDEO item is skipped even if another process created it and the tag is absent.
Products missing a title, a public image, or a priced variant are reported as skipped instead of failing the entire batch.
Safe execution modes
The import ships with:
{
"dryRun": true,
"publishToShopify": false
}
The dry run validates the resolved project, returns the duration and exact credit quote, and creates an editor draft for the first product. It does not start a paid render.
After approval, dryRun: false renders the selected batch. With publishToShopify: false, the workflow returns the MP4 URLs for review. Only an explicit publishToShopify: true enables Shopify writes.
Publishing hosted video to Shopify
Shopify hosted video uses a staged-upload flow. For every approved result, the workflow:
- gets the MP4 byte size;
- calls
stagedUploadsCreate; - uploads to the signed staging target;
- associates the staged resource with the Shopify product; and
- adds the processed tag only when Shopify accepts the association.
Failed products remain untagged and can be retried.
Credentials
Use a Shopify Admin API access token as the value of the X-Shopify-Access-Token n8n Header Auth credential. It is not the Client ID or Client secret. The Shopify app needs read_products, write_products, and write_files.
For Zvid, install the verified community package @zvid/n8n-nodes-zvid from Settings → Community nodes. A workspace owner or admin may need to perform the installation. Create the API key at https://app.zvid.io/api-keys and store it in a Zvid API credential.
The exported JSON contains no Shopify or Zvid secret.
Why this scales
The system separates creative decisions from product variation:
- the video design is shared;
- catalog fields become variables;
- each batch has a clear maximum size;
- validation precedes rendering;
- each output remains tied to a stable product ID; and
- publishing is a separate approval gate.
This is what reduced a theoretical 900-hour project to a one-day automated run.
Resources
- Video walkthrough: https://youtu.be/qe5KHfJoZmY
- n8n workflow: https://n8n.io/workflows/17932-create-and-publish-shopify-product-videos-with-zvid/
- Zvid app: https://app.zvid.io
- API keys: https://app.zvid.io/api-keys
- Documentation: https://docs.zvid.io
Top comments (0)