GUBUS MULTIPANEL
Multipanel is GUBUS's primary INPUT pattern for collecting data from users through Google Sheets.
Multipanel utilized the huge functionality of Google Spreadsheets and could be powered and automated with formulas and data validations, that crafts unbelievable flexibility and functionality in a minutes!
Multipanel can also be represented as Telegram Bot flow. Check it out here…
Multipanel is your go-to pattern for simple row-based data input.
When to use Multipanel:
- Collecting daily inputs (tasks, orders, supply events)
- Form-like data entry with multiple rows
- Temporary staging area for data before processing
- Input workflows that need validation and auto-cleanup
How Multipanel Works
In READ Stage
How GUBUS reads Multipanel:
[GUBUS SCHEMA READ STAGE]
→ [Read multipanel]
→ [Validate] if configured, strongly recommended, remember about layered validation
→ [Compose message] if configured, strongly recommended
→ [persist to SchemaContext.localObjs]
→ [Pass to Transform stage]
Step-by-step:
- Schema calls
readMultipanelForSchemaContext() - Data extraction starts at row
panel_line_zero_based - Reading stops when:
stop_read_fieldis empty (most common)stop_read_fieldequalsstop_read_valuemax_lineslimit is reached
- Built-in validation executes if configured via
validatetransform with reference matching multipanel reference - Validation failures are exposed using
front_to_pivot_model(user-friendly field names) - Data is mapped from array to object format using
modelfield - Results stored in
schemaContext.localObjs - Built-in composer creates summary message using header/footer/pattern
- Optional cleanup: Panel is cleaned if
cleanflag is set to “on”. Not recommended on test stage, mandatory on production run.
The most common read configuration is stop_read_field pointing to the main mandatory field in your panel (like “task_name” or “order_no”). This ensures reading stops when users leave the next row empty.
In POST Stage
When a schema writes to a Multipanel:
[Transform Result]
→ [SchemaContext.localObjs]
→ [Map to panel coordinates]
→ [Update multipanel row by row]
Step-by-step:
- Schema calls
executeMultipanelGubusPatternPostPending() - Each object in
schemaContext.localObjsis converted to sheet row - Rows are updated without insertion starting at
panel_line_zero_based + offset - Validation check: If rows to insert exceed
max_lines, SchemaContext is falsified and execution stops as a whole - Data is mapped using
modelfield
POST to Multipanel is always treated as a “set back” operation - it’s meant for correcting or returning data to the input panel, not for new data entry.
Key Mechanics
Panel Positioning:
- Uses
panel_line_zero_basedto determine starting row (0-indexed, so5means row 6 in Google Sheets) - All read and write operations start from this line
Line Limits:
max_linesenforces maximum rows to prevent overflow- If exceeded during POST, execution stops immediately
Stop Conditions:
- Cell under
stop_read_fieldis empty - Alternative:
stop_read_fieldequalsstop_read_value - ‘max_lines’ condition reached
Built-in Validation:
- Configured via
validatetransform with reference matching multipanel - Validation errors are exposed with user-friendly field names from
front_to_pivot_model - Failed validation prevents further processing
Built-in Composer:
- Creates summary messages using
header,footer, andmessage_construct_pattern - Message includes data from
message_construct_fields - Useful for bot notifications and team communication
Auto-Cleanup:
- Panel can be automatically cleaned after successful read
- Set
cleanto “on” for idempotent workflows - Set
are_checkboxesfor checkbox fields to switch them off during clean - Ensures panel is ready for next input session
Key Properties
Location Properties (Required)
Read Configuration
Always set stop_read_field to your crucial essential field. This ensures reading stops at the first empty cell.
Data Mapping (Critical)
Data mapping is automatically generated by GUBUS on pattern creation flow, triggered either from AI interacton or from ‘admin_server’ sheet.
Behavior Flags
Always enable provide_validation and configure validation rules. Validation catches errors before processing.
Message Construction
The composer creates summary messages after reading panel data. This is useful for bot notifications and team visibility.
Common Use Cases
Use Case 1: Supply Accounting
Scenario: Employee inputs multiple supply events throughout the day.
Schema Flow:
READ multipanel
→ VALIDATE supplies
→ POST to storage workfeed
→ POST to finance workfeed
Why Multipanel? Structured multi-row input with validation and auto-cleanup ensures panel is ready for next shift.
Use Case 2: Order Payment
Scenario: Single order payment input with bot integration.
Schema Flow:
READ orderInputPanel (or bot input)
→ CALCULATE totals
→ CALL Workflow module
→ UPDATE item state
→ POST to transactions
Why Multipanel? Simple structured input with immediate validation and workflow integration.
Schema Integration
READ Configuration
In GUBUS SCHEMA rule:
Properties to set:
source_type: Choose “MULTIPANEL”source_reference: Panel reference (e.g., “orderInputPanel”)- ⚠️ Does NOT support multiple references (one panel per schema), to read from multiple panels, use separate inner schemas
POST Configuration
In GUBUS SCHEMA rule:
Properties to set:
target_type: Choose “MULTIPANEL”target_names: Panel reference (e.g., “orderInputPanel”)- ⚠️ Does NOT support multiple references (one panel per schema)
Remember: POST to multipanel = “set back” operation for data correction.
Complete Flow Examples
Example 1: Order Processing Pipeline
Schema: processOrders
├─ READ stage
│ ├─ source_type: MULTIPANEL
│ └─ source_reference: orderInputPanel
│ └─ Reads new orders from panel (lines 5-25)
│
├─ TRANSFORM stage
│ ├─ validate (built-in multipanel validation)
│ ├─ calculateTotals
│ └─ enrichWithCustomerData via join module
│
└─ POST stage
├─ target_type: WORKFEED
└─ target_names: orderHistoryFeed
└─ Appends to permanent order log
Example 2: Round-Trip (Panel → Feed → Panel)
Schema: processTasks
├─ READ stage
│ ├─ source_type: MULTIPANEL
│ └─ source_reference: taskInputPanel
│
├─ TRANSFORM stage
│ └─ validateAndEnrich
│
└─ POST stage
├─ target_type: WORKFEED
└─ target_names: taskHistoryFeed
---
Schema: prepareReport
├─ READ stage
│ ├─ source_type: WORKFEED
│ └─ source_reference: taskHistoryFeed
│
├─ TRANSFORM stage
│ └─ summarize, format
│
└─ POST stage
├─ target_type: MULTIPANEL
└─ target_names: taskReportPanel (set back operation)
Best Practices
Do’s ✅
General:
- ✅ Use meaningful
referencenames (camelCase, descriptive like “dailyTaskInput”) - ✅ Always configure
validate- validation catches errors and aborts execution, preventing false executions and postings - ✅ If needed configure built-in composer expose important executions to teams
- ✅ Enable
cleanflag only after TEST stage to prevent accidental data deletion
Configuration:
- ✅ Reset
stop_read_fieldto crucial field, on pattern creation GUBUS sets first field randomly to it - ✅ Use
mute_on_set_backto protect certain fields during corrections - ✅ Configure
are_checkboxesexplicitly for all checkbox columns
Troubleshooting
”Pattern not found for client X and schema Y”
Cause: Misspelled pattern reference in GUBUS SCHEMA configuration.
Solution: Go back to schema and use Data Validation to select pattern reference - this ensures you choose only valid references.
”Lines to insert exceed max_lines allowed”
Cause: Trying to write more rows than max_lines permits.
Solution:
- Increase
max_linesin multipanel configuration - Filter data in TRANSFORM stage to reduce rows
- Consider using multiple panels or pagination
Validation Errors
Possible causes:
panel_line_zero_basedmisconfigured- Pattern moved left/right in sheet (breaks
modelmapping) modelmapping doesn’t match actual columnsstop_read_fieldnot configured (reads too much)- Sheet has no data in expected range
- User entered false values or not entered any
Solution checklist:
- ✓ Verify
panel_line_zero_basedpoints to correct starting row - ✓ Check
modelmapping matches current sheet structure - ✓ Confirm
stop_read_fieldis set to main mandatory field - ✓ Verify sheet has data in expected range
- ✓ Check you haven’t moved pattern horizontally
Clean Not Working (In users terms: Data Doesn’t Disappear)
Cause: Flag not set correctly or running in debug mode.
Solution:
- Check
cleanis exactly “on” (string value) - Verify schema is not running in
debugContext(clean disabled in debug mode) - Confirm schema execution was successful (clean only happens on success)
Creating a New Multipanel
Option 1: Use INJECT PATTERN Flow (Recommended)
-
Shape pattern header manually in your Google Sheet
- Add user-friendly field names in header row
- Use your users’ language
-
Go to admin_server page in ‘admin’ table
- Find
inject_patternpanel
- Find
-
Run detection flow:
- Choose pattern type: “multipanel”
- Enter unique
referencename (descriptive, camelCase) - Assign
table_idandsheet_name - Click DETECT PATTERN button
- GUBUS auto-detects
sheet_id
-
Map fields:
- GUBUS posts field name options over header
- Choose from suggested names or enter custom ones
- Click MAP FLOW button
- GUBUS creates
modelandfront_to_pivot_modelautomatically
-
Configure behavior:
- Reset
max_lines(GUBUS sets it to 1 by default) - Configure
stop_read_fieldandstop_read_value - Set
cleanbehavior (“on” or “off”) - Set
mute_on_set_backif needed - Set
mute_on_cleanto suppress notifications - Configure
are_checkboxesfor checkbox columns - Enable
provide_validation
- Reset
-
Test:
- Test with small dataset first
- Verify data flows correctly through READ and POST stages
- Enable
clean="on"only after successful testing
Option 2: AI flow (Experimental)
Talk to GUBUS AI on developer page, it will execute everything needed for you!
Required properties:
- your understanding of what and what for you want to instantiate
FAQ
WHEN SHOULD I USE MULTIPANEL VS WORKFEED?
+
Use Multipanel for temporary data entry that gets cleared after processing (orders, daily tasks, forms). Use Workfeed for permanent historical records that need to be preserved (transaction logs, audit trails, archives).
CAN I READ FROM MULTIPLE MULTIPANELS IN ONE SCHEMA?
+
No, each schema can only read from one multipanel. To read from multiple panels, create separate inner schemas for each panel and chain them together using next_schema or batch execution.
WHAT HAPPENS IF VALIDATION FAILS?
+
When validation fails, GUBUS stops execution immediately and exposes user-friendly error messages using front_to_pivot_model field names. The panel is NOT cleaned, preserving the user’s data for correction.
HOW DOES AUTO-CLEAN WORK WITH CHECKBOXES?
+
Configure are_checkboxes with comma-separated field names (e.g., “is_urgent,is_paid”). During clean operation, these fields are switched OFF instead of being cleared, maintaining proper checkbox state in Google Sheets.
CAN I INTEGRATE MULTIPANEL WITH TELEGRAM BOTS?
+
Yes! To expose multipanel via Telegram/Viber bot: (1) Involve workfeed reference to enable bot exposure, (2) Configure main_bot_menu rule to access multipanel exposure via button in telegram menu, (3) Configure bot_steps rule to set up interaction sequence.
Summary
Multipanel is GUBUS’s ephemeral input pattern designed for:
- ✅ Temporary data collection
- ✅ Form-like multi-row input
- ✅ Automatic validation and cleanup
- ✅ Built-in message composition
Key characteristics:
- Reads from fixed panel area (
panel_line_zero_based) - Enforces row limits (
max_lines) - Stops at empty field (
stop_read_field) - Auto-cleans after processing (
clean="on") - Validates with user-friendly errors (
validate+front_to_pivot_model)
When to use:
- Daily input tasks
- Order/transaction entry
- Survey collection
- Any temporary staging data
When NOT to use:
- Historical data storage (use Workfeed)
- Append-only logs (use Workfeed)
- Data that needs persistence (use Workfeed)
For permanent data storage and historical records, use Workfeed Pattern instead.
Next Steps
👉 Back to GUBUS RULE → - Learn about GUBUS rule structure 👉 Continue to GUBUS SCHEMA → - Learn how schemas execute data workflows 👉 ← Back to Getting Started - Return to the main documentation