Documentation
Guides

Advanced Usage

Power-user configurations, custom workflows, and performance optimization

15 min read

Advanced Content

This guide covers advanced configuration options that are intended for experienced users. Incorrect settings can affect platform performance. We recommend testing changes in a staging environment before applying them to production.

Custom Invoice Templates

Umbra ERP supports fully customizable invoice and quote templates. You can define templates using JSON configuration:

invoice-template.json
JSON
{
"name": "Professional Invoice",
"version": "2.0.0",
"layout": {
"header": {
"logo_position": "left",
"show_company_address": true,
"accent_color": "#8B5CF6"
},
"body": {
"columns": ["description", "quantity", "unit_price", "total"],
"show_tax_breakdown": true,
"show_discounts": true
},
"footer": {
"payment_instructions": true,
"bank_details": true,
"terms_and_conditions": true
}
},
"numbering": {
"prefix": "INV-",
"start": 1001,
"padding": 5
}
}

Workflow Automation

Define custom workflows that run on specific triggers. Workflows are defined in YAML format and can chain multiple actions together:

workflows/invoice-reminder.yml
YAML
name: invoice-payment-reminder
trigger:
event: invoice.overdue
delay: 3d
steps:
- name: Send Reminder Email
action: email.send
template: payment_reminder
to: "{{ invoice.customer.email }}"
- name: Update Invoice Status
action: invoice.update
data:
reminder_sent: true
reminder_date: "{{ now }}"
- name: Notify Account Manager
action: notification.send
channel: slack
message: "Invoice {{ invoice.number }} is overdue by {{ invoice.days_overdue }} days"
- name: Escalate if Needed
condition: "{{ invoice.days_overdue > 30 }}"
action: task.create
assignee: "{{ invoice.account_manager }}"
title: "Escalate overdue invoice {{ invoice.number }}"

API & Webhooks

Set up webhooks to receive real-time notifications when events occur in your Umbra ERP workspace:

webhook-handler.ts
TypeScript
import express from 'express';
import crypto from 'crypto';
const app = express();
// Verify Umbra ERP webhook signature
function verifySignature(payload: string, signature: string, secret: string) {
const expected = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}
app.post('/webhooks/umbra', express.raw({ type: 'application/json' }), (req, res) => {
const signature = req.headers['x-umbra-signature'] as string;
const payload = req.body.toString();
if (!verifySignature(payload, signature, process.env.WEBHOOK_SECRET!)) {
return res.status(401).json({ error: 'Invalid signature' });
}
const event = JSON.parse(payload);
switch (event.type) {
case 'invoice.paid':
console.log('Invoice paid:', event.data.invoice_id);
// Update your accounting system
break;
case 'inventory.low_stock':
console.log('Low stock alert:', event.data.product_id);
// Trigger reorder workflow
break;
case 'employee.leave_request':
console.log('Leave request:', event.data.employee_id);
// Notify manager
break;
}
res.json({ received: true });
});
app.listen(3000);

Multi-Company Setup

Umbra ERP supports managing multiple companies from a single account. Configure inter-company transactions and consolidated reporting:

Multi-Company CLI Commands
Bash
# List all companies in your account
umbra companies list
# Switch active company context
umbra companies switch --id comp_xyz789
# Generate consolidated report across all companies
umbra reports consolidated --type profit-loss --period 2026-Q1
# Set up inter-company invoice
umbra invoices create --from comp_abc --to comp_xyz --amount 5000

Data Import & Export

Migrate data from other systems or export your Umbra ERP data:

Import & Export Commands
Bash
# Import customers from CSV
umbra import customers --file customers.csv --mapping name,email,phone,company
# Import products from another ERP
umbra import products --file products.xlsx --format xlsx
# Export all invoices for a period
umbra export invoices --from 2026-01-01 --to 2026-03-31 --format csv
# Full data export (GDPR compliance)
umbra export all --format json --encrypt

Best Practices

When working with advanced configurations, follow these best practices:

  • Always test configuration changes in a staging environment first
  • Use version control for workflow YAML files
  • Document custom templates for your team
  • Set up webhook signature verification for security
  • Review user permissions regularly