jeffersongoncalves/laravel-shopify
A Laravel package for integrating Shopify stores into your application, with helpers for OAuth authentication, API requests, and webhook handling so you can build and manage commerce features more easily.
products() incl. variants) → order operations and fulfillment (orders(), close/open/cancel, fulfillments) → customer records and search (customers()) → event-driven features (webhooks() subscription management). Each phase is a thin layer of business logic over an already-available call, so scope estimates shrink and later phases become cheaper.shop() as the cheapest way to verify a token matters in practice: Shopify's Admin GraphQL API is cost-weighted, and a light verification call preserves budget for real traffic. This supports decisions like "verify credentials on every connection" or "validate merchant credentials at onboarding" without a performance tax.ShopifyException on any non-2xx — plus converting the Admin GraphQL API's HTTP 200-with-errors payload into an exception — supports a decision to treat failures as first-class, observable events. That enables honest SLAs, clean error states in the UI, and a support story for "the sync failed, here's why," instead of silent partial failures.Shopify::graphql() plus get()/post()/put()/delete() as an escape hatch means no confirmed Shopify capability is blocked at the architecture level. A PM can commit to a feature that depends on an uncovered endpoint without waiting on a vendor release, at the cost of some bespoke code.myshopify domain, or a full admin URL means the connect-a-store step can accept whatever the merchant pastes in. That removes a known source of onboarding drop-off and simplifies the UX spec (one input, no format coaching).Adopt when:
Look elsewhere or plan to build alongside when:
webhooks() manages subscription CRUD — it is not an inbound HMAC verification layer. Merchants sending you events is a separate concern.To executives: This is a first stable release of a Laravel client for the Shopify Admin API, and it lets us ship commerce features without building and maintaining the API layer ourselves. It covers the functional core — shop verification, products and variants, orders and fulfillments, customers, webhook subscriptions — plus a direct GraphQL path and raw HTTP fallback, so no confirmed Shopify capability is blocked by the library's coverage. The practical effect is a shorter path to a working integration and a smaller permanent maintenance burden. The risks are ordinary for a 1.0.0 dependency: it is early, and we should assume we own merchant authorization (OAuth) and inbound webhook verification ourselves rather than assuming they are included.
To engineering: Idiomatic Laravel, small surface, three things to like: shop-domain normalization (handle, myshopify domain, or admin URL) so onboarding input handling is trivial; shop() as a low-cost credential check against Shopify's cost-weighted GraphQL quota; and consistent exception behavior — ShopifyException on any non-2xx, and the Admin GraphQL API's HTTP 200-with-errors payload promoted to an exception, which is the failure mode that silently corrupts naive clients. Shopify::graphql() and the raw get()/post()/put()/delete() methods are the sanctioned escape hatch for uncovered endpoints, so we are never blocked. Before we depend on it, confirm and document: pagination and bulk-operation support, rate-limit/retry behavior under sustained load, and that we will build OAuth and webhook HMAC verification in-house. Treat the escape hatch as a tracked backlog signal — repeated raw calls mean we should revisit the resource layer — and pin the version with a review gate on minor bumps while the package is young.
How can I help you explore Laravel packages today?