Separate Applications With Motor Blocks
Motorical's main architectural unit is the Motor Block or SMTP Block. A block is an isolated sending boundary for one application, domain, environment, tenant, or email stream.
This is the recommended way to avoid mixing unrelated email traffic, credentials, rates, logs, and webhook events.
What a Block Separates
Each block can have its own:
- verified sender domain
mk_live_...Motor Block API keys- SMTP credentials
- rate limits and usage counters
- delivery logs and timelines
- webhook endpoints
- operational and deliverability controls
Common Patterns
| Situation | Recommended setup |
|---|---|
| One product with production and staging | One production block and one staging block |
| Multiple apps under one company | One block per app |
| Multiple sending domains | One block per domain |
| Different traffic risk profiles | Separate marketing, transactional, and test streams |
| Tenant-specific domains or webhooks | Separate tenant blocks when isolation matters |
| Legacy app that sends SMTP | SMTP Block for that app |
| Modern backend that sends by API | HTTP Send API with a Motor Block API key |
Example Architecture
Account
├── App A Production Block
│ ├── domain: app-a.example.com
│ ├── auth: mk_live_... + SMTP credentials
│ ├── rates: production policy
│ └── webhooks: https://app-a.example.com/webhooks/motorical
├── App A Staging Block
│ ├── domain: staging-mail.example.com
│ ├── auth: separate test credentials
│ └── webhooks: staging endpoint
└── App B Production Block
├── domain: app-b.example.com
├── auth: independent credentials
└── logs: separate delivery history
Why This Helps
Blocks make email infrastructure easier to reason about:
- A staging bug cannot pollute production analytics.
- A leaked test key does not send from the production block.
- A webhook integration can be tested without receiving production events.
- A high-volume stream can have different rates from transactional mail.
- A tenant or app can be audited through its own logs.
AI Agent Guidance
When an AI assistant designs a Motorical integration, it should ask what boundary matters most:
- application
- environment
- domain
- tenant
- traffic type
- risk level
Then choose the Motor Block that matches that boundary before generating code.