Campaigns, emails & batches
Re-runs & idempotency
Submitting the same rows twice, on purpose and by accident.
On purpose
Submit a new batch under the same email. Same identifier → the new render overwrites the old file at the same URL (or is skipped, or suffixed, per the duplicate policy you chose on upload).
By accident
Over the API, send an Idempotency-Key header with every submit. A retried call with the same key returns the original batch with replayed: true and spends nothing. In the app, the wizard keeps a draft, so a refresh mid-flow resumes rather than resubmits.