FroggShop functional reference

All FroggShop features, organized by layer

This page serves as a commercial and technical reference: it details the available FroggShop building blocks, their purpose, how they work and the items planned on the roadmap.

Foundation, architecture and configuration

The technical foundations that make FroggShop composable, maintainable and reusable across multiple projects. 7 features in this layer.

FroggShop modular foundation

Goal: Provide a reusable, multi-client Shopware plugin.

FroggShop is organized into autonomous internal bundles, each with its own services, routes, configurations, entities and documentation. This architecture makes it possible to compose e-commerce features without hardcoding client-specific logic.

How it works

The main plugin loads additional bundles through Shopware. Each bundle registers its services, routes, migrations and configurations, then exposes its features in isolation.

Centralized bundle configuration

Goal: Manage FroggShop settings from the Shopware back office.

The Bootstrap bundle gathers the XML configurations of every bundle into a dedicated administration interface. Features can be enabled, configured and exposed per bundle.

How it works

Each bundle contributes its configuration files through an event. The administration controller aggregates this data and presents it in a single FroggShop area.

Migration helpers

Goal: Make data installation and migration operations reliable.

FroggShop provides migration traits to handle system configs, CMS, state machines, custom fields and shipping methods. They standardize recurring data changes.

How it works

Migrations call idempotent helpers to insert or update Shopware data without duplicating records or breaking existing environments.

Bootstrap maintenance commands

Goal: Tool recurring technical operations.

Commands help maintain custom fields, create reference CMS pages or diagnose the runtime environment.

How it works

Console commands run through Symfony/Shopware and call FroggShop repositories or services to apply controlled actions.

Integrated documentation

Goal: Centralize functional and technical guides.

The MkDocs documentation covers bundles, development guides, useful commands, standards and testing procedures.

How it works

Markdown pages are organized by bundle and published with MkDocs to serve as a reference for developers, QA and writers.

FroggShop theme

Goal: Provide a reusable storefront base.

The Theme bundle provides Twig templates, variables, extensions, CMS decorations and display configuration to build a consistent Shopware theme.

How it works

The theme overrides or extends Shopware templates, exposes global variables and relies on the theme configuration to adapt rendering.

Cross-cutting tools

Goal: Provide reusable helpers.

FroggShop includes structured logging tools, log storage, logger chains and date helpers.

How it works

These utility classes can be injected by bundles to avoid duplicating logging, storage or date-handling mechanisms.

Content, headless CMS and editorial

The building blocks that give content and marketing teams autonomy without sacrificing performance. 10 features in this layer.

Editorial blog

Goal: Publish and organize blog content within Shopware.

The blog handles listings, categories, authors, detail pages, legacy redirects, SEO URLs, pagination, metadata and sitemap. It can be fed by Storyblok or by legacy import.

How it works

Blog entities store the content. Storefront controllers and page loaders build the pages, while commands import or rebuild the SEO data.

Storyblok integration

Goal: Connect Shopware to a headless CMS.

FroggShop handles Storyblok page rendering, preview, cache webhooks, content synchronization and structure dump/restore commands.

How it works

Controllers call the Storyblok services, fetch the stories, transform them into storefront output and invalidate the cache on webhooks or synchronizations.

Storyblok structure synchronization

Goal: Keep CMS schemas in sync across environments.

Storyblok components can be exported, versioned and restored to synchronize DEV, PREPROD or other spaces.

How it works

Commands read the Storyblok component structure, write it into versioned files, then can restore it into another target space.

Headless content renderer

Goal: Insert headless CMS content into the storefront.

The renderer makes it possible to inject Storyblok content or CMS modules into templates, with Twig support, dedicated modules and cache-friendly rendering.

How it works

FroggShop decorates the CMS renderer, resolves headless modules, prepares the Twig variables and returns HTML usable in Shopware pages.

Editorial shortcodes

