Privacy Policy
1. Introduction
This Privacy Policy describes how Camp Four Software LLC, a Michigan limited liability company, PO Box 7238, Ann Arbor, MI 48107 ("Camp Four Software," "Company," "we," "us," or "our"), operating the Trackless Telemetry platform ("Service"), collects, uses, discloses, and safeguards information in connection with the Service. The Service consists of two distinct components:
- SDK Telemetry -- Software development kits ("SDKs") embedded in our customers' applications that collect anonymous, aggregate event data from end users of those applications ("End Users").
- Dashboard -- A web-based management interface at dashboard.tracklesstelemetry.com used by our customers ("Dashboard Users" or "Customers") to configure applications, manage API keys, view aggregate analytics, and manage their accounts.
Contact: privacy@tracklesstelemetry.com
2. Data Controller
Camp Four Software LLC is the data controller for Dashboard User account data. For SDK telemetry data, Camp Four Software acts as a data processor on behalf of our Customers, who are the data controllers. The Data Processing Agreement (available at tracklesstelemetry.com/dpa) defines the respective responsibilities.
3. SDK Telemetry -- End-User Data
3.1 What We Collect
Our SDKs collect the following categories of data, all pre-aggregated on the client device before transmission:
| Data Element | Description | Source |
|---|---|---|
| Event name | Developer-defined label identifying the event tracked | Application code |
| Count | Number of times an event occurred within the aggregation window | In-memory counter |
| Date | UTC calendar date on which the event occurred | System clock |
| Platform | ios, macos, android, or web | Hardcoded per SDK build |
| OS version | Version number (e.g., 17, 17.4) | Operating system API |
| Device class | phone, tablet, or desktop | Platform-specific heuristic |
| Locale | ISO 3166-1 alpha-2 country code from device locale | Device locale API |
| Language | ISO 639-1 language code (e.g., en, fr, de) | Device locale API |
| Browser | Browser family (e.g., chrome, safari, firefox, edge, other) | User agent client hints API |
| OS | Operating system family (e.g., macos, windows, linux, android, ios, other) | User agent client hints API |
| App version | Developer-provided application version string | The app's own Info.plist (Apple platforms) or manifest (Android); SDK configuration (web) |
| Build number | Developer-provided build number | The app's own Info.plist (Apple platforms) or manifest (Android); SDK configuration (web) |
| SDK version and environment | SDK platform and version (e.g., web/0.5.1); sandbox or production | SDK configuration. When the developer does not set an environment: the debug-build flag compiled into the app (iOS, macOS, Android); on the web, whether the page's own hostname is localhost, a *.localhost name, a 127.x.x.x address, [::1] or 0.0.0.0 (sandbox) or anything else (production), compared in memory — the hostname itself is not sent |
| Detail | Optional event sub-type for views and features | Developer-provided |
| Code | Optional code on an error event (e.g., an HTTP status code), or value on an info event (e.g., a configuration setting the session ran under) | Developer-provided |
| Level | One of two stored levels on an error or info event: error or info | Developer-provided |
| Funnel step | The name of a step in a funnel and its position in that funnel | Developer-provided |
| Duration | Elapsed seconds on a performance metric, with the optional threshold the developer set for it | Developer-provided |
Install date and install source. The SDKs do not read when or how the app was installed, and send no distribution channel. Neither a days-since-install figure nor a distribution channel is stored.
We do not store individual event records. All telemetry is stored as pre-aggregated daily counts.
3.2 What We Do NOT Collect
- User identifiers -- No user IDs, account IDs, or login identifiers
- Device identifiers -- No device IDs, install IDs, or hardware identifiers
- Advertising identifiers -- No IDFA (Apple), GAID (Google), or SSAID
- Session identifiers -- No session IDs. Bucketed session duration and session depth (events per session) are collected as aggregate counts (not individual session records). No session identifiers are collected.
- IP addresses -- Never read, parsed, stored, or processed by application code
- Hashed IP addresses -- We do not hash, truncate, or derive data from IP addresses
- Full user agent strings -- Never transmitted to our servers
- Exact device models -- The SDKs never read a device model. A Customer may choose to report one itself as a developer-defined info value; it is then stored as an aggregate count, like any other value the Customer defines
- Screen resolution, fonts, GPU, timezone -- No high-entropy device attributes
- Geolocation data -- No GPS, cell tower, Wi-Fi, or IP-based geolocation
3.3 No Persistent Client-Side Storage
Web SDK: Zero client-side persistence. No cookies, localStorage, sessionStorage, or IndexedDB. All aggregation occurs in volatile memory.
iOS, macOS, and Android SDKs: Zero device persistence. All aggregation occurs in volatile memory. No telemetry data is written to the device filesystem.
3.4 No Fingerprinting
We collect only coarse, low-entropy device attributes. The combination of platform, OS major version, and device class does not provide sufficient entropy for device fingerprinting. Cardinality budgets prevent abuse through high-cardinality dimension combinations.
3.5 Legal Basis (GDPR)
Legitimate interests of the Customer -- Article 6(1)(f) GDPR. The Customer's legitimate interest in understanding aggregate event usage patterns constitutes the legal basis for SDK telemetry processing. No personal data identifying any individual End User is collected or stored.
4. Dashboard -- Customer Account Data
4.1 What We Collect
| Data Element | Purpose | Retention |
|---|---|---|
| Email address | Account authentication, service and billing emails, and a new-account notice to our operations inbox (Section 4.3) | Until account deletion |
| Password (hashed) | Authentication (managed by AWS Cognito) | Until account deletion |
| Application names | Service functionality | Until deleted by customer |
| API key metadata | Service functionality (full key is SHA-256 hashed) | Until deleted by customer |
| Sign-in tokens (stored in your browser) | Keeping you signed in to the dashboard (Section 5) | Access tokens expire after 1 hour and the refresh token after 30 days. Removed from your browser when you sign out. |
| Terms acceptance record | Recording which version of the Terms of Service you accepted, and when you accepted an update | Until account deletion |
| Email preferences and account creation date | Honoring your notification choices | Until account deletion |
| Sign-in security signals | Protecting accounts from takeover (Section 10) | Held by Amazon Cognito as part of its sign-in event history |
| Subscription metadata | Billing and tier enforcement | Until account deletion |
| Usage counters | Tier limit enforcement (no event names or dimensions) | 395 days after period end |
4.2 Legal Basis
Contract performance -- Article 6(1)(b) GDPR. Processing is necessary for the performance of the service agreement: creating and securing your account, keeping you signed in, providing the dashboard, billing, and sending the service emails you choose to receive.
Legitimate interests -- Article 6(1)(f) GDPR. We rely on our legitimate interests in keeping the Service secure and running it responsibly for: (a) sign-in threat protection (Section 10); (b) notifying our operations inbox of each new account, to operate the Service and detect abusive or fraudulent sign-ups (Section 4.3); (c) receiving notices of undelivered or rejected emails and spam complaints, so we stop sending to addresses that bounce and protect our ability to deliver email (Section 4.3); and (d) keeping a record of which version of the Terms of Service you accepted. You may object to processing based on legitimate interests at any time by contacting privacy@tracklesstelemetry.com.
4.3 Operations Inbox Notifications
When you confirm a new account, the Service sends an email containing your email address and the time you signed up to our internal operations inbox. We use it to operate the Service and to spot abusive or fraudulent sign-ups.
When an email we send cannot be delivered, is rejected, or is marked as spam by its recipient, Amazon SES reports the event to the same inbox. The report is the full Amazon SES delivery notification. It includes the recipient's email address, the subject line of the undelivered email, and delivery diagnostics. Our weekly digest and alert emails put the finding in the subject line, so a report about one of them can carry an application name, a feature, funnel, or metric name, and a change such as "up 40%" into that mailbox.
Our operations inbox is hosted by Fastmail (Section 8). These messages are not used for marketing, and they are not shared with anyone else.
5. Cookies and Similar Technologies
SDKs: Zero cookies, zero client-side storage of any kind.
Our own sites: The Trackless marketing site and the dashboard run the Trackless web SDK themselves. It sends our own API the same kind of aggregate telemetry described in Section 3 and stores nothing in your browser; the dashboard's own sign-in and settings storage is listed below.
Dashboard: The dashboard sets no cookies. It uses your browser's local storage and session storage, which can hold personal data about you on your device:
- Sign-in tokens issued by Amazon Cognito, which contain your account ID and email address. The access token expires after 1 hour, and the refresh token keeps you signed in for up to 30 days. Signing out removes them.
- Passkey sign-in memory -- the email addresses that have signed in with a passkey in this browser, so the sign-in screen can go straight to the passkey prompt. An address is removed when you choose to sign in with a password instead, or when you delete your last passkey.
- Onboarding progress -- getting-started checklist and setup-wizard state, stored under your account ID.
- Display preferences -- sidebar collapsed state, the selected date range, and dismissed usage and app-limit banners.
- Two session-storage entries, both cleared when the tab closes: a flag, stored under your account ID, recording that pending team invitations were already shown in this browser session; and, only when an open dashboard tab reloads itself after a Trackless update, the time of that reload, so the tab does not reload in a loop.
None of this storage is used for analytics, advertising, or cross-site tracking, and none of it contains telemetry data. Apart from the sign-in tokens, it stays on your device until you clear this site's data in your browser.
Third-party cookies: None.
See our Cookie Policy for full details.
6. Data Retention
| Data Type | Retention Period |
|---|---|
| Aggregate analytics data | Default 13 months (auto-deleted via TTL) |
| Dashboard account data | Until account deletion |
| Stripe customer record (paid plans only) | Not deleted when you delete your account. We cancel any active subscription and delete our own record of your Stripe customer ID; Stripe keeps the customer record (email address, Trackless account identifier, payment method details, invoice and payment history) under its own privacy policy and legal obligations. |
| API keys (hashed) | Until deleted by customer or account closure |
| Usage metering records | 395 days after period end |
| Operational logs (may include your account identifier) | 90 days, including after account deletion |
| Operations inbox notifications (new accounts, email bounces) | Until deleted from the inbox |
| Dashboard sign-in tokens (your browser) | 1 hour (access), 30 days (refresh); removed on sign-out |
| Raw event payloads | Not stored |
| IP addresses | Never processed by application code |
7. IP Address Processing
Application code never reads, parses, stores, or processes IP addresses for any purpose. This covers SDK telemetry and our own dashboard code. Locale data is derived exclusively from the device's system locale setting.
AWS infrastructure services process IP addresses as part of operating the Service: routing network traffic and protecting it against denial-of-service attacks. For dashboard sign-in only, Amazon Cognito threat protection also uses the IP address of a sign-in request, and an approximate location derived from it, to assess the risk of that sign-in (Section 10). SDK telemetry traffic never passes through Amazon Cognito, so no End User's IP address is used for this, and IP addresses are never used for analytics.
8. Sub-Processors
| Sub-Processor | Role | Data Received |
|---|---|---|
| Amazon Web Services (AWS) | Infrastructure provider | All Service data (hosted in us-east-1) |
| Stripe, Inc. | Payment processor | User identifier, email, payment info only |
| Fastmail Pty Ltd | Email hosting | Emails sent to our tracklesstelemetry.com mailboxes: messages you send us, new-account notifications (email address, sign-up time), and email delivery-failure and spam-complaint notices (recipient address, subject line, delivery diagnostics) |
No data is shared with advertising networks, analytics providers, or data brokers. A public sub-processor list is maintained at tracklesstelemetry.com/subprocessors.
9. Data Subject Rights (GDPR)
9.1 Dashboard Users
- Right of access (Article 15): View and export all account data through the dashboard.
- Right to rectification (Article 16): Update account information through the dashboard.
- Right to erasure (Article 17): Permanently delete your account through Account Settings. Deletion removes your applications, API keys, analytics data, usage and subscription records, and sign-in account. It does not remove the customer record Stripe holds if you subscribed to a paid plan: your email address, your Trackless account identifier, payment method details, and invoice and payment history stay with Stripe under its own privacy policy and legal obligations (Section 6). Operational logs that include your account identifier are not purged when you delete your account; they expire within 90 days.
- Right to data portability (Article 20): Export all data in JSON format.
- Right to restrict processing (Article 18): Deactivate API keys to stop collection.
- Right to object (Article 21): Contact privacy@tracklesstelemetry.com.
- Right to lodge a complaint (Article 77): Contact your local data protection supervisory authority.
9.2 End Users of Customer Applications
Trackless stores only aggregate statistical counts that cannot be attributed to any individual End User. This is consistent with GDPR Article 11 (processing which does not require identification) and Recital 26 (anonymous information).
10. Automated Decision-Making
SDK telemetry: No automated decision-making or profiling. Telemetry is stored only as aggregate counts that cannot be attributed to an individual.
Dashboard sign-in: To protect accounts from takeover, we use Amazon Cognito threat protection. Each sign-in is automatically assigned a risk level, based on signals from the sign-in request: the IP address, an approximate location derived from it, and browser and device information sent with the request. Depending on the risk level, Cognito may block the sign-in or ask for an additional verification step. Cognito may also check a password you set, when you sign up or change it, against lists of passwords exposed in public data breaches, and block its use. Cognito keeps a record of sign-in events and their risk assessment.
The legal basis is our legitimate interest in keeping accounts and the Service secure (Article 6(1)(f) GDPR). These decisions only affect whether a single sign-in attempt proceeds. If you believe a sign-in was blocked in error, contact support@tracklesstelemetry.com and a person will review it.
11. CCPA / CPRA (California Privacy Rights)
The aggregate telemetry data does not constitute "personal information" under CCPA as it contains no identifiers and cannot be linked to a consumer or household. Dashboard account data is personal information; California residents may exercise their rights by contacting privacy@tracklesstelemetry.com.
Camp Four Software does not sell or share personal information as defined under CCPA/CPRA.
12. International Data Transfers
All Service data is hosted in AWS us-east-1 (Northern Virginia, United States). Camp Four Software LLC is not certified under the EU-US Data Privacy Framework. For transfers of personal data from the EU/EEA to the United States, we rely on the Standard Contractual Clauses adopted by the European Commission (Implementing Decision (EU) 2021/914).
Our sub-processors apply their own safeguards to the data they process for us. AWS and Stripe offer Standard Contractual Clauses in their data processing terms. Our mailboxes are hosted by Fastmail Pty Ltd, an Australian company, on a standard business plan covered by Fastmail's data processing agreement, which incorporates the same 2021 Standard Contractual Clauses. Fastmail operates data centers in the United States and the Netherlands.
13. Data Security
- Encryption in transit (HTTPS/TLS, minimum TLS 1.2)
- Encryption at rest (AWS-managed keys)
- API keys SHA-256 hashed before storage
- Tenant isolation via owner-based authorization
- Per-key and per-owner rate limits
- Minimal operational logging (no request bodies, no IP addresses)
- Role-based access controls and IAM policies
14. Children's Privacy
The dashboard is not directed at children under 13 and we do not knowingly collect personal information from children under 13. Because the SDKs collect no personal information, COPPA verifiable parental consent requirements do not apply to aggregate telemetry data.
15. Changes to This Policy
We may update this Privacy Policy from time to time by posting a revised version with an updated "Last updated" date. We will give reasonable advance notice, by email or in the dashboard, of a change that materially expands what we collect or how we use it. Other changes, including corrections and descriptions of new features, take effect when posted.
16. Governing Law
This Privacy Policy is governed by the laws of the State of Michigan, United States.
17. Contact
Camp Four Software LLC
PO Box 7238, Ann Arbor, MI 48107
Privacy Inquiries
Email: privacy@tracklesstelemetry.com
Appendix: Known Privacy Limitations
In the interest of transparency, we disclose the following inherent limitations of any aggregate counting system:
- Temporal correlation risk. An adversary with auxiliary knowledge could observe day-over-day count changes to infer individual behavior. This is mitigated by aggregation across all matching users.
- Cross-feature behavioral fingerprinting. For apps with small user bases, the pattern of which features are used could theoretically narrow the anonymity set.
- Dimension thin slices. Uncommon dimension combinations may result in small populations within a given aggregate row.