Promotion lifecycle
The Lifecycle
Transitions Explained
Draft: No live checkout applies the offer; staff can explicitly include it in a sample preview. Active: The offer participates subject to its dates and limits. Paused: The offer stops participating temporarily while codes and usage remain. Ended: The offer cannot run again, but its historical records remain. Archived: The campaign is retained for history and excluded from ordinary lists. Protection is an independent condition and does not replace lifecycle status.
What Cannot Happen
Archive has no resumption operation. Ending requires a new campaign rather than resumption. Preparation cannot pause before activation. The lifecycle has no return to preparation.
Concurrency and Timing
Lifecycle moves compare the read version under a row lock. First use sets economic protection, enforced by a database trigger against racing edits. Counter updates do not advance the staff edit version.