Pre-existing data is the health history ROOK retrieves the moment a user connects, so you have something to work with instead of waiting for new data to accumulate. How far back it reaches — the pre-existing data window — depends on the type of data source: up to 7 days from API-based sources, and from mobile sources through a ROOK SDK, anywhere from 0 to 180 days, set to 29 by default. It is on by default in every environment and arrives on your Data Webhook.
How many days does ROOK retrieve?
Source type | Pre-existing data window |
API-based sources | Up to 7 days, not configurable |
Mobile sources, SDK 4.2.0 or later | Configurable from 0 to 180 days, 29 by default |
Mobile sources, SDK earlier than 4.2.0 | Fixed at 29 days |
Whatever the window, the data has to exist to be retrieved. Pre-existing data depends on the user having used their data source app and synchronized it — if synchronization is incomplete, there is nothing for ROOK to extract.
For Health Connect, users must have the READ_HEALTH_DATA_HISTORY permission to access historical data beyond 29 days. If this permission is not granted and more than 29 days are configured in the portal, the SDK will automatically limit the data range to 29 days.
How do I configure it?
Go to Products → ROOK Connect in the ROOK Portal. Two settings control pre-existing data:
Setting | What it controls |
Pre-Existing Data (API) | Turns pre-existing data from API-based sources on or off. The 7-day window itself is fixed. |
Pre-Existing Data (SDK) | Sets how many days of history ROOK retrieves from mobile sources, from 0 to 180. |
Both are on by default, in every environment, for both source types. You do not have to enable anything to start receiving pre-existing data.
Both are also configured per environment. Setting a 180-day window in Sandbox does not change Production — check the environment selector in the header before you save.
To stop receiving pre-existing data, turn off Pre-Existing Data (API) for API-based sources, or set Pre-Existing Data (SDK) to 0 days for mobile sources.
From what date is the window counted?
API-based sources. The 7 days are counted back from the moment the user connects that source.
Mobile sources. The window is counted back from the moment the SDK registered the user, which is the last time your app called updateUserID. If a user is registered again — under a different user ID, or removed and registered again — the clock restarts from that most recent updateUserID call, and the configured number of days applies from there.
Changing the mobile window applies to everyone, not only to new users. If you raise it from 40 days to 100, users who were already registered get 100 days as well.
What do I receive?
What arrives depends on the type of source.
From API-based sources: the Physical, Sleep and Body summaries, and a ROOK Score calculated from them, so you have a health score from the moment of connection.
From mobile sources: the three pillars in full. That means the summaries and the events inside them — activity events within Physical, oxygenation and blood pressure within Body, and so on — plus the ROOK Score. For the complete list of what each pillar contains, see the ROOK Technical Documentation on data types.
In both cases the JSON structure is identical to your daily deliveries, so nothing in your integration needs to change to handle it.
Which data does each source provide?
Sources differ in what they expose, so the summaries you receive depend on where the user's data comes from.
Mobile sources — the ones the 0-to-180-day window applies to:
Data source | Physical Health Pillar | Sleep Health Pillar | Body Health Pillar |
Apple Health | Yes | Yes | Yes |
Health Connect | Yes | Yes | Yes |
Samsung Health | Yes | Yes | Yes |
The Android operating system itself does not provide pre-existing data, even though ROOK reads other data from it.
API-based sources — up to 7 days:
Data source | Physical Summary | Sleep Summary | Body Summary |
Withings | Yes | Yes | Yes |
Oura | Yes | Yes | Yes |
Google Health | Yes | Yes | Yes |
Whoop | Yes | Yes | Yes |
Garmin | Yes | Yes | No |
Polar | No | Yes | No |
Dexcom | No | No | No |
Dexcom does not allow pre-existing data extraction at all.
For Whoop, the Body Summary always carries the last update the user made in their data source.
When does it arrive?
Physical, Sleep and Body summaries are sent immediately after the user links their account. The ROOKScore follows: it may arrive at the same time, but ROOK guarantees it within 24 hours of linking.
Extraction is automatic. There is nothing to request and no extra endpoint to build — it arrives on the Data Webhook you already configured. See How do I set up webhooks in the ROOK Portal?.
Frequently asked questions
Can I retrieve pre-existing data for specific users only? No. Pre-existing data is retrieved for every connected user while the feature is on. Which records you keep is a decision for your own backend.
Does enabling it slow down my daily data deliveries? No. Historical data is processed separately and delivered through the same webhook.
What happens if my webhook is misconfigured? Historical data cannot be delivered until the endpoint is working. Because pre-existing data arrives immediately on linking, a misconfigured webhook at that moment means the user's history is the first thing you miss.

