Block Catalog

Every block available in the ECP Portal Builder, with the gates that control its availability and the settings it exposes.

Counts: 57 built-in block types + 1 runtime custom_block = 58 blocks, in 6 categories (Content, Entity, Service, Visualization, System, Custom).

Sources: types enums.ts, gates registry/index.tsx, settings property-panel/renderer/* (all in the epilot360-ecp-settings repo — not this one); labels epilot360-root-config/locales/{en,de}/end-customer-portal.json.

Gate & column key

  • Gates — Top-level = addable directly; Nested = only inside the named parent; Container = holds blocks; Header/Footer = restricted to that area; Hidden = not in the add-block palette; Once = one per page/portal; flag x = feature-flag gated; requires x = portal setting; …context = required page context.
  • Standard visibility = shared section: Visible-for / Hidden-for targets (match any/all, private pages only) · scheduled start/end · toggles Hidden / mobile / desktop / in-App.
  • Shared design (Layout style) = single select Stacked / Two columns.

The catalog

CategoryBlocktypeGates / availabilityContent settingsDesignVisibility & other
ContentTitletitleTop-levelTitle (rich text)Standard
ContentTexttextTop-levelRich-text bodyStandard (renderer reused by system_banner_content)
ContentTeaserteaserTop-levelTitle · Subtitle · Button label · Action (None/Link/Journey/Seamless link/Portal functionality + fields) · Teaser imageStandard
ContentButtonbutton_linkTop-levelLabel · Button text · Action (types vary by nesting) · Export-columns editor (Portal functionality → Export list + flag)Standard
ContentDisplay fielddisplay_fieldTop-levelLabel · Value · Hide empty valueStandard
ContentApp Promoapp_promoTop-level · flag portals-app-promo-block · public pagesRich-text intro · Store links (App Store URL, Google Play URL)Standard (defaults Hidden-in-App on)
ContentGroupgroupTop-level · containerGroup labelShared (Layout style)Standard
ContentTabstabsTop-level · container (holds Tab)LabelStandard
ContentTabtabNested (in Tabs)LabelStandard
ContentStepperstepperTop-level · container (holds Step) · flag portals-stepper-blockLabelStandard
ContentStepstepNested (in Stepper)Step labelShared (Layout style)Standard
ContentStep Progressstep_progressNested (in Step)Progress label
ContentStep Actionsstep_actionsNested (in Step)Step Actions label · Disable back button · Back button label · Next button label · Next button action (Go to next step / Trigger action) · Target step
ContentStep Summarystep_summaryNested (in Step)Summary label
ContentFooterfooterGlobal · once · footer section · systemDescription · Menu items (Label + URL; system links locked)Standard
ContentLogologoHidden · system-managedLogo image — light + dark (edits portal-wide logo)— (none)
ContentSystem banner contentsystem_banner_contentHidden · child of System bannerRich-text bodyStandard
ContentPagepageStructural page node · onceLabel · Slug · URL preview · Detail-page config (Use as detail page → Show in navigation + schema) · Parent page · Show in navigation · Global config (Logo, Favicon light/dark) · Maintenance mode (maintenance page only)Custom "Page visibility" (targets portal_user/contact; scheduled; Hidden + Hidden-in-App only)
EntityEntity selectorentity_selectorHeader · once · requires contract entity · alt. of Global search · hidden if Global search existsPretitle · Title · List content templates (top/main/bottom) · Show/Hide inactive contracts (+ filter-inactive target) · Organize (Order by+Direction, Group by+Direction, Group title, Visible results, allow page-size change) · Search (Show search, Search for, end-users select attributes)Standard
EntityGlobal searchglobal_searchHeader · once · alt. of Entity selectorLabel · Title · Description · Button Prompt Text · Search Placeholder · Configurations list (per schema: schema, results name, destination page, title/list templates, filter/organize, enable search)Standard
EntityEntity Listentity_listTop-level · can hold Quick actions/ButtonLabel · Title · Disable all interactions · Configurations list (schema, name, destination page, icon, content templates, main-content-right, Indication, context-filter mapping, filter-by-target, end-user filters) · Organize results (order/group/visible/search, Show active workflow + Audience, Selection for data injection [in stepper step], Enable multi-selection)Standard + "Hidden when empty"
EntityRequestsrequestsTop-levelLabel · Order templates (top/main/bottom) · Opportunity templates (top/main/bottom) · Organize results (filter/order/group/visible/search) · Show active workflow (+ Audience)Standard
EntityAttributeattributeTop-levelAttribute selector (+ related-schema attribute if relation) · Label · Hide empty valueStandard
EntityAttribute Groupattribute_groupTop-level · holds AttributeGroup label · Selected attribute group · Hide empty valueShared (Layout style)Standard
EntityEntity Attributesentity_attributesTop-level · deprecatedEntity/schema (contact/order/opportunity) · Hide empty value · Exclude groups · Exclude attributesShared (Layout style)Standard
EntityProductsproductsTop-levelEntity/schema · Product mode + external catalog (flag journey-external-catalog-integration) · TitleStandard
EntityProduct Recommendationsproduct_recommendationsTop-level · flag ff-product-recommendationsCampaign · Product mode + external catalog · Product Availability (use delivery address / address template) · Input Mapping for Variable Prices · Appearance (Title, Subtitle, Button label, Action) · Pre-fill Journey Mapping (journey action) · Allow dismissal (+ label) · Teaser imageStandard
EntityDocumentsdocumentsTop-level · can hold Quick actions/ButtonEntity/schema (incl. relations) · Title · File types · End-user filters (Field/Target) · Organize results (data injection [in stepper], multi-select, filter/sort/group/visible/search)Standard
EntityContact cardcontact_cardTop-levelTitle · relation attribute selector · relation labels (optional filter)Standard
EntityOrder summaryorder_summaryTop-level · schema: opportunity/orderTitle · Content top / Main (required) / Bottom templatesStandard
EntityPending Requestspending_requestsTop-levelEntity · Attributes · Include pending meter readings (entity=meter) · Title · Empty state messageStandard
EntityBalancebalanceTop-level · requires commodity_billing + contract contextLabelStandard
EntityPayment InfopaymentTop-level · requires commodity_billing + contract contextLabelStandard
EntityMeter selectormeter_selectorTop-level · requires contract context · schema: meter/meter_counterTitle · Content top/Main/Bottom (meter attribute templates) · Show decommissioned metersStandard
EntityAdd meter readingadd_meter_readingTop-level · depends on Meter selectorLabel · Button label · Implausible-reading settings (disallow implausible, require remark, require photo, remark suggestions, billing decimal precision)Standard
EntityMeter readings detailsmeter_readingsTop-level · depends on Meter selectorLabel · Visible results (page size) · Meter-counter templates (top/bottom) · Meter-reading templates (top/main/bottom)Standard
EntityMeter countersmeter_countersTop-level · holds Attribute · depends on Meter selectorLabelStandard
EntityMeter Readingsmeter_readingTop-level · deprecated · requires meter contextHeadlineStandard
EntityAccount User Detailsaccount_user_detailsRequires user_account_self_management + portal-user contextLabelStandard
ServiceAccount Usersaccount_usersTop-level · requires user_account_self_managementTitle · Button label · Section Titles (Invited/Active/Disabled) · Invite Form Fields (Email default + custom attribute fields)Standard
ServiceJourney Actionsjourney_actionsTop-levelEntity/schema selector · TitleStandard
ServiceQuick actionsquick_actionsTop-level · container (holds Quick action)Title · Hide titleInline: Layout (Grid/Scroll box/Stacked) · Theme style (Soft)Standard
ServiceQuick actionquick_actionNested (in Quick actions)Title · Subtitle · Icon · Action (Link/Journey/Seamless link/Portal functionality + fields; Export-columns when export-entities in Entity List)Inline: Size (Small/Medium/Large)Standard
ServiceOrder actionsorder_actionsTop-levelTitleStandard
ServiceWorkflowsworkflowsTop-levelEntity/schema selector · Audience (Customers/Installers) · Title · Show timestampsStandard
ServiceCampaigncampaignTop-levelCampaign selector · Title · Subtitle · Button label · Action · Allow dismissal (+ label) · Teaser/background imageStandard
ServiceChange installment ratechange_installment_rateTop-level · requires commodity_billingLabelStandard
ServiceExternal linksexternal_linksTop-level · deprecated (use Quick actions)— (none; placeholder)Standard
VisualizationConsumption visualizationconsumption_visualizationTop-level · requires meter contextTitle · Integration select · Allow export · Compact layout (desktop only)Standard
VisualizationDynamic Tariffdynamic_tariffTop-level · requires contract contextLabel · Headline · Subheadline · Integration select · Allow exportStandard
SystemLogin formlogin_formHidden · system-managed— (none; placeholder)Standard
SystemRegistration formregistration_formHidden · system-managedConsent/agreement rich text (per language)Standard
SystemForgot password formforgot_password_formHidden · system-managed— (none; placeholder)Standard
SystemForgot password change formforgot_password_change_formHidden · system-managed— (none; placeholder)Standard
SystemSet password new email formset_password_new_email_formHidden · system-managed— (none; placeholder)Standard
SystemConfirm email formconfirm_email_formHidden · system-managed— (none; placeholder)Standard
SystemSystem bannersystem_bannerHidden · system-managedBanner type (Information/Warning/Error)Custom: Banner active · Start date · End-date toggle + End date
CustomCustom blockcustom_blockHidden · runtime-registered by Spark SDK appsThird-party info (App + Component name) + marketplace link · Position select (Main/Inline/Floating Right/Floating Left — when multiple supported)Standard

Custom blocks — this repo's extension point

The custom_block row above is the bridge to this repo: it's how a custom block (a Spark iframe app built with @epilot/spark-ui + @epilot/spark-sdk) appears inside ECP's built-in slot system. Every other row in this catalog is a built-in block with zero code in this repo — Spark's contribution to a portal page is that one row, registered at runtime as a Marketplace app component.

To build the app that fills that slot, see Build a block for the end-to-end walkthrough, or the Spark SDK overview for the handshake and lifecycle.

Keeping this current

This table is a point-in-time export from the epilot360-ecp-settings block registry and property renderers — a different repo this workspace has no code access to. It is refreshed by hand: paste a fresh export into the marked region above whenever blocks or their property panels change in that repo. Do not add automation here to keep it in sync; there is no live connection to source from this repo.

On this page