Dynamic Stores

Dynamic stores are serverless address lists hosted by BitBadges. You create a store, and BitBadges stores and manages the list for you. You add and remove addresses via API calls β€” from anywhere: your backend, a Zapier automation, an LLM agent, a cron job, or any system that can make HTTP requests. The store is then attached to claims as a gating mechanism.

The core idea: decouple eligibility management from claim configuration. Instead of hardcoding who can claim, maintain a living list that updates in real-time as your business logic dictates.

How It Works

  1. Create a store in the developer portal β†’ receive a store ID and secret

  2. Add/remove addresses via API whenever your eligibility criteria change

  3. Attach the store to one or more claims using the whitelist plugin

  4. Users claim β€” BitBadges checks if the user's address is in the store

Stores are reusable β€” attach one store to multiple claims. Update the store once, and all claims using it reflect the change.

Queue-Based Processing

Store actions (add/remove) are processed through a queue system. When you call the API, the action is queued and processed asynchronously. There may be a 1-2 second delay between when you trigger an action and when it's finalized in the store.

This means:

  • If you add an address and the user immediately tries to claim, the store may not have updated yet

  • For time-sensitive flows, build in a small buffer or retry logic on the user side

  • Batch actions are processed together, so they're consistent relative to each other

Creating a Store

Create stores in the developer portalarrow-up-right. You receive:

  • Store ID (dynamicDataId) β€” identifies the store in API calls and claim configuration

  • Store secret (dataSecret) β€” authenticates API requests (keep this secret on your backend)

Managing Entries

Via UI

Manage entries directly in the developer portal β€” add, remove, and view addresses.

Via API β€” Single Action

Via API β€” Batch Actions

API Payload Reference

Data Model

Authentication

  • Signed in as creator/manager: No dataSecret needed

  • API access: Include dataSecret in the request body

  • Public stores: If publicUseInClaims is true, anyone can reference the store in claims, but management (add/remove) still requires authentication

Attaching to Claims

Use the whitelist plugin with dynamic store configuration:

Or use the claim builder UI: select your store from the templates section, or navigate to the store's page and click "Create Claim."

Integration Patterns

The API-driven design means you can trigger add/remove from any system that can make HTTP requests:

Backend webhook:

AI agent / LLM:

Zapier / no-code automation:

  • Use Zapier's webhook action to call the BitBadges API

  • Trigger from any Zapier-supported event (form submission, CRM update, calendar event, etc.)

  • No code required β€” just configure the HTTP request in Zapier

Cron job / scheduled task:

Custom plugin (success webhook): A custom plugin can add addresses to a store as a side effect of claim success β€” effectively chaining claims together.

Limitations

  • Off-chain stores can only be used in off-chain contexts (claims via the whitelist plugin). They are not accessible on-chain.

  • Only addresses are supported as identifiers (no emails, usernames, etc.)

  • Queue processing introduces a 1-2 second delay between API call and store update


On-Chain Dynamic Stores

BitBadges also supports on-chain dynamic stores β€” boolean address-value stores on the blockchain that integrate with approval criteria via DynamicStoreChallenge. These are separate from the off-chain stores described above and are managed via blockchain transactions, not the API. Similar concepts, just on vs off-chain.

See Dynamic Store Challenges and MsgCreateDynamicStore for full documentation.

Last updated