How-to Recipes
Short, focused recipes for common Eventonomy integration tasks. Each recipe names the goal, the exact seam to use, and a minimal working snippet - then tells you how to verify it worked.
Foundation reading: Read Architecture and Extending Eventonomy before diving into recipes. The recipes assume you understand the auto-discovery pattern, the Free↔Pro contract (EP1), and the
evnm_*hook naming conventions.
Available Recipes
| Recipe | What you will build |
|---|---|
| Custom RSVP field | Add a field to the RSVP form, persist it against the RSVP, and surface it in the attendee admin. |
| Override a template | Replace a bundled PHP template from your theme or plugin without forking the plugin. |
| Hook into checkout | Run code when an order is placed, when it is paid, and when it is refunded. |
| Add a custom view or block | Register a new Gutenberg block that inherits the shared Interactivity store and REST envelope. |
| Extend with a provider | Add a service to the container using the auto-discovery provider pattern - the same pattern Pro uses. |
| Custom REST endpoint | Register a my-addon/v1 REST endpoint that reads Eventonomy data through contracts and returns the canonical envelope. |
Which Seams Each Recipe Uses
| Recipe | Seam |
|---|---|
| Custom RSVP field | evnm_registration_fields, evnm_after_create_rsvp, evnm_register_meta |
| Override a template | Template override path, evnm_template_part filter |
| Hook into checkout | evnm_before_create_order, evnm_after_update_order, evnm_process_payment filter |
| Add a block | evnm_blocks filter, shared eventonomy Interactivity store |
| Extend with a provider | evnm_register_services, ServiceContainer::tag() / bind() |
| Custom REST endpoint | rest_api_init, evnm() container accessor, Eventonomy\Contracts\* |
The Free↔Pro Rule (EP1)
Every recipe in this guide works exactly the way Pro works: no concrete class imports. Always resolve dependencies via evnm( ContractInterface::class ), not new ConcreteClass(). This keeps your add-on decoupled from Free internals and gives it the same stability guarantee Pro has.