Aha! Develop trials are currently invitation-only. If your team is interested, apply for early access now.

Aha! Develop | Event handler extension contributions

Event extension contributions run either in the browser or on the Aha! Develop servers. When running on the server, the event handlers run using the permissions of the user who installed the extension.

Click any of the following links to skip ahead:


An event handler executes whenever its event is triggered anywhere in the account. Events can be triggered from other extension code via the aha.triggerBrowser and aha.triggerServer API in the browser or within server extension code. Events can also be triggered natively by Aha! Develop. Each time an event is triggered, all matching event handlers will be called. The order that event handlers are called in is not deterministic and multiple handlers for the same event may run at the same time. Event handlers can handle events triggered by any extension installed in the account, not just the extension the event handler is implemented in.

Event names must include the full identifier of the extension, e.g. aha-develop.github.eventName.

Events provide a way for the functionality of an extension to be further extended or customized. The author of an extension should consider triggering events during any major operation even if those events are not consumed by the extension. These events provide a way for a user of the extension to easily hook their own behavior on top of the extension.


package.json Schema

An extension that responds to the aha.audit and aha.status.shipped events would include package.json keys like:

  "ahaExtension": {
"contributes": {
"events": {
"observer": {
"title": "Event observer",
"entryPoint": "src/observer.js",
"handles": [


Points to the JavaScript file implementing this contribution.


The title of the field displayed with the field.


An array of the event names that are handled by this contribution.



aha.on({ event: 'aha.workflow-board.shipped' }, (arg, { identifier, settings }) => {
  • arg — the argument that was provided to the aha.triggerBrowser or aha.triggerServer call.

  • identifier — set to the string identifier of the extension.

  • settings — the settings for the extension as a JSON object.


Related articles

Aha! Roadmaps
Aha! Ideas
© 2021 Aha! Labs Inc.All rights reserved