> For the complete documentation index, see [llms.txt](https://docs.roomle.com/rubens/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roomle.com/rubens/rubens-sdk/rubens-room-designer/listen-to-events.md).

# Listen to events

Rubens SDK provides an event-driven system that allows developers to listen for various events occurring within the application. By using callbacks, you can execute custom logic in response to these events. Below is a step-by-step guide on how to set up and use event listeners with callbacks in Rubens Roomle.

If you want to listen to the `update parameter` event of the configurator you can do this with the following line of code:

```typescript
roomlePlanner.getApi().callbacks.onUpdateParameters = (parameters) => {
  // send this event to your own event system, redux, RxJS or home grown
  // this should trigger all the updates you wan to do on a parameter update
};
```

All our events are prefixed with `on`. All the other methods are utility methods. For example `mute` and `unmute`. If you call `roomlePlanner.getApi().callbacks.mute()` there will be no events sent to you. With `unmute()` the events will be sent again.

Often we get the question why we not just provide an `addEventListener` and `removeEventListener`. We think the `callbacks` approach has three main advantages:

* discoverability: it's easy to discover all the events. With TypeScript you have code completion and for JavaScript user you have a nice overview during runtime
* type safety: in TypeScript every parameter is typed, therefore it's clear which parameter is passed to which event
* simplicity: why adding an event listener array and run through this array if the SDK user does only need one listener? Why looping through event listener if the event system of the SDK user does it again or more adjusted to the underlying application?

You can look up all available callbacks in this reference: [RoomlePlanner.RoomlePlannerCallback](/rubens/rubens-sdk/rubens-sdk-reference/interfaces/planner_core_src_roomle_planner.roomleplannercallback.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.roomle.com/rubens/rubens-sdk/rubens-room-designer/listen-to-events.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
