Eventonomy

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.