Skip to main content
Home / Blog / Herzfabrik: A Sulu Website with Live CRM Integration
February 06, 2026 — Tobias Graupner

Herzfabrik: A Sulu Website with Live CRM Integration

Herzfabrik: A Sulu Website with Live CRM Integration

Project Status

herzfabrik.de is live and actively used by the church community. The website pulls its dynamic content in real-time from the Kirchenwerk CRM.

The Challenge: Dynamic Content, Static Website

Church websites have a fundamental problem: content changes constantly. A different service next Sunday, a new small group starting, the sermon series changes. And the information needs to be current on the website - otherwise visitors show up to an event that doesn’t exist.

The classic solution: Someone updates the website manually. That works for two weeks, then someone forgets. Herzfabrik already manages their data centrally in the Kirchenwerk CRM. The question was: How do we get that data live onto the website without duplicate maintenance?

Why Sulu CMS Instead of WordPress?

We chose Sulu CMS - an enterprise-grade content management system built on Symfony. Not because WordPress is bad, but because we had specific requirements:

  • → Custom Content Types - Sulu allows defining arbitrary page types via XML. Events, sermons, small groups - each with its own structure.
  • → Twig Templates - Full control over the HTML. No plugin dependencies, no theme framework overhead.
  • → Symfony Ecosystem - Custom bundles, dependency injection, event system. Perfect for CRM integration.
  • → Admin Interface - A clean backend for editors that doesn’t require training.

The Tech Stack in Detail

The website is built on proven technologies that have been battle-tested in enterprise projects. No bleeding edge - solid, maintainable software.

Sulu CMS + Symfony

Sulu on the latest Symfony with PHP. The database is MariaDB via Doctrine ORM, the content repository runs on Jackalope PHPCR. This gives us Symfony’s flexibility combined with Sulu’s content management experience.

Page types are defined via XML: homepage, events, sermons, offerings, small groups, locations, contact. Each type has its own template with specific content blocks.

Stack: Symfony, Sulu CMS, PHP, MariaDB, Jackalope PHPCR

CRM Integration Bundle: The Core Piece

The CrmIntegrationBundle is a custom Symfony bundle that connects Sulu CMS with the Kirchenwerk API. It provides Twig functions that let editors embed CRM data directly into pages:

{{ crm_upcoming_events(limit) }}

{{ crm_locations() }}

{{ crm_small_groups() }}

{{ crm_events_by_category(category, limit) }}

{{ crm_groups_grouped_by_category() }}

Additionally, there are JSON API endpoints for frontend JavaScript (e.g., interactive filters), a configurable cache layer with TTL, and a webhook receiver that selectively invalidates the cache when CRM data changes.

The second bundle, CrmContentSyncBundle, provides Symfony commands for batch synchronization: SyncEventsCommand, SyncSmallGroupsCommand, SyncStandorteCommand, SyncAngeboteCommand, SyncPredigtenCommand.

Features: Twig Functions, JSON APIs, Caching Layer, Webhooks, Batch Sync Commands

SCSS Design System + Twig Components

The frontend uses a structured SCSS architecture: abstracts (variables, mixins), base (reset, typography), layout (grid, header, footer), components (buttons, cards, navigation), pages, and utilities. Built with Webpack Encore.

Typography is based on Brandon-Grotesque with Inter as fallback. Colors: dark blue (#2c3e50) as primary, red (#e74c3c) as accent. Responsive breakpoints from sm (640px) to 2xl (1536px). WCAG 2.1 AA compliant.

Reusable Twig components (hero, event cards, service highlights, team highlights, CTA sections, section headers) ensure consistent design across all page types.

Stack: SCSS, Webpack Encore, Brandon-Grotesque, Responsive Design, WCAG 2.1 AA

Docker Deployment

The website runs in Docker containers: PHP application (port 8352) and MariaDB (port 3307). Health checks for both services ensure problems are caught early. Volumes for uploads, media cache, and sessions ensure data persistence.

Infrastructure: Docker Compose, PHP + MariaDB Containers, Health Checks, Volume Management

The CRM Integration in Detail

The real challenge wasn’t the website itself - it was the seamless connection of two different systems. Sulu CMS (PHP/Symfony) and Kirchenwerk CRM (TypeScript/Convex) speak different languages. The CRM Integration Bundle translates.

Caching Strategy

CRM responses are cached with configurable TTL. On API errors, the cache serves as fallback - the website never shows empty pages, just the last known data.

Webhook Invalidation

The CRM sends webhooks on data changes. The cache is selectively invalidated - not completely cleared. Unaffected pages stay performant.

Batch Sync

For initial data synchronization and larger changes, Symfony commands sync events, groups, locations, and sermons in bulk.

Admin Configuration

CRM API URL, timeout, cache TTL, and API keys are configurable through the Sulu admin interface - no deployment needed for changes.

Website Features

Events & Services

Automatically loaded from the CRM, filterable by category and location. Detail pages with description, venue, and registration options.

Sermon Archive

All sermons with listing, detail pages, and RSS feed. Embedded from the CRM, searchable, and filterable by series.

Small Groups

Grouped by category, with target audience display (families, youth, etc.), contact information, and child-friendly filter.

Location Pages

Vogtland and Erzgebirge with dedicated pages. Addresses, directions, teams, and location-specific events.

Status: Live and Operational

herzfabrik.de is in production use.

  • ✓ Sulu CMS with custom content types
  • ✓ CRM Integration Bundle with live data
  • ✓ Responsive design (WCAG 2.1 AA)
  • ✓ Webhook-based cache invalidation
  • ✓ Docker deployment with health checks
  • ✓ Component library with reusable Twig blocks

Conclusion: CMS Integration as a Competitive Advantage

herzfabrik.de shows what’s possible when you don’t treat a website as an isolated project, but as part of an ecosystem. The CRM integration doesn’t just save time on content maintenance - it ensures the website always reflects the current state of the church. And with the combination of Sulu CMS for editorial content and Kirchenwerk for dynamic data, a website emerges that can do both: look professional and stay automatically up-to-date.

Need a website with CRM integration? Contact us - we integrate your existing systems.