Last updated

Privacy policy

TrapSpotter is a trading name of TrapSpotter BV.

1. Data controller

TrapSpotter is a trading name of TrapSpotter BV.

Address: Trekschurenstraat 245, 3500 Hasselt, Belgium

Company number (VAT): BE1031603017

Privacy / DPO email: privacy@trapspotter.com

General contact: contact@trapspotter.com

2. What data do we collect?

We collect the following data to provide and improve our services:

  • Account data: email address, username, telephone number, and password
  • Location data: GPS coordinates for real-time alerts along your route
  • Usage data: information about reports, routes, and preferences
  • Device data: device type, operating system, app version, and push token
  • Payment data: processed by Apple, Google, or Stripe; we do not receive card details
  • Communications: messages sent to our AI assistant or WhatsApp bot
  • Advertising and app identifiers: only with your consent, to show ads in the free version and to measure our own ad campaigns
  • Website and web-app visits: the pages you view and the campaign that brought you (utm_* parameters); Google Analytics cookies and Microsoft Clarity (heatmaps and masked session recordings) only if you accept them (see section 11)
  • Searches: what you type into map search
  • Map requests: when the app loads the map, our own map server receives your device’s IP address, the map area you are viewing and the type of device and app or browser (see sections 5 and 8)
  • Diagnostics: crash and error reports
  • Document photos: only if you use the document wallet; backed up, encrypted, to your account

3. Why do we collect this data?

  • To provide alerts, navigation, and community reports
  • To manage your account and subscription
  • To improve our app and services
  • To communicate about your account and important updates
  • To comply with legal obligations
  • To prevent fraud and combat abuse

4. Legal basis (GDPR Article 6)

We process personal data on the following grounds:

  • Consent for optional features such as push notifications, analytics, and marketing; consent can be withdrawn at any time
  • Performance of a contract to provide account access, subscriptions, and alerts
  • Legitimate interests in fraud prevention, security, product improvement, cookieless website statistics, and infrastructure protection
  • Legal obligations relating to tax records and lawful authority requests

More information

GDPR Article 6: https://gdpr-info.eu/art-6-gdpr/

5. Sharing with third parties (sub-processors)

