stupid wallet webhooks

Signed webhooks for EVM address activity. Point us at an address, tell us which chains to watch, and get a cryptographically-signed POST whenever that address sends a transaction, moves native value, or is involved in an ERC-20 or ERC-721 transfer — so you can trust an event without having to replay it.

How it works

  1. Create a webhook. Give us an HTTPS endpoint; we return a one-time signingSecret so you can prove events came from us.
  2. Subscribe an address. Choose the EVM address and chains (Ethereum, Base, Optimism, Arbitrum, …) to watch.
  3. Get signed events. From its activation block onward, each matching transaction produces one event per address.
  4. Verify and act. Dedupe on webhook-id and verify the HMAC signature, then trigger your own workflow.

What you get

CapabilityDetail
Verified deliveries HMAC-SHA256 signature over the exact event body (webhook-signature: v1,<hex>, ±5 min replay tolerance)
Activity Top-level txs (incl. zero-value and reverted), incoming native value, ERC-20 and ERC-721 Transfers
Chains All chains*
Idempotent Deterministic webhook-id; dedupe safely (at-least-once)
Delivery ledger 30-day history per webhook: every attempt, status, and outcome

* Supported chains depend on evm.stupidtech.net — a chain is supported when it resolves there.

Example event

A signed delivery looks like this (hashes abbreviated):

{
  "id": "evt_2f3d…",
  "type": "activity.observed",
  "createdAt": "2026-08-30T14:16:35.000Z",
  "data": {
    "chainId": 8453,
    "trackedAddress": "0xa0bfe1a0fc5b83d16e8599fd…e405",
    "initiatedByTrackedAddress": true,
    "blockNumber": "50655024",
    "transaction": {
      "hash": "0x198a0a…698",
      "index": 139,
      "from": "0xa0bfe1a0fc5b83d16e8599fd…e405",
      "to": "0x00000000000000000000000000000000000dEaD",
      "status": "success",
      "value": "100000000000000"
    },
    "effects": []
  }
}

For an exchange of a token, data.effects carries the decoded ERC-20 / ERC-721 transfer with the asset, counterparty, and amount (token ids for ERC-721).

What we watch (and what we don't)

The shape of it

POST /v1/webhooks        { "url": "https://you.example/hook" }        → signing secret, once
POST /v1/subscriptions  { "address": "0x1f9…", "chainIds":[8453,10,42161], "webhookId":"wh_…" }
GET  /v1/webhook-deliveries

Reliability & limits

Skills

Agent-ready skills for this product live in the repo:

Docs

Full reference: API reference.

Access is provisioned per account (an operator issues your API key). For access or support, contact hi@stupidtech.net.

github - twitter - stupidtech.net