Features
- Two-way product sync: Import products from Shopify with all variants, options, and metadata
- Automatic updates: Products stay in sync via scheduled syncs and webhooks
- OAuth authentication: Secure connection without sharing passwords
- Field mapping: Control which data comes from Shopify vs. manual entry in Avelero
- Variant matching: Match Shopify variants to existing Avelero products via SKU or barcode
Installation
There are two ways to install the Shopify integration:Option A: Install from Avelero (recommended)
Option B: Install from Shopify App Store
Find Avelero in Shopify App Store
Search for “Avelero” in the Shopify App Store.
The Shopify integration requires the
read_products permission to sync product data. No customer data is accessed or stored.Authentication flow
The Shopify integration uses OAuth 2.0 for secure authentication: Technical details:- Authorization endpoint:
https://admin.shopify.com/oauth/install - Token exchange:
POST https://{shop}.myshopify.com/admin/oauth/access_token - Scopes:
read_products - Credentials are encrypted using AES-256-GCM before storage
Syncing products
Initial sync
When you first connect Shopify:- Click Sync now or wait for the automatic sync to start
- Avelero fetches all products from Shopify’s GraphQL Admin API
- Products are created in Avelero with Shopify’s product structure
- Digital Product Passports are generated automatically
handle: Product slug (used as unique identifier)title: Product namedescription: Product description (HTML)status: Publication status (draft, active, archived)productType: Product type/categoryvendor: Manufacturer nametags: Product tags (array)featuredImage: Main product image URLcategory: Shopify product category taxonomy
sku: Stock keeping unitbarcode: Product barcode (UPC, EAN, etc.)title: Variant name (e.g., “Small / Red”)price: Variant priceselectedOptions: Array of option values (size, color, etc.)image: Variant-specific image URL
Scheduled syncs
By default, Shopify syncs every 24 hours. You can adjust this in integration settings:- Minimum interval: 1 hour
- Maximum interval: 7 days
- Default: 24 hours
Manual sync
Sync behavior
Creating products:- New Shopify products are created in Avelero
- Product handle is used as the unique identifier
- All variants are imported
- Existing products (matched by handle) are updated
- Only fields owned by Shopify integration are updated
- Manual edits to non-owned fields are preserved
- Products deleted in Shopify are NOT deleted in Avelero
- They remain in Avelero for historical/compliance purposes
- You can manually archive them if needed
Webhooks
Shopify sends webhooks to Avelero for real-time updates:Mandatory compliance webhooks
These webhooks are required by Shopify and handle GDPR compliance:customers/data_request: No action (Avelero doesn’t store customer data)customers/redact: No action (Avelero doesn’t store customer data)shop/redact: Deletes brand integration record 48 hours after app uninstall
Verifying webhooks
Avelero verifies all Shopify webhooks using HMAC-SHA256:Field mapping
Configure which Shopify fields map to Avelero fields and control ownership:Review default mappings
Shopify fields are mapped to Avelero fields automatically:
| Shopify field | Avelero field | Ownership |
|---|---|---|
title | Product name | Shopify |
description | Product description | Shopify |
handle | Product handle | Shopify |
vendor | Manufacturer | Shopify |
productType | Category | Shopify |
tags | Tags | Shopify |
sku | Variant SKU | Shopify |
barcode | Variant barcode | Shopify |
Variant matching (secondary integration)
If Shopify is connected as a secondary integration (not primary), variants are matched to existing products: Matching strategies:- By SKU (default): Shopify variants are matched to Avelero variants with the same SKU
- By barcode: Match using barcode instead (configure in integration settings)
- If a match is found, the variant is enriched with Shopify data (based on field ownership)
- If no match is found, the variant is skipped (not created)
- Unmatched variants are logged in the sync report
Troubleshooting
Connection fails with 'Invalid signature' error
Connection fails with 'Invalid signature' error
Cause: OAuth flow was interrupted or tampered with.Solution:
- Disconnect the integration in Avelero
- Uninstall the Avelero app from Shopify admin
- Reconnect using the “Install from Avelero” flow
Sync shows 'Authentication failed' error
Sync shows 'Authentication failed' error
Cause: Shopify access token expired or was revoked.Solution:
- Go to Shopify admin → Apps
- Verify Avelero app is still installed
- If installed, disconnect and reconnect in Avelero
- If not installed, reinstall from Avelero
Products are syncing but images aren't appearing
Products are syncing but images aren't appearing
Cause: Shopify image URLs are CDN links that may require authentication.Solution:
- Images are referenced by URL, not downloaded
- Verify image URLs are publicly accessible
- Check that
featuredImage.urlexists in Shopify’s GraphQL response
Some products are missing after sync
Some products are missing after sync
Cause: Products may be filtered by status or location.Solution:
- Check product status in Shopify (must be published)
- Verify products exist in the primary location
- Review sync job logs in Settings → Integrations → Shopify → Sync history
Variant options aren't syncing correctly
Variant options aren't syncing correctly
Cause: Shopify uses a different attribute structure than Avelero.Solution:
- Shopify options (Size, Color) are synced as Avelero attributes
- Option values become attribute values
- Review attribute mappings in Catalog → Attributes
API reference
Shopify GraphQL queries
Avelero uses Shopify’s GraphQL Admin API version 2025-07:Rate limiting
Shopify enforces GraphQL rate limits based on query cost:- Maximum available: 2000 points
- Restore rate: 100 points/second
- Product query cost: ~50-150 points (depending on fields)
Rate limit handling
Next steps
Bulk import/export
Supplement Shopify data with bulk imports for supply chain and sustainability info.
Product data structure
Learn how product data is structured and inherited.