We do not sell your data. We only share it with sub-processors that help deliver our services under GDPR-compliant agreements.

  • Supabase — database, authentication, and file storage using EU hosting in Stockholm (Sweden)
  • Hetzner Online (Germany) — hosting of our own servers for maps, routing, search and live alerts; receives the locations, routes and search terms needed to answer your request, with a hashed user key instead of your name. When the app loads the map, your device fetches it directly from our map server in Falkenstein, Germany (EU). That server receives your device’s IP address, the map area you are viewing (often the area around you) and the type of device and app or browser you use. We use this only to serve the map and to protect it against abuse (rate limiting), keep it in the server logs for at most 15 days, and do not combine it with your account
  • Stripe — web payments and subscriptions
  • RevenueCat — iOS and Android subscription management; receives your account ID and, to link purchases to your account, your email address, name and phone number
  • Apple — App Store payments, Sign in with Apple, push delivery via APNs, speech recognition when you dictate a message (Apple processes the audio), and, only with your consent to advertising measurement, Apple Ads attribution (AdServices): whether an iOS install came from an Apple Ads campaign
  • Google — Google Play payments, Google Sign-In, Firebase Cloud Messaging for push notifications, the Play Install Referrer (which campaign led to an install), app updates through Google Play, on-device text recognition for document scans (ML Kit, with the model delivered by Google Play services), and speech recognition on Android when you dictate
  • Google Analytics (Google Ireland Limited) — our own Google Analytics 4 property, linked to our own Google Ads account, measures visits to trapspotter.com and use of the web app at app.trapspotter.com. Without consent it receives only cookieless pings, with no cookie and no lasting identifier; with consent (the website’s cookie banner, or the web app’s own consent settings) it uses its cookies and, on the website, Google’s ad-measurement cookies. Email addresses and sign-in and unsubscribe tokens in page addresses are removed before they reach Google. See section 11
  • Microsoft Clarity (Microsoft Ireland Operations Limited) — heatmaps and session recordings of visits to trapspotter.com, only after you accept in the website’s cookie banner, so that we can see how the site is used and improve it. It receives the pages you view, clicks, scrolling and mouse movement, how the page looked, your device and browser type and a pseudonymous id; what you type, numbers and email addresses are masked in your browser, and the Mijn Boete form, the contact form and the newsletter form are masked completely, so their content is never sent. Microsoft acts as an independent controller for this data and may also use it for its own purposes under the Microsoft Privacy Statement. We do not use Clarity for advertising. The web app and the iOS and Android apps do not use Clarity. See section 11
  • Google Analytics for Firebase — in the iOS and Android app, measures which of our own Google Ads campaigns led to an install, a sign-up or a subscription. Only after you consent to product analytics does it use an app identifier, app events and, reported by our server, the start of your trial and subscription and its renewals, with the price; advertising use also needs your consent to advertising measurement. On iOS, with that consent, Google can match your email address or phone number, hashed on your device, against an ad you saw — on the device itself; it does not leave your device. Without consent the app sends only cookieless pings without any identifier (Google Consent Mode); see section 11
  • Google AdMob — advertising in the free version, only when ads are shown and only after you allow advertising measurement and then agree in Google's own consent form. AdMob may use your advertising ID, IP address and coarse location to select and measure ads. Premium subscribers see no ads and their data is not sent to AdMob
  • Meta — advertising measurement in the iOS and Android apps, only after you consent to advertising measurement; see section 11. The website and the web app run no Meta tracking. Messages to our WhatsApp bot pass through Meta's WhatsApp Business Platform
  • Mapbox — route calculation with live traffic and, as a fallback to our own servers, address search and turning coordinates into an address; receives route points, search terms and coordinates, not your identity
  • OpenAI via the Vercel AI Gateway — the AI assistant and the processing of reports you write. To answer, it receives your messages and, as context, your position, speed, current route and saved places (such as home). Your data is not used to train models
  • Twilio — the WhatsApp bot
  • CM.com — SMS one-time login codes
  • Resend — transactional email and the newsletter
  • Sentry (EU) — crash and error diagnostics (error type, app version, device model, and your user ID so we can match a crash to a support request)
  • Cloudflare — bot protection (Turnstile) during sign-in and sign-up, and on the website’s forms (newsletter, contact, Mijn Boete and the fleet demo request); on the website only once you use a form
  • Vercel — website hosting, the AI Gateway, and Vercel Web Analytics (cookieless, aggregate page-view counts on the website)
  • Uber — only if you order a ride from the app yourself: your pickup point and destination are handed to Uber

Legal requests

We share data with public authorities when required by law.

6. Your rights

Under the GDPR, you have the right to:

  • Access the data we hold
  • Correct inaccurate data
  • Request deletion (the right to be forgotten)
  • Restrict processing
  • Receive portable data in a structured format
  • Object to certain processing
  • Withdraw consent
  • Lodge a complaint with the Belgian Data Protection Authority

Submit a request

Email privacy@trapspotter.com. We respond within 30 days in accordance with the GDPR.

7. Security

We use appropriate technical and organisational measures, including TLS 1.3 in transit, AES-256 at rest, database-level row security, rate limits on sensitive endpoints, idempotent payment webhooks, and audit logs for subscription changes.

8. Retention

We keep data only as long as necessary:

  • Account and profile data: while your account is active; deleted immediately after account deletion
  • SMS and one-time password codes: expire after 10 minutes and are then deleted
  • Payment records: 7 years under Belgian accounting law
  • Community reports: their content may remain available to the community but is disconnected from your identity after account deletion
  • Anti-fraud data: up to 24 months in one-way hashed form
  • Map server logs (your device’s IP address and the map area viewed): at most 15 days
  • Suppression list: if you opt out or delete your account, we keep a one-way hash of your phone number so that we cannot message you again. We do not keep the number itself
  • Google Analytics data (website, web app, and the iOS and Android apps): 14 months
  • Microsoft Clarity (website): recordings 30 days — a random sample, and recordings we mark, up to 9 months; heatmap and click data 9 months (Microsoft’s retention)

