Getting Started
Interface Basics
Printers and Scales
Shipping
Order Processing
Order Allocation
Order Processing Loop
Packing Solutions
Backorders
Ready to Ship
"Unable to Process" Order status
Address Validation and Classification
Packaging Features
Orders
Custom Fields for Orders
Reference Numbers
Other Shipping Options
Packing Instructions
Shipping Accounts
External Shipping Methods
Third Party Billing
Manifest Couriers
Packing Slip Design
Service Levels and Target Ship Dates
Outbound SSCC Barcodes
International Shipping
Tracking Numbers for Offline Shipments
Serial Number Tracking
Custom Fields for Shipments
Receiving
Catalog
Bill of Materials/Work Orders
Bill of Materials
Bill of Materials - Quantity-types
Work Orders
Import Bill of Materials
Virtual Inventory
Regulations
Products
Product Attributes
Lots/Expirations Tracking
Product Velocity
Import Products
Operations
Warehouse
Picking Classes
Picking Batches
Bulk Fulfill Orders
Put-Aways
Manifests (Loading)
License Plates
Time Tracking for Administrators
Time Tracking for Staff
Relocations
Import Locations, Lots and Inventory
Rating
Rate Shopping
Rating Maps
Rate Groups and Plans
Fee Schedules and Adjustments
Virtual Shipping Methods
System
Configuration
Merchants and Brands
Warehouses
User Management
User Roles
User Groups
Login via Badge
Protected Customer Data
Enumerations
Technical Contact
Integrations
Shopify
Integrations Overview
Amazon Merchant Fulfillment
Amazon Selling Partner
CartRover
EasyPost
eHub
External Shipping Method API
Freight Club
Magento 1 / OpenMage
Merchant API Users and Roles
SPS Commerce
ShipStream Plugin Fostering Program
Webhooks
Global Integrations
Magento 2 / Adobe Commerce
WooCommerce
UPS
Scripting
Scripting Basics
Before Create Order Scripts
Preprocess Packing Solution Scripts
Ready to Ship Time Scripts
Picking Class Shipment Matching Scripts
FAQ
How-To: FedEx Production Key Certification
How-To: Brand-Specific Shipping Account
Pattern and Replacement RegEx
ShipStream's Subprocessors
ISO Alpha-2 Country Codes
Printer Troubleshooting
ShipStream Flow
Release Notes
ShipStream Releases
Version 2025.4
Version 2025.3
Version 2025.2
Version 2025.1
Applicable Quantity Migration Guide
Version 2025.0
Revamped Delivery Processing
Version 2024.6
Version 2024.5
Version 2024.4
Version 2024.3
Version 2024.2
Version 2024.1
Version 2024.0
Version 2023.2
Version 2023.1
Version 2023.0
Package Tracking API Migration Guide (2023.0)
Version 2022.2
Version 2022.1
Version 2022.0
Version 2021.6
Version 2021.5
Version 2021.4
Version 2021.3
Version 2021.2
Version 2021.1
Version 2021.0
Version 2020.2
Version 2020.1
Version 2020.0
Version 2019.9
Version 2019.8.1
Version 2019.8
Version 2019.7
Version 2019.6
Version 2019.5
Device Hub Client Updates
Table of Contents
- All Categories
- Integrations
- Shopify
- Shopify Public and Custom Apps
Shopify Public and Custom Apps
Updated
by Colin
ShipStream's Shopify integration supports authentication both with and without OAuth. OAuth is an authentication workflow whereby the user can authorize an application by approving an app as an authenticated Shopify user and without sharing their login credentials versus directly copying and pasting an API key or access token.
Which should I choose?
Please see Types of apps for a more detailed description of the differences between the types of Shopify apps and the capabilities and requirements.
Public apps are best for 3PLs who want to offer an app to their customers on the Shopify App Store, but for merchants that have no need for a public Shopify app, it is recommended to use a Custom app. Public apps require the "Use OAuth" setting in ShipStream to be Yes and approval from Shopify and generally carry a significant burden for both initial setup and maintenance.
Custom apps do not require Shopify approval and should have "No" selected for "Use OAuth" unless you are installing it with a "Single-merchant install link".
Custom App Setup (Not using OAuth)
If you do not require a Public app, you can add a Subscription for the Shopify plugin in ShipStream and simply obtain an Admin API Access Token and paste this into the Subscription's Plugin Configuration section.

Obtaining a Custom App Access Token
To obtain a custom app access token you will be creating a "Custom app" and then installing the app in your store to generate an "Access token".
- Go to your Shopify store's admin panel and click Settings > Apps and sales channels and then Develop apps.

- Click Enable custom app development and read the terms carefully and accept to continue.
- Click Create an app to create your custom app for use with ShipStream and provide an App name (e.g. "ShipStream Custom") and choose the primary contact.
- Set all of the appropriate permissions for the app by clicking "Configure Admin API scopes".

The permissions required by the Shopify Plugin are:
- Assigned fulfillment orders: Read and write
- Fulfillment services: Read and write
- Inventory: Read and write
- Locations: Read and write
- Orders: Read and write
- Products: Read access
- Shipping: Read and write
The Storefront API access is not needed and can be left unconfigured.
- After clicking Save, the API Key and API Secret key will be generated by Shopify but not the Access Token yet. Go to the API credentials tab and click Install app and confirm.

- After confirming, the Admin API access token will be generated. Click Reveal token once to reveal the token and copy it to your clipboard.
- Paste this access token (C) into the ShipStream "Custom App Access Token" field on the Subscription page in ShipStream and copy the API secret key (D) into the "Custom App Secret Key" field in ShipStream.

Public App Setup (Using OAuth)
To create a Public app you must first sign up as a Shopify Partner for your company and log in.
- In your Shopify Partners dashboard click Apps and then Create app.
- Click Create app manually and provide your App name.
- In the ShipStream configuration under System > Configuration > General > Integrations > Shopify Plugin, choose Use OAuth: Yes and copy and paste the Client ID and Client Secret from the Shopify Client credentials page and click Save Config.

- In Shopify, while on the page for your new app in the Shopify Partners site, click App setup and scroll to URLs. Copy and paste the urls from the ShipStream configuration pictured above into the App URL and Allowed redirection URL(s) fields in the Shopify Partners site and click Save.
- On the Shoipify Partners App setup page, scroll down to Protected customer data access and click Request accessand submit the form to request access to protected customer data which is required for "Store management" reasons (to create shipping labels with the customer's name and address - and for international shipments the email and phone may be required).
Your Shopify app must be approved by Shopify before it can be used for more than one store so be sure to account for 1-2 weeks for the approval to be completed.
Once approved, your Shopify users will be able to connect their stores by visiting the app listing to install your app, or by clicking the Connect button on ShipStream's Edit Subscription page.