Privacy at Signavo
Signavo tells you when to get ready. To do that, we need to know who you follow, and we need to be able to reach your phone. Here is exactly what we store, where it lives, for how long, and what happens when you stop.
There are no ads in the app, no tracking, no analytics, and we sell nothing on. That is not a statement of intent: the app talks only to our own server, our database and Expo's update service. The one exception is the timing system's sign-in page, and only if you choose to link your account there (see "Linking your account in the timing system"). On the website we do count visits (see "Cookies and visit statistics").
The RevenueCat SDK is included in the app, but it is not configured and collects nothing. No analytics, no adverts.
Who is responsible
Stormosegaard (CVR no. 33797095), Kringelhusvej 6, 7100 Vejle, Denmark. Write to hej@signavo.dk with questions, access requests or deletion.
Your account
You sign in with your email address and a one-time code we send you. There is no password to forget and none to steal. We store your email address, a user id, when the account was created and which language the app is set to, so our emails reach you in your language. Not your phone number, and not your name unless you choose to link your account in the timing system (see below).
Once your account has been created, we send you one welcome email from hej@signavo.dk. It tells you how to get started and how to reach us. Your account does not give us permission to send you adverts or news. That takes a separate yes, see "News by email".
When you sign in, our sign-in provider, Supabase, stores your IP address, what kind of device and browser you use, and when you last signed in. That stays until you delete your account. Signing out of the app does not remove it at present. Supabase also keeps its own log of sign-ins and traffic, with IP address and email. How long that log is kept is up to Supabase, not us.
What you follow
When you tap Follow, we create one follow per start. For each of them we store on our server:
- which class and which start on the organiser's start list it is, and the rider's id with the organiser
- a key to your phone so the message can find you (see "Notifications")
- when you opened up for messages — either by tapping the button or by arriving at the showground
- your own choices: when you want the warm-up nudge, whether you follow as the rider or as a helper, and which language the messages should be in
When you follow someone else
If you follow your child, someone you are helping, or someone you just want to watch, we store that rider's name. The name is already on the show's public start list, but it is still information about another person, and that is why it is written here.
We use the name to phrase your messages correctly ("Malene is up next" rather than "You're up next"), for the result in your history, and on a share link if you make one. We do not write to the rider, and we do not build a profile on her. Her first name and the horse's name are in the message itself, which goes through Apple (see "Notifications"). How long the name stays with us is under "Riders on the start list" further down.
Find me on start lists
Turn on "Find me on start lists" in Settings and we look for one name on the start lists for Danish shows that begin within about a week. It is your own name or your child's. It stays off until you turn it on, and you turn it off in the same place.
When an organiser changes a start list, we fetch it, look for the names users have asked us to find, and forget the list again. We do not keep start lists for this. We stop looking at a show once it has begun.
If we find the name, or one that looks like it (same first name and last surname), the app asks whether it is you. Say yes and you follow the starts like any other follow. Say "That's not me" and we never offer that rider again. Once you have said yes, you can ask us to follow that rider's new starts automatically.
What we keep:
- that the feature is on, and when you turned it on
- the name you are looking for (it is also under My names)
- the starts where the name appeared: show, class, time, horse, and the name and club as on the start list
- the rider's id with the organiser for each find, and for the finds you said yes or no to, and whether we may follow new starts automatically
- a key to your phone, if you have allowed notifications, so an automatic follow can notify you
We do this because you asked us to (consent, GDPR art. 6(1)(a)). You withdraw consent by turning it off, and we then delete the finds and the key straight away. If you are looking for your child's name, you give the consent as the parent.
The finds are deleted at the latest two days after the show's last day. Say "That's not me" and the finds for that rider are deleted straight away. The name and your answers stay until you delete the name or your account.
Notifications
Messages are delivered through Apple's push service (APNs). For that we use a key your phone gives us — a long random string that can only be used to send messages to that one app on that one phone. The lock-screen panel that counts down while you wait has its own key of the same kind.
We keep a log of which messages were sent to which follow and when, with the text of the message, and whether they arrived. The text contains the rider's first name and the horse's name. Without the log the question "did I get that message?" cannot be answered, and that is precisely the question that matters on the day something goes wrong. The log is deleted automatically after 90 days.
An older part of our server can send through the ntfy.sh service instead. The app does not use it — it always chooses Apple — but the option exists in the code, and if it were used, the message title and text would pass through ntfy.sh's servers. We name it here rather than pretend it isn't there.
What we measure during the beta
Signavo is in beta. We have had very few users, and we have a couple of decisions to make about what to build on next. So during this period we store four more things about your account. They are written here so that you can read them rather than discover them.
- Whether an Apple Watch is paired with your phone, and whether Signavo is installed on it. Two yes/no answers. If the phone cannot answer, the fields stay empty. We ask your phone, not the watch, and we ask when notifications are switched on for a start, including when the app does it for you because you have arrived at the venue. We do not get the watch's name, its serial number, or anything about what else you use it for. The watch does read your heart rate while you ride, and saves the round to Health on the watch. That belongs to the watch app, not to this measurement, and neither the heart rate nor the round is ever sent to our server.
- When we measured it. A timestamp, set by our server. Without it, an answer from last season would count as if it were from today, and the number would mean nothing.
- Where your invitation came from. A short word, for example
klubormalene, which we ourselves put into the link we ourselves sent you. The app reads the word from the link and passes it on to us as it stands. It says where we found you, not who you are. It can only be written to your account while you are signed in, and only once: the first word to arrive is the one that stays. We do not check that the word is genuine. We lowercase it and require it to have the right form, so it is an indication of where you came from and not a proof. If you arrived without such a link, the field stays empty.
The word from the link sits on your phone from the moment you open the link until there is an account to write it to. It stays in the app afterwards, but both signing out and deleting your account clear it from the phone. If you do neither, it stays until you delete the app.
Why we do this at all: we need to know whether building further on the watch makes sense before we spend a season on it. And we need to see whether the answers come from a wide circle or from our own friends, because otherwise we are only measuring ourselves.
This does not change the sentence at the top of this page. There is still no tracking and no analytics in the app. These four things sit in our own database at Supabase, exactly like the rest of your account — see the processors listed below. They go to no analytics company, they do not follow you into other apps or out onto the web, and we build no profile on you. They are four fields on your account, not a measurement tool.
They belong to the account and go with it. Delete your account and they are deleted along with everything else, as described under "When you delete your account".
The fields were made for the beta period. If they outlive it, this section stays with them, and the date at the bottom says when the text was last changed.
Your results
Once you have gone, we pick up the result from the organiser's timing system and store it so your history is there afterwards: show, class, horse, faults, time, percentage and placing. The same happens for the starts you follow for someone else, such as your child's. These are the same figures that appear on the show's public result list. The results stay on your account until you delete it. You can also delete a single result yourself: press and hold it on Results in the app. We then delete it and stop your follow of that start, so the result is not picked up again. A backup from before the deletion may contain it for up to six months. If you stop following a start, its result stays.
Showgrounds and notes
You can favourite a show, save a private note about a venue, and you can help correct a venue's position on the map if it is wrong. The note is yours alone. The position, on the other hand, stays as shared knowledge if you delete your account — but your name is removed from it, so nobody can see who set it.
Your address and your location
You can enter your home address so the app can work out when to leave. It is optional, and the app works without it.
- The address stays on your phone. We do not store it in the database.
- To find the coordinates we send the address as text, through our own server, on to OpenStreetMap's address service (Nominatim). It is the single heaviest lookup in the app, which is why it is here and not in a footnote. We do not store the answer on the server.
- To work out the driving time we send two sets of coordinates only — your home and the showground — to the routing engine OSRM. No address, no name, no user id. The answer is cached for 24 hours at Cloudflare's edge, keyed on the coordinate pair, so we do not ask twice for the same journey.
- The address and the coordinates reach our server as part of the request, so our server log at Cloudflare may contain them for up to 7 days.
If you turn on arrival by GPS, your phone draws an invisible 400-metre circle around the showground and tells the app when you drive into it. The app then opens up for queue messages by itself, so you don't have to remember to tap. It is iOS that watches — we do not receive your location, neither continuously nor on arrival. The only thing stored is a date on your phone, so you are not welcomed twice on the same day. You can turn it off again in Settings or in iOS.
Where the start lists come from
Start lists, classes, times and results come from the organiser's timing system, the same one the show office types into. We send nothing about you to the organiser or to the system behind it; if you link your account there yourself, we use your key to fetch your name and nothing else, we never write (see the next section). We read the same public start list that is pinned to the wall in the show office.
Signavo is a product of its own and is not made by the company behind the timing system.
Riders on the start list, including those who don't use Signavo
Start lists and result lists are public. The organiser publishes them, and they are pinned to the wall in the show office. When someone follows a start in Signavo, we fetch the class's list, and that brings other riders' names into our systems, children's too. If someone has turned on "Find me on start lists", we also read the start lists for Danish shows that nobody follows yet and look for the names users are looking for. Here is what, why and for how long.
| What | Why | How long |
|---|---|---|
| The whole class's start and result list, as the organiser shows it: names, club, horse, start number, times and placing | The queue depends on every start in the class, and once the class has finished we show the list without asking the organiser again | Kept at Cloudflare and deleted 7 days after the class has finished. If the class is opened later, we fetch the list again for that view without storing it |
| The rider's id with the organiser, on a follow | So the message finds the right start | With the follow: about a month after the show's last day, or straight away when the follow is stopped. If we cannot look the show up, until the follow is stopped or the account deleted |
| The rider's first name and horse in a sent message | So we can answer "did I get that message?" | 90 days |
| A name someone has asked to hear about in a start-list alert | So we can tell them when the name is on the start list | Until the message has been sent, or the day after the show, at most 30 days |
| The result for a start someone has followed | For the history in the follower's app | Until the follower deletes the result or their account |
| The rider's name, if the follower has saved it | So the app can find the rider again | Until the follower deletes the name or the account |
| A start under a name a user is looking for with "Find me on start lists", also when it is another rider with the same or a similar name: show, class, time, horse, name and club, the rider's id with the organiser | So the user can say whether it is her | Until the user says "That's not me", otherwise at most two days after the show's last day. The other names on the list are not kept |
| The rider's id with the organiser, on a share link. The link shows first name, horse and queue | So a helper can follow along without an account | The link only works until midnight the same day. The share link itself is deleted 30 days after it expires |
| All of the above except the class list at Cloudflare, in our backups | So we can restore the service after a failure | Up to six months |
Our legal basis here. The riders on the list have not said yes to Signavo themselves. We process their information because we have a legitimate interest in it (GDPR art. 6(1)(f)): that whoever follows a start can find out when it is coming up, and see the result afterwards. The balance we strike is this: the information is already public at the organiser, we do not write to the riders, we build no profiles on them, and we sell or share nothing for advertising. The same applies when "Find me on start lists" finds another rider with the same or a similar name: the interest is that the user can see whether it is her. We keep only the start that matched the name, and delete it when the user says "That's not me", or at the latest two days after the show's last day. The other names on the list are not kept.
For riders and parents. If your name or your child's is in Signavo because someone else follows you, write to hej@signavo.dk. Within 30 days we will delete the name, the rider's id and the follows, results, messages, share links and finds from "Find me on start lists" that go with it from our database. You can also object to us processing the information. Our copy of the class's start and result list at Cloudflare deletes itself 7 days after the class has finished. Backups are deleted automatically after up to six months. We cannot change the organiser's own start list; that belongs to the organiser.
Linking your account in the timing system
You can link your account with the timing system to Signavo, so the app knows who you are there. It is optional, and the app works without it.
How it works: your phone opens the provider's own sign-in page in a browser, and you sign in with them, not with us. We never see your password there. The provider sends a one-time code back to our server, which exchanges it for access keys and fetches your name, if the provider gives us one. We ask for read access only, never write access, and not your email. Signavo can therefore never change anything on your account there.
On your Signavo account we store your user id with the provider, your name there, the status of the link and when it was made. The access keys are stored encrypted at Cloudflare, separately from the database, and they are not shared with anyone but the provider itself; the app does not see them.
If your account is linked, the app suggests your name from there when you turn on "Find me on start lists". You correct it and turn it on yourself. And we usually start looking straight away rather than the next morning.
You unlink in Settings. We then revoke the keys with the provider and delete them, and the four fields are cleared. If you delete your account, the same happens automatically.
What your phone stores
Some things live only on your phone and never reach our database:
- your home address and its coordinates
- your other settings and your sign-in key
- a temporary copy of the show list, so the app can show something with no signal
- the watch's rounds, with time and heart rate
The phone also keeps its own list of who you follow, with names, horses and times. The server has the part described under "What you follow".
If you delete your account, the phone's own copy is cleared with it. If you sign out, it is cleared too, except your language choice and your settings, which stay on the phone. The watch's rounds with heart rate do stay, though: the app's own list on the watch and the phone until you delete the app, and the round in Health until you delete it yourself in the Health app.
How long we keep things
| What | How long |
|---|---|
| The message log, with the text of each message | 90 days, then deleted automatically |
| Follows | About a month after the show's last day, or straight away when you stop or delete the result for the start. If we cannot look the show up, until you stop or delete your account |
| Start-list alerts | Until the message has been sent, or the day after the show. If the app does not know the show's last day, at most 30 days |
| Share links | 30 days after they expire. The link itself only works until midnight the same day |
| Account, results (also for starts you follow for others), saved rider names, favourites, notes | Until you delete your account. You can also delete a single result in the app |
| Find me on start lists: the finds | At the latest two days after the show's last day, or straight away when you say "That's not me" or turn the feature off |
| Find me on start lists: your answers, and whether we may follow automatically | Until you delete the name or your account |
| Find me on start lists: the key to your phone, and when you turned it on | Until you turn the feature off or delete your account |
| Sign-in at Supabase: IP address and device type | Until you delete your account. Signing out does not remove it at present |
| The beta measurements: watch, measurement time and invite source | Until you delete your account |
| The link to the timing system, access keys included | Until you unlink or delete your account |
| The classes' start and result lists at Cloudflare | 7 days after the class has finished |
| News by email, confirmed | Until you unsubscribe |
| News by email, never confirmed | No deletion deadline at present. Write to us and we will delete it |
| The tags from the link on a sign-up for news by email | No later than six months after you signed up, or until you unsubscribe if that comes first |
| The welcome email in our sent mail | 12 months. Write to us and we will delete it sooner |
| Other emails between you and us in our mailbox | No fixed deletion deadline at present. Write to us and we will delete them |
| Our server log at Cloudflare | Up to 7 days |
| Visit statistics for the website at Cloudflare | The full measurements for 7 days, then a sample of around 10 per cent. We can see the figures for the last six months. Cloudflare gives no fixed deletion date for the sample. Under its data processing agreement it is deleted at the latest when our agreement with Cloudflare ends |
| Supabase's own logs of sign-ins and traffic | Up to Supabase |
| Resend's own log of the emails we send: sign-in codes, news emails and messages from the contact form | 30 days, set by Resend |
| Backups | Nightly copy, the oldest kept up to six months |
Deleting the message log, follows, share links and the tags from the link runs every night once that night's backup is made. If the backup fails, it waits until the next night.
When you delete your account
You delete the account in the app under Settings. That removes in one go: your profile, the rider names you have saved, your follows, the message log, your results, your favourites, your venue notes, your share links, the beta measurements, what you have saved for Find me on start lists, and the link to the timing system, access keys included. Start-list alerts go too if they belong to a follow you have; otherwise they go when the message has been sent, or the day after the show (at most 30 days).
These remain:
- Venue positions you have corrected or submitted. They are shared knowledge, and the next show at that place should not sit in the wrong spot on the map again. Your name is taken off, so the correction cannot be traced back to you.
- News by email. If you signed up for news, that is a separate consent with its own unsubscribe button. Deleting an account is not an unsubscribe, and we will not remove a record you did not ask to lose. The unsubscribe link is at the bottom of every news email.
- Emails in our mailbox. The welcome email stays at Proton for 12 months, and any emails between us until we delete them. Deleting your account in the app does not remove them. Write to hej@signavo.dk and we will delete them.
- The classes' start and result lists at Cloudflare. They belong to the class, not to your account, and are deleted 7 days after the class has finished.
- Supabase's own sign-in logs. Those are up to Supabase.
A backup made before the deletion may still contain your information for up to six months. The copies are not rewritten, but they are deleted automatically.
News by email (the waiting list)
If you signed up for news on signavo.dk or signavo.app, we store your email address, the language you signed up in, and when. If you answered the question about which showgrounds you ride at, we store that answer too; it is optional. If you reached the page through one of our posts or adverts, we also store the tags from the link, see "The link you came from". Nothing else. We process the address, the language, the time and the answer because you gave your consent by signing up and confirming in the email. We process the tags on the basis of a legitimate interest, see "The link you came from". You unsubscribe with the link at the bottom of every news email, or by writing to hej@signavo.dk; we then delete the address, the answer and the tags from the link. We keep that the unsubscribe happened, and when, so it can be shown. If you never confirm the sign-up, the address currently stays with no deletion deadline; write to hej@signavo.dk and we will delete it. The address may also sit in our backups for up to six months and in Supabase's traffic log.
The link you came from
The links in our posts and adverts carry a few short tags in the address, which we add ourselves, such as utm_source=instagram. If you sign up from a page you reached through one of those links, the page sends the tags along, and we store them with your sign-up. There are five at most: where the link was posted (utm_source), how it was shared (utm_medium), the campaign (utm_campaign), the advert (utm_content) and, for a search advert, the keyword it was bought on (utm_term).
We use the tags to count how many sign-ups each post and each advert brings in, so we know where the advertising money does some good. We set them per link, so everyone who gets the same link gets the same tags. They say where we found you, not who you are. We do not check that they are genuine, since anyone can type tags into an address. We lowercase them and require them to have the right form, so they are a pointer and not a proof.
We keep nothing else from the address. That includes the click ids that ad platforms add to a link themselves (such as fbclid and gclid), which can recognise an individual click. Your sign-up does not record which page you came from either. The tags are not saved on your device, in a cookie or in any other way: the page reads them from the address when you press the button. If you type signavo.app into the address bar yourself and sign up there, no tags are sent.
We do this on the basis of a legitimate interest (GDPR art. 6(1)(f)): knowing which posts and adverts lead people to sign up. The tags sit in our own database with the rest of your sign-up, and we do not pass them on to the platform the advert came from.
The tags are deleted no later than six months after you signed up, or sooner if you unsubscribe. Your sign-up stays, without them. They may also sit in our backups for up to six months after that.
You can say no to the tags. Write to hej@signavo.dk and we will delete them from your sign-up. You stay on the list.
The contact form
If you write to us through the bubble on signavo.dk or signavo.app, we get what you put in the form: your email address, your message, and your name if you give it. We also get which page you wrote from, and whether it was the Danish or the English site. We use it to reply to you and for nothing else.
The message is not stored in our database. Our server passes it on through Resend to our mailbox at Proton, hej@signavo.dk, and from there it is an email like any other between you and us (see "How long we keep things"). Resend keeps its own copy for 30 days, and we cannot delete that one. If you want our copy deleted, write to hej@signavo.dk.
Our server log at Cloudflare records that a message came in, not what it said. As with all other traffic to our server, though, your IP address is in the log, along with the city and country it points to, and the log is kept for up to 7 days. To slow down abuse, the server also remembers the address for a short while.
Our legal basis
- To keep our agreement with you (GDPR art. 6(1)(b)): account, follows, messages, result history. That is what you ask for when you tap Follow.
- Because you said yes (art. 6(1)(a)): notifications, arrival by GPS, the link to the timing system, Find me on start lists and the waiting-list emails. You can withdraw each of them separately without the rest stopping.
- Because we have a legitimate interest in the service working (art. 6(1)(f)): operational logs, backups and abuse protection.
- Because we have a legitimate interest in helping new users get started (art. 6(1)(f)): one welcome email to new accounts.
- Because we have a legitimate interest in replying when you write to us (art. 6(1)(f)): messages from the contact form.
- Because we have a legitimate interest in knowing how many visits the website gets and where they come from (art. 6(1)(f)): visit statistics for the website.
- Because we have a legitimate interest in knowing which posts and adverts bring in sign-ups (art. 6(1)(f)): the tags from the link on a sign-up for news by email. See "The link you came from".
- Because we have a legitimate interest in you being able to follow a start (art. 6(1)(f)): information about riders who don't use Signavo themselves, such as name, horse, results and id with the organiser. See "Riders on the start list".
We make no automated decisions about you, and we do no profiling.
Who else sees it
We sell, share or rent nothing. These providers process information on our behalf:
| Provider | Role | What they see |
|---|---|---|
| Supabase | Database and sign-in (EU) | Everything under "Your account" and below, and their own logs of sign-ins and traffic with IP address and email |
| Cloudflare | Server, website and its visit statistics, backups, copies of the classes' start and result lists, our server log and the encrypted store for the link's access keys | The traffic to our server, the backup files, the class lists, and the access keys in encrypted form. For the visit statistics: the page, the page you came from, your browser and operating system, how quickly the page loads, and your IP address, which Web Analytics does not keep |
| Apple (APNs) | Delivers the messages to your iPhone | The key to your phone, and the message content |
| Resend | Sends sign-in codes, news emails and messages from the contact form | Your email address, and when you use the contact form, your name and your message too |
| Proton | Our mailbox, hej@signavo.dk (Switzerland) | What you write to us yourself, the emails we send you, and your email address |
| OpenStreetMap / Nominatim | Looks up your address | The address as text — only when you save it |
| OSRM | Works out driving time | Two sets of coordinates. No name, no id |
| ntfy.sh | Older message channel, the app does not use it | Would see the message text if it were used |
| Expo | Delivers updates to the app | That your phone asked for an update |
| healthchecks.io | Watches that our nightly job ran | Nothing about you. Only that the job ran |
Supabase runs in the EU. Proton is in Switzerland, whose level of protection the European Commission has approved (adequacy decision). The others are global services and may process data outside the EU/EEA; that happens under the European Commission's standard contractual clauses.
Your rights
You can request access to what we hold about you, have it corrected, deleted, or handed over in a machine-readable format. Write to hej@signavo.dk. If you have an account, you can delete it, and most of what belongs to it, from the app straight away. What remains is listed under "When you delete your account". If you are a rider without an account, or the parent of one, these rights are yours too, see "For riders and parents" under "Riders on the start list".
Objecting. You can object to what we do on the basis of a legitimate interest (art. 6(1)(f)): the welcome email, messages from the contact form, visit statistics for the website, the tags from the link on your sign-up for news by email, operational logs, backups, abuse protection and information about riders. Write to hej@signavo.dk. If you have not had the welcome email yet, we will not send it.
Deletion applies to the live database. Backups are deleted automatically, see above.
If you are unhappy with how we handle your information, you can complain to the Danish Data Protection Agency, datatilsynet.dk.
Children
Signavo is made for riders, parents and helpers. If you are under 13, a parent must create the account and consent on your behalf. We do not ask for your age, and we do not knowingly collect information from children who have created an account themselves — but if we find out, we delete the account.
Children are on the organisers' start lists too, and their names can come into Signavo when someone follows them, or when "Find me on start lists" finds a name a parent is looking for. What we store, and how you as a parent get it deleted, is under "Riders on the start list".
Cookies and visit statistics
The app uses no cookies, and the website sets none either.
We count visits to the website with Cloudflare Web Analytics. It uses no cookies and stores nothing on your device. According to Cloudflare, it does not collect personal data either. Cloudflare receives your IP address when the figures are sent, but does not keep it. What we see are totals: how often each page is viewed, the page people came from, country, browser, operating system and type of device, and how quickly the pages load.
When this text changes
If we change something material, it says so here with a new date. The app has no way to tell you yet; once it has, we will use it before the change takes effect. The date below is the only truth about which version you are reading.
Last updated: 23 October 2026