# Engine Events

When creating more advanced code and logic it can be important to listen internally to the changes happening inside the DappHero-Core engine. To help do this, we have provided a number of event listeners to help you react to internal changes to DappHero Core processes.&#x20;

All listeners take a callback and will be triggered on an event change internally.&#x20;

To use these, first listen for the event that signals DappHero has loaded, and then you can listen for DappHero specific events. &#x20;

```javascript
<script>
      document.addEventListener(
        "dappHeroConfigLoaded",
        ({ detail: dappHero }) => {
          // Inside here you can listen to any event you want
  
          // dappHero.listenToSmartContractBlockchainEvent(data => {
          //   console.log("The blockChain Events: ", data)
          // })
        }
      );
</script>
```

### List of Listeners:&#x20;

#### Smart Contracts

`listenToTransactionStatusChange()`

Fires for each step in the process of preparing and submitting a transaction to the blockchain. &#x20;

`listenToSmartContractBlockchainEvent()`

Fires for each event [emitted by an Ethereum smart contract](https://solidity.readthedocs.io/en/develop/abi-spec.html?highlight=events#events).&#x20;

`listenToContractOutputChange()`

Fires for a change in smart contract output.

`listenToContractAutoInvokeChange()`

Fires each time a public smart contract method is auto-invoked. For auto-invoked elements, this can be noisy.&#x20;

`listenToContractInvokeTriggerChange()`

Fires each time a smart contract is invoked.

#### Network Feature (ETH Transfer)

`listentoEthTransfer()`

Fires for an Ethereum transfer event.

#### 3Box Feature

`listenTo3BoxProfile()`

Fires for a 3Box feature event.

#### NFT Feature

These events will fire based on their related functionality. They each work the same.&#x20;

`listenToNFTLoadAllToken()`

`listenToNFTLoadMultipleToken()`

`listenToNFTLoadSingleToken()`

#### User Feature

`listenToUserAddressChange()`

Fires for a change in the user address, for example, when switching addresses in MetaMask.

`listenToUserBalanceChange()`

Fires when a users balance changes.&#x20;


---

# Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dapphero.io/advanced/engine-events.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
