> ## Documentation Index
> Fetch the complete documentation index at: https://docs.y.uno/llms.txt
> Use this file to discover all available pages before exploring further.

# Listen to events

> The controllers that only report what happens during a transaction: the installment the shopper picked and the shipping address they selected.

These controllers tell you what is happening. The SDK behaves the same whether you implement them or not: use them to drive your own UI, or to answer the wallet sheet with new totals.

| Controller | Fires when | Platforms |
| - | - | - |
| [`onInstallmentSelected`](/docs/yuno-sdk/controllers/on-installment-selected) | The shopper picks or changes an installment option in the card form. | Web (`card.onInstallmentSelected`), iOS, Android |
| [`onShippingAddressChanged`](/docs/yuno-sdk/controllers/on-shipping-address-changed) | The shopper selects or changes the shipping address in a wallet payment sheet. | Web (`externalButtons.onShippingAddressChanged`), iOS, Android |
| `onChange` | The validity of the form the SDK rendered changes. The handler receives `{ form: { isValid } }` when the transaction starts and on every change. When you hide the SDK's Pay button with `showPayButton: false`, use it to enable your own button before you call `transaction.submit()`. | Web |

`onInstallmentSelected` and `onShippingAddressChanged` each have a page with what you receive, what you return and the signature per platform.

## Related

* [`onStatus`](/docs/yuno-sdk/controllers/on-status). The final outcome of the transaction.
* [Take over the SDK](/docs/yuno-sdk/controllers/take-over-the-sdk). The controllers that replace a default behavior.
* [Controllers overview](/docs/yuno-sdk/controllers/overview). How controllers are wired per platform.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.