Skip to main content
The CabalSpy widget renders a live bubble map of wallet activity for a single address. You embed it with one <iframe>; everything else (data, styling, live updates) is handled by CabalSpy. It supports Solana, Base, BNB and Robinhood.

Quickstart

Drop this into your page and replace the address:
That is the whole integration. The widget reads its configuration from the URL query string, connects to CabalSpy for live data, and updates itself.
Before it renders on your domain, your domain has to be whitelisted (see Domain allow-list). Send us the domain(s) you will embed on.

Parameters

The widget is configured entirely through query parameters on the /widget URL.
string
required
The wallet address to display. A Solana base58 address, or an EVM 0x… address for Base, BNB and Robinhood.
string
Which chain the address belongs to. One of SOL, BASE, BNB, RH (Robinhood). We strongly recommend always setting this explicitly — see Choosing the chain.

Choosing the chain

Solana and EVM addresses look different (base58 vs 0x…), but Base, BNB and Robinhood all use 0x… addresses and cannot be told apart from the address alone. Always pass chain explicitly so the widget shows the right data:
Robinhood example
Robinhood uses the chain id RH. Values are denominated in ETH, and — like Base and BNB — the widget shows KOL and Smart Money rings (no marketcap-only features, which exist for Solana only).

Sizing and responsiveness

The widget fills the iframe, so size the iframe, not the widget. Use a fluid width and a fixed or aspect-ratio height.
Responsive wrapper
A square-ish area (roughly 1:1 to 1:1.2) works best for the bubble layout. On mobile give it at least ~360 px of height.

Domain allow-list

For security the widget only renders inside pages on approved domains. Send us the hostname(s) you will embed on (for example app.yoursite.com) and we add them to the allow-list. All subdomains of an approved domain are covered automatically. Until your domain is approved the iframe will return 403 for its data calls. A direct visit to the widget URL in a browser tab always works, which is handy for testing.

Live updates

Once loaded, the widget keeps itself current over a WebSocket — new buys and sells animate in without a reload. There is nothing to configure for this; it uses the same connection CabalSpy manages for you.

Troubleshooting

Your embedding domain is not on the allow-list yet, or the address has no tracked wallets. Confirm the domain was approved and that address is correct for the given chain.
Base, BNB and Robinhood share the 0x… format. Set chain explicitly (BASE, BNB or RH) instead of relying on auto-detection.
Robinhood (chain=RH) requires the Robinhood-enabled widget build to be live. If RH data is not appearing, the update may not be deployed yet on your instance.