Product Updates
March 2026 product update: choose push or ping delivery, and check what data a user has before you ask for it
March 2026: push or ping delivery mode, a health data coverage endpoint, Dexcom in the EU with a sandbox, and expanded biomarker matching.
TL;DR: You can now choose, per connection, whether Terra pushes the full payload to your endpoint or sends a small notification you fetch from at your own pace. March also added a way to ask what data a user actually has before you spend a request asking for it, opened Dexcom in the EU with a sandbox to build against, and lifted biomarker matching accuracy in Lab Reports to 97.5 percent.
Push or ping: choose how Terra delivers each payload
Terra's default is push. A payload is ready, Terra posts the whole thing to your webhook endpoint, and your endpoint stores it. That is the simplest thing that works, and it is the right default for most teams.
Ping mode fits a different set of architectures. If your payloads are large, if your endpoint sits behind an ingress with a body size limit, or if a morning sync burst arrives faster than your workers can absorb it, you want control over when the body reaches you. Terra sends a small notification saying that data of a given type is ready for a given user, and you fetch the body when you are ready for it. Your endpoint stays efficient and fast, backpressure becomes your decision rather than a queue you cannot see, and a slow consumer no longer risks dropping data.
The toggle is per connection and it is self-serve, in the delivery mode control on the connection's settings in your dashboard. Both modes are documented in the webhooks guide.
Health data coverage endpoint for a better UX
Providers impose rate limits, and those limits are shared across all of your users rather than being per user. That makes a wasted request genuinely expensive: every call you spend asking for sleep data from a user who does not wear their device overnight is a call you cannot spend on a user who does.
March added a coverage endpoint that answers the question directly. You ask what a given user has, and you get back which data types they have and over what period, so your code can request only what exists. The month cap that originally limited how far back you could ask about was removed during the same month, so the answer now spans the user's whole history.
For products with a lot of connected users this changes the arithmetic of a nightly job quite sharply, because the set of users worth polling for any given data type is usually much smaller than the set of users who are connected.
Dexcom support was extended to the EU region in March, and a sandbox mode was added so you can build and test a continuous glucose monitoring feature without needing a real sensor on a real arm. The sandbox returns realistic glucose traces, which means the graph you are building can be checked against plausible data well before your first real user connects.
Details are in the Dexcom page.
Filter Apple Health data by the app that wrote it
Apple Health is a shared store: Everything on the phone writes into it: the watch, the scale, the sleep app, the meditation app, the nutrition tracker, and any number of things the person installed once and forgot about. When you read from it, you get all of them, which produces the classic duplicate problem where the same run appears three times because three apps recorded it.
March added the ability to filter by which app wrote each record, along with a guide explaining how to decide what to keep. The mobile SDK pages cover the setup, in mobile-only sources.
Lab Reports now matches biomarkers at large scale across 4000+ metrics
Lab Reports takes a PDF or a photograph of a lab result and returns structured biomarker data. This includes what each line refers to, because laboratories name the same test differently, abbreviate inconsistently, and print in different languages. A line reading "HDL-C" and a line reading "Cholesterol, HDL" and a line reading "HDL Kolesterol" all mean the same thing, and none of them matches on a string comparison.
March brought a substantial improvement to that matching step, including 4000+ biomarkers. The biomarker catalogue, including the codes each entry maps to, is in the biomarker reference.
Also in March
- Streaming API guides for React Native and Flutter were published, so you can add live sensor streaming on both platforms straight from the guide. They are in the Streaming API section.
- Webhook timeouts are now configurable per destination, rather than one global value, which helps when one of your endpoints is a fast queue and another is a slow database write.
- Huawei reached feature parity with the previous generation of the Terra API, gained a webhook handler, and now checks the user's HealthKit privacy consent during authentication.
- Zepp was added as a planned workouts destination.
- Hosted authentication pages can now carry your end-user privacy policy, which several app store review processes ask for explicitly.
- Scopes can now be customised per resource, so you can request narrower permissions rather than everything a provider offers.