Información legal
Reglamento de Datos (UE) 2023/2854
Información para clientes de FarmaLoyalty.
Última actualización: 23 de octubre de 2026
01
Jurisdicción de la infraestructura
La base de datos, el servidor de la aplicación y las copias de seguridad de FarmaLoyalty están en la Unión Europea. Los proveedores que usamos y la jurisdicción a la que están sujetos son:
| Proveedor | Para qué | Dónde están los datos | Entidad |
|---|---|---|---|
| Railway Corp. | Base de datos, servidor y copias | Ámsterdam (Países Bajos, UE) | Estados Unidos |
| Vercel Inc. | Interfaz web | Fráncfort (Alemania, UE) | Estados Unidos |
| Cloudflare, Inc. (R2) | Copia de seguridad externa | Unión Europea | Estados Unidos |
| OpenAI Ireland Ltd. | Asistente de inteligencia artificial | OpenAI Ireland Ltd. trata los datos del EEE según el acuerdo de encargo de OpenAI; la facturación la emite OpenAI OpCo, LLC (Estados Unidos). Tratamiento en Estados Unidos mediante cláusulas contractuales tipo. | Irlanda (UE) |
| Resend, Inc. | Envío de email | Irlanda (UE) | Estados Unidos |
| Twilio Inc. | Estados Unidos | Estados Unidos | |
| Meta Platforms Ireland Ltd. | Red de WhatsApp | Irlanda y Estados Unidos | Irlanda (UE) |
| 001TECH, S.L. (LabsMobile) | SMS | España (UE) | España (UE) |
| Google LLC / Apple Inc. | Tarjetas Wallet | Estados Unidos | Estados Unidos |
| Zoho Corporation B.V. | Correo de privacidad | Unión Europea | Países Bajos (UE) |
| MEDIFORM PLUS, S.L. | Distribuidor: implantación y gestión del programa en las farmacias de su canal (subencargado por addendum) | España (UE) | España (UE) |
| Stripe | Cobro de la suscripción de la farmacia, sin datos de pacientes | Estados Unidos | Estados Unidos |
| Cloudinary Ltd. | Logos e imágenes de campañas y tarjetas, sin datos de pacientes | Estados Unidos | Israel |
Railway Corp.
- Para qué
- Base de datos, servidor y copias
- Dónde están los datos
- Ámsterdam (Países Bajos, UE)
- Entidad
- Estados Unidos
Vercel Inc.
- Para qué
- Interfaz web
- Dónde están los datos
- Fráncfort (Alemania, UE)
- Entidad
- Estados Unidos
Cloudflare, Inc. (R2)
- Para qué
- Copia de seguridad externa
- Dónde están los datos
- Unión Europea
- Entidad
- Estados Unidos
OpenAI Ireland Ltd.
- Para qué
- Asistente de inteligencia artificial
- Dónde están los datos
- OpenAI Ireland Ltd. trata los datos del EEE según el acuerdo de encargo de OpenAI; la facturación la emite OpenAI OpCo, LLC (Estados Unidos). Tratamiento en Estados Unidos mediante cláusulas contractuales tipo.
- Entidad
- Irlanda (UE)
Resend, Inc.
- Para qué
- Envío de email
- Dónde están los datos
- Irlanda (UE)
- Entidad
- Estados Unidos
Twilio Inc.
- Para qué
- Dónde están los datos
- Estados Unidos
- Entidad
- Estados Unidos
Meta Platforms Ireland Ltd.
- Para qué
- Red de WhatsApp
- Dónde están los datos
- Irlanda y Estados Unidos
- Entidad
- Irlanda (UE)
001TECH, S.L. (LabsMobile)
- Para qué
- SMS
- Dónde están los datos
- España (UE)
- Entidad
- España (UE)
Google LLC / Apple Inc.
- Para qué
- Tarjetas Wallet
- Dónde están los datos
- Estados Unidos
- Entidad
- Estados Unidos
Zoho Corporation B.V.
- Para qué
- Correo de privacidad
- Dónde están los datos
- Unión Europea
- Entidad
- Países Bajos (UE)
MEDIFORM PLUS, S.L.
- Para qué
- Distribuidor: implantación y gestión del programa en las farmacias de su canal (subencargado por addendum)
- Dónde están los datos
- España (UE)
- Entidad
- España (UE)
Stripe
- Para qué
- Cobro de la suscripción de la farmacia, sin datos de pacientes
- Dónde están los datos
- Estados Unidos
- Entidad
- Estados Unidos
Cloudinary Ltd.
- Para qué
- Logos e imágenes de campañas y tarjetas, sin datos de pacientes
- Dónde están los datos
- Estados Unidos
- Entidad
- Israel
Los proveedores con sede en Estados Unidos pueden estar sujetos a la legislación de ese país sobre acceso de las autoridades a datos, aunque los datos estén en la UE.
02
Medidas frente al acceso o la transferencia internacional por autoridades públicas
- Los datos se alojan en la UE y están cifrados en tránsito y en reposo.
- Con cada proveedor tenemos un contrato que limita el uso de los datos a la prestación del servicio.
- Solo entregamos datos a una autoridad de fuera de la UE cuando lo permita un acuerdo internacional o el Derecho de la UE o de España (artículo 32 del Reglamento de Datos).
- Ante una solicitud, comprobamos que sea legal, entregamos solo lo mínimo, la impugnamos cuando proceda e informamos al cliente antes, salvo que la ley lo prohíba.
03
Exportación de datos y cambio de proveedor
El cliente puede pedir en cualquier momento la exportación de sus datos o el traslado a otro proveedor. Se entregan estos ficheros:
| Fichero | Formato | Contenido |
|---|---|---|
| clientes | CSV (UTF-8) | clientes.csv Una fila por cliente. raw_data lleva el registro tal como llegó del programa de gestión. La dirección postal no se guarda en FarmaLoyalty y no sale. id, tenant_id, farmacia_id, external_client_code, erp_card_code, farmaloyalty_card_code, nif, customer_name, mobile, phone, email, postal_code, city, province, signup_date, birth_date, gender, customer_type, current_points, current_euros, lopd_signed, email_alert, sms_alert, gdpr_orders, gdpr_points_info, gdpr_birthday_campaigns, gdpr_balance_notifications, gdpr_marketing, raw_data, anonimizado_at, created_at, updated_at |
| ventas | CSV (UTF-8) | ventas.csv Una fila por línea de venta, con el resultado de los puntos. id, tenant_id, farmacia_id, idventa, idlinea, fechaventa, codigonacional, codigoean, nombreproducto, unidades, pvp, tipoaportacion, importebruto, descuentolinea, descuentooperacion, vale, descuentofidelidad, abonoeuros, importeneto, idcliente, nombrecliente, idvendedor, nombrevendedor, maquina, sensible, points_status, points_processed_at, raw_data, row_hash, sincronizado_at, created_at, updated_at |
| puntos, canjes y vales | CSV (UTF-8) | puntos.csv Cada movimiento de puntos: ganados, canjeados, ajustados, traídos de otro programa o caducados. id, tenant_id, farmacia_id, erp_transaction_id, idventa, idlinea, external_client_code, farmaloyalty_card_code, movement_type, points, source, rule_id, rule_name, description, calculation_detail, importacion_id, devuelve_movimiento_id, created_at vales.csv Los vales de descuento creados. id, tenant_id, farmacia_id, code, name, type, value, description, gift_description, scope, external_client_code, farmaloyalty_card_code, audience_id, automation_id, starts_at, expires_at, max_uses, uses_count, is_active, created_by_user_id, created_at, updated_at vales_canjes.csv Cada uso de un vale. id, tenant_id, farmacia_id, voucher_id, external_client_code, farmaloyalty_card_code, customer_name, erp_transaction_id, purchase_amount, redeemed_value, redeemed_at, redeemed_by_user_id, notes, created_at |
| consentimientos y su prueba | CSV (UTF-8); los documentos firmados, en su formato original (PDF o imagen) | consentimientos.csv Cada decisión del cliente por canal y finalidad, con su prueba. id, tenant_id, farmacia_id, external_client_code, canal, finalidad, acepta, fecha, origen, texto, texto_version, ambito, evidencia, registrado_por_user_id, registrado_por_cliente, importacion_id, created_at consentimientos_importaciones.csv Lo que declaró la farmacia al importar permisos. id, tenant_id, farmacia_id, declarado_por_user_id, canal, finalidad, declaracion_texto, num_clientes, created_at consentimientos_salud.csv Permisos para usar las compras de parafarmacia de salud y de medicamentos sin receta. id, tenant_id, farmacia_id, external_client_code, ambito, acepta, origen, texto, texto_version, codigo_id, codigo_validado, codigo_canal, codigo_destino, ip_recortada, navegador, registrado_por_user_id, documento_id, evidencia, fecha consentimientos_salud_documentos.csv La ficha de cada documento firmado. id, tenant_id, farmacia_id, external_client_code, nombre_fichero, mime, sha256, bytes, subido_por_user_id, subido_at documentos_salud/ Cada documento firmado escaneado, como ID_nombre del fichero. contactos_verificados.csv Móviles y correos que el cliente confirmó con un código. id, tenant_id, farmacia_id, external_client_code, tipo, valor, valor_erp_antes, enlace_id, verificado_at, evidencia bajas_del_programa.csv Solicitudes de baja del programa. id, tenant_id, farmacia_id, external_client_code, estado, created_at, atendida_at, atendida_por_user_id, evidencia cambios_preferencias_erp.csv Cambios de permisos detectados en el programa de gestión. id, tenant_id, farmacia_id, external_client_code, campo, valor_nuevo, detectado_at |
| campañas, plantillas y resultados | JSON | campanas.json Cuatro listas: campanas, automatizaciones, plantillas y resultados. Campañas id, tenant_id, farmacia_id, name, audience_id, channels, subject, message, template_key, status, schedule_type, scheduled_at, sent_at, metadata, created_at, updated_at Automatizaciones id, tenant_id, farmacia_id, template_key, name, description, is_active, channel, canal_alternativo, subject, message_template, mensajes, editor_template_id, trigger_config, disparador, vale, audience_id, tope_sms_mes, es_propia, last_run_at, created_at, updated_at Plantillas Las que ha creado o cambiado la farmacia. id, tenant_id, farmacia_id, key, name, tag, emoji, description, canvas_w, canvas_h, elements, html, html_manual, is_base, is_active, min_plan_code, created_at, updated_at Resultados Un resumen por envío. El detalle por cliente de cada campaña se descarga además en CSV desde Resultados. id, tenant_id, farmacia_id, campaign_id, automation_id, audience_id, event_type, channel, recipients, delivered, opened, clicked, revenue, metadata, created_at |
| segmentos y audiencias | JSON | segmentos.json Dos listas: segmentos y clientes_anadidos_a_mano. Segmentos id, tenant_id, farmacia_id, name, description, audience_type, conditions, tags, is_active, estimated_clients, last_preview, last_calculated_at, last_campaign_at, created_by_user_id, created_at, updated_at Clientes añadidos a mano id, tenant_id, farmacia_id, audience_id, external_client_code, added_by_user_id, added_at |
| reglas del programa (puntos, niveles y vales) | JSON | programa.json Con programa, reglas_de_puntos (cada una con sus condiciones), exclusiones, prioridades y niveles_y_estados. Los vales van en vales.csv. Programa programa_inicio_at, puntos_por_euro, canje_codigonacional, vale_codigonacional Reglas de puntos id, tenant_id, farmacia_id, rule_name, description, rule_type, advanced_priority, scope, scope_value, accumulation_type, points_value, multiplier, min_purchase_amount, starts_at, ends_at, is_active, created_at, updated_at; y sus condiciones: id, rule_id, field, operator, value, created_at Exclusiones y prioridades id, tenant_id, farmacia_id, name, exclusion_type, value, description, is_active, created_by, created_at, updated_at; y las prioridades: id, tenant_id, farmacia_id, scope, priority_order, is_active, created_at, updated_at Niveles y estados id, tenant_id, farmacia_id, new_days, active_days, recent_days, risk_days, dormant_days, silver_min_spent, silver_min_tickets, gold_min_spent, gold_min_tickets, platinum_min_spent, platinum_min_tickets, vip_min_spent, vip_min_tickets, frequency_warning_ratio, frequency_danger_ratio, created_at, updated_at |
| diseño de la tarjeta | JSON e imágenes | tarjeta.json El diseño de la tarjeta. El logo y la cabecera van como enlace (logo_url, strip_url) o, si se subieron como imagen, en base64 (logo_data, strip_data). id, tenant_id, farmacia_id, bg_color, text_color, accent_color, middle_title_color, pharmacy_name, slogan, phone, address, website, schedule, welcome_message, logo_url, strip_url, logo_data, strip_data, banner_modo, banner_color, banner_encuadre, logo_encuadre, logo_fondo, reverso_enlaces, show_logo, show_pharmacy_name, show_header_metric, header_field, header_field_label, primary_field, primary_field_label, middle_mode, secondary_fields, auxiliary_fields, bottom_fields, info_fields, info_notification_text, info_client_text, info_card_text, info_level_text, info_joined_at_text, info_rewards_text, info_loyalty_text, info_help_text, info_privacy_text, info_terms_text, is_active, created_at, updated_at tarjeta/ Las imágenes subidas, como ficheros: logo y cabecera. |
| registro de auditoría | CSV (UTF-8) | registro_auditoria.csv Quién hizo qué y cuándo: descargas, campañas y cambios. id, tenant_id, farmacia_id, user_id, user_email, accion, filas, filtros, ip, creado_en |
clientes
- Formato
- CSV (UTF-8)
- Contenido
clientes.csv
Una fila por cliente. raw_data lleva el registro tal como llegó del programa de gestión. La dirección postal no se guarda en FarmaLoyalty y no sale.
id, tenant_id, farmacia_id, external_client_code, erp_card_code, farmaloyalty_card_code, nif, customer_name, mobile, phone, email, postal_code, city, province, signup_date, birth_date, gender, customer_type, current_points, current_euros, lopd_signed, email_alert, sms_alert, gdpr_orders, gdpr_points_info, gdpr_birthday_campaigns, gdpr_balance_notifications, gdpr_marketing, raw_data, anonimizado_at, created_at, updated_at
ventas
- Formato
- CSV (UTF-8)
- Contenido
ventas.csv
Una fila por línea de venta, con el resultado de los puntos.
id, tenant_id, farmacia_id, idventa, idlinea, fechaventa, codigonacional, codigoean, nombreproducto, unidades, pvp, tipoaportacion, importebruto, descuentolinea, descuentooperacion, vale, descuentofidelidad, abonoeuros, importeneto, idcliente, nombrecliente, idvendedor, nombrevendedor, maquina, sensible, points_status, points_processed_at, raw_data, row_hash, sincronizado_at, created_at, updated_at
puntos, canjes y vales
- Formato
- CSV (UTF-8)
- Contenido
puntos.csv
Cada movimiento de puntos: ganados, canjeados, ajustados, traídos de otro programa o caducados.
id, tenant_id, farmacia_id, erp_transaction_id, idventa, idlinea, external_client_code, farmaloyalty_card_code, movement_type, points, source, rule_id, rule_name, description, calculation_detail, importacion_id, devuelve_movimiento_id, created_at
vales.csv
Los vales de descuento creados.
id, tenant_id, farmacia_id, code, name, type, value, description, gift_description, scope, external_client_code, farmaloyalty_card_code, audience_id, automation_id, starts_at, expires_at, max_uses, uses_count, is_active, created_by_user_id, created_at, updated_at
vales_canjes.csv
Cada uso de un vale.
id, tenant_id, farmacia_id, voucher_id, external_client_code, farmaloyalty_card_code, customer_name, erp_transaction_id, purchase_amount, redeemed_value, redeemed_at, redeemed_by_user_id, notes, created_at
consentimientos y su prueba
- Formato
- CSV (UTF-8); los documentos firmados, en su formato original (PDF o imagen)
- Contenido
consentimientos.csv
Cada decisión del cliente por canal y finalidad, con su prueba.
id, tenant_id, farmacia_id, external_client_code, canal, finalidad, acepta, fecha, origen, texto, texto_version, ambito, evidencia, registrado_por_user_id, registrado_por_cliente, importacion_id, created_at
consentimientos_importaciones.csv
Lo que declaró la farmacia al importar permisos.
id, tenant_id, farmacia_id, declarado_por_user_id, canal, finalidad, declaracion_texto, num_clientes, created_at
consentimientos_salud.csv
Permisos para usar las compras de parafarmacia de salud y de medicamentos sin receta.
id, tenant_id, farmacia_id, external_client_code, ambito, acepta, origen, texto, texto_version, codigo_id, codigo_validado, codigo_canal, codigo_destino, ip_recortada, navegador, registrado_por_user_id, documento_id, evidencia, fecha
consentimientos_salud_documentos.csv
La ficha de cada documento firmado.
id, tenant_id, farmacia_id, external_client_code, nombre_fichero, mime, sha256, bytes, subido_por_user_id, subido_at
documentos_salud/
Cada documento firmado escaneado, como ID_nombre del fichero.
contactos_verificados.csv
Móviles y correos que el cliente confirmó con un código.
id, tenant_id, farmacia_id, external_client_code, tipo, valor, valor_erp_antes, enlace_id, verificado_at, evidencia
bajas_del_programa.csv
Solicitudes de baja del programa.
id, tenant_id, farmacia_id, external_client_code, estado, created_at, atendida_at, atendida_por_user_id, evidencia
cambios_preferencias_erp.csv
Cambios de permisos detectados en el programa de gestión.
id, tenant_id, farmacia_id, external_client_code, campo, valor_nuevo, detectado_at
campañas, plantillas y resultados
- Formato
- JSON
- Contenido
campanas.json
Cuatro listas: campanas, automatizaciones, plantillas y resultados.
Campañas
id, tenant_id, farmacia_id, name, audience_id, channels, subject, message, template_key, status, schedule_type, scheduled_at, sent_at, metadata, created_at, updated_at
Automatizaciones
id, tenant_id, farmacia_id, template_key, name, description, is_active, channel, canal_alternativo, subject, message_template, mensajes, editor_template_id, trigger_config, disparador, vale, audience_id, tope_sms_mes, es_propia, last_run_at, created_at, updated_at
Plantillas
Las que ha creado o cambiado la farmacia.
id, tenant_id, farmacia_id, key, name, tag, emoji, description, canvas_w, canvas_h, elements, html, html_manual, is_base, is_active, min_plan_code, created_at, updated_at
Resultados
Un resumen por envío. El detalle por cliente de cada campaña se descarga además en CSV desde Resultados.
id, tenant_id, farmacia_id, campaign_id, automation_id, audience_id, event_type, channel, recipients, delivered, opened, clicked, revenue, metadata, created_at
segmentos y audiencias
- Formato
- JSON
- Contenido
segmentos.json
Dos listas: segmentos y clientes_anadidos_a_mano.
Segmentos
id, tenant_id, farmacia_id, name, description, audience_type, conditions, tags, is_active, estimated_clients, last_preview, last_calculated_at, last_campaign_at, created_by_user_id, created_at, updated_at
Clientes añadidos a mano
id, tenant_id, farmacia_id, audience_id, external_client_code, added_by_user_id, added_at
reglas del programa (puntos, niveles y vales)
- Formato
- JSON
- Contenido
programa.json
Con programa, reglas_de_puntos (cada una con sus condiciones), exclusiones, prioridades y niveles_y_estados. Los vales van en vales.csv.
Programa
programa_inicio_at, puntos_por_euro, canje_codigonacional, vale_codigonacional
Reglas de puntos
id, tenant_id, farmacia_id, rule_name, description, rule_type, advanced_priority, scope, scope_value, accumulation_type, points_value, multiplier, min_purchase_amount, starts_at, ends_at, is_active, created_at, updated_at; y sus condiciones: id, rule_id, field, operator, value, created_at
Exclusiones y prioridades
id, tenant_id, farmacia_id, name, exclusion_type, value, description, is_active, created_by, created_at, updated_at; y las prioridades: id, tenant_id, farmacia_id, scope, priority_order, is_active, created_at, updated_at
Niveles y estados
id, tenant_id, farmacia_id, new_days, active_days, recent_days, risk_days, dormant_days, silver_min_spent, silver_min_tickets, gold_min_spent, gold_min_tickets, platinum_min_spent, platinum_min_tickets, vip_min_spent, vip_min_tickets, frequency_warning_ratio, frequency_danger_ratio, created_at, updated_at
diseño de la tarjeta
- Formato
- JSON e imágenes
- Contenido
tarjeta.json
El diseño de la tarjeta. El logo y la cabecera van como enlace (logo_url, strip_url) o, si se subieron como imagen, en base64 (logo_data, strip_data).
id, tenant_id, farmacia_id, bg_color, text_color, accent_color, middle_title_color, pharmacy_name, slogan, phone, address, website, schedule, welcome_message, logo_url, strip_url, logo_data, strip_data, banner_modo, banner_color, banner_encuadre, logo_encuadre, logo_fondo, reverso_enlaces, show_logo, show_pharmacy_name, show_header_metric, header_field, header_field_label, primary_field, primary_field_label, middle_mode, secondary_fields, auxiliary_fields, bottom_fields, info_fields, info_notification_text, info_client_text, info_card_text, info_level_text, info_joined_at_text, info_rewards_text, info_loyalty_text, info_help_text, info_privacy_text, info_terms_text, is_active, created_at, updated_at
tarjeta/
Las imágenes subidas, como ficheros: logo y cabecera.
registro de auditoría
- Formato
- CSV (UTF-8)
- Contenido
registro_auditoria.csv
Quién hizo qué y cuándo: descargas, campañas y cambios.
id, tenant_id, farmacia_id, user_id, user_email, accion, filas, filtros, ip, creado_en
Todo se entrega junto en un ZIP. Los CSV van separados por punto y coma, con el nombre de cada columna en la primera fila, y un fichero LEEME.txt indica cuántos registros tiene cada fichero. Qué significa cada campo, y qué se puede descargar directamente desde el panel, lo explica la página de exportación de datos.
No se incluyen: el código y el diseño de la Plataforma, el agente de sincronización y sus consultas, el catálogo maestro de productos ni las credenciales de acceso.
Para pedir la exportación o el cambio: privacidad@farmaloyalty.com. Plazos: preaviso máximo de 2 meses, transición máxima de 30 días (prorrogable una vez a petición del cliente) y 30 días más para recuperar los datos. Sin coste.