Open Forms → (your form) → Entries → (an entry). The Recurring Submissions box in the sidebar is where you operate the schedules belonging to that one entry.
What Each Card Shows #
Every recurring feed on the form renders its own card, with:
| Line | Content |
|---|---|
| Feed name | Links to that feed’s settings in a new tab. |
| Feed state | Active or inactive. |
| Status and schedule | The lifecycle state plus a plain-language schedule summary. |
| Next | The exact next target with its timezone, and the window it is expected to run in. |
| Last attempt | When, and the outcome. |
| Lateness | Seconds after the target, when there is a completed attempt. |
| Counters | Successful submissions, and consecutive failures. |
| Actions | The buttons valid for this series right now. |
Multiple feeds have fully independent cards and controls.
Where the Box Lives #
It defaults below the native Gravity Forms sidebar boxes.
If you drag it somewhere else, WordPress saves your ordering and the plugin will not override it. Its title opens the form’s recurring feeds in a new tab.
The box appears when the form has a recurring feed, or when the entry already has a series — so a schedule remains visible even after its feed is removed from the form.
Manual Controls #
| Control | Effect |
|---|---|
| Start Series From Now | Starts a schedule from the current saved entry and feed. It schedules a future occurrence — it does not submit now. Also used to restart a completed or canceled series. |
| Run Next Submission Now | Executes the next occurrence immediately, consuming that slot without moving the long-term anchor. |
| Retry Failed Submission | Retries the failed target through the same processing service. A successful child resolves the current issue; another failure is recorded. |
| Pause | Stops automatic execution, preserving progress and history. |
| Resume | Schedules the next eligible future slot, skipping the paused interval. The feed must be active. |
| Cancel Series | Ends the series, preserving child entries, notes and retained attempts. Premium plan required; on lower plans the button is hidden and a cancel request is refused. |
| Change next submission | Opens this series’ date/time picker on Queue, in a new tab. |
| View attempt history | Opens this series’ history on Queue, in a new tab. |
| Copy Diagnostics | Opens a scrollable redacted report with Copy and Close controls. |
Start Series From Now appears when the entry has no series for that feed, or its series is completed or canceled — and the feed is active.
Permissions and Safety #
- Every operational control requires
recurring_form_submissions_manage_resubmissions. - Every request verifies its nonce and that the parent, form and feed actually belong together.
- Actions rejected before processing — an expired page token, insufficient permissions — are still recorded in the Gravity Forms add-on log. A button that seems to do nothing always leaves a trace.
How the Interface Behaves #
- Actions use AJAX, with no full page reload. A completed action refreshes the cards with a readable notice and leaves the surrounding entry editor untouched.
- Entry controls use separate forms outside Gravity Forms’ main entry form, so they can never interfere with saving the entry.
- Without JavaScript, ordinary submissions return you to the entry, Queue or shortcode page you started from.
- History and Change next submission deliberately open Queue in a new tab, because both are Queue panels.
- Previews are always separate from saving or executing.
Every Action Reports Its Real Result #
Processing results name the attempt ID, the safe outcome, the child entry ID when one was created, and the next target.
- A locked series is reported as locked. The interface never pretends the work was queued.
- After a network interruption, check Queue or history before retrying — the server may have completed the submission your browser never heard about.
The old Mark as Fixed action is gone. It removed history and counted an unverified submission as successful. Retry after correcting the form, explicitly resume, or cancel the series.
Failure and History #
How failures escalate #
- The first failed attempt creates a current issue and sends an alert.
- Consecutive failures accumulate.
- At the threshold (3 by default), the series becomes failed and automatic attempts stop.
- A successful retry resets the count and resolves the issue, while keeping earlier attempts in history.
Storage failures are different #
A storage failure is not a rejected submission — a child entry may have been created before its operational records could be saved.
- The interface reports the known child entry ID.
- Further submissions are blocked until the records are reviewed, so a blind retry can’t duplicate a real entry.
- Cancel remains available, and never deletes children.
- Older unfinished attempts are labelled as requiring review — not as proof that nothing was submitted.
Notes on the entry #
Each attempt writes one note on the parent entry containing the feed name, the result and, when one was created, a link to the child entry. The child gets a reciprocal link back to its parent. Entry links open in new tabs.
- Notes never include internal series or attempt IDs — those live in Queue history and diagnostics.
- For late attempts, the note also carries the timing explanation. This adds no extra note and never turns a successful submission into a failure.
- Existing historical notes are never rewritten.
Retention #
Completed and canceled operational records stay queryable until the retention window expires. Child entries and their notes are not removed by operational retention.
Putting These Cards on a Front-End Page #
The [rfsfgf_entry_widget] shortcode renders exactly these cards outside the dashboard.
[rfsfgf_entry_widget form_id="12" entry_id="345"]
It is an administrative view: the whole widget — not just its buttons — requires the management capability and renders as nothing for anyone else.
| Attribute | Default | Notes |
|---|---|---|
entry_id |
(required) | The parent entry to show. entry_id="current" reads it from the request instead — rfsfgf_entry, then lid, then entry_id — so one page can serve a list that links to a detail view. |
form_id |
The entry’s own form | Optional. A value that disagrees with the entry’s form renders nothing, rather than another form’s feeds. |
Available in the widget: Run Next Submission Now, Retry Failed Submission, Cancel Series, Start Series From Now.
Deliberately not in the widget: Pause, Resume, Change next submission, attempt history and diagnostics — those stay in Queue.
Actions use AJAX and refresh the cards in place, on the page they were performed on. Without JavaScript, the ordinary form submission returns to that same page with its result notice rather than redirecting into the dashboard.
Page-level access control is still worth applying on top of the capability check. See Shortcodes for the full reference.