---
title: "Generate embeddable self-service widgets for customer portals (reduces call center load by 30-40%)"
method: POST
path: "/api/customer-service/portal-widget"
tags: ["Customer Service"]
---

# Generate embeddable self-service widgets for customer portals (reduces call center load by 30-40%)

`POST /api/customer-service/portal-widget`

## Request

- Base URL: `https://api.cernion.de`
- URL: `https://api.cernion.de/api/customer-service/portal-widget`
- Auth: none declared

Generate embeddable self-service widgets that dramatically reduce call center load and improve customer satisfaction. **Business Impact: 30-40% reduction in support calls** = 450-600 min/month saved = **4,800-6,600 €/year savings** per 100 monthly support requests.

**8 Widget Types**:

1. **installation_lookup**: Find installation by address or postal code
   - Use case: "Where is my solar system registered?"
   - Reduces: 25% of lookup calls

2. **installation_overview**: Quick info dashboard for customer
   - Shows: MaStR number, capacity, commissioning date, grid operator
   - Reduces: 30% of "What are my installation details?" calls

3. **operator_change_wizard**: Step-by-step operator change guide
   - Use case: House purchase, inheritance, company restructuring
   - Reduces: 40% of operator change calls (most complex process)
   - Provides: Checklist, deadlines, required documents, forms

4. **storage_calculator**: Storage worthiness check
   - Inputs: PV capacity, consumption, electricity price
   - Output: ROI calculation, payback period, optimal storage size
   - Drives: Upsell opportunities (storage retrofit)

5. **eeg_end_helper**: Post-EEG guidance (after 20 years)
   - **CRITICAL for installations ≥18 years old!**
   - Options: Full feed-in (market price), self-consumption, direct marketing
   - Regulatory: EEG 2023 changes, market value calculation

6. **faq_embedded**: Top 10 frequently asked questions
   - Auto-answers: "Can I increase capacity?", "How to change operator?", "What if my system breaks?"
   - Reduces: 15-20% of routine questions

7. **contact_finder**: Find VNB, BNetzA, Finanzamt by postal code
   - Shows: Contact details, opening hours, online portals, forms
   - Reduces: "Who is responsible for...?" calls

8. **document_templates**: Download forms (operator change, capacity increase, decommissioning)
   - Self-service: No waiting for email/post
   - Reduces: Document request calls

**Display Modes**:
- **compact** (300x400px): Sidebar widget
- **full**: Full-page integration
- **modal**: Popup overlay (triggered by button)
- **embedded**: Inline integration in page flow

**Integration**:
- HTML/CSS/JavaScript snippet (copy-paste ready)
- iframe or Web Component
- REST API for custom implementations
- Responsive design (mobile-friendly)
- Light/dark theme support
- Multi-language (de/en)

**Business Benefits**:
- 24/7 availability (no waiting for callback)
- Instant answers (higher customer satisfaction)
- Reduced peak-time call center load (mornings, Mondays)
- Scalable (serves unlimited customers simultaneously)
- Measurable impact (track widget usage vs. call reduction)

**ROI Example**:
- Before: 100 support calls/month @ 15 min/call = 1,500 min/month
- After: 60-70 calls/month (30-40% self-service) = 900-1,050 min/month
- **Savings: 450-600 min/month** = 7.5-10 hours/month
- **Cost savings: 4,800-6,600 €/year** (assuming 40 €/hour loaded labor cost)
- **Customer satisfaction: +15-25% (instant help vs. callback wait)**

## Query parameters

- `token` string

## Request body

- object
  - `widgetType` 'installation_lookup' | 'installation_overview' | 'operator_change_wizard' | 'storage_calculator' | 'eeg_end_helper' | 'faq_embedded' | 'contact_finder' | 'document_templates', required: Type of widget to generate
  - `mode` 'compact' | 'full' | 'modal' | 'embedded': Display mode
  - `theme` 'light' | 'dark' | 'auto'
  - `language` 'de' | 'en'
  - `outputFormat` 'html' | 'json' | 'markdown': Output format for the widget
  - `mastrNummer` string: Optional: MaStR number for personalized widgets
  - `postalCode` string: Optional: Customer postal code for location-based help
  - `installationAge` number: Optional: Installation age in years
  - `maxHeight` number: Maximum widget height in pixels
  - `includeBranding` boolean
  - `includeContactCTA` boolean
  - `token` string: Optional Cernion MCP token for this request. Overrides CERNION_TOKEN when provided.

## Response `200`

Successful response

- object

---

[API](https://skmtc.dev/cernion/apis/cernion-energy-tools-api.md) · [All operations](https://skmtc.dev/cernion/apis/cernion-energy-tools-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cernion/apis/cernion-energy-tools-api/revisions/cdb94473b538?raw)
