Skip to main content

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

SituationRecommended setup
One product with production and stagingOne production block and one staging block
Multiple apps under one companyOne block per app
Multiple sending domainsOne block per domain
Different traffic risk profilesSeparate marketing, transactional, and test streams
Tenant-specific domains or webhooksSeparate tenant blocks when isolation matters
Legacy app that sends SMTPSMTP Block for that app
Modern backend that sends by APIHTTP 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.