API, Integrations & Themes
Eleven REST endpoints, two GraphQL resolvers, and native observer hooks — the integration surface headless storefronts, ERPs, and BI pipelines rely on.
EasyQuote is a native Magento 2 extension in every sense — 11 REST endpoints (5 admin, 6 customer), two GraphQL resolvers for headless and PWA storefronts, and no proprietary integration layer to learn.
The code follows standard Magento service contracts and DI patterns, so integrators, ERP connectors, and theme developers can extend EasyQuote the same way they extend the rest of the platform. B2B workflows and status automation are all wired through the same interfaces.
Admin REST API
Five admin-scope REST endpoints for server-to-server integrations — reading quote records, items, and requests without granting a customer login.
GET /V1/easyquote/quote/:id
Fetches a single quote record by ID with its full payload — customer, status, totals, line items, and timestamps. Use from ERP or BI pipelines to pull a specific quote for reconciliation or reporting.
GET /V1/easyquote/quote/:id/items
Returns every line item on a given quote with negotiated prices, tier data, and quantities. Useful when your integration wants item detail separately from the quote envelope.
GET /V1/easyquote/quote/quotes
Lists all quotes across the admin scope with standard Magento search-criteria filtering — status, customer, store view, date range. Paginated, sortable, and matches the admin grid’s query shape.
GET /V1/easyquote/request/:id
Fetches a single quote request (the pre-quote customer submission) by ID. Returns the form payload, attachments, and the conversation thread for follow-up.
GET /V1/easyquote/requests
Lists all quote requests with search-criteria filtering — a feed of inbound leads that hasn’t yet converted into a formal quote. Feed a CRM, a lead-scoring service, or a reporting dashboard.
Customer-Scope REST API
Six customer-scope endpoints for storefront integrations, headless apps, and self-service tools that operate as the customer without admin privileges.
GET /V1/easyquote/quotes
Customer-scope list of the authenticated user’s quotes. Mirrors the My-Account Quotes grid for PWA, headless storefronts, or a native mobile app.
GET /V1/easyquote/quotes/:quoteId/items
Customer-scope item detail for a specific quote. Returns pricing, tier selection, and quantities so the storefront can render the line-item view without round-tripping through HTML.
POST /V1/easyquote/quotes/:quoteId/addToCart
Moves every quote line into the customer’s native Magento cart with negotiated prices and selected tiers preserved. This is the programmatic hand-off to quick checkout.
GET /V1/easyquote/customer/:id/requests
Customer-scope list of quote requests the authenticated user has submitted. Useful for a “my requests” dashboard in a custom storefront or a native mobile app.
POST /V1/easyquote/request/customer/:id/submit
Submits a new quote request on behalf of the authenticated customer — form payload, attachments, and message body. The endpoint the customer request form uses.
POST /V1/easyquote/request/cart/:id/submit
Submits a quote request derived from the customer’s existing cart — one call and the entire cart becomes a quote request without re-keying a single SKU. Used by the Get-a-Quote buttons on cart and mini-cart.
GraphQL & Multi-Store
Native GraphQL resolvers for headless and PWA storefronts, plus store-view-aware routing that keeps every API response anchored to the right currency, locale, and configuration.
Native GraphQL resolvers
Two GraphQL resolvers ship in the box: Quote (fetch a single quote by ID) and Quotes (fetch the authenticated customer’s list). Native GraphQL schema extensions with standard authentication — no custom gateway, no sidecar service.
Multi-store-view routing
Every API response respects the requesting store view — currency, locale, template variables, and the store-specific carrier title. Quote data stays anchored to the base currency internally.
Adobe Commerce & Commerce Cloud
Runs on Adobe Commerce and Adobe Commerce Cloud the same way it runs on self-hosted Magento Open Source — no platform-specific code, no ECE tools-only dependencies, and no separate license.
Theme Compatibility
First-class integrations with every mainstream Magento 2 frontend stack — Luma, Breeze.js, and Hyvä — via dedicated compat modules so EasyQuote renders correctly on every install without forking core templates.
Luma theme (default)
Every frontend component works with Magento’s default Luma theme out of the box — the Get-a-Quote button, the customer-account quote grid, the request form, the proposal view — no template overrides needed for the standard install.
Breeze.js compatibility
A dedicated MageMe_EasyQuoteBreeze module provides Breeze-specific JavaScript and template hooks so EasyQuote works on Breeze-based themes — Swissup’s Breeze Blank, Breeze Stores, and any derived theme — without forking core templates.
Hyvä theme — Tailwind templates
A dedicated Hyva_MageMeEasyQuote module ships Hyvä/Tailwind-styled templates for the full quote workflow — cart and mini-cart request buttons, the customer-account quote list and view, the quote-item renderer with tier pricing, and the request form with every standard and custom field type.
Hyvä Checkout integration
Full integration with Hyvä Checkout’s Magewire/LiveWire flow — quote address snapshots survive step transitions, shipping and payment method lists stay in sync with the quote cart, and a step condition hides the shipping step cleanly when a quote carries a fixed admin-configured freight amount.
Hyvä — Tailwind CSS purging
The Hyvä compat module registers itself with the Hyvä config generator on hyva_config_generate_before, so Tailwind scans EasyQuote’s templates during CSS purging. Production stylesheets stay lean — no unused class bloat, no Luma asset leak.
Developer Extensibility
Standard Magento extensibility patterns — service contracts, DI preferences, and event observers — with real EasyQuote hooks for the integration points that matter.
Service contract interfaces
Every quote, request, and message operation is exposed through service-contract interfaces. Inject them into your own module, override them via DI preference, or wrap them with Magento plugins — the same extension story as native Magento modules.
DI preference overrides
Change the concrete implementation of any EasyQuote service by pointing a DI preference at your own class. Swap PDF generation, override proposal email assembly, or replace status-history persistence without forking the module.
Event observers
Magento-native observer wiring on real EasyQuote events — easyquote_cart_add_items_after (after quote items land in the cart) and mm_calculate_product_price_options (custom-option pricing) — plus every standard Magento lifecycle event. Extend without core patches.
EasyQuote Integration vs Custom-Built Equivalent
Building the same integration surface from scratch would be weeks of endpoints, schemas, and glue. EasyQuote ships with the native Magento equivalents wired in.
Frequently Asked Questions
Eleven endpoints total: 5 admin-scope (get quote by id, get quote items, list quotes, get request, list requests) and 6 customer-scope (list own quotes, get items, add-to-cart, list own requests, submit request from form, submit request from cart). All follow Magento’s standard service-contract shape.
Yes. Two native resolvers ship in the box — Quote (single quote by ID) and Quotes (customer quote list) — wired into the standard Magento GraphQL schema. Use them from Adobe Commerce PWA Studio, a headless React app, or any client that speaks Magento GraphQL.
Three themes supported through dedicated compat modules. Luma works out of the box. Breeze.js themes (Swissup Breeze Blank, Breeze Stores, derivatives) via MageMe_EasyQuoteBreeze. Hyvä via Hyva_MageMeEasyQuote with Tailwind templates and Hyvä Checkout integration. Adobe Commerce Cloud runs the same code as self-hosted.
Yes — the Hyva_MageMeEasyQuote module includes a full Hyvä Checkout integration. Quote address data survives Magewire/LiveWire step transitions via a session snapshot, shipping and payment method lists stay in sync with the quote cart, ship-as-billing is wired to the quote’s own address configuration, and the shipping step is hidden automatically when the quote carries a fixed admin-configured freight amount. No Hyvä checkout skin to maintain on your end.
Every standard Magento lifecycle event fires normally — sales_order_save_after and so on. On top of that, EasyQuote dispatches easyquote_cart_add_items_after (fires after quote items land in the native cart) and mm_calculate_product_price_options (fires during custom-option pricing). Attach observers the same way you would for any Magento event.
Yes. Every significant operation — quote persistence, PDF generation, status transitions, email assembly — lives behind a service contract. Point a DI <preference> at your own concrete class in your di.xml and the framework wires your implementation in.
Yes. Admin endpoints use admin tokens (integration or bearer), customer endpoints use customer tokens. No separate auth layer. OAuth, integration tokens, and the standard Magento ACL all work as expected.
Yes. GET /V1/easyquote/quote/quotes and GET /V1/easyquote/requests accept Magento’s standard search-criteria query parameters — filter by status, customer, store view, date range, and sort/paginate the same way you would query any Magento entity.
Call POST /V1/easyquote/quotes/:quoteId/addToCart as the authenticated customer. Every line moves into the native Magento cart with negotiated prices and selected tiers preserved, and the standard checkout proceeds from there — no EasyQuote-specific checkout skin to integrate.
EasyQuote does not impose its own rate limits. Every endpoint rides on standard Magento REST/GraphQL and inherits whatever throttling is configured at the webserver, ACL, or upstream CDN layer. Adobe Commerce Cloud’s default Fastly WAF rules apply normally. For high-frequency ERP sync, batch via searchCriteria pagination rather than per-item polling.
Ready to integrate EasyQuote with your stack?
11 REST endpoints, native GraphQL resolvers, and standard Magento extensibility patterns — no bespoke glue, no sidecar services.