Skip to content

Recurring editions: the pattern

Many sites run the same content in recurring rounds — a festival’s yearly edition, a course’s cohort, a league’s season, a conference’s year. MATRIZ covers this with one pattern, combining pieces that already work on their own: a container item with a schedule, a symbol pointing at “the current one,” a participation collection that people submit into, and rollups and tables for seeing who’s in.

This page walks through it with a festival’s “edition” as the running example. The same shape works for a course’s cohort, a league’s season, or any other recurring round — just rename the nouns.

1. A container collection. Create a collection called Editions (or Seasons, Cohorts — your word for one occurrence). Give it a schedule field with your periods, dates, gates, and prices. Each item in this collection is one round: “2025 Edition,” “2026 Edition,” and so on.

2. A symbol. Under CMS → Settings → Symbols, name a symbol — for example edition — and point it at the Editions collection. Tell it which fields on an edition item hold its start and end date, and which field holds its schedule. From then on, @current.edition always means “whichever edition item’s dates contain right now,” and @current.edition.period means its current period.

3. A participation collection. Create a second collection — Works, Entries, Enrolments, whatever your participants submit — with a reference field back to Editions. Wire a public form to it that:

  • writes into it, and stamps the current edition, current period, and price automatically (a derive rule — see Forms);
  • gates on the current period’s submit switch, so it refuses submissions once the round is closed;
  • is set to one entry per member per edition — see below.

4. Rollups and a table. Add a rollup field to a member’s profile (or to the edition item) that shows every participation row pointing at it, and a table on an admin page for the current edition’s entries — with an export button.

You don’t have to hold all four pieces in your head at once — CMS → Recurring setup walks through them as one checklist, each step showing whether it’s done:

  1. Container collection. Pick the collection where each row is one round (your Editions). Once it has a schedule field, pick that field too.
  2. Live pointer (symbol). Name the symbol — edition is a good default — and pick which of the container’s date fields hold the start and end of each round, plus what to do when no round is currently open (fall back to the latest one, or match nothing). Save writes the symbol in one step.
  3. Participation collection. Pick — or the pane will usually suggest — the collection your participants submit into. It needs a reference field back to the container; the pane tells you if one’s missing.
  4. Member editing. Turn on “Close member edits automatically by period” right here, choose the symbol from step 2 as the period source, and the field that links each row back to its round. See One entry per member per edition below for what this does.
  5. Collapse image slots (only shown on sites imported from a numbered set of image fields) — folds them into one gallery field before you build the form.
  6. Sign-up form. Guidance on what to wire the form’s write target, identity, and gate to — the pane tells you once a form is already writing into the participation collection.
  7. Admin table + members — links to invite participants and to the table element docs for building the admin view below.

Every status on this page is read live off your symbols, collections and forms — there’s nothing to keep in sync, and you can leave and come back at any point in the sequence.

Set the form’s identity to member + edition (in the form’s settings, under Identity). This means:

  • The first time a member submits, a row is created.
  • If that same member submits again for the same edition — updating photos, fixing a typo, changing their answer — their existing row is replaced, not duplicated. There is never more than one row per (member, edition).
  • Submitting again for a different edition (next year) creates a new row, because the edition is part of the identity.

A member can keep re-submitting to update their entry for as long as the current period’s edit gate stays open — no separate “edit my entry” flow needed. Turn this on from the participation collection’s schema settings (the Member editing card), or from step 4 of the Recurring setup pane above — both edit the same setting.

An admin page (members-only, restricted to an admin role) holds a table bound to the participation collection, filtered to @current.edition. Typical columns: the participant’s name and email, their period, their price, and their status. An Export button turns the visible rows into a CSV or spreadsheet file, entirely in the browser — no separate export step, and no raw visitor IDs anywhere in the file.

Columns that reveal who submitted something — name, email — only work on pages already restricted to signed-in members with the right role. A public comparison table (say, a public leaderboard) can bind the same collection without those columns.

An admin can unpublish one entry from the CMS inbox to pull it from the site for review, without touching the participant’s account — their own “my entries” view still shows it, marked as under review.

Step 7 of the Recurring setup pane links straight to Members (to invite participants) and to the table element docs for building this page.

Before an edition opens, invite the people you expect to participate from CMS → Members, or let people join on their own if your site’s join mode allows it. See Members and gated content for join modes and invites.

What changes automatically when you move a deadline

Section titled “What changes automatically when you move a deadline”

Nothing about the pattern is baked in at publish time. Moving a date in an edition’s schedule takes effect immediately, without republishing:

  • The form starts accepting or refusing submissions the moment the current period’s submit gate flips.
  • Every member’s ability to edit their own entry follows the edit gate the same way.
  • Any page content gated on “is the current period X” (see Pages that change with time) updates itself for visitors already on the page.

When the next round starts, add one new item to the Editions collection and fill in its schedule — no new pages, forms, or fields. The symbol picks it up automatically once its dates make it current; the same form, the same admin table, and the same rollups keep working unchanged.