> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://ensforge.com/api/mcp` to find what you need.

# Update an ENS profile

Update several records together when a user saves their ENS profile. This flow deploys the HCA,
grants it access to `description` and `url`, submits one sponsored batch, then verifies both records.

## Prepare the account

Use the environment and funding requirements from [Update a text record](/hca/pimlico/update-description).
The owner must manage the chosen name. Keep Sepolia ETH in that wallet for deployment and the two
permission grants; Pimlico pays gas for the subsequent sponsored batch.

## Submit the profile

Copy these files into one directory. Replace `your-name.eth`, `description` and `url` in
`pimlico-update-profile.ts`, then run that file with your TypeScript runner.

:::code-group
```ts [pimlico-update-profile.ts]
// [!include ~/snippets/hca/guides/pimlico-update-profile.ts]
```

```ts [deploy.ts]
// [!include ~/snippets/hca/guides/deploy.ts]
```

```ts [pimlico.ts]
// [!include ~/snippets/hca/guides/pimlico.ts]
```

```ts [account.ts]
// [!include ~/snippets/hca/guides/account.ts]
```

```ts [client.ts]
// [!include ~/snippets/hca/guides/client.ts]
```
:::

## Separate setup from profile saves

The permission grants use owner transactions and can complete separately. Both must finish before
the HCA batch is sent. If setup fails midway, inspect the granted permissions before retrying.

Once access is configured, reuse the HCA and adapter for subsequent saves. Build one `.call(...)`
per record and pass them together to `executeHcaCalls`. Keep the submission until you have a
`succeeded` result. A bundler transaction hash alone does not prove that the profile was updated.

The batch executes through the HCA as one operation. If it fails, inspect the execution result
before retrying; use the existing submission to reconcile a timeout.
