A clear explanation of every Shopify API endpoint we call, why we call it, and how your data is handled.
Pdztools integrates with the Shopify Admin REST API and Shopify Admin GraphQL API on behalf of store owners who grant OAuth 2.0 access to their Shopify stores. The integration covers four core workflows below. No Shopify data is sold, shared, or used outside the store owner's own workspace.
Store owners connect their Shopify store via OAuth. Once connected, Pdztools calls the Orders API to import paid, unfulfilled orders into the seller's private dashboard — no manual CSV downloads needed.
GET /admin/api/{version}/orders.json?financial_status=paid&fulfillment_status=unfulfilled&status=open
GET /admin/api/{version}/orders/count.json
After a fulfillment partner ships an item and returns a tracking number, Pdztools automatically creates a fulfillment on Shopify or updates the tracking on an existing one — triggering Shopify's built-in shipping notification email to the buyer.
GET /admin/api/{version}/orders/{order_id}/fulfillment_orders.json
POST /admin/api/{version}/fulfillments.json
POST /admin/api/{version}/fulfillments/{fulfillment_id}/update_tracking.json
Read: Pdztools reads store products and their variants to power SKU matching, mockup display, and fulfillment routing when an order arrives.
GET /admin/api/{version}/products.json?ids={id1,id2,...}&fields=id,images,options,product_type,handle
GET /admin/api/{version}/products/{product_id}/variants.json
Write: Sellers can bulk create listings by uploading a CSV file in Pdztools. The system maps each row to a pre-configured template (title, description, variants, price, images) and creates the product on Shopify.
POST /admin/api/{version}/products.json
After creating a product, Pdztools automatically publishes it to all active sales channels in the store (Online Store, Google, Facebook, etc.) using the Shopify Admin GraphQL API — so sellers don't have to manually enable each channel.
POST /admin/api/{version}/graphql.json [query: publications — list all sales channel IDs]
POST /admin/api/{version}/graphql.json [mutation: productPublish — publish to all channels]
POST /admin/api/{version}/graphql.json [mutation: productUpdate — set Shopify Standard Category]
productUpdate mutation using the category GID selected from the templatePdztools requests only the minimum scopes necessary to power the four workflows above.
read_orders
Read orders — required for order sync, fulfillment routing, and tracking dashboard
write_orders
Create and update fulfillments — required to push tracking numbers and trigger shipping notifications to buyers
read_products
Read products and variants — required for SKU matching, mockup display, and fulfillment routing
write_products
Create and update products — required for bulk listing creation from CSV upload
read_inventory
Read inventory levels — required to verify stock availability during order processing
write_inventory
Update inventory — required to set inventory quantities when creating product variants
read_publications
Read sales channels list — required to know which channels to publish new products to
write_publications
Publish to sales channels — required to distribute newly created products across all active channels (Online Store, Google, Facebook, etc.)
How a store owner authenticates and connects their Shopify store to Pdztools via OAuth 2.0.
Inside Pdztools, the seller navigates to the Shopify Stores page and clicks the Connect button, entering their .myshopify.com domain. Pdztools generates the OAuth authorization URL and redirects the seller to Shopify's permission screen.
The seller is redirected to their Shopify admin where they see exactly which permissions Pdztools is requesting. The seller must click Install app to proceed — no access is granted without this confirmation. Pdztools verifies the HMAC signature in the callback to prevent forgery.
After the seller installs the app, Shopify redirects to the Pdztools callback URL with a one-time authorization code. Pdztools exchanges this code for a permanent access token — Shopify's custom app model does not use refresh tokens.
POST https://{shop}/admin/oauth/access_token
Pdztools calls shop.json to fetch store details (name, domain, currency, plan) and links the store to the seller's account. The store is shown on the Shopify Stores page with today's order count and revenue. All subsequent API calls use the stored token — the seller does not need to re-authenticate unless they uninstall the app.
429 Too Many Requests response is received, the system automatically retries the request after a 1-second delay. Order sync uses Shopify's cursor-based pagination (Link header) for large data sets. Tracking pushes are spaced 500ms apart per order. Listing creation calls are processed sequentially — no parallel bursts.