Skip to content

How do you track each user’s learning progress in Adalo?

Create one Progress record per user and story, then count completed records for the logged-in user without changing the shared Story record.

Docs checkedIntermediateReviewed Sep 7, 2026Database and Relationships

Short answer

Create a Progress collection with one record per User and Story, then mark that record complete when the user finishes. Filter Progress by Logged-in User for lists and counts, and protect the collection with user-based Collection Permissions.

The intended outcome

Each learner has independent story completion records and a progress value that does not change the shared Story catalog for other users.

Requirements

  • Users and Stories collections
  • A Progress collection related to one User and one Story
  • A logged-in test user and at least two sample stories

Step by step

  1. Step 1: Create the Progress collection

    Add a Progress collection with relationships to one User and one Story. Add Started At, Completed, and Completed At properties when the app needs those states.

  2. Step 2: Keep one record per learner and story

    When a learner starts a story, create a Progress record related to Logged-in User and Current Story only when that pair has no existing Progress record. Reuse that record on later visits.

  3. Step 3: Mark the current record complete

    On the finish action, update the current learner’s Progress record so Completed is true and Completed At contains the completion time. Do not update the shared Story record.

  4. Step 4: Filter every progress view by user

    Show Progress records where User equals Logged-in User. Add a Story filter when a screen needs the state of one specific story.

  5. Step 5: Calculate the progress bar

    Set Progress Value to the logged-in user’s Progress count filtered where Completed is true. Set Maximum Value to the number of stories included in the course or series.

  6. Step 6: Protect the records

    Configure Progress Collection Permissions so only the related logged-in user can view or change a record. Keep the list filter as a display rule and the permission as the data-access rule.

The underlying logic

Stories are shared content, while Progress is user-specific state. Separating them prevents one learner’s completion action from changing the Story for everyone.

A Progress record is a join record between one User and one Story, so it can also hold timestamps, notes, or other properties about that learner’s activity.

The completed Progress count supplies the progress value, while the relevant Story count supplies the maximum value.

Data model

Collections, important properties and relationships
CollectionImportant propertiesRelationships
UsersStandard user propertiesHas many Progress records
StoriesTitle, content, order, and series relationshipHas many Progress records
ProgressStarted At, Completed, Completed At, and optional notesBelongs to one User and one Story

What still needs checking?

  • The forum reply linked an older example video, but this Answer relies on current Adalo documentation and does not require that video.

Common failure modes

Testing checklist

0 of 9 checked on this device

Current limitations

  • The forum source confirms the data-model pattern but does not document one universal screen layout or action sequence for every learning app.
  • A direct many-to-many User-to-Story relationship can represent a simple completed state, but a Progress collection is required when the relationship needs timestamps, notes, or other properties.
  • The app must prevent repeated actions from creating duplicate Progress records for the same User and Story.

What the Adalo community is reporting

These are concise editorial summaries of public forum posts, not endorsements or independently reproduced results.

How to update a single users' progress without changing entire database?

The accepted answer recommends a separate record related to one user and one story, with optional timestamps and notes, so progress remains specific to each learner.

Boundary: The reply also offers a direct many-to-many relationship for a binary completed state, but it does not describe duplicate prevention or Collection Permissions.

katu (question) and Victor (accepted answer) · March 2025

Sources and status

This page was last reviewed on Sep 7, 2026. Its current status is Documented from current sources.

Verification owner: Adalocado daily AI publisher. Next review: Nov 7, 2026.

Changelog

  1. Automatically posted from a solved Adalo forum topic; corrections are monitored on the live site.

Automatically organized and maintained by the Adalocado editorial team under the editorial and verification policy.

Report this answer.

Automated Answers still pass evidence and publication checks, but they can be wrong, outdated, unclear, or missing an important boundary. Send the exact correction and the editor will check the live page.

Report a problem

Did this solve your problem?

One-click check

Bugs fixed. Updates shipped. Publishing handled.

$97/mo for your first 3 months.

Cancel anytime. That’s about 90% off the usual cost. 🤯

Let Rehost handle it
  • Bug fixes and troubleshooting
  • App updates and integrations
  • Publishing and store releases

Bring us the messy version.

Describe what you expected, what happened instead, and what you already tried.

Ask Adalocado

Related answers

Browse all