9. International data transfers

Our primary infrastructure is located in the EU (Supabase in Stockholm, Sweden; our own servers at Hetzner in Falkenstein, Germany). Several sub-processors are established or process data outside the EU, mainly in the United States: Google (including Google Analytics, which we use through Google Ireland Limited), Microsoft (Microsoft Clarity, which we use through Microsoft Ireland Operations Limited), Apple, Meta, OpenAI, Stripe, RevenueCat, Twilio, Resend, Mapbox, Cloudflare, Vercel (including Vercel Web Analytics) and Uber. Transfers rely on appropriate safeguards:

  • EU Standard Contractual Clauses (SCCs)
  • The EU–US Data Privacy Framework, for providers certified under it
  • European Commission adequacy decisions where applicable
  • Additional safeguards required following the Schrems II judgment

More information

GDPR Article 44: https://gdpr-info.eu/art-44-gdpr/

10. Children

TrapSpotter is intended for drivers and is not designed for anyone under 16. We do not knowingly collect data from children below the GDPR age threshold. Parents or guardians can report a concern to privacy@trapspotter.com.

11. Cookies and tracking

Website (trapspotter.com). Google Analytics 4 runs on every page in Google Consent Mode. Until you choose, and if you reject, it sends only cookieless pings: no cookies and no lasting identifier. If you accept in the cookie banner, it sets the cookies _ga and _ga_GE50TQTHLK (13 months) and, because our Google Analytics property is linked to our own Google Ads account, Google’s ad-measurement cookies (such as _gcl_au, also 13 months), so that we can see which of our own ads bring visitors. It records the pages you view, taps on the store buttons and completed forms — never what you typed. Email addresses and sign-in and unsubscribe tokens in page addresses are removed before they reach Google. We keep Google Analytics data for 14 months; Google may process it in the United States under the EU–US Data Privacy Framework and Standard Contractual Clauses. Microsoft Clarity loads only if you accept in the same banner: before that, and if you reject, it is not on the page at all. It gives us heatmaps and session recordings of how the site is used, so that we can improve it; what you type, numbers and email addresses are masked in your browser, the Mijn Boete form, the contact form and the newsletter form are masked completely, and it is not loaded on the pages you open from a link in an email. It sets _clck (1 year) and _clsk (1 day) and the sessionStorage key _cltk; Microsoft may also set its own cookies on its own domains (such as MUID, CLID, ANONCHK, MR and SM). We tell Clarity that advertising use is not allowed. Rejecting after an earlier Accept stops Clarity and deletes _clck and _clsk. Microsoft keeps recordings for 30 days and heatmap data for 9 months, acts as an independent controller, and may process the data in the United States under the EU–US Data Privacy Framework and Standard Contractual Clauses.

The website also counts visits without cookies. Vercel Web Analytics counts page views in aggregate and stores nothing on your device. Our own statistics go to our servers at Supabase in the EU and use a hash that changes every day, plus three sessionStorage keys that are deleted when you close the tab: ts_sid (the visit), and ts_utm and ts_campaign (the campaign of this visit, used to tag the store links). The cookie trapspotter_cookie_consent stores your banner choice for 12 months; it is strictly necessary.

When you tap an App Store or Google Play button, the link passes the campaign of your visit (utm_* parameters and, if present, the ad click id) to Apple or Google, so that installs can be attributed to campaigns. The Smart App Banner that Safari on iPhone may show for our app is displayed by Safari itself. The website runs no Meta Pixel, no Google Tag Manager and no advertising pixel. Details are in the cookie policy (/cookies).

