Bulk sends are repeatable, and traceable by batch
Re-sending a template to the same audience is now fully supported: every launch is its own batch rather than colliding with the last one. The send-bulk response returns a batchId alongside queued and blocked counts, so one campaign can be traced end to end.
Idempotence is scoped to the batch
The protection against sending the same message twice now applies within a batch rather than across all time. That is the distinction that makes a monthly campaign to a stable list possible: the second launch is a different batch, so it is not a duplicate of the first.
Within one batch the guarantee is unchanged. A retried request, a duplicated row in the recipient list, or the same address appearing twice under different casing still results in one message, which is the case idempotence was there for in the first place.
Blocked is not the same as failed
The response separates queued from blocked, and blocked means a compliance refusal: a suppressed address, an unsubscribe, a prior bounce. Those are not errors and retrying them is the wrong response. A batchId with a blocked count is the shape you want for reconciling a campaign against your own records.
Related: Send a bulk email
Private beta
See the next one land
Beta members get the release note in the same batch email that opens their account.