Sojourn Privacy Policy

Last updated: 22 July 2026

This Privacy Policy explains how the Sojourn app, including beta builds distributed through Apple TestFlight and releases distributed through the App Store as "Sojourn - Travel Tracker," handles information. The app itself is branded simply as "Sojourn." Sojourn is a residency-day and travel tracker for people whose lives span multiple borders.

The short version: your travel data lives in your own iCloud and on your device. We do not run a database of your travel history. We have no accounts and no login. The application data that reaches our own infrastructure is pseudonymous, opt-out usage analytics associated with a rotating analytics identifier, the bare minimum needed to look up a public flight schedule (a flight number, or a route and date), and, only if you choose to send feedback, your message, optional email, rating or category, and the app and iOS versions used to provide support. Cloudflare also necessarily receives network metadata, including the request IP address, when it carries these requests; the narrow ways that metadata is used and retained are described below.

This policy is written to be honest and specific to how Sojourn is actually built. Where it refers to "we," "us," or "Sojourn," it means Sacha Allard, the operator of the Sojourn app.


1. Who this applies to

This policy applies to everyone who uses Sojourn, anywhere in the world. Because Sojourn is built for people who track tax residency, many of our users are in the European Union and the United Kingdom. We have written this policy to align with the EU General Data Protection Regulation (GDPR), the UK GDPR, and the California Consumer Privacy Act (CCPA). Your rights under those laws are described in Section 12.


2. What data we do, and do not, collect

We want to be precise, because "we collect almost nothing" is core to how Sojourn is designed.

We do NOT collect or store on our own servers:

The data that reaches our infrastructure:

Everything else stays under your control on your device and, where the app supports sync, in your personal iCloud account.


3. Where your data lives

Sojourn is built on a simple principle: your data is yours, and it stays with you.

This is a deliberate architectural choice, not just a promise. Sojourn has no developer-accessible store for your personal travel data.


4. Location

Sojourn can sense your location on your device to help count the days you spend in each country, which is the heart of tax-residency tracking.


5. Analytics (pseudonymous, opt-out, and how to turn it off)

To understand which features are useful and prioritize improvements, Sojourn collects a small amount of pseudonymous usage analytics. It does not contain your name, email, Apple ID, account, location, or travel history, but events carrying the same identifier can be associated until it rotates.

What it is:

Your control:

Where analytics flow (and what each step does):

  1. The Sojourn app on your device batches pseudonymous events.
  2. They are sent to our Cloudflare Worker gateway, which applies the short-lived 60-second abuse-prevention key described above, validates them against the allow-list, writes the bounded operational log described above, and does not attach your request IP, location, or travel data to the event forwarded to Railway.
  3. The sanitized, IP-stripped batch is forwarded to our analytics service hosted on Railway (a managed Postgres database).
  4. We view aggregate trends in Grafana, a dashboard tool.

Because this data is IP-stripped and uses a rotating identifier that is not mapped to an account, it does not directly identify you by name or email. For Apple's App Privacy disclosure, we nevertheless declare the analytics Product Interaction and Device ID as Linked to the User. This analytics database is entirely separate from your travel data, which (as Section 3 explains) never reaches us at all.


6. Feedback you choose to send

Sojourn has an optional in-app feedback form (Settings → Help & feedback → Send feedback). This is the one place where you can deliberately send us a message, and it is entirely your choice.


7. Flight lookups, calendar, and photos

Sojourn offers a few optional, opt-in features that read flight or trip information. Boarding-pass, calendar, and Photos content is not uploaded to Sojourn infrastructure. A flight lookup sends only the schedule fields described below; Cloudflare separately receives ordinary network metadata needed to carry and protect that request.

Flight schedule lookups. When you choose to look up a flight, Sojourn can query a public flight-schedule provider (AeroDataBox) through our Cloudflare edge proxy. The application fields contain only a flight number, or a route (from and to) and a date. They do not contain your name, account, email, travel log, or Sojourn analytics identifier. Cloudflare necessarily receives your request IP as network metadata. The Worker HMAC-pseudonymizes that address with a secret key and uses the pseudonym only to select a per-client Durable Object rate limiter; neither the raw address nor the pseudonym is added to the custom log fields or forwarded to AeroDataBox or Railway. The Durable Object stores only a request count and reset time, and its counter state is scheduled for deletion after the 60-second window reset plus a ten-minute cleanup grace. Automatic invocation logs are disabled, so request headers, IP metadata, and lookup URLs are not persisted in Workers Logs. Custom flight-protection logs contain only bounded gate, route-class, timing, quota, and provider-status fields; they do not contain an IP address, its pseudonym, a flight number, route, or date. The proxy holds the provider key so it never has to live on your device, and AeroDataBox receives only the route, date, or flight-number information.

Boarding passes. You can add a boarding pass by scanning its barcode, pasting an itinerary, or importing a PDF or photo. This all happens on your device. The resulting boarding pass is stored only on your device and in your own iCloud, like the rest of your data. It is not uploaded to us.

Calendar (optional, opt-in). If you choose to, Sojourn can read calendar events on your device to find flight-shaped events and help fill in your travel log. It can also add stays to a dedicated "Sojourn" calendar. This happens only after you explicitly tap to connect your calendar. Sojourn never requests calendar access automatically. Calendar information stays on your device and is never uploaded to us.

