Domain Events
Raw contract events associated with a domain’s registry records. Terminal window Terminal window
query DomainEvents($name: InterpretedName!) {
domain(by: {name: $name}) {
events {
totalCount
edges {
node {
from
to
topics
data
timestamp
transactionHash
}
}
}
}
} {
"name": "sfmonicdebmig.eth"
} {
"data": {
"domain": {
"events": {
"totalCount": 3,
"edges": [
{
"node": {
"from": "0xffffffffff52d316b7bd028358089bc8066b8f80",
"to": "0x63736415c705949705ce65ae24db033eaf76c4dc",
"topics": [
"0x734822851860327a80c624af1471efac6bb0ac641852fc6c7bfeeee3202ae6a8",
"0x7d329898b2e1764e620391e6ee7a37fa65015d506502d80d8a6faaa600000000",
"0x7d329898b2e1764e620391e6ee7a37fa65015d506502d80d8a6faaa6014e8749",
"0x00000000000000000000000063736415c705949705ce65ae24db033eaf76c4dc"
],
"data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000006bd63f83000000000000000000000000000000000000000000000000000000000000000d73666d6f6e69636465626d696700000000000000000000000000000000000000",
"timestamp": "1777667143",
"transactionHash": "0xea711d3e06bab0782613d1354a68b7a6005279a66d239f2fc273f36ab68e74ae"
}
},
{
"node": {
"from": "0x2f8e8b1126e75fde0b7f731e7cb5847eba2d2574",
"to": "0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85",
"topics": [
"0x2fe093918572373e9f1f0368f414dffd0043a74ae8c9fd7b0e390b26a0d20b6e",
"0x7d329898b2e1764e620391e6ee7a37fa65015d506502d80d8a6faaa600000000",
"0x7d329898b2e1764e620391e6ee7a37fa65015d506502d80d8a6faaa6014e8749",
"0x0000000000000000000000005587003f8eeee1bc236d48ab39059cbfd99207d7"
],
"data": "0x00000000000000000000000000000000000000000000000000000000000000600000000000000000000000002f8e8b1126e75fde0b7f731e7cb5847eba2d2574000000000000000000000000000000000000000000000000000000006bd63f83000000000000000000000000000000000000000000000000000000000000000d73666d6f6e69636465626d696700000000000000000000000000000000000000",
"timestamp": "1777667978",
"transactionHash": "0x2e1e3b9dbd5c0c354894ccc7aa00107b2fa504fa3fda44b7a36c71098ca897f6"
}
},
{
"node": {
"from": "0x2f8e8b1126e75fde0b7f731e7cb5847eba2d2574",
"to": "0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85",
"topics": [
"0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62",
"0x0000000000000000000000005587003f8eeee1bc236d48ab39059cbfd99207d7",
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x0000000000000000000000002f8e8b1126e75fde0b7f731e7cb5847eba2d2574"
],
"data": "0x7d329898b2e1764e620391e6ee7a37fa65015d506502d80d8a6faaa6000000000000000000000000000000000000000000000000000000000000000000000001",
"timestamp": "1777667978",
"transactionHash": "0x2e1e3b9dbd5c0c354894ccc7aa00107b2fa504fa3fda44b7a36c71098ca897f6"
}
}
]
}
}
}
} # POST JSON to your ENSNode Omnigraph endpoint (same path enssdk uses).
curl -sS -X POST "https://api.v2-sepolia.ensnode.io/api/omnigraph" \
-H "Content-Type: application/json" \
-d @- <<'EOF'
{
"query": "query DomainEvents($name: InterpretedName!) { domain(by: {name: $name}) { events { totalCount edges { node { from to topics data timestamp transactionHash } } } } }",
"variables": {
"name": "sfmonicdebmig.eth"
}
}
EOF import { createEnsNodeClient } from "enssdk/core";
import { asInterpretedName } from "enssdk";
import { graphql, omnigraph } from "enssdk/omnigraph";
const client = createEnsNodeClient({
url: process.env.ENSNODE_URL || "https://api.v2-sepolia.ensnode.io"
}).extend(omnigraph);
const DomainEventsQuery = graphql(`
query DomainEvents($name: InterpretedName!) {
domain(by: {name: $name}) {
events {
totalCount
edges {
node {
from
to
topics
data
timestamp
transactionHash
}
}
}
}
}
`);
const result = await client.omnigraph.query({
query: DomainEventsQuery,
variables: {
name: asInterpretedName("sfmonicdebmig.eth"),
},
});
if (result.errors) throw new Error(JSON.stringify(result.errors));
console.log(JSON.stringify(result.data, null, 2)); import { OmnigraphProvider, useOmnigraphQuery, graphql } from "enskit/react/omnigraph";
import { createEnsNodeClient } from "enssdk/core";
import { asInterpretedName } from "enssdk";
import { omnigraph } from "enssdk/omnigraph";
const client = createEnsNodeClient({
url: import.meta.env.VITE_ENSNODE_URL || "https://api.v2-sepolia.ensnode.io"
}).extend(omnigraph);
const DomainEventsQuery = graphql(`
query DomainEvents($name: InterpretedName!) {
domain(by: {name: $name}) {
events {
totalCount
edges {
node {
from
to
topics
data
timestamp
transactionHash
}
}
}
}
}
`);
function DomainEventsResult() {
const [result] = useOmnigraphQuery({
query: DomainEventsQuery,
variables: {
name: asInterpretedName("sfmonicdebmig.eth"),
},
});
const { data, fetching, error } = result;
if (!data && fetching) return <p>Loading…</p>;
if (error) return <p>Error: {error.message}</p>;
if (!data) return <p>No data returned.</p>;
const formatted = JSON.stringify(
data,
(_, value) => (typeof value === "bigint" ? value.toString() : value),
2,
);
return <code>{formatted}</code>;
}
export default function App() {
return (
<OmnigraphProvider client={client}>
<DomainEventsResult />
</OmnigraphProvider>
);
}
# 1. Create project
mkdir -p my-ens-script/src && cd my-ens-script
npm init -y && touch src/index.ts
npm pkg set type=module scripts.start="tsx src/index.ts"
# 2. Install dependencies
npm install enssdk@1.13.1 && npm install -D tsx typescript @types/node
# 3. Paste the TypeScript snippet above into src/index.ts
# 4. Run
ENSNODE_URL=https://api.v2-sepolia.ensnode.io npm start
# 1. Create project
mkdir -p my-ens-script/src && cd my-ens-script
pnpm init && touch src/index.ts
pnpm pkg set type=module scripts.start="tsx src/index.ts"
# 2. Install dependencies
pnpm add enssdk@1.13.1 && pnpm add -D tsx typescript @types/node
# 3. Paste the TypeScript snippet above into src/index.ts
# 4. Run
ENSNODE_URL=https://api.v2-sepolia.ensnode.io pnpm start
# 1. Create project
npm create vite@latest my-ens-app -- --template react-ts --no-interactive --no-immediate
cd my-ens-app
# 2. Install dependencies
npm install
npm install enskit@1.13.1 enssdk@1.13.1
# 3. Copy the TSX snippet above into src/App.tsx
# 4. Run
VITE_ENSNODE_URL=https://api.v2-sepolia.ensnode.io npm run dev
# 1. Create project
pnpm create vite@latest my-ens-app --template react-ts --no-interactive --no-immediate
cd my-ens-app
# 2. Install dependencies
pnpm install
pnpm add enskit@1.13.1 enssdk@1.13.1
# 3. Copy the TSX snippet above into src/App.tsx
# 4. Run
VITE_ENSNODE_URL=https://api.v2-sepolia.ensnode.io pnpm run dev
Run in ENSAdmin
Open an interactive playground to execute this query on our sepolia-v2
ENSNode instance.
GraphQL Query
query DomainEvents($name: InterpretedName!) { domain(by: {name: $name}) { events { totalCount edges { node { from to topics data timestamp transactionHash } } } }}Payload and transport examples
{ "name": "sfmonicdebmig.eth"}
Response is an illustrative snapshot; live data depends on your ENSNode instance. The curl tab shows a POST to
https://api.v2-sepolia.ensnode.io/api/omnigraph
Open an interactive playground to execute this query on our sepolia-v2
ENSNode instance.
TypeScript
import { createEnsNodeClient } from "enssdk/core";import { asInterpretedName } from "enssdk";import { graphql, omnigraph } from "enssdk/omnigraph";
const client = createEnsNodeClient({ url: process.env.ENSNODE_URL || "https://api.v2-sepolia.ensnode.io"}).extend(omnigraph);
const DomainEventsQuery = graphql(` query DomainEvents($name: InterpretedName!) { domain(by: {name: $name}) { events { totalCount edges { node { from to topics data timestamp transactionHash } } } } }`);
const result = await client.omnigraph.query({ query: DomainEventsQuery, variables: { name: asInterpretedName("sfmonicdebmig.eth"), },});
if (result.errors) throw new Error(JSON.stringify(result.errors));console.log(JSON.stringify(result.data, null, 2));enssdk setup
# 1. Create projectmkdir -p my-ens-script/src && cd my-ens-scriptnpm init -y && touch src/index.tsnpm pkg set type=module scripts.start="tsx src/index.ts"# 2. Install dependenciesnpm install enssdk@1.13.1 && npm install -D tsx typescript @types/node# 3. Paste the TypeScript snippet above into src/index.ts# 4. RunENSNODE_URL=https://api.v2-sepolia.ensnode.io npm startSee the enssdk docs for gql.tada plugin and tsconfig setup.
Open an interactive playground to execute this query on our sepolia-v2
ENSNode instance.
TSX (React)
import { OmnigraphProvider, useOmnigraphQuery, graphql } from "enskit/react/omnigraph";import { createEnsNodeClient } from "enssdk/core";import { asInterpretedName } from "enssdk";import { omnigraph } from "enssdk/omnigraph";
const client = createEnsNodeClient({ url: import.meta.env.VITE_ENSNODE_URL || "https://api.v2-sepolia.ensnode.io"}).extend(omnigraph);
const DomainEventsQuery = graphql(` query DomainEvents($name: InterpretedName!) { domain(by: {name: $name}) { events { totalCount edges { node { from to topics data timestamp transactionHash } } } } }`);
function DomainEventsResult() { const [result] = useOmnigraphQuery({ query: DomainEventsQuery, variables: { name: asInterpretedName("sfmonicdebmig.eth"), }, }); const { data, fetching, error } = result; if (!data && fetching) return <p>Loading…</p>; if (error) return <p>Error: {error.message}</p>; if (!data) return <p>No data returned.</p>; const formatted = JSON.stringify( data, (_, value) => (typeof value === "bigint" ? value.toString() : value), 2, ); return <code>{formatted}</code>;}
export default function App() { return ( <OmnigraphProvider client={client}> <DomainEventsResult /> </OmnigraphProvider> );}enskit setup
# 1. Create projectnpm create vite@latest my-ens-app -- --template react-ts --no-interactive --no-immediatecd my-ens-app# 2. Install dependenciesnpm installnpm install enskit@1.13.1 enssdk@1.13.1# 3. Copy the TSX snippet above into src/App.tsx# 4. RunVITE_ENSNODE_URL=https://api.v2-sepolia.ensnode.io npm run devSee the enskit docs for gql.tada plugin and provider setup.
Back to Examples