• Unified API
  • Mobile SDK
  • Connection Widget
  • Streaming
  • Lab Reports API
  • Graph API
  • Health Scores
  • Health Rewards
  • Planned Workouts
  • Lab Testing
  • AI Interface
  • Enterprise
  • Insurance
  • Integrations
  • Research
  • Podcast
  • Blog
  • Reports
  • Events
  • Documentation
  • Community
  • Example apps
  • Wearable Data
  • About
  • Customers
  • Partners
  • Careers
  • Support
  • Pricing
Terra
Pricing
Become an integrationGet started
next ventures
pioneer fund
samsung next
y combinator
general catalyst

The world's best health apps run on Terra data

Get started
ProductsIntegrationsAI InterfaceAuthenticationMobile DevelopmentDocumentationGraphAPI
DocumentationAPISDKQuickstart
CommunityBlogResearchCommunityPodcastAuthorsGithub
CompanyAboutCareersCustomersBecome an IntegrationCookies PolicyGDPRPrivacy PolicyTerms of Purchase
© Terra API. 2026 — All rights reserved.

Cookie Preferences

Essential CookiesAlways On
Advertisement Cookies
Analytics Cookies

Crunch Time: Embrace the Cookie Monster Within!

We use cookies to enhance your browsing experience and analyse our traffic. By clicking “Accept All”, you consent to our use of cookies according to our Cookie Policy. You can change your mind any time by visiting out cookie policy.

Cookies Policy
All articles

In this article:

  • 01Azure Blob Storage and Kafka join Terra's data destinations
  • 02Every source now reports connection states the same way
  • 03Activity strain scores now cover running and jogging
  • 04What each source gained in November
All articles

Product Updates

November 2025 product update: Azure Blob and Kafka destinations, and one consistent way to hear that a user disconnected

November 2025: Azure Blob Storage and Kafka join Terra's destinations, disconnection and re-auth events are standardised across every source, and strain scores cover running.


Alex Venetidis
Alex Venetidis

1 December 2025

Terra health data API product update for November 2025: new integrations, endpoints and developer features

TL;DR: Terra can now deliver payloads into Azure Blob Storage and into a Kafka topic, which covers the two requests we heard most often from teams whose data platform was not on AWS or Google Cloud. Separately, every source now reports a lost or revoked connection through the same event with the same shape, so the code that gets your user to reconnect is written once rather than once per integration.

Azure Blob Storage and Kafka join Terra's data destinations

Terra could already write to S3 and Google Cloud Storage, and to SQS as a queue. In November we added Azure Blob Storage and Kafka to that list. Both are configured the same way as the existing destinations, from the connections area of the dashboard, and both are documented in the destinations section of the docs, with the queue-based ones covered in the SQS and Kafka guide.

We keep adding destinations because a webhook endpoint is a piece of infrastructure with its own operational surface. It has to be up, it has to answer quickly, and it has to absorb a burst when a few thousand watches all sync at eight in the morning. A queue or an object store absorbs that burst for you by design. If your analytics stack is already reading from Kafka, having health data arrive on a topic next to everything else means the rest of your pipeline does not have to learn anything new about Terra at all.

Get the latest Terra Research reports and insights every week as soon as they're published.

By continuing, I agree to the Privacy Policy and Terms of Service.

Every source now reports connection states the same way

A connection between your user and their device platform can end for several different reasons. The person can revoke your app's access from the provider's own settings page. The provider can expire or invalidate the token. The person can change their password, or delete their account, or turn off a permission that the connection depended on. Each source describes these situations in its own vocabulary.

We standardised it. There is now one way a lost connection is reported, one way a connection that merely needs the user to sign in again is reported, and a clear distinction between the two, because the right product response is different in each case. A revoked connection means the user made a deliberate choice and you should probably respect it for a while before asking again. A connection that needs re-authentication is usually invisible to the user, and the right move is a quiet prompt the next time they open your app. The events and how to handle them are covered in handling authentication events.

Alongside this, the dashboard gained the ability to resend webhooks, so if your endpoint was down during a window you can now ask for the payloads from that window again rather than reconstructing them from a historical data request.

Activity strain scores now cover running and jogging

Activity Strain is one of Terra's health scores. It takes the average heart rate of a session, its duration, and the person's own recent maximum heart rate, and turns them into a single number describing how hard that session was for that particular person. It was already computed for a range of activity types, and in November we turned it on for running and jogging, which between them are the most common recorded activity across the whole Terra user base.

The score appears inside the activity payload under data_enrichment, with no extra call. The full set of scores, what each one needs in order to be computed, and how to switch them on is in the Health Scores documentation.

What each source gained in November

  • Suunto: sleep data is now collected and normalised, so Suunto users contribute to sleep-based features and sleep scores rather than only to activity.
  • Peloton: the class identifier is now part of the activity's summary identifier, which means two people who took the same class produce activities you can actually group together.
  • Rouvy: the connection now uses OAuth 2.0, which is the modern sign-in flow where the user approves access on Rouvy's own page and no credentials pass through your app.
  • Hammerhead: ride histories are now retrieved as a full paginated sweep, so a user with years of riding behind them arrives complete on their first sync.
  • Cronometer: polling now reaches one day further back, which catches nutrition entries that people log the morning after.
Previous
Next

Continue reading

  • Terra now delivers per-set strength training data

    Terra now delivers strength workouts set by set: reps, weight, effort and rest, normalized across nine integrations including watch-sensed Garmin sets.

    8 September 2026

  • Garmin's Connect Developer Program is paused: what it means if you're building on wearable data

    Garmin paused new Connect Developer Program applications while it updates the program. What the pause covers, why Garmin data matters, how to keep shipping.

    7 September 2026

  • Terra's Routes API: Get training routes on your user's watch

    Design an activity route once, and it lands on your users' watch ready to follow, with none of the usual file wrangling!

    6 September 2026