Shopify


How To Connect

Method 1: OAuth2 - Recommended

This connection will go over how to install the Flxpoint app via the OAuth2 version. This will automatically set the proper permissions you will need for Flxpoint and your Shopify store to interact.

Installing the App

  1. Click on Customize Your Store towards the top right corner
  2. Type in "Flxpoint"
  3. Click on Flxpoint App
  4. "Add app"
  5. After being redirected to a new page that shows permissions, click "Add app" once more
  6. It'll then log into Flxpoint for you, or may ask you to login, and then authorize the app connection
    1. This is indicated by the green pop-up box that states, "Your new Shopify access token has been granted."

The green pop-up box indicates that the connection is successful, and you can now proceed to setting up the OAuth2 process.

Connection Issues?
You can always go back to your "Apps" section in Shopify and "Delete" the Flxpoint app to redo this process to re-establish a connection if your Shopify access token is not granted.

OAuth2 Setup

OAuth2

  1. Go back to your "Apps" in Shopify

  2. Click on the Flxpoint app

  3. Once the Flxpoint app loads within Shopify, you can either click on Sources or Channels to set this up.

    1. In the example above, it will cover how to do it via Channels. If you need to set it up as a Source, please see our article on Setting Shopify as a Source.
  4. After being directed to the Channels dashboard, you will want to either setup a new connection by clicking on the blue and white + button, or by Configuring one that you've already setup.

  5. Click on Configure

  6. Then click Start Creating Integrations

  7. Choose your Integration type (Shopify)

  8. Then choose your Connection

    1. If it doesn't give you the OAuth2 automatically, you can "View" the connection, and then click on the drop down box on Connection Type to select the OAuth2 type.

To complete the setup process for the connection, be sure to choose your Location, Save and Proceed, and then Define your Mapping Template.

You will then want to repeat the process for additional fields for that channel setup (ie. Sync Listings, Get Orders, Publish Orders, etc.)


Method 2: Manually Adding Required Fields

This connection will go over how to install and setup the app manually, rather than just installing it through the OAuth2 version (which automatically sets those permissions for you via OAuth2).

If you are not doing the OAuth2 version, Flxpoint will require you to set up a custom app on your Shopify store.

To create a custom app:

  • Click Settings in the bottom left corner of the screen
  • Select Apps and Sales Channels
  • Click Develop Apps for Your Store

Once on the Custom Apps page, you'll need to click the Create an app button and name the new app "Flxpoint".

The next screen after the app is created will show two different options to show the different types of operations and allows you to set permissions for what our app is allowed to do.

To set them up initially, click the "Configure Admin API Scopes" option.

