Política de privacidad de WhiskerCheck
Última actualización: 10 de octubre de 2026.
Esta política explica qué hace WhiskerCheck con tus datos. Está escrita a partir de lo que el código hace de verdad, no de lo que nos gustaría que hiciera.
Quién es responsable
Miguel Gamarra, persona física. Domicilio: Proviv. Res. La Esperanza, Carabayllo, Lima 15121, Perú. Contacto para cualquier asunto de privacidad: privacy@whiskercheck.com.
Lo más importante
- El nombre de tu mascota, sus fotos y lo que escribes en su diario no salen de tu teléfono. Nunca. Tu historial no sale del teléfono como lista, aunque nuestro servidor apunta cada escaneo y las métricas cuentan qué sale en cada uno.
- Cuando lo que escaneas no está en nuestra base documentada, le preguntamos al asistente y apuntamos esa palabra para saber qué documentar después.
- Cuando escaneas una etiqueta o haces una foto, esa foto sí se envía a nuestro servidor y la lee un servicio de inteligencia artificial de Google (Gemini). Queda 30 días en nuestro registro técnico y después se borra sola.
- De tu mascota solo enviamos especie y peso, porque de eso depende el veredicto.
- Nuestro servidor guarda cada escaneo con el identificador de la app: qué modo, qué salió, la especie y el peso, la versión de la app, si eres gratis o Pro y, durante 30 días, tu dirección IP. Sirve para saber cómo se usa la app, qué falla y si alguien abusa de ella. El identificador se suelta a los 14 meses, y puedes soltarlo antes desde Ajustes.
- Si te suscribes, RevenueCat ve esa compra —desde tu teléfono, no desde nuestro servidor— atada a un identificador anónimo que ellos generan y que no es el nuestro.
- Medimos cómo se usa la app y cuándo falla, con Firebase, de Google: qué pantallas se abren, qué sale en cada escaneo, qué buscas y qué falla. Viene encendido y lo apagas cuando quieras en Ajustes → Privacidad. No incluye el nombre de tu mascota, sus fotos ni tu diario.
- No hay cuentas, ni publicidad, ni seguimiento entre apps, ni identificadores publicitarios.
- No vendemos datos a nadie, ni los cedemos con fines comerciales.
Qué se guarda en tu teléfono
Casi todo esto vive en el almacenamiento normal de la app, sin cifrado adicional. Las dos últimas filas son la excepción y van en el llavero del teléfono, que es el sitio donde iOS guarda lo que no debe perderse ni copiarse a otro dispositivo:
| Dato | Qué es |
|---|---|
| Perfil de cada mascota | nombre, especie, peso de hoy y, si los rellenas, raza, sexo y fecha de nacimiento |
| Foto de cada mascota | una copia propia dentro de la app, no un enlace a tu carrete |
| Histórico de peso | cada pesada con su fecha, para poder dibujar la curva |
| Vacunas, desparasitación, medicación y visitas | qué, cuándo se hizo, cuándo toca y tus notas |
| Diario | lo que escribas, con su fecha |
| Revisión de la casa | qué has marcado como puesto fuera de su alcance |
| Historial | los últimos 100 escaneos: el veredicto entero, con la mascota y el peso que tenía ese día, y cuánto comió si lo dijiste |
| Idioma, país y aspecto | si los cambiaste a mano en ajustes |
| Si compartes métricas | lo que elegiste en Ajustes → Privacidad |
| Identificadores de Firebase | los que genera su SDK para esta instalación. Los pone él, no nosotros, y solo se envían si las métricas están encendidas |
| Identificador de la app | ver el apartado siguiente |
| Cuántos escaneos gratis llevas gastados | un número del 0 al 5, y nada más: ni qué escaneaste ni cuándo. En el llavero |
| Identificador de RevenueCat | el que genera su SDK si llegas a abrir el muro de pago. En el llavero, y lo pone él, no nosotros |
Los recordatorios de vacuna o medicación no son un dato de esta tabla: los programa tu teléfono, no nuestro servidor. Cuando borras un registro o borras todo, la app los cancela.
De esta tabla, a nuestro servidor llegan con cada escaneo el identificador de la app, la especie y el peso de la mascota, tu idioma, el país si lo elegiste a mano y la cantidad si la indicas, y con cada petición si eres gratis o Pro, que la app sabe por la suscripción. Y se guardan con el escaneo. Lo cuenta «Qué se envía a nuestro servidor». A otros sí salen algunas filas. El identificador de RevenueCat va a RevenueCat. Y si las métricas están encendidas, van a Google el identificador de la app, los de Firebase, tu idioma, tu aspecto, el país si lo elegiste a mano y cuántos escaneos gratis llevas. Lo cuentan «Las métricas» y «Quién más ve algo».
Puedes borrar todas las filas de arriba desde Ajustes → «Borrar todo lo de este teléfono», o desinstalando la app, menos las dos últimas. Esas dos viven en el llavero y el llavero sobrevive a las dos cosas.
«Borrar todo» respeta además tu elección sobre las métricas, a propósito: borrar tus datos no debe volver a encender lo que apagaste. Desinstalar la app sí la borra. Ese botón sí cambia el identificador de Analytics, para que en Google lo de antes y lo de después no queden unidos; el de Crashlytics lo gestiona su SDK y no hay forma de cambiarlo desde la app. Sin conexión no cambia ninguno: si el servidor no contesta, el identificador de la app se queda para poder repetir el borrado, y con él seguiría uniéndose todo. Se desata al repetirlo con conexión.
Y es a propósito, así que lo decimos sin adornarlo: si el contador se borrara, reinstalar regalaría cinco escaneos gratis cada vez, y el muro de pago no existiría. Comprobado en un iPhone el 7 de septiembre de 2026 — al reinstalar volvieron el mismo contador y la misma suscripción, sin pulsar «Restaurar compras».
Ten en cuenta que, si tienes activadas las copias de seguridad de iCloud o de Google, estos datos pueden acabar en ellas. Esa copia está en tu cuenta y se rige por las condiciones de Apple o de Google, no por las nuestras. El contador de escaneos es la excepción: está marcado para no copiarse a otro teléfono, ni siquiera en un respaldo.
Los dos identificadores
Hay dos que importan, y no se los pasamos el uno al otro. Eso es lo importante y por eso está primero: RevenueCat no recibe el nuestro, así que no puede saber qué escaneó una instalación.
Lo que cambió en septiembre de 2026, y conviene decirlo aquí: si las métricas están encendidas, el nuestro viaja a Google con ellas, y con él si eres gratis o Pro, los pasos del muro de pago y qué sale en cada escaneo. Nosotros sí podemos juntar eso con los reportes que envíes y con los escaneos que guarda nuestro servidor, que llevan el mismo identificador: para eso lo usamos. Lo cuenta «Las métricas».
El nuestro
Al abrir la app por primera vez se genera un número aleatorio (un UUID). No lo obtenemos de tu teléfono ni de tu cuenta: lo inventa la app. Sirve para cuatro cosas: frenar el abuso —cuántos escaneos llevas en la hora en curso—, saber que un reporte de resultado incorrecto viene de la misma instalación, saber cómo usa la app cada instalación y qué le falla —nuestro servidor guarda cada escaneo con él— y, si compartes métricas, unir lo que pasó en esa instalación con sus fallos, sus reportes y los registros de nuestro servidor.
Ese «cuántos escaneos» no tiene nada que ver con los cinco gratis: son dos contadores distintos, en dos sitios distintos. El de aquí lo lleva nuestro servidor, va por horas y se borra solo. El de los cinco gratis lo lleva tu teléfono y es de por vida; a nuestro servidor no llega, y a Google solo como métrica, si las tienes encendidas.
Lo tratamos como dato personal. No lleva tu nombre y solo lo compartimos con Google, para las métricas y solo si están encendidas, pero es estable e identifica tu instalación, y bajo el RGPD eso basta.
Si borras todo desde ajustes, la app avisa antes al servidor para que suelte lo que tenga atado a ese identificador, y después lo borra de tu teléfono y empieza a usar uno nuevo. Ese orden importa: al revés perderíamos la única llave para encontrar tus datos. Si en ese momento no hay conexión, la app te lo dice en vez de dar el borrado por hecho.
Desinstalar la app sin pasar por ajustes no avisa al servidor. Si te ocurre, escríbenos a privacy@whiskercheck.com y lo hacemos nosotros — necesitaremos que nos digas cuándo y qué escaneaste o reportaste, porque sin el identificador no podemos localizarlo por ti. Y si no nos escribes, se suelta solo a los 14 meses.
El de RevenueCat
RevenueCat es quien lleva la suscripción, y su SDK genera su propio identificador
—empieza por $RCAnonymousID— la primera vez que la app arranca con las compras activas.
No le pasamos el nuestro, y es una decisión, no un descuido: el SDK acepta que le demos un identificador de usuario y deliberadamente no se lo damos. Tampoco le damos tu correo, ni tu nombre, ni ningún atributo tuyo, aunque el SDK también lo permita. Así, RevenueCat no recibe nada de lo que mandamos a Google, ni Google el identificador de RevenueCat. Lo que impide juntar lo que sabe cada uno es que nadie se lo pasa al otro, y lo decimos así porque es lo exacto: ya hemos quitado a Firebase el identificador que Apple da a tu iPhone para nuestra app, que era lo único que los dos recibían igual.
Nosotros no leemos ese identificador en ningún momento: de todo lo que RevenueCat responde, la app solo mira una cosa, si la suscripción está activa o no. Un sí o un no.
Este también vive en el llavero, así que sobrevive a desinstalar la app y a «Borrar todo lo de este teléfono». Eso es lo que hace que al reinstalar vuelva tu suscripción sin tener que restaurarla, y también lo que hace que «Borrar todo» no alcance a RevenueCat: ese botón limpia tu teléfono y nuestro servidor, no el suyo. Para eso, escríbenos.
Qué se envía a nuestro servidor
Nuestro servidor está en Cloudflare Workers.
Al escanear un código de barras: el código, el identificador de la app, la especie y el peso de la mascota, y el idioma. Si después indicas cuánto comió, también esa cantidad.
Al escanear una etiqueta o una foto: lo mismo, más la fotografía. La foto se reduce a 1280 píxeles de ancho antes de enviarse; ese reprocesado elimina de paso los metadatos de la imagen original, incluida la ubicación si la llevaba.
Al reportar un resultado incorrecto: el identificador de la app, qué escaneaste, el veredicto que recibiste y el motivo que elegiste.
Si un escaneo falla dentro de la app —se corta la conexión, no llega respuesta—: qué falló, en qué paso y cuánto llevaba, con el identificador de la app.
Y en cada una de esas peticiones, la app dice de sí misma: su versión, la versión nativa con la que corre y el paquete de actualización que tiene, el sistema del teléfono —«ios 26.1»— y si eres gratis o Pro.
Si eres Pro, nuestro servidor lo sabe, pero no decide nada con ello. La app lo dice para que podamos separar cómo usa la app quien paga de quien no. El muro de pago se sigue resolviendo entero en tu teléfono, y de la compra no nos llega nada: ni el recibo, ni el precio, ni el identificador de RevenueCat.
Como en cualquier conexión a internet, Cloudflare ve además tu dirección IP. Nuestro servidor la guarda con cada escaneo y cada fallo durante 30 días, junto con la red desde la que te conectas —el número de tu operadora, no tu ubicación—. Es lo que deja ver que un pico de peticiones viene de un programa y no de personas, y bloquearlo. También lee el país que Cloudflare deduce de ella —dos letras, «PE», «ES»—, o el que hayas elegido a mano en ajustes si lo cambiaste.
Ese país se usa para cuatro cosas: elegir el teléfono de toxicología que se te enseña en una urgencia, pedirle al modelo el nombre que se usa donde estás —«palta» y no «aguacate»—, guardar la respuesta separada por país, para que a nadie se le sirva el nombre de otro sitio, y apuntarlo con cada escaneo, para saber desde dónde se usa la app. Es un país entero, no una ubicación.
Qué guardamos en el servidor, y cuánto tiempo
Aquí no vamos a adornar nada.
| Qué | Cuánto tiempo | Qué lo borra hoy |
|---|---|---|
| Cada escaneo: qué modo, la especie y el peso, qué salió, el código de barras o lo que se identificó, cuánto tardó, el país, la red, la versión de la app y si eres gratis o Pro, con el identificador de la app | El identificador, 14 meses. El resto, indefinidamente | Un proceso diario automático |
| Tu dirección IP, con cada escaneo y cada fallo | 30 días | Un proceso diario automático |
| Los fallos de un escaneo dentro de la app, con el identificador | 90 días, enteros | Un proceso diario automático |
| Reportes de resultado incorrecto | El identificador y el comentario, 14 meses. El resto, indefinidamente | Un proceso diario automático |
| Códigos de barras escaneados, con la fecha | Indefinidamente | Nada |
| Contador antiabuso, por hora (no es el de los cinco gratis, que vive en tu teléfono) | Poco más de una hora | Se borra solo |
| Caché de productos | 30 días (7 si el producto no existe) | Se borra sola |
| Nombres de lo que consultas y no tenemos documentado, con el país | Indefinidamente | Nada |
| La respuesta guardada para esos nombres | 14 días si dijo que no figura como peligroso, 30 si avisó de algo | Un proceso diario automático |
| Las fotos | 30 días, en el registro técnico de las llamadas al modelo | Cloudflare, al cumplirse el plazo |
Sobre los códigos de barras: guardamos qué productos ha consultado alguien alguna vez, con la fecha, para no tener que volver a preguntárselo a Open Food Facts. Esa tabla no guarda quién los escaneó; el registro de escaneos sí, y lo cuenta el párrafo que viene después.
Sobre lo que consultas y no tenemos documentado: nuestra base no cubre todo lo que se puede escanear, así que a veces lo que escaneas no está. Cuando eso pasa se lo preguntamos al asistente y apuntamos el nombre de eso que preguntaste —«plátano», «mango»— junto con la especie y un contador de cuántas veces nos lo han preguntado. Sirve para decidir qué documentar a continuación con una fuente veterinaria de verdad, en vez de elegirlo a ojo.
Junto al nombre se guarda también la respuesta, para no volver a pagar la misma pregunta con la espera que cuesta: la explicación, los signos, la gravedad y con qué modelo se obtuvo. Es la misma respuesta que viste en pantalla, y sirve para el siguiente que pregunte lo mismo.
Junto a todo eso se guarda el país desde el que se preguntó. Está ahí porque el idioma no basta para nombrar las cosas: «palta» y «aguacate» son la misma fruta y el mismo idioma, y si la respuesta no se separase por país, la primera que se guardara se le serviría a todos los demás con el nombre equivocado.
Esa tabla no guarda quién preguntó. No hay identificador de teléfono, ni foto, ni el nombre ni el peso de tu mascota: la palabra, la especie, el idioma, el país, un contador y la respuesta. Quién escaneó qué lo guarda el registro de escaneos, que es lo siguiente.
Sobre el registro de escaneos: desde septiembre de 2026, nuestro servidor apunta cada escaneo con el identificador de la app, salga bien o falle. Guarda el modo, la especie y el peso, qué nivel salió y qué sustancia lo decidió, el código de barras o el nombre de lo que se identificó en la foto —nunca la foto—, cuánto tardó, el país, la red, la versión de la app y si eres gratis o Pro. Sirve para saber cómo se usa la app, qué instalación la usa más, qué falla y dónde, y qué nos falta documentar; y para ver cuándo un volumen raro es un abuso. Sin el identificador tendríamos los números pero no podríamos separar a quién le pasa cada cosa.
A los 30 días se le quita la IP, y a los 14 meses el identificador; la fila se queda, porque sin ellos ya no dice de quién es y sigue sirviendo para ver tendencias. Es el mismo plazo que ya guardan las métricas de Google con el mismo identificador: nuestro servidor no lo retiene más tiempo que ellas. Y «Borrar todo lo de este teléfono» lo suelta en el acto.
Sobre las fotos: no se guardan en ninguna base de datos nuestra —no hay tabla de fotos, ni carpeta, ni forma de buscar la tuya—, pero tampoco desaparecen en el aire. La llamada al modelo pasa por el AI Gateway de Cloudflare, que registra cada petición con su contenido, y el contenido de una petición de foto es la foto. Ese registro se conserva 30 días y después se borra.
Está encendido a propósito y no lo vamos a apagar: es lo que nos permite averiguar por qué un escaneo falló, devolvió algo absurdo o tardó veinte segundos. Sin él, un fallo que solo le pasa a una persona es un fallo que no se puede arreglar. Lo consultamos para eso y solo para eso, no lo mira nadie de fuera, y no está asociado a tu nombre ni a tu mascota.
En tu teléfono queda una copia temporal en la memoria interna de la app, que la app borra al terminar cada escaneo.
Sobre los reportes: a los 14 meses se les quita el identificador de la app y el comentario, y lo hace un proceso automático que corre todos los días. Lo que queda —qué producto, qué veredicto, qué motivo— ya no dice de quién vino, y nos sigue sirviendo para corregir los datos. Hasta septiembre de 2026 eran noventa días; se alargó para que un reporte se pueda juntar con los escaneos de la misma instalación mientras estos lo estén.
Las métricas
Desde septiembre de 2026 la app mide cómo se usa y cuándo falla, con Firebase Analytics y Firebase Crashlytics, de Google. Sin eso no sabríamos dónde se atasca la app, qué falla ni qué partes sirven de verdad, y un fallo que solo le pasa a unos pocos no se podría arreglar.
Vienen encendidas, y las apagas en Ajustes → Privacidad cuando quieras. Apagadas, la app funciona exactamente igual y deja de mandar métricas de uso en el acto. Con los fallos hay un matiz: si la app se cierra de golpe en la misma sesión en que las apagas, ese fallo aún puede enviarse la próxima vez que la abras. Los que ocurran con las métricas ya apagadas se borran sin enviarse.
Lo que se envía, a grandes rasgos:
- Qué haces en la app. Qué pantallas abres y cuánto tiempo la usas. De cada escaneo, el modo, qué nivel salió, qué sustancia de nuestra base lo decidió, cuánto tardó y cuántos escaneos gratis te quedan, o por qué falló. Si recalculas por cantidad, si reportas un resultado —el motivo, no el comentario— y si abres la ficha de urgencia o la búsqueda de veterinario. Los pasos del alta y del muro de pago. Que marcas una tarea de la rutina y los logros que ganas; que apuntas un peso y si su tendencia se salió de lo normal, no el peso; que escribes en el diario y lo largo que es, no el texto; que añades o compartes fotos del álbum y de qué categoría, no las fotos; las fichas que abres, las temporadas y las estancias de la casa que revisas, y si exportas o restauras una copia.
- Lo que escribes en un buscador, tal cual y hasta 100 caracteres: el del catálogo y el del historial. Si buscas un producto o un código en tu historial, eso llega a Google.
- Cómo es tu instalación. Idioma, aspecto, el país si lo elegiste a mano, si eres gratis o Pro y cuántos escaneos gratis llevas, cuántas mascotas tienes y de qué especie, y de la que tienes seleccionada la franja de peso y de edad —«de 10 a 25 kg», «de 3 a 7 años»—, no el peso ni la fecha exactos. Si usas la calculadora de ración, su etapa de vida, si está gestante o lactando y si buscas que baje o suba de peso. También si permitiste los avisos, cuántas fotos tienes en el álbum (por franjas) y si tienes copia de seguridad.
- Los fallos. Qué error, en qué pantalla, el modelo de teléfono, la versión de iOS, las pantallas que abriste justo antes y los últimos eventos de uso de los de arriba, que el SDK adjunta por su cuenta a cada informe.
- El identificador de la app, el mismo de los reportes y de los escaneos que guarda nuestro servidor, para poder unir un fallo con lo que pasó antes en esa instalación.
La app nunca envía por su cuenta el nombre de tu mascota, sus fotos, lo que escribes en el diario, el comentario de un reporte, el código de barras ni la foto de un escaneo. Lo único que escribes y sale es lo del buscador, contado arriba.
De una compra, el SDK de Google puede registrar por su cuenta el producto, el precio y la moneda. Tu método de pago no lo ve nadie más que Apple.
El SDK de Google genera además sus propios identificadores para esta instalación. No recoge el identificador publicitario —la app está hecha sin él— ni el que Apple da a tu iPhone para nuestra app (el IDFV), que tenemos apagado. Como habla directamente desde tu teléfono, Google ve también tu dirección IP y deduce de ella tu país y tu ciudad aproximados.
Google no usa esto para publicidad: tenemos apagadas las «señales de Google» y la personalización de anuncios. Google Analytics conserva lo que va unido a tu instalación 14 meses, y Crashlytics los fallos 90 días; después se borra. Los recuentos totales, que ya no dicen de quién son, se quedan.
Además, una copia de esos eventos y fallos pasa cada día a BigQuery, en nuestra cuenta de Google Cloud, para poder consultarlos con más detalle que en los informes de Google. Esa copia se borra sola a los 60 días.
Quién más ve algo
| Quién | Qué recibe | Para qué |
|---|---|---|
| Cloudflare | Todo lo que envías, más tu IP. Guarda además, durante 30 días, el registro de cada llamada al modelo —con la foto dentro— | Aloja el servidor, la base y la caché, y nos deja ver qué falló cuando algo falla |
| Google (Firebase) | Si las métricas están encendidas, lo que cuenta «Las métricas», con el identificador de la app. Por hablar desde tu teléfono, ve además tu IP | Saber qué se usa y qué falla en la app |
| Google (Gemini) | La foto; en el modo foto, además la lista de lo que tenemos documentado y se puede reconocer en una imagen; y cuando no tenemos ficha de lo escaneado, el nombre de eso con la especie y, si la había, la lista de ingredientes. En los dos casos va también tu país, en dos letras | Leer la etiqueta, identificar lo de la foto, o responder por lo que no tenemos documentado — y llamarlo como se llama donde estás |
| Open Food Facts | Solo el código de barras | Saber qué producto es |
| Expo (EAS Update) | En cada arranque, desde tu teléfono: tu IP, un identificador propio de la instalación, la versión de la app y el sistema | Comprobar si hay una versión nueva de la app y descargarla |
| RevenueCat | Su identificador anónimo, los eventos de compra, renovación y restauración, y el recibo de Apple con el producto, el precio y la moneda. Por hablar desde tu teléfono, ve además tu IP, el modelo, la versión de iOS, tu idioma y el país de tu App Store | Comprobar el recibo contra Apple, decidir si tu suscripción está activa y devolvértela al restaurar |
| Apple | El pago entero: quién eres para ellos, tu método de pago y la transacción | Cobrar. Nosotros no vemos nada de eso |
Tres servicios hablan directamente con tu teléfono, y por eso ven tu dirección IP: RevenueCat; Firebase, si las métricas están encendidas; y Expo, que en cada arranque comprueba si hay una versión nueva de la app. Lo hacen solos, sin que tú toques nada, no como los dos enlaces del final de este apartado, que solo se abren si los tocas. Ninguna de esas llamadas pasa por nuestro servidor.
El SDK de RevenueCat manda también, por su cuenta, el identificador que Apple da a tu iPhone para nuestra app (el IDFV). No lo pedimos nosotros y no lo vemos, pero va, y preferimos decirlo a que lo descubras. No es el identificador publicitario: ese no lo recoge nadie aquí, y por eso la app nunca te pide permiso para seguirte.
Ni Gemini ni Open Food Facts ven tu dirección IP. Esas consultas salen de nuestro servidor, no de tu teléfono. (El botón de buscar un veterinario cerca es otra cosa y va aparte, más abajo.) Tampoco reciben el identificador de la app ni el peso de tu mascota. La especie sí llega a Gemini en dos casos, porque de ella depende la respuesta: en el modo foto, la lista de candidatas va filtrada por especie; y cuando preguntamos por algo que no tenemos documentado, la pregunta es literalmente «¿esto es peligroso para un perro?».
El país llega a Gemini por un motivo y solo por ese: que te devuelva el nombre que se usa donde estás. Son dos letras de un país entero, no una ubicación, y viajan sueltas —sin identificador, sin IP y sin nada de tu mascota—, así que no acercan a nadie a saber quién preguntó.
De tu mascota, a Gemini no llega nada más que la especie. A Firebase, si las métricas están encendidas, le llegan además cuántas mascotas tienes, la franja de peso y de edad de la seleccionada y lo que cuenta «Las métricas» sobre la ración y el peso. Su peso exacto llega a nuestro servidor —de él sale el veredicto—, se guarda con el escaneo y no pasa de ahí. Su nombre, su foto, su raza y su diario no le llegan a nadie.
No usamos publicidad, identificadores publicitarios, notificaciones push, ubicación ni contactos.
Medición hay de dos clases, y van con su nombre: las métricas de Firebase, contadas en su apartado, y la cuenta de las suscripciones que lleva RevenueCat —cuántas se compran, cuántas se renuevan, cuántas se cancelan—, atada a su identificador anónimo. Lo de RevenueCat no lo usamos para nada más, y no se junta con lo que escaneas porque no podemos juntarlo.
Los avisos de vacuna o medicación que puedes programar no son notificaciones push: no salen de ningún servidor. Los agenda tu propio teléfono con lo que escribiste, y nosotros no nos enteramos de que han saltado.
Los casos en los que sí sales de aquí
Los dos de este apartado tienen algo en común y conviene decirlo antes: ninguno se abre solo. (RevenueCat, Firebase y Expo sí hablan solos, y están contados más arriba.)
En la pantalla de veredicto hay un enlace a la fuente del dato (ASPCA, el Manual Merck y similares). Si lo tocas, abres esa web y ella sí ve tu dirección IP, como cualquier visita normal. No lo controlamos nosotros. El enlace no se abre solo: solo si lo tocas.
Y en un veredicto rojo o naranja hay un botón para buscar un veterinario de urgencias cerca. Si lo tocas, tu teléfono abre Google Maps —o Apple Maps, si es lo que tienes— con la búsqueda ya escrita. A partir de ahí estás en su app y en sus condiciones: ven tu dirección IP y, si les das permiso, tu ubicación. Nosotros no se la damos: la app no pide el permiso de ubicación y en la búsqueda no viaja ningún dato tuyo, solo las palabras «veterinario de urgencias». Tampoco se abre solo.
El sitio web
whiskercheck.com es un sitio estático: páginas ya escritas que se sirven tal cual.
- No hay cookies. Ninguna, ni siquiera técnicas.
- No hay analítica de ningún tipo, ni nuestra ni de terceros. No sabemos cuánta gente entra ni de dónde viene.
- No hay formularios. Para escribirnos hay una dirección de correo, y nada más.
- Las tipografías se sirven desde nuestro propio dominio, no desde el de Google, para que tu visita no llegue a nadie más.
Como en cualquier web, Cloudflare ve la petición y tu dirección IP porque es quien sirve las páginas, y las conserva en sus registros conforme a su propia política. Nosotros no leemos esos registros ni los cruzamos con nada: el sitio no sabe quién eres, y no tiene forma de relacionarte con la app.
Menores
WhiskerCheck no está dirigida a menores de 16 años y no la deben usar sin autorización de quien tenga su tutela. No pedimos la edad y no tenemos forma de comprobarla.
Tus derechos
Puedes pedirnos acceso a tus datos, su rectificación, su supresión, la limitación u oposición al tratamiento, y su portabilidad. Escribe a privacy@whiskercheck.com.
En nuestro servidor, lo asociado a tu instalación son tus escaneos, los fallos de la app y los reportes que hayas enviado, y puedes soltarlo tú mismo desde Ajustes → «Borrar todo lo de este teléfono», sin escribirnos ni esperar: los fallos se borran enteros, y a los escaneos y reportes se les quitan el identificador, la IP y el comentario. Lo que queda después —qué producto, qué veredicto, qué motivo— ya no dice de quién vino y nos sigue sirviendo para ver tendencias y corregir los datos.
Si quieres una copia de lo que tu instalación tiene en nuestro servidor, escríbenos a privacy@whiskercheck.com con el identificador de la app, que está al final de Ajustes → Privacidad.
Lo que las métricas mandaron a Google tampoco lo borra ese botón. Lo que deja de hacer es unirlo con lo nuevo, porque cambia los identificadores. Se borra solo, a los 14 meses (los fallos, a los 90 días, y la copia de BigQuery, a los 60). Si lo quieres fuera antes, escríbenos a privacy@whiskercheck.com con el identificador de la app, que está al final de Ajustes → Privacidad, y hazlo antes de borrar todo, porque después ya habrá cambiado.
Lo de RevenueCat va aparte y ese botón no lo toca. Si te has suscrito alguna vez, ellos tienen una ficha atada a su identificador anónimo con tus compras y renovaciones. Para que la borren, escríbenos a privacy@whiskercheck.com y lo pedimos nosotros. Dos avisos honestos sobre eso:
- Necesitaremos que nos ayudes a encontrarte. Como no cruzamos su identificador con el nuestro, no podemos localizar tu ficha por ti: haría falta la fecha aproximada de la compra, o que nos escribas desde el correo de tu cuenta de Apple.
- De una compra queda un registro que no podemos borrar, porque una venta tiene sus obligaciones contables y fiscales. Lo que sí desaparece es todo lo que la ate a tu instalación.
Y tu suscripción como tal vive en tu cuenta de Apple: cancelarla o pedir el reembolso se hace allí, no aquí.
- Unión Europea: puedes reclamar ante la autoridad de control de tu país; en España, la Agencia Española de Protección de Datos.
- Perú: puedes reclamar ante la Autoridad Nacional de Protección de Datos Personales.
- Brasil: puedes reclamar ante la Autoridade Nacional de Proteção de Dados (ANPD). La LGPD te reconoce además el derecho a que se anonimicen, bloqueen o eliminen los datos innecesarios o tratados sin ajustarse a la ley.
- California: no vendemos ni compartimos información personal en el sentido de la CCPA/CPRA, y no lo hemos hecho en los últimos doce meses. RevenueCat trata los datos de la suscripción por cuenta nuestra y solo para eso, que es lo que la CCPA llama un proveedor de servicio y no una venta.
Con qué derecho tratamos cada cosa
Para quien viva en la Unión Europea, esto es la base jurídica de cada tratamiento:
| Qué | Por qué podemos |
|---|---|
| El veredicto: lo que escaneas, la especie y el peso | Ejecución del contrato — es literalmente lo que nos pides que hagamos |
| El identificador de la app y la cuota por hora | Interés legítimo en que el servicio no se lo coma un solo cliente y la factura no se dispare |
| El registro de escaneos y de fallos, con el identificador, la IP y si eres gratis o Pro | Interés legítimo en saber cómo se usa el servicio, qué falla y quién abusa de él, para mejorarlo y protegerlo. Lo sueltas cuando quieras desde Ajustes |
| Los reportes de resultado incorrecto | Interés legítimo en corregir datos que pueden hacer daño si están mal |
| Los nombres de lo que no tenemos documentado | Interés legítimo en saber qué documentar después |
| Las métricas de uso y de fallos | Interés legítimo en saber qué falla y qué sirve, para arreglarlo y mejorar la app. Vienen encendidas y puedes oponerte cuando quieras apagándolas en Ajustes → Privacidad |
| La suscripción: la compra, el recibo y saber si sigue activa | Ejecución del contrato — sin eso no hay forma de darte lo que pagaste |
| El contador de cinco escaneos gratis, en tu teléfono | Ejecución del contrato — es la condición con la que te ofrecemos la parte gratuita. Solo sale de tu teléfono como métrica, si las tienes encendidas |
| El registro contable de una venta | Obligación legal — sobrevive a una petición de supresión, y es lo único que sobrevive |
No pedimos consentimiento antes de medir, y es una decisión, no un olvido: las métricas vienen encendidas y se apagan con un toque. Publicidad, cookies y seguimiento entre apps no hay, y lo que no existe no necesita permiso.
La app tampoco te pide el permiso de seguimiento que iOS enseña en otras apps, y no es un olvido: ese permiso existe para el identificador publicitario, y aquí no se recoge ninguno, tampoco en Firebase. Lo de RevenueCat no va por consentimiento sino por contrato: es lo que hace falta para darte la suscripción que compraste.
Tus datos salen de tu país: Cloudflare, Google y RevenueCat, Inc. procesan fuera de la Unión Europea y fuera de Brasil. Los tres ofrecen las cláusulas contractuales tipo de la Comisión Europea, que es el mecanismo con el que se hace esa transferencia; para Brasil, el equivalente que la ANPD ha aprobado para transferencias internacionales.
RevenueCat y Google, por Firebase, son los que conviene mirar dos veces: los dos reciben datos directamente desde tu teléfono, sin pasar por nuestro servidor, y RevenueCat está en Estados Unidos. Expo, que también habla desde tu teléfono para las actualizaciones, procesa igualmente fuera de la Unión Europea y de Brasil. Apple también queda fuera, y con ella no hay contrato nuestro que valga: el pago es suyo y se rige por sus condiciones.
Cambios
Si esto cambia, cambiará la fecha de arriba y lo avisaremos dentro de la app antes de que la versión nueva se aplique.
Última actualización: 9 de octubre de 2026