.png)

Shopify POS Integration Guide
Integrate Shopify POS data with enterprise systems through Shopify Admin GraphQL APIs, selected webhooks, bulk operations, and secure OAuth authentication.
Shopify POS integration options at a glance
Shopify POS data is represented in the broader Shopify store model and is primarily accessed through the Admin GraphQL API. New integrations should generally use GraphQL queries and mutations for products, orders, customers, inventory, locations, and fulfillment, while the legacy REST Admin API remains relevant for existing applications or specific migration scenarios. Shopify supports webhook notifications for selected events, HMAC verification, cursor-based pagination, and asynchronous GraphQL bulk operations for large datasets. Martini can consume these APIs, receive and validate webhook requests, schedule reconciliation workflows, transform data, and expose controlled APIs for POS extensions or downstream applications. OAuth 2.0, access scopes, and offline tokens support secure background processing.
Common Shopify POS integration patterns
Common Shopify POS data objects used in integrations
Authentication and security considerations
OAuth and access scopes
Shopify supports OAuth 2.0 authorization for installed apps, with access scopes controlling permissions for products, orders, customers, inventory, locations, and fulfillment. Offline access tokens are suited to scheduled and background workflows, while online tokens are associated with user-context operations.
Secrets and webhook verification
Store Shopify tokens and application secrets in Martini environment configuration rather than workflow payloads. Shopify webhook requests include an HMAC value that Martini should validate before accepting or processing the notification.
Least privilege
- Request only the Shopify scopes required by each integration.
- Use encrypted transport for API and webhook traffic.
- Restrict access to customer and order data and avoid unnecessary sensitive logging.
- Separate credentials and configuration across stores, environments, and deployment stages.
Operational considerations for Shopify POS integrations
Rate limits and pagination
Shopify applies API usage limits: GraphQL usage is measured by query cost and REST uses request-based limits. Select only necessary fields, control concurrency, honor throttling guidance, use cursor pagination, and prefer bulk operations for large datasets.
Webhook reliability
Webhook delivery should be treated as at-least-once notification rather than a guaranteed single delivery. Acknowledge promptly after validation, retrieve the current resource through the API, persist event state, and run periodic reconciliation for delayed or missed events.
Versioning and schema changes
Pin Shopify API versions and test upgrades before deployment. GraphQL fields, mutations, enum values, and REST resources can evolve, so mappings should tolerate optional fields and record unknown or rejected values.
Data semantics and testing
- Do not assume every POS action has a separate POS-only object or webhook.
- Model Orders, Transactions, refunds, discounts, taxes, and Fulfillments separately where required.
- Define inventory ownership and distinguish available, committed, and unavailable quantities.
- Test duplicate webhooks, throttling, pagination boundaries, partial failures, and reconciliation scenarios.
Why use Martini instead of scripts or point-to-point integrations?
Orchestration instead of isolated scripts
Martini provides a maintainable workflow layer for combining Shopify APIs, webhook triggers, scheduled reconciliation, bulk processing, downstream APIs, and durable integration state. This avoids duplicating authentication, pagination, transformation, and retry logic across separate scripts.
Reusable integration assets
Teams can expose controlled APIs, reuse workflow logic, map Shopify objects to canonical models, and apply consistent validation and business rules across stores and target applications.
Operational control
- Centralize error handling, retries, logging, checkpoints, and correlation identifiers.
- Separate vendor capabilities from business-specific transformation and routing logic.
- Support event-driven, scheduled, bulk, and API-led processing in one integration design.
- Extend workflows with custom logic when Shopify data or downstream requirements need additional processing.