---
title: What Is Stored, and For How Long
description: "The plugin keeps its own operational records, separate from your entries. This page explains what's in them, what's deliberately left out, and when they're removed. --- ## Two Tables ### The series table One row per running (or retained) schedule:…"
url: "https://brightleafdigital.io/docs/what-is-stored-and-for-how-long/"
updated: "2026-10-18"
category: "Recurring Form Submissions for Gravity Forms / Explanations & Concepts"
---

# What Is Stored, and For How Long

The plugin keeps its own operational records, separate from your entries. This page explains what's in them, what's deliberately left out, and when they're removed.

---

## Two Tables

### The series table

One row per running (or retained) schedule:

- the normalized schedule and its revision,
- the source it came from,
- the timezone,
- the lifecycle state,
- progress,
- the exact next target,
- the last attempt and last success,
- the current issue,
- claim ownership.

### The attempt table

One row per attempt, holding **bounded, redacted context**:

- target, start and finish times,
- source — automatic worker, or which manual action,
- outcome,
- child entry ID,
- lateness and timing evidence,
- safe validation field IDs.

---

## What Is Deliberately Never Stored

The plugin's records are designed to be safe to hand to support **as they are**:

| Excluded | Why |
| --- | --- |
| Submitted field values | They are personal data |
| Names and email addresses | Same |
| Tokens and credentials | Obvious risk |
| Full payloads | Same |
| Exception messages | They can carry values or tokens |

Failures record the **field IDs** that failed validation, never the values in them. Exceptions record the **class and code**, plus the attempt ID in the Gravity Forms add-on log.

Populate Anything context records field IDs, whether the dependency was present, and how many results came back — never the results themselves.

---

## Retention

| Record | Default | Configurable |
| --- | --- | --- |
| Attempt records | 90 days | 1–3650 days, in global settings |
| Completed and canceled series | 90 days | Same setting |
| Scheduled, paused and failed series | Kept while they exist | — |
| Child entries | Your Gravity Forms policy | — |
| Entry notes | Your Gravity Forms policy | — |

Expired records are removed in **bounded batches** by the maintenance scan, so a large history never triggers one enormous delete.

> **Operational retention never deletes child entries or their notes.** It only touches the plugin's own records.

---

## What Retention Affects That You Might Notice

- **Queue history** stops going back further than the window.
- **`[rfsfgf_overview status="all"]`** lists series still inside the window — which, because completed and canceled series are retained, is more than you may expect.
- **Copy Diagnostics** can only report what's still stored.

If you need a longer forensic trail, raise the retention days before you need it — retention can't bring back what's already pruned.

---

## Notes on Entries

Each attempt writes **one** note on the parent entry: the feed name, the result and, when created, a link to the child entry. The child receives a reciprocal link back to the parent.

| Property | Behaviour |
| --- | --- |
| Internal IDs | **Not** in notes — series and attempt IDs stay in Queue history and diagnostics |
| Late attempts | The timing explanation is appended to the same note, not added as a second one |
| Historical notes | Never rewritten by an update |
| Entry links | Open in new tabs |

---

## The Gravity Forms Add-On Log

Enable it at **Forms → Settings → Logging**.

Every record carries identifiers, timestamps and outcome codes only, filtered through the **same redaction** as Copy Diagnostics — so a log file can go to support as it stands.

It records manual actions (including ones rejected before processing), worker passes, per-attempt detail, declined missed runs, feed lifecycle changes, cron event repairs, and failure/recovery/health transitions.

See *Logging and Copy Diagnostics* for the full list.

---

## Schema and Migration

The schema migration is **restartable** and preserves each earlier version's target, progress count and payload snapshot.

| Migration behaviour | Detail |
| --- | --- |
| Legacy `pending` rows | Become `scheduled` |
| Abandoned processing locks | Recovered |
| Historical failure data | Conservatively flagged for review, rather than assumed to be a consecutive run |
| Invalid data | Stays visible as a migration problem rather than being silently replaced |
| Submissions during migration | **None.** Migration and activation never submit |

A later schema version also repairs incomplete earlier installations missing a column, while preserving existing normalized series, attempts and canceled states.

> Repairing the schema does **not** resolve an earlier ambiguous submission. A series blocked by a storage failure stays blocked until its children and attempts are reviewed.

---

## Uninstall

Uninstalling removes the plugin's tables, cron events, health/issue options and per-user dismissal metadata.

**Child entries remain**, because they belong to Gravity Forms.