Web app (app.trapspotter.com). The web app reports to the same Google Analytics web stream, also with every consent signal denied by default. The website and the web app share one choice (the trapspotter_cookie_consent cookie on trapspotter.com): accepting or rejecting in the website’s banner also applies in the web app until you choose there, and in the web app ‘Allow’ counts as accepting on the website, ‘Analytics only’ or ‘Don’t allow’ as rejecting. In the web app you refine it with its own consent prompt and Settings → Analytics & Tracking: product analytics allows the Google Analytics cookies, and advertising measurement allows Google’s ad measurement. With product-analytics consent, Google Analytics measures page views and product events (account created, onboarding finished, navigation started and finished, report submitted, paywall shown), and when a web subscription starts or renews, our server reports it as a conversion with its value and currency, linked to the Google Analytics browser identifier. Without that consent the web app sends only cookieless pings. It runs no Meta Pixel, no Tag Manager and no Clarity. The website and the web app share the trapspotter.com domain and therefore the Google Analytics cookie: with consent on both, a visit to the website that ends in a sign-up is counted as one visitor.

The app, on every platform, uses localStorage — the same kind of technology as a cookie — to remember your preferences and your consent choice. That is necessary and sits outside consent. The iOS and Android apps use no browser cookies.

iOS and Android apps. If you consent to product analytics, the app runs Google Analytics for Firebase, which measures which of our own Google Ads campaigns lead to installs, sign-ups and subscriptions. Advertising use also needs your consent to advertising measurement. Until you choose, it sends only cookieless pings without any identifier. If you withdraw product-analytics consent, its identifier on your device is erased and our server stops reporting anything.

If you consent to advertising measurement, the Meta Pixel runs inside the iOS and Android apps and the Meta SDK forwards its events to Meta as native App Events. This measures advertising conversions such as sign-ups and subscriptions. It is the only Meta tracking we use anywhere — there is none on the website or in the web app.

On Android, the app reads the Google Play Install Referrer on first launch: the campaign the install came from. The ad click id in it is kept only with your consent to advertising measurement. On iPhone, with your consent to advertising measurement, the app asks Apple (AdServices) whether the install came from an Apple Ads campaign; Apple answers with campaign, ad group and keyword ids, without any device identifier, and we store the answer with your account. On every platform, if a campaign link (utm_* parameters) brought you to the app, we store that campaign with your account as sign-up attribution; ad click ids (such as gclid or fbclid) only with your consent to advertising measurement.

The free version can show ads from Google AdMob, which asks for its own consent in Google’s consent form; see section 5.

Consent is split: product analytics, advertising measurement and our newsletter are three separate switches under Settings → Analytics & Tracking. You can turn them on and off independently, and all three start off. The newsletter is offered when you create your account as a separate, unticked box; you do not have to tick it to use the app, and you can unsubscribe at any time using that switch or the link at the foot of every email.

12. Changes

We may update this privacy policy. The date at the top indicates the latest revision. Material changes will be announced by email or an in-app banner.

Business seats: TrapSpotter Teams and Fleet

Your employer or the business that engages you (the company) can give you a seat. You then get TrapSpotter Premium for as long as the seat is active, with your own TrapSpotter account.

Who is responsible. For your account and your use of the app (alerts, navigation, reports, Premium), TrapSpotter remains the controller, as set out in this privacy policy. For the data in the company's console, the company is the controller and TrapSpotter processes that data on its behalf, under a data processing agreement (Article 28 GDPR). The company must inform you in advance about what it does with that data.

What the company sees with Teams. The details it entered about you itself (name, email address and, if it entered them, phone number, job title and employee number), whether you accepted the invitation, your seat and its invoices. In addition:

  • the vehicle it assigns to you, with its papers and their scans, which you also see in the app;
  • the receipts you submit, with a photo;
  • a traffic fine it registers with you, and your answer to the question whether you were driving (see below).

The company's clients appear when you search in the app; the company does not see whether you look them up or drive to them. Teams does not record workdays, trips, positions or hours. The company does not see where or when you drive, which alerts you receive or report, your saved places, your searches, your own documents in the app or your messages to the assistant, nor whether and when you use the app.