We suggest you change the following admin API permissions (see below for how Flxpoint will use them), which are all set to "No access" by default:

  • "Customers" set to "Read and write"
  • "Fulfillment services" set to "Read access" (note, if you're also using Shopify as a sales channel, this will need to be "Read and write")
  • "Inventory" set to "Read access" (note, if you're also using Shopify as a sales channel, this will need to be "Read and write")
  • "Locations" set to "Read access"
  • "Orders" set to "Read and write"
  • "Products" set to "Read access" (note, if you're also using Shopify as a sales channel, this will need to be "Read and write")

By granting this access, Flxpoint will use it as follows:

  • Get Inventory [Primary]: read_locations, read_products, read_inventory
  • Send FR/FOs: write_orders, write_draft_orders (if sending draft orders), read_customers, write_customers
  • Get Shipments: read_orders, read_fulfillments

After these permissions are granted, you will go to the top right and click Install App

Access Token Viewable Once
When your Shopify credentials are generated the access token will only be viewable once. If you mistakenly exit the page you will need to delete the app and reinstall to generate a new access token. When setting up your connection in Flxpoint:

Shopify API Key = Flxpoint API Key

Shopify API Access Token = Flxpoint Password

Location IDs
Once your Shopify connection is configured with your URL and Tokens, you can save these credentials and then use "View Locations" button inside of Flxpoint to identify your locations.


Supported Operations

Sync Listings SUPPORTED

Publish Listings SUPPORTED

Get Orders SUPPORTED

Sync Orders SUPPORTED

Link Listings SUPPORTED


Listing Operations

Rate Limits
Depending on your Shopify plan, you may need to deal with rate limits for the API. Rate limits put a cap on how many calls can be sent and received from an individual Shopify store over any period of time.

To learn more about Shopify Rate Limits please click here.

Link Listings

SUPPORTED

Warning
Flxpoint will not link to Shopify products that are hidden, paused or archived.

The Link Listings operation allows Flxpoint to connect Flxpoint listings to your existing Shopify products, as long as the UPC or SKU matches between the two systems. This both preserves your existing product data and allows updates without explicitly publishing listings.

Limitations:
- Shopify allows for the linking on Variant products. Parent products are not eligible for linking.
- Linking to "Draft" products will show as a "hidden" status in Flxpoint. "Draft" products that are in this state can not be unhidden by Flxpoint. The product in question will need to be changed from "Draft" on Shopify to become unhidden.


Sync Listings

SUPPORTED

Key Points:

  • Linked products can be deleted from within shopify
  • To enable inventory tracking you must select TRUE in mapping template and FALSE to disable tracking. If this field is left unmapped, Flxpoint will automatically track inventory
  • Variant attributes and custom fields can be updated by running the sync listings integration
  • If a product is marked hidden, it will still show active in Shopify admin. It is unchecked for ‘Online Store’. This can be verified by clicking on 3 vertical dots next to Publishing on product information page.

This will sync any changes that have been made to your listing variants since the last time a sync was performed to your Shopify channel.

Variant Statuses
Shopify allows both Parent and Variant products to be created via their API.

However, it is extremely important to note that in a situation where a single parent product has two variants. i.e. "Large Red Shirt" and "Medium Red Shirt" Shopify will not allow one of the two variants to be hidden or delisted without hiding or delisting all of the variants.

We recommend using Shopify's built in tools to mark individual variant products as hidden when a stock quantity gets too low. You can find more information about that tool here.

Delisting

SUPPORTED How delisting works with Shopify

Delisting permanently removes the product from your Shopify channel listing, can only be brought back to listed status again after running the sync/publish job is made to run.

Hide

SUPPORTED Hiding the variant for Shopify channel listing

Hiding the variant temporary sets the product to a state where an it appears as Out of stock on your channel, making sure there are no unwanted order for the variant.

Unhide

SUPPORTED Unhiding the variant for Shopify channel listing

Unhiding can only be used for the product variants that are already on hide status to bring the product back live for Shopify sales channel.


Import Listings

SUPPORTED

Key Points:

  • Parent and Variant metafields are imported as custom fields
  • Quantity is imported as an aggregate value for all locations
  • Location selection is not available 
  • Product Dimensions are not available as a default field

Import Listings can import pre-existing Shopify listings into Flxpoint.

For more information on the import listings integration, please see: Import Listings

Manual Integration
The import listings integration cannot be scheduled. You will need to manually run the import listings integration when you want to import listings.

Potential Listings Duplication
Import listings will only link Flxpoint's SKU to Shopify's Barcode and/or SKU.

Mismatched SKUs will result in duplicate listings and products.

Linking to Flxpoint channel listings and product catalog based on ASIN, GTIN, MPN, or UPC is not supported.

Fields That Can Be Imported
Listing Parent
- externalListingId
- sku (e.g. Handle)
- title
- description
- manufacturer
- images
- customField (e.g. product metafields)
- attributes (e.g. convert tags to attributes)
- category1 (e.g. CustomCollection1)
- category2 (e.g. CustomCollection2)
- category3 (e.g. CustomCollection3)

Listing Variant
- externalListingId
- sku
- UPC (e.g. Barcode)
- Title
- price
- msrp (e.g. Compare at price)
- salePrice (e.g. Compare at price)
- quantity
- customFields (e.g. variant Metafields)
- options
- weight unit (default LBS)
- weight
Note: Weight will be converted from grams to pounds if weight is listed as grams on your store.

Listing Management:

  • Applies to listings at the Channel Listings level in Flxpoint.
  • Select from two options: Create Only or Create & Overwrite Existing
  • Create Only: Shopify listings will be imported and linked to existing Flxpoint listings based on SKU. If there is not a SKU match to an existing Flxpoint listing, a new listing will be created.
  • Create & Overwrite Existing: Shopify listings will be imported and linked to existing Flxpoint listings based on SKU. For all SKU matches, the listing data in Flxpoint will be overwritten by the imported Shopify listing data. If there is not a SKU match to an existing Flxpoint listing, a new listing will be created.

Set New Listings to Paused:

  • If enabled, this setting will automatically set all newly imported listings to a Paused status.
  • Pausing newly imported listings allows you space to connect your imported listings to sources before orders flow into Flxpoint. This step is important in ensuring fields, such as pricing and quantity, are accurate.
  • If you choose to enable this setting, you will need to manually unpause the imported listings when you are ready to do so. You can unpause the listings by clicking Actions → Edit → Unpause as shown below:

Example of the Import Listing Notification Log

Import Listings Recent Notifications:

Once the Import Listings job has completed, you can view the results of the job in the Recent Notifications log. The recent notification log will provide a breakdown of how many parent and variant items were created or updated as well as an errors encountered.

You can find the Recent Notifications log by nagivating to the following:

  • Shopify Channel Settings Gear → Integrations → Import Listings → Scroll to the bottom of the integration screen

Publish Listings

SUPPORTED

This will publish any listing variants that have not been previously published, and are queued to publish.

A publish operation can also overwrite existing data on a Shopify store, if a listing is queued to overwrite. This will replace the data on the Shopify store with the data in Flxpoint for a specific product.

Additional Information:

  • Listing attributes are published as "Tags" on a Shopify store

  • Tags can also be published on a product by using comma separated values in the mapping template.

    • "Tag1,Tag2,Tag3,Tag4"
  • Shopify Meta-fields can be used to publish to fields that don't naturally exist on Shopify. Please ensure you have the correct Namespace, Key, and Value or the publish operation will fail to publish the meta-field value.

  • Categories are supported for a single level. The addition of levels must be uploaded as tags

Limitations:
- Shopify will allow the creation of a product with at most 3 options
- Attributes and Custom Field Titles can be at most 30 characters long

-Attributes and Custom Fields must be uploaded as metafields
- If the "Handle" field is not mapped, Shopify defaults the item handle to the Parent product's title.
- If a parent and variant are published and you would like to publish an additional variant for the parent, Shopify will require you to delist the parent/variant and republish them to include the additional variant. Attempting to publish the additional variant will fail if the parent product already exists.

-Maximum Image size is 4472 by 4472 with a file size of 20 megabytes or less

Metafields:

  • Are located and will need to be mapped within your Mapping Templates for parent and variants (option to map within parent, and then further in-depth options in variant view at the very bottom of template).

  • Are associated to the product on a variant, and now parent level; however, Flxpoint does not create the fields for metadata.

  • Flxpoint is only able to associate the data with said field, you would need to manage the fields through Shopify to look into setting it up to be visible on Shopify's end.

    • Shopify Settings > Metafields > Select Product or Variant > Metafields Without a Definition.
  • Note:If there is no field is setup on Shopify's end, they will only be visible if product is viewed through a .json.

For Shopify, Metafield strings must be consistent with the definition's type. Some Metafields have specific definitions that need to be followed in order for it to be validated in Shopify; otherwise, an error will occur.

Examples can include, but are not limited to:

  • Number Metafields
  • Description Metafields
  • Metafields with single line text

Therefore, if you receive a publishing error stating what the Metafield's definition type is, you would need to manage your Metafield data to match that description.

Additional Metafield Information
Metafields have been increased to now support up to 40.

"Attributes to Metafields" will store all attributes as Metafields on the Shopify variant. The Metafield Key will be the attribute name, the namespace will be Flxpoint, and the value_type will be string.

As for Metafield names (ie. Metafield Name 1, Metafield Name 2, etc), these will only be sent to Shopify if the name, value, namespace, and value_type are all populated and are not empty.

Overwrite

SUPPORTED Overwriting the Variant details

Overwrite feature enables you to overwrite any data for already published variant on your Shopify sales channel. i.e. updating Title, Description, categories, MPN, UPC, GTIN, Images.


Order Operations

Shipping Mapping

REQUIRED

This ensures orders are being imported from Shopify and mapped to a central shipping policy in Flxpoint. You will need to provide the shipping text associated with the Shipping Rates currently offered on your Shopify account.

The determine what to populate in your Flxpoint Channel Shipping Text, in Shopify go to Settings > Shipping and Delivery > Manage Rates > Create Shipping Zone > The Custom Rate or Shipping Speed "Rate name" shown here needs to match the Channel Shipping Text exactly in Flxpoint.




In Shopify if an order's shipping is left blank it will display the Shipping Text as "N/A" on the order within Flxpoint.


Get Orders

SUPPORTED

Key Points:

  • We support unique customer shipping methods. However, this must be mapped in the shipping management.
  • Custom Fields for order line items can be imported once configured in the mapping template
  • We support digital items in orders
  • If a SKU is unavailable for an order line item, the order will not be saved

This will get any new orders from Shopify that have not yet been imported into Flxpoint and will send back acknowledgements for those orders if needed. Orders imported here are considered fresh and are then eligible to go through the fulfillment process.

Add Tag to Notes Field:

Supported order statuses:

You are currently able to choose which order status Flxpoint imports from Shopify. Most users default to importing orders in any status. If there is a need to be specific, Unfulfilled and Unshipped are also available.

If the product does not have a SKU, Flxpoint will import the product as N on-Managed with the “Title” of the product as the SKU.

Financial statuses:

You are also able to select an order's "Payment Status" if you would like to or need to filter order imports based on the payment status.

If you use Shopify to manage your internal Inventory, you have the option of fulfilling from it before making an order available to Flxpoint.

Shopify locations has a priority setting, which (if configured to do so) allows you to attempt to fulfill from your internal inventory location first. Only if this location is unable to fulfill the order will Shopify then make that order available for Flxpoint to see and extract via Get Orders.

For more setting up your locations, view this link on Shopify

Flxpoint supports the concept of sending back an order tag to successfully imported orders. You can input any string value <20 characters to tag an order with a desired indicator on your Shopify store.

Limitations:
- It is possible that a "Linked" SKU will import into our system as "Not Managed". In these cases, please unlink the SKU in the listings section and relink it. This happens when the Internal_Id of the product on Shopify changes and has not been updated in our system. Unlinking and then relinking the listing updates this value.
- Flxpoint prompts a user to configure a Location ID for their order imports. This is a required field.
- Flxpoint currently only imports order data once. Changes made to an imported order on Shopify will not update the order inside of Flxpoint.
- Order Items without SKUs will not be imported by Flxpoint.


Sync Orders

SUPPORTED

Key Points:

  • The default value for the "Notify Customer" workflow is FALSE, meaning they will not be notified unless changed to TRUE in the mapping template
  • Partial Shipments are set to "Partially Shipped" and once the complete shipment is sent, the order is set to "Shipped"

Supports passing back shipments and notifying your customer their package has shipped.

Flxpoint currently supports updating tracking information for partial fulfilment.

i.e. We will send the tracking information of a product even if one of three items on an order has been confirmed as shipped.

While this feature is easy to toggle off, the default setting for Shopify in Flxpoint will notify your customer when the tracking information has been synced to your Shopify platform.

Syncing Closed Orders Back to Shopify
There are various scenarios where you may choose to set an order status to Closed within Flxpoint.

If you would like Flxpoint to sync and communicate the Closed Order Status back to Shopify, be sure to enable to the toggle in the Advanced Settings in Step 2 of the Sync Orders integration settings.

Note: This can be applied to orders that have been closed with partial fulfillments and no shipment data.

Enabling Closed Orders to Be Synced


In-Store Orders

SUPPORTED

Enabling the In-Store Order Setting on your Shopify Channel allows you to designate orders as In-Store orders. Once an order has been designated as In-Store, the following occurs:

  • A fulfillment request will auto-generate for the selected source (i.e. your internal warehouse)
  • If you are utilizing the committed stock feature, stock with either be committed or released appropriately
  • Order will then auto-close

The Order History and Variant History tool will report each step outlined above.

Channel Shipping Text Required
To designate an order as an In-Store Order, you must have the appropriate Channel Shipping Text on the order.

We recommend using something clear like In-Store or POS as your Channel Shipping Text.

Whatever text you decide on, be sure to have the text match in the In-Store Order Workflow rule.

Enable the In-Store Order Workflow Toggle

To import In-Store Orders, follow these steps:

  • Enable the In-Store Order Workflow Toggle in the In-Store Settings for your Shopify Channel.
  • Select the Source your POS orders are fulfilled from (i.e. your internal warehouse)
  • Create an In-Store Order Workflow Rule to set the Order Type and Fulfillment Type to POS and In-Store Purchase respectively (Rule format shown below)
  • Click Update to complete


Frequently Asked Questions

Why isn't My Shipment syncing back to my channel?
The most common reason that this happens is due to Shopify not recognizing an item on the shipment we are trying to submit.

Example Scenario:
Product X was ordered on Tuesday → Deleted off of the website on Wednesday → Shipment came in on Thursday,

On Thursday, Flxpoint attempts to sync tracking information back for the ordered product. Shopify will now throw an error saying Product X can not be located.

Resolution: Manually update the tracking information for Product X.