Skip to Content
Nutrition tracking is now live, learn more 👉
Troubleshooting

Troubleshooting

Having trouble with data sync? Follow the steps below to diagnose the issue.


Health Data Not Syncing

This is one of the most common issues. mojo reads data directly from Apple Health (iOS) or Health Connect (Android), so the first step is to confirm whether the data actually exists in either platform before diagnosing further.

iOS

Step 1: Check your Apple Health data

  1. Open the built-in Health app on your iPhone
  2. Find the category you suspect isn’t syncing (e.g., Sleep, Steps) and tap to view its data

Step 2: Act on what you find

  • If data is there: The data exists in Apple Health — mojo may not have permission to read it. Go to the Health app → tap your profile picture (top-right) → Apps & Servicesmojo, and make sure the read permissions for the relevant categories are enabled (enabling Turn On All is recommended). If permissions are already enabled, fully close mojo and reopen it. If the issue persists, use the in-app Report a Problem feature.
  • If data is missing: The issue is upstream — your wearable’s companion app hasn’t written data to Apple Health yet. Open the app for your device (e.g., Apple Watch, Garmin Connect) and make sure it has permission to write to Apple Health.

Android

Step 1: Check your Health Connect data

  1. Go to SettingsPrivacyHealth data syncData and access
  2. Find the category you suspect isn’t syncing (e.g., Sleep) and tap to view its data

Step 2: Act on what you find

  • If data is there: The data exists in Health Connect — mojo may not have permission to read it. Go to SettingsPrivacyHealth data syncApp accessmojo, and make sure the read permissions for the relevant categories are enabled. If permissions are already enabled, fully close mojo and reopen it. If the issue persists, use the in-app Report a Problem feature.
  • If data is missing: The issue is upstream — your source app hasn’t written data to Health Connect yet. Open your source app (e.g., Xiaomi Health) and make sure it has permission to write to Health Connect.

Sleep Data Display Issues

mojo handles sleep data from health platforms in two ways:

  • With sleep stages (Core, Deep, REM, etc.): mojo renders a stacked stage chart
  • Total sleep time only, no stages: mojo still shows “Sleep: X hours” with the time range, and notes that this data source did not provide detailed stages so a stage chart can’t be rendered

If you don’t see any sleep data at all, follow the steps below to diagnose.

iOS (Apple Health)

Step 1: Check Apple Health Permissions

  1. Open the built-in Health app on your iPhone
  2. Tap your profile picture in the top-right corner
  3. Select Apps & Services
  4. Tap mojo
  5. Make sure Sleep read access is enabled (enabling Turn On All is recommended)

Step 2: Confirm Sleep Data Exists in Apple Health

Open the Health app → Sleep → scroll to the bottom and tap Show All Data. Tap last night’s record and check whether it contains data, and whether it has detailed stages (e.g., Core, Deep).

Common scenarios:

  • Mi Band and other third-party devices: Some devices only write a generic “Sleep” entry to Apple Health without detailed stages. mojo will show the total sleep duration but cannot render a stage chart.
  • Sources that only write “In Bed”: as long as that record doesn’t overlap a sleep sample of another type, mojo counts it as unstaged sleep — you’ll see the total duration but no stage chart. If a sample of another type overlaps it, mojo drops the in-bed record entirely to avoid double-counting (In Bed records from different sources that overlap each other are merged, not rejected).
  • Apple Watch: Writes complete sleep stage data and renders the full stage chart.

Step 3: Choose the Right Category When Logging Manually

If you add sleep records manually in Apple Health, prefer Core Sleep or another specific stage so mojo can draw the stage chart.

Choosing “In Bed” only gets you an unstaged total — and it only counts if it doesn’t overlap a sleep sample of another type; mojo drops such overlapping in-bed records entirely.

Type you pickWhat mojo does
“Core” or another specific stageShows the total duration and renders the stage chart (recommended)
“Sleep”Shows the total sleep duration, but cannot render the stage chart
“In Bed”Shows the total duration if it doesn’t overlap a sample of another type; otherwise not counted

Step 4: Force a Refresh

If the data and permissions look correct but mojo still isn’t showing sleep data:

  1. Fully close mojo (swipe up from the bottom of the screen and swipe the app card away)
  2. Reopen mojo — it will re-fetch the latest data from Apple Health on launch

Android (Health Connect)

Step 1: Check Health Connect Permissions

  1. Go to SettingsPrivacyHealth data syncApp accessmojo
  2. Make sure Sleep read access is enabled

