Features

Everything you need to configure, calculate and sell

From dynamic forms to production BOM, CPQ.core covers the entire configuration and pricing cycle for complex products.

Dynamic Forms

Create complete product configurators without writing HTML or JavaScript. Define fields, validations and conditional logic in the schema.

  • 10 field types

    Number, slider, dropdown, radio, visual swatch, checkbox, text, date, quantity and hidden.

  • 👁

    Conditional visibility

    Fields and groups that appear or disappear based on the user's configuration.

  • 🔄

    Auto refresh

    Options that change the form structure reload it automatically.

  • 4 layouts

    Sections, tabs, accordion or inline. The layout can even be chosen by the user.

form {
    dynamic: "fields"
    layout: "tabs"

    groups {
        dimensoes: { label: $"group_dimensoes", order: 1 }
        acabamentos: {
            label: $"group_acabamentos"
            visible_when: tipo_produto != "standard"
        }
    }

    fields {
        largura: {
            type: number
            label: $"label_largura"
            unit: "mm"
            min: 400, max: 2400
        }
        cor: {
            type: swatch
            label: $"label_cor"
            options: ["branco", "cinza", "preto"]
        }
        vidro_duplo: {
            type: checkbox
            label: $"label_vidro_duplo"
            visible_when: tipo_produto == "premium"
        }
    }
}

Supported Field Types

123
Number
mm, kg, m²
Slider
Visual range
Dropdown
Select
Radio
Inline buttons
Swatch
Colours/materials
Checkbox
Toggle on/off
Aa
Text
Free text
📅
Date
Date picker
×1
Quantity
With presets
Hidden
Hidden field

Pricing, Bill of Materials, Production Info

Automatically get any information derived from the configuration: price, bill of materials, production times, weights, volumes and any other data you define as output.

  • 💰

    Instant calculation

    All outputs update with every configuration change, without reloading the page.

  • 📜

    Custom output groups

    Define groups like "production", "shipping", "quality" — each with the fields you need: m², linear metres, times, weights, units.

  • 📈

    Price breaks & interpolation

    Price tables by quantity with automatic linear interpolation between ranges.

  • 💲

    Formatted currency

    EUR, USD, GBP, BRL with separators, decimals and symbol position per locale.

// Tabelas de preço e materiais
table precos_vidro {
    1: 85.00     // até 1m²
    3: 72.00     // até 3m²
    6: 65.00     // até 6m²
}

// Cálculos
let area = largura * altura / 1000000
let preco_m2 = interpolate(precos_vidro, area)
let perimetro = (largura + altura) * 2 / 1000

add price: area * preco_m2
multiply price by 1.23  // IVA

// BOM para produção
output {
    production {
        vidro_m2: round(area, 2)
        perfil_m: round(perimetro, 1)
        kit_ferragens: 1
        parafusos: ceil(perimetro * 5)
    }
}

Declarative Rules, Not Code

All configuration and pricing logic in a readable schema. No conventional programming, no code deployment.

  • 📑

    Lookup tables

    Map materials to prices, colours to references, quantities to discounts.

  • 🔌

    Conditional logic

    If/else for complex business rules: surcharges, promotions, restrictions.

  • 🔁

    Reusable functions

    Define complex calculations once, use across multiple products.

  • 🔗

    Shared templates

    Include common tables and functions across products with cpq://system/...

include "cpq://system/base_caixilharia"

@config {
    let margem = 1.15
    let iva = 0.23
}

func preco_perfil(metros, tipo) {
    let base = lookup(tabela_perfis, tipo)
    let custo = metros * base.preco_m
    return custo * @config.margem
}

let custo_perfil = preco_perfil(perimetro, tipo_perfil)
let custo_vidro = area * preco_m2_vidro

add price: custo_perfil + custo_vidro
multiply price by (1 + @config.iva)

error_if area > 6 : $"err_area_max" { max: 6 }
warn_if area > 4 : $"warn_area_grande"

Validation and Internationalisation

Prevent impossible orders and speak each customer's language.

Blocking Errors

Rules that prevent impossible-to-produce configurations. The user sees a clear message with the values in question.

Warnings

Non-blocking alerts for special situations: high quantities, unusual dimensions, affected lead times.

🌐

Multi-language

Labels, errors, select options — all translatable. Support for PT, EN, ES, FR, DE and other languages.

📑

Dynamic Messages

Value interpolation in messages: "Area 15m² exceeds maximum of 10m²" generated automatically.

📂

Translation Hierarchy

Translations at system, tenant and product level. Each level can override the previous one for full customisation.

💰

Currency per Locale

Automatic currency formatting with correct symbol, separators and decimals for each market.

Plugins for Major Platforms

Ready-made plugins with feature parity. Install, configure and start selling configurable products.

Magento 2
WooCommerce
Shopify
PrestaShop
FluentCart
API REST

Features Across All Platforms

All Field Types

All 10 field types supported on each platform, with the same behaviour.

💰

Real-Time Pricing

Price updated on every change, natively integrated with the shopping cart.

🛒

Cart Integration

Configuration saved in the order. BOM available for each item at checkout.

6 Visual Themes

Adapt the configurator to the store's visual identity. Additional customisation via CSS.

Configurar Produto
Largura (mm)
Material
Cor
€ 142,50
Adicionar

Default

Clean, modern design

Configurar Produto
Largura (mm)
Material
Cor
€ 142,50
Adicionar

Corporate

Professional, dark tones

Configurar Produto
Largura (mm)
Material
Cor
€ 142,50
Adicionar

Industrial

Bold, orange accent

Configurar Produto
Largura (mm)
Material
Cor
€ 142,50
Adicionar

Large

Bigger fonts, accessibility

Configurar Produto
Largura (mm)
Material
Cor
€ 142,50
Adicionar

Compact

More fields, less space

Configurar Produto
Largura (mm)
Material
Cor
€ 142,50
Adicionar

Minimal

Borderless, minimalist

Backoffice & API

Complete panel for managing products and documented API for custom integrations.

  • 📝

    Syntax Highlighting Editor

    Code editor with autocomplete, real-time validation and section navigation.

  • 📊

    Price Simulator

    Test configurations and see prices before publishing. Errors with direct link to schema line.

  • 👥

    Multi-tenant with Roles

    Admin, editor and viewer. Data isolated by tenant with dedicated API Keys.

  • 📚

    Documented REST API

    OpenAPI specification, quick start guide and interactive documentation portal.

// Fluxo típico de integração via API

// 1. Obter formulário do produto
GET /v1/products/janela-aluminio/form
    ?tenant_id=demo&lang=pt-PT

// 2. Utilizador preenche configuração
//    (formulário renderizado pelo frontend)

// 3. Calcular preço e BOM
POST /v1/calculate
{
    "product_id": "janela-aluminio",
    "configuration": {
        "largura": 1200,
        "altura": 1000,
        "vidro": "temperado"
    },
    "quantity": 5,
    "output_groups": ["*"]
}

// Resposta: preço + BOM + warnings

Ready to configure?

Create a free account and test CPQ.core with demo products.