Shopify is a leading eCommerce platform that allows businesses to sell products online and manage their sales channels efficiently. Integrating Shopify into Flxpoint as a channel allows you to automate order processing, inventory syncing, and product publishing between Flxpoint and Shopify. It helps streamline operations, ensuring that your product data and inventory levels are always up-to-date across your sales platforms.
How to Connect
- Import Listings – bring existing Shopify products/listings into Flxpoint.
- Publish Listings – send product data from Flxpoint to Shopify.
- Sync & Link Listings – link existing Shopify products to your catalog to avoid duplicates.
- Get Orders – import Shopify orders into Flxpoint.
https://cool-gadgets.myshopify.com), not your custom domain (e.g., coolgadgets.com).
Find it in Shopify Admin → Settings > Domains.
- Enter your .myshopify.com Store URL (e.g., https://your-store-name.myshopify.com).
- Click Continue / Authorize to open Shopify’s approval screen.
- Who can approve? Store owner or staff with app-install permissions.
- Not the owner? Ask the owner to approve, or request temporary staff access with app-install permission.
- Import Listings — choose defaults (e.g., create new listings as Paused so you can review before publishing).
- Sync & Link Listings — link existing Shopify products with your catalog to avoid duplicates.
- Publish Settings — choose which product fields Flxpoint sends to Shopify (title, description, images, etc.).
- Category/Taxonomy notes — ensure internal categories map to valid Shopify taxonomy values.
- Get Orders — select statuses/timeframe; confirm how orders should flow.
- Order Settings — routing preferences, timing windows, cancellations.
- Shipping/Carrier Mappings — map your carriers/service levels.
-
Import Listings — What: pull existing Shopify products/listings into Flxpoint.
When: already live on Shopify and want Flxpoint to mirror them.
Tip: great first run for established catalogs. -
Publish Listings — What: push product data from Flxpoint to Shopify.
When: launching or updating products.
Tip: confirm taxonomy/category mapping first. -
Sync & Link Listings — What: match existing Shopify products with your catalog.
When: migrating to Flxpoint or preventing duplicates.
Tip: run a small linking batch and spot-check before scaling. -
Get Orders — What: import new Shopify orders into Flxpoint.
When: ready to process orders here.
Tip: set Order Settings and Carrier Mappings beforehand.
- Pricing / Quantity — markups and buffers used by Publish.
- Listing Status — readiness/errors before Publish.
- Shipping / Carrier Mappings — map service levels correctly.
- Settings — channel-specific defaults and advanced options.
- Admin — diagnostic/advanced tools.
*.myshopify.com ✔️ | Import small sample ✔️ | Check mapping ✔️ | Publish 1–2 items ✔️ | Get Orders test ✔️
-
“URL invalid” → Use
https://your-store-name.myshopify.com(not your custom domain). - “Can’t approve app” → Ask the store owner or request app-install permission.
- “Nothing after Authorize” → Unblock pop-ups; confirm you’re approving the correct store if you manage multiple shops; retry.
Listing Operations
Import Listings
Import Listings brings your Shopify products (parents & variants) into Flxpoint so you can manage them centrally. You’ll connect Shopify, choose a few settings (like Set New Listings to Paused and Master SKU), and run the import manually (no scheduling).
-
1Connect Shopify
New to this? Click Create Connection, choose Shopify (OAuth), and approve the app on your store. If you already connected your store, just pick it from the list.
-
2Configure Settings
- Set New Listings to Paused — Start new imports as Paused so you can review and link to sources first.
- Master SKU — Choose which Shopify field becomes your unique ID in Flxpoint (usually Variant SKU or Barcode).
- Product & Listing Management — Decide whether we only create new items or also update existing ones when a match is found.
Why “Paused” helps: It gives you a safe review step to catch errors before activating listings. -
3Run the Import
Click Run Sync. This runs on demand (no scheduler).After completion, check Recent Notifications for created/updated counts and any errors.
- Don’t have Variant SKUs? Add SKUs in Shopify first. Missing SKUs often cause “SKU must be provided” errors.
- Unsure about Master SKU? Pick the field that’s unique per variant. If in doubt, use Variant SKU.
- Review Paused Items: Go to Channel Listings, open the Paused items, verify data, and connect to sources if needed.
- Unpause Listings: Select the listings → Actions → Edit → Unpause.
-
Product & Listing Management modes:
- Create Products & Listings Only: Import & link by SKU; create new when no match exists.
- Create New Products Only: Build new products in Flxpoint without touching existing ones.
- Create and Update Products & Listings: Import & link by SKU and overwrite matches with Shopify data; create when no match exists.
Parents and variants from Shopify, including core details, images, and metafields.
| Shopify Field | Maps To | Example | Purpose | Status |
|---|---|---|---|---|
| externalListingId | Flxpoint externalListingId | 123456789 | Identifies the parent listing | Supported |
| SKU (Handle) | Flxpoint SKU | product-handle | Identifier for the product | Supported |
| Title | Flxpoint Title | Blue T-Shirt | Product name | Supported |
| Description | Flxpoint Description | Comfortable cotton t-shirt | Product description | Supported |
| Manufacturer | Flxpoint Manufacturer | BrandX | Product manufacturer | Supported |
| Images | Flxpoint Images | image_url.jpg | Product images | Supported |
| customField (Product Metafields) | Flxpoint customField | color: blue | Additional product metadata | Supported |
| Attributes (Tags) | Flxpoint Attributes | tag: summer | Product attributes | Supported |
| Category1/2/3 (CustomCollections) | Flxpoint Categories 1–3 | Apparel / T-Shirts / Casual | Category context | Supported |
| Shopify Field | Maps To | Example | Purpose | Status |
|---|---|---|---|---|
| externalListingId | Flxpoint externalListingId | 987654321 | Identifies the variant | Supported |
| SKU | Flxpoint SKU | variant-sku-001 | Unique identifier | Supported |
| UPC (Barcode) | Flxpoint UPC | 012345678905 | Universal product code | Supported |
| Title | Flxpoint Title | Blue T-Shirt – Medium | Variant name | Supported |
| Price / MSRP / SalePrice | Flxpoint Price / MSRP / SalePrice | 29.99 / 39.99 / 24.99 | Pricing | Supported |
| Quantity | Flxpoint Quantity | 100 | Available stock | Supported |
| customFields (Variant Metafields) | Flxpoint customFields | size: medium | Additional metadata | Supported |
| Options | Flxpoint Options | Medium, Blue | Variant options | Supported |
| Weight / Unit | Flxpoint Weight / Weight Unit | 0.5 / lbs | Weight & unit | Supported |
- “SKU must be provided…” — Add Variant SKUs in Shopify, then re-run the import.
- Connection errors — Re-authorize the Shopify app or confirm the correct store connection.
- Unexpected overwrites — If you chose “Create and Update…”, Shopify data will overwrite matched items. Pick the mode that fits your workflow.
- Manual Execution: Import Listings doesn’t support scheduling.
- Master SKU: Choose a unique field (Variant SKU or Barcode) to ensure clean linking and updates.
- Results: Check Recent Notifications after each run for counts and error messages.
Sync & Link Listings
Shopify — Sync & Link Listings keeps your Shopify product price, quantity, and key attributes in sync with your Flxpoint listings. You’ll (1) connect Shopify, (2) configure linking and sync options (Location ID, Linking Priority, etc.), and (3) define a Sync Listings mapping template so we know which fields to send. You can run on demand or schedule it.
-
1Connect Shopify:
Choose (or create) your Shopify connection via OAuth and click Save and Proceed.
Note: If you manage multiple stores, double-check you authorized the correct shop domain before proceeding.
-
2Configure Settings:
- Location ID — Inventory location to update. Must match a valid Shopify location or quantities won’t move.
- Linking Priority — Add rows like Listing Variant → SKU ↔ Shopify Variant → SKU. We try from top to bottom until a match is found.
- Scheduling — Optional. Enable a cadence (e.g., hourly/daily) if you want automatic sync.
- 3Define a Mapping Template: Select your Sync Listings template (e.g., Shopify Sync Listings 1) so we know which fields to send to Shopify (Quantity, Price, SKU, etc.). Save, then Run Sync or let the schedule take over.
- Wizard steps: Connect an Integration, Configure Settings, Define a Mapping Template — each shows a check mark when complete.
- Tooltips that explain Linking Priority (“rows are tried top to bottom”).
- A scheduling toggle on the Configure screen if you want automation.
| Template | Use Case | What it Covers | Availability |
|---|---|---|---|
| Shopify Sync Listings 1 | Keep Shopify price/qty in sync | Maps List Price → Price, Quantity → Quantity, SKU → SKU. | Available |
How your Flxpoint listing fields flow to Shopify.
| Flxpoint Field (From) | Shopify Variant Field (To) | Type | Required? | Notes |
|---|---|---|---|---|
| Listing Variant → Quantity | Quantity | Number | Yes | Inventory updates occur at the selected Location ID. |
| Listing Variant → List Price | Price | Number | Recommended | Use rules if you need markups/rounding. |
| Listing Variant → SKU | SKU | Text | Recommended | Primary match key for Linking Priority. |
| Rule | Type | When it Helps | What it Does |
|---|---|---|---|
| Markup price by % | Number | Create Shopify selling price from cost or list price | Applies a percentage increase and can round to .99. |
| Clamp min/max quantity | Number | Prevent over-listing or under-listing | Forces the sent qty within your safe range (e.g., 1–50). |
| When SKU starts with … then set value | String | Account for vendor prefixes | Outputs a different field or flag when the pattern matches. |
| Utility | Availability | How You Might Use It |
|---|---|---|
| Mapping Sets | Optional — available | Combine inputs (e.g., base price + fee) into one output. |
| Lists | Optional — available | Reusable value lists (approved brands, restricted SKUs). |
| Builders | Optional — available | Create custom outputs if your Shopify workflow needs them. |
- Shopify connection is authorized and saved.
- Location ID is set to a valid Shopify inventory location.
- Linking Priority includes at least one reliable pair (usually SKU ↔ SKU).
- A Sync Listings mapping template is selected and saved.
- Scheduling is enabled if you want automation; otherwise run manually.
- Quantity didn’t change — Confirm the template maps Quantity → Quantity and that the location matches your Shopify Location ID. Ensure “Track inventory” is enabled on the variant in Shopify.
- Nothing linked — Review Linking Priority; start with SKU ↔ SKU. Make sure your Shopify variants actually have SKUs.
- Price not updating — Verify List Price → Price is mapped and that no other app overrides price after our sync.
- API throttling — Shopify may rate-limit. Space your schedule (e.g., hourly) and reduce batch sizes if available.
- Hidden vs Delisted — “Hide” (set to out-of-stock / remove sales channel visibility) is reversible; “Delist” requires publishing again.
| Feature | Availability | What to Expect |
|---|---|---|
| Hiding | Supported | Use rules to hide when qty ≤ 0 or based on flags. |
| Delisting | Supported | Removes item from sale; re-publish to restore. |
| Custom Fields | Not primary | Sync focuses on price/qty/SKU; other attributes depend on your template. |
| Multiple Locations | Supported (single target) | Sync applies to the chosen Location ID for this integration. |
| Scheduling | Supported | Run on demand or enable a recurring schedule. |
Publish Listings
Shopify — Publish Listings creates or updates Shopify products and variants from your Flxpoint listing data. You’ll (1) connect Shopify, (2) configure publishing settings like Location ID and optional Publication IDs, and (3) choose a Publish Listings mapping template to control which fields are sent (Title, Description, Tags, Category, SKU, Price, images, metafields, and more).
- 1Connect Shopify: Add Shopify — Publish Listings and select your Shopify connection (API credentials or OAuth2). Click Save and Proceed.
-
2Configure Settings:
- Location ID — set the Shopify inventory location ID used for publishing.
-
Publication IDs (optional) — publish to one or more Shopify publications using a comma-separated list.
Use either numeric IDs or full GIDs consistently, and do not include spaces.
Numeric:
1234567890,9876543210GID:gid://shopify/Publication/1234567890,gid://shopify/Publication/9876543210Invalid:1234567890, 9876543210(spaces) |1234567890;(semicolon) - Truncate Title to 255 — prevents publish failures when titles exceed Shopify limits.
- Additional Variant Images — uploads variant-specific images when a parent image exists (useful for color-based variants).
- Namespace & Use Underscore in Meta Fields Name — controls how metafields are named when sending custom data.
- Auto-Create Smart Collection — optionally create Smart Collections based on mapped Product Types.
- Advanced Image Duplication Logic — helps prevent duplicate image uploads by caching checksums.
- Sort Variants by Option Position — sorts variants by option order when creating new parent products.
- Automate (optional) — schedule publishing jobs (runs in UTC).
- 3Define a Mapping Template: Select your Publish Listings mapping template (e.g., Publish Listings 1) to control which fields are sent to Shopify (Title, Description, Tags, Category, SKU, Price, images, metafields, etc.). Then run manually or set a schedule.
- Wizard steps: Connect an Integration, Configure Settings, Define a Mapping Template.
- Settings include Location ID, optional Publication IDs, image behavior, title truncation, metafield namespace options, and scheduling.
- Mapping template grid with Flxpoint fields (left) → Shopify fields (right), plus options like Don’t Map, Set to Empty, Value, and Rules.
| Template | Use Case | What it Covers | Availability |
|---|---|---|---|
| Publish Listings 1 | Create/update Shopify products & variants | Parent fields (Title, Description, Product Type, Tags, Category) + Variant fields (SKU, Price, Compare at Price/MSRP, Weight/Unit) + Images + Metafields (when configured). | Available |
Quick snapshot of how Flxpoint listing fields commonly map into Shopify for publishing.
| Flxpoint Field (From) | Shopify Field (To) | Type | Required? | Notes |
|---|---|---|---|---|
| Listing Parent → Title | Title | Text | Recommended | Enable Truncate Title to 255 if needed. |
| Listing Parent → Description | Description | Text/HTML | Optional | Use your content rules to standardize formatting. |
| Listing Variant → SKU | Variant SKU | Text | Yes | SKU uniquely identifies variants; must be mapped. |
| Listing Variant → List Price | Variant Price | Number | Recommended | Primary sell price in Shopify. |
| Listing Variant → MSRP | Compare at Price | Number | Optional | Should be greater than or equal to Price. |
| Listing Parent → Attributes | Tags | List/Text | Optional | Sent as comma-separated tags. |
| Listing Parent → Category 1 | Category | Text | Optional | Use Shopify taxonomy IDs (GID format) when applicable. |
| Images (Parent/Variant) | Images | List | Recommended | Use duplication logic to prevent repeated uploads. |
| Rule | Type | When it Helps | What it Does |
|---|---|---|---|
| Title normalization | String | Inconsistent parent titles | Standardizes capitalization/formatting; pairs well with title truncation. |
| Tag builder | String/List | You want consistent tagging | Creates Shopify tags from attributes, brands, categories, or static values. |
| Category mapping | Rule/Lookup | You use Shopify taxonomy IDs | Maps Flxpoint category values to Shopify taxonomy category GIDs. |
| Price guardrails | Number | Prevent bad pricing | Blocks prices below a threshold or rounds to a preferred ending. |
If your mapping template exposes a Publication IDs field, enter a comma-separated list with no spaces. Use either all numeric IDs or all GIDs.
- Shopify connection saved on Step 1.
- Location ID set correctly for your Shopify store.
- SKU is mapped in the Publish Listings template.
- Variant options stay within Shopify limits (max 3 options, max 100 variants).
- If using Publication IDs, the list is comma-separated with no spaces and a single consistent format (all numeric or all GIDs).
- Title length failures — enable Truncate Title to 255.
- Invalid Publication IDs — use commas only, no spaces; keep all IDs in the same format (all numeric or all GIDs).
- Change not applied to existing products — publication targeting applies on create/unhide. Use hide → unhide to re-apply publications.
- Variant option limit — ensure no more than 3 options and no more than 100 variants per product.
- Metafield issues — verify Namespace/Key conventions and that the metafield type matches what Shopify expects.
- Image upload issues — confirm image size/format requirements and enable Advanced Image Duplication Logic to reduce duplicates.
- Category mapping issues — ensure the taxonomy category ID (GID) is valid and matches Shopify’s taxonomy.
- Product/variant mismatches — if a product or variant was deleted in Shopify, unlink/re-link in Flxpoint before re-publishing.
| Feature | Availability | Notes |
|---|---|---|
| Products & Variants | Supported | Creates/updates Shopify parent products and variants based on your mapping template. |
| Variants / Options | Supported | Max 3 options per product; max 100 variants per product. |
| Metafields | Supported | Requires correct namespace/key behavior as configured in settings/templates. |
| Tags (from attributes) | Supported | Attributes can be published as Shopify tags (comma-separated). |
| Categories | Supported | Map to Shopify taxonomy category IDs where applicable. |
| Images | Supported | Supports parent and (optionally) variant images; duplication logic helps prevent re-uploads. |
| Multiple Publications | Supported | Set via Publication IDs (comma-separated). Applied on create/unhide, not every routine sync. |
| Scheduling | Supported | Optional automation runs in UTC. |
Order Operations
Get Orders
Shopify — Get Orders imports orders from Shopify into Flxpoint and lets you control which orders and lines arrive. You can keep your preferred Shopify order number in Flxpoint and support print-on-demand “In Progress” flows.
- 1Connect: Authorize your Shopify store and click Save and Proceed.
-
2Filters & Statuses:
- Where: Get Orders → Step 2: Filters
-
Fulfillment status: select
unfulfilledand/orpartial. These include orders whose underlying fulfillment orders are open orin_progress. -
Financial status: include the statuses you need (e.g.,
paid,authorized).
Why this works: Shopify tracks production at the fulfillment-order level. Usingunfulfilled/partialreliably brings in those jobs while they’re in progress.Quantity note: Map line Quantity fromline_items.quantity. Using fulfillable quantity can cause orders to import “On Hold”. -
3Advanced options (optional):
-
Import Already Fulfilled Order Items — bring in lines with
fulfillable_quantity = 0for accounting/reporting. - Allow Zero Fulfillable Shipment — marks those lines as shippable so you can create Fulfillment Requests and Purchase Orders. Use this with the option above.
- Import Items from Configured Location Only — include only the line items that belong to the Shopify fulfillment order for the Location ID you entered in the channel. Default: Off. Turn this on if you route by location and don’t want items from other Shopify locations (e.g. “LA” warehouse) to be imported.
Use case: A Shopify order has lines for “Dropship” (ID66772992197) and for “LA” (ID68039311557), but your channel is configured with the Dropship Location ID. With this option enabled, only the Dropship lines are saved in Flxpoint, so your external fulfillment rules continue to work. -
Import Already Fulfilled Order Items — bring in lines with
- 4Run or Schedule: Test with a manual run, then enable a schedule if you want automation.
Choose which Shopify identifier becomes your Flxpoint Order Reference Number to keep reporting consistent.
| Flxpoint Field | Shopify Property | Looks Like | When to Use |
|---|---|---|---|
| Order Reference Number | order.name |
#1001 | Matches the label seen in Shopify UI. |
| Order Reference Number | order.order_number |
1001 | Numeric only; ideal when downstream systems expect digits. |
| Order Reference Number |
order.id (Shopify orderId) |
gid or numeric ID | Best for cross-system joins and shipment lookups. |
| Flxpoint Line Field | Shopify Property | Notes |
|---|---|---|
| SKU | line_items.variant.sku |
Primary match key for routing and linking. |
| Quantity | line_items.quantity |
Use this (not fulfillable qty) to avoid On-Hold imports. |
| Unit Price | line_items.price |
Pre-discount unit price. |
| Line Discount | line_items.total_discount |
Optional: map if you need discount detail per line. |
| Title / Variant |
line_items.title, line_items.variant_title
|
Optional metadata for docs and packing slips. |
order.id saved to the FR. You can import the order from the channel and the tracking from the source—without routing the FR.
- Shopify connection is authorized and saved.
- Filters include
unfulfilled/partial(and the needed financial statuses). - Quantity mapping uses
line_items.quantity. - Advanced options are enabled if you need fulfilled lines (and set to shippable).
- Schedule is set if you want automation; otherwise run on demand.
-
Order “On Hold” — Check Quantity mapping; use
line_items.quantity. Re-run the job. - Missing already-fulfilled lines — Enable Import Already Fulfilled Order Items.
- Need FR/PO from fulfilled lines — Also enable Allow Zero Fulfillable Shipment.
- Order not fetched — Loosen financial/fulfillment filters temporarily to confirm visibility.
- Lines from other Shopify locations are appearing — Confirm the Shopify Location ID in the channel and enable Import Items from Configured Location Only (Advanced). This enforces location-level imports when your routing depends on a single location.
-
Tracking won’t import (POD flow) — Save Shopify
order.idas reference and use the source’s “fetch shipments by orderId”. - Rate limits — Shopify throttling can delay runs. Space schedules (e.g., hourly) and reduce batch sizes if available.
-
Fulfillment logic: Shopify’s order-level
fulfillment_statusis legacy; including unfulfilled/partial captures in-progress fulfillment orders. - Defaults: All advanced options, including location-restricted importing, are Off by default.
- Best practice: Keep a test order to validate mapping and filters before scaling.
Sync Orders
Shopify — Sync Orders sends shipment updates from Flxpoint to Shopify: tracking numbers/URLs, carrier, and status. You can optionally post a Closed status for orders with partial or no fulfillment (useful for in-store/POS flows). Multi-location is supported via Location ID.
- 1Connect Shopify: Create/select your OAuth connection and click Save and Proceed.
-
2Configure Settings:
- Location ID — Required. Fulfillments post to this Shopify location.
- Sync “Closed” Order Status — Optional. Sends a Closed status for orders with partial/no fulfillment (common for in-store orders).
- Shipping Mappings — Map Shopify rates (e.g., Free, Expedited) to your Flxpoint policies (Ground, Two Day, etc.).
- Channel Shipping Text (In-Store) — Map text such as “In-Store”/“POS” so your In-Store workflow rules can identify these orders.
- 3Run the Sync: Use Run Sync to post fulfillments. If a shipment spans multiple locations, lines from the selected Location ID post now; others retry on the next run.
Align your Shopify rate names with Flxpoint shipping policies.
| Shopify Rate | Flxpoint Policy | Example Use |
|---|---|---|
| Free | Ground | Free economy shipments |
| Standard | Two Day Shipping | Guaranteed 2-day delivery |
| Expedited | Expedited | Paid faster option |
- Location ID is required. Verify the numeric ID in Shopify and enter it here so fulfillments hit the right location.
- Mixed-location orders: Lines for your selected Location ID post now; other locations are retried on subsequent runs.
- Template type: Sync Orders (e.g., “Shopify Sync Orders 1”).
- UI has columns for Flxpoint Shipment (left) → Shopify Fulfillment (right).
- Common actions: Save Mapping, Duplicate, Delete.
| Flxpoint Field | Shopify Field | Required? | Notes |
|---|---|---|---|
| Shipment → Tracking Number | Tracking Number | Required | Primary identifier for the fulfillment. |
| Shipment → Carrier | Tracking Company | Recommended | Carrier name (UPS, USPS, FedEx, etc.). |
| Shipment → Tracking URL | Tracking URL | Optional | Deep link to carrier tracking. |
| Notify Customer (value/rule) | Notify Customer | Optional | Set to true to email customers on post. |
| Location (integration) | Location ID | Required (via config) | Usually set by the integration using your Location ID. |
- Don’t Map — field not sent.
- Set to Empty — clears destination value.
- Field — map a Flxpoint field (e.g., Tracking Number → Tracking Number).
-
Value — static value (e.g.,
truefor Notify Customer). - Rules — conditional outputs (e.g., notify only when Carrier = UPS/FedEx).
- Shopify OAuth connection is saved.
- Location ID is correct and active in Shopify.
- Template maps Tracking Number (and preferably Carrier + Notify Customer).
- Shipping Mappings cover your live rate names.
- Sync “Closed” is only enabled if you truly want that status posted.
- Shipment didn’t post — If the product was deleted in Shopify after order creation, Shopify can’t attach the fulfillment. Re-link the product/variant in Shopify & Flxpoint, then re-run.
- Wrong location — Verify the numeric Location ID matches the items being fulfilled.
-
No customer email — Set Notify Customer to
true(value or rule) in the template. - Mixed-location orders — Only lines for your Location ID post in the current run; others retry next run.
- API rate limits — Stagger runs or reduce batch size if available.
- Required: Tracking Number mapping and a valid Location ID.
- In-Store/POS: Use Channel Shipping Text mapping and consider posting Closed to mirror your POS behavior.
- Scope: Sync Orders pushes fulfillments/status; it does not re-price or re-publish products.
Troubleshooting Flashcards
Product not publishing
Publish ListingItem exists but isn’t visible in the Shopify storefront.
- Product status is set to Draft or not available to the channel.
- Missing required fields, images, or invalid handles.
Fix
- Ensure status = Active and the product is available to the intended sales channel.
- Provide title, description, at least one image, and a valid URL handle.
- Re-send the publish job and confirm in the Products list.
Advanced image duplication logic
ImagesShopify rejects or deduplicates images unexpectedly.
- Duplicate URLs or identical image hashes are detected.
- Variant-level vs product-level image mismatch.
Tips
- Use unique, stable HTTPS URLs; avoid reusing the same CDN link for multiple images.
- Attach variant-specific images at the variant level; general assets at the product level.
- Remove exact duplicates; ensure dimensions ≥ 1000px on the largest side.
Compare-at lower than price
PricingValidation error: compare_at_price must be > price.
- “Price” and “Compare at price” fields inverted or rounded down.
Fix
- Ensure compare_at_price > price for discounts to render properly.
- Adjust rounding rules and minimums to avoid inversions.
- Re-send price update and verify on the PDP.
Publication / Channel ID issues
Sales ChannelsWrong or missing publication/channel ID blocks availability.
- Product exists but not available to the intended channel/app.
- Multiple channels with different publication IDs.
Fix
- Verify the correct publication/channel ID from your Shopify store.
- Map that exact ID in the publish step; re-send availability for the target channel.
- If using multiple channels, ensure each has explicit availability set.
Variants rejected
VariantsOption values or SKUs collide across variants.
- Duplicate SKUs or missing option names (e.g., Size/Color).
- Variant requires barcode/SKU fields per policy.
Fix
- Provide consistent option names (e.g., Option1=Color, Option2=Size).
- Ensure unique SKUs per variant; add barcode if required.
- Recreate invalid variants rather than patching broken ones when needed.
Inventory not updating
InventoryStock levels remain unchanged in Shopify.
- Wrong location or tracking disabled at variant level.
- Multiple jobs/sources competing over qty.
Fix
- Confirm inventory location ID and that “Track quantity” is enabled on variants.
- Ensure one system “owns” qty updates; avoid duplicates.
- Re-send inventory for the correct location/variant IDs.
Price not updating
PricingAPI response OK but PDP shows old price.
- Rules/rounding overrides or app conflicts.
- Updating the wrong variant ID or currency miss.
Fix
- Target the correct variant_id and currency.
- Check price rules/discount apps that rewrite prices after updates.
- Clear caches or refresh the PDP; validate in Admin first.
Order not importing
OrdersNew orders aren’t appearing in the workflow.
- Webhook not installed or paused; filter excludes orders.
- Financial/fulfillment status not matching your criteria.
Tips
- Confirm order webhooks/app is active and subscribed to orders/create.
- Remove overly strict filters (e.g., only “paid” if you also need “authorized”).
- Test with a fresh order; check logs for delivery status.
Fulfillment/tracking rejected
FulfillmentUpdate fails or duplicated fulfills are blocked.
- Invalid tracking URL/carrier or fulfillments out of order.
- Trying to re-fulfill a fully shipped order.
Fix
- Use supported carriers or set custom tracking URL when needed.
- Fulfill line items once; update tracking instead of re-creating fulfillments.
- Handle partials correctly (one fulfillment per shipment).
Handle/SEO conflicts
ContentDuplicate handles or invalid characters block publishing.
- URL handle already taken by another resource.
- Special characters/length issues in titles or handles.
Fix
- Generate unique handles (slugified title + suffix if needed).
- Remove unsupported characters; keep length reasonable.
- Re-send product and confirm the final handle in Admin.
App/metafield dependencies
AppsPublishing depends on required metafields/apps.
- Missing metafields required by themes or apps.
- App-enforced validations failing silently.
Tips
- Define required metafields (namespace/key) before publish.
- Check theme/app docs for mandatory fields/validation.
- Re-send with those fields populated; verify via GraphQL Admin API if needed.
Throttling / timeouts
APILarge batches hit rate limits or timeouts.
- GraphQL/REST limits exceeded; partial failure.
- Long-running image uploads stall batches.
Tips
- Batch by brand/category; respect leaky-bucket limits.
- Retry with backoff; monitor API cost (GraphQL) and headers (REST).
- Upload images first; then attach to products/variants.