Goal: Dynamically enrich text or CMS content.

Shortcodes turn editorial markers into HTML output or components, usable notably in the blog and global CMS surfaces.

How it works

An expander detects the tokens in the content, delegates each shortcode to a dedicated handler, then replaces the marker with the final output.

Dynamic header and footer

Goal: Drive the site's global areas through the CMS.

Headers and footers can be rendered from Storyblok with HTML or ESI cache strategies to keep good performance.

How it works

Pagelets fetch the global content, render it through Storyblok and expose it as direct HTML or an ESI fragment depending on the configuration.

Generic CMS forms

Goal: Turn Storyblok forms into Shopware interactions.

Generic forms handle validation, captcha, rate limit, token, cache and Flow Builder event dispatch. They make it possible to create forms without custom development.

How it works

The controller receives the submission, reloads the form definition, validates the fields and security checks, then dispatches a Flow event with the cleaned data.

Managed robots.txt

Goal: Administer the robots.txt content.

FroggShop exposes a configurable robots.txt route, with dedicated rendering and the ability to manage restrictions by context, notably administration domains.

How it works

The `/robots.txt` route calls a renderer that assembles the content based on the active configuration and the domain context.

Analytics and tag management

Goal: Configure measurement and marketing scripts.

Dedicated configurations make it possible to integrate Google Analytics, Google Tag Manager or marketing tags from the administration.

How it works

The configured values are read by the storefront or templates to inject the IDs and scripts only when they are active.

Editorial SEO

Goal: Manage metadata and SEO data.

FroggShop adds entities and services to manage SEO data, clean up metadata and produce optimized URLs for editorial content.

How it works

Editorial content is enriched with titles, descriptions, aliases and SEO routes. Commands can clean up or regenerate the metadata.

Catalogue SEO, search and navigation

The features dedicated to complex catalogues, indexable listings and SEO migrations. 7 features in this layer.

Enhanced search

Goal: Improve Shopware search suggestions.

FroggShop decorates the product suggestion route to add products, categories, manufacturers and text suggestions. The system is extensible through events and OpenSearch.

How it works

The native route is decorated, the criteria are enriched, the results are combined and returned in a storefront-compatible format.

Search relevance analysis

Goal: Assess the quality of search results.

Analysis routes make it possible to record judgments, measure relevance and help tune search results.

How it works

A controller exposes an analysis interface, saves the judgments and computes quality indicators on the observed results.

Manufacturer pages

Goal: Create pages dedicated to brands or manufacturers.

FroggShop adds storefront routes, loaders, manufacturer entity extensions and SEO URLs to expose manufacturer pages as navigation pages.

How it works

A route resolves the manufacturer by slug, loads the related products and applies the SEO templates to produce an indexable page.

CatalogPage

Goal: Unify catalogue listing pages.

CatalogPage models category or manufacturer listing pages, with status, SEO URL, sitemap, recomputation and scheduled tasks.

How it works

A dedicated entity describes the page, its criteria and its status. Services recompute its validity, its URLs and its presence in the sitemap.

Catalogue permalinks

Goal: Administer filtered, SEO-friendly listing pages.

Permalinks represent listings built from filters, visible per sales channel and exposable in the storefront and through the Store API.

How it works

The admin creates a permalink from a URL or filters. FroggShop parses the parameters, generates an associated CatalogPage and exposes the public route.

Legacy redirects

Goal: Import and resolve old URLs.

FroggShop makes it possible to add or import redirects, with cached resolution to support SEO migrations.

How it works

Commands populate a redirect entity from manual input or CSV. A resolver finds the target and applies the redirect during requests.

Navigation SEO templates

Goal: Install the SEO templates required for catalogue pages.

Commands configure the SEO templates for manufacturers, catalogue pages and other navigation routes.

How it works

The installation command creates or updates the Shopware SEO URL templates for the relevant FroggShop routes.

Product, catalogue and commerce rules

The business mechanisms that enrich products, carts, variants, taxes and commercial availability. 10 features in this layer.

Product display customization

Goal: Add configured product information.

DisplayCustomization makes it possible to define information shown on products through JSON configuration and propagate it to the cart.

How it works

The JSON configuration is interpreted by a service, applied to the relevant products and added to the line items through a cart processor.

Product availability

Goal: Compute the commercial availability of the catalogue.

The Product bundle provides an availability entity, computation commands, a scheduled task and triggers to keep the information up to date.

How it works

Commands or scheduled tasks recompute availability from product/stock/rule data, then store the result in a dedicated entity.

Product logistics information

Goal: Manage logistics data and secondary SKUs.

A dedicated entity stores product logistics information, exposed through the Admin API, with versioning and Alfred synchronization.

How it works

The information is attached to the product through a DAL extension. The admin APIs read/write the entity while respecting the Shopware product version.

Product display restrictions

Goal: Restrict product visibility based on rules.

Restrictions rely on the Rule Builder, DAL criteria, decision caching, OpenSearch indexing and storefront listeners.

How it works

Subscribers add filters to the product criteria, a service decides access based on the rules, and the indexes are enriched to filter search as well.

Product stock management

Goal: Adapt stock behaviors tied to orders.

FroggShop decorates and extends the Shopware mechanisms to account for order states or specific business rules.

How it works

Subscribers watch order transitions and decorations adjust stock operations at the right time.

Variant combination

Goal: Generate product variants from the administration.

An Admin API route and a dedicated service make it possible to combine variants from a parent product.

How it works

The API receives the parent product, computes the option combinations and delegates the creation or update of variants to the business service.

Product badges

Goal: Display promotional or informational badges.

Custom fields and services make it possible to attach product badges, including multi-part ones.

How it works

Migrations add the fields, then the service reads the product values to provide the badges to templates or integrations.

Product packs

Goal: Compose products as packs.

The Pack bundle handles the relations between packs and included products, visibility, consolidated stock computation and stock storage decoration.

How it works

Pack entities link the pack product to its components. The pack stock is computed from the available stock of the included products.

Additional taxes

Goal: Add extra taxes to products and carts.

DAL entities link additional taxes to products, then the pricing services apply them in the product and cart computation.

How it works

The price calculator is decorated to add the configured taxes. The cart is then enriched with the applicable additional amounts.

Preorder and cart

Goal: Adapt cart behaviors for preorders.

Subscribers and configurations make it possible to adjust prices or cart rules depending on preorder cases.

How it works

Subscribers inspect the line items and cart context, then apply the configured adjustments before the cart is recomputed.

Omnichannel, delivery and checkout

The field building blocks to connect stores, local stock, relay points, addresses and order journeys. 12 features in this layer.

Store locator

Goal: Expose a store directory.

The Store bundle handles store entities, listing pages, detail pages, AJAX search, SEO URLs and storefront integrations.

How it works

Stores are stored in the DAL, loaded by storefront controllers and exposed through indexable pages or search endpoints.

Store stock

Goal: Display available stock per store.

FroggShop adds a store stock entity, a Store API, product/checkout storefront routes and local availability services.

How it works

Per-product/store stock is read through a repository and exposed to the storefront to show local availability and checkout options.

Favorite store

Goal: Let the customer choose a reference store.

The customer can select a favorite store, find it again at login and use it across storefront journeys.

How it works

A customer-store relation is persisted. Routes make it possible to create, read or update it, and a subscriber reloads it at login.

In-store pickup

Goal: Handle in-store pickup during checkout.

Checkout services verify in-store availability and support local pickup journeys.

How it works

Checkout queries the Store services to verify stock and offer stores compatible with the cart.

Relay points

Goal: Offer carrier relay selection at checkout.

The RelayPoint bundle integrates Chronopost, Colissimo and Mondial Relay, with caching, cart/order selection, carrier APIs and per-connector resilience.

How it works

Controllers and Store API routes search for relay points, connectors query the carrier APIs, then the choice is saved on the cart or the order.

Relay geolocation

Goal: Make it easier to find nearby relay points.

Routes convert coordinates and postal codes to feed the relay search.

How it works

The endpoints convert a postal code into coordinates or coordinates into a postal code, then this data is used for carrier searches.

Relay point monitoring

Goal: Monitor the carriers' APIs.

A dedicated probe plugs into the healthcheck to detect availability issues with relay services.

How it works

The probe runs simple checks on the carrier connectors or endpoints and reports a status to the global healthcheck.

Address autocomplete

Goal: Assist customer address entry.

FroggShop connects services such as Google Places or adresse.data.gouv.fr to offer address autocompletion.

How it works

The controller receives the user input, queries the configured provider and returns normalized suggestions to the storefront form.

Address and account validation

Goal: Adapt customer account constraints.

Subscribers and configs handle requirements such as company fields, address validation or certain account behaviors.

How it works

Subscribers enrich or modify the Shopware validation constraints based on the active configuration and the customer context.

Postal code reference

Goal: Import French cities and postal codes.

Entities, a command and asynchronous messages keep a postal reference dataset usable by forms.

How it works

The command starts the import, the messages process the data in the background, and the postal city/zip code entities are populated.

Checkout login redirect

Goal: Simplify the checkout login journey.

FroggShop can redirect the checkout login page to the appropriate registration or login flow.

How it works

A controller intercepts the route and returns a redirect to the desired checkout step.

Cart delivery address

Goal: Persist or adapt the delivery address at checkout.

The Delivery bundle decorates the address controllers, handles cart routes and steps in at checkout confirmation.

How it works

The controllers save the address choice in the cart or context, then the subscriber reapplies it at confirmation.

Customer account, reviews, privacy and support

The features that structure the customer area, reviews, consent and support operations. 9 features in this layer.

Customer form decoration

Goal: Adapt the native Shopware forms.

The contact/newsletter forms can be adjusted through controller decoration.

How it works

FroggShop decorates the native controller, runs or extends its logic, then returns a Shopware-compatible response.

Enriched customer orders

Goal: Present orders with structured deliveries.

The Customer bundle enriches the orders route, the order and line item extensions, and rebuilds the deliveries for the customer area.

How it works

The `OrderRoute` is decorated. The loaded orders are completed by a builder that organizes deliveries, line items and additional data.

Multi-provider reviews

Goal: Centralize reviews from multiple sources.

FroggShop stores generic reviews, product sources and aggregates, with a unified CRUD service and extensible providers.

How it works

Providers import or expose their reviews through a common interface. The central service normalizes the data and maintains the aggregates.

Generic review display

Goal: Display reviews attached to an entity.

A route makes it possible to list and filter the reviews of a given entity, not only native Shopware products.

How it works

The controller loads the reviews by entity type and ID, applies the filters and returns a usable rendering or response.

Review maintenance

Goal: Clean up or generate review data.

Commands make it easier to clean up reviews or create test volumes.

How it works

Commands operate on the review repositories to delete targeted data or insert test fixtures.

Avis Garantis integration

Goal: Plug in an external review provider.

A dedicated configuration and providers make it possible to integrate Avis Garantis into the multi-provider system.

How it works

The provider reads the Avis Garantis configuration, fetches or transforms the reviews, then injects them into the generic FroggShop model.

Cookie consent

Goal: Add custom cookies and groups.

The Privacy bundle decorates the Shopware cookie provider and exposes custom cookies to the consent manager.

How it works

The native provider is decorated to add the configured cookies before the modal is shown or the preferences are read.

Consent logging

Goal: Track user consent choices.

A POST route records consents, identifying a logged-in customer or an anonymous visitor.

How it works

The controller receives the consent state, adds context information and writes a dedicated log for audit or diagnostics.

Customer support impersonation

Goal: Allow support to log in as a customer.

The CustomerService bundle generates and verifies temporary tokens to open a controlled customer session, with audit events.

How it works

One endpoint generates a token using a master token. A second endpoint validates that token, logs in the target customer and records the action.

Emails, OAuth and authentication

The tools for sign-in, account linking and transactional email maintenance. 9 features in this layer.

Email import/export

Goal: Version and reimport email templates.

MailUtils provides commands to dump and inject email templates, headers and footers.

How it works

The commands read the templates from the database or files, then export or reinject them depending on the requested operation.

Email preview and dump

Goal: Make email testing easier.

Services and commands enable email dumping, manage the paths and make template verification easier.

How it works

Dump mode redirects or stores the generated emails to allow inspection without actually sending them to recipients.

Email logs

Goal: Log the sent emails.

Subscribers capture email transformations/sends to ease diagnostics.

How it works

The subscriber listens to email events, extracts subject, recipients and context, then writes the information to the dedicated log channel.

FroggOAuth / FroggAuth

Goal: Add social authentication to the FroggShop ecosystem.

The FroggOAuth plugin handles OAuth sign-in in Shopware, with configurable external services such as Google and Apple. It is one of the plugins installed in the FroggShop test environment.

How it works

Each OAuth provider has its own configuration and a dedicated service. The OAuth controller orchestrates the redirect, the provider callback, the association with the Shopware customer and the creation of the OAuth data attached to the account.

Google OAuth sign-in

Goal: Let customers sign in with their Google account.

FroggOAuth integrates Google through `google/apiclient`, with credential configuration, redirect URLs and test users during the validation phase.

How it works

The Google OAuth service validates the provider callback, retrieves the external identity, then creates or links the Shopware customer through the OAuth link entity.

Apple OAuth sign-in

Goal: Let customers sign in with their Apple ID.

FroggOAuth integrates Apple with public key handling, token validation and dedicated per-service configuration.

How it works

The Apple service fetches the Apple keys, verifies the identity token, extracts the useful data and associates it with the Shopware account like the other OAuth providers.

OAuth account linking

Goal: Durably link an external account to a Shopware customer.

FroggOAuth adds a `customer_oauth_data` entity and a customer extension to keep the associations between Shopware accounts and external OAuth identities.

How it works

On an OAuth sign-in, the plugin looks for an existing association or creates a new one. Events make it possible to customize the association and post-login processing.

OAuth password placeholder

Goal: Handle accounts created via OAuth without a regular password.

FroggOAuth adapts the registration flow for OAuth customers and exposes a dedicated event for password placeholders.

How it works

The Shopware registration route is decorated to allow or complete the information required for an OAuth account without a user-entered password.

OAuth Twig extension

Goal: Ease the front-end integration of social sign-in buttons.

FroggOAuth exposes Twig helpers to display the OAuth entries in storefront templates.

How it works

Templates use the Twig extension to fetch the active providers, build the sign-in URLs and display buttons matching the theme.

Multi-PSP payment

The payment solutions integrated into the Shopware checkout: card, wallets, split payment, gift cards and the main market PSPs. 6 features in this layer.

Cawl card payment

Goal: Integrate Cawl card payment into the Shopware checkout.

The Cawl plugin adds a payment method with a secure iframe widget, tokenization, 3DS authentication, webhooks and advanced logging.

How it works

At checkout, Cawl creates a tokenization session, displays the card widget, validates the token server-side, creates the payment, then finalizes the transaction based on the API or webhook response.

Monext payment

Goal: Integrate advanced payments through the Monext widget.

Integration of Monext advanced features: bank card, Google Pay, Apple Pay and every solution offered by the Monext widget.

How it works

The Monext widget is embedded in checkout and exposes its payment methods; the transaction response drives the finalization of the Shopware order.

