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.

11
REST Endpoints
2
GraphQL Resolvers
3
Themes Supported
terminal

Admin REST API

Five admin-scope REST endpoints for server-to-server integrations — reading quote records, items, and requests without granting a customer login.

download

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.

list_alt

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.

inventory_2

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.

article

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.

folder_copy

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.

person

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.

format_list_bulleted

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.

list

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.

add_shopping_cart

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.

mark_email_read

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.

forward_to_inbox

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.

shopping_cart

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.

hub

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.

hub

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.

translate

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.

cloud_sync

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.

palette

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.

web

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.

bolt

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.

palette

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.

shopping_cart_checkout

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.

filter_alt

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.

code

Developer Extensibility

Standard Magento extensibility patterns — service contracts, DI preferences, and event observers — with real EasyQuote hooks for the integration points that matter.

api

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.

settings_applications

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.

hub

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.

compare

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.

Capability
Custom-Built
EasyQuote
Outcome
Admin quote access
Custom endpoints + auth
5 REST endpoints shipping
Zero integration glue
Customer quote API
Custom GraphQL or REST
6 customer-scope REST + 2 resolvers
Headless/PWA-ready out of the box
Request submission
Custom controller + form handler
Two REST endpoints (customer + cart)
Same shape as the native form
Cart hand-off
Manual item-by-item add
One POST moves every line
One-line headless hand-off
Status change hook
Write a plugin from scratch
Standard Magento observer events
Extend with a normal observer
DI overrides
Patch concrete classes
Service contracts on every operation
Extend without forking

Frequently Asked Questions

help_outline
How many REST endpoints does EasyQuote expose? expand_more

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.

help_outline
Does EasyQuote support GraphQL for headless and PWA storefronts? expand_more

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.

help_outline
What theme compatibility does EasyQuote provide? expand_more

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.

help_outline
Does EasyQuote work with Hyvä Checkout? expand_more

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.

help_outline
What events can I observe to extend EasyQuote? expand_more

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.

help_outline
Can I override EasyQuote’s behaviour without patching the module? expand_more

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.

help_outline
Does the REST API use Magento’s standard authentication? expand_more

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.

help_outline
Is there a search-criteria filter on the list endpoints? expand_more

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.

help_outline
How do I programmatically move a quote to checkout? expand_more

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.

help_outline
Does the EasyQuote API enforce rate limits? expand_more

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.

11
REST Endpoints
2
GraphQL Resolvers
3
Themes Supported