Handling meal history tickets

4 min read · 778 words · 2 revisions · Updated Sep 5, 2026

Who this is for. Support staff taking tickets about meal history: the calendar, copying meals, the meal draft, and excluding a food. The member-facing guide is Meal history.

"I can't find it"

Health → Food → History. It is a tile on the Food screen beside My Meals, on both apps. There is no web version: this is a phone feature.

If the tile is not there, the member is on a build older than iOS 120 / Android 78.

"It says I need Premium"

It is Premium, on the feature key meal_history. That is correct and not a fault.

The one thing a Basic member can reach is the vocabulary (the meal-slot and reason lists), which exists so the app can draw the offer itself. Everything that touches their own diary answers 402, which both apps render as the purchase sheet.

Saved meals themselves are free. A Basic member can still build and log a saved meal; what they cannot do is read their history back to build one from it.

"My old days are empty"

Two different things, and they look the same:

  • They genuinely logged nothing. The screen names the day it is showing ("You didn't log any food on Tuesday, 12 August"), so read the ticket's screenshot for the date.
  • They are on Basic. A free member's history clamps to 30 days everywhere in the app, so a Premium member who lapses sees their older days disappear from every history surface, not just this one. Resubscribing brings them back; nothing was deleted.

"The copy didn't work"

The copy is all or nothing. If one thing in the request cannot be resolved, none of it is written, so a member copying three meals and being told about one of them has had nothing land, not two thirds of it.

The refusals, and what each means:

  • source_not_found means the meal named has nothing in it, or the food is no longer in their log. Those two are deliberately the same answer.
  • future_date means they picked a day that has not happened. The picker should not offer one; if it did, get the build number.
  • bad_meal_type means the destination slot is not one the server knows. Almost always a stale build against a newer catalog.
  • too_many means more than 100 meals and items in one request.

A copy never removes anything. If a member says a copy "wiped" their day, it did not: the copy appends, and what they are looking at is probably a duplicate. Have them delete the entry they do not want from the Food log.

"It went into the wrong meal"

The destination picker starts on Same as source, which keeps a lunch a lunch. If they wanted it somewhere else and did not change it, the copy is doing what it was told. They can delete the entries and copy again.

Dessert is a real destination and has been since 2026-09-03. If a copy into Dessert fails on a particular tenant with a database error, that tenant has not had the migration applied. Escalate rather than working around it.

"I excluded a food and it's still in my log"

Working as designed. Excluding a food says what to stop offering; it does not edit what they ate. Loopa stops suggesting it and flags it if it turns up in a plan or a meal idea, and their history is untouched.

"Undo didn't appear"

The Undo shows only when the exclusion was newly added. If the food was already on their never-eat list, there is nothing this action did that undoing would reverse, and offering it would have let them remove something they set weeks ago with one tap.

To take a food off the list either way: the hand icon at the top of the history screen, or Settings → food preferences. It is one list, reached from two places.

"My draft disappeared"

The draft lives on the history screen, and it survives changing day, which is the point of it. It does not survive closing the app: it is not saved anywhere until they name it and tap Save To My Meals.

Once saved it is an ordinary saved meal and appears in My Meals like any other.

What to escalate

  • A copy that reports success and does not appear in the Food log.
  • A member whose history is empty on Premium with an active seat.
  • Any tenant where a copy into Dessert fails with a database error.
  • A 402 reaching a member who holds an active Premium seat.
Contributors:
Last edited by mobieus · Family meal sharing tickets: the conditions behind the share button and the Share with family? switch, reading a "logged but not shared" report back to a member, sharing a saved meal without logging it, and what to escalate
Created Sep 3, 2026
Was this article helpful?