> For the complete documentation index, see [llms.txt](https://docs.tryterra.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tryterra.co/faq/help-topics.md).

# Help topics

- [API, SDK & data formats](https://docs.tryterra.co/faq/help-topics/data-api-sdk.md): The API, the SDKs, data fields, formats and provider coverage.
- [Mobile SDK setup, permissions and crashes](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes.md): Mobile SDK setup, permissions and crashes
- [Can I connect Apple Health from a web app?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/mobile-only-sources-need-sdk-not-web-or-rest.md): Apple Health, Samsung Health, Health Connect, and Google Fit (via Health Connect) are on-device, mobile-only sources with no web API.
- [Why does Health Connect re-prompt permissions on init?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/permission-prompt-reappears-on-init.md): On Android with Health Connect, initTerra automatically re-requests permissions when the device previously had a connection and the user still exists…
- [Why does the Flutter SDK fail in release but work in debug?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/android-release-proguard-r8-keep-rules.md): Code that works in debug but fails in Android release builds means R8 minification (disabled in debug) is stripping or renaming SDK classes.
- [How do I remove unused Health Connect permissions?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/strip-unused-health-permissions-store-review.md): The Terra Android SDK declares all Health Connect permissions by default, which triggers Play Store review questions about permissions you do not actually use.
- [Why are Apple Health activity webhooks empty?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/apple-health-permission-list-mapping.md): Apple Health data only flows when the matching HealthKit permission is granted, and the Health app labels don't always match Terra's data types.
- [Why am I seeing Android React Native background crashes?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/android-rn-background-crashes-upgrade.md): Random background crashes in the React Native plugin on Android were a known issue resolved in later releases.
- [Why do SDK data calls say permission not granted?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/init-sequence-before-data-calls.md): Data functions like getActivity / getDaily only work after the SDK is fully initialised.
- [Why does the SDK report success when user denies permissions?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/connection-success-does-not-mean-permissions-granted.md): This is intended behaviour.
- [Why does Health Connect heart rate sync cause OOM crashes?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/health-connect-oom-large-hr-window.md): Out-of-memory crashes reading Health Connect heart-rate data usually come from requesting too large a window at once, since HR samples are very dense.
- [Why is Google sign-in blocked in my WebView?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/google-oauth-blocked-in-webview.md): Google blocks OAuth inside embedded WebViews because the missing URL bar prevents users from verifying the domain, which surfaces as the disallowed\_useragent /…
- [How do users connect if the Apple companion app isn't in the App Store?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/missing-apple-companion-app-store-link.md): The companion app may not appear in normal App Store search.
- [How do I request more health permissions from existing users?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/expand-permissions-existing-users.md): To request more permissions from existing users, call initConnection again with an expanded set of customPermissions.
- [Why does Samsung initConnection return invalid session token?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/samsung-init-errors-token-devmode.md): An invalid-session-token error on initConnection almost always means the SDK was initialised with a different dev ID from the one used to generate the auth…
- [How does the Apple Health SDK work?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/apple-health-sdk-overview-capabilities.md): Apple Health has no server API.
- [Why does generateAuthToken hit a CORS error?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/auth-token-generate-server-side.md): Two separate things are happening here
- [Google Fit vs Health Connect SDK connection types?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/google-fit-vs-health-connect-connection-types.md): The two connection types differ in what they read
- [Why isn't Health Connect background sync firing?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/health-connect-background-sync-not-firing.md): Health Connect background sync behaves differently from Apple Health, so schedulerOn=true working immediately is not expected on first connection.
- [Why did my Python SDK data pulls stop working?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/stale-sdk-version-broke-compat.md): If data pulls suddenly stop on an older Terra client SDK version, the cause is usually an API change that broke compatibility with the outdated SDK, not…
- [Why do I get 'Invalid dev-id was provided'?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/invalid-dev-id-validation-catchall.md): The authenticateSDKUser endpoint returns Invalid dev-id was provided for any validation failure on that call, not only a bad dev-id.
- [How do getSleep start and end date filters work?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/getsleep-date-filter-behaviour.md): getSleep(startDate, endDate) returns sleep sessions for that window, and the end time is not ignored.
- [Why does the Health Connect permission screen never appear?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/mobile-sdk-setup-permissions-and-crashes/health-connect-permission-screen-missing-client-build.md): A Health Connect permission screen that never appears (with empty payloads) can be caused by your own build plugin rendering Android intents incorrectly…
- [Webhooks, dedup and sync reliability](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability.md): Webhooks, dedup and sync reliability
- [Why are daily step totals inconsistent across webhooks?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/daily-payload-cumulative-overwrite-by-day.md): Daily payloads are a running summary of the 24-hour period, sent multiple times as new data arrives, each containing totals up to that point.
- [How do I make production sync reliable?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/webhooks-as-primary-source-best-practice.md): Use webhooks as your primary data source.
- [How do I dedupe two payloads for the same event?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/dedup-by-summary-id-overwrite-updates.md): A data point is uniquely identified by the tuple (user\_id, metric/type, start\_time, end\_time, summary\_id), even when summary\_id or timestamps are null.
- [How do I dedupe multiple sources behind Apple Health?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/apple-health-multi-source-dedup.md): For Apple Health, payloads can combine data from multiple contributing apps
- [Can Apple Health data arrive near real-time?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/apple-sdk-sync-timing-foreground-dependent.md): Apple Health sync timing is controlled by iOS, which decides when to release resources to deliver new data, so true real-time delivery cannot be guaranteed.
- [How reliable is iOS background data delivery?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/ios-background-delivery-reliability-setup.md): On iOS, background delivery is triggered by the OS when new HealthKit data is available, not on a fixed schedule.
- [Can a payload show its originating source through an aggregator?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/originating-source-via-device-data.md): It depends on the provider.
- [How do I stop receiving Oura data through Apple?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/apple-foreign-data-tagged-apple-filter.md): Other apps such as Oura write their readings into Apple HealthKit.
- [Can I detect and exclude manually entered steps?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/manual-entry-upload-type-filtering.md): Most wearable APIs flag manually entered data, surfaced in metadata.upload\_type
- [Why does Samsung Health send webhooks with empty data?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/samsung-health-empty-data-not-syncing.md): When Samsung Health (read via Health Connect) returns empty payloads, work through three things
- [Why are deleted Garmin activities still returned?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/garmin-deleted-activities-persist.md): Garmin's Health API does not publish an activity-deletion event, so once an activity reaches Terra, a later delete in Garmin Connect never reaches us and the…
- [Why does a daily payload look missing for one day?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/timezone-date-boundary-missing-day.md): This is a timezone boundary effect, not missing data.
- [What sync frequency can I expect per provider?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/sync-freshness-bottleneck-device-to-cloud.md): Sync frequency depends on whether a provider is push-based or polled
- [How do I dedupe sleep webhooks with the same start time?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/sleep-dedup-summary-id.md): Use the summary\_id field under metadata to uniquely identify and update sleep records, rather than the start\_time/end\_time pair.
- [Why was the same workout re-sent with a different timezone?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/apple-travel-timezone-duplicate-workouts.md): Apple Health timestamps use the device's current timezone at sync time, and historical timezones can't be retrieved on iOS.
- [What webhook traffic rates should I expect?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/webhook-traffic-rates.md): Expected webhook traffic and burst patterns depend on your device mix, so there is no single rate.
- [Why do Apple body metrics arrive after step changes?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/apple-body-payloads-independent.md): Metrics like VO2 Max, lean body mass, and body fat are delivered in body payloads, which are sent independently of daily payloads.
- [Why did the first webhook lack heart rate?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/near-simultaneous-webhooks-use-latest.md): When two webhooks arrive close together for the same session, the earlier one may lack a field like heart rate because the source data was still being updated.
- [Why do Oura payloads differ from the Oura app?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/oura-app-vs-terra-discrepancy.md): Discrepancies between the Oura app and Terra usually have two causes
- [Why does Oura app HRV differ from the API HRV?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/hrv-app-vs-api-calculation-diff.md): A different HRV in the provider's app versus the Terra API is usually a difference in calculation method, not a data discrepancy.
- [Why did new payload fields break my parser?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/additive-schema-new-fields-parser.md): New fields can appear in payloads as part of normalised-schema updates.
- [Why are COROS activities delayed by several minutes?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/coros-polling-latency-no-webhooks.md): Yes, this latency is expected.
- [What is the permission\_change webhook type?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/informational-webhook-event-types.md): The permission\_change webhook is an informational event sent when an end user modifies the scopes granted to your app.
- [How do I know when a data request's last event arrived?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/webhooks-dedup-and-sync-reliability/track-webhook-request-completion.md): Webhook payloads include the terra-reference header value returned in the synchronous API response, so you can match deliveries to a specific request and track…
- [Provider coverage and per-provider data availability](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability.md): Provider coverage and per-provider data availability
- [Do you support CGMs like Dexcom?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/cgm-coverage-dexcom.md): Dexcom (including G7) is a reliable direct integration.
- [Why are step and distance metrics empty for WHOOP?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/provider-limitation-steps-distance.md): WHOOP devices have no step counter, so step and walking-distance metrics are never produced and those fields are always empty for WHOOP-connected users.
- [Why is hr\_zone\_data always empty for this provider?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/hr-zone-data-empty-per-provider.md): hr\_zone\_data is only populated for providers that expose it through their API.
- [Why doesn't Garmin calorie series match total\_burned\_calories?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/garmin-calorie-timeseries-vs-total.md): The calorie time series tracks active burn only, while total\_burned\_calories is the whole-day figure including BMR (resting calories).
- [Can I get time-in-zones and strength detail for Garmin?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/garmin-no-timeinzones-no-exercise-detail.md): Garmin's Health API does not provide
- [Why are Garmin daily fields like respiration and VO2 max null?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/garmin-daily-fields-null-on-other-payloads.md): Many fields that look null on the Garmin daily payload are actually delivered, just on the sleep or body payload rather than the daily envelope.
- [Why does stress data have no samples array?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/stress-data-samples-and-fields.md): Detailed stress samples are currently only available from Garmin.
- [Why don't Zwift activities forward from Garmin to Terra?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/garmin-no-third-party-activity-forwarding.md): This is expected: Garmin deliberately does not forward third-party uploaded activities (for example, from Zwift) through the API Terra uses.
- [Why is Apple Watch Sleep Score null?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/apple-sleep-score-not-exposed-by-healthkit.md): Apple's Sleep Score currently appears only on the watch/device and is not synced into Apple Health, so it isn't readable through HealthKit and comes through as…
- [Are Google Fit and Health Connect the same provider?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/googlefit-vs-health-connect-distinction.md): They are distinct providers
- [Why does Apple Health nutrition data have no timestamps?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/apple-nutrition-daily-totals-only.md): Apple Health nutrition values do carry per-entry timestamps.
- [Why does this provider's nutrition payload lack meal entries?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/nutrition-no-meal-level-detail.md): Individual meal data is not currently provided by this nutrition provider's API.
- [How do I get weight data from MyFitnessPal?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/myfitnesspal-no-body-weight.md): MyFitnessPal does not provide a body payload, because weight data is not accessible through the MyFitnessPal API.
- [Can I get raw uncalibrated CGM sensor values?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/raw-uncalibrated-cgm-not-available.md): Terra does not provide access to raw or uncalibrated CGM sensor data.
- [Which regions does Keto-Mojo support?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/ketomojo-supported-regions.md): Ketomojo is supported in two regions: US and EU.
- [Why are WHOOP sauna sessions missing from workout data?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/whoop-sauna-missing-no-strain.md): This is a WHOOP limitation, not a Terra one.
- [Is Vald strength-testing data supported?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/vald-team-sports-beta-integration.md): Vald is supported and exposes test/measurement data.
- [Do you support sleep data from COROS watches?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/coros-limited-sleep-detail.md): Sleep data is supported for COROS, but the COROS API only exposes very limited sleep information.
- [Can I get daily payloads for MapMyFitness and Strava?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/daily-payload-availability-aggregation.md): Daily payloads aggregate values recorded both during and outside workouts, which only some providers expose.
- [Why does Garmin swim data show more laps than the app?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/garmin-swim-laps-vs-lengths.md): For Garmin swimming activities, the laps array is mapped from Garmin 'lengths' (one per pool length) rather than the laps the user marks on the watch, which is…
- [Which providers return MET minutes?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/met-minutes-provider-coverage.md): MET minutes availability depends on the source provider
- [How regular are SpO2 and HRV samples from watches?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/cgm-spo2-hrv-sample-regularity.md): Sample regularity is determined by the device.
- [Which smart scales have the most reliable data flow?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/smart-scale-reliability.md): WiFi-connected scales can be unreliable at uploading readings to the provider cloud, especially when users do not open the companion app.
- [Is rr\_interval\_ms available for Fitbit?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/fitbit-rr-interval-not-exposed.md): Fitbit does not expose raw inter-beat (RR) intervals through its HRV endpoint; it returns low-to-high frequency band ranges rather than IBI values directly, so…
- [Is Garmin hydration data exposed?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/garmin-hydration-not-provided.md): Garmin does not provide hydration data, so hydration fields are null for Garmin users.
- [How do I get historic Garmin menstrual cycles?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/garmin-historical-menstruation-via-api-pull.md): Historical menstruation data from Garmin is retrieved the same way as any other historical data: via the historical data-retrieval endpoints.
- [Does the activity webhook include GPS and lap data?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/garmin-activity-gps-laps-location.md): Activity payloads include
- [Are Apple Health clinical records available?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/apple-health-clinical-records-unsupported.md): Apple Health clinical health records are not currently supported through Terra.
- [Why is bpm -1 in Apple heart rate samples?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/apple-bpm-minus-one-source-data.md): A bpm value of -1 typically originates from the source data in Apple Health, not from Terra processing.
- [Can I get detailed Apple workout routes, HR zones, laps?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/apple-detailed-workout-data-available.md): Detailed Apple workout data is available wherever it also exists in Apple Health.
- [Do I get data events if a device isn't worn?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/no-data-when-device-not-worn.md): If a user stops wearing their device, no new data is generated, so you will not receive data events.
- [Why does Polar Verity Sense send no daily or sleep data?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/session-only-devices-no-daily-sleep.md): Some Polar devices, like the Verity Sense, are session-only sensors rather than all-day trackers, so they do not produce daily or sleep summaries.
- [Does Fitbit retrieve steps once daily or intraday?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/fitbit-intraday-step-frequency.md): Terra uses Fitbit's intraday step endpoint, so step data is retrieved multiple times per day (roughly 10-20 times) via Fitbit webhooks rather than once daily.
- [Why are Huawei heart rate samples once per minute?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/huawei-hr-downsampled-upstream.md): Huawei's public Health Kit only exposes the com.huawei.instantaneous.heart\_rate stream, stored at roughly one sample per minute, plus activity-level aggregate…
- [How do I read partial field availability on the support page?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/support-page-partial-field-availability.md): On the wearable-data support page, a partial-support indicator means data may arrive from that device but not all fields will be populated.
- [Why are Garmin step samples empty but totals correct?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/garmin-step-samples-empty-epochs-webhook.md): This is expected Garmin behaviour.
- [Is Oura Ring 4 data accessible via Terra?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/oura-coverage-ring4-payloads.md): Yes, Oura Ring 4 is fully supported.
- [Are Oura women's health features available?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/oura-womens-health-not-exposed.md): Oura's Cycle Insights and menopause tracking are not available through the integration, because Oura does not expose those features via its third-party API.
- [Why are COROS sleep stages and sleep score missing?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/coros-sleep-stages-not-exposed.md): COROS's partner API does not expose sleep stages or a sleep score, so those fields cannot be delivered even though they appear in the COROS Training Hub UI.
- [Why is Health Connect glucose missing timezone and device\_data?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/health-connect-glucose-timezone-device-data.md): For Health Connect glucose, timestamps are sent as the UTC instant without a timezone suffix, so parse them as UTC and apply the user's timezone yourself.
- [Why is Apple Health body composition data missing?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/apple-body-composition-fields-missing.md): Apple Health does not have skeletal muscle mass or visceral fat as data types, so there is nothing to read or pass on for an Apple connection.
- [Can I compute HR zones from hr\_samples?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/provider-coverage-and-per-provider-data-availability/compute-hr-zones-from-samples.md): hr\_samples from the Activity event are the right input for computing your own zones.
- [Data model, fields and units](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units.md): Data model, fields and units
- [Why are so many data fields null?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/null-fields-are-provider-dependent.md): Null or empty fields almost always mean the provider's API does not expose that metric (even if it appears in their consumer app), not a Terra error.
- [Where do Garmin VO2 max and sleep score appear?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/garmin-metric-locations-in-data-model.md): Garmin metrics are split across payload types, so inspecting only the daily webhook makes them look empty.
- [Where do I find field definitions and enum values?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/field-definitions-and-enum-lookup.md): Full field-by-field definitions for every payload type are in the API reference data models section, and enum values like ActivityType are listed there too.
- [Is the meal timestamp consumed time or logged time?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/nutrition-meal-timestamp-meaning.md): The meal timestamp reflects whatever the upstream provider returns.
- [Why is sleep duration shorter than the session window?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/sleep-duration-shorter-than-window.md): Sleep state durations are computed from the hypnogram samples the provider returns.
- [Why doesn't activity end time equal start plus active seconds?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/activity-elapsed-vs-active-seconds.md): The two durations measure different things, so a mismatch is expected.
- [What's the difference between resting and average HR in sleep?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/resting-vs-average-hr-scope.md): The two fields cover different scopes within the sleep session.
- [Can I get data in imperial units instead of metric?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/units-metric-only-no-imperial.md): All data is normalised to the standard metric/SI units defined in Terra's data models, regardless of the end user's device or provider unit settings.
- [What units and scales do health and enrichment scores use?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/score-and-enrichment-units-scales.md): Provider scores (activity, sleep, recovery) are unit-less values on a 1-100 scale, calculated by the providers themselves, so 'good' can differ between brands.
- [What is the difference between body and daily payloads?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/daily-vs-body-payload-differences.md): Daily and Body payloads cover different things, with some deliberate overlap.
- [How do I build sleep stage charts from hypnogram samples?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/hypnogram-single-timestamp-reconstruction.md): Yes, you can build a sleep stage chart from single-timestamp hypnogram samples.
- [Why is a webhook field not in the documented schema?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/schema-source-of-truth-extra-fields.md): The authoritative schema is the published OpenAPI specification in the public GitHub repository, and the REST API reference is the source of truth for field…
- [What's the difference between the three sleep scores?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/three-sleep-scores-explained.md): There are three sleep scores
- [Does inactivity\_seconds include sleep?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/inactivity-seconds-includes-sleep.md): For providers that don't report inactive time directly (like Garmin), inactivity\_seconds is computed as 24 hours minus active time.
- [What units is the sleep temperature delta in?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/temperature-delta-units.md): The temperature delta field in sleep payloads is in degrees Celsius.
- [Why isn't activity name one of the Terra activity enums?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/activity-name-vs-type-enum.md): metadata.name carries the user's custom activity title from the provider and can be any free-text string.
- [How does the net carbohydrates field work across providers?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/net-carbohydrates-field-and-provider-variance.md): The nutrition data model includes a macros.net\_carbohydrates\_g field even where the docs lag.
- [How do I explore the FHIR output format?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/fhir-format-documentation.md): To explore the FHIR format, switch a testing environment to FHIR processing and use the data generator to send sample payloads to your webhook.
- [Is the device-to-phone sync timestamp in the payload?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/sync-timestamp-not-exposed.md): Terra does not store or expose the exact timestamp at which a wearable synced to its companion phone app.
- [What's in active durations and intensity buckets?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/active-durations-and-intensity-buckets.md): In Daily payloads, active\_durations\_data aggregates the whole day's activity
- [Are activity payloads standardised across providers?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/activity-model-standardized.md): Terra standardises all activity data into a single unified Activity model regardless of provider, covering movement, heart rate, power, distance, calories and…
- [Does Terra smooth samples, and why do array lengths differ?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/no-smoothing-sample-array-length-mismatch.md): Terra applies no smoothing or post-processing to sample data; values are piped through as the provider supplies them, so any smoothing you see is applied at…
- [Are weight and body fat supported in body payloads?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/body-measurements-supported.md): Body measurement data is supported in the body payload across all environments, including production.
- [What is RR\_INTERVAL and which devices stream speed?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/rr-interval-and-streaming-coverage.md): RR\_INTERVAL is the time between two consecutive R-waves (R-peaks of consecutive QRS complexes), typically provided by chest and arm straps alongside heart rate.
- [Why is a WHOOP activity mapped to the wrong type?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/activity-type-mislabel-defaults-to-other.md): Activity type mislabelling usually stems from the provider sending a generic or unmapped type code, which Terra maps to a default.
- [Is visceral\_fat\_level a percentage?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/visceral-fat-level-units.md): visceral\_fat\_level is the raw numeric index passed through from the scale device.
- [What does the timestamp\_localization metadata field mean?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/data-model-fields-and-units/metadata-field-meanings.md): The timestamp\_localization field in payload metadata indicates whether the provider's timestamps are truly localized
- [Authentication, users and connection state](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state.md): Authentication, users and connection state
- [How do I deauthenticate users in bulk?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state/deauthenticate-users.md): To disconnect a specific user, call /auth/deauthenticateUser with the user's user\_id (this is API-only, not available in the dashboard).
- [Why are there multiple Terra users for one reference\_id?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state/multiple-terra-users-per-reference-id.md): A single provider account maps to exactly one Terra user.
- [How do I detect whether a user connected a wearable?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state/detect-connection-and-list-users.md): Use the /userinfo endpoint, optionally filtering by your reference\_id, to list a user's connections and all associated user\_ids.
- [Why are multiple user\_ids created for one reference\_id?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state/user-uniqueness-reference-id.md): Each Terra user\_id represents a single user-provider connection, and every data request is scoped to one user\_id (one call returns one provider's data).
- [Why does getUserId return null after init?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state/verify-connection-getuserid-not-checkauth.md): checkAuth is deprecated and only returns a boolean with no error context.
- [How do I detect an existing native SDK connection?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state/detect-existing-connection-disconnect.md): Use the mobile SDK's getUserId function for the connection type to detect an existing native connection.
- [How do I start user authentication?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state/auth-flow-start.md): There are two ways to authenticate users
- [Can I share one reference\_id across multiple users?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state/reference-id-uniqueness-per-user.md): Sharing a single reference\_id across multiple end users is not supported.
- [How do I get a user's MyFitnessPal username from user\_id?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state/get-provider-username-via-athlete.md): Call the Athlete endpoint to get the provider-side username from a Terra user\_id
- [How do I verify a connection with userInfo?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state/userinfo-verification-flow.md): Verify a connection by calling GET /v2/userInfo with the user\_id taken from the user.user\_id field of the auth\_success webhook payload, not the widget redirect…
- [What triggers an Omron deauth event?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state/omron-deauth-event-trigger.md): An Omron deauth webhook is triggered by a call to the /deauthenticateUser endpoint, which fires this event.
- [Why no new auth event when Apple Health reconnects?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state/apple-no-auth-event-on-reconnect.md): This is expected behaviour.
- [Why does InBody error that the API version is unsupported?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state/expired-auth-link.md): A required components unavailable on your version error is often not a version problem at all, but an artifact of an expired authentication link.
- [Can I get the provider OAuth tokens Terra holds?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state/provider-oauth-tokens-not-exposed.md): Terra cannot expose the provider OAuth tokens it manages.
- [Is there a pending state or timeout for initConnection?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state/initconnection-no-pending-state.md): initConnection creates the connection synchronously on Terra's backend, so there is no lingering 'pending' state.
- [Can providers connect without the widget?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/authentication-users-and-connection-state/widget-optional-direct-api-auth.md): The widget is a convenience for the front-end auth flow, not a requirement.
- [API endpoints, errors and migrations](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations.md): API endpoints, errors and migrations
- [Why does the GET API return 200 with no data array?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/to-webhook-default-and-empty-response.md): By default, data GET requests use to\_webhook=true, so data is delivered asynchronously to your configured webhook and the immediate response contains only user…
- [Should I migrate to the access.tryterra.co endpoint?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/migrate-to-new-api-infrastructure.md): If you received the migration email, switch REST requests to the new base URL https://access.tryterra.co/api/v2.
- [Why do I get a 400 connection does not support data type error?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/unsupported-data-type-per-provider.md): A 400 connection does not support requested data type means the connected provider does not offer that data type.
- [Why am I getting a 403 on generateWidgetSession?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/rate-limits-and-no-bans.md): A 403 on this endpoint is usually a configuration or scope issue, not an account block.
- [Why does the API return "Request is processing" instead of data?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/garmin-async-processing-and-cache.md): For some providers (notably Garmin), the first REST request for a given period returns Request is processing, try again later while the data is fetched…
- [Why does authenticateUser fail for some provider names?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/sdk-vs-web-providers.md): Providers marked setup: 'SDK' in /v2/integrations/detailed (Apple Health, Google Fit / Health Connect) cannot be used with /v2/auth/authenticateUser, which is…
- [Is the JavaScript SDK deprecated?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/js-sdk-deprecation-backend-sdk-versions.md): The legacy JavaScript npm package still functions but no longer receives updates and was removed from the docs.
- [Why does generateWidgetSession return a 500?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/widget-session-providers-string-format.md): For generateWidgetSession, the providers field must be a single comma-separated string (for example, "GARMIN,FITBIT,OURA"), not a JSON array or list.
- [Why does a Hevy activity pull return 404?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/hevy-unsupported-data-type-404.md): Some providers only support a subset of data types.
- [Why do some auth URLs error out?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/auth-url-errors.md): If an integration is absent from the supported-integrations list in the docs, it has likely been deprecated.
- [How do I migrate WHOOP from V1 to V2?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/whoop-v1-to-v2-migration.md): To move from WHOOP API V1 to V2, change the webhook endpoint version from V1 to V2 in the WHOOP developer dashboard.
- [Where did the activity type enum docs move?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/garmin-enum-docs-moved.md): The activity type enums documentation moved during the docs reorganisation and now lives in the API reference section of the docs.
- [Why is the OpenAPI spec docs link broken?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/openapi-spec-link-broken.md): If the OpenAPI specification page link is broken, the spec is also published in Terra's public openapi GitHub repository, which you can use in the meantime.
- [How do I delete lab report uploads?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/data-deletion-via-ticket.md): Lab report / upload deletion is currently handled by opening a support ticket.
- [Why does Team API create-coach return an invalid token error?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/token-casing-self-resolved.md): An invalid-token or region error on Team API create-coach can be caused by incorrect casing in the token.
- [Why does authenticateUser return a malformed request body error?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/request-body-strict-typing.md): A malformed request body error usually means a field is the wrong type, for example reference\_id must be a string, not an integer.
- [Why does /activity return invalid user id after auth?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/environment-mismatch-invalid-user-id.md): An invalid user id error on a user that looks authenticated usually means the request credentials belong to a different environment than the user.
- [Why does the duplicate-workout-name error differ by provider?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/provider-error-string-normalisation.md): Error detail strings differ across providers because Terra normalises some providers' error conditions into a consistent message, while passing others through…
- [How do I point the terra-api npm client at the new endpoint?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/api-endpoints-errors-and-migrations/npm-client-custom-baseurl-new-endpoint.md): You can route to the new direct endpoint today, without waiting for a package release, by passing a custom baseUrl to the SDK client constructor (set it to the…
- [Historical data and backfill](https://docs.tryterra.co/faq/help-topics/data-api-sdk/historical-data-and-backfill.md): Historical data and backfill
- [Why does Apple Health backfill return empty arrays?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/historical-data-and-backfill/apple-health-sdk-backfill.md): Apple Health data lives on the device, so historical data cannot be backfilled through the web/REST API.
- [Why does a historical fetch return a 504 timeout?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/historical-data-and-backfill/historical-fetch-size-timeouts-504-413-500.md): Large synchronous historical pulls (to\_webhook=false) can exceed the response-size limit or the ~30s gateway timeout, returning 504 / 413 / 500, especially…
- [Why am I hitting rate limits during a backfill?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/historical-data-and-backfill/provider-rate-limits-backfill.md): A 429 carrying a provider rate-limit message means the upstream provider's per-user quota is exhausted, not a Terra limit.
- [When is historical data available after connect?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/historical-data-and-backfill/mobile-native-no-backfill-sdk-fetch.md): Mobile-native sources read from data stored on the user's phone, not a cloud history.
- [Can the SDK retrieve historical data, and over what period?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/historical-data-and-backfill/sdk-backfill-historical-retrieval.md): SDK-provider data can flow automatically once a user connects, if the scheduler is on.
- [Why did old Garmin payloads arrive without my request?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/historical-data-and-backfill/garmin-unrequested-historical-payloads.md): This is expected behaviour given Garmin's API design, not an error on your side.
- [How do CGM glucose webhook payloads work?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/historical-data-and-backfill/cgm-glucose-body-payload-delivery-history.md): Payload structure: each body payload contains all glucose samples for a given calendar date in the user's local timezone, and updates are supersets of previous…
- [Can I default Garmin historical data permission on?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/historical-data-and-backfill/garmin-historical-data-permission-off-default.md): Historical data permission is off by default for Garmin connections and cannot be changed.
- [Why is a workout timestamp weeks in the past?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/historical-data-and-backfill/apple-late-historical-workout-timestamps.md): Workout timestamps reflect when the activity was originally performed, not when it was synced.
- [Can I see the COROS historical-consent choice?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/historical-data-and-backfill/coros-historical-consent-not-surfaced.md): The COROS historical-data consent prompt is shown during their OAuth flow, but COROS does not return the user's choice in the token response, so Terra cannot…
- [Are there limits on Wahoo backfill requests?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/historical-data-and-backfill/wahoo-backfill-no-rate-limit.md): We are not currently aware of specific rate limits on Wahoo workout backfill requests, but provider behaviour can change.
- [How do I detect backfill completion with S3 destinations?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/historical-data-and-backfill/s3-reference-id-and-backfill-completion.md): reference\_id is only populated if you pass it when connecting users (in the widget session or the generateAuthToken call); otherwise it is null.
- [Why isn't the backfill / Sync Now button working?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/historical-data-and-backfill/historical-date-param-format.md): When triggering a historical pull or backfill, the start and end date parameters must be a plain date (YYYY-MM-DD), not a full ISO timestamp with time and…
- [Account config, environments and going live](https://docs.tryterra.co/faq/help-topics/data-api-sdk/account-config-environments-and-going-live.md): Account config, environments and going live
- [What does 'user limit reached' mean in testing?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/account-config-environments-and-going-live/test-staging-user-limit.md): Testing and staging environments have a fixed cap on connected users each.
- [Can samples be enabled per provider instead of globally?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/account-config-environments-and-going-live/samples-gps-config.md): The account-wide samples toggle for webhooks cannot be set per provider.
- [Why does the API return a no-permissions error for a data type?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/account-config-environments-and-going-live/scopes-permissions-config.md): The error You do not have permissions for this data category usually means that data type is disabled in your dashboard configuration.
- [How does the 2026 Google Fit deprecation affect me?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/account-config-environments-and-going-live/google-fit-2026-deprecation.md): Terra's 'Google Fit' provider is implemented via the mobile SDK reading from Health Connect on-device, not the deprecated Google Fit REST API, so it is already…
- [How do I get a sandbox or test account for QA?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/account-config-environments-and-going-live/test-tooling-and-sandbox.md): Here's the tooling for QA testing
- [What extra steps are needed to go to production?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/account-config-environments-and-going-live/go-live-no-approval-needed.md): No additional validation or approval from Terra is required to go to production.
- [Do I need my own Strava API app?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/account-config-environments-and-going-live/strava-own-app-and-quota.md): Register your own Strava API app to get a dedicated rate-limit bucket separate from other Terra customers.
- [Why is the scopes field empty for on-device connections?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/account-config-environments-and-going-live/samsung-empty-scopes-field.md): For SDK-based on-device connections, the scopes field is informational and used mainly for debugging, so it can be empty without affecting data flow.
- [Does disabling a provider disconnect connected users?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/account-config-environments-and-going-live/disabling-provider-keeps-connections.md): Disabling a provider in your dashboard does not deauthenticate users who already connected.
- [Which providers show data-type toggles during auth?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/account-config-environments-and-going-live/auth-scope-toggles-and-sync-behavior.md): Whether end users see toggles to choose which data types to share is provider-specific
- [How do I meet Garmin's brand attribution requirement?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/account-config-environments-and-going-live/garmin-brand-attribution-requirement.md): Garmin's brand guidelines require that users can clearly see when displayed data originates from Garmin devices.
- [How do I handle the Fitbit-to-Google migration?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/account-config-environments-and-going-live/fitbit-to-google-migration.md): For the Fitbit-to-Google account migration, keep using the Fitbit connection for both new and existing users.
- [Can the payload simulator send FIT files?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/account-config-environments-and-going-live/payload-simulator-fit.md): The payload simulator follows your account's processing format.
- [Why am I hitting the staging user limit?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/account-config-environments-and-going-live/expo-duplicate-test-users-staging-limit.md): Expo can regenerate device IDs during development, which creates duplicate test users and can exhaust the staging user limit.
- [How do I handle VAPT findings against the SDK?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/account-config-environments-and-going-live/vapt-security-findings-on-sdk.md): Common VAPT findings on the SDK, and how to handle each
- [Realtime streaming and BLE](https://docs.tryterra.co/faq/help-topics/data-api-sdk/realtime-streaming-and-ble.md): Realtime streaming and BLE
- [Which providers support real-time streaming?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/realtime-streaming-and-ble/streaming-api-capabilities-devices.md): Terra's real-time Streaming API (Real-Time SDK / TerraRT) only works with devices that broadcast continuously over BLE or ANT+, for example certain…
- [Why does BLE realtime throw 'no supported characteristics'?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/realtime-streaming-and-ble/ble-realtime-supported-devices.md): Real-time BLE streaming only works with devices that broadcast over a recognised standard BLE characteristic (for example heart rate).
- [Why does realtime streaming return success but no events?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/realtime-streaming-and-ble/realtime-streaming-ble-broadcast-required.md): Real-time streaming only works with devices that actively broadcast heart rate over BLE.
- [Can Garmin watches stream heart rate over BLE in real time?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/realtime-streaming-and-ble/realtime-ble-streaming-capabilities.md): Real-time streaming via TerraRT works only for the metrics a device actually broadcasts over BLE.
- [How do I make Apple Watch streaming work from Flutter?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/realtime-streaming-and-ble/apple-watch-streaming-watchos-companion.md): Apple Watch streaming requires a separate watchOS companion target, managed natively in Xcode and written in Swift, even when the main app is Flutter or React…
- [Why does iOS realtime streaming fail TestFlight upload?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/realtime-streaming-and-ble/ios-streaming-info-plist-bluetooth-keys.md): iOS realtime streaming needs Bluetooth (and optionally Motion) usage-description keys in Info.plist so permissions are requested at first launch and submission…
- [How do I keep BLE streaming alive when iOS is backgrounded?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/realtime-streaming-and-ble/realtime-keep-alive-backgrounded-ios.md): Continuous websocket realtime streaming cannot run while the iOS app is backgrounded.
- [How do I test realtime streaming without a wearable?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/realtime-streaming-and-ble/test-realtime-without-wearable-phone-sensors.md): The data generator/simulator does not yet support realtime streaming simulation, it covers the Unified API and mobile SDK only.
- [Why does my watch streaming session hang?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/realtime-streaming-and-ble/terra-instance-singleton-watch-hang.md): If a TerraRT streaming session hangs and stopExercise callbacks never fire, check whether the Terra() instance is being created more than once (for example…
- [Extra features: scores, graphs, teams, nutrition, CGM](https://docs.tryterra.co/faq/help-topics/data-api-sdk/extra-features-scores-graphs-teams-nutrition-cgm.md): Extra features: scores, graphs, teams, nutrition, CGM
- [Why are data\_enrichment health scores null?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/extra-features-scores-graphs-teams-nutrition-cgm/health-scores-data-enrichment-null.md): Terra Health Scores under data\_enrichment are gated by input-metric availability, not by provider, and there are several reasons they come back null
- [How do I dedup updated vs new meals across nutrition webhooks?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/extra-features-scores-graphs-teams-nutrition-cgm/nutrition-meals-upsert-no-stable-id.md): Treat meals within a nutrition payload like samples, not ID-dependent records.
- [Is the Teams API available and how do I use it?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/extra-features-scores-graphs-teams-nutrition-cgm/teams-api-beta.md): The Teams API is in semi-public beta ahead of full release, and is webhook-based.
- [How do I implement the Health Rewards feature?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/extra-features-scores-graphs-teams-nutrition-cgm/rewards-and-health-scores.md): Health Rewards has no dedicated data-collection API endpoints in the webhook model.
- [How do I use the Graph API to display per-user data?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/extra-features-scores-graphs-teams-nutrition-cgm/graphs-feature.md): The Graph API generates per-user charts (sleep, HR, steps, glucose and more).
- [Can I send workouts to Apple, Garmin and COROS watches?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/extra-features-scores-graphs-teams-nutrition-cgm/planned-workout-push-to-watch.md): Pushing a workout to a watch is exactly what the Planned Workouts API is for: define a structured workout as a template, then schedule it to a user and it…
- [How do Garmin planned workouts handle completion and updates?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/extra-features-scores-graphs-teams-nutrition-cgm/garmin-planned-workout-lifecycle.md): Terra's Garmin planned-workout adapter uses Garmin's Workout Schedule endpoint.
- [Why do nutrition provider activity events have null summary\_id?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/extra-features-scores-graphs-teams-nutrition-cgm/nutrition-provider-null-activity-events.md): Some nutrition-focused providers (for example, Nutracheck) do not supply a summary ID or accurate start/end times for workouts, so their activity payloads can…
- [Can I look up food details from the nutrition meal id?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/extra-features-scores-graphs-teams-nutrition-cgm/nutrition-meal-name-null-id-not-lookupable.md): The meal id in a nutrition payload is a provider-specific passthrough identifier and cannot be looked up via the API to retrieve food details.
- [Which hosted graph session types exist?](https://docs.tryterra.co/faq/help-topics/data-api-sdk/extra-features-scores-graphs-teams-nutrition-cgm/custom-hosted-graph-session-types.md): Only some metrics have named hosted graph session types (for example SLEEP\_HRV\_SUMMARY, SLEEP\_RESPIRATORY\_RATE\_SUMMARY).
- [My data isn't arriving](https://docs.tryterra.co/faq/help-topics/no-data.md): Data not showing up, stopped, delayed, or missing from payloads.
- [Connected but no data arriving](https://docs.tryterra.co/faq/help-topics/no-data/connected-but-no-data-arriving.md): Connected but no data arriving
- [Why is no Samsung Health data syncing after I connected?](https://docs.tryterra.co/faq/help-topics/no-data/connected-but-no-data-arriving/samsung-healthconnect-sdk-pull-required.md): Samsung Health is a mobile-SDK integration read through Health Connect (Samsung writes into Health Connect, the SDK reads from there), so there is no…
- [Why does my Huawei connection send no data?](https://docs.tryterra.co/faq/help-topics/no-data/connected-but-no-data-arriving/huawei-permissions-and-toggles-required.md): Huawei connecting without data almost always traces to a permission or toggle on the user's side, or missing key scopes.
- [Is there a more reliable Samsung Health connection path?](https://docs.tryterra.co/faq/help-topics/no-data/connected-but-no-data-arriving/samsung-direct-route-recommended.md): When Samsung via Health Connect is unreliable, the recommended path is Terra's direct Samsung Health route, which does not require Health Connect and delivers…
- [Why isn't my Renpho body measurement data showing up?](https://docs.tryterra.co/faq/help-topics/no-data/connected-but-no-data-arriving/renpho-legacy-accounts-only.md): The Renpho integration currently supports end users on older (legacy) Renpho accounts.
- [What does google\_no\_datasource mean?](https://docs.tryterra.co/faq/help-topics/no-data/connected-but-no-data-arriving/google-fit-no-datasource.md): The google\_no\_datasource warning means Terra connected to the Google account but found no fitness data sources.
- [Why are Garmin/Samsung datasets empty?](https://docs.tryterra.co/faq/help-topics/no-data/connected-but-no-data-arriving/wrong-provider-account-connected.md): Empty datasets often mean the user connected the wrong provider account.
- [Why is my payload history empty?](https://docs.tryterra.co/faq/help-topics/no-data/connected-but-no-data-arriving/empty-payload-history-no-cloud-data.md): An empty payload history usually means the connected user has no new data synced to the provider's cloud for that period, not a Terra delivery failure.
- [Why does my Fitbit data look wrong or barely match the Fitbit app?](https://docs.tryterra.co/faq/help-topics/no-data/connected-but-no-data-arriving/fitbit-wrong-account-connected.md): The most common cause is that a different Fitbit account was connected than the one holding the user's data.
- [Webhooks & background delivery stopping](https://docs.tryterra.co/faq/help-topics/no-data/webhooks-background-delivery-stopping.md): Webhooks & background delivery stopping
- [How do I enable Apple Health background delivery?](https://docs.tryterra.co/faq/help-topics/no-data/webhooks-background-delivery-stopping/apple-health-background-delivery-not-configured.md): Apple Health flows from the on-device SDK to Terra's servers; there is no server-side pull, so a server-side GET /v2/{data\_type}?to\_webhook=true only returns…
- [Why does WHOOP only deliver data on manual pull?](https://docs.tryterra.co/faq/help-topics/no-data/webhooks-background-delivery-stopping/whoop-webhook-v2-and-byoc-config.md): If WHOOP data arrives only on manual pull but not automatically, the issue is the webhook configuration in the WHOOP developer portal, not your own endpoint.
- [Why is Apple Health syncing infrequently?](https://docs.tryterra.co/faq/help-topics/no-data/webhooks-background-delivery-stopping/apple-health-sync-frequency-and-stalls.md): Apple Health sync frequency is controlled by iOS, which pings the app to deliver new data only when there is new data and sufficient device resources.
- [Why am I getting auth but no Health Connect data webhooks?](https://docs.tryterra.co/faq/help-topics/no-data/webhooks-background-delivery-stopping/healthconnect-no-background-delivery.md): Whether Health Connect data flows automatically after authentication depends on the scheduler.
- [How are background sync gaps and payload size handled?](https://docs.tryterra.co/faq/help-topics/no-data/webhooks-background-delivery-stopping/background-sync-gaps-and-payload-chunking.md): Background sync gaps are usually end-user-side: the wearable hasn't synced to its app, battery-saving mode is on, or (for mobile SDKs) background refresh is…
- [What's the recommended delivery method?](https://docs.tryterra.co/faq/help-topics/no-data/webhooks-background-delivery-stopping/upgrade-api-version-for-delivery.md): Delivery instability is generally not specific to a destination like Firebase.
- [Why do Samsung users lose sync after the app sits idle?](https://docs.tryterra.co/faq/help-topics/no-data/webhooks-background-delivery-stopping/samsung-background-battery-sync-loss.md): On Samsung devices, both Health Connect and your app must stay alive in the background for sync to continue.
- [Connections expiring & disconnecting](https://docs.tryterra.co/faq/help-topics/no-data/connections-expiring-disconnecting.md): Connections expiring & disconnecting
- [How do I fix a Whoop 'authorization expired' error?](https://docs.tryterra.co/faq/help-topics/no-data/connections-expiring-disconnecting/authorization-expired-user-reconnect.md): An 'Authorization expired, please reauthorize with the data provider' error means the provider-side token is no longer valid, usually because the end user…
- [How do I handle silent mobile disconnects?](https://docs.tryterra.co/faq/help-topics/no-data/connections-expiring-disconnecting/silent-mobile-disconnect-reinit.md): Silent disconnects mainly affect mobile-based integrations like Apple Health and Health Connect.
- [How do I detect expired user connections?](https://docs.tryterra.co/faq/help-topics/no-data/connections-expiring-disconnecting/detect-expirations-via-webhooks-not-polling.md): To check whether a single connection is still valid, make a data request.
- [How do I disconnect a user?](https://docs.tryterra.co/faq/help-topics/no-data/connections-expiring-disconnecting/how-to-disconnect-delete-connection.md): Disconnecting a user is handled backend-side, not in the mobile SDK and not from the dashboard.
- [Why is a user's Garmin activity missing with no webhook?](https://docs.tryterra.co/faq/help-topics/no-data/connections-expiring-disconnecting/garmin-user-revoked-access.md): A sudden, user-specific Garmin cutoff almost always means the user revoked access in Garmin Connect (Settings Connected Apps).
- [Why does my Withings fetch return a failed dependency error?](https://docs.tryterra.co/faq/help-topics/no-data/connections-expiring-disconnecting/withings-upstream-error-reconnect.md): A failed dependency / 502 on a Withings fetch means Withings' API returned an error on Terra's request, usually temporary downtime, revoked auth, or an account…
- [What causes a Fitbit DEAUTH event?](https://docs.tryterra.co/faq/help-topics/no-data/connections-expiring-disconnecting/fitbit-shared-oauth-deauth-second-app.md): Fitbit allows only one active authorisation per user, so connecting the same Fitbit account through a second app revokes the first connection and fires a…
- [Historical backfill returns nothing](https://docs.tryterra.co/faq/help-topics/no-data/historical-backfill-returns-nothing.md): Historical backfill returns nothing
- [Why does Polar return no historical data?](https://docs.tryterra.co/faq/help-topics/no-data/historical-backfill-returns-nothing/polar-no-pre-auth-history-and-manual-excluded.md): Polar's API does not allow retrieving data recorded before the user authenticated, and historical retrieval is limited to roughly 30 days back from the…
- [Can Terra backfill historical Samsung Health data?](https://docs.tryterra.co/faq/help-topics/no-data/historical-backfill-returns-nothing/samsung-sdk-no-backfill-or-historical-recovery.md): Samsung Health data comes from the device via Health Connect, not a cloud API, so there is no server-side endpoint to resend or backfill historical days.
- [Why is Garmin historical backfill returning empty?](https://docs.tryterra.co/faq/help-topics/no-data/historical-backfill-returns-nothing/garmin-historical-export-toggle-off.md): Garmin historical retrieval requires the historical-data sharing option to be granted on Garmin's consent screen, which can default to OFF (and was defaulted…
- [Why does my Garmin backfill return empty payloads?](https://docs.tryterra.co/faq/help-topics/no-data/historical-backfill-returns-nothing/garmin-async-empty-then-bursts.md): Garmin delivers historical data asynchronously, so a backfill request can return success (Data sent to destination) with initially empty payloads, then data…
- [Why does Apple Health backfill return empty for a date range?](https://docs.tryterra.co/faq/help-topics/no-data/historical-backfill-returns-nothing/apple-health-historical-access-restricted.md): When a user first authorizes a new app for HealthKit, iOS may restrict access to some historical data even though the Health app shows it.
- [Why does Coros backfill return nothing?](https://docs.tryterra.co/faq/help-topics/no-data/historical-backfill-returns-nothing/coros-limited-history-and-native-only.md): Both behaviours are provider-side limitations on Coros, not Terra.
- [Can I backfill missing historical data?](https://docs.tryterra.co/faq/help-topics/no-data/historical-backfill-returns-nothing/historical-backfill-endpoints-and-gaps.md): Yes.
- [Why do historical requests only partially arrive?](https://docs.tryterra.co/faq/help-topics/no-data/historical-backfill-returns-nothing/async-historical-rate-limits.md): Historical data requests are processed asynchronously, so the API can return success while the upstream fetch later fails due to provider rate limits.
- [Missing fields & data types in payloads](https://docs.tryterra.co/faq/help-topics/no-data/missing-fields-data-types-in-payloads.md): Missing fields & data types in payloads
- [Why are Apple Health HR, sleep stages or GPS missing?](https://docs.tryterra.co/faq/help-topics/no-data/missing-fields-data-types-in-payloads/apple-health-missing-detailed-samples.md): Missing detail in Apple Health payloads almost always means the source did not record it, or a HealthKit permission was not granted, not a pipeline failure.
- [Why does Fitbit data look duplicated or missing?](https://docs.tryterra.co/faq/help-topics/no-data/missing-fields-data-types-in-payloads/fitbit-native-only-and-snapshot-behaviour.md): Fitbit's API only syncs data recorded by Fitbit's own devices, so third-party data routed into the Fitbit app will not arrive.
- [Why isn't third-party activity in Garmin Connect reaching Terra?](https://docs.tryterra.co/faq/help-topics/no-data/missing-fields-data-types-in-payloads/garmin-thirdparty-imports-excluded.md): Garmin's Wellness API only returns activities recorded natively on a Garmin device.
- [Why have my Fitbit heart rate fields gone null?](https://docs.tryterra.co/faq/help-topics/no-data/missing-fields-data-types-in-payloads/fitbit-samples-scope-empties-summaries.md): Fitbit heart-rate summary fields are computed from the heart-rate samples the provider sends, so disabling the samples scope in your dashboard also empties the…
- [Why is sleep null in my Fitbit daily payload?](https://docs.tryterra.co/faq/help-topics/no-data/missing-fields-data-types-in-payloads/sleep-is-separate-data-type.md): Sleep is delivered as a dedicated sleep data type, not inside the daily payload.
- [Why are glucose and temperature samples missing?](https://docs.tryterra.co/faq/help-topics/no-data/missing-fields-data-types-in-payloads/with-samples-flag-required.md): Sample-level data such as glucose and temperature readings is only included when the request sets with\_samples=true.
- [Auth, scopes & user ID matching](https://docs.tryterra.co/faq/help-topics/no-data/auth-scopes-user-id-matching.md): Auth, scopes & user ID matching
- [Why does user\_id not match between UI and webhooks?](https://docs.tryterra.co/faq/help-topics/no-data/auth-scopes-user-id-matching/same-account-multiple-reference-ids-duplicates.md): This is expected behaviour driven by reference\_id.
- [Why does my redirect fail with missing\_scopes?](https://docs.tryterra.co/faq/help-topics/no-data/auth-scopes-user-id-matching/missing-or-insufficient-scopes-on-auth.md): These errors mean the end user did not grant the scopes the integration requires, so have them reauthenticate and grant the missing access.
- [How do I handle a changed Terra user ID after reauth?](https://docs.tryterra.co/faq/help-topics/no-data/auth-scopes-user-id-matching/reauth-webhook-user-id-changes.md): When a Terra user ID changes, the user reauthenticated (reconnected the same provider account under the same reference\_id).
- [Delivery delays & lag](https://docs.tryterra.co/faq/help-topics/no-data/delivery-delays-lag.md): Delivery delays & lag
- [Why is my Oura data late, and can I force a sync?](https://docs.tryterra.co/faq/help-topics/no-data/delivery-delays-lag/oura-app-vs-cloud-delay.md): Oura's mobile app and cloud are separate systems, and Terra can only access cloud data.
- [Why is my Garmin webhook delivery delayed by about an hour?](https://docs.tryterra.co/faq/help-topics/no-data/delivery-delays-lag/garmin-push-only-delivery-delay.md): Terra delivers Garmin data within seconds of receiving Garmin's push.
- [Why does weight from phone health apps arrive with delays?](https://docs.tryterra.co/faq/help-topics/no-data/delivery-delays-lag/phone-platform-sync-lag.md): Delays for phone-based health platforms are usually phone-to-cloud sync lag, not the API.
- [Why are my Google activities arriving with a delay?](https://docs.tryterra.co/faq/help-topics/no-data/delivery-delays-lag/google-health-connect-data-delay-reinit.md): There are two cases, depending on how Google is connected.
- [Connecting a provider](https://docs.tryterra.co/faq/help-topics/connecting.md): Connecting providers, the auth widget, credentials, OAuth and approvals.
- [Setting up provider credentials (bring-your-own keys)](https://docs.tryterra.co/faq/help-topics/connecting/setting-up-provider-credentials-bring-your-own-keys.md): Setting up provider credentials (bring-your-own keys)
- [How do I set up WHOOP provider credentials?](https://docs.tryterra.co/faq/help-topics/connecting/setting-up-provider-credentials-bring-your-own-keys/whoop-byo-credentials-setup.md): WHOOP is a bring-your-own-credentials provider.
- [How do I set up Huawei?](https://docs.tryterra.co/faq/help-topics/connecting/setting-up-provider-credentials-bring-your-own-keys/huawei-byo-credentials-healthkit.md): Huawei requires dedicated, customer-owned credentials, not shared ones, so widget redirects 500 until they are set up.
- [How do I set up my Strava credentials?](https://docs.tryterra.co/faq/help-topics/connecting/setting-up-provider-credentials-bring-your-own-keys/strava-byo-credentials-callback-domain.md): Strava is a bring-your-own-credentials source, so a "credentials required" message is expected.
- [How do I set up a bring-your-own-credential provider?](https://docs.tryterra.co/faq/help-topics/connecting/setting-up-provider-credentials-bring-your-own-keys/byo-credentials-generic-provider-key.md): Some providers require you to obtain API credentials directly from the provider before the connection will work.
- [What credentials do I need for InBody?](https://docs.tryterra.co/faq/help-topics/connecting/setting-up-provider-credentials-bring-your-own-keys/inbody-no-dedicated-credentials-needed.md): The InBody integration works with end-user accounts directly: users authenticate with the same username and password they use in the InBody app.
- [Do I need my own developer keys for Dexcom?](https://docs.tryterra.co/faq/help-topics/connecting/setting-up-provider-credentials-bring-your-own-keys/dexcom-own-keys-production-access.md): Dexcom always uses your own developer credentials, never Terra's shared/aggregate keys, and requires a direct partnership between you and Dexcom.
- [Why is my Huawei redirect\_uri not registered?](https://docs.tryterra.co/faq/help-topics/connecting/setting-up-provider-credentials-bring-your-own-keys/provider-callback-url-registration.md): Provider OAuth errors like redirect\_uri not registered or Unauthorized after the user authorises mean the Terra callback URL isn't registered, or doesn't…
- [Why can't I save my WHOOP redirect URL?](https://docs.tryterra.co/faq/help-topics/connecting/setting-up-provider-credentials-bring-your-own-keys/whoop-redirect-url-save-error.md): If the WHOOP developer portal rejects your redirect URL, check for stray whitespace at the start of the URL.
- [Why does Strava return redirect\_uri invalid?](https://docs.tryterra.co/faq/help-topics/connecting/setting-up-provider-credentials-bring-your-own-keys/strava-redirect-uri-invalid.md): A Strava redirect\_uri invalid error means the Authorization Callback Domain in your Strava app doesn't match Terra's actual redirect host.
- [What Strava credentials do I enter in Terra?](https://docs.tryterra.co/faq/help-topics/connecting/setting-up-provider-credentials-bring-your-own-keys/strava-access-refresh-tokens-not-needed.md): When registering your own Strava app, only the Client ID and Client Secret go into your Terra source settings.
- [Do I need a separate Dexcom EU setup for European users?](https://docs.tryterra.co/faq/help-topics/connecting/setting-up-provider-credentials-bring-your-own-keys/dexcom-eu-separate-credentials.md): Yes.
- [Do I need separate provider apps and DNS per environment?](https://docs.tryterra.co/faq/help-topics/connecting/setting-up-provider-credentials-bring-your-own-keys/single-provider-credentials-environments-dns.md): You don't need a separate provider app or extra DNS records per Terra environment.
- [How do I set the Dexcom redirect URL and region?](https://docs.tryterra.co/faq/help-topics/connecting/setting-up-provider-credentials-bring-your-own-keys/dexcom-redirect-url-and-region.md): For a custom-subdomain Dexcom setup, the redirect URL must point at the subdomain whose CNAME points to our load balancer, not at your apex domain.
- [Apple Health, Health Connect and mobile SDK](https://docs.tryterra.co/faq/help-topics/connecting/apple-health-health-connect-and-mobile-sdk.md): Apple Health, Health Connect and mobile SDK
- [Why is user\_id None for Apple Health in the widget?](https://docs.tryterra.co/faq/help-topics/connecting/apple-health-health-connect-and-mobile-sdk/sdk-provider-needs-deeplink-initconnection.md): SDK-based providers (Apple Health, Samsung Health, Health Connect) cannot complete a connection through the web widget alone, which is why the widget returns a…
- [Why doesn't use\_terra\_avengers\_app open the native app?](https://docs.tryterra.co/faq/help-topics/connecting/apple-health-health-connect-and-mobile-sdk/use-terra-avengers-companion-app.md): use\_terra\_avengers\_app must be passed inside the JSON body of /auth/generateWidgetSession (for example {"reference\_id": "...", "use\_terra\_avengers\_app": true}).
- [How do I set up Samsung Health (direct vs Health Connect)?](https://docs.tryterra.co/faq/help-topics/connecting/apple-health-health-connect-and-mobile-sdk/samsung-health-android-only-routes.md): Samsung Health is an on-device integration that requires a native Android app.
- [What can I test while Samsung approval is pending?](https://docs.tryterra.co/faq/help-topics/connecting/apple-health-health-connect-and-mobile-sdk/samsung-health-connect-fallback-and-dev-mode.md): While awaiting Samsung partnership approval, you can develop and test against Health Connect as a drop-in.
- [Why does Samsung Health throw AuthorizationException 2000 in release but work in debug?](https://docs.tryterra.co/faq/help-topics/connecting/apple-health-health-connect-and-mobile-sdk/samsung-production-sdk-switch-and-signing.md): There's no Samsung Developer ID to add on the Terra SDK or in your app code.
- [Google (web) vs Google Fit (Health Connect) connection?](https://docs.tryterra.co/faq/help-topics/connecting/apple-health-health-connect-and-mobile-sdk/google-vs-googlefit-connection-types.md): These are two different data sources, and neither is tied to a specific tracker; both are aggregators that surface whatever apps and devices have written into…
- [Why do I get 'health\_connect is disabled on this dev-id'?](https://docs.tryterra.co/faq/help-topics/connecting/apple-health-health-connect-and-mobile-sdk/health-connect-disabled-devid-toggle.md): The error health\_connect is disabled on this dev-id means Health Connect isn't yet enabled for that dev\_id in the dashboard.
- [Why does Health Connect show grey but provider shows connected?](https://docs.tryterra.co/faq/help-topics/connecting/apple-health-health-connect-and-mobile-sdk/health-connect-grey-write-side.md): Terra does not manage your app writing data into Health Connect; that flow is handled by your own integration.
- [Why doesn't the Health Connect permission dialog appear?](https://docs.tryterra.co/faq/help-topics/connecting/apple-health-health-connect-and-mobile-sdk/health-connect-permission-dialog-once.md): This is expected.
- [Why does Apple Health permission never show with success:false?](https://docs.tryterra.co/faq/help-topics/connecting/apple-health-health-connect-and-mobile-sdk/apple-health-permission-screen-build-config.md): If Apple Health's permission prompt never appears and initConnection returns success:false, check two things
- [Why does Apple Health show an invalid link error?](https://docs.tryterra.co/faq/help-topics/connecting/apple-health-health-connect-and-mobile-sdk/apple-deeplink-invalid-link-error.md): An invalid link error when connecting Apple Health usually means the app's deep-link setup is incorrect or unhandled.
- [Why does the HealthKit permission sheet only show once?](https://docs.tryterra.co/faq/help-topics/connecting/apple-health-health-connect-and-mobile-sdk/apple-healthkit-permission-sheet-once.md): Apple shows the HealthKit permission sheet only once per app, per device install.
- [Why does the Samsung connection redirect to Health Connect?](https://docs.tryterra.co/faq/help-topics/connecting/apple-health-health-connect-and-mobile-sdk/samsung-route-default-redirects-to-health-connect.md): There are two Samsung Health integration routes.
- [Regional and account restrictions](https://docs.tryterra.co/faq/help-topics/connecting/regional-and-account-restrictions.md): Regional and account restrictions
- [Why can't I connect MyFitnessPal?](https://docs.tryterra.co/faq/help-topics/connecting/regional-and-account-restrictions/mfp-username-and-diary-key-setup.md): MyFitnessPal connects with your MFP username and a diary key, not your email or account password.
- [Which provider covers Xiaomi and Mi Band data?](https://docs.tryterra.co/faq/help-topics/connecting/regional-and-account-restrictions/zepp-xiaomi-rename-device-compatibility.md): The Xiaomi integration was renamed to ZEPP at the provider's request.
- [Why does Omron login fail outside the US or EU?](https://docs.tryterra.co/faq/help-topics/connecting/regional-and-account-restrictions/omron-region-locked-eu-us-only.md): Omron splits accounts by regional backend, and Terra integrates only the EU cloud (OMRON, ohiomron.eu) and the US cloud (OMRONUS, ohiomron.com).
- [Why does my MyFitnessPal diary sharing revert to private?](https://docs.tryterra.co/faq/help-topics/connecting/regional-and-account-restrictions/mfp-diary-sharing-setting-moved-reverts.md): MyFitnessPal controls the diary-sharing setting, not Terra.
- [Why does Komoot login fail with invalid credentials?](https://docs.tryterra.co/faq/help-topics/connecting/regional-and-account-restrictions/komoot-discontinued.md): The Komoot integration is no longer supported, so users cannot connect Komoot accounts at this time.
- [Can Hammerhead users connect with SRAM credentials?](https://docs.tryterra.co/faq/help-topics/connecting/regional-and-account-restrictions/hammerhead-no-sram-login.md): No, SRAM account credentials are not currently supported for connecting Hammerhead through Terra.
- [Is Huawei supported and how do I set it up?](https://docs.tryterra.co/faq/help-topics/connecting/regional-and-account-restrictions/huawei-dedicated-credentials-required.md): Huawei is supported, but requires applying for dedicated credentials on Huawei's developer platform before use.
- [Does Oura need extra setup before production?](https://docs.tryterra.co/faq/help-topics/connecting/regional-and-account-restrictions/oura-no-extra-setup-for-production.md): Oura requires no additional setup on your side before going to production.
- [Choosing and managing connections in the widget](https://docs.tryterra.co/faq/help-topics/connecting/choosing-and-managing-connections-in-the-widget.md): Choosing and managing connections in the widget
- [Can end users manage their own connections?](https://docs.tryterra.co/faq/help-topics/connecting/choosing-and-managing-connections-in-the-widget/show-disconnect-existing-connections.md): Yes.
- [How do I show only one provider in the widget?](https://docs.tryterra.co/faq/help-topics/connecting/choosing-and-managing-connections-in-the-widget/restrict-or-preselect-providers.md): Pass the providers field in the /auth/generateWidgetSession body to control which providers appear and override the dashboard default list (for example…
- [Why is a provider missing from the Connect widget?](https://docs.tryterra.co/faq/help-topics/connecting/choosing-and-managing-connections-in-the-widget/provider-enabled-mismatch-or-missing-source.md): If a provider is missing from the widget, or a widget session looks expired immediately for one provider while others work, the source is either not enabled or…
- [Is an integration supported if missing from the public list?](https://docs.tryterra.co/faq/help-topics/connecting/choosing-and-managing-connections-in-the-widget/integrations-list-source-of-truth.md): The authoritative list of supported integrations is the /v2/integrations API endpoint and the integrations list in your dashboard.
- [Can I customise the connection screen layout?](https://docs.tryterra.co/faq/help-topics/connecting/choosing-and-managing-connections-in-the-widget/widget-end-screen-redirects-customisation.md): You can customise the widget's end screens by passing auth\_success\_redirect\_url and auth\_failure\_redirect\_url in the /auth/generateWidgetSession body, sending…
- [OAuth, WebView and sign-in failures](https://docs.tryterra.co/faq/help-topics/connecting/oauth-webview-and-sign-in-failures.md): OAuth, WebView and sign-in failures
- [Why does OAuth fail inside an in-app WebView?](https://docs.tryterra.co/faq/help-topics/connecting/oauth-webview-and-sign-in-failures/oauth-webview-blocked-use-native-browser.md): Google blocks OAuth authentication inside embedded WebViews under its 'Use secure browsers' policy (the hidden URL bar prevents domain verification).
- [Why does the provider sign-in form clear my password?](https://docs.tryterra.co/faq/help-topics/connecting/oauth-webview-and-sign-in-failures/provider-signin-form-fails-credentials.md): When a provider's sign-in form clears the password or the continue button stays greyed out with no Terra error, the issue is on the provider's side.
- [Why does provider OAuth fail in my app's web view?](https://docs.tryterra.co/faq/help-topics/connecting/oauth-webview-and-sign-in-failures/open-auth-in-real-browser-not-webview.md): Provider OAuth pages restrict iframes, sandboxed windows and embedded WebViews (which hide the URL bar), so identity providers like Google block them and the…
- [Why can't my user complete provider auth in the in-app webview?](https://docs.tryterra.co/faq/help-topics/connecting/oauth-webview-and-sign-in-failures/provider-auth-fails-in-inapp-webview-generic.md): When a provider login fails inside an in-app webview, ask the end user to open the authentication page in a full external/system browser.
- [Why doesn't the browser redirect after the success screen?](https://docs.tryterra.co/faq/help-topics/connecting/oauth-webview-and-sign-in-failures/auth-success-redirect-not-firing.md): After a successful connection the widget only redirects to your endpoint if auth\_success\_redirect\_url was passed in the body of your auth request.
- [Why do users skip the provider login page?](https://docs.tryterra.co/faq/help-topics/connecting/oauth-webview-and-sign-in-failures/skipped-login-already-authenticated.md): If the end user's browser already has an active session with the provider, the OAuth flow skips the credential prompt and goes straight to the success page.
- [How do I verify auth redirect URLs are legitimate?](https://docs.tryterra.co/faq/help-topics/connecting/oauth-webview-and-sign-in-failures/verify-redirect-legitimacy.md): Auth redirects do not carry a signed header like webhooks do.
- [Connection errors and API responses](https://docs.tryterra.co/faq/help-topics/connecting/connection-errors-and-api-responses.md): Connection errors and API responses
- [Why do my requests return 401 in production?](https://docs.tryterra.co/faq/help-topics/connecting/connection-errors-and-api-responses/env-credential-mismatch-401-invalid-token.md): 401 / invalid-token errors almost always mean credentials are mismatched across environments.
- [Why do I get 'app is blocked' on Google Fit OAuth?](https://docs.tryterra.co/faq/help-topics/connecting/connection-errors-and-api-responses/google-fit-app-blocked-write-scopes.md): The app is blocked error during Google Fit authentication happens when write permission scopes are enabled in your dashboard.
- [Why do I get 'insufficient permissions for data type' on Google?](https://docs.tryterra.co/faq/help-topics/connecting/connection-errors-and-api-responses/google-insufficient-scope-data-type.md): A connection\_error reading insufficient permissions for data type fires when Terra polls a data type the user's OAuth token doesn't cover, for example Google…
- [Why does Google connect return a google\_no\_datasource warning?](https://docs.tryterra.co/faq/help-topics/connecting/connection-errors-and-api-responses/google-no-datasource-warning.md): The google\_no\_datasource warning means the connected Google account has no devices or health data sources attached, usually because the user picked the wrong…
- [Why does Fitbit show 'rate limit exceeded' right after connecting?](https://docs.tryterra.co/faq/help-topics/connecting/connection-errors-and-api-responses/fitbit-rate-limit-after-connect.md): A rate limit exceeded message right after a user connects usually means the initial data backfill temporarily hit provider rate limits.
- [Why does the OAuth redirect hang or return missing\_scopes?](https://docs.tryterra.co/faq/help-topics/connecting/connection-errors-and-api-responses/webhook-30s-timeout-and-historical-data.md): Two separate things are happening here.
- [Why does the auth endpoint return 422 errors?](https://docs.tryterra.co/faq/help-topics/connecting/connection-errors-and-api-responses/reference-id-must-be-string-422.md): A 422 on the authentication endpoint is most commonly caused by sending reference\_id as an integer.
- [Why does generateWidgetSession return a 500?](https://docs.tryterra.co/faq/help-topics/connecting/connection-errors-and-api-responses/generatewidgetsession-500-no-sources.md): A 500 with an HTML error page from generateWidgetSession is typically caused by having no data sources enabled in the environment matching the dev-id you are…
- [Why is my staging widget blocked before provider auth?](https://docs.tryterra.co/faq/help-topics/connecting/connection-errors-and-api-responses/staging-testing-50-user-cap.md): Staging and testing environments are each capped at 50 connected users, independent of your production plan.
- [End-user authentication and SSO](https://docs.tryterra.co/faq/help-topics/connecting/end-user-authentication-and-sso.md): End-user authentication and SSO
- [Can SSO users connect a password-based provider?](https://docs.tryterra.co/faq/help-topics/connecting/end-user-authentication-and-sso/credential-based-provider-no-sso-login.md): For providers connected via email and password (for example Flo, Clue), accounts created with social SSO such as Sign in with Apple or Google sign-in cannot be…
- [Can one user connect multiple providers via the widget?](https://docs.tryterra.co/faq/help-topics/connecting/end-user-authentication-and-sso/multiple-providers-one-user.md): Yes.
- [Why can't Apple/Google social-login users sign in?](https://docs.tryterra.co/faq/help-topics/connecting/end-user-authentication-and-sso/social-login-no-password.md): Credential-based integrations on the Terra auth page only support email and password login.
- [Why do provider OAuth pages always show in English?](https://docs.tryterra.co/faq/help-topics/connecting/end-user-authentication-and-sso/provider-page-language-not-controllable.md): The language parameter on session / auth-URL generation only controls the Terra widget interface, not the provider's own login page.
- [How do I generate a per-user auth URL backend-only?](https://docs.tryterra.co/faq/help-topics/connecting/end-user-authentication-and-sso/backend-only-auth-link-flow.md): For a backend-only setup with no frontend
- [Getting a provider developer app approved](https://docs.tryterra.co/faq/help-topics/connecting/getting-a-provider-developer-app-approved.md): Getting a provider developer app approved
- [How do I lift Strava's one-athlete limit?](https://docs.tryterra.co/faq/help-topics/connecting/getting-a-provider-developer-app-approved/strava-production-app-and-athlete-limit.md): Strava apps start in development mode, which limits you to one connected athlete.
- [Do I need a WHOOP device to create a developer account?](https://docs.tryterra.co/faq/help-topics/connecting/getting-a-provider-developer-app-approved/whoop-device-required-for-account.md): Creating a WHOOP developer account now requires an active WHOOP device and membership.
- [How do I get my WHOOP developer app approved?](https://docs.tryterra.co/faq/help-topics/connecting/getting-a-provider-developer-app-approved/whoop-approval-slow-no-expedite.md): WHOOP handles developer app approval directly and timelines vary, typically one to two weeks.
- [Connected but no data arriving](https://docs.tryterra.co/faq/help-topics/connecting/connected-but-no-data-arriving.md): Connected but no data arriving
- [Why isn't my Renpho body measurement data showing up?](https://docs.tryterra.co/faq/help-topics/connecting/connected-but-no-data-arriving/renpho-legacy-accounts-only.md): The Renpho integration currently supports end users on older (legacy) Renpho accounts.
- [Realtime, BLE and mobile delivery](https://docs.tryterra.co/faq/help-topics/connecting/realtime-ble-and-mobile-delivery.md): Realtime, BLE and mobile delivery
- [Why was my app rejected over health permission justifications?](https://docs.tryterra.co/faq/help-topics/connecting/realtime-ble-and-mobile-delivery/app-store-health-permission-rejection.md): When the Play Store rejects your app over its health/nutrition data permissions policy, respond to the review with a clear explanation of how your app uses…
- [Billing & account](https://docs.tryterra.co/faq/help-topics/billing-account.md): Your dashboard account, API keys, environments and going to production.
- [Dashboard, users and connections](https://docs.tryterra.co/faq/help-topics/billing-account/dashboard-users-and-connections.md): Dashboard, users and connections
- [How do I delete a duplicate user or connection?](https://docs.tryterra.co/faq/help-topics/billing-account/dashboard-users-and-connections/delete-deauth-users.md): The dashboard user list is read-only, with no delete button.
- [Where do I find my dev ID and API keys?](https://docs.tryterra.co/faq/help-topics/billing-account/dashboard-users-and-connections/find-dev-id-and-api-keys.md): Your dev ID is shown in the Terra dashboard under the API Keys button at the top right of the screen.
- [How do I rotate my API keys and webhook secret?](https://docs.tryterra.co/faq/help-topics/billing-account/dashboard-users-and-connections/api-key-webhook-secret-rotation.md): API key and webhook secret rotation is coordinated with the Terra team rather than self-service in the dashboard.
- [Can I edit a connection's reference ID via the SDK?](https://docs.tryterra.co/faq/help-topics/billing-account/dashboard-users-and-connections/edit-reference-id.md): You can edit the reference\_id of an existing user connection from the Terra dashboard, by clicking the pencil icon next to the reference ID.
- [Were my team invites actually sent?](https://docs.tryterra.co/faq/help-topics/billing-account/dashboard-users-and-connections/team-invite-no-pending-indicator.md): Team invites are sent as soon as you submit them, even though the dashboard currently shows no pending-invite indicator.
- [Why does my source card say 'apply for credentials'?](https://docs.tryterra.co/faq/help-topics/billing-account/dashboard-users-and-connections/apply-for-credentials-notice-not-error.md): The "apply for credentials" message on a provider's source card is an informational note, not an error.
- [Why don't widget providers match my connections?](https://docs.tryterra.co/faq/help-topics/billing-account/dashboard-users-and-connections/widget-provider-list-vs-sources.md): The widget's provider list and your dashboard Sources panel come from the same place by default, but your app can override the list per session.
- [Why are my sources and API keys empty after signup?](https://docs.tryterra.co/faq/help-topics/billing-account/dashboard-users-and-connections/empty-dashboard-after-signup-provisioning.md): This is almost always account provisioning still completing, not a broken account.
- [Environments, config and going to production](https://docs.tryterra.co/faq/help-topics/billing-account/environments-config-and-going-to-production.md): Environments, config and going to production
- [Why are no users or connections showing in the dashboard?](https://docs.tryterra.co/faq/help-topics/billing-account/environments-config-and-going-to-production/environment-isolation-config-and-data.md): The dashboard separates testing, staging, and production environments, and they are fully independent.
- [Can I replicate my testing config into production?](https://docs.tryterra.co/faq/help-topics/billing-account/environments-config-and-going-to-production/cannot-migrate-between-environments.md): There's no automated way to clone a testing environment into production.
- [How do I move to production?](https://docs.tryterra.co/faq/help-topics/billing-account/environments-config-and-going-to-production/production-rollout-billing.md): Once your subscription is active you can begin authenticating users in your production environment straight away.
- [Data, payloads and destinations](https://docs.tryterra.co/faq/help-topics/billing-account/data-payloads-and-destinations.md): Data, payloads and destinations
- [Why can't I download old payload history?](https://docs.tryterra.co/faq/help-topics/billing-account/data-payloads-and-destinations/payload-history-one-week-retention.md): Payload History on the dashboard is available for recent payloads only, so older payloads can't be downloaded from there.
- [Why doesn't payload history metadata match the payload?](https://docs.tryterra.co/faq/help-topics/billing-account/data-payloads-and-destinations/payload-history-ids-after-deauth.md): When a connection is deauthenticated and reconnected, the dashboard's Payload History may fall back to showing an internal connection ID instead of the Terra…
- [Why doesn't the payload simulator show sample arrays?](https://docs.tryterra.co/faq/help-topics/billing-account/data-payloads-and-destinations/payload-simulator-sample-arrays.md): The dashboard payload simulator does include sample arrays, for example the detailed samples within activity and daily payloads.
- [Why does my S3 destination show AccessDenied?](https://docs.tryterra.co/faq/help-topics/billing-account/data-payloads-and-destinations/s3-destination-iam-connection-test.md): Grant the IAM role s3:GetObject, s3:PutObject, and s3:DeleteObject on the bucket for your S3 destination.
- [Support and getting help](https://docs.tryterra.co/faq/help-topics/billing-account/support-and-getting-help.md): Support and getting help
- [How do I contact Terra support?](https://docs.tryterra.co/faq/help-topics/billing-account/support-and-getting-help/support-channels-and-sla.md): Terra has no public Discord or community channel, and support runs through the dashboard ticketing system.
- [How do I open a support ticket?](https://docs.tryterra.co/faq/help-topics/billing-account/support-and-getting-help/support-channel-dashboard-widget-only.md): Currently the dashboard support widget is the only channel for opening tickets.
- [Usage limits and overage charges](https://docs.tryterra.co/faq/help-topics/billing-account/usage-limits-and-overage-charges.md): Usage limits and overage charges
- [How many devices can I connect in testing or staging?](https://docs.tryterra.co/faq/help-topics/billing-account/usage-limits-and-overage-charges/testing-staging-device-limit.md): Testing and staging environments each allow up to 50 connected users.
- [Webhooks & destinations](https://docs.tryterra.co/faq/help-topics/webhook.md): Webhook delivery, storage destinations, signatures, retries and routing.
- [Failures, errors and retries](https://docs.tryterra.co/faq/help-topics/webhook/failures-errors-and-retries.md): Failures, errors and retries
- [Are my webhook 401/404/500 errors on Terra's side?](https://docs.tryterra.co/faq/help-topics/webhook/failures-errors-and-retries/response-codes-are-your-server.md): The HTTP status shown next to a webhook delivery in the dashboard is the response your endpoint (or a proxy in front of it) returned, not an error generated by…
- [Why is my webhook returning 504 errors?](https://docs.tryterra.co/faq/help-topics/webhook/failures-errors-and-retries/ack-fast-process-async-timeout.md): A 504 means your server did not respond within Terra's roughly 8-second delivery window.
- [When are failed webhooks redelivered, and can I resend them?](https://docs.tryterra.co/faq/help-topics/webhook/failures-errors-and-retries/retry-policy-and-redelivery.md): Failed webhook deliveries are retried automatically with exponential backoff (roughly 5 min, 30 min, 1h, 2h, 4h, up to about 8 retries), always to your…
- [Storage destinations: S3, SQS, Supabase, SQL, GCS](https://docs.tryterra.co/faq/help-topics/webhook/storage-destinations-s3-sqs-supabase-sql-gcs.md): Storage destinations: S3, SQS, Supabase, SQL, GCS
- [Why do my Supabase destination columns not match the docs?](https://docs.tryterra.co/faq/help-topics/webhook/storage-destinations-s3-sqs-supabase-sql-gcs/supabase-destination-schema.md): The Supabase destination uses both SQL tables and a storage bucket.
- [Why is my S3 folder named like a date?](https://docs.tryterra.co/faq/help-topics/webhook/storage-destinations-s3-sqs-supabase-sql-gcs/version-prefix-folder-not-date.md): The dated-looking folder (for example 2022-03-16/) in your cloud-storage destination is the API version prefix, not a data date.
- [How do I set up a Postgres SQL destination?](https://docs.tryterra.co/faq/help-topics/webhook/storage-destinations-s3-sqs-supabase-sql-gcs/sql-destination-schema-setup.md): The SQL destination requires a specific schema and tables to exist before delivery.
- [Why does my SQS destination fail to connect?](https://docs.tryterra.co/faq/help-topics/webhook/storage-destinations-s3-sqs-supabase-sql-gcs/sqs-region-and-message-size.md): When configuring an SQS destination, the region you enter must match the region in your queue URL.
- [Why are my GCS files missing fields seen in webhooks?](https://docs.tryterra.co/faq/help-topics/webhook/storage-destinations-s3-sqs-supabase-sql-gcs/gcs-upsert-permissions.md): Differences between your cloud storage files and the webhook payloads usually trace back to a bucket permissions issue.
- [Destinations and routing setup](https://docs.tryterra.co/faq/help-topics/webhook/destinations-and-routing-setup.md): Destinations and routing setup
- [Can one environment send data to two webhooks?](https://docs.tryterra.co/faq/help-topics/webhook/destinations-and-routing-setup/multiple-destinations-per-env.md): The dashboard self-serves one webhook destination per dev ID.
- [Does changing my webhook URL take effect immediately?](https://docs.tryterra.co/faq/help-topics/webhook/destinations-and-routing-setup/destination-url-change-effective-immediately.md): Changing your webhook destination URL in the dashboard takes effect immediately.
- [Can I filter payload types per destination?](https://docs.tryterra.co/faq/help-topics/webhook/destinations-and-routing-setup/filter-payload-types-per-destination.md): You can disable unwanted DATA types globally in the dashboard
- [Is there an API to manage webhook destinations?](https://docs.tryterra.co/faq/help-topics/webhook/destinations-and-routing-setup/no-api-to-manage-destinations.md): There is no public API to manage webhook destinations; the dashboard endpoints are internal and session-authenticated.
- [Delivery timing, volume and ordering](https://docs.tryterra.co/faq/help-topics/webhook/delivery-timing-volume-and-ordering.md): Delivery timing, volume and ordering
- [Can I reduce or batch webhook delivery frequency?](https://docs.tryterra.co/faq/help-topics/webhook/delivery-timing-volume-and-ordering/throttle-or-batch-delivery-frequency.md): Terra cannot throttle or batch webhook/cloud-storage delivery frequency server-side.
- [What is the webhook delivery cadence per provider?](https://docs.tryterra.co/faq/help-topics/webhook/delivery-timing-volume-and-ordering/provider-poll-cadence-not-realtime.md): Many providers are fetched on a periodic poll schedule rather than in real time, so a webhook will not fire the instant a user logs or records something.
- [Why did my webhook volume suddenly spike?](https://docs.tryterra.co/faq/help-topics/webhook/delivery-timing-volume-and-ordering/backfill-volume-spikes.md): Large webhook bursts are expected recovery traffic, not invalid requests.
- [How do I stop a retried webhook overwriting newer data?](https://docs.tryterra.co/faq/help-topics/webhook/delivery-timing-volume-and-ordering/out-of-order-stale-overwrites.md): Terra does not currently expose an ordering or freshness guarantee for retried webhook deliveries, so a late retry can in principle overwrite newer data.
- [Large payloads and chunking](https://docs.tryterra.co/faq/help-topics/webhook/large-payloads-and-chunking.md): Large payloads and chunking
- [Will Terra retry or chunk a 413 payload for me?](https://docs.tryterra.co/faq/help-topics/webhook/large-payloads-and-chunking/large-payload-chunking-413.md): Terra does not retry with a smaller payload after a 413.
- [How do I know when a chunked backfill is complete?](https://docs.tryterra.co/faq/help-topics/webhook/large-payloads-and-chunking/track-chunked-backfill-via-reference.md): Large or chunked requests are announced by two notification events before the data arrives
- [How do I enable ping-mode for large payloads?](https://docs.tryterra.co/faq/help-topics/webhook/large-payloads-and-chunking/ping-mode-s3-for-large-payloads.md): For large or dense payloads (which can exceed the roughly 8s push timeout and arrive truncated as a 504, or trip your ingress buffer with codes like 507)…
- [Why does a payload data URL fail with 400 expired-token?](https://docs.tryterra.co/faq/help-topics/webhook/large-payloads-and-chunking/presigned-url-expiry.md): The url in each ping / s3\_payload webhook is a signed cloud-storage URL that expires roughly 10 minutes after it is generated.
- [Payload content and provider quirks](https://docs.tryterra.co/faq/help-topics/webhook/payload-content-and-provider-quirks.md): Payload content and provider quirks
- [Why don't Garmin simulator payloads appear in history?](https://docs.tryterra.co/faq/help-topics/webhook/payload-content-and-provider-quirks/garmin-payload-simulator-not-stored.md): Payloads created via the payload generator/simulator are not stored, so they will not appear in payload history even when the response body shows success.
- [Does the Include Samples toggle affect the API too?](https://docs.tryterra.co/faq/help-topics/webhook/payload-content-and-provider-quirks/include-samples-global-scope.md): The Include Samples toggle applies globally, affecting both API responses and webhook payloads.
- [Why do I get multiple Garmin sleep sessions for one night, or a sleep payload that looks incomplete?](https://docs.tryterra.co/faq/help-topics/webhook/payload-content-and-provider-quirks/garmin-two-pass-provisional-final.md): Two separate things commonly look like a problem with Garmin sleep, but both are expected.
- [Why are there two provider enums for Google?](https://docs.tryterra.co/faq/help-topics/webhook/payload-content-and-provider-quirks/google-vs-googlefit-enum.md): Google Fit reports two different provider enum values depending on the connection path
- [Is planned\_workout a valid webhook type?](https://docs.tryterra.co/faq/help-topics/webhook/payload-content-and-provider-quirks/unrecognized-webhook-type-handling.md): planned\_workout is a valid webhook type, sent for integrations that deliver planned-workout data.
- [Security, signatures and network access](https://docs.tryterra.co/faq/help-topics/webhook/security-signatures-and-network-access.md): Security, signatures and network access
- [Why does my webhook signature verification fail?](https://docs.tryterra.co/faq/help-topics/webhook/security-signatures-and-network-access/signature-verification-secret-mismatch.md): Signature failures almost always mean the signing secret used for verification does not match the one Terra signed with, not a change on Terra's side.
- [What webhook URL do I register in the Huawei portal?](https://docs.tryterra.co/faq/help-topics/webhook/security-signatures-and-network-access/provider-portal-webhook-registration.md): For direct provider-app integrations, Terra's push webhook URL must be registered in the provider's own developer dashboard, separate from the OAuth redirect…
- [What source IPs should I allow for Terra webhooks?](https://docs.tryterra.co/faq/help-topics/webhook/security-signatures-and-network-access/source-ip-allowlist.md): Terra's webhook source IPs are documented and rarely change, so first compare your allowlist against the current list in the docs.
- [Why does ModSecurity block my webhooks on JSON keys?](https://docs.tryterra.co/faq/help-topics/webhook/security-signatures-and-network-access/modsecurity-waf-json-keys-rule.md): This is expected for data types with large time-series sample arrays (heart rate, SpO2, and similar), where a full day easily exceeds 1000 JSON keys.
- [Do I need a paid webhook testing service?](https://docs.tryterra.co/faq/help-topics/webhook/security-signatures-and-network-access/webhook-testing-service-not-required.md): No, a paid webhook testing service is not required.
- [Something else](https://docs.tryterra.co/faq/help-topics/something-else.md): Subdomains, realtime, widgets and getting help.
- [Custom subdomains, SSL and security](https://docs.tryterra.co/faq/help-topics/something-else/custom-subdomains-ssl-and-security.md): Custom subdomains, SSL and security
- [Why won't my custom subdomain CNAME or SSL validate?](https://docs.tryterra.co/faq/help-topics/something-else/custom-subdomains-ssl-and-security/cname-validation-ssl-issuance-troubleshooting.md): If a custom subdomain CNAME won't authorise, or the cert won't validate or parse, work through these
- [What redirect and webhook URLs do I use for a custom WHOOP subdomain?](https://docs.tryterra.co/faq/help-topics/something-else/custom-subdomains-ssl-and-security/custom-subdomain-redirect-webhook-setup.md): For a custom-credential provider connection, the redirect URI registered with the provider must be a subdomain on your own domain (for example…
- [Does Terra use my Google OAuth client ID?](https://docs.tryterra.co/faq/help-topics/something-else/custom-subdomains-ssl-and-security/google-oauth-client-ownership.md): No.
- [Docs, support and getting help](https://docs.tryterra.co/faq/help-topics/something-else/docs-support-and-getting-help.md): Docs, support and getting help
- [Can I get a call with someone technical?](https://docs.tryterra.co/faq/help-topics/something-else/docs-support-and-getting-help/technical-help-call-availability.md): For migrations, integration questions, API best practices, or product walkthroughs, support can arrange a call with a technical or product lead, or connect you…
- [What happens to a duplicate ticket I filed?](https://docs.tryterra.co/faq/help-topics/something-else/docs-support-and-getting-help/duplicate-ticket-handling.md): Duplicate tickets are closed and merged into the original thread, so all context and the ongoing investigation stay in one place.
- [Where are the API playground and changelog in the docs?](https://docs.tryterra.co/faq/help-topics/something-else/docs-support-and-getting-help/docs-navigation-finding-pages.md): The API playground lives in the reference section of the docs, under the Health and Fitness API reference pages.
- [Provider data fields and coverage](https://docs.tryterra.co/faq/help-topics/something-else/provider-data-fields-and-coverage.md): Provider data fields and coverage
- [When will field X be available for a provider?](https://docs.tryterra.co/faq/help-topics/something-else/provider-data-fields-and-coverage/provider-doesnt-expose-field.md): Terra can only surface fields a provider exposes through its API.
- [Can I get raw original Garmin FIT files?](https://docs.tryterra.co/faq/help-topics/something-else/provider-data-fields-and-coverage/raw-original-fit-files.md): The FIT files Terra delivers are generated from its internal unified data model, the same as the JSON standard payloads, not the raw original device FIT files.
- [How do I tell apart two hardware versions on one connection?](https://docs.tryterra.co/faq/help-topics/something-else/provider-data-fields-and-coverage/device-version-differentiation-in-payload.md): Dexcom data is returned exactly as Dexcom's API provides it, without splitting by hardware version, so readings from two device generations on one account…
- [Can speed be computed from position samples?](https://docs.tryterra.co/faq/help-topics/something-else/provider-data-fields-and-coverage/no-derived-metrics-from-samples.md): Payloads reflect the raw data each provider supplies.
- [Do Apple Health nutrition values have per-entry timestamps?](https://docs.tryterra.co/faq/help-topics/something-else/provider-data-fields-and-coverage/apple-nutrition-per-entry-timestamps.md): Yes.
- [Is the Fitbit Charge 6 supported?](https://docs.tryterra.co/faq/help-topics/something-else/provider-data-fields-and-coverage/device-model-support.md): Yes, the Charge 6 is supported.
- [Realtime, BLE and mobile delivery](https://docs.tryterra.co/faq/help-topics/something-else/realtime-ble-and-mobile-delivery.md): Realtime, BLE and mobile delivery
- [Why is Samsung background delivery unsupported?](https://docs.tryterra.co/faq/help-topics/something-else/realtime-ble-and-mobile-delivery/android-background-delivery-limits.md): Android background delivery is limited by deep-sleep battery optimisation, which suspends background tasks after a few hours.
- [Why won't the BLE widget find my Garmin watch?](https://docs.tryterra.co/faq/help-topics/something-else/realtime-ble-and-mobile-delivery/ble-streaming-requires-broadcast-mode.md): For BLE / realtime heart-rate streaming, the watch must be actively broadcasting.
- [Why was my app rejected over health permission justifications?](https://docs.tryterra.co/faq/help-topics/something-else/realtime-ble-and-mobile-delivery/app-store-health-permission-rejection.md): When the Play Store rejects your app over its health/nutrition data permissions policy, respond to the review with a clear explanation of how your app uses…
- [How do I set up realtime streaming?](https://docs.tryterra.co/faq/help-topics/something-else/realtime-ble-and-mobile-delivery/realtime-streaming-setup.md): Setup depends on the device.
- [Routing, webhooks and destinations](https://docs.tryterra.co/faq/help-topics/something-else/routing-webhooks-and-destinations.md): Routing, webhooks and destinations
- [Can I route different data types to different destinations?](https://docs.tryterra.co/faq/help-topics/something-else/routing-webhooks-and-destinations/per-destination-data-type-routing.md): Per-destination data-type routing is not currently supported.
- [Can I get alerts for stale user data?](https://docs.tryterra.co/faq/help-topics/something-else/routing-webhooks-and-destinations/stale-user-data-alerts.md): Built-in staleness alerting isn't available.
- [Can I rate-limit backfill webhook delivery?](https://docs.tryterra.co/faq/help-topics/something-else/routing-webhooks-and-destinations/backfill-webhook-rate-limit.md): There's no configurable rate limit on backfill webhook delivery, so large multi-year backfills can produce a high request rate to your endpoint.
- [Can the Supabase destination use an existing project?](https://docs.tryterra.co/faq/help-topics/something-else/routing-webhooks-and-destinations/supabase-link-existing-project.md): The Supabase destination currently creates a new project in your organisation and cannot attach to an existing one.
- [Features, widgets and SDK tools](https://docs.tryterra.co/faq/help-topics/something-else/features-widgets-and-sdk-tools.md): Features, widgets and SDK tools
- [Can I push planned workouts to Zwift?](https://docs.tryterra.co/faq/help-topics/something-else/features-widgets-and-sdk-tools/push-planned-workouts-zwift.md): Pushing planned workouts only works for providers that expose a training-plan write API.
- [Why does the Python client lack reference\_id lookup?](https://docs.tryterra.co/faq/help-topics/something-else/features-widgets-and-sdk-tools/client-library-feature-parity.md): The Python client doesn't currently expose lookup by reference\_id.
- [Is there an API for the payload simulator?](https://docs.tryterra.co/faq/help-topics/something-else/features-widgets-and-sdk-tools/payload-simulator-programmatic-access.md): Sample data is generated from the dashboard's payload simulator, which sends a generated payload to your configured destination using user\_id, reference\_id and…
- [Is there a hosted upload widget for blood reports?](https://docs.tryterra.co/faq/help-topics/something-else/features-widgets-and-sdk-tools/blood-report-upload-widget.md): A hosted file-upload widget for the blood report API is not currently offered.
- [Connections, auth and permissions](https://docs.tryterra.co/faq/help-topics/something-else/connections-auth-and-permissions.md): Connections, auth and permissions
- [How do I check if the HealthKit prompt was shown?](https://docs.tryterra.co/faq/help-topics/something-else/connections-auth-and-permissions/check-healthkit-connection-state.md): HealthKit doesn't expose whether permissions were granted, but you can check whether a connection was previously created
- [Can the auth webhook include the provider user ID?](https://docs.tryterra.co/faq/help-topics/something-else/connections-auth-and-permissions/provider-native-user-id-in-auth.md): The auth webhook payload can't currently include the provider's native user ID.
- [Can I be notified when users connect a disabled provider?](https://docs.tryterra.co/faq/help-topics/something-else/connections-auth-and-permissions/notify-on-disabled-provider-connect.md): Data only flows for providers enabled in the connections dashboard, so always confirm a provider is enabled there before users connect it.
- [Can provider permissions be auto-selected on consent?](https://docs.tryterra.co/faq/help-topics/something-else/connections-auth-and-permissions/auto-select-permissions-consent.md): Health permissions cannot be pre-selected on the provider's consent screen.
- [Which providers have mandatory scopes?](https://docs.tryterra.co/faq/help-topics/something-else/connections-auth-and-permissions/provider-mandatory-scopes.md): Some providers require specific scopes, and authentication fails with an insufficient or missing scopes error if they aren't granted.
- [Provider rules and restrictions](https://docs.tryterra.co/faq/help-topics/something-else/provider-rules-and-restrictions.md): Provider rules and restrictions
- [What are my options under Strava's display restriction?](https://docs.tryterra.co/faq/help-topics/something-else/provider-rules-and-restrictions/strava-third-party-display-restriction.md): Strava's API terms prohibit third-party apps from displaying a user's activity data to anyone other than the user themselves, even with explicit consent.
