Esta Política de Privacidade descreve como a Surf Booking ("nós", "a Plataforma" ou "surfbooking.eu") recolhe, utiliza e protege os teus dados pessoais, em conformidade com o Regulamento Geral sobre a Proteção de Dados (RGPD — Regulamento (UE) 2016/679) e a Lei n.º 58/2019.
A Surf Booking está disponível em 175 países — incluindo os 27 Estados-Membros da UE (estatuto de trader DSA confirmado pela Apple App Store a 8 de Maio de 2026), o Reino Unido, o Brasil, os EUA, a Suíça e outros. A presente política aplica-se a todos os utilizadores, independentemente do país, com base legal RGPD por residência ou alvo da oferta.
1. Responsável pelo Tratamento
Operador da plataforma: SurfBooking
País: Portugal (UE) — Lei aplicável: Regulamento (UE) 2016/679 (RGPD) e Lei n.º 58/2019
Marca registada: SurfBooking® — INPI n.º 9628785 (Portugal)
Nota DSA / trader status: SurfBooking opera como prestador de serviços intermediários (marketplace) ao abrigo do Regulamento (UE) 2022/2065 — Digital Services Act. Estatuto de trader confirmado na App Store da Apple a 8 de Maio de 2026 para os 27 Estados-Membros da UE.
Para as reservas que celebras com escolas de surf, a escola é a controladora dos dados de reserva e a Surf Booking actua como subcontratante (processadora) — ver Compromisso B2B para os termos de Joint Controllership (Art. 26.º) e o DPA (Art. 28.º).
2. Dados que Recolhemos
2.1 Conta e perfil
Identidade: nome de utilizador, email, telefone, palavra-passe (bcrypt cost 12 — nunca legível por nós)
Perfil: fotografia de avatar, data de nascimento, género
Identificação fiscal: NIF / VAT ID / tax ID (utilizadores ou escolas, para facturação). NIF de escolas é guardado encriptado em coluna dedicada (AES-256-GCM)
Login social: Google ID (se utilizares "Sign in with Google")
Código de referência: código próprio + código de quem te referiu
2.2 Dados físicos e de surf
Medidas: altura, peso, tamanho de botas — usados para calcular automaticamente fato, prancha, leash, botas e barbatanas
Nível e experiência: nível declarado (iniciante, intermédio, avançado) e tempo de surf
2.3 Dados médicos e de segurança
Saúde: condições médicas, alergias, restrições alimentares — partilhados apenas com a escola onde reservas, para tua segurança durante a aula. Categoria especial RGPD Art. 9.º — base legal: consentimento explícito + interesse vital (Art. 9.º(2)(a)+(c))
Emergência: nome e telefone do contacto de emergência
2.4 Waivers e assinaturas digitais
Assinatura SVG: traçado vetorial recolhido ao aceitar a declaração de responsabilidade antes da aula. Não é dado biométrico — é um simples traçado.
Assinatura do encarregado de educação: se fores menor, o teu tutor legal assina por ti
Hash SHA-256 da assinatura é arquivado para fins probatórios (insurance + legal)
2.5 Reservas, packs e atividade
Reservas: histórico de aulas reservadas, cancelamentos, no-shows, packs e bundles adquiridos, vouchers de oferta
Check-ins: registos de presença (QR + códigos de 6 dígitos, incluindo check-ins offline sincronizados posteriormente)
Avaliações e ratings: reviews que deixas sobre escolas e instrutores
Surf Passport: "passaporte" digital com selos por aula completada, incluindo zona/spot/país. Usado em partilha pública mediante token revogável
2.6 Comunicações
Chat: mensagens trocadas com escolas, instrutores e suporte SurfBooking
Chat com IA: mensagens enviadas ao assistente. Antes de saírem para o fornecedor de IA, executamos regex de redação PII que remove email, telefone, NIF, IBAN, CC e tokens.
Email: emails transaccionais (confirmações, lembretes, recibos, recuperação de palavra-passe)
WhatsApp Business / Meta: notificações transacionais opcionais às escolas — número de telefone como identificador, sem PII de aluno no corpo
2.7 Localização
GPS do dispositivo: usado em tempo real, com a app aberta, para mostrar praias e escolas próximas e calcular distâncias. Não persistimos coordenadas brutas no servidor
Localização do passport stamp: a aula confere um carimbo associado à zona/spot da escola — não às tuas coordenadas pessoais
2.8 Dados técnicos e do dispositivo
Push notifications: token Expo (identificador opaco do dispositivo) para entregar push
Câmara: acesso temporário para leitura de QR de check-in. Não gravamos imagens
Logs de erro: stack traces e crashes enviados ao Sentry com PII redactada
IP, user-agent: em logs anti-fraude e auditoria, retidos com hash quando possível
2.9 Pagamentos
Pagamentos processados exclusivamente pela Stripe (PCI DSS Level 1). Não armazenamos número de cartão, CVV, expiração nem dados bancários
Guardamos: stripe_customer_id, stripe_account_id (escolas Connect), payment_intent_id, refund_id, status, montante, moeda — para reconciliação, reembolsos e auditoria
Escolas em Stripe Connect: razão social, NIF, IBAN/conta de payout, representante legal, documentos KYC — fornecidos pela escola directamente à Stripe; a Surf Booking apenas referencia o account_id
2.10 Documentos das escolas e instrutores
Escola: alvará/RNAAT, NIF, comprovativo de seguro de responsabilidade civil (URL), data de validade do seguro
Instrutor (Marketplace opcional): bio, certificações, anos de experiência, idiomas, foto de cartão de instrutor (FPS/ISA/equivalente). Estes documentos são privados — apenas verificadores admin os vêem; o instrutor controla o opt-in e pode revogar a qualquer momento
2.11 Imagens e galeria
Avatar: foto de perfil que carregas
Fotos de aulas: tiradas pela escola e associadas à reserva
Galeria pública da escola: imagens da escola publicadas pela própria
Todas as imagens em Cloudflare R2 (Frankfurt — UE), com URLs assinados quando privadas
2.12 Channel Manager — dados de terceiros (Art. 14.º)
Quando uma escola activa o Channel Manager, fazemos parsing de feeds iCal (Airbnb, Booking.com, Google Calendar, Outlook) que a escola configura. Recolhemos eventos: data, hora, duração, identificador opaco do hóspede.
Armazenamos a informação como external_lessons para que a escola veja num único calendário. Não recebemos email, telefone ou nome real do hóspede de Airbnb/Booking.com. A escola é responsável pela legalidade da publicação dos seus calendários.
2.13 Programa de afiliados (atribuição em qualquer dispositivo)
Quando entras na plataforma através do link ou QR de um parceiro afiliado, registamos um sinal técnico-funcional que permite atribuir comissão a esse parceiro durante 90 dias. Não é armazenada qualquer informação pessoal identificável como parte deste tracking.
Atribuição em qualquer dispositivo durante 90 dias. A partir do momento em que fazes a tua primeira reserva, mantemos a associação ao parceiro afiliado durante essa janela de 90 dias para que as reservas seguintes — feitas no site, na app iOS ou na app Android — sejam atribuídas corretamente, mesmo que mudes de browser ou apagues cookies. Guardamos apenas a referência interna ao parceiro e a data de expiração; nada que te identifique fora da plataforma.
A atribuição expira automaticamente após 90 dias. Se entretanto usares o link de outro afiliado, a atribuição passa para esse parceiro e a janela reinicia (último click ganha). Podes pedir a remoção a qualquer momento via [email protected], ou eliminar a tua conta — a referência é apagada automaticamente nesse caso.
Reservas confirmadas são associadas à atribuição. A comissão é paga ao afiliado dentro do calendário acordado.
O afiliado nunca tem acesso aos teus dados pessoais. No portal privado dele, o afiliado vê apenas contadores agregados — número de clicks no link, número total de reservas atribuídas, comissão acumulada e estado dos pagamentos. Não vê o teu nome, email, telefone, histórico de localização nem que escola ou praia escolheste. A correspondência entre ti e o afiliado acontece exclusivamente no nosso servidor, vinculada à tua conta de utilizador da Surf Booking (não a fingerprinting de dispositivo). Mais detalhe na cláusula 8.1 dos Termos.
2.14 Stock e equipamento (informativo, opt-in da escola)
Escolas que activam stock-tracking veem um relatório agregado dos tamanhos de fato/prancha/leash/botas calculados a partir das reservas, sem expor o nome individual do aluno. Permite à escola comprar stock alinhado com a sua procura real. Strictly informational — nunca bloqueia reservas.
2.15 Analytics agregados
Recolhemos analytics anónimos e agregados (visualizações de página/ecrã, taxas de conversão, padrões de uso) para melhorar o produto. Estes dados não te identificam individualmente. Retidos 180 dias e depois apagados.
3. Para que Usamos os Teus Dados
Criar e gerir a tua conta
Processar e confirmar reservas (individuais, packs, bundles, express, corporate)
Calcular automaticamente tamanhos de equipamento
Partilhar informação médica/emergência com a escola para tua segurança durante a aula
Enviar confirmações, lembretes (T-24h, T-2h), recibos, notificações push e emails
Mostrar escolas e praias ordenadas por proximidade
Disponibilizar previsões e condições de mar (sem partilhar PII com fornecedores meteorológicos)
Disponibilizar assistente IA com PII redactada na origem
Recolher e arquivar waivers (com hash) para conformidade legal e de seguro
Processar pagamentos via Stripe Connect e gerir reembolsos automáticos por escalões
Gerir o Surf Passport (carimbos por aula) e a sua partilha mediante token revogável
Manter o Marketplace de Instrutores opcional (verificação manual de cartões)
Sincronizar Channel Manager (iCal de OTA/calendário pessoal)
Obrigação legal (Art. 6.º(1)(c)) — facturação, IRC, retenção fiscal de 10 anos, DAC7 (Decreto-Lei 73/2023), retenção de waivers para seguros
Interesse vital (Art. 6.º(1)(d) + Art. 9.º(2)(c)) — partilha de dados médicos/emergência com a escola para proteção da tua integridade física durante uma aula
O consentimento pode ser retirado a qualquer momento sem afectar a licitude do tratamento anterior (Art. 7.º(3)).
5. Subcontratantes (Art. 28.º) e Transferências Internacionais (Art. 44.º-49.º)
Não vendemos, alugamos, trocamos nem cedemos os teus dados para fins comerciais. Trabalhamos apenas com os subcontratantes técnicos abaixo, cada um vinculado por DPA conforme o RGPD Art. 28.º:
Stripe Payments Europe (Irlanda) + Stripe Inc. (EUA) — pagamentos cartão, payouts, KYC de escolas Connect. Mecanismo: EU–US Data Privacy Framework + SCCs. Privacy
Railway (UE) — alojamento de aplicação e PostgreSQL. Privacy
Cloudflare R2 (Frankfurt — UE) — armazenamento de imagens e documentos. Privacy
Expo (EUA) — entrega de push notifications. Apenas título e corpo; sem PII no payload. Mecanismo: EU–US DPF + SCCs. Privacy
Sentry (UE) — error logging com PII redactada antes do envio. Privacy
xAI / Grok (EUA) — assistente IA + traduções. PII regex-redactada antes do envio (email/telefone/NIF/IBAN/CC). Mecanismo: EU–US DPF + SCCs + minimização. Privacy
Groq (EUA) — transcrição de notas de voz (áudio) e classificação de segurança de mensagens; texto passa por redação PII antes do envio; EU-US Data Privacy Framework + SCCs
WhatsApp Business / Meta (EUA com servidores UE) — notificações transacionais opcionais. Mecanismo: EU–US DPF + SCCs
InvoiceExpress (Portugal) — emissão de facturas SurfBooking → escolas (apenas dados da escola: razão social, NIF, montantes; nunca PII de aluno). Certificado AT
Fontes meteorológicas internas — previsão. Sem PII enviada
Google Analytics 4 (consentimento) — apenas se aceitares "Aceitar tudo" no banner. Pseudo-anonimizado, IP truncado, Consent Mode v2. Negado por defeito
Google Maps (chave restrita) — para renderizar mapas. Sem PII enviada além do IP
Escolas de surf parceiras — controladora própria da reserva. Recebe nome, foto, contacto, dados médicos/emergência e detalhes da reserva. Cada escola opera num silo isolado (anti-leak — ver server/security/schoolScope.ts)
Transferências para fora do EEE assentam em (i) decisão de adequação EU–US Data Privacy Framework de 10 de Julho de 2023 onde aplicável, e (ii) Cláusulas Contratuais-Tipo da UE (Módulo 3, processador-a-subprocessador) celebradas com cada fornecedor.
Lista completa para escolas (com fluxo, localização e mecanismo) em /compromisso-escolas. DPA assinado disponível mediante pedido a [email protected].
6. Os Teus Direitos (RGPD Art. 15.º-22.º)
Tens, sobre os teus dados pessoais, os seguintes direitos. A maioria pode ser exercida directamente na app/site:
Acesso (Art. 15.º) — exportar os teus dados em JSON (Perfil → Definições → Exportar dados)
Rectificação (Art. 16.º) — editar nome, email, telefone, medidas, etc. directamente em Perfil
Apagamento ("direito ao esquecimento", Art. 17.º) — Perfil → Definições → Eliminar Conta. Ou em surfbooking.eu/eliminar-conta
Portabilidade (Art. 20.º) — JSON estruturado e legível por máquina
Oposição (Art. 21.º) — opor-te ao tratamento por interesse legítimo (excepto onde haja motivo legítimo imperioso)
Não ser sujeito a decisão automatizada (Art. 22.º) — não tomamos decisões automatizadas que produzam efeitos jurídicos sobre ti
Retirada do consentimento (Art. 7.º(3)) — Definições → Notificações
Resposta-alvo a pedidos: 48 horas. Limite legal: 1 mês, prorrogável +2 meses para pedidos complexos (Art. 12.º(3)). Email: [email protected].
7. Segurança dos Dados (Art. 32.º)
Aplicamos medidas técnicas e organizacionais adequadas, incluindo:
HTTPS/TLS 1.2+ obrigatório em toda a plataforma + HSTS
Palavras-passe com bcrypt (cost factor 12) — não recuperáveis nem por nós com acesso à BD
JWT com expiração curta + rotação
Rate-limiting + lockout após múltiplas tentativas falhadas
Pagamentos delegados na Stripe (PCI DSS Level 1) — nunca tocamos cartão
NIF de escolas guardado encriptado (AES-256-GCM com chave em variável de ambiente)
Acesso à BD restrito por IP e por role; registos de auditoria em audit_logs
Anti-leak entre escolas via server/security/schoolScope.ts (uma escola nunca vê alunos de outra escola)
Redação PII regex antes de qualquer chamada a IA externa.
Backups encriptados em 3 silos: Railway snapshot + Cloudflare R2 (UE) + Backblaze B2 (cifragem cliente AES-256). Rotação 14 dias. Cópia adicional encriptada num Mac local em LaunchAgent
Cloudflare WAF + anti-DDoS + anti-scraping em endpoints públicos
Monitoria contínua via Sentry com alerta a operações 24/7
SLA de violação: notificamos a escola controladora em 24h após detecção (deixando-lhe 48h até ao prazo CNPD do Art. 33.º)
8. Retenção
Conta activa: dados mantidos enquanto a conta estiver activa
Eliminação de conta: dados pessoais directos apagados em até 30 dias; dados em backup expiram na rotação normal de 14 dias após esse prazo
Reservas: mantidas para fins fiscais/contabilísticos durante 10 anos (lei portuguesa)
Waivers + assinatura SVG + hash: 7 anos (requisito de seguro/responsabilidade civil)
Mensagens de chat: apagadas com a conta, excepto em conversas onde a outra parte é controladora autónoma (escola)
Logs de erro (Sentry): 90 dias
Logs de auditoria de admin: 5 anos (defesa contra fraude)
Backups encriptados: rotação de 14 dias
Dados fiscais (facturação): 10 anos
Dados anonimizados: indefinidamente, para analytics agregados (não te identificam)
9. Cookies e Armazenamento Local
A app móvel não usa cookies. Usa armazenamento local seguro para token de sessão, preferências e cache de dados.
O website usa os seguintes cookies/armazenamento:
Preferência de idioma (técnico, 1 ano) — guarda a tua escolha PT/EN
Preferências de consentimento (técnico, armazenado localmente) — recorda se aceitaste cookies analíticos
Sinal de atribuição de afiliado (funcional, 90 dias) — permite creditar uma reserva ao parceiro afiliado correto. Sem informação pessoal identificável
Cookies de sessão (técnicos, fim da sessão) — para utilizadores autenticados
Google Analytics 4 (analítico, opt-in, retenção 2 anos) — só após "Aceitar tudo" no banner. Negado por defeito via Consent Mode v2; IP anonimizado
Retenção: cookies essenciais expiram no fim da sessão; preferência de idioma 1 ano; consentimento até remoção; analítica 2 anos.
Podes alterar as tuas preferências em qualquer altura no link "Cookies" no rodapé do site.
10. Menores
A idade de consentimento digital em Portugal é 13 anos (Lei 58/2019 Art. 16.º(1)). A Surf Booking aplica esta regra:
Menores de 13 anos não podem criar conta própria. A reserva é feita pelo encarregado de educação
Aulas de nível "kids" (rácio 1:4) destinam-se a menores de 12 anos e exigem assinatura digital do encarregado de educação no waiver
Não fazemos perfilamento de marketing sobre menores
Não tomamos decisões automatizadas que afectem menores
11. Alterações a esta Política
Notificamos alterações materiais por email e notificação na app, com pelo menos 15 dias de antecedência. A data de "Última atualização" no topo desta página reflecte sempre a versão activa. O histórico de versões está disponível mediante pedido.
12. Reclamações e Autoridade de Controlo
Tens o direito de apresentar queixa à autoridade portuguesa de proteção de dados:
This Privacy Policy describes how Surf Booking ("we", "the Platform" or "surfbooking.eu") collects, uses and protects your personal data, in compliance with the General Data Protection Regulation (GDPR — Regulation (EU) 2016/679) and Portuguese Law 58/2019.
Surf Booking is available in 175 countries — including the 27 EU member states (Apple App Store DSA trader status confirmed on 8 May 2026), the United Kingdom, Brazil, USA, Switzerland and others. This policy applies to all users regardless of country, with the GDPR as the legal basis where applicable by residence or by targeting.
1. Data Controller
Platform operator: SurfBooking
Country: Portugal (EU) — Applicable law: Regulation (EU) 2016/679 (GDPR) and Portuguese Law 58/2019
DSA / trader status: SurfBooking operates as an intermediary service provider (marketplace) under Regulation (EU) 2022/2065 — Digital Services Act. Trader status confirmed on the Apple App Store on 8 May 2026 for the 27 EU Member States.
For bookings you make with surf schools, the school is the controller of the booking data and Surf Booking acts as a processor — see B2B Commitment for the joint controllership terms (Art. 26) and DPA (Art. 28).
2. Data We Collect
2.1 Account and profile
Identity: username, email, phone number, password (bcrypt cost 12 — never readable by us)
Profile: avatar photo, date of birth, gender
Tax identification: NIF / VAT ID / tax ID (users or schools, for invoicing). School NIFs are stored encrypted in a dedicated column (AES-256-GCM)
Social login: Google ID (if you use "Sign in with Google")
Referral code: your own code + the code of whoever referred you
2.2 Physical and surf data
Measurements: height, weight, boot size — used to automatically size wetsuit, board, leash, boots and fins
Level and experience: declared level (beginner, intermediate, advanced) and surfing time
2.3 Medical and safety data
Health: medical conditions, allergies, dietary restrictions — shared only with the school where you book, for your safety during the lesson. GDPR Art. 9 special category — legal basis: explicit consent + vital interest (Art. 9(2)(a)+(c))
Emergency: emergency contact name and phone number
2.4 Waivers and digital signatures
SVG signature: a vector trace collected when accepting the liability waiver before a lesson. Not biometric data — just a trace
Guardian signature: if you are a minor, your legal guardian signs on your behalf
SHA-256 hash of the signature is archived for evidentiary purposes (insurance + legal)
2.5 Bookings, packs and activity
Bookings: lesson booking history, cancellations, no-shows, packs and bundles purchased, gift vouchers
Check-ins: attendance records (QR + 6-digit codes, including offline check-ins synced later)
Reviews and ratings: reviews you leave on schools and instructors
Surf Passport: a digital "passport" with stamps per completed lesson, including zone/spot/country. Used in public sharing via a revocable token
2.6 Communications
Chat: messages exchanged with schools, instructors and SurfBooking support
AI chat: messages sent to the assistant. Before they leave for the AI provider, we run a PII redaction regex that strips email, phone, NIF, IBAN, ID numbers and tokens.
WhatsApp Business / Meta: optional transactional notifications to schools — phone number as identifier, no student PII in body
2.7 Location
Device GPS: used in real time, with the app open, to show nearby beaches and schools and compute distances. We do not persist raw coordinates on the server
Passport stamp location: a stamp is associated with the school's zone/spot — not your personal coordinates
2.8 Technical and device data
Push notifications: Expo token (opaque device identifier) to deliver pushes
Camera: temporary access to read check-in QR codes. We do not store images
Error logs: stack traces and crashes sent to Sentry with PII redacted
IP, user-agent: in anti-fraud and audit logs, hashed when possible
2.9 Payments
Payments processed exclusively by Stripe (PCI DSS Level 1). We do not store card numbers, CVV, expiry or bank details
We do store: stripe_customer_id, stripe_account_id (Connect schools), payment_intent_id, refund_id, status, amount, currency — for reconciliation, refunds and audit
Schools on Stripe Connect: legal name, NIF/VAT, payout IBAN/account, legal representative, KYC documents — provided by the school directly to Stripe; Surf Booking only references the account_id
Instructor (optional Marketplace): bio, certifications, years of experience, languages, instructor card photo (FPS/ISA/equivalent). These documents are private — only admin verifiers see them; the instructor controls opt-in and can revoke at any time
2.11 Images and gallery
Avatar: profile photo you upload
Lesson photos: taken by the school and associated with your booking
Public school gallery: images published by the school itself
All images on Cloudflare R2 (Frankfurt — EU), with signed URLs when private
2.12 Channel Manager — third-party data (Art. 14)
When a school activates the Channel Manager, we parse iCal feeds (Airbnb, Booking.com, Google Calendar, Outlook) configured by the school. We collect events: date, time, duration, opaque guest identifier.
The information is stored as external_lessons so the school sees a unified calendar. We do not receive email, phone or real name of guests from Airbnb/Booking.com. The school is responsible for the lawfulness of publishing its own calendars.
2.13 Affiliate program (cookies + attribution)
When you enter the platform through an affiliate partner's link or QR, we record a technical-functional signal that allows commission to be attributed to that partner for 90 days. No personally identifiable information is stored as part of this tracking.
Cross-device attribution for 90 days. From the moment you make your first booking we keep the association with the affiliate partner for that 90-day window so subsequent bookings — made on the website, the iOS app or the Android app — are attributed correctly, even if you change browser or clear cookies. We only store the internal reference to the partner and the expiry date; nothing that identifies you outside the platform.
The attribution expires automatically after 90 days. If you use another affiliate's link in the meantime, attribution moves to that partner and the window restarts (last-click wins). You can request removal at any time via [email protected], or by deleting your account — the reference is removed automatically in that case.
Confirmed bookings are matched to the attribution. The commission is paid to the affiliate within the agreed schedule.
The affiliate never has access to your personal data. In their private portal, the affiliate only sees aggregated counters — number of clicks on the link, total bookings attributed, accrued commission and payout status. They do not see your name, email, phone, location history or which school or beach you chose. The matching between you and the affiliate happens exclusively on our server, tied to your Surf Booking user account (not to device fingerprinting). More detail in section 8.1 of the Terms.
2.14 Stock and equipment (informational, school opt-in)
Schools that opt into stock-tracking see an aggregated report of wetsuit/board/leash/boots sizes derived from bookings, without exposing individual student names. It allows the school to align stock with actual demand. Strictly informational — never blocks bookings.
2.15 Aggregated analytics
We collect anonymous, aggregated analytics (page/screen views, conversion rates, usage patterns) to improve the product. This data does not identify you individually. Retained for 180 days, then deleted.
3. How We Use Your Data
Create and manage your account
Process and confirm bookings (individual, packs, bundles, express, corporate)
Automatically calculate equipment sizes
Share medical/emergency information with the school for your safety during the lesson
Send confirmations, reminders (T-24h, T-2h), receipts, push notifications and emails
Show schools and beaches sorted by proximity
Provide forecasts and sea conditions (without sharing PII with weather providers)
Provide the AI assistant with PII redacted at source
Collect and archive waivers (with hash) for legal and insurance compliance
Process payments via Stripe Connect and manage automatic tier-based refunds
Manage the Surf Passport (per-lesson stamps) and its sharing via revocable token
Maintain the optional Instructor Marketplace (manual card verification)
Sync the Channel Manager (iCal from OTAs/personal calendar)
Attribute commissions to affiliates
Detect and prevent fraud, abuse, scraping
Comply with legal obligations (tax, accounting, DAC7)
Provide GDPR data export (Art. 20)
4. Legal Basis for Processing (Art. 6)
Performance of contract (Art. 6(1)(b)) — bookings, payments, account management, SaaS contract with schools
Consent (Art. 6(1)(a)) — marketing notifications, non-essential push, analytics cookies, special-category data (health) under Art. 9(2)(a)
Legal obligation (Art. 6(1)(c)) — invoicing, corporate income tax, 10-year tax retention, DAC7 (Decreto-Lei 73/2023), waiver retention for insurance
Vital interest (Art. 6(1)(d) + Art. 9(2)(c)) — sharing medical/emergency data with the school to protect your physical integrity during a lesson
Consent can be withdrawn at any time without affecting the lawfulness of prior processing (Art. 7(3)).
5. Sub-processors (Art. 28) and International Transfers (Art. 44–49)
We do not sell, rent, swap or transfer your data for commercial purposes. We work only with the technical sub-processors below, each bound by a DPA compliant with GDPR Art. 28:
Stripe Payments Europe (Ireland) + Stripe Inc. (USA) — card payments, payouts, KYC for Connect schools. Mechanism: EU–US Data Privacy Framework + SCCs. Privacy
Railway (EU) — application hosting and PostgreSQL. Privacy
Groq (USA) — voice note transcription (audio) and message safety classification; text goes through PII redaction before send; EU-US Data Privacy Framework + SCCs
WhatsApp Business / Meta (USA with EU servers) — optional transactional notifications. Mechanism: EU–US DPF + SCCs
Google Analytics 4 (consent-gated) — only if you accept "Accept all" on the banner. Pseudo-anonymised, IP-truncated, Consent Mode v2. Denied by default
Google Maps (restricted key) — to render maps. No PII sent beyond the IP
Partner surf schools — separate controllers of bookings. They receive name, photo, contact, medical/emergency data and booking details. Each school operates in an isolated silo (anti-leak — see server/security/schoolScope.ts)
Transfers outside the EEA rely on (i) the EU–US Data Privacy Framework adequacy decision of 10 July 2023 where applicable, and (ii) EU Standard Contractual Clauses (Module 3, processor-to-sub-processor) executed with each provider.
We apply appropriate technical and organisational measures, including:
Mandatory HTTPS/TLS 1.2+ across the platform + HSTS
Passwords with bcrypt (cost factor 12) — not recoverable, even by us with DB access
JWT with short expiry + rotation
Rate-limiting + lockout after multiple failed attempts
Payments delegated to Stripe (PCI DSS Level 1) — we never touch the card
School NIF stored encrypted (AES-256-GCM with key in environment variable)
DB access restricted by IP and role; audit trail in audit_logs
Anti-leak between schools via server/security/schoolScope.ts (a school never sees another school's students)
PII regex redaction before any external AI call.
Encrypted backups across 3 silos: Railway snapshot + Cloudflare R2 (EU) + Backblaze B2 (client-side AES-256). 14-day rotation. Additional encrypted copy on a local Mac via LaunchAgent
Cloudflare WAF + anti-DDoS + anti-scraping on public endpoints
Continuous monitoring via Sentry with 24/7 ops alerts
Breach SLA: we notify the school controller within 24 hours of detection (leaving them 48h to meet the CNPD Art. 33 deadline)
8. Retention
Active account: data retained while the account is active
Account deletion: direct personal data deleted within 30 days; backup data expires on the regular 14-day rotation after that
Bookings: retained for tax/accounting purposes for 10 years (Portuguese law)
Chat messages: deleted with the account, except in conversations where the other party is an autonomous controller (school)
Error logs (Sentry): 90 days
Admin audit logs: 5 years (anti-fraud defence)
Encrypted backups: 14-day rotation
Tax records (invoicing): 10 years
Anonymised data: indefinitely, for aggregated analytics (does not identify you)
9. Cookies and Local Storage
The mobile app uses no cookies. It uses secure local storage for the session token, preferences and data cache.
The website uses the following cookies/storage:
Language preference (technical, 1 year) — stores your PT/EN choice
Consent preferences (technical, stored locally) — remembers whether you accepted analytics cookies
Affiliate attribution signal (functional, 90 days) — lets us credit a booking to the correct affiliate partner. No personally identifiable information
Session cookies (technical, end of session) — for authenticated users
Google Analytics 4 (analytical, opt-in, 2-year retention) — only after "Accept all" on the banner. Denied by default via Consent Mode v2; IP anonymised
Retention: essential cookies expire at session end; language preference 1 year; consent stored until removed; analytics 2 years.
You can change your preferences at any time via the "Cookies" link in the site footer.
10. Minors
The digital age of consent in Portugal is 13 years (Law 58/2019 Art. 16(1)). Surf Booking applies this rule:
Children under 13 cannot create their own account. Bookings are made by the legal guardian
"Kids" level lessons (SurfBooking ratio 1:4) target children under 12 and require digital guardian signature on the waiver
We do not run marketing profiling on minors
We do not make automated decisions affecting minors
11. Changes to This Policy
We will notify you of material changes by email and in-app notification, with at least 15 days' notice. The "Last updated" date at the top of this page always reflects the active version. Version history available on request.
12. Complaints and Supervisory Authority
You have the right to lodge a complaint with the Portuguese data protection authority: