Skip to content
Case study · High

TYPO3 Google Reviews Extension

A TYPO3 extension that imports Google Business Profile reviews through Google's APIs, stores them in local TYPO3 database tables, and renders them through configurable frontend plugins. The work focused on making external review data reliable inside TYPO3: OAuth setup, local persistence, import tooling, frontend display options, accessibility checks, and production-readiness around Google verification.

PHP DDEV APIs Auth Automation Testing Documentation Backend Architecture API Design Reliability Case Study
Role
Backend and frontend implementation support — TYPO3 extension, API integration, accessibility, documentation.
Stack
TYPO3 / PHP / Google Business Profile API / OAuth2 / JavaScript / Splide / Accessibility
Published
May 2026
Context

The project was built in a TYPO3 environment where Google Business Profile reviews needed to become reusable site content instead of manually copied marketing snippets. The extension connects TYPO3 with Google's review data, stores reviews and locations locally, and makes them available to editors through backend configuration and frontend plugins.

Problem

Google reviews are useful for trust and conversion, but they are difficult to manage consistently when they live only outside the CMS. The team needed a way to import reviews from Google, persist them locally, map them to TYPO3 sites or locations, and display them with editor-controlled filtering, sorting, and field visibility — without turning every page integration into a custom implementation.

Constraints

The integration had to respect Google's OAuth flow and API requirements, including test-user handling while the Google Cloud app is still in testing mode and the later move toward production verification. The TYPO3 side also had to stay editor-friendly: configuration belongs in the backend module, display options belong in FlexForms, and imported content must survive cache clears and normal TYPO3 workflows. Frontend output had to remain accessible, especially for carousel behavior, keyboard interaction, reduced-motion preferences, and review content readability.

Solution

The extension imports Google Business Profile locations and reviews through Google's APIs using OAuth2 credentials configured in TYPO3. Imported locations and reviews are stored in TYPO3 database tables so frontend rendering does not depend on calling Google at page-request time. A CLI import command supports repeatable synchronization and can be scheduled for automated updates. Editors can manage the integration through a TYPO3 backend module and place review output through frontend plugins. The review plugin supports filter and display options such as star ratings, date ranges, sorting, selected individual reviews, and toggles for fields like profile image, date, name, comment text, and star rating. The frontend work also includes accessibility-oriented carousel behavior: reduced-motion handling, pause on hover/focus, keyboard-focused operation, localized labels, and review output that can be tested with accessibility tooling.

Result

The project produced a reusable TYPO3 review system instead of one-off review embeds. Review data can be imported, stored, filtered, sorted, and rendered through configurable frontend plugins. The implementation also creates a clearer path toward production use by documenting OAuth setup, Google verification requirements, CLI import behavior, troubleshooting steps, and accessibility concerns.

Lessons learned

External API integrations become more maintainable when the CMS owns a local, inspectable copy of the imported data. The difficult part is not only fetching the data; it is designing the full operational loop: credentials, refresh behavior, import commands, editor configuration, frontend accessibility, troubleshooting, and verification requirements before production use.

Next step

Talk about a backend role or a specific system?

Send a short note about the team, the stack, and the problem. Expect a clear, low-drama reply within a couple of working days.