Step 2: Confirm Sleep Data Exists in Health Connect

Go to SettingsPrivacyHealth data syncData and accessSleep, then tap a recent entry to see whether it includes detailed stages.

Common scenarios:

  • Mi Fitness, Huawei Health, etc.: Typically write a single sleep session without detailed stages. mojo will show the total sleep duration but cannot render a stage chart.
  • Samsung Health with Galaxy Watch: Writes complete sleep stages and renders the full stage chart.

Step 3: Force a Refresh

Go to mojo’s settings page and tap the Manual Sync button, or fully close mojo and reopen it. If sync has been failing for a long time, use Re-authorize Health Connect in mojo’s settings.


Food Data Not Syncing

Data Sources

mojo can receive food data in the following ways:

  • Manual entry in-app — add meals directly in mojo
  • Apple Health sync (iOS) — sync from third-party food apps
  • Health Connect sync (Android) — sync from third-party food apps

If you log food in a third-party app (such as FatSecret or MyFitnessPal), that app must be configured to write data to Apple Health or Health Connect for mojo to read it.

Some apps do not support syncing nutrition data to Apple Health. mojo cannot read data from those apps.

Troubleshooting Steps

A. Check third-party app permissions

Make sure the food-logging app you use has permission to write nutrition data (typically “Dietary Energy / Nutrients”) to Apple Health or Health Connect.

B. Confirm data is present in the health platform

Even if the third-party app says it has synced, open Apple Health or Health Connect and verify that the nutrition data (e.g., “Dietary Energy”) is actually there.

C. Restart mojo

After adjusting settings or entering new data, fully close mojo and reopen it to force a sync.

iOS Advanced Troubleshooting

  1. Check mojo’s read permissions: Go to the Health app → profile picture → Apps & Services → mojo, and make sure all read permissions are enabled.
  2. MyFitnessPal-specific issue: If you change the meal time of a logged item (e.g., moving lunch to dinner), MyFitnessPal may not correctly update the value in Apple Health. Try making a minor edit to that meal (e.g., changing the serving from 1 to 0.99) to trigger a sync update.

Android Advanced Troubleshooting

  1. Health Connect history limit: Health Connect may limit data history to 30 days — older data may not sync.
  2. Manual sync: Go to mojo’s settings page and tap the Manual Sync button to retry.
  3. Re-authorize: If sync has been failing for a long time, use Re-authorize Health Connect in mojo’s settings.

Problems with AI-Imported Meals

This section is about meals brought in through the “Import to Mojo” link from an AI service. It’s unrelated to the Apple Health / Health Connect syncing above.

The meal isn’t on “Today” after importing

If tapping “Import to Mojo” on iOS did nothing at all (the form never even opened), the meal was not saved, so there’s no point hunting through the date switcher. The usual cause is a date in the future: mojo rejects the whole import rather than moving it to today. A link that’s missing data (calories, for instance) looks exactly the same. Go back to the AI conversation, make sure the calories are there and give the date in full, year included (“lunch on August 11, 2026”), then tap the link again. If it belongs on today, it’s safer to not mention a date at all — avoid “today” and “yesterday”, since the AI may not know what today is. You can also just add the entry by hand.

If the form did open and you saved it, the meal was almost certainly saved — just on a different date. The AI picks the date from whatever meal time you mentioned in the chat, and only falls back to today when you didn’t mention one. If the conversation contained words like “yesterday” or “last week”, the date may have been filled in accordingly.

  1. Look on that day first. Use the date switcher on the nutrition page to go to the date the AI may have picked — the record is usually sitting there. Don’t import the meal again, or you’ll end up with two entries.
  2. Next time you import, check the note under the date field before saving (for example, “Saving to 7/28 (Yesterday)”) — that’s the date the entry will actually be saved to. If it’s wrong, change it right there in the form before you save.

Food names come out misspelled or garbled

For example, a name arriving with the wrong characters. This was a link-encoding problem in the older analysis prompt, and the current prompt fixes it.

The fix for both: don’t open the AI service from a home screen shortcut

If you added the AI service page to your home screen as a shortcut, that shortcut stores the prompt as it was when you created it — the date stays frozen on the day you made the shortcut, and the encoding rules are the old ones too. Both problems will keep coming back.

Always reopen the AI service from “Logging Tools” inside the mojo app, so you get the current prompt every time.

Last updated on