Shopify app documentation
Last updated: August 31, 2026
PrepKingz is a standalone Shopify shipping app. Merchants install via OAuth, then operate in the PrepKingz portal — the app is not embedded in Shopify Admin.
- App URL: https://shipping.prepkingz.ca (
embedded = false) - OAuth callback:
https://shipping.prepkingz.ca/api/shopify/oauth/callback - Webhooks:
https://shipping.prepkingz.ca/api/shopify/webhooks - Fulfillment service callback prefix:
https://shipping.prepkingz.ca/api/shopify/fulfillment-service
Admin API scopes
The production app requests the scopes declared in shopify.app.toml:
read_assigned_fulfillment_ordersread_locationsread_merchant_managed_fulfillment_ordersread_ordersread_productswrite_assigned_fulfillment_orderswrite_fulfillmentswrite_locationswrite_merchant_managed_fulfillment_orders
Label-only (merchant-managed) installs use the merchant-managed fulfillment order scopes. PrepKingz Warehouse fulfillment also uses assigned fulfillment order and location scopes so the portal can register the PrepKingz fulfillment service and warehouse location.
Fulfillment modes
Merchants choose one of two fulfillment preferences:
- Merchant-managed (label-only) — PrepKingz syncs paid unfulfilled orders, prepares carrier rates, and purchases shipping labels. The merchant (or their own staff) handles pick and pack. Tracking is written back to Shopify with
fulfillmentCreateandnotifyCustomer: trueby default. - PrepKingz Warehouse fulfillment service — PrepKingz registers a Shopify fulfillment service under
/api/shopify/fulfillment-service, receives fulfillment-order notifications, and runs pick, pack, and label purchase in the PrepKingz operations desk before pushing tracking to Shopify.
Order sync and tracking
The portal syncs paid, unfulfilled Shopify orders into the PrepKingz queue (Integrations → Shopify). After a label is purchased and tracking exists, PrepKingz calls Shopify fulfillmentCreate with notifyCustomer defaulting to true, so Shopify can mark the order fulfilled and send the merchant's configured customer notification.
PrepKingz does not modify the store theme, checkout, or shopper cookies. All merchant work happens in the PrepKingz portal after OAuth.
Mandatory compliance webhooks
The app subscribes to Shopify mandatory compliance topics at /api/shopify/webhooks:
customers/data_requestcustomers/redactshop/redact
Deliveries are HMAC-verified. Privacy handling is documented in the Privacy policy.
Billing
PrepKingz bills the merchant wallet in CAD. Merchants fund the wallet with Stripe (checkout / top-up). Label purchases debit the PrepKingz wallet ledger. The app does not charge merchants through the Shopify Billing API — there is no Shopify app subscription or usage charge from PrepKingz.
Protected customer data
Shipping contacts (name, address, phone, email where provided on the order) are required to quote carriers and print shipping labels. PrepKingz requests protected customer data access for that operational purpose only. See the Privacy policy for retention and processor details.
Related resources
Testing
- Use a Shopify development store.
- Create a paid, unfulfilled order with a complete Canadian shipping address and shippable line items.
- In the PrepKingz portal, open Integrations, connect the shop via OAuth, and complete provisioning.
- Sync orders into the PrepKingz queue.
- Prepare rates for the order, then purchase a label from the CAD wallet.
- Sandbox purchases are gated by server flags (
SHIPSAVVY_ENABLE_PURCHASES,SHIPSAVVY_PURCHASE_MODE, and atest_ShipSavvy token). Production purchases require a live token and production purchase mode — do not enable them on a development review store unless intentionally testing live carriers.