Solved on the forum

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, 2026
THE 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.

Keep the learning content shared and store each learner’s state in a separate Progress record. Relating that record to one User and one Story makes the completion state, timestamps, permissions, and progress calculation explicit.

Completeness85%
Index decisionIndex now
Evidence basisAccepted forum pattern corroborated by current Adalo relationship, join collection, data action, permission, and progress bar documentation; no hands-on reproduction
WHAT YOU’LL HAVE 🎯

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.

BEFORE YOU START 🧰

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
BUILD IT 🛠️

Step by step

  1. 01

    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. 02

    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. 03

    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. 04

    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. 05

    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. 06

    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.

WHY IT WORKS 🧠

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.

COLLECTIONS AND RELATIONSHIPS 🗃️

Data model

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
EVIDENCE CONTEXT 🔎

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.
IF IT DOESN’T WORK 🧯

Common failure modes

Completing one story changes it for every user

Move Completed and completion timestamps off the Story collection and onto the Progress record related to the current user and story.

The progress count is too high

Check for duplicate Progress records for the same User and Story, then make the start or finish action reuse the existing record instead of creating another one.

A learner can see another learner’s progress

Filter the component by Logged-in User and configure Collection Permissions through the Progress-to-User relationship.

BEFORE YOU MOVE ON ✅

Testing checklist

0 of 9 checked on this device

BOUNDARIES 🚧

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.
BUILDER REPORTS 🗣️

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
VERSION NOTES 📝

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.

VERSION HISTORY 🕰️

Changelog

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

SPOT SOMETHING FUNNY? 🕵️

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
MONTHLY APP MANAGEMENT · BY REHOST

Rehost becomes the monthly team behind your app. Fixes, releases, integrations, and ongoing changes have an owner.

See monthly management
FixesHandled
ReleasesHandled
Next changesHandled
YOUR PROBLEM IS DIFFERENT? 🤔

Bring us the messy version.

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

Ask Adalocado 💬