Home energy and balcony solar storage
Zendure Germany
Zendure Germany sells more than batteries: it presents a system spanning balcony solar, dynamic tariffs and home loads. Shopify must translate that topology into configurations German customers can buy.
Visit the live project
Core implementation review
Three storefront journeys from model choice to purchase
A German balcony-solar purchase starts with whether a SolarFlow host can meet the household’s panels, load and tariff logic—not with a battery-size headline. The 800 and 2400 remain separate system classes; capacity, compatible parts and grid copy attach to a host the shopper can actually buy. The three journeys below are the ones that decide if that configuration is the right class.
Project context
Define how customers choose before defining the storefront
The decision begins with existing solar, daily consumption and goals such as self-consumption, tariff shifting or backup, then selects SolarFlow, AB batteries, PowerHub and accessories. Compatibility, installation and economic logic matter more than a single headline number.
German Shopify frontend, energy-product information architecture, specification storytelling, bundles and localized purchasing UX.
Keep the 800 and 2400 in separate power classes, not one variant matrix
Shoppers lock a host by bidirectional power and expansion first. Sellable capacity then lives on that product; the two system classes never share options.
- 01Enter balcony-storage ranges by power class
- 02Check bidirectional power, PV input and expansion against the home
- 03Choose sellable capacity on the matching host
- 04Treat batteries, cables and smart accessories as compatible parts
Implementation
- Collections merchandise power class. SolarFlow 800 Pro 2 and SolarFlow 2400 Pro remain separate products and do not share a variant matrix.
- The product object holds input, output and expansion limits; variants only represent sellable capacity, so system class is never an option value.
- Batteries, cables and smart accessories attach through compatibility data instead of being duplicated as a second host SKU.
Deployment and acceptance
- Capacity ceilings, compatibility lists and installation copy sit in section settings so German merchandisers can edit them without touching theme.js.
- Technical blocks can be reordered in the theme editor and remount through the official section lifecycle, keeping content separate from the interaction kernel.
- Shoppers confirm which system class they are buying before they look at capacity, so the 800 and 2400 are not treated as interchangeable trims.
- Later hosts can enter the same ranges by reusing power-class and compatibility fields, without rebuilding the variant model.
View script and Shopify API evidence
SolarFlow 2400 ProSolarFlow 800 Pro 2theme.jsMake household energy flow evidence a shopper can check before buying
The PDP uses system diagrams, specification tables and capacity limits to show input and output. Add-to-cart and related parts stay in that decision; countdown widgets do not join selection.
- 01Pair the system diagram with the buy box on desktop
- 02Use energy lines only to mark input and output
- 03Fold long technical copy on mobile
- 04Add the host after capacity and compatible parts are checked
Implementation
- Household energy flow, device combinations and specification tables carry the argument; yellow or green energy lines explain input and output rather than decorating campaigns.
- Power and expansion limits for 2400 Pro and 800 Pro 2 are readable at card level, so the wrong class is visible before the PDP.
- Grid, compliance and warranty copy uses high-contrast body text, kept apart from campaign headings.
- Related parts refresh from the Product Recommendations API against the current host; the countdown stays on the app-extension boundary and never joins product-selection state.
Deployment and acceptance
- swiper-bundle.min.js drives product and content carousels; theme.js and global-component.js register components, and campaign timers are not written into selection logic.
- gsc-countdown-widget.js remains an app extension, must not cover the primary add action, and keeps a reduced-motion path.
- Recommendations load asynchronously and never block host price or purchase controls if the request fails.
- One product page is enough to check energy relationships, capacity limits and the configuration currently for sale.
- Promotional timers stay out of system selection; complex homes can still move to consultation instead of buying against an unclear topology.
View script and Shopify API evidence
swiper-bundle.min.jstheme.jsglobal-component.jsProduct Recommendations APIgsc-countdown-widget.jsKeep search, cart and wallets inside the same de-DE transaction
German scene language can find the right host. After add-to-cart, cart sync, VAT presentation and wallet entry share the checkout preload locale.
- 01Reach a range or host from a German query
- 02Submit the current host or part through Ajax Cart
- 03Confirm quantity, tax presentation and related parts in the German cart
Implementation
- The Predictive Search API returns product and collection suggestions as the shopper types, covering German scene language as well as model names.
- Add and quantity changes use Cart Ajax add and change; German cart sync is handled by loader.init-shop-cart-sync.de.esm.js.
- Checkout preloads use locale=de-DE, portable-wallets.de.js exposes the German wallet entry, and payment scripts remain on the checkout boundary.
Deployment and acceptance
- Grid, VAT, delivery, warranty and tariff copy are maintained as Germany-specific content objects, not hardcoded in theme.js.
- Host power and expansion limits can stay shared with the global model line; sellable batteries, campaigns and installation notes are edited on the German store.
- Browse, add-to-cart and checkout preload stay in German and EUR, so the cart does not switch to another market’s rules.
- German compliance copy can change without a theme-kernel release, and campaign modules do not overwrite power ratings.
View script and Shopify API evidence
Predictive Search APICart Ajax: addCart Ajax: changeloader.init-shop-cart-sync.de.esm.jsportable-wallets.de.jstheme.jsOperational handoff
The operating team can continue after launch
- The catalog sells balcony solar-storage hosts. SolarFlow 800 Pro 2 and SolarFlow 2400 Pro stay in different power classes and never share a variant matrix.
- The product object holds bidirectional power, PV input and expansion limits; variants represent sellable capacity; batteries, cables and smart accessories are maintained as compatible parts.
- Grid and tariff copy remain merchant-editable content. Ranges, recommendations and product pages read the same power-class and compatibility fields.
- Checkout preloads use de-DE and EUR for German shoppers.
- Grid rules, VAT, delivery, warranty and dynamic-tariff copy are maintained on the German store, not reused from other-market host pages.
- portable-wallets.de.js exposes the German wallet entry; countdown and similar campaign extensions stay on the app boundary and do not change the theme.js kernel.
Research notesPublic sources and verification boundary
Public research sources
Content verification
Industry, product and observable feature notes are verified against the brand site. Apps, admin configuration and commercial data that cannot be confirmed from the storefront are not inferred. WESWOO scope is stated only from project records and client authorization.
Public information last reviewed: 2026-08-12