PipelimePipelime Docs
Concepts

Execution Engine

How Pipelime's email execution engine works.

Execution Engine

The execution engine is the core system responsible for reliably sending emails on schedule.

Architecture

Campaign → Scheduler → Job Queue → Worker → Gmail API
  1. Scheduler — Evaluates active campaigns and creates send jobs based on scheduling rules
  2. Job Queue — Persistent queue with at-least-once delivery guarantees
  3. Worker — Processes jobs, renders templates, and sends via Gmail API
  4. Tracker — Records send events and updates campaign progress

Idempotency

Each email send is uniquely identified by the combination of:

  • Campaign ID
  • Contact ID
  • Step number

A unique constraint prevents the same email from being sent twice, even if a job is retried.

Retry Strategy

Failed sends are retried with exponential backoff:

AttemptDelay
1Immediate
230 seconds
32 minutes
410 minutes
51 hour

After 5 failures, the send is marked as failed and the contact is flagged for review.

Blocklist Enforcement

Before every send, the engine checks:

  1. Is the contact's email on the blocklist?
  2. Is the contact's domain on the blocklist?
  3. Has the contact unsubscribed?
  4. Has the contact replied (if stop_on_reply is enabled)?

If any check fails, the send is skipped.

Email Threading

Follow-up emails (steps 2+) are sent as replies to the original thread. Pipelime uses Gmail's In-Reply-To and References headers to maintain threading.

This means follow-up emails appear in the same conversation in the recipient's inbox, improving reply rates.

Rate Limiting

The engine enforces rate limits at multiple levels:

  • Per-account daily limit — Respects each email account's configured daily cap
  • Send interval — Minimum time between sends from the same account
  • Warmup limits — Reduced limits for accounts in warmup phase

On this page