Help CenterGitHub
Shopify
Integration Guide

Shopify + AtoShip

Import orders from your Shopify store into atoship, buy discounted USPS / UPS / FedEx labels, and push tracking + fulfillment back — all via secure OAuth, no plugin to install.

How it works

Unlike WooCommerce, Shopify uses a native OAuth app model — there's no plugin to install. You connect your store from the atoship dashboard, authorize access on Shopify, and webhooks handle the rest in real time.

1

Connect via OAuth

Authorize atoship on your Shopify admin

2

Orders sync automatically

New orders arrive via webhooks + scheduled sync

3

Buy label, order fulfilled

Tracking + fulfillment pushed back to Shopify

Connecting your store

Step 1 — Start the connection

In your atoship dashboard, go to Channels → Add Channel → Shopify. Enter your store domain (e.g. my-store.myshopify.com or just my-store). Click Connect.

Connect Shopify Store dialog in atoship

You can enter either the full *.myshopify.com domain or just the store name — atoship normalizes it automatically.

Step 2 — Authorize on Shopify

You'll be redirected to your Shopify admin. Review the permissions atoship needs (orders, products, fulfillment, inventory, shipping) and click Install app.

atoship requests read/write access for orders, products, fulfillments, inventory, and shipping. Your Shopify password is never stored — only a secure, revocable access token.

Step 3 — Verify the connection

After authorizing, you're redirected back to the atoship dashboard. Your store should appear under Channels → Shopify with status Active. Webhooks are registered automatically in the background — new orders will start flowing in immediately.

On the Shopify side, you'll see atoship listed under Apps in your store's admin sidebar. Orders will begin syncing immediately.

Buying labels from Shopify

Once connected, you can purchase shipping labels directly from your Shopify admin — no need to switch to the atoship dashboard. There are two entry points:

From the orders list (bulk)

Select one or more orders, click the menu, and choose atoship - smart label under Apps. This takes you to atoship with those orders pre-selected — ready to compare rates and buy labels in batch.

Shopify orders list showing atoship bulk action under Apps menu

From a single order

Open any order, click More actions, and select atoship - Smart Label. You'll be taken directly to atoship with the order details pre-filled — compare carrier rates and print a label in seconds.

Shopify order detail showing atoship action in More actions menu

Sync settings

Click on your connected store, then open the Settings tab. Here's what each option does:

Order Sync

  • Auto Sync — Toggle automatic order imports on/off.
  • Sync Frequency — How often to pull orders: 1, 2, 4, or 8 hours. Webhooks provide real-time updates between scheduled syncs.
  • Sync Window — How far back to look for orders: 1 week, 2 weeks, or 1 month.

Order Status Filters

  • Fulfillment Status — Which orders to import by fulfillment state. Default: unfulfilled and partially fulfilled.
  • Payment Status — Which orders to import by payment state. Default: authorized, paid, and partially refunded.
  • Exclude Countries — Skip orders shipping to specific countries.
  • Exclude Tags — Skip orders with certain Shopify tags (e.g. hold, do-not-ship).

Fulfillment & Tracking

  • Update Order Status — When to mark the Shopify order as fulfilled: on label purchase, X hours after, daily at a set time, or never.
  • Deactivate Tracking Email — Prevents Shopify from sending its default shipping confirmation email. Useful if you handle notifications yourself.
  • Auto Sync Address — Automatically pushes address corrections from atoship back to Shopify.

Product Sync

  • Enable Product Sync — Imports your Shopify product catalog (including variants, SKUs, and inventory levels) into atoship.
  • Collections — Both custom and smart collections are synced automatically when product sync is enabled.
  • Fallback Weight — Default weight for products without weight data (used for rate calculation).
  • Fallback Dimensions — Default package dimensions for products without dimension data.

What gets synced

Shopify → atoship

  • Order number, date, totals
  • Billing & shipping addresses
  • Line items with SKU, quantity, weight
  • Order tags & notes
  • Customer name & email
  • Products, variants & inventory levels
  • Custom & smart collections
  • Financial & fulfillment status

atoship → Shopify

  • Tracking number & carrier
  • Tracking URL
  • Fulfillment status updates
  • Shipping confirmation (triggers Shopify email)
  • Delivery & exception notifications

Fulfillment uses Shopify's modern FulfillmentOrder API. When a label is created in atoship, a fulfillment with tracking info is pushed to Shopify, which can automatically notify the customer.

Real-time webhooks

atoship automatically registers webhooks on your Shopify store during connection. These provide real-time updates between scheduled syncs — you don't need to configure anything manually.

orders/createNew order placed
orders/updatedOrder modified
orders/fulfilledOrder fulfilled externally
orders/cancelledOrder cancelled
products/createNew product added
products/updateProduct changed
products/deleteProduct removed
app/uninstalledApp removed from store

All webhooks are verified with HMAC-SHA256 signatures. If you uninstall the app from Shopify, the app/uninstalled webhook automatically cleans up the connection on the atoship side.

Disconnecting

You can disconnect from either side:

  • From atoship: Go to Channels, find your Shopify store, and click Delete Store. Webhooks on the Shopify side are automatically deregistered.
  • From Shopify: Go to your Shopify admin → Settings → Apps, find atoship, and click Uninstall. The app/uninstalled webhook notifies atoship to clean up the connection.

Disconnecting does not delete any orders, labels, or tracking data already in atoship. It only stops future syncing.

Troubleshooting

OAuth redirect fails or times out

Make sure you're entering the correct store domain. The OAuth state token expires after 10 minutes — if you waited too long on the consent screen, go back to Channels and try again.

Store shows "already connected"

Each Shopify store can only be connected to one atoship organization. If you previously connected this store under a different account, disconnect it there first, then reconnect from your current account.

Orders not syncing

Check your sync settings — orders are filtered by fulfillment status (default: unfulfilled + partial) and payment status (default: authorized + paid + partially refunded). Orders that don't match these filters won't be imported. You can also trigger a manual sync from the store settings page.

Tracking not appearing on Shopify orders

Check the "Update Order Status" setting. If set to "never", atoship won't push fulfillments back. Change it to "on label purchase" for immediate tracking updates. Also verify that the order has open fulfillment orders on the Shopify side.

Products not syncing

Product sync is a separate toggle — make sure it's enabled in your store settings. Products are matched by existing links, then SKU, then UPC. If no match is found, a new product is created with an auto-generated SKU.

Customers getting duplicate shipping emails

When atoship fulfills an order on Shopify, Shopify sends its standard shipping confirmation email. If you also send notifications from atoship, toggle on Deactivate Tracking Email in your store settings to suppress Shopify's email.

Requirements

  • Any Shopify plan (Basic, Shopify, Advanced, or Plus)
  • Store owner or staff account with app installation permissions
  • No plugin or code changes required on your store
At a glance
PlatformShopify (all plans)
AuthOAuth 2.0
CarriersUSPS, UPS, FedEx
SyncWebhooks + scheduled
Setup time~2 minutes
Plugin required
No
Ready to connect?
No plugin needed — just authorize from your dashboard.
atoship © 2026