Cookie policy
- Last updated: 29/10/2026
Contents9 chapters
SojournHub Software Ltd, a private company limited by shares registered in England and Wales (company number 17518523, incorporated 13/10/2026). Registered office: 124 City Road, London, EC1V 2NX, United Kingdom. SojournHub Software Ltd is not VAT registered. Privacy, legal and complaints contact: Matthew Silvester, CEO, support@sojournhub.io.
This policy explains how SojournHub (sojournhub.io) uses cookies and similar technologies on the public site, the applicant workspace, and the partner workspace. It is the working policy for the technologies in the product today. Policy version 29/10/2026.
1What we mean
Cookies are small text files stored by your browser. We also use localStorage and sessionStorage for the same kinds of jobs. Some technologies are strictly necessary to run the service. Others are optional and stay off until you allow them.
2How we ask
On a first visit, or when a saved choice is missing, expired, or tied to an older policy version, we show a banner titled “Your privacy matters”. Accept All, Reject Non-Essential, and Manage Cookies are presented with the same visual weight. Rejecting optional technologies is as direct as accepting them.
Privacy banner
Your privacy matters
We use essential technologies to operate SojournHub securely. With your permission, we may also use analytics, functional and marketing technologies to understand how our website is used and improve our services.
Accept All
Reject Non-Essential
Manage Cookies
Strictly necessary technologies stay on. Analytics, Functional, and Marketing stay off until you opt in. You can change that at any time with Cookie Settings in the footer.
3Categories
Strictly Necessary
Required to sign in, keep a workspace secure, store this privacy choice, take a payment you start, and open a meeting you join. Always on.
Analytics
Helps us understand how the public site is used. Google Analytics runs only if you allow Analytics. This stays off unless you allow it.
Functional
Remembers choices you make, such as visa routes you compare, visas you save on the visa deck, and whether the workspace sidebar is collapsed.
Marketing
Would be used for marketing messages and pixels. None are installed. This stays off unless you allow it.
4Technologies we use
The table is generated from the product registry. Google Analytics 4 loads on the public website only after you allow Analytics. Marketing pixels are not installed. A marketing pixel does not load while Marketing is off.
Technology
Provider
Purpose
Duration
Party
Strictly Necessary
sh_admin_session. SojournHub. HttpOnly signed session for one workspace. Keeps Admin, Partner and Applicant sign-ins independent. An empty value prevents a retired session from restoring a signed-out workspace. Not used for advertising. Up to 8 hours; passkey setup sessions last 20 minutes. First party.
sh_partner_session. SojournHub. HttpOnly signed session for one workspace. Keeps Admin, Partner and Applicant sign-ins independent. An empty value prevents a retired session from restoring a signed-out workspace. Not used for advertising. Up to 8 hours; passkey setup sessions last 20 minutes. First party.
sh_applicant_session. SojournHub. HttpOnly signed session for one workspace. Keeps Admin, Partner and Applicant sign-ins independent. An empty value prevents a retired session from restoring a signed-out workspace. Not used for advertising. Up to 8 hours; passkey setup sessions last 20 minutes. First party.
sh_demo_session. SojournHub. Legacy HttpOnly signed session, migrated to the matching workspace session on a verified workspace visit. It is bound to the account email and id, with a role and an expiry. A bare role word is not accepted. Not used for advertising. 8 hours. First party.
sh_auth_pending_{workspace}. SojournHub. HttpOnly cookie that holds the signed sign-in challenge until the one-time code is confirmed. 20 minutes. First party.
sh_auth_profile_{workspace}. SojournHub. HttpOnly cookie with the signed-in display name and email so the workspace can address the account. Not copied into the consent record and not used for advertising. 8 hours. First party.
sh_auth_pwchange_{workspace}. SojournHub. HttpOnly cookie that keeps a partner on the password-change step before the workspace opens. 20 minutes. First party.
sh_auth_stepup_{workspace}. SojournHub. HttpOnly cookie that records a recent passkey step-up so a sensitive action can proceed. 5 minutes. First party.
sh_passkey_offer. SojournHub. HttpOnly cookie set only after the signed-in person dismisses the passkey prompt. 180 days. First party.
sh_demo_overlay. SojournHub. HttpOnly cookie that keeps signed-in workspace state needed to show the open application session. 8 hours. First party.
sojournhub_locale. SojournHub. Remembers the language chosen on the public website and the applicant workspace so the next visit can open in that language. Not used for advertising. Partner and admin pages stay in English. 1 year. First party.
sojournhub-locale. SojournHub. Local copy of the chosen language, plus a per-account choice stored under a hash rather than an email. Not used for advertising. Until cleared. First party.
sh_portal_theme. SojournHub. Remembers Light or Dark for the signed-in workspace so the page can paint the saved appearance before it is shown. Not used for advertising. 8 hours. First party.
sh_workflow. SojournHub. HttpOnly cookie that keeps order and application workflow state for the signed-in session. 8 hours. First party.
sh_consent. SojournHub. Stores the category choices, time, policy version, jurisdiction code, and an anonymous id. It does not store a name, email address, or account id. 90, 180, or 365 days, depending on the jurisdiction recorded with the choice. First party.
sh_otp_handoff. SojournHub. Same-tab sessionStorage copy of the sign-in challenge, including the email address typed on the form, so verification can finish if the cookie is dropped. The one-time code is not stored. 20 minutes, then removed. First party.
sh_otp_reload. SojournHub. SessionStorage flag that stops the sign-in page from reloading in a loop when a challenge is in the address bar. Until the tab closes. First party.
sh_banner_dismissed. SojournHub. Same-tab sessionStorage list of security, passkey, and test banner ids the signed-in person dismissed, so a refresh does not show them again. It does not store a name or email. Until the tab closes. First party.
sojournhub:consent. SojournHub. LocalStorage mirror of the consent record so the choice can be read if the cookie is missing. Same fields as sh_consent, with no name or email. Same lifetime as sh_consent. First party.
Zoom Meeting SDK. Zoom. Embedded meeting window (@zoom/meetingsdk). Loaded only after the person chooses Join on a meeting they are attending. It is not loaded on marketing pages and is not used for advertising. Zoom may set its own session cookies while the room is open. For the meeting session. Third party.
Analytics
_ga. Google Analytics. Distinguishes browsers on the public website. Set only after Analytics is allowed. Not used in the applicant workspace, partner pages, or admin, and not used for advertising. 2 years. Third party.
_ga_*. Google Analytics. Keeps the Google Analytics 4 session for the public website. Set only after Analytics is allowed. Not used for advertising. 2 years. Third party.
Functional
sh_bank_later. SojournHub. HttpOnly cookie set only after a partner chooses to add bank details later. It remembers that account choice. 30 days. First party.
sojournhub-quote. SojournHub. LocalStorage list of route ids the visitor added to a quote, plus the people named on each quote. Written only when Functional is allowed. Until cleared or Functional is withdrawn. First party.
sjh.visaDeck.v1. SojournHub. LocalStorage list of country slugs the visitor saved on the visa deck. Quote visas stay in sojournhub-quote. Written only when Functional is allowed. Until cleared or Functional is withdrawn. First party.
sjh.flickHintSeen. SojournHub. LocalStorage flag that the visa deck flick hint has been seen. Written only when Functional is allowed. Until cleared or Functional is withdrawn. First party.
sojournhub-compare. SojournHub. LocalStorage list of route ids the visitor chose to compare. Written only when Functional is allowed. Until cleared or Functional is withdrawn. First party.
sojournhub:admin-nav-groups. SojournHub. LocalStorage record of which admin sidebar groups were closed. No name or email. Written only when Functional is allowed. Until cleared or Functional is withdrawn. First party.
sojournhub:appshell:collapsed. SojournHub. LocalStorage flag for whether the workspace sidebar is collapsed. Written only when Functional is allowed. Until cleared or Functional is withdrawn. First party.
sojournhub:workspace:cards. SojournHub. LocalStorage record of which workspace cards a signed-in person left open or closed. Keyed by an opaque id, with no name or email. Written only when Functional is allowed. Until cleared or Functional is withdrawn. First party.
sojournhub:partner-quotes:cards. SojournHub. LocalStorage record of which quotation cards a partner left open or closed. Keyed by partner id, with no name or email. Written only when Functional is allowed. Until cleared or Functional is withdrawn. First party.
sojournhub:partner-home:needs-action. SojournHub. LocalStorage record of which Needs your action groups a partner left open or closed on Home. Keyed by partner id, with no name or email. Written only when Functional is allowed. Until cleared or Functional is withdrawn. First party.
sojournhub:partner-case-flow:cards. SojournHub. LocalStorage record of which case workflow stages and document rows a partner left open or closed. Keyed by partner id and application id, with no name or email. Written only when Functional is allowed. Until cleared or Functional is withdrawn. First party.
Marketing
Would be used for marketing messages and pixels. None are installed. This stays off unless you allow it.
5Why some technologies are always on
Sign-in, session, and workspace cookies are strictly necessary. They keep you in the right account and are not advertising trackers. Payment is by bank transfer from your own bank, so SojournHub does not load a card checkout or payment script on any page.
The Zoom Meeting SDK loads only after you choose Join on a meeting you are attending. It is not loaded on the public marketing pages and it is not a marketing pixel. Zoom may set its own cookies while that room is open because the meeting cannot run without it.
6What we do not do
We do not run Vercel Analytics, a Meta pixel, a TikTok pixel, or an X pixel. Google Analytics 4 runs on the public website only after Analytics is allowed. It is not loaded in the applicant workspace, on partner pages, or in admin. Advertising storage stays off. Facebook, Instagram, X, and TikTok icons in the footer are links to those sites. Opening them is a visit to that site. Fonts are served with the SojournHub site, not from a Google Fonts runtime request. A development-only sign-in cookie exists in the codebase and is not set in production.
7Your choice
The consent record stores the categories you allowed, the time, the policy version, a jurisdiction code, and a random anonymous id. It does not store your name, email address, or account id. Functional storage, including compared routes and the sidebar preference, is not written unless Functional is on. Withdrawing a previously allowed optional category reloads the page so a script that had started does not keep running.
You can also clear cookies in your browser. Clearing sh_consent brings the banner back. Signing in still uses the essential session cookies.
8Where you are
The rule depends on the region we can detect. We use the hosting platform’s country header when it is present, then the browser language, and otherwise the default rule. The default asks for consent before any optional technology runs. We do not treat every visitor as if they were in one country.
Region
Rule
Optional technologies
Choice lifetime
United Kingdom. UK GDPR and PECR. Off until you opt in. 180 days.
European Economic Area. GDPR and ePrivacy. Off until you opt in. 180 days.
Malaysia. Personal Data Protection Act 2010. Off until you opt in. 365 days.
Singapore. Personal Data Protection Act 2012. Off until you opt in. 365 days.
Thailand. Personal Data Protection Act B.E. 2562. Off until you opt in. 180 days.
Indonesia. Law No. 27 of 2022 on Personal Data Protection. Off until you opt in. 180 days.
Vietnam. Decree 13/2023 on personal data protection. Off until you opt in. 180 days.
Cambodia. No dedicated cookie statute identified — shorter opt-in lifetime. Off until you opt in. 90 days.
Unknown region. No reliable region signal — ask before optional technologies. Off until you opt in. 180 days.
9Contact
Questions about this policy: privacy@sojournhub.io. Other messages: Contact. See also the Privacy Policy.