Consolidate wearables: replace direct integrations with one aggregator
Updated July 20, 2026
Replace direct integrations with an aggregator
You are maintaining several per-vendor integrations — Fitbit, Garmin, Oura, WHOOP, Strava — and each one is its own auth flow, its own schema, and its own webhook handler. Consolidating them behind one aggregator (Terra, Junction (formerly Vital), Rook, or Spike) collapses that into a single integration and a single normalized webhook stream. The move is real: you re-map fields to the aggregator's schema, some providers still need your own developer credentials, and every user has to re-authorize through the aggregator's connect flow. Run the aggregator in parallel with your existing integrations, back-fill within each provider's cap, and cut over provider-by-provider — this is a re-integration, not a flag flip.
For the concept itself, see what a health-data aggregator is and the aggregator category overview. This page is the move.
What actually changes
| Old (direct integrations) | New (one aggregator) | What it means for you |
|---|---|---|
| Per-vendor OAuth apps and token refresh | One aggregator integration; user connects via the aggregator's widget | You re-consent every user onto the new connect flow — grants and refresh tokens do not transfer |
| A different schema per provider | One normalized schema across providers | You map your internal model to the aggregator's schema; provider-specific fields may be flattened or dropped |
| A webhook handler per vendor | One normalized webhook stream | You verify one signature scheme (e.g. Terra's terra-signature HMAC header) instead of many |
| You own every provider's dev app | Aggregator fronts most providers | Some providers still require your own approved developer credentials (Garmin, WHOOP, Fitbit — verify per provider) |
| Maintenance cost is your engineering time | Recurring platform fee | Predictable per-connection / per-MAU / tiered cost (verify current pricing per vendor, as of 2026) |
The value is concentration: aggregators advertise coverage of hundreds of sources normalized into one schema, typically spanning activity, sleep, heart rate, HRV, and body metrics (verify current coverage per vendor). You retire per-vendor schema drift and per-vendor webhook handling, which is the bulk of the ongoing maintenance.
The honest trade-offs:
- Recurring cost. Aggregators are paid platforms. At high volume this can exceed what your in-house maintenance costs, so model it against your provider count and user base (verify current pricing, as of 2026).
- Some providers still need your own credentials. "One integration" is marketing shorthand. Providers like Garmin, WHOOP, and Fitbit may still require you to register and get approved for your own developer app behind the aggregator. Junction documents that using your own OAuth app means the provider rate-limits you independently of the aggregator's default app (verify per provider).
- The normalized schema can hide fields. A unified schema drops or flattens fields that only exist on one provider. If you depend on a raw provider field, confirm the aggregator exposes a raw/passthrough payload before you commit (verify).
- You inherit a new dependency. The aggregator's reliability, latency, and support become yours to live with.
If your reasons point the other way — cost at scale, or needing raw provider fields the normalized schema drops — the reverse move is documented in aggregator to direct integration.
The migration, step by step
The ordered sequence is below. It follows the same parallel-run discipline as every migration: stand the new path up alongside the old, validate, then decommission.
- Inventory your direct integrations. List every provider you run, the exact fields and endpoints you actually consume, and which webhooks fire. This map is what you validate the aggregator against.
- Pick the aggregator and confirm coverage. Verify it covers all your live providers and the specific fields you depend on — including raw passthrough if you rely on provider-specific data. Setup for the target lives in the Terra integration guide.
- Map your model to theirs. Map your internal/normalized model to the aggregator's normalized schema and list the gaps — fields the aggregator drops or renames.
- Register any provider apps the aggregator still requires. Submit developer-app approvals for providers that gate access (Garmin, WHOOP, Fitbit) early — allow lead time, as approvals are not instant (verify current terms per provider).
- Stand up the aggregator webhook in parallel. Run the aggregator's endpoint alongside your existing integrations. Verify its signature scheme, and pass your user ID as the aggregator's reference id (e.g. Terra's
reference_id) so events map back to your users. - Re-consent users onto the connect flow. Users must re-authorize through the aggregator's connect/widget flow — old grants do not carry over. Migrate in waves and track per-user connection state so you can chase non-reconnected users.
- Back-fill within each provider's cap. Pull historical data for migrated users, accepting that how far back you can go is set by each underlying provider, not the aggregator, and large ranges arrive asynchronously (verify current caps).
- Compare, then cut over and decommission. Dual-read old vs new for a validation window, then cut over provider-by-provider and retire each direct integration once its replacement is proven.
Gotchas and how to keep users connected
- Connections do not transfer. OAuth grants and refresh tokens are bound to your old per-vendor apps. Every user re-authorizes on the new path, so design the re-consent UX from day one and keep old-path data flowing until each user reconnects. The cross-cutting playbook is keep users connected during migration.
- Back-fill is provider-capped, not aggregator-capped. Historical depth is set by each provider regardless of the aggregator. Document the gap for users rather than promising full history (verify current per-provider caps).
- Watch for silently dropped fields. If a provider-specific field matters to your product, confirm raw passthrough exists before you decommission the direct integration that still returns it.
- Don't hard-cut. Keep both paths live and a rollback available until each provider's replacement is validated per cohort.
How much effort is this really
Budget for a real re-integration: schema mapping, any provider approvals, a re-consent campaign, a back-fill pass, and a parallel-run validation window before you retire anything. The payoff is one integration and one webhook stream to maintain instead of many. Before you commit, verify current pricing, provider coverage, and back-fill caps directly with the aggregator, as of 2026 — those specifics move.
Frequently asked questions
- Do users have to reconnect when I move to an aggregator?
- Yes. OAuth grants and refresh tokens are bound to your old per-vendor apps and do not transfer. Every user must re-authorize through the aggregator's connect flow, so plan a re-consent campaign and keep old-path data flowing until each user reconnects.
- If I use one aggregator, do I still need my own developer credentials?
- Often yes. 'One integration' is shorthand: providers such as Garmin, WHOOP, and Fitbit may still require you to register and get approved for your own developer app behind the aggregator, and using your own OAuth app can mean the provider rate-limits you independently. Verify per provider, as of 2026.
- Will the normalized schema drop provider-specific fields?
- It can. A unified schema flattens or drops fields that only exist on one provider. If you depend on a raw provider field, confirm the aggregator exposes a raw or passthrough payload before you decommission the direct integration that returns it. Verify availability per aggregator.
- How far back can I back-fill historical data?
- Back-fill depth is set by each underlying provider, not the aggregator, and it is capped and often permission-gated. Large ranges are delivered asynchronously in chunks. Document the gap for users rather than promising full history, and verify current per-provider caps.
- Should I hard-cut or run both in parallel?
- Run both in parallel. Stand up the aggregator alongside your existing integrations, dual-read and compare for a validation window, migrate users in waves, and cut over provider-by-provider while keeping a rollback path until each cohort is proven.
Keep reading
Independent comparison, last reviewed July 20, 2026. Pricing, rate limits, and feature availability change often — confirm current details in each provider’s official documentation before you commit. Product and company names are trademarks of their respective owners; AIFitnessAPI is not affiliated with, endorsed by, or sponsored by any product listed here.
← All migrations · by AIFitnessAPI