Goal: every recurring submission should carry today’s looked-up values, not the ones that were true when the parent entry was created.
Requires: GP Populate Anything, and a form already using it.
The Recipe #
- Set the feed to Dynamic. In the feed’s submission options, leave Input mode: Snapshot (unchecked = Dynamic) unchecked.
- Make sure the lookup’s source value is saved on the parent entry. This is the step people miss — see below.
- Preview and save the feed.
- Submit a parent entry and click Run Next Submission Now.
- Compare the child entry with what the lookup should return today.
Step 2, Properly #
Dynamic mode reloads the saved parent entry, then uses those saved values to seed the lookups.
So the identifier your lookup depends on — a vehicle number, a member ID, a reference code — must be stored in a field on the parent entry.
If the identifier only ever existed in the browser (a URL parameter used for display, a value that was never saved), Dynamic mode has nothing to look up with and the field comes back empty.
What Happens on Each Attempt #
- The current saved parent entry is loaded.
- Populate Anything dependencies are seeded from those values.
- Populated fields are evaluated in dependency order, so a field that depends on another gets the fresh upstream value — including dependent and compound fields.
- The result is submitted as the child entry.
Empty Results Are Valid Input #
An empty lookup result replaces the previous value. It does not fall back to what was there before.
That is deliberate and useful:
- A blank-result notification can fire.
- Required-field validation can reject the submission and raise a visible failure.
Decide which behaviour you want:
| You want… | Do this |
|---|---|
| A blank to be reported, but the submission to proceed | Leave the field optional and add a notification keyed on the blank |
| A blank to stop the submission | Make the field required — the attempt fails with the field ID listed |
| A blank to be impossible | Fix the data source; the plugin will not invent a value |
Worked Example: a Daily Vehicle Check #
A daily inspection form looks up a vehicle’s current service status from its registration number.
| Setup | Value |
|---|---|
| Registration number field | Saved on the parent entry |
| Service status field | Populated by Populate Anything, keyed on the registration |
| Feed input mode | Dynamic |
| Cadence | Every 1 day, 06:00, weekdays only |
Each morning the attempt reloads the parent, reads the saved registration, re-runs the lookup, and submits a child carrying today’s status. If the vehicle leaves the source list, the status comes back blank and your notification or validation reacts.
Troubleshooting #
| Symptom | Likely cause |
|---|---|
| Values never change | The feed is in Snapshot mode. |
| Lookup is empty on every child | The source identifier isn’t saved on the parent entry. |
| Attempt reports a dependency issue | Populate Anything is unavailable or the dependency can’t be resolved. Ordinary forms without Populate Anything continue normally. |
| Some dependent fields update, others don’t | Check the dependency chain — evaluation follows dependency order, so a broken link stops everything downstream. |
| Validation failure naming a populated field | The lookup returned blank and the field is required. That’s the design working. |
Attempt context reports Populate Anything field IDs, whether the dependency was present, and how many results came back — never the values themselves. That’s enough to diagnose a lookup without recording personal data.
Snapshot Mode and Populate Anything #
In Snapshot mode, Populate Anything values are never re-evaluated. The values captured when the series started are reused for its whole life.
That’s the right choice when the record must not drift — see Choosing Snapshot or Dynamic Inputs.