Flxpoint Help Center
All DocsContact support

Shopify as a Channel

June 26, 2026

Summary

Shopify connects to Flxpoint via OAuth only — no API keys or tokens — and supports Import Listings, Sync & Link Listings, Publish Listings, Get Orders, and Sync Orders. Always connect with your .myshopify.com URL (not your custom domain) and set a valid Location ID, which Sync & Link, Publish, and Sync Orders all require.

Import Listings
Pulls existing Shopify products and variants into Flxpoint so you can manage them centrally
Sync & Link Listings
Links Shopify products to your catalog and keeps price and quantity in sync at the chosen Location ID
Publish Listings
Creates or updates full Shopify products and variants from your Flxpoint listing data
Get Orders
Imports Shopify orders into Flxpoint with control over statuses, filters and the order reference used
Sync Orders
Pushes shipment tracking, carrier and status back to Shopify as fulfillments

In Sales Channels, click +, choose Shopify, name the channel and select the processes you need. On Connect to Your Shopify Store, enter your .myshopify.com Store URL and click Continue / Authorize to approve the app on Shopify — you return to Flxpoint marked Connected.

Store URL (.myshopify.com)Required
Your full .myshopify.com store URL (e.g. https://your-store-name.myshopify.com) — not your custom domain. This is where the OAuth flow sends you to approve the app.
Find it in Shopify Admin → Settings → Domains.
Authorize app (OAuth)Required
Click Continue / Authorize to open Shopify's approval screen, log in if prompted, and approve the requested permissions. The store owner or a staff member with app-install permission must approve.
OAuth only — Flxpoint stores the token, so no API keys or tokens are entered by hand.
Location IDSetting
The Shopify inventory location Flxpoint reads and writes for this integration. Required for Sync & Link Listings, Publish Listings and Sync Orders — it must match a valid Shopify location or quantities and fulfillments will not post.
Find the numeric ID under Shopify Admin → Settings → Locations, then set it per integration in Configure Settings.
OAuth only — no API keys or tokens. Seeing a permissions error? You likely don't have rights to install apps — ask the store owner to approve, or request staff access with app-install permission. Nothing happens after Authorize? Unblock pop-ups and confirm you're approving the correct store if you manage multiple shops.

Connect with your .myshopify.com URL — not your custom domain

Shopify OAuth requires the .myshopify.com subdomain (e.g. https://your-store-name.myshopify.com). Entering your branded/custom domain makes authentication fail. Find it in Shopify Admin → Settings → Domains.

Location ID is required — keep it current or updates fail silently

Sync & Link Listings, Publish Listings and Sync Orders all require a valid Location ID. If you add or change a location in Shopify, update the Location ID in every Flxpoint integration that uses it — otherwise orders stop importing and quantity updates post to the wrong warehouse, with no error shown.

Publish Listings overwrites Shopify content

Running Publish on a linked listing overwrites whatever is on Shopify — including edits made directly on the storefront. Set Title to Don't Map on update-only templates to preserve Shopify-side title edits. Sync & Link Listings only touches price and quantity and never changes content.

Shopify enforces hard variant limits

Maximum 3 option types and 100 variants per product. Exceeding either causes variant creation to fail on Publish with no partial save. Restructure products that exceed these limits before publishing.


Shopify FieldMaps To – Notes
externalListingId (Parent/Variant)externalListingId. Shopify's internal ID; identifies the parent listing and each variant.
SKU (Handle)→ parent SKU (the Shopify product handle).
Variant SKUSKU. Your unique per-variant identifier and a good choice for Master SKU. Variants without a SKU are skipped on import.
UPC (Barcode)UPC. Also usable as the Master SKU.
TitleTitle. Parent and variant names (e.g. Blue T-Shirt – Medium).
DescriptionDescription.
ManufacturerManufacturer (brand).
ImagesImages. Product and variant images.
Price / MSRP / SalePricePrice / MSRP / SalePrice.
QuantityQuantity. Available stock per variant.
OptionsOptions (e.g. Medium, Blue).
Weight / UnitWeight / Weight Unit.
Attributes (Tags)Attributes (Shopify tags).
Category 1/2/3 (Collections)Categories 1–3.
customField / customFields (Metafields)customField / customFields. Product and variant metafields.

Import options (Product & Listing Management)

This required setting controls what each run is allowed to create and update. All four options are available on Shopify.

OptionWhat it doesWhen to use it
Change feed
(recommended)
Creates new products and listings and updates existing ones. Each run only fetches what changed on Shopify since the last successful run, so runs stay fast.Your everyday default.
New products and listingsCreates new products and new listings only. Existing Flxpoint records are left untouched.When you have curated data in Flxpoint that Shopify should not overwrite.
New listingsCreates new listings only. No products are created in your catalog, and existing records are not updated.When your catalog is built from your sources and Shopify should only contribute listings.
Catalog refresh
(not recommended)
Creates new products and listings and updates all existing ones, re-reading your entire Shopify catalog.One-off recovery after a bulk edit on the Shopify side. Expect a long-running job.
Pricing and quantity are not updated by Import Listings. Price and quantity come in when a listing is first created, but no option updates them afterward, including Catalog refresh. They are aggregate fields owned by your Pricing & Quantity Strategies, which would overwrite any imported value on the next sync. Titles, descriptions, brands, categories, images and attributes do update on the options that update existing records.
Upgrading from the previous options? Existing configurations were migrated for you. Create and update products & listings now runs as Change feed, and Create products & listings only now runs as New products and listings. Create new products only was retired and now runs as Change feed, which also updates existing records, so switch to New products and listings if you need existing records left alone.
Flxpoint FieldShopify Field – Notes
Listing Variant → QuantityQuantity (required). Inventory updates post to the selected Location ID.
Listing Variant → List PricePrice (recommended). Use rules for markups or rounding.
Listing Variant → SKUSKU (recommended). Primary match key for Linking Priority — start with SKU ↔ SKU.
Track InventoryTrack Inventory (optional). Set Don't Map to preserve Shopify's existing tracking state; true/false to force it. Quantity still syncs regardless via the GraphQL API.
Flxpoint FieldShopify Field – Notes
Listing Parent → TitleTitle. Required when creating new products; set Don't Map on update-only templates to preserve Shopify-side title edits. Enable Truncate Title to 255 for long titles.
Listing Parent → DescriptionDescription (text/HTML).
Listing Variant → SKUVariant SKU (required). Uniquely identifies the variant to create or update.
Listing Variant → List PriceVariant Price. Primary sell price in Shopify.
Listing Variant → MSRPCompare at Price. Should be ≥ Price.
Listing Parent → AttributesTags. Sent comma-separated.
Listing Parent → Category 1Category. Use a Shopify taxonomy GID (e.g. gid://shopify/TaxonomyCategory/aa-1) when applicable.
Images (Parent/Variant)Images. Enable Advanced Image Duplication Logic to prevent repeated uploads.
MetafieldscustomField / customFields. Select the Shopify metafield type (text, number, boolean, json, rich_text_field, date); Flxpoint validates the value before sending and shows Valid/Invalid per row.
Shopify PropertyMaps To – Notes
order.nameOrder Reference Number. Looks like #1001 — matches the label seen in the Shopify UI.
order.order_numberOrder Reference Number. Numeric only (1001); ideal when downstream systems expect digits.
order.id (Shopify orderId)Order Reference Number. GID or numeric ID; best for cross-system joins and shipment lookups.
line_items.quantity→ line Quantity. Map from line_items.quantity; using fulfillable quantity can cause orders to import On Hold. In filters, select unfulfilled/partial and include the financial statuses you need (e.g. paid, authorized).
Flxpoint FieldShopify Field – Notes
Shipment → Tracking NumberTracking Number (required). Primary identifier for the fulfillment. If unmapped, the sync fails with Missing required field 'Tracking Number' for fulfillment sync.
Shipment → CarrierTracking Company (recommended). Carrier name (UPS, USPS, FedEx, etc.).
Shipment → Tracking URLTracking URL (optional). Deep link to carrier tracking.
Notify CustomerNotify Customer (optional). Set to true to email customers when the fulfillment posts.
Location (integration)Location ID (required via config). Fulfillments post to this Shopify location; mixed-location lines retry on the next run.

All jobs stopped silently after an app reinstall or token expiry
When the Shopify app is uninstalled/reinstalled or the OAuth token expires, every integration stops running with no alert (Get Orders may log Error in configuring integration). Open the channel's connection settings and reconnect via OAuth — this restores the token without affecting your existing integration configs. If all scheduled jobs stopped at the same time, this is the most likely cause.
Orders stopped importing after a Shopify location change
Shopify ties order line items to inventory locations, so changing or adding a location makes the Location ID in Get Orders stale. Go to the channel's Get Orders settings, update the Location ID to match the new Shopify location, and re-run. This is one of the most common causes of sudden order-import stoppage with no error shown.
Quantity shows as synced in Flxpoint but is wrong in Shopify
The sync ran but posted inventory to the wrong location. Confirm the Location ID in Sync & Link Listings matches the correct warehouse (Shopify Admin → Settings → Locations). Also confirm Track quantity is enabled on the affected variants — if tracking is off, Shopify accepts the update but does not apply it to the storefront.
Duplicate products created in Shopify after Publish
Two causes: (1) SKU mismatch — the Flxpoint SKU doesn't exactly match the Shopify Variant SKU, so Flxpoint created a new product instead of updating the existing one; fix the SKU, first delist the listings and then delete the duplicates, then republish. (2) Overlapping sources — multiple sources sharing the same SKU for different variants publishing to one product; assign unique SKU prefixes per source so each variant identifier is distinct.
Image Duplication Error
This error appears when images haven't been fetched into a Flxpoint-supported image URL and are still showing as raw images from the source. To publish to Shopify, all images must first be fetched into a Flxpoint-supported URL (these start with https://assets.flxpoint.com). If you see this error, contact Flxpoint support — a backend job (not available in the Flxpoint UI) is required to ensure all images are fetched.
Broken Link Error
Typically occurs when a product is modified or deleted directly in Shopify and left abandoned in Flxpoint, disrupting the sync connection Flxpoint relies on — always delist and then delete listings in Flxpoint to avoid this. Another cause is a Parent/Child relationship mismatch between Flxpoint and Shopify, which happens when the variant structure in Shopify no longer matches what Flxpoint originally pushed or expected. Common causes: a variant is manually moved from one product to another in Shopify Admin, or a variant is deleted and recreated directly in Shopify.
"Compare at Price" needs to be higher than "Price"
This error shows when the list price and Compare at Price (MSRP) are equal, or when the list price is higher than the Compare at Price — Shopify won't accept either case. To avoid this, set up a pricing rule to ensure Compare at Price is always higher than Price.
Publish fails — "Title can't be blank"
Title is unmapped or set to Don't Map in a template used to create new products, and Shopify requires a Title on every product-create request. Map Title for templates that create products. For update-only templates, leaving Title as Don't Map is correct and preserves Shopify-side edits. Re-run Publish after correcting the mapping.
Orders arriving On Hold and not routing to a source
Open the order in Flxpoint and read the status message. Most common causes: (1) Shipping method not mapped — the Shopify shipping method text doesn't match any Flxpoint shipping policy; add the exact text under Channels → Shopify → Shipping/Carrier Mappings. (2) SKU mismatch — the order SKU matches no Flxpoint product. (3) No eligible source — no source has the item in stock or in the routing configuration.

What is the difference between Publish Listings and Sync & Link Listings?
Publish Listings creates or updates the full product record in Shopify — title, description, images, price, quantity, metafields. Sync & Link Listings updates price and quantity only on already-linked listings and never touches content. Run Publish first to create/update content, then let Sync keep stock and pricing accurate on a schedule. Running only Sync on new products does nothing because there is no linked listing yet.
How does Flxpoint map product categories to Shopify?
By default Flxpoint maps Category 1 to Shopify's Product Type field, which works directly if your store uses Smart Collections driven by product type. If you use tag-based or manual collections, map Flxpoint's Attributes to Shopify Tags and drive collections from tags. For Shopify's structured taxonomy, use the GID format (e.g. gid://shopify/TaxonomyCategory/aa-1) in the Category mapping row.
Why are Shopify orders showing as unpaid in Flxpoint?
The Get Orders financial-status filter does not include authorized. Shopify marks orders as "authorized" between placement and payment capture — if your filter only includes paid, those orders arrive before payment is confirmed and show as unpaid. Add authorized to the financial-status filter in Get Orders if you process orders before payment capture completes.
Can I connect multiple Shopify stores?
Yes — each store is a separate channel in Flxpoint with its own OAuth connection, Location ID, integration settings and mapping templates. Connect each store independently and use clear naming to avoid confusion (e.g. Shopify – Brand A – US vs Shopify – Brand B – EU). Each channel's integrations run completely independently.
How do I map a Flxpoint field to a Shopify metafield?
In your Publish Listings template add a row: on the left select the Flxpoint field; on the right enter the metafield key as namespace.key (e.g. custom.material) and select the correct metafield type (text, number, boolean, JSON, rich text, date). The definition must already exist in Shopify before the sync runs — create it at Shopify Admin → Settings → Custom Data. The template shows a Valid/Invalid status per metafield row to catch type mismatches before publishing.
Why did Import Listings bring products in without variants?
Shopify variants without a SKU are skipped during import. In Shopify Admin use the bulk variant editor to filter for variants without a SKU, add SKUs to all of them, then re-run Import Listings. Variants will be created correctly on the next run.
© 2026 Flxpoint. All rights reserved.