brainiac-zoho
Zoho Mail webhook plugin for Brainiac — the multi-agent orchestration layer.
What It Does
- Email Notifications — rule-based matching of incoming emails, notifications to Discord
- Email Triage — AI agent dispatched to decide if support emails need a card
- OAuth Flow — browser-based Zoho OAuth for API access (content fetching)
- Fallback Rules — catches unmatched emails so nothing slips through
Installation
brainiac install zoho
brainiac restart
Configuration
Config lives at ~/.brainiac/zoho.json:
{
"hook_secret": null,
"default_discord_channel_id": "YOUR_CHANNEL_ID",
"notify_as": "merlin",
"rules": [
{
"label": "Item Sold",
"enabled": true,
"subject_contains": "sold",
"emoji": "💰"
}
],
"fallback": {
"enabled": true,
"label": "Unmatched Email",
"emoji": "📬"
}
}
The hook_secret is auto-captured from Zoho's initial handshake — no manual configuration needed.
Zoho Webhook Setup
- Go to Zoho Mail → Settings → Developer Space → Outgoing Webhooks
- Add webhook URL:
https://your-ngrok.ngrok-free.app/zoho - On first trigger, Zoho sends the signing secret automatically
Zoho Mail API (Optional)
For fetching full email content (webhook payloads only include summaries):
- Add
apisection tozoho.jsonwithclient_idandclient_secret - Visit
http://localhost:4567/zoho/authto complete OAuth - The
refresh_tokenandaccount_idare saved automatically
CLI
brainiac zoho setup # Create config file from template
brainiac zoho config # Show current configuration
brainiac zoho auth # Instructions for OAuth setup
Hooks Emitted
| Hook | When | Payload |
|---|---|---|
:create_work_item |
Triage agent decides to create card | board_id, title, description, tags, assign_to |
Development
git clone https://github.com/stowzilla/brainiac-zoho.git
cd brainiac-zoho
bundle install
bundle exec rake test
bundle exec rubocop
License
MIT