
CMS Sync Bundle for Magento 2 — Headless CMS Blocks & Pages
CMS Sync Bundle delivers your Magento 2 CMS content to a headless storefront the efficient way. A single GraphQL query returns all active CMS blocks — or all pages — in one shot, with image URLs already resolved from Magento's {{media url=}} directives so the front end gets ready-to-render HT…
Your site chrome lives in CMS blocks — and headless makes them hard to reach
Headers, footers, promo bars, banners, info pages — a huge amount of a storefront is CMS content, edited by your team in Magento. On a headless build, the front end has to fetch all of that, and Magento's CMS GraphQL makes you request blocks one at a time and resolve {{media url=}} image directives yourself. That's a pile of round-trips and front-end glue just to render the chrome. CMS Sync Bundle collapses it into one query that returns everything, ready to render.
{{media url=}} directives are turned into real URLs, deduplicated, so the front end renders straight away.What you'll use it for
- Render chrome instantly — pull every header, footer and promo block in one request and cache them for fast page loads.
- Keep content in Magento — let your team edit blocks and pages where they always have, and the front end picks them up.
- Cut front-end glue — stop resolving media directives by hand; the query returns finished image URLs.
- Build CMS pages headless — serve your info, policy and landing pages to Astro from the same bundle.
How it works
Active-only for the public — by design
A bulk content endpoint must never leak drafts. When an anonymous storefront calls the bundle, it returns only active blocks and pages — a disabled or draft block can't slip out through the "give me everything" query, because active-only is enforced for non-admin callers. The media work is done for you too: {{media url=}} directives are resolved into real URLs and deduplicated, so you're not shipping the same image reference a dozen times or post-processing HTML on the front end. Editorial stays in Magento; the front end just renders.
Specifications
| Block queries | cmsBlockBundle (all active) and cmsBlockSingle (by identifier) |
|---|---|
| Page queries | cmsPageBundle (all) and cmsPageSingle (by identifier) |
| Media | {{media url=}} directives resolved to real URLs, deduplicated |
| Safety | Active-only output enforced for anonymous callers; inactive content needs admin context |
| Design | One-shot bulk fetch built for front-end content caching |
| Delivery & licence | Composer install, per-domain licence key, updates via Composer |
Works with
Part of the AgenticEcom suite for Headless & Astro:
The sibling to the Product Shell Bundle; keep cached content fresh with Astro ISR and feed promo blocks to NavBridge Pro. Included in the Enterprise bundle and the Astro frontend licences.
Frequently asked questions
How is this better than Magento's CMS GraphQL?
Magento returns CMS blocks one at a time and leaves you to resolve {{media url=}} image directives. This bundle returns all active blocks (or all pages) in one query, with media URLs already resolved and deduplicated — far fewer round-trips and no front-end glue.
Can it return CMS pages as well as blocks?
Yes. There are bundle queries for both blocks and pages, plus single-item queries to fetch one block or page by identifier on demand.
Will it expose draft or disabled content?
No. For anonymous storefront callers the bundle returns only active blocks and pages, so a draft or disabled item can't leak through the bulk query.
Why resolve media URLs server-side?
So the front end receives ready-to-render HTML. Resolving and deduplicating {{media url=}} directives in Magento means your Astro storefront doesn't have to post-process content or ship duplicate image references.
Which Magento and PHP versions are supported?
Magento Open Source 2.4.9 and later 2.4.x, verified on PHP 8.4 and 8.5.

