Log inStart creating →
TROUBLESHOOTING · 11 min read

Partial Email Account Tasks: Reconcile, Retry, and Recover Without Duplicates

Handle partial or uncertain email account creation tasks by preserving successful output, reconciling credits, identifying failure type, and retrying only unresolved work.

MailMaker EditorialProduct guide · Published 2026-09-22 · Updated 2026-09-22
KEY TAKEAWAYS

What you will leave with

  • Partial completion is different from total failure
  • A network timeout does not prove that no task was created
  • Retry only the unresolved quantity after reconciliation
  • Reuse the logical idempotency key while resolving an uncertain request

Classify partial, failed, and uncertain states correctly

A partial task has successful output and failed items in the same terminal result. A failed task has no usable completed output according to the task record. An uncertain request occurs when the client cannot tell whether the server accepted it, often because the connection ended before a response arrived.

These states require different actions. Partial needs reconciliation, failed needs cause review, and uncertain needs retrieval or idempotent recovery. Treating all three as retry now is how duplicate tasks and unexplained costs begin.

Preserve successful output before planning a replacement

Retrieve the authoritative task and record requested, successful, failed, provider, final state, credits charged, and credits returned. Route the usable output through the approved result path instead of discarding it because the original target was not reached in full.

The unresolved quantity is requested minus accepted successful results, not necessarily the raw failed count. If the receiving system rejects some completed results, document that separately from MailMaker task failure so product and downstream issues are not blended.

  • Source task ID
  • Successful provider results
  • Task-reported failures
  • Downstream rejections
  • Credits charged and returned
  • Approved unresolved quantity

Recover an uncertain creation request before submitting another

Persist an idempotency key before the first API call. If the client times out, repeat the same logical request with that key or retrieve the associated task according to the API contract. Do not generate a fresh key merely because the first response was lost.

If the system still cannot establish whether a task exists, stop automatic submission and escalate with the key, timestamp, provider, quantity, and correlation ID. A manual check is less expensive than two valid account batches created for one internal request.

Retry by failure class, not by a generic counter

Validation errors require corrected input. Insufficient balance requires a budget decision. A temporary transport or service condition may justify bounded backoff. Provider or policy failures may require stopping rather than retrying. A partial task requires a new, explicitly approved request only for unresolved work.

Set a maximum attempt count and maximum job age in the calling system. When either limit is reached, move the job to a named manual-review queue with enough context to decide without exposing raw credentials.

  • Invalid request: correct and reapprove
  • Timeout: recover idempotently
  • Temporary condition: bounded backoff
  • Partial: reconcile then replace unresolved quantity
  • Permanent or policy issue: stop and escalate

Close recovery with one explainable record

Link the original task, any replacement task, final accepted output, credit movement, and decision owner. The total across tasks should reconcile to the approved requirement without counting the same result twice.

Update the runbook with the observed cause and the control that will reduce recurrence. Useful changes may include clearer validation, durable idempotency storage, slower polling, a smaller batch size, stronger balance checks, or a more reliable result destination.

COMMON QUESTIONS

Questions about this workflow

Should I retry an entire partial batch?

Usually no. Preserve accepted successful output, reconcile the task, and create a separately approved replacement only for the unresolved quantity.

What if the API request timed out?

Treat the result as uncertain. Reuse the original idempotency key or retrieve the existing task before considering another logical request.

Are failed items charged?

No. MailMaker failed items use zero credits, and any reserved credits for those items return automatically.

When should automation stop retrying?

Stop at the configured attempt or job-age limit, on validation or permanent failures, when authorization is unclear, or whenever reconciliation requires a human decision.

PRIMARY REFERENCES

Sources used in this guide

Provider rules and product behavior can change. These first-party references are the starting point for checking the current requirements.

  1. MailMaker — Email account creation API

    Product source for task states, status retrieval, idempotent requests, and result reconciliation.

  2. MailMaker — FAQ and credit guarantee

    Current behavior for failed items and partial tasks.

  3. IETF RFC 9110 — HTTP Semantics

    Internet Standard background for idempotent request semantics and safe retry reasoning.

PUT IT INTO PRACTICE

Run the workflow in MailMaker.

Start in the dashboard with your provider selected, or connect the same task lifecycle to your application through the API.