Option 1: Create via Admin Panel
Getting Started
- Go to admin.moralis.com/streams.
- Click on Create a new Stream.
-
Choose one of the templates:
- Custom Event — Customizable options for events and filters, allowing precise notifications.
- Wallet Activity — Track native transactions and smart contract interactions (transfers, approvals).
- Contract Activity — Monitor smart contract events (logs).
Setting Up the Stream
1. Name your stream and select the types of events you want to track. 2. Set up event filtering. You can find more details in the Filters documentation. 3. Add a tag for your stream and choose if you wish to receive additional data. 4. Add the addresses you wish to track. 5. Pick which chains should be tracked. 6. Test your stream (optional). 7. Add your webhook URL where thePOST requests will be sent.
For testing, you can use a service like webhook.site to receive and inspect webhooks.
Option 2: Create via SDK
Make sure you have a Moralis API key before proceeding. You can get one from the Moralis Dashboard.
Step 1: Create a Stream
To create a stream, you need these required parameters:webhookUrl— Webhook URL where Moralis will send the POST request.description— A description for this stream.tag— A user-provided tag sent along with the webhook to identify the stream.chains— An array of chains to monitor.- At least one of
includeContractLogs,includeNativeTxs, orincludeInternalTxsmust be set totrue.
- JavaScript
- Python
Step 2: Add an Address to a Stream
Now that you have a stream ID, you can add addresses to monitor. You can add individual addresses or a batch.- JavaScript
- Python
Step 3: Update a Stream (Optional)
You can update a stream to add contract log monitoring, such as listening for ERC20 transfers.- JavaScript
- Python
Next Steps
Once your stream is created, you will receive a mandatory test webhook that you must respond to with a200 status code for the stream to activate.
- Receive Your First Webhook — Learn what to expect when webhooks start arriving.
- Webhook Security — Verify webhook signatures to ensure data authenticity.
- Filters — Fine-tune which events trigger webhooks.

