Skip to content

SYSTEM

Zalando Contentful Proxy

What it is

Zalando's Contentful proxy is an internal data service sitting between the Fashion Store API (FSA) GraphQL aggregator and the Contentful third-party headless CMS. It was built by George Tagkalidis's team alongside the rest of the Landing Pages stack (Source: ).

Responsibilities

The proxy performs three jobs:

  1. Mapping — translates Contentful's JSON entry schema into the GraphQL types exposed by FSA. Each Contentful entry-type (landing-page, banner, product carousel, certificate module, …) has a corresponding mapping.
  2. Caching — caches Contentful responses so that every landing-page request does not reach out to an external API; keeps Contentful's per-second rate limits and latency variance off the hot path.
  3. Resilience / isolation — the proxy is the only Zalando component that calls Contentful. FSA and the rest of Zalando's aggregation tier talk exclusively to Zalando-operated APIs, per the post's explicit property: "This approach also ensures resilience and that the aggregation layer calls directly only Zalando-operated APIs."

It also serves as the enrichment join point where CMS-referenced IDs get enriched with data from other internal Zalando services — e.g. a list of certificate IDs in a Contentful entry is enriched with the logo URL, title, and description from the same system of record that feeds the Product Detail Page's sustainability accordion (concepts/cross-surface-content-unification, patterns/cross-surface-enrichment-via-internal-service).

Canonical wiki role

Canonical wiki instance of patterns/proxy-layer-for-external-saas. The proxy generalises as the architectural seam between an internal API platform and a best-of-breed SaaS: the SaaS owns its core competency (authoring UX for Contentful), the proxy owns the internal-contract surface (GraphQL types FSA can rely on) and the guarantees the internal platform needs (caching, uniform error semantics, resilience against the external service's outages or rate limits).

Worked example — Sustainability Certificate module

In the Landing Pages stack, a Sustainability Certificate module's Contentful entry stores:

  • Title, Subtitle, Description (intro copy)
  • A list of certificate IDs (not certificate details)

The proxy:

  • Maps this entry to the existing Collection GraphQL type already used elsewhere on Zalando, exposing the list via Collection.entities.
  • Resolves the certificate IDs against Zalando's internal certificate system of record — the same service that serves the Product Detail Page's sustainability accordion — returning a SustainabilityCertificate for each ID containing id, title, description, and a logo.uri.

The result is that a certificate shown on a landing page carries identical data to the same certificate shown on the PDP — "always in sync" — because both paths read from the same backend.

Seen in

  • — canonical (and only) public disclosure of the Contentful proxy's existence, responsibilities, and enrichment-join role.
Last updated · 542 distilled / 1,571 read