Off Road Xperience, LLC
6330 Oak Valley Drive, Cumming, Georgia, United States
[email protected] · headzupoffroad.com
Version 2.0 · Effective August 29, 2026 · Supersedes the policy effective August 23, 2026
Off Road Xperience, LLC, a Georgia limited liability company ("ORX", "HeadzUp", "we", "us", "our"), builds HeadzUp — a rider-awareness system for off-road motor parks. This policy explains what personal information the HeadzUp system handles, why, who else sees it, how long it is kept, and what you can do about it.
It applies to every part of the HeadzUp system, whether that part is live today or is described in section 22 as planned:
| Surface | What it is | Status |
|---|---|---|
| HeadzUp rider app | The iOS and Android app riders use on the trail. | Live |
| HeadzUp Rider Unit ("RU") | The LoRa radio that pairs to the phone over Bluetooth. | Live |
| The park mesh | The LoRa radio network the Rider Units form among themselves. | Live |
| Park Mode | The operator console built into the rider app, behind a separate staff login. | Live |
| HeadzUp park dashboard | The browser dashboard park staff use to see riders on a live map and message them. | Live |
| The message broker | The MQTT server the app and dashboard exchange data through. | Live |
| headzupoffroad.com | The public website, sign-up form and (when it launches) checkout. | Live / partly planned |
| HeadzUp Trail Mapper | The survey app park staff use to record trail geometry. | Live |
| Provisioning tools | The internal flashing tool, and the park-facing browser flasher. | Live / partly planned |
| Public API and integrations | The documented REST API and assistant integrations available to authorised accounts. | Live |
| Support wiki and support email | Rider and operator help material, and correspondence with us. | Live |
| Pilot and demo programs | Time-boxed validation events, including on-site check-in paperwork. | Event-only |
If a park you ride at gives you its own privacy notice, that notice governs what the park does with what it sees. This policy governs what we do.
Two separate businesses handle your information, for two different reasons.
ORX is the controller (the business that decides why and how information is used) for: your rider account, your subscription, the operation of the app and the broker, our own diagnostics and liability records, and our support correspondence with you.
Each park operator is an independent controller for what it sees on its own dashboard: where its riders are, what they message the office, what incidents they report, and — where the park has enabled it — the position history it retains for trail and heat mapping. A park decides its own retention, its own staff access, and its own use of that information within the limits of its agreement with us and the law. We are that park's service provider / processor for the dashboard software — we host it, we do not use its data for our own purposes.
Where a park operates the dashboard itself, on its own infrastructure, we may not hold the data at all. Ask the park.
Practical consequence: a request to delete data the park holds may need to go to the park. Send it to us anyway — we will route it and tell you where it went.
"Collect" here means the information leaves your phone or your Rider Unit and reaches a HeadzUp server or a park dashboard. Radio-only traffic is section 5.
| Data | Detail | Source | Required |
|---|---|---|---|
| Username | 3–32 characters, chosen by you. Visible to friends and to park staff. | You, at sign-up | Yes |
| Password | Stored only as a salted scrypt hash. We never store or display the password itself. | You | Yes |
| Email address | Used for account recovery, service notices, and — only if you tick the box — trail updates and offers. | You | Yes |
| Phone number | Second recovery channel. | You | Yes |
| Marketing opt-in | A single yes/no flag. Off unless you tick it. | You | No |
| Subscription status, plan and expiry | Whether coverage is active, which plan, and until when. | Our billing records | Yes, if you subscribe |
| Session tokens | Random opaque tokens that keep you signed in. Not derived from your password. | Generated by us | Yes |
| Recovery intents | A record that a recovery was requested, holding a rider id — not the email or phone submitted. | You | Only if you use recovery |
Rider accounts in a pilot program may instead be provisioned by us or by park staff, in which case the email address or phone number they entered is stored the same way and returned to the app so it can show you who is signed in.
| Data | Detail |
|---|---|
| Precise location | Latitude, longitude, speed, heading and accuracy, sampled while a ride is active. |
| Background location | The same, while the app is in the background and the screen is off. On Android this runs in a foreground service with a persistent notification; on iOS it uses background location updates. Without it, alerts stop when the screen locks — which is most of a ride. |
| When it stops | When you end the ride, sign out, revoke the permission, or the app is force-stopped. |
| Where it goes | To the park you selected, over the broker. Also, subject to your settings, over the radio to nearby Rider Units. |
Precise location is treated as sensitive personal information — see section 8.
| Type | Who receives it | Notes |
|---|---|---|
| Message to the park office | Park staff | Includes text, timestamp, severity and your identifiers. |
| Park-wide broadcast | Every rider at that park, and park staff | |
| Group message | The group's members | Group membership is app-level, set by you. |
| Rider-to-rider direct message | The addressed rider | Dropped at the dashboard's ingest — park staff are not shown it. It still transits the broker, which is why per-device broker credentials are on the roadmap (section 22). Treat it as private from staff, not as end-to-end encrypted. |
| SOS, accident, obstacle, hazard, medical, mechanical and other incident reports | Park staff and, for SOS and accident, every rider at the park | Carries the location the report was made from, a timestamp and any up/down votes. |
| Meetup pins | The riders you shared them with | Friends-only meetups are not surfaced to park staff. |
| Voice-dictated messages | Same as the message type you sent | Dictation happens on your phone; only the resulting text is sent. See section 6. |
For park staff, club organisers and our own administrators: name or label on the account, email address, role (superadmin, admin, user), which parks the account is scoped to, invite state, password hash, session records, and any API keys issued. Actions taken in the dashboard — messages sent, incidents resolved, parks created — are attributable to the account that took them.
Where a park enables history, the backend retains rider position rows so it can draw heat maps and trail overlays. This is per-deployment configuration, not a global default. Trail surveys recorded with Trail Mapper are GPS traces driven by staff, with trail names and waypoints — they are about the park's terrain, but they are recorded by an identifiable staff member and are treated as personal information for that person.
Our provisioning tools keep a registry of Rider Units: unit serial (derived from the radio's own node id), park assignment, firmware version, configuration snapshots, flashing history, and encrypted backups of the unit's keys. This is equipment data. It becomes personal information only where a unit is tied to a named rider — for example a rider who owns their unit outright.
The public website serves the marketing pages, the sign-up form and (when it launches) checkout. It runs no analytics, sets no advertising cookies, and loads no third-party script by default. If bot protection is enabled for a deployment, a Cloudflare Turnstile challenge is loaded on the sign-up form only, and Cloudflare receives the data described in Appendix B. Park-entrance QR codes produce aggregate scan counts — how many scans, which park, which platform — with no identifier tying a scan to a person.
If you email support, open a ticket, or talk to park staff who escalate to us, we keep the correspondence and whatever you chose to put in it.
Your Rider Unit broadcasts your position, heading and speed over LoRa radio so that other HeadzUp Rider Units in range can compute proximity and raise an alert. Those broadcasts:
There is no way to be visible to other riders' alerts and invisible to their radios at the same time. That is what the product is. If you do not want to be seen on the mesh, do not start a ride.
Two things reach our servers from the radio path only because the phone puts them there: the position your own phone publishes to the broker, and — if you have the bridge enabled — mesh traffic your phone heard and relayed. A rider with no cell signal publishes nothing.
Verified against the shipped code, and mirrored in our app-store data-safety declarations:
Where the GDPR or UK GDPR applies, the legal basis is in the right-hand column. Where it does not, read the column as a plain statement of purpose.
| Purpose | Data used | Legal basis (GDPR / UK GDPR) |
|---|---|---|
| Signing you in and keeping your account | Account data, session tokens | Performance of a contract |
| Showing you on the park's live map | Location, identifiers, status | Performance of a contract |
| Computing and delivering proximity alerts | Location, identifiers | Performance of a contract |
| Delivering messages, broadcasts, meetups | Message content, identifiers | Performance of a contract |
| Handling SOS, accident and medical reports | Incident content, location, identifiers | Vital interests of you or another person; performance of a contract |
| Managing your subscription | Account and billing status | Performance of a contract |
| Keeping the service working and secure — rate limiting, abuse prevention, fault diagnosis | Diagnostics, IP address, identifiers | Legitimate interests in a secure, functioning service |
| Reconstructing what the app knew after an incident (the black box) | Alert-path records | Legitimate interests in defending legal claims and improving safety-critical behaviour |
| Improving radio and app reliability during a pilot | Pilot telemetry | Consent (it is opt-out in the app; where required, it is opt-in) |
| Trail and heat mapping | Position history, trail surveys | Legitimate interests of the park in operating its site; performance of a contract |
| Sending trail updates and offers | Email address | Consent |
| Complying with law, responding to lawful requests, enforcing our terms | Whatever is in scope | Legal obligation; legitimate interests; establishment or defence of legal claims |
Where we rely on legitimate interests, we have weighed those interests against your rights. You can object — see section 15.
Under the California Consumer Privacy Act as amended (CCPA/CPRA) and several other state laws, precise geolocation is sensitive personal information.
We collect it, and we use and disclose it only for the purposes permitted without a further right to limit: providing the service you asked for (proximity awareness, the park's live map, incident location), securing and debugging the service, and short-term operational use. We do not use precise location to infer characteristics about you, we do not use it for advertising or profiling, and we do not sell or share it.
Because of that, no "Limit the Use of My Sensitive Personal Information" right is triggered. You can still switch it off outright: revoke the location permission, or stop riding. The app will tell you that a ride cannot run without it, because it cannot.
| Recipient | What they receive | On what footing |
|---|---|---|
| The park you selected — its operators and staff, via the park dashboard and Park Mode | Your live position and heading, rider and Rider Unit ids, battery and radio health, messages you send to the office or to all riders, SOS and incident reports, meetup pins you made public, and — where the park enables it — retained position history used for trail and heat maps | Independent controller. Bound by its agreement with us and by its own obligations to you |
| Other riders | Your position relative to them over the radio; park-wide broadcasts you send; your presence and, if you are friends, your name/handle on the map; SOS and accident alerts you raise | Peer-to-peer, and via the park's mesh |
| Service providers and subprocessors | Only what each needs. Listed in Appendix B | Contractually bound to process only on our instructions, not for their own purposes |
| A park's own integrations | Where a park issues an API key or connects an integration, that integration sees data within that key's park scope | The park's choice, under its agreement with us |
| Professional advisers, insurers, auditors | As needed, usually in connection with an incident | Confidentiality obligations |
| Law enforcement, courts, regulators | Where legally required, or where we believe in good faith that disclosure is necessary to prevent death or serious injury | Legal obligation; vital interests |
| An acquirer | In a merger, acquisition, financing or sale of assets, subject to this policy continuing to apply | Legitimate interests; we will give notice |
We do not sell your personal information, and we do not share it for cross-context behavioural advertising, as those terms are defined by California and other US state privacy laws. We have not done so in the preceding twelve months.
We do not disclose private rider-to-rider messages or friends-only meetups to park staff.
The park dashboard includes an optional Park Assistant that lets park staff ask questions about their own park in natural language. When a park has it enabled and a staff member uses it:
We do not use your personal information to train any model of our own.
At a controlled demonstration or validation event, check-in may ask you to complete paperwork on your own phone: your name, email, phone, a short survey, photographs of your photo ID (front and back), a photograph of your face, and your signature on the event's liability waiver, media release and confidentiality agreement.
None of it is stored. Specifically, by design and enforced in code:
The resulting email, and the signed agreements inside it, are then held by ORX as event records under ordinary business retention. The agreements you sign at an event are separate contracts and say so on their face.
Summarised here; the full table with the configured values is Appendix C.
scrypt hashes, per-user salt, constant-time comparison. We cannot recover your password, only reset it.An honest limitation. Today, park-level broker credentials are shared per park. Dashboard-level privacy for rider-to-rider messages is enforced at ingest and works, but a party holding a park's broker credential could subscribe to more topics than the dashboard shows. Per-device broker credentials and tighter access lists are a committed roadmap item (section 22). We would rather tell you this than let you assume otherwise.
No system is perfectly secure, and we do not claim ours is.
We operate from the United States and our infrastructure is hosted in the United States. If you use HeadzUp from outside the US, your information is transferred to and processed in the US, which may not provide the same level of protection as your home country.
Where we transfer personal data out of the European Economic Area, the United Kingdom or Switzerland, we rely on the European Commission's Standard Contractual Clauses, the UK International Data Transfer Addendum, and the Swiss addendum, as applicable, together with supplementary technical measures (encryption in transit, access scoping, minimisation). A copy of the clauses we use is available on request at [email protected].
These apply to everyone, regardless of where you live. Some jurisdictions add to them — see sections 16 to 18.
In the app and on the site
By writing to us at [email protected], from the address on your account:
How we verify you. We match the request against the email or phone on the account and, where a request is high-risk, ask you to confirm from the app while signed in. We do not ask for more identifying information than the request requires, and we do not keep verification material.
Cost. Free, unless a request is manifestly unfounded or excessive, in which case we will say so before charging anything.
Appeal. If we refuse a request, our response will tell you why and how to appeal. Appeals go to [email protected] with "Appeal" in the subject line; we respond within the period your state's law allows and, if we again refuse, tell you how to complain to your regulator.
This section supplements the rest of the policy for residents of states with comprehensive privacy laws — including California, Colorado, Connecticut, Delaware, Florida, Indiana, Iowa, Kentucky, Maryland, Minnesota, Montana, Nebraska, New Hampshire, New Jersey, Oregon, Rhode Island, Tennessee, Texas, Utah and Virginia — and for any state whose law comes into force after this date.
Notice at collection. The categories in section 4, collected for the purposes in section 7, retained per Appendix C, disclosed to the recipients in section 9. Sensitive personal information is limited to precise geolocation and, at an event only, the identification documents described in section 11 — used only for the purposes described there.
Statutory categories collected in the last twelve months (using the CCPA's vocabulary): identifiers; personal information under Cal. Civ. Code §1798.80(e) (name, phone, email); commercial information (subscription); internet or network activity (app interaction, diagnostics); precise geolocation; audio-adjacent only in the sense that dictation is converted on-device and never transmitted; professional information for park staff accounts; and inferences — none, we draw no profiles.
Sale and sharing. We have not sold personal information and have not shared it for cross-context behavioural advertising in the preceding twelve months, including that of anyone we know to be under 16. We have no financial incentive programs.
Your rights — to know, access, correct, delete, obtain a portable copy, opt out of sale/sharing and of profiling with legal effects (we do none), limit the use of sensitive personal information (see section 8), appeal a refusal, and not be discriminated against for exercising any of them. Exercise them as described in section 15.
Opt-out preference signals. Our website honours the Global Privacy Control signal. Since we neither sell nor share, the signal has nothing to switch off — but it is recorded and respected.
Shine the Light (Cal. Civ. Code §1798.83): we do not disclose personal information to third parties for their own direct marketing.
Nevada (NRS 603A): we do not sell covered information. Requests to [email protected].
Washington My Health My Data / Nevada SB370: we do not collect consumer health data. Location data is not used to infer health status, and is not shared with any party who could.
Minors: see section 19.
If the GDPR or UK GDPR applies to you:
If PIPEDA or a substantially similar provincial law (Quebec's Law 25, Alberta's or BC's PIPA) applies:
HeadzUp accounts are for adults. You must be at least 18 to create a HeadzUp account, hold a subscription, or accept our terms.
A rider under 18 may use HeadzUp under an account held and accepted by their parent or legal guardian, who is responsible for that use. Where a park issues a loaner Rider Unit to a minor, the park's own check-in and waiver process governs, and the adult who signed for the minor is the account holder for our purposes.
We do not knowingly collect personal information from a child under 13. If you believe a child under 13 has given us information, write to [email protected] and we will delete it. We do not sell or share the personal information of anyone under 16, and we do not knowingly process a minor's data for targeted advertising or profiling.
If a guardian asks us to delete a minor's data, we will — subject to the same legal and incident-record exceptions in section 15.
The app stores data locally on your phone: your settings, your sign-in token (in secure storage), your friends list, recent messages, cached node information, and the unsent portion of the black-box buffer. This is device storage for the app to work, not tracking. Uninstalling the app removes it. The Android build opts out of the OS's cloud backup, so this data is not copied off your device by the system.
The dashboard sets a session cookie or holds a session token so staff stay signed in. It is strictly necessary, first-party, and expires with the session.
The website sets no cookies for analytics, advertising, or profiling, and loads no third-party script by default. Where bot protection is enabled, Cloudflare Turnstile is loaded on the sign-up form only and sets what is necessary to run the challenge.
Map tiles on the dashboard are requested from a third-party basemap provider (see Appendix B). That provider necessarily sees the requesting IP address and which tiles were requested, which implies the map area being viewed. Rider positions themselves are drawn locally and are never sent to the tile provider.
We do not use pixels, beacons, fingerprinting, or any cross-site tracking technology.
The proximity alert is automated: the app computes distance, closing geometry, speed and heading, and raises an alert when its thresholds are met. It decides about a moment, not about a person — it produces no legal or similarly significant effect about you, no score, no profile, and no consequence outside the alert itself. It is deliberately biased toward alerting: where a value is unknown, the system does not treat it as safe.
We do not use profiling to make decisions about your account, your subscription or your access.
Listed so that this policy covers the system we are building, not only the one shipped today. Each will operate as described here; where one materially changes what we collect or who sees it, we will update this policy and tell you before it launches.
| Planned | Privacy effect |
|---|---|
| Website checkout and subscriptions (Stripe) | The payment processor collects your card details directly on its own infrastructure. We receive a customer/subscription reference, plan, status and the last four digits — never the full card number. Payments never happen inside the app. |
| Per-device broker credentials and tightened access lists | Strictly a privacy improvement. Closes the limitation described in section 13. |
| In-app sign-up and in-app account deletion | Adds an account-deletion entry point inside the app, as the app stores require. Same 30-day commitment. |
| NFC pairing stickers | A pairing identifier written to a sticker inside the Rider Unit's case. Equipment data; no additional personal information. |
| Message delivery receipts | Adds a delivered/read state to messages you send, visible to you and to the recipient's side of the conversation. |
| Trail-aware alert suppression and the park map editor | Uses trail geometry from Trail Mapper to suppress alerts where trails cannot actually converge. Uses terrain data, not additional personal data. |
| Learning mode | Tuning alert behaviour from aggregate ride data. Aggregate and de-identified; if it ever needs identifiable data, it will be opt-in. |
| Partner data paths and third-party integrations | A park may connect an integration under an API key scoped to that park. The park decides; we publish what each integration can see. |
| Park-facing browser flasher | Lets park admins update and verify their own units. Handles equipment data and encrypted key backups, behind park-admin authentication. |
| Watch / wearable companion | Would receive alerts and, if it has its own GPS, could become a position source. Same categories, same purposes. |
| Vehicle-bus (CAN) Rider Unit variant | Would read vehicle telemetry — speed, and possibly other bus values — from the vehicle rather than the phone. Vehicle data associated with your account. Not before this policy is updated. |
| Multi-site cloud dashboard | Consolidated hosting for operators with several parks. Same data, same scoping rules. |
| Extended firmware work | If we ship our own Rider Unit firmware, this policy will state what that firmware records, if anything. |
We will post any change at headzupoffroad.com/privacy and update the version and effective date at the top. Material changes — a new category of data, a new category of recipient, or a new purpose that is not compatible with the original one — will be announced in the app and, where the law requires it, will not apply to information already collected until you have been given notice and, where required, have consented.
Superseded versions are archived and available on request.
Off Road Xperience, LLC
6330 Oak Valley Drive
Cumming, Georgia, United States
Write "Privacy Request" in the subject line and tell us which right you are exercising and which email or phone is on your account. If you would rather ask the park you ride at to pass it on, that works too.
| Surface | Personal data handled | Reaches ORX servers? | Reaches the park? |
|---|---|---|---|
| Rider app (foreground) | Account, precise location, identifiers, messages, incidents, meetups, friends, diagnostics, settings | Yes | Yes, for the selected park |
| Rider app (background) | Precise location, identifiers, status | Yes | Yes |
| Rider app — Solo Ride (no park selected) | Location stays on the device and on the radio; nothing is published to a park | No park publishing | No |
| Rider Unit ↔ Rider Unit (LoRa) | Position, heading, speed, node id, display name | No | No |
| Phone ↔ Rider Unit (Bluetooth) | The same, plus device configuration | No | No |
| Message broker | Everything the app publishes and subscribes to | Yes | Yes, within park scope |
| Park dashboard | Live rider state, messages (office/broadcast only), incidents, meetups, device health, history and heat maps where enabled | Hosted by us or by the park | Yes |
| Park Mode (in app) | Same as the dashboard, within the staff account's scope | Yes | Yes |
| Park Assistant | Questions and the in-scope park data needed to answer them | Yes, plus the AI provider | Yes |
| Trail Mapper | GPS traces, trail names, waypoints, the surveying staff account | Yes | Yes |
| Website | Sign-up form fields; aggregate QR scan counts; (planned) checkout via the payment processor | Yes | No |
| Internal provisioning tool | Unit serials, configuration, encrypted key backups, flash history | Yes | No |
| Park-facing flasher (planned) | The same, for that park's units, behind park-admin auth | Yes | Yes, for its own units |
| Public API / integrations | Whatever the issuing account's park scope allows | Yes | Park's choice |
| Black-box channel | Alert-path records | Yes, internal only | No — never |
| Pilot telemetry | Device, radio and app-event diagnostics; no names, no message text | Yes, internal only | No |
| Event check-in (CVD) | Name, email, phone, photo ID, face photo, signature | Not stored — emailed and discarded | Event staff named on the form |
Current at the effective date. We update this list when it changes; a current copy is always available at [email protected].
| Provider | Function | Data it can see | Location |
|---|---|---|---|
| DigitalOcean | Cloud hosting for the rider service, broker, dashboard and website | Anything stored or transiting the service | United States |
| Cloudflare | DNS, TLS termination, tunnels, and (where enabled) bot protection on the sign-up form | Connection metadata, IP address, request data in transit | Global edge |
| ForwardEmail | Transactional email relay, including event paperwork delivery | Message contents we send through it | United States / EU |
| Apple | App distribution, TestFlight, push and platform services; on-device speech services on some devices | Distribution and platform telemetry under Apple's own policy | Global |
| App distribution via Google Play; platform services | Distribution telemetry under Google's own policy | Global | |
| Anthropic / OpenAI / Google (whichever a deployment configures) | Park Assistant language model | The staff question and the in-scope park data needed to answer it. No training on it | United States |
| CARTO (basemap tiles) | Dashboard and app map backgrounds | Requesting IP and which tiles were requested | Global CDN |
| Esri / ArcGIS (alternate basemap) | Satellite basemap option | The same | Global CDN |
| OpenStreetMap contributors | Map data attribution for the above | None directly | n/a |
| Stripe (planned) | Payment processing for website checkout | Your payment details, collected by Stripe directly | United States |
Where a park self-hosts the dashboard, that park — not this list — determines who else touches its data.
| Record | Kept for | Notes |
|---|---|---|
| Live rider state (in memory) | Until you go quiet, then evicted; a hard ceiling of 6 hours applies | Working memory for the map |
| "Currently offline" presence markers on the broker | Cleared after 7 days | Prevents stale presence lingering forever |
| Rider session token | 30 days, sliding — an active session does not expire | Revoked immediately on log out |
| Operator dashboard session | 12 hours | Shorter on purpose |
| Position history and heat maps | Per park, where enabled, for that park's operational and trail-mapping needs | Ask your park for its retention period |
| Messages (office, broadcast, group) | While the park needs them for its records | |
| Incident and SOS reports | Visible to riders for 3 days, then expired; retained by the park for its records | |
| Meetup pins | Until they expire or you delete them | |
| Friends list | Until you remove the friend or delete your account | |
| Account record | While the account exists; deleted or anonymised within 30 days of a verified deletion request | Minus what law or a park's incident records require |
| Pilot telemetry | The duration of the pilot program, then deleted or anonymised | Opt-out in Settings |
| Black-box records on your phone | Purged automatically after the configured retention window | Never displayed, never shared with a park |
| Black-box records on our servers | As long as needed to investigate and defend claims from an incident | Internal only |
| Fleet/provisioning registry | For the service life of the unit | Equipment data |
| Event check-in paperwork | Not retained in the capture path; the resulting email is kept as an event record | Section 11 |
| Support correspondence | Up to 3 years from the last message | |
| Server and security logs | Up to 90 days, longer only where an incident is under investigation | |
| Backups | Roll off on their own schedule | A deletion propagates as backups cycle |
HeadzUp is a rider-awareness product. It does not prevent collisions and it is not a safety system. Ride aware, ride together.