drupal / eca_starterkit
This recipe provides a quick-start setup for ECA with the recommended models being downloaded and installed.
Package info
git.drupalcode.org/project/eca_starterkit.git
Type:drupal-recipe
pkg:composer/drupal/eca_starterkit
Requires
- drupal/eca: ^3.1
- drupal/eca_tamper: ^2.0
- drupal/eca_tool: ^1.0
- drupal/modeler: ^1.0
- drupal/modeler_api: ^1.1
This package is auto-updated.
Last update: 2026-03-13 16:09:26 UTC
README
This recipe provides a quick-start setup for ECA (Events - Conditions - Actions) together with the new Workflow Modeler -- a modern, React Flow-based visual editor for building ECA models by drag-and-drop.
Why use this recipe?
Setting up ECA manually means choosing which sub-modules to enable, installing the modeler stack, and figuring out how the pieces fit together. The Starterkit does all of that in a single command:
- Installs the recommended set of 20 modules covering the full ECA ecosystem, so you can start building workflows right away without going back to enable modules you missed.
- Sets up the new Workflow Modeler (including the Modeler API), giving you a visual canvas where you can drag, drop, and connect events, conditions, and actions -- no YAML editing required.
- Ships a working demo model that customises the user registration form, so you can open the modeler immediately and see a real ECA model in action rather than staring at an empty screen.
What gets installed
ECA core sub-modules
| Module | Purpose |
|---|---|
| eca_access | Access control events and conditions |
| eca_base | Foundation actions (tokens, lists, scalars, logging, etc.) |
| eca_cache | Cache invalidation and rebuilding |
| eca_config | Configuration entity operations |
| eca_content | Content entity CRUD events and actions |
| eca_endpoint | Custom route / endpoint handling |
| eca_file | File and media operations |
| eca_form | Form build, alter, validate, and submit handling |
| eca_log | Logging actions |
| eca_menu | Menu link events and actions |
| eca_misc | Miscellaneous utilities |
| eca_queue | Queue processing |
| eca_render | Render and display operations |
| eca_ui | Makes ECA a model owner for the Modeler API |
| eca_user | User-related events and actions |
| eca_views | Views integration |
Extension modules
| Module | Purpose |
|---|---|
| eca_tamper | Tamper plugins as ECA actions (explode, string length, find/replace, etc.) |
| eca_tool | Events and actions for the Drupal Tool API |
Modeler stack
| Module | Purpose |
|---|---|
| modeler_api | Framework that connects model owners (ECA) with visual modelers |
| modeler | The Workflow Modeler -- a React Flow canvas with drag-and-drop, undo/redo, search, dark mode, execution replay, live testing, and export to recipes, archives, JSON, or SVG |
In-place customization
One of the standout features enabled by this recipe is in-place customization -- the ability to customize any Drupal form directly on the form page itself, without opening the modeler or writing code.
How it works
The eca_form module ships a set of form templates: reusable ECA patterns
with configurable placeholders. When an authorized user (with the
modeler api edit eca permission) visits a page containing a form, the template
system activates:
- Focus a form field -- a lightning-bolt icon appears next to it.
- Click the icon -- a popup lists all available customizations for that field type (e.g., "Set label", "Set max length", "Hide this field").
- Configure and save -- fill in the values, check "Apply this template", and click Save. The system creates a fully functional ECA model behind the scenes -- no modeler interaction needed.
Returning to the same form later shows a checkmark on templates that were already applied, with the previous values pre-populated so you can adjust them.
Available form templates
| Template | What it does |
|---|---|
| Set label | Change a field's label |
| Set default value | Pre-fill a field with a default |
| Set max length | Validate that a text field does not exceed a character limit |
| Hide this field | Completely hide a single field |
| Hide fields when selected | Make fields invisible when a checkbox is checked |
| Show fields when selected | Make fields visible when a checkbox is checked |
| Disable this field | Disable a single field |
| Enable this field | Enable a previously disabled field |
| Require this field | Make an optional field required |
| Make field optional | Make a required field optional |
| Disable fields for certain value | Disable fields when a select dropdown matches a value |
| Set field value to selected index | Copy a select dropdown's selection into another field |
These templates work on any Drupal form, not just the forms you build yourself. This makes in-place customization a powerful tool for tailoring admin forms, contrib module forms, and user-facing forms alike.
Demo model: User Registration Form
The recipe ships a ready-to-use ECA model (form_user_register_form) that was
built entirely through in-place customization on the user registration form. It
demonstrates three common form-manipulation patterns:
- Relabelling fields -- Changes the "Email address" label to "E-Mail" and the "Username" label to "Name".
- Conditionally hiding fields -- Hides the notification, preferred language, and timezone fields when the "Administrator" role checkbox is selected (using a loop over a list of field names).
- Custom validation -- Rejects the name field if its length exceeds 10 characters.
Open this model in the Workflow Modeler after installation to see the resulting
ECA model, or visit /user/register and click into a form field to try
in-place customization yourself.
Requirements
- Drupal 11.3 or later
- ECA 3.1 or later
Installation
# Require the recipe and its dependencies
composer require drupal/eca_starterkit
# Apply the recipe with Drush (version 13 or later)
drush recipe ../recipes/eca_starterkit
# Or apply without Drush
cd web && php core/scripts/drupal recipe ../recipes/eca_starterkit
After applying the recipe, navigate to Administration > Configuration > Workflow > ECA to see the installed model and open the Workflow Modeler.