- Detect potentially malicious contracts in real time
- Filter or suppress spam-related events
- Warn users about risky interactions
How Spam Detection Works
When spam detection is enabled, Streams adds a boolean field called:erc20Transferserc20ApprovalsnftTransfersnftApprovals
How to Use Spam Signals
ThepossibleSpam flag is designed as a signal, not a hard block.
Common usage patterns include:
- Hiding spam tokens or NFTs from user interfaces
- Suppressing notifications for spam-related activity
- Flagging risky activity for manual review
- Applying stricter filters to spam-flagged events
Filtering Out Spam Events
You can configure Streams to exclude spam-related events entirely. By enabling thefilterPossibleSpamAddresses option:
- Events involving contracts flagged as spam will not trigger webhooks
- These events will not consume stream usage
- Reduce noise
- Avoid processing low-quality or malicious activity
How Contracts Are Classified
Contracts flagged as spam are evaluated against a set of internal criteria, including:- Compliance with token and NFT standards
- Minting and transfer behavior (e.g. honeypot patterns)
- Copycat or impersonation signals
- Other proprietary heuristics
Supported Chains
Spam detection in Streams is supported on all EVM-compatible chains, with the strongest initial coverage on:- Ethereum Mainnet
- Polygon Mainnet
- BNB Chain
Relationship to API Spam Detection
Streams spam detection is separate from the newer Moralis API Spam Filtering and Token Safety features. Key differences:- Streams uses a legacy classification system
- API spam detection includes richer metadata and filtering
- The two systems will be unified in a future update
Best Practices
- Treat
possibleSpamas a signal, not absolute truth - Combine spam flags with confirmation state
- Avoid persisting spam events unless required
- Prefer filtering spam at the stream level when possible

