Metagoals on


I’ve added a feature on to have a goal that is composed out of other beeminder goals’ datapoints. A typical use case of it might be combining running, walking, cycling, and weight-lifting into a one meta-goal. Another might be to sum the time spent reading and watching lectures. I plan to use it to combine different activities that are measured by rescuetime into one.

Hope you find it useful,


In the same vein, there is now a metric on the app that calculates all the time spent in physical activity during each hour. That would include random walks during the day for android users, manual entries in their app/website or any other app that syncs to google fit.

1 Like

How often/when does it update?

It is configured to sync (with the rest of the supported integrations), in the beginning of every round hour.

1 Like

Can you please make the datapoint comment say which goal it came from.

1 Like

Good idea. I’ll add that feature later.

  • Update: Done.

Awesome, thanks.

Another request:

I have an odometer goal or cycling and I’d like to update my exercise with a 1 if I did cycle that day.
But it currently auto-submits the entire odometer value. I’d like to only submit 1.
How do I achieve this?

What if your exercise goal aggregated as binary?

1 Like

At the moment aggregating as binary would not solve the problem because it does not change the datapoints values in the api.
It’s possible to take that into consideration and aggregate by day. The downside for that approach would be that it would mess up the generated graph on beeminder and I’d also have to deal with timezones.

I’m considering adding a metric that counts the number of datapoints per hour for selected goals. Would that solve the problem?
You might get two points if you update the odometer twice in the same day but maybe its even better.

This feature is something that I’ve wanted for a long time, but hadn’t put much thought into trying to accomplish. Thanks for making it happen!

Just as a warning, the syncing currently seems to be incompatible with also adding data manually to the meta-goal. This afternoon, I made some new goals and composed them with an existing one. During one of the syncs, data points disappeared that I had earlier put manually in my older (now meta) goal.

1 Like

You’re welcome.

Yes, It is an application wide design concern. The app deletes overlapping timestamps. I think keeping overlapping datapoints might cause confusion in other situations.
What I did to deal with manual input into meta goal is to have another goal just for manual input and compose it with the others.

That’s why I suggested that @insti might be able to solve this particular case by putting his Beeminder goal into binary; no matter how many datapoints are received by it, his exercise goal would increment by exactly one, on each day with at least one contributing exercise.

@philip, You are right that binary is exactly what @insti wanted. The integration works by reading goals’ datapoints and the datapoints are not affected by this setting. I really don’t want to duplicate that logic so it might make sense to also expose datapoints after aggregation in beeminder api.
@bee, @dreev What do you think?

Binary aggregation works in this case, and it is what I have the goal set to, but what I would like is to be submitting the ‘correct’ values to the target graph.

If my goal was structured such that I wanted to make sure I did 3 out of 5 different things per day (while beeminding those things individually), would not be able to help me.

Currently has a multiply box if there was also an ‘add’ box, I could multiply by 0 and add 1 to get the right value.

Unfortunately that would not work either. The datapoints in are calculated hourly which means cycling twice in the same day would lead to two datapoints in the target goal.

At the moment I have no access to the ‘correct’ values. One way to get it is to duplicate the logic of aggregations: min, max, last, binary, etc. Preferably, I could get the aggregated value from beeminder’s API.

That would be fine. I don’t want aggregated data, just a fixed datapoint value.

If you don’t mind getting two datapoint for a day with two cycling session. I think my previous suggestion of having a metric that just counts datapoints is better. You could have a cycling goal that is transformed to cycling_count goal (with the help of the metric yet to be implemented). Then you could use the current “compose” metric to add cycling_count to the current target goal.
My reason for this preference is to reduce the complexity the UI for editing goal integrations.

That sounds fine.

I just added the metric of counting datapoints. You can try it now.

1 Like

I tried this today and got an error:

We’re sorry, but something went wrong.

If you are the application owner check the logs for more information