> For the complete documentation index, see [llms.txt](https://docs.cspr.click/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cspr.click/cspr.click-sdk/integration/processing-status-updates.md).

# Tracking your transactions in real time

When you use `send()` to request transaction approval and deploy the signed transaction to the network, the SDK can open a websocket connection to the CSPR.click backend and receive real-time execution updates.

Without real-time updates, applications usually need to poll a backend service or query a Casper node to know whether a transaction has been processed, confirmed, rejected, or expired. Polling adds complexity and often leaves users waiting without clear feedback.

With CSPR.click status updates, your application can:

* Receive status notifications during the transaction lifecycle.
* Update your UI with progress states (e.g., pending, processed, failed).
* Access processed transaction data without making extra API calls.

This makes it easier to build responsive applications that keep users informed while their transactions move through the Casper Network.

<figure><img src="/files/fwEvmY0vXqwxr7aqQKs3" alt="Waiting for transaction completion"><figcaption></figcaption></figure>

## Receive transaction updates

To receive updates, pass a callback function to the `send()` method. The SDK calls this function as the transaction is signed, submitted, processed, or stopped by an error or timeout.

```javascript
const onStatusUpdate = (status, data) => {
    console.log('STATUS UPDATE', status, data);
    if (status === TransactionStatus.SENT)
        setWaitingIndicator();
    if (status === TransactionStatus.PROCESSED)
        parseProcessedTransaction();
    // Handle other status updates (cancel, timeout, error, etc.)
};

await clickRef.send(transaction, sender, onStatusUpdate);
```

### Status values

The `status` argument passed to the callback function can have these values:

| Value       | Description                                                                                                                           |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `sent`      | The transaction has been signed and successfully deployed to a Casper node.                                                           |
| `processed` | The transaction has been executed by the network. The execution may have succeeded or failed.                                         |
| `expired`   | The transaction’s time-to-live (TTL) elapsed before execution.                                                                        |
| `cancelled` | The user rejected the signature request.                                                                                              |
| `timeout`   | The SDK stopped listening for updates before the transaction was finalized. A custom timeout can be specified (default: 120 seconds). |
| `error`     | An unexpected error occurred while submitting or monitoring the transaction.                                                          |
| `ping`      | A heartbeat event sent periodically to indicate that the connection is still active.                                                  |

### Processed transaction data

When the transaction reaches the `processed` state, the callback function receives an additional `data` argument.

This object contains the full `Deploy` entity, as defined in the [CSPR.cloud REST API documentation](https://docs.cspr.cloud/rest-api/deploy#properties).

Your application can use this information to:

* Show whether the transaction succeeded or failed.
* Provide more detailed feedback, such as execution cost or error messages.