Mollie payment

Goal: Integrate the Mollie payment plugin.

Integration of the official Mollie plugin to access its payment methods: card, transfers, wallets and European local payments.

How it works

The Mollie plugin is wired into the Shopware checkout and delegates the rendering of payment methods and transaction status tracking to Mollie.

Gift card payment

Goal: Allow payment by gift card.

Gift cards are partial payment methods: the remaining balance is completed with a card or any other available payment method.

How it works

The gift card amount is deducted from the cart; the remaining balance triggers a second payment method to complete the order.

PayPal payment

Goal: Integrate the official PayPal plugin.

The official PayPal plugin allows payment in one or several installments.

How it works

The official PayPal plugin adds its payment methods to the Shopware checkout and handles both one-off and installment payments.

Stripe payment

Goal: Integrate the official Stripe payment plugin.

The official Stripe payment plugin adds its payment methods to the Shopware checkout.

How it works

The official Stripe plugin is wired into checkout and delegates capture, 3DS and payment status tracking to Stripe.

CLI, OPS, security and performance

The building blocks for operations, security, monitoring and media/cache optimization. 8 features in this layer.

HTTP and ESI cache

Goal: Optimize storefront performance.

The Cache bundle handles tags, invalidations, ESI rendering and HTTP purge commands by URL or tag. It speeds up pages while keeping fine-grained invalidation.

How it works

Responses receive cache tags. ESI fragments isolate the dynamic areas, and commands or subscribers invalidate only the affected content.

Flash bag caching

Goal: Make certain routes cacheable without losing user messages.

A specific policy prevents Shopware flash bags from breaking user behavior on HTTP-cached routes.

How it works

A subscriber and a policy identify the compatible routes, preserve the user messages and limit the cache's side effects on the session.

Order critical path

Goal: Drive the critical order state transitions.

The Order bundle configures priority state paths and provides test and validation commands.

How it works

The state machine configuration describes the expected transitions. Commands simulate or verify that the critical paths remain applicable.

Dedicated admin domain

Goal: Secure administration access through a subdomain.

The Security bundle documents and configures access to the administration through a dedicated domain.

How it works

The infrastructure and environment configuration isolates the admin on a specific host, which eases filtering, routing and hardening.

Password and login security

Goal: Strengthen or adapt the customer login.

A LoginRoute decoration and password security configs make it possible to apply specific rules.

How it works

The Shopware login route is decorated to run additional checks before or after standard authentication.

Application healthcheck

Goal: Expose the platform's operational state.

The Monitoring bundle exposes `/health` and aggregates DB, Redis, OpenSearch, disk, environment, URL and external integration probes.

How it works

The controller calls a probe service, runs each enabled check and returns a detailed global status for supervision.

WebP optimization

Goal: Generate and delete WebP media.

MediaOps creates WebP files on upload or on demand, stores them in a dedicated entity and processes the operations asynchronously.

How it works

Commands, subscribers or messages detect eligible media, generate the WebP variants and record the link with the thumbnails.

CDN delivery

Goal: Serve and purge media through a CDN.

MediaOps configures the CDN URLs, purges the caches on update/deletion and exposes operations commands.

How it works

Media URLs are adapted based on the CDN configuration. Purges are triggered by command or by a modification/deletion event.

FroggShop roadmap

The next building blocks aim to strengthen commerce automation, catalogue SEO and the integration of external reference data.

Advanced agentic commerceCommerce assistants and automations to help teams analyze, enrich and steer the catalogue.
Catalogue pages by product groupingCreate indexable commercial pages from business-driven product groupings.
Automatic SEO permalinksAutomatically generate clean SEO URLs for relevant catalogue combinations.
Externalized size guidePlug in an external size reference and expose it in product pages and the buying journey.
Product ranking from an external sourceDrive product ordering from an external business source: margin, stock, scoring, seasonality or commercial priorities.