Automations are formulas embedded in an entity. They use Python syntax rather than a proprietary formula language — so instead of learning a custom expression builder, you write what you mean:
self.fields.mass = self.fields.density * self.fields.volume
Automations can calculate and update entity content and values:
self.fields.category = "Stability"
self.status_tag = ("Expired", "danger")
Each automation is sandboxed to the entity it belongs to — it can read fields on the current entity and any referenced entities, but can only write to the current entity. Automations cannot access external systems or the wider platform. They are version-controlled through change sets and tracked in the audit trail like any other configuration change.
Backlinks (referenced_by)
Access entities that reference the current entity via self.referenced_by:
# Iterate all entities that reference this one
for ref in self.referenced_by:
print(ref.title, ref.id)
# Access by title or index
batch = self.referenced_by["Batch 001"]
first = self.referenced_by[0]
referenced_by returns a read-only collection (same access patterns as reference fields). It includes the 100 most recently created backlinks — entities that have this entity in any of their reference fields.
Field name access
Use dot notation with snake_case for simple field names:
self.fields.reactor_temp_C
Use bracket notation for field names that contain spaces or special characters:
self.fields["Temperature (°C)"]
self.fields["Lot Number"] = "LOT-2026-001"
Both styles work for reading and writing. The platform automatically maps snake_case attribute access to the original field name, so self.fields.reactor_temp_C and self.fields["reactor_temp_C"] are equivalent.
Existing code using entity.fields continues to work — entity is an alias for self.
Creating labels
Create PDF labels from entity data with configurable layouts. Requires the Label creation blueprint — see Creating labels blueprint.