Track how many days a user checks in each month

Looking for a little logic advice on how I might track user engagement in a part of my app each month.

I’ve set up basic logic to give the user the ability to click a button once per day. Visibility settings make the button go away after one click, with the button being available to them again the following day. This button will increase a “Days Checked In This Month” number value by one each day they click it.

What I’m not quite sure of is how I can take that number value, log it in a database to track each month, and then clear the “Days Checked In This Month” value at the end of each month to have the user start fresh. Any advice you all can offer?

Bump for visibility

There are a few ways I came up with to do this, but my #1 way would be using Make (Integromat) for the sake of stability and automation. Do you know how to use that? If so, simply schedule an action once a month to purge all user’s DaysCheckedIn field that you have. Super simple if you have less than 3,200 users (gets more complex if you have more, as you’ll need to do chapters of users).


If you want to stay in Adalo, I think a great option is a once-a-month manual button on your admin part. The only real issue for this is there’s a manual process on you end to click a button.

Short video of how I built this (no audio commentary, sorry baby is asleep next to me!): refresh check in counter - YouTube

  • You create a button in an admin screen where you only have access to it.

  • When you click on this, it takes you to a screen where you need to build a list of every user in a simple custom list.

  • In that custom list is a countdown (make it to where it allows the entire list to load - at least 10 seconds) and add an action on that end of countdown to clear out your current month checked-in account. That will take all users in your app down to empty.

  • You’ll want to add a filter to that list where DaysCheckedIn>Empty so then you can see in real-time the users get updated and the list gets smaller until empty, knowing that you’re done and you can back out of that screen.

I’m sure there’s a super simple solution that I didn’t think of, so keep clicking buttons and trying things out!

2 Likes

Perfect. You’re the man @anon28807528! Many thanks.

1 Like

Maybe this is a little easier.

Add a collection called “Check-ins” with 3 parameters
ID # (number parameter)
Date (date parameter)
User (relationship user can have many check-ins, check-ins belong to 1 user).

On the home screen, add a countdown timer. Set the visibility to sometimes visible if “logged in user > check-ins > count > is equal to 0” add a custom filter where “Date > is equal to > Start of Today”.

Set the timer to 3 seconds.

Add an action “Create > Check-in”
Set ID# to “Check-in Count + 1”
Set Date to “Start of Today”
Set user to “Logged in user”

By doing it this way, you can use the counts of the current user’s check-ins and use the date parameter as a filter so you can track across different months/days/years.

I do this on a splash screen if not the homepage.

3 Likes

Awesome! I’ll dig into these options a little later and see how I make out. Thanks again @Flawless.

1 Like

It looks like I’ll probably make use of elements of both of your solutions. Having the ability to run reports over months/years down the road could be very valuable, but I WILL need the ability to clear a “Check-Ins THIS Month” value for users too, so both of these help.

May I ask why you need to clear the check-ins if you have a running total that you can filter?

Because the running total needs to be user-facing. If I had a filter for “This Month”, then I would be able to tidy up that display and wouldn’t have to do this, but that appears to be an Adalo limitation. I can choose “30 days ago”, but February and months with 31 days throw that all out of whack.

I know a workaround for that. Also really easy. Will share when i get back.

1 Like

First, add 2 (or 3) new number parameters to the “Check ins collection” and label them “Month” and “Year” (optionally add the 3rd for Day).

On the home screen, add 2 more input components and label them “Month” and “Year” (and the optional 3rd input for “Day”).
Make the inputs transparent and/or hide them behind a rectangle.

Set the default value for all 3 to “Date & Time > Current Time” and then change the date format to the specified format for each field. Month = Month Number, Year = Year Number, Day = Day Number.

On the “Create check-in action” add the 3 values from the 3 inputs into the check-in parameters so that Month has the month’s number, Day has the day number, and Year has the year number.

So on the user-facing side, if the counts are displayed on the home screen, simply filter the counts by the same inputs you used to create the check-in. If the user-facing side screen where the counts are displayed is on a different screen, add the 2 (and optional 3rd for Day) input fields from the previous step and use them as a filter.

The filter would be: Month > is equal to > Month Input and Year is equal to Year Input. The “Day” would be for you to use as a filter on an analytics page of some sort, hence why the Day is optional and not required for calculating “This Months” data.

1 Like

Good stuff as always man. Thank you!

1 Like

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.