Photos (optional, opt-in). In the currently distributed TestFlight Build 10, if you choose to grant Photos access, Sojourn reads saved location and date metadata from photos in your main Photos library to create approximate past-location evidence. Build 10 does not scan videos and does not preserve the source asset's saved accuracy in the imported record. Shared Albums are not scanned, and limited Photos access exposes only the items you select. Sojourn does not request the original photo bytes. It saves a country, date, and representative coordinate for each imported location group; those records can sync through your private iCloud like the rest of your travel log. Border, coastal, and nearby same-day groups can require review before you rely on tracker totals. Nothing is uploaded to Sojourn's servers. A replacement build under validation expands this metadata-only path to photos and videos and preserves saved accuracy, but that behavior is not yet distributed; we will update this policy before it is.

You can grant or revoke calendar and photo access at any time in the iOS Settings app.


8. What our infrastructure does

Our infrastructure primarily delivers public rule, visa, and flight data. It also provides the narrow analytics and feedback gateways described above.


9. App distribution and Apple

Sojourn v1.0, including the current TestFlight beta, is free during launch. Every feature in this version is available without a purchase, subscription, trial, or redemption code.

At the date of this policy, version 1.0 Build 10 is available as a public TestFlight beta and is not an App Store release. When you use TestFlight, Apple automatically collects crash logs and usage information and shares them with us through App Store Connect. This may include the beta build and installation status, sessions, crashes, device model and identifier, OS version, and language. Apple says this collection cannot be disabled in TestFlight; Sojourn's in-app analytics switch does not control it. Public-link testers' names and email addresses are not visible to us through the tester list.

If you submit feedback, a screenshot, or crash feedback through TestFlight, Apple also shares the content and associated device, connection, battery, storage, and app-uptime context described in Apple's TestFlight & Privacy notice. Feedback may be associated with a name or email address. We use TestFlight diagnostics and feedback only to test and improve Sojourn and related product functionality, and we do not share it with third parties. Apple's notice controls Apple's collection and retention.

We may introduce paid features in a future app version. If we do, the app and these documents will explain the price and terms before any purchase is offered. Purchases would be processed by Apple under Apple's privacy policy. We would not receive your payment card or billing details.


10. Third parties and what each receives

Sojourn relies on a small number of service providers. Here is exactly what each one can see.

Provider Role What it receives
Apple (iCloud / CloudKit) Stores your travel data in your own private iCloud; syncs across your devices. Your travel data, in your personal iCloud account. We cannot access it. Apple encrypts it in transit and at rest.
Apple (Core Location / geocoding) Delivers location signals and resolves coordinates on paths that require network geocoding; eligible same-country checks can use Sojourn's bundled map instead. The device coordinate needed to provide the location or geocoding service. Coordinates and travel history are never sent to Sojourn's infrastructure.
Apple (App Store) Distributes the app and processes downloads. App Store download and account information under Apple's privacy policy. We do not receive your Apple Account credentials.
Apple (TestFlight) Distributes beta builds and automatically shares beta diagnostics through App Store Connect. Build/install and usage information, crash logs, device and OS context, and any TestFlight feedback, screenshots, or diagnostic context you choose to submit. Public-link tester names and emails are hidden from us unless supplied with feedback.
Cloudflare Edge proxy that serves rule packs and visa data, gateways analytics and feedback, proxies flight lookups, applies abuse controls, and holds bounded custom operational logs. Network traffic needed to service each request; a raw-IP Cache API key lasting no more than the remainder of a 60-second window for analytics and feedback; an HMAC-pseudonymized flight-client limiter whose stored count/reset state is scheduled for deletion after the window plus a ten-minute cleanup grace; and the bounded custom application-log fields described above. Automatic invocation logs are disabled, so the request URL, headers, and IP metadata are not persisted in Workers Logs. Neither the raw flight-request IP nor its HMAC pseudonym is forwarded to AeroDataBox or Railway or added to Sojourn's custom log fields. Custom Workers Logs are retained for no more than seven days.
Railway Hosts the analytics database (managed Postgres) and dashboards, and stores feedback you choose to send. Pseudonymous, allow-listed analytics events with a rotating device-level identifier and no stored IP; plus any feedback message, optional email, rating or category, and app/iOS versions you submit.
AeroDataBox Public flight-schedule data provider for flight lookups. Only a flight number, or a route and date. Never your identity.

We do not sell your personal information to anyone. We do not share your personal information with advertisers or data brokers. We do not use third-party advertising or analytics SDKs.


11. Data retention and deletion

Because your travel data lives in your own iCloud and on your device, you are in control of it.


12. Your rights

If you are in the EU or UK (GDPR / UK GDPR). You have the right to access, correct, delete, restrict, and port your personal data, and to object to processing. For the personal data Sojourn handles, these rights are mostly exercised directly by you, because the data lives in your own iCloud and on your device, which you fully control. You can access, correct, export, or delete your travel data inside the app and through iCloud at any time.

If you are in California (CCPA). You have the right to know what personal information is collected, to delete it, and to opt out of its sale. We do not sell your personal information. Your travel data is not collected by us at all; it stays in your iCloud and on your device. The limited analytics and optional feedback that do reach us are described, controlled, and retained as set out above.

To make any request or ask a question about your rights, contact us using the details in Section 16.


13. Children

Sojourn is not directed at children and is not intended for use by anyone under the age required by their local law to consent to data processing (for example, 16 in parts of the EU, or 13 in the United States). We do not knowingly collect personal information from children. If you believe a child has used Sojourn in a way that concerns you, please contact us.


14. Security


15. Changes to this policy

We may update this policy as Sojourn evolves. When we make a material change, we will update the "Last updated" date at the top and, where appropriate, note the change in the app. Continued use of Sojourn after an update means you accept the revised policy.


16. Contact

If you have questions about this Privacy Policy or your data, contact us:


Sojourn counts your days. Not tax or legal advice. Verify with a professional.