Every series is in exactly one of six states. Queue shows it, the entry card shows it, and it determines which buttons you get.
The Six States #
| State | Meaning | Runs automatically? |
|---|---|---|
| scheduled | Waiting for its target; available when due | Yes |
| processing | Owned by an atomic, per-request claim right now | In progress |
| paused | Intentionally stopped, with a reason | No |
| failed | Automatic attempts stopped at the failure threshold | No |
| completed | Its limit was reached, or its parent/feed no longer exists | No |
| canceled | Explicitly ended, or ended because its parent was trashed or deleted | No |
How States Change #
┌──────────── Resume ────────────┐
│ │
start → scheduled ⇄ processing → scheduled │
│ │ │
Pause │ └── threshold reached ──→ failed
▼ │
paused ──────────────────────────────┘
│
└── Cancel / parent trashed ──→ canceled
limit reached ──→ completed
State by State #
scheduled #
The normal, healthy state. The series holds a future target and the worker will claim it when due.
Available: Run Next Submission Now, Pause, Change next submission, Cancel (Premium), history, diagnostics. Plus Retry, if an issue is open.
A series can be scheduled and still need attention: an issue is open, but the next automatic retry is still on the calendar. That’s not a contradiction.
processing #
A worker pass or a manual action holds an exclusive claim. Nothing else can submit the same series at the same time.
- Claims older than 30 minutes are recoverable, so an interrupted request can’t strand a series forever.
- Don’t click Run repeatedly at a locked series — the interface will say it’s locked rather than pretending to queue anything.
paused #
Stopped on purpose, with a recorded reason:
| Reason | Set by | Cleared by |
|---|---|---|
user |
Somebody clicking Pause | An explicit Resume |
feed_inactive |
Deactivating the feed | Reactivating the feed |
Reactivating a feed resumes only feed_inactive series. A user pause survives it, deliberately.
failed #
Consecutive failures reached the threshold — 3 by default. Automatic attempts stop; progress and history are preserved.
Getting out: fix the cause, then Retry Failed Submission (a success resolves the issue and resets the count) or Resume (reopens automatic attempts).
completed #
Either the limit was reached, or a required parent or feed no longer exists.
Attempts and child-entry audit links are retained. Start Series From Now begins a fresh series.
canceled #
Ended by an administrator, or automatically when the parent entry was trashed or permanently deleted.
- Child entries are never deleted by cancelling.
- Notes and retained attempts stay.
- A submission already in flight may still finish and be recorded; cancellation only prevents future scheduling.
- Cancelling requires the Premium plan.
Feed Activation and the Lifecycle #
| Feed event | Effect |
|---|---|
| Deactivated | Scheduled series are paused as feed_inactive. A claimed series is stopped at the final active-feed guard before submitting. |
| Reactivated | Only feed_inactive series resume. User-paused and failed series do not. |
| Deleted | Its series end. |
Both the native Gravity Forms feed toggle and the GravityOps Feeds tab use this same lifecycle — there’s no second, divergent path.
Which Buttons Appear When #
| State | Run | Retry | Pause | Resume | Cancel | Change date | Start |
|---|---|---|---|---|---|---|---|
| scheduled | ✅ | if issue | ✅ | — | ✅ | ✅ | — |
| processing | — | — | ✅ | — | ✅ | — | — |
| paused | — | — | — | ✅ | ✅ | ✅ | — |
| failed | — | ✅ | — | ✅ | ✅ | ✅ | — |
| completed | — | — | — | — | — | — | ✅ |
| canceled | — | — | — | — | — | — | ✅ |
Run, Retry and Resume additionally require the feed to be active. Cancel requires the Premium plan. A series blocked pending review after a storage failure shows no submission buttons at all until the records are reviewed — Cancel stays available.