What the company sees with Fleet. Everything in Teams and, in addition, only between "Start workday" and "Stop workday" and, if the company sets work hours, only within those hours:

  • your workdays (start and end) and the vehicle or your own car;
  • your trips: departure, arrival, the route taken, the distance and the client;
  • for a trip you make private, only the time and the distance: the places, the route and the client are permanently erased;
  • your live position, only if the company switches that feature on: at most once a minute, only during a workday, and erased after 30 minutes. You can see in the app whether it is on;
  • for a fine, the trip that shows who was driving the vehicle at that moment;
  • the mileage statement and the hours calculated from this data.

Outside a workday, the app records nothing for the company. A workday that you forget to stop ends automatically after the number of hours the company chose, and at the end of the work hours. The company never sees your saved places, your own documents in the app, your messages to the assistant, the alerts and reports in the app, or your own payments.

Police checks. On a business seat, police checks are shown by default. The company can switch them off; they are then hidden (with Teams always, unless you also pay for Premium yourself; with Fleet during a workday).

Legal basis. We use your seat to give you Premium, as performance of the contract with you (Article 6(1)(b) GDPR). For the data in the console, the company determines the legal basis.

When the seat stops. If you leave the company or the company removes you, your seat and its Premium stop. Your TrapSpotter account continues to exist. The work data the company already had stays with the company for as long as it needs it, and at the latest until the end of its subscription plus the period in the data processing agreement. If you delete your TrapSpotter account, your membership ends; the work data is no longer linked to your account, but the company may keep it as an employer.

Your rights. For the data in the console, contact the company. If you send your request to privacy@trapspotter.com, we will pass it on to the company and help it to respond.

Confirming a fine

If the company receives a traffic fine for a vehicle, it can register the fine with you and ask you in the app whether you were driving that vehicle at that time: with Teams because the vehicle is assigned to you (Teams records no trips, so that is not proof that you were driving), with Fleet because your trip at that moment shows it. You then receive a notification and see the question on the Work page.

  • Data: the number plate, the date, time and place of the offence, the reference, and your answer (yes or no); with Fleet, also the trip.
  • Who decides: the company is the controller. It decides whether to designate you to the authorities as the driver. Where the law requires the company to designate the driver (in Belgium within 15 days, in Luxembourg and France within 45 days), that is the legal basis.
  • Sensitive data: data about traffic offences is data relating to criminal offences (Article 10 GDPR). Only the company's owner and managers see it.
  • Retention: automatically erased after the period of the company's country: in Belgium, 24 months after the offence; in France and Luxembourg, 45 days after the date of the letter (without that date, 90 days after the offence); in the Netherlands and Germany, 30 days after the company closes the fine, and otherwise at the latest 24 months after the offence. The company can erase it earlier.

Partner codes

If you redeem a code from a partner (at trapspotter.com/code), we store with your account which partner and which batch the code comes from, when you redeemed it and until when your Premium runs. We use this to give you the Premium, to show "Premium via [partner] until [date]" and to compile counts.

  • Legal basis: performance of the contract with you (Article 6(1)(b) GDPR).
  • What the partner sees: only counts (issued, redeemed, active). Never your name, your email address or the fact that you redeemed a code.
  • Retention: for as long as your account exists. If you delete your account, only an anonymous count remains.

Premium Yearly

In addition to monthly Premium, there is Premium Yearly (€39.95 per year), through the App Store, Google Play or our website (Stripe). We process no data beyond what we process for a monthly subscription: payment is handled by Apple, Google or Stripe, and we do not receive any card details. We store with your account whether your Premium is monthly or yearly and through which product, to show your subscription and for our revenue figures. A yearly subscription renews automatically unless you cancel it in accordance with the rules of the store where you bought it; you can withdraw from a subscription taken out on our website within 14 days, as set out in the terms and conditions.

13. Contact and complaints

Privacy / DPO email: privacy@trapspotter.com

Address: Trekschurenstraat 245, 3500 Hasselt, Belgium

You may lodge a complaint with the Belgian Data Protection Authority at https://www.dataprotectionauthority.be/ if you believe we are processing your data incorrectly.