Skip to main content

Events Manager

Events Manager is a WordPress plugin for event calendars, bookings and ticketing. From version 7.3 it publishes a REST API under the events-manager/v1 namespace, and this connector is a curated slice of it: reading the calendar, checking availability, managing events, locations, tickets and categories, and taking or changing bookings.

You tell it which site, not which endpoint. When you add the connection you give the site's address, and your gateway reads the site's REST index to find where the Events Manager API lives, then pins that address for good. A site that uses plain permalinks works too: the gateway routes each call through ?rest_route= instead.

If you also run Events Manager Pro, or want WordPress itself alongside it, connect the site as any WordPress site with the Abilities API selected. Events Manager and Events Manager Pro register their actions as abilities, and Permaura has reviewed them, so they arrive with the same levels as this connector rather than the stricter ones an unreviewed ability gets. See Abilities Permaura has reviewed.

What you need​

Events Manager 7.3 or later, and a WordPress Application Password (built into WordPress 5.6 and later), sent as HTTP Basic auth. The credential is the pair username:application-password.

  1. Decide which WordPress user the agent should act as. Bookings and events it creates carry that user's name, so a dedicated account is usually clearer than your own.
  2. Sign in as that user and go to Users → Profile, scroll to Application Passwords, give it a name such as permaura, and choose Add New Application Password.
  3. Copy the generated password. WordPress shows it once, in space-separated groups of four; the spaces are ignored.

Least privilege​

Every action runs as that user and passes Events Manager's own permission check, so the user's role is the real ceiling on what an agent can do, whatever you switch on here:

To useThe user needs
Reads, including bookings visible to the userTo be signed in (any role)
events.create, events.update, tickets.* writesedit_events
events.deletedelete_events or delete_others_events
locations.create, locations.updateedit_locations
locations.deletedelete_locations or delete_others_locations
bookings.update, bookings.status, bookings.deletemanage_bookings or manage_others_bookings
categories.delete, tags.deletedelete_event_categories
media.uploadupload_files

An agent that only answers questions about your calendar needs a user that can sign in and nothing more. Give it booking management only if you intend to switch those actions on.

Add the connection​

In the console, open Access → Connections → Add connection and pick Events Manager from the catalog. Enter the Site URL, the address you open the site at in a browser, then the WordPress username and the application password. The console seals them together on your gateway, and they are never displayed again. The success message shows the address the gateway pinned.

The reads arrive switched on and every write arrives switched off. Nothing is usable until a grant allows it.

What the agent can do​

Capabilities are namespaced under the connection id, so an agent sees events.list as <connection>.events.list.

ActionWhat it doesOn by default
events.listLists events, filtered by scope, status, category, tag, location_id, town, country, near and moreYes
events.readReads one event; an id with a timeslot suffix, such as 123:4, reads one timeslotYes
events.availabilityReads booking availability and ticket spaces for one eventYes
events.tickets.listLists an event's ticketsYes
tickets.readReads one ticketYes
locations.listLists locations, filtered like eventsYes
locations.readReads one locationYes
locations.countries, .regions, .states, .townsLists the places your locations are inYes
bookings.listLists bookings visible to the user, filtered by event_id, status, person and moreYes
bookings.readReads one booking by id or UUIDYes
categories.list, categories.read, tags.list, tags.readReads event categories and tagsYes
events.create, events.updateCreates or edits an eventNo
tickets.create, tickets.updateAdds a ticket to an event or edits oneNo
locations.create, locations.updateCreates or edits a locationNo
categories.create, .update, tags.create, .updateCreates or edits a category or tagNo
media.uploadUploads an image from a public URL or base64 bytesNo
bookings.createTakes a bookingNo, approval-gated
bookings.updateChanges a bookingNo, approval-gated
bookings.statusApproves, rejects or cancels a booking, optionally emailing the attendeeNo, approval-gated
events.delete, tickets.delete, locations.delete, categories.delete, tags.deleteTrashes or deletesNo, approval-gated
bookings.deletePermanently deletes a bookingNo, approval-gated

Anything that touches a booking asks for a human approval on every call, even after you switch it on, because it reaches a real attendee: a new or changed booking can send them an email, and a status change can cancel their place. The deletes are marked critical for the same reason.

Good to know​

  • Contact details are redacted. email, user_email, dbem_phone, phone and IP addresses are stripped from responses before the agent sees them. An agent can tell you who has booked; it cannot read their email address or phone number.
  • Bookings take no overrides. bookings.create and bookings.update do not forward Events Manager's capacity override, payment amount or tax rate fields, so an agent cannot book past a full event or mark a booking paid. Change a status with bookings.status.
  • Timeslots have their own ids. An event with timeslots answers to 123 for the whole event and 123:4 for one slot; the colon travels encoded and WordPress reads it back.
  • Events Manager has its own MCP server too. The plugin can serve its abilities to an AI client directly. Connecting through Permaura instead keeps the application password on your gateway, puts every call under your policies and grants, and records it in the audit log.
  • The kill switch is instant. Disabling the connection in the console refuses every call through it immediately, across every agent and grant.