Privacy policy

Last updated:

This policy explains how casflows (https://casflows.com) processes personal data when you use the service: a tool for people who manage listings on Airbnb and Booking.com that reads each listing's iCal calendar, organises cleanings, sends notices via Telegram, keeps the events in Google Calendar and, if you ask for it, publishes a secret link with the dates of your manual bookings so Airbnb can block them.

It starts with a summary and then goes into detail. We wrote it to be understood without a law degree. If anything is unclear, write to us and we will explain it.

Summary#

What dataWho decidesWhy and on which basisDetails
Your account and your use of casflows (sign-up, access, security, support, acceptance of the legal terms)We (ENBA HOMES, S.L.), as controllerProviding the service you sign up for (contract) and protecting it (legitimate interest)Data · Purposes
The data you manage with casflows: properties, reservations, cleanings, your team, their payments and incidents, Airbnb income, and guestsYou (the host or management company), as controller. We only follow your instructions (processor)You decide the purposes and the legal basisWho decides · Guests · Team
The information requests you send us from the home pageWe, as controllerAnswering you (pre-contractual steps and legitimate interest)Information requests
The push notifications you turn on on your phone or computer (each device’s subscription and which alerts you want)We (ENBA HOMES, S.L.), as controllerSending you the alerts you ask for (contract)Push notifications

Who the controller is#

  • Controller: ENBA HOMES, S.L.
  • NIF (Spanish tax ID): B70892401
  • Registered office: Camino del Prado 1, Bloque 4, Bajo A, 29630 Benalmádena, Málaga, España
  • Registration details: Mercantile Register of Málaga, electronic folio, sheet MA-181808, entry 1.ª
  • Privacy email: privacidad@casflows.com
  • Service: casflows — https://casflows.com

The controller is a Spanish company, established in Spain, offering the service to customers in Spain and the rest of the European Union. We apply Regulation (EU) 2016/679 (GDPR) and the Spanish Organic Law 3/2018 (LOPDGDD).

Who decides about each piece of data#

Depending on the operation, we are the controller (we decide why and how the data is processed) or a processor (we process it on behalf of whoever uses casflows to manage their properties, whom we call “the host”, only on their instructions, under the data processing agreement (Annex I to the terms), Art. 28 GDPR):

OperationWho decides (controller)Our role
Your account and those of the people who access it: sign-up, sign-in, acceptance of the legal terms, support, service communications, security and technical logs. Also the connection of your own Google Calendar (its credentials and the email of the connected account)WeController
Information requests from the home pageWeController
The controller details you give us when accepting the data processing agreement (identity, privacy contact, capacity and declarations) and the record of each acceptanceWeController
Properties, the reservations coming from the iCal feed or that you create by hand, cleanings, the people in your team and their paymentsThe hostProcessor
Guest names and party sizes (forwarding of Airbnb emails, or entered by you in a booking)The hostProcessor
Telegram notices to your team and receiving their incident and restocking reportsThe host decides which notices are sent, to whom and what is collectedProcessor: we send and receive those messages through the Telegram API
Incident photosThe host decides whether their team sends them, who sees them and whether to delete them earlier or keep themProcessor: we store them and delete them within the periods in Retention
Confirmation of finished cleaning and photos (optional)The host decides whether finished cleanings are confirmed and, where they are, whether photos are requested (for the whole account or per property), and who sees themProcessor: we store them and delete them within the periods in Retention
Incident voice notesThe host: they are reports from their team about their propertiesProcessor: we turn them into text with Mistral AI and only store the text; the audio is not stored
Google Calendar events: the content of the events we create in your calendar and in that of the people in your team who connect theirs, and those people’s connectionThe host decides which events and what content; each person in your team decides whether to connect their calendarProcessor
“Block on Airbnb” link (export of the dates of your manual bookings)The host: asks for it, decides where to paste it and can invalidate itProcessor: we publish it on your instructions
Instructions history (which configuration changes affecting the processing were made, when and by whom)The host: they are their instructionsProcessor: we keep it to document their instructions (Art. 28(3)(a) GDPR)

Management companies. If a management company uses casflows for other owners’ properties, it declares its role when accepting the data processing agreement: if it decides about the data, it is the controller and casflows its processor; if it processes the data on behalf of each owner, the owner is the controller, the management company its processor and casflows acts as the management company’s sub-processor (see Management companies working for owners). In this policy, “the host” is whoever decides in each case.

Telegram. When the host sets up notices, we, as processor and on their instructions, send them to each person who has linked the bot through the Telegram API, and the same way we receive what those people send to the bot. Telegram transmits and stores those messages as the provider of the messaging service, under its own terms and privacy policy. We do not have a data processing agreement signed with Telegram: it does not offer one to those who use its bot API. That is why we only send through Telegram what each notice needs, and linking the bot is always the person’s own decision. Your account’s bot. If you turn it on, the bot your team uses is created by you in your own Telegram account and belongs to you: you manage it in @BotFather (you can delete it, change its token or restrict it whenever you like). Telegram tells us you have created it and gives us its token, the credential we use to operate it; we store it encrypted, only use it to send and receive your team’s messages on your behalf, and delete it when the bot is retired or your account is closed. Telegram remains the same messaging provider and is covered by what is said above. Until you have a bot of your own, notices go out through casflows’ shared bot; if yours stops working, those notices wait until you reconnect it.

Confidentiality. The people in our organisation who can access personal data (support, systems administration and incident response) are bound by a duty of confidentiality that continues after their relationship with us ends (Article 5 LOPDGDD).

What data we process#

CategoryDataSource
AccountName, email, password (hash only, handled by Supabase Auth), account name, time zone, language, reminder time, subscription status and trial end date. If you sign in with Google: your name, email and Google identifier.You, when signing up or configuring the account
Acceptance of the legal termsDate and time you accepted these terms, this policy and the data processing agreement. When you accept the data processing agreement, also: the controller details (natural person or company, name or company name, tax ID (NIF/CIF), address and privacy email), who accepted it and in which capacity (account holder or representative), the role of a management company, the declarations of professional activity and of authority, the version, the language and the fingerprint (SHA-256) of the accepted text.Recorded at sign-up or when you accept a new version; the controller details, you, when accepting the data processing agreement or updating them in Settings
Instructions historyThe configuration changes that affect the processing (for example, adding a team member and changing their boxes, connecting a Google Calendar, turning on forwarding or marking an incident to keep it for a claim), with the date and the user who made them. It stores no guest data.Recorded automatically when those changes are made in the app
PropertiesListing name, check-in and check-out times, time zone, notes for the team and the iCal URLs of the Airbnb and Booking.com calendars. iCal URLs are stored encrypted (AES-256-GCM) and never shown in full.You
ReservationsThe iCal event identifier (UID), the check-in and check-out dates and the Airbnb confirmation code, plus the notes you choose to add: the note for the team, which the people in your team assigned to that booking receive (in their Telegram reminder and in their Google Calendar, if they have connected it), and the internal note, which only the people with access to your account can see and which is never sent to anyone. The iCal feed does not include your guests’ names or phone numbers. For a manual booking, only its dates, the notes and, if you enter it, the amount you received for it (a figure about your business, not about the guest: it is used for your income statistics and, if you set them up, for your management fees and the owner report).The iCal calendars (Airbnb, Booking.com) you give us, or you, if you create a manual booking
Dates blocked on AirbnbOnly the start and end day of each period you block on Airbnb, to show it to you in the casflows calendar (the iCal feed does not include the reason). If you have Google Calendar connected, each block appears as an all-day event only in the account's Google Calendar, never in those of the people in your team (blocks without a title only if they start within the next 90 days). If you give one a title (for example, “Maintenance”), we store it and the event shows it. They never create cleanings or notifications. Write only what is necessary in the title, as with notes.The iCal calendars (Airbnb, Booking.com) you give us
“Block on Airbnb” linkIf you ask for it, a secret link per property that publishes the occupancy dates of your manual bookings. We only store its hash and an encrypted copy to show it to you again.You, when you ask for it
Guests at your properties (only if you turn on forwarding or enter them yourself)Guest name, number of guests (only the number of adults, children and infants), confirmation code and reservation dates. See Guests at your properties.The Airbnb emails you forward to your casflows address, or you, when you enter them in a booking
Booking.com bookings (only if you forward its “New booking!” emails)Booking number, property ID on Booking.com, check-in date and property name. See Guests at your properties.The Booking.com emails you forward to your casflows address
CleaningsDate, time window, urgency, assignee and status.Calculated from reservations
People in your teamName, label, what each of them does (cleanings, arrivals, seeing the guest’s name), once the person links the bot themselves, their Telegram chat identifier and, if the person connects their own Google Calendar, the data of that connection (see Data we receive from Google). If you give them access to casflows, the invitation email (see Retention); once they accept it, they have their own user like any other user of the account.You; the Telegram identifier and the Google Calendar connection data, the person themselves (when opening the bot link or connecting their own Google Calendar)
Your account’s Telegram botThe bot’s name and username, its status and its token, which we store encrypted. While the bot is being set up, the Telegram identifier of the person creating it and the name they have on Telegram, so that you can confirm you created it. While the bot exists, a fingerprint (hash) of the Telegram identifier of its holder, not the identifier itself, only to detect that the bot has passed to another owner; if that happens, we stop using it until you confirm it is still yours. For each person who writes to the bot, the match between their Telegram chat and their conversation in casflows; what they write is treated like the rest of your team’s notices.You, when creating the bot; Telegram, which tells us about the bot created and its token; each person in your team, when writing to it
Team paymentsCleaning types with their amount, the type and person attributed to each cleaning, closed payment periods (with the names, properties and amounts as they were when closed) and the payments and adjustments you record for each person (date, amount, payment method and comment) with the balance that results from them. Only the account owners can see them.You; casflows calculates the amounts from your cleanings
Airbnb incomeIf you upload an Airbnb earnings report: for each movement, the booking code, the check-in and check-out dates, the nights, the date of Airbnb’s payout, the amounts (gross, service fee, fast payout fee, cleaning, taxes and net), the adjustments and resolutions and the listing name. We never store the guest’s name or the bank details of the account holder that the file may contain: they are discarded when it is read. Only the account owners can see them. With them you can set your management fees per property (percentage, calculation base and VAT; this is business data of your account, and we do not store the owner’s name or tax ID) and download a PDF or CSV report for the owner of each property, with the amounts of each payout and the booking code, without the guest’s name or bank details. The report is generated when you download it and we do not store it; handing it to the owner is your decision as controller.You, when you upload the report you download from Airbnb and when you set your fees; the monthly totals, averages and fees are calculated by casflows
Booking.com incomeIf you upload a Booking.com payments statement: for each movement, the booking number, the check-in and check-out dates, the nights, the booking status, the date on which the payment is issued and the amounts (booking amount, commission, VAT on the commission, payment service charge and net), including commission adjustments. We never store the guest’s name or the payment ID that the file contains, nor any bank details: they are discarded when it is read. Only the account owners can see them and they are used for your income statistics and, if you set them up, for your fees and the owner report, without the guest’s name.You, when you upload the statement you download from Booking.com; the monthly totals, averages and fees are calculated by casflows
Incidents and restockingThe reports your team sends you through the Telegram bot: the text (written, or that of a voice note once transcribed), the photos (if they send any), the property, the date and who sent it; their status and the note you resolve them with; and, for restocking, what is missing in each property and when it is restocked. Each incident has a number and, if it was reported during a cleaning, that day’s cleaning. When the time to complete it ends, we notify via Telegram the person who sent it (with a summary) and the members of your team with access to casflows who have Telegram linked; and, when it is resolved, the person who sent it. Photos are kept in private storage and only the people in your account can see them, through temporary links that expire after 5 minutes (never public and with no bulk download).The people in your team, from the bot; the list of items for each property, you
Confirmation of finished cleaning and photos (optional)Each one, only if you turn it on (for the whole account or per property): the confirmation that a cleaning is finished (date and who confirms it) and, where you also ask for photos, the photos someone in your team sends through the bot when they finish a cleaning, showing how the property was left, who sent them and when. They may incidentally show guests’ belongings: ask your team to photograph only the property. They are kept in private storage and only the people in your account can see them, through temporary links that expire after 5 minutes. While a cleaning is not confirmed, as the next guest’s arrival approaches or the day ends, we ask the person who cleans (through Telegram or, if they use the app profile, with a notification; if the cleaning’s deadline —the next guest’s arrival or the property’s check-in— passes without it being marked, and again at night, we remind them) and notify, through Telegram and with the name that person has in the Team, the people on your team with access to casflows who have Telegram linked; when it is confirmed we also notify them (with the number of photos), except the person who confirmed it and the person who does that cleaning. Each person with access can turn these Telegram alerts off for themselves in Settings.The people in your team, from the bot
Team voice recordings (transcribed and not stored)If someone in your team reports an incident with a Telegram voice note (at most 2 minutes), we download it, turn it into text with Mistral AI and only store that text, as the incident text. The audio only exists while it is being transcribed: casflows does not store it. Until then we keep the identifier of the Telegram message, to download it and, once transcribed, delete it from the bot chat.The people in your team, from the bot
MessagesContent, recipient, date and outcome of reminders and notices sent via Telegram and of the service emails (for example, the summary of a closed payment period).Generated by the service
Google Calendar connectionEmail of the connected Google account, OAuth refresh token (encrypted), granted scopes, the identifier of the calendar casflows creates and of the events it creates in it.Google, when you authorise the connection
Information requestsYour name, your email, how many properties you manage, your message (if you write one), the page language, the date and a fingerprint (hash) of your IP address. See Information requests.You, when you write to us from the home page
Push notificationsFor each device where you turn them on: the delivery address your browser gives us (endpoint), its public encryption keys, the type of device and browser (for example, “Android · Chrome”), the date you turned them on, the date of the last delivery and, if it fails, an error code. And which alerts you want in each account. See Push notifications.Your browser, when you tap “Turn on notifications”; the preferences, you
Technical dataIP address, browser, dates and paths of requests and errors, in server logs.Your browser and our systems

We do not ask for special categories of data (health, beliefs, etc.). Please do not include them in notes, and do not write guest data in notes unless it is necessary. Today casflows does not charge or store payment data; if we enable payments, we will update this policy first.

Guests at your properties (forwarding or entered by you)#

If the host turns on forwarding of their Airbnb emails to their casflows address, we only read from those emails the guest’s name, the number of guests, the reservation confirmation code and its dates. We never store the phone number, email, amounts, city or listing title, even if they appear in the email.

If the host also forwards Booking.com “New booking!” emails (sender noreply@booking.com), we only read from them the booking number, the property ID on Booking.com, the check-in date and the property name. We use them to confirm that an event in the Booking.com calendar is a booking (and not a closure) and to learn which property it belongs to. Those emails carry neither the guest’s name nor amounts, and the rest of the email is discarded at once. Until a Booking.com booking is confirmed it is shown as “to be confirmed” and the team receives no notices about it.

If you create a manual booking (a stay you arrange outside Airbnb), you can enter the guest’s name and the number of guests yourself. It is the same data and it is handled the same way: the same people see it and it is deleted within the same periods. The same applies to a Booking.com booking: Booking.com does not give us the guest’s name, so, if you wish, you enter it yourself (with the number of guests) and it is handled the same way. And in an Airbnb booking without a name (for example, if you do not forward the emails): if you enter it yourself, it is handled the same way; if the Airbnb email for that booking arrives later, its data replaces what you entered.

For that processing the host is the controller and casflows is a processor, under the data processing agreement (Annex I). If you are a guest, you can exercise your rights with the host; if you write to us instead, we will pass your request on to them.

The host determines and documents the legal basis for each use they make of this data (for example, organising your arrival) and informs you as controller; casflows only processes it on their instructions. casflows does not carry out the traveller registration under Royal Decree 933/2021 (casflows is not that register) and does not send anything to the authorities.

  • casflows deletes the data extracted from Booking.com emails (booking number, property ID, check-in date and property name) 30 days after the check-in date, always.
  • casflows deletes the name and party size from its own systems automatically 30 days after check-out, and immediately if the reservation is cancelled. On cancellation, it also removes the name from the upcoming Google Calendar events it manages.
  • Telegram notices already delivered and past Google Calendar events stay in the chats and calendars of the people who received them: there, the host remains the controller, together with those people.
  • For emails that are not from Airbnb, Booking.com or Google’s verification, we only keep the domain of the last rejected sender (for example, “gmail.com”, never the full address), to diagnose forwarding, and it is deleted after 90 days.
  • If the email arrives before the reservation, it is kept without being shown until the reservation appears and, at most, until the end of the stay stated in the email (never less than 72 hours) or, if the email does not state the check-out date, 90 days; if it does not appear, it is deleted without ever being shown.
  • They are only shown to the people in the host’s account (and in their own Google Calendar, if they connect it) and to the people in their team they authorise: a team member only gets the guest’s name and party size if the host ticks the “See the guest’s name” box for them (which requires “Arrivals”): in their arrival notices, in their calendar and in their profile, also on their cleanings (who checks out and who checks in that day; in their calendar and profile, not in the Telegram cleaning notice). Someone who only does cleanings (without that box) does not get it.

If you are part of a host’s team#

If you are part of a host’s team (you clean, welcome their guests or help them manage their properties with casflows), that host or management company is the controller of your data and we process it on their behalf, as processor. They decide what data about you is kept, which notices you get and what you see (for example, whether you see guests’ names).

  • What data: your name, a label, the tasks you do and the properties assigned to you (provided by the host); your Telegram chat ID and what you send to the bot, such as the text, photos or voice notes of an incident and, if the host asks for them, photos of how the property was left when you finish a cleaning and the confirmation that you have finished it (provided by you when you use it; a voice note is turned into text and the audio is not stored); if you connect your own Google Calendar, the email address of that Google account and an encrypted token (see Data we receive from Google); and, if the host uses it, what you are owed per cleaning and the payments they mark.
  • Who else processes it: Telegram, if you link the bot; Mistral AI, if you send a voice note (it turns it into text); and Google, if you connect your calendar (see Who we share data with).
  • What is optional: linking the Telegram bot and connecting your Google Calendar. You can ask the host to unlink or disconnect you, and remove casflows’ access from your Google account whenever you want.
  • If the host gives you a limited profile in casflows: you sign in with your user account (the email you sign in with) and a password, and see only your work: your cleanings and the arrivals of your properties (with the guest’s name and party size — on a cleaning, who checks out and who checks in that day — only if the host authorises it, “See the guest’s name” box), the issues you send, the shopping list and, only if the host turns on “See what you are owed”, your balance and the statement of your payments and adjustments (with the comments the host writes). You never see other people’s data or the account’s amounts. From there you can mark a cleaning as finished and send issues, photos and what is missing, and choose whether you receive your notices through Telegram or app notifications (see Push notifications).
  • Who is the controller of your user account and your devices: we are. Your user account (email, password and sessions) and the subscription of each device on which you turn notifications on are data about your use of casflows; what you see and record in the host’s account we process on their behalf, as a processor. Legal basis for your user account: our legitimate interest in giving you the access the host authorises and keeping it secure — Art. 6(1)(f). Basis for notifications: your consent — Art. 6(1)(a): you turn them on, on each device, and can turn them off whenever you want.
  • How long: while the host keeps you in their team and within the periods in Retention. Your limited-profile access ends as soon as the host removes it or removes you from the team.
  • Your rights: contact the host. If you write to us, we will pass your request on to them and help them answer it (see Your rights).

So that the host can inform you as controller (Articles 13 and 14 GDPR), casflows gives them a short, reusable, layered text (Article 11 LOPDGDD): the “Privacy notice for your team” on the Team page. With their name already filled in, it explains who the controller is, why and on which basis your data is processed, what data and where it comes from, who else processes it (casflows, Telegram and Google), how long it is kept and how to exercise your rights, and links to this section. We also remind you of it when you link the Telegram bot and when you connect your Google Calendar.

Information requests#

If you write to us through the contact form on casflows.com ("Let's talk"), we store your name, your email, how many properties you manage, your message (if you write one), the page language and the date you write to us. To stop automated or abusive submissions, we also store a fingerprint (hash) of your IP address, computed with a secret key, which cannot be turned back into the IP; it is only used to limit how many requests arrive from the same origin in an hour. We remove it from requests older than 24 hours every time a new one arrives and, in any case, it is deleted together with the rest of your request.

  • We are the controller of this data (we do not process it on behalf of any host).
  • What for: To answer your request and, if you ask us to, tell you how casflows works and what it costs. We will not send you advertising or newsletters.
  • Legal basis: Taking, at your request, pre-contractual steps — Art. 6(1)(b); and our legitimate interest in replying to people who write to us — Art. 6(1)(f). For the IP fingerprint, our legitimate interest in protecting the form — Art. 6(1)(f).
  • Which emails are sent: when you send the form we send you an email confirming that we have received it (at most one every 24 hours, even if you write to us several times) and we notify the casflows team by email with the details of your request so we can reply. They are sent by our email provider, Resend (see Who we share data with). The technical record of each email does not keep your email address and is deleted after 90 days.
  • Who sees it: the authorised staff of casflows who handle the contact mailbox, bound by confidentiality. That notice reaches our contact mailbox, which we receive through Cloudflare’s email forwarding in a Gmail account (Google). Apart from Resend, Cloudflare and Google, which process those emails to deliver and store them, we do not disclose it to anyone else or use it for other purposes.
  • If we sign you up: if you want to start using casflows, we create a single-use sign-up link with your email (it expires after 7 days). Only we send that link, through the channel we have been talking to you on; we store your email and a hash of the link, never the link itself, and delete them 30 days after it expires.
  • How long: 12 months from when you write to us (see Retention). If you later sign up to casflows, your account data follows its own periods.
  • It is stored in our database in the European Union (Supabase).

You can ask us to delete your request, object to this processing and exercise the rest of your rights by writing to privacidad@casflows.com.

Push notifications#

If you tap “Turn on notifications” in Settings, your browser gives us a delivery address for that device (an address of its maker’s notification service) and some public keys to encrypt the alerts. We store them under your name, with the type of device and browser, to send you the alerts you choose from the accounts you have access to: new and cancelled bookings, new issues, finished cleanings and problems that need your attention (a calendar that won’t sync, a disconnected Google Calendar, no one receiving the next day’s arrival or undelivered Telegram notices). The permission is given by your browser and we only ask for it when you tap that button.

  • We are the controller of this data: it is data about your use of casflows, not data we process on behalf of a host.
  • Why: to send that device the alerts you have turned on and, if you ask for it, a test notification.
  • If you are part of a host’s team and have a limited profile: you can choose to receive here, instead of through Telegram, the reminder of the day before, changes and cancellations of your cleanings, the question of whether you have finished and the notice that an issue of yours is resolved. These notices never carry a guest’s name or the text of an issue. The host processes them as controller and we do so on their behalf; the subscription of your device is ours (see If you are part of a host’s team).
  • Legal basis: performance of a contract — Art. 6(1)(b): it is a feature of the service that you turn on, on each device, and can turn off whenever you want. Storing the subscription in your browser is necessary to provide the service you ask for (Art. 22(2) LSSI).
  • What shows on the lock screen: the property name, the dates, the platform (Airbnb or Booking.com), the issue number or how many notices were not delivered. The finished-cleaning alert also says who finished it (the name that person has in the account’s Team) and how many photos they sent or, if someone with access to the account marked it as done on the web, their user name (they don’t receive it themselves). Never a guest’s name, how many guests there are, the booking code, the text of an issue, links or error messages.
  • Who is involved: the alert is delivered by the notification service of your browser’s or phone’s maker (Apple, Google, Mozilla or Microsoft). The content travels end-to-end encrypted (Web Push standard): that service cannot read it; it only sees your device’s delivery address and technical data about the delivery, such as the time and size. We do not choose it: it is the one your browser uses for all its notifications (see Who we share data with).
  • How long: until you turn notifications off on that device or remove it from “Your devices”, sign out on it, the notification service tells us that address no longer exists (for example, if you uninstall the app or withdraw the permission) or your user is erased. Your preferences for an account are deleted if you lose access to it. The technical record of each delivery does not keep your device’s address and is deleted after 90 days.
  • It is stored in our database in the European Union (Supabase).

Why we use it and on which legal basis#

Where we are the controller:

PurposeLegal basis (GDPR)
Creating and managing your account, providing the service (syncing the iCal feed, creating cleanings, notices and calendar events) and supporting youPerformance of a contract — Art. 6(1)(b)
Keeping the connection with your own Google Calendar (encrypted token, email of the connected account and identifiers) so that the service creates and updates your events therePerformance of a contract — Art. 6(1)(b). The connection is optional: you authorise it in Google and can disconnect it whenever you want
Sending you the push notifications you turn on on each device (see Push notifications)Performance of a contract — Art. 6(1)(b). They are optional: you turn them on on each device and can turn them off whenever you want
Service security, fraud and abuse prevention, and technical logsLegitimate interest — Art. 6(1)(f) (protecting the service and its customers)
Improving the service with aggregated usage and error metricsLegitimate interest — Art. 6(1)(f). You can object by writing to us
Answering the information requests you send us from the home pagePre-contractual steps at your request — Art. 6(1)(b); and legitimate interest in replying to you — Art. 6(1)(f). You can object by writing to us
Sending you service communications (changes, security, trial ending)Performance of a contract — Art. 6(1)(b)
Identifying the parties to the data processing agreement and contacting you about privacy (with the controller details you give us when accepting it), and keeping the record of each acceptancePerformance of a contract — Art. 6(1)(b); and legal obligation — Art. 6(1)(c) (Art. 28 GDPR requires the processing agreement to be in writing)
Keeping proof of your acceptance of the legal terms and handling requests from authoritiesLegitimate interest in being able to prove acceptance in the event of a claim — Art. 6(1)(f); and legal obligation — Art. 6(1)(c), where a law requires it

Where we are a processor (data about your team, properties, reservations, cleanings, team payments, Airbnb income, incidents, guests and the content of Google Calendar events), you as controller determine the purposes and the legal basis; we only process it to provide the service, on your instructions. Those instructions are documented in the Instructions history (Settings → Legal), which you can view and download. See your responsibilities.

We do not send advertising or marketing newsletters. If we ever wanted to, we would ask for your consent first.

Data we receive from Google#

Connecting Google Calendar is optional and you start it from casflows. We only request these scopes:

  • https://www.googleapis.com/auth/calendar.app.created: create one secondary calendar owned by casflows and manage the booking, cleaning and Airbnb block events inside it. We never invite anyone to those events.

With that scope (https://www.googleapis.com/auth/calendar.app.created), casflows cannot read or modify any other calendar or event in your Google account: it only accesses the calendar it creates itself and the events it creates in it. We do not request any Google sign-in permission (such as identifying your account or reading your email).

Legal basis. The authorisation you give in Google (OAuth) is not the legal basis: it is the technical way of letting casflows write in that calendar. If you are the host and connect your own calendar, keeping that connection is part of the service you sign up for (Art. 6(1)(b)). If you are a member of a host’s team and connect yours, you give your consent to that connection, which you can withdraw whenever you want; but the events we copy into it (cleanings, check-ins and, if the host authorises you, the guest’s name) are processed on the host’s instructions and on the host’s legal basis, never the consent of whoever connects their calendar.

This is all the Google data we store:

  • The ID of the secondary calendar casflows creates.
  • The IDs of the events casflows creates in that calendar.
  • The OAuth refresh token, encrypted with AES-256-GCM, which lets us keep the calendar up to date without you having to reconnect.
  • The email address of the Google account connected, which casflows learns as the creator of the calendar and events it created itself. We use it only to show you which account is connected (if a person in your team connects it, we show it to you).
  • The permissions (scopes) you granted when connecting, to check that the connection has the permission it needs.

What we do with Google data:

  • We use it only to provide the feature you see in casflows: keeping your cleanings in that calendar.
  • We do not use it for advertising, advertising profiles or retargeting.
  • We do not sell it or share it with third parties, except with the providers needed to run the service (see recipients), when required by law, or in a corporate transaction (merger, acquisition) with the same safeguards.
  • We do not use it to train artificial intelligence or machine learning models, whether general or our own.
  • No human reads it, except in these closed cases: you give us explicit consent for a specific case (for example, support), it is necessary for security purposes (investigating abuse or an incident) or to comply with the law. Only casflows’ authorised technical staff have access to the systems where it is stored, under a duty of confidentiality, and the token is encrypted. For internal operations we only use aggregated and anonymised data.

casflows' use and transfer to any other app of information received from Google APIs will adhere to Google API Services User Data Policy, including the Limited Use requirements. See the Google API Services User Data Policy.

You can disconnect Google at any time from casflows or from your Google Account permissions. When you disconnect from casflows, we delete from your Google account the “casflows · …” calendar we created, with all its events (past ones included), and we revoke the token with Google and delete it. We try for a few seconds: if Google does not respond, the token is still deleted from casflows and the calendar may remain in your Google account, which belongs to you, and you can delete it from Google Calendar; in that case we keep the calendar ID, its event IDs and the account email so that, if you reconnect Google, casflows keeps using that calendar instead of creating another one (they are deleted when your casflows account is closed). If the calendar is deleted, we also delete its ID and its event IDs from casflows. When your casflows account is erased, we also try to delete that calendar before revoking the token. If you revoke access from Google, we delete the token as soon as we detect it; from then on casflows can no longer delete the calendar, which stays in your Google account.

Members of a host’s team. If the host or management company you work with sends you a casflows link, you can connect your own Google Calendar without creating a casflows account. We ask for the same single permission (https://www.googleapis.com/auth/calendar.app.created) and store the same data for that connection: the ID of the “casflows · …” calendar we create in your account, its event IDs, the encrypted refresh token, the permissions granted and your Google account email address. We use them only to keep the events assigned to you in that calendar, without invitations. The link expires after 7 days, works only once and we only store its hash. You can remove the access at any time from your Google Account permissions and the host can also disconnect you: in that case we try to delete from your Google account the “casflows · …” calendar we created, with all its events (past ones included), and revoke the token in Google; if any of that fails, it does not block the disconnection and the token in casflows is always deleted anyway (if the calendar could not be deleted, we try to cancel your upcoming events in it and it stays in your Google account, which belongs to you). If the host deactivates you instead of disconnecting you, you stop having any properties assigned and on the next cycle we likewise cancel your upcoming events in that calendar, but your connection and the token stay stored until the host disconnects you outright or closes their casflows account, at which point the rest of that data is deleted. Until then, the calendar stays in your Google account, which belongs to you.

If you use "Sign in with Google", Google only gives us your name, email and identifier to authenticate you; that sign-in does not grant access to your calendar.

Who we share data with#

We do not sell personal data. We only disclose it to these providers, and only as needed to provide the service. Where they process data on our behalf (or, as sub-processors, on the host’s behalf), they do so under a data processing agreement, except where stated. The list of those that process data on the host’s behalf, with the data each one accesses, is also at casflows.com/subencargados:

ProviderPurposeWhereAgreement and safeguards
Supabase (Supabase Pte. Ltd., Singapore)Database, authentication and file storage (incident and cleaning photos)European Union (Frankfurt, Germany); the company and some of its sub-processors may access it from outside the EUData processing agreement (DPA) incorporated into its terms, with the European Commission’s Standard Contractual Clauses
Vercel (Vercel Inc., US)Application hosting and server executionFunctions in the EU (Frankfurt); global delivery networkData processing agreement (DPA) with the European Commission’s Standard Contractual Clauses; Vercel Inc. participates in the EU-US Data Privacy Framework.
Cloudflare (Cloudflare, Inc., US)DNS for casflows.com (application traffic does not pass through it) and reception of email addressed to casflows.com (Email Routing and Workers): the Airbnb and Booking.com emails you forward and the emails you send to our mailboxes. It processes them in transit to deliver them and does not store the content of the emails; it does record each one in an activity log (sender, recipient, subject, date and result), which can be looked up in its dashboard up to 30 days back. The subject may include reservation details (for example, the guest’s name); that log can only be looked up by the administrators of casflows’ Cloudflare accountGlobal networkData processing agreement (DPA) incorporated into its terms, with the European Commission’s Standard Contractual Clauses; Cloudflare, Inc. participates in the EU-US Data Privacy Framework.
Resend (Plus Five Five, Inc., US)Transactional email delivery: the emails to access your account (password recovery), the summary of a closed payment period sent to the account owners, and the acknowledgement of information requests and the notice of them to the casflows teamSent from the EU (Ireland); Resend account data and the log of what is sent, in the USData processing agreement (DPA) with the European Commission’s Standard Contractual Clauses; Resend participates in the EU-US Data Privacy Framework.
Google (Google LLC, US, and Google Ireland Ltd.)Google Calendar API and OAuth, only if you connect Google or sign in with Google; and the email mailbox (Gmail) where we receive the emails that reach our mailboxes, including the notices of information requestsPer Google’s infrastructure, inside and outside the EUGoogle does not offer a data processing agreement for these uses: it processes your Google account and our mailbox under its own terms and privacy policy. For Calendar we comply with its API User Data Policy (see Data we receive from Google). Google LLC participates in the EU-US Data Privacy Framework.
Telegram (Telegram Messenger Inc. and its affiliates, in the British Virgin Islands and Dubai)Sending reminders and notices to people who link the bot (including those about new incidents and about unconfirmed or finished cleanings to people with access to casflows), and receiving the incident and restocking reports, the photos of the finished cleaning and its confirmation sent by themPer Telegram’s infrastructure, outside the EUNo data processing agreement: Telegram does not offer one to those who use its bot API. It processes the messages under its own terms and privacy policy (see Who decides about each piece of data). It has appointed the European Data Protection Office (EDPO) as its representative under Article 27 GDPR
Mistral AI (Mistral AI SAS, France)Transcription of the voice notes the team sends to the bot to report an incident: it receives the audio and returns the text to us. It may keep them for a limited time to monitor abuse of its service, except with zero data retention; we have turned off the use of our calls to train its modelsEuropean Union (data hosted by default in the EU, according to Mistral)Data processing agreement (DPA) incorporated into its terms. EU company: there is no international transfer; if any of its sub-processors processes data outside the EU, Mistral states that it is covered by Art. 46 GDPR safeguards

If you create the “Block on Airbnb” link for a property, we publish at that secret address only the dates of its manual bookings (no names, guest counts or notes) so that your own Airbnb can read them and block those days. We do not send it to anyone: whoever has the link can read it, you are the one who pastes it into Airbnb, and you can invalidate it at any time by creating a new one.

If you turn on push notifications, the alert is delivered by the notification service of your browser’s or phone’s maker (Apple, Google, Mozilla or Microsoft, depending on the device). It is not a provider we choose, but the one your browser uses for all its notifications, under its own terms and servers (which may be outside the EU). That is why the content travels end-to-end encrypted and carries only what is essential: that service cannot read it and only sees your device’s delivery address and technical data about the delivery (see Push notifications).

Data may also be disclosed to authorities and courts where the law requires it. We will announce any change to this list by updating this policy (and, for customers, as set out in the data processing agreement).

International transfers#

Some data may be processed outside the European Union. These are the transfers and the safeguard that applies to each:

  • Supabase (Singapore), Vercel, Cloudflare and Resend (US): we store the data or send it from the EU where the provider allows it; any access from outside the EU is covered by the European Commission's Standard Contractual Clauses included in their data processing agreement. Vercel, Cloudflare and Resend also participate in the EU-US Data Privacy Framework, which the European Commission recognises as an adequate safeguard.
  • Google (Calendar and our email mailbox): Google LLC participates in the EU-US Data Privacy Framework.
  • Mistral AI (France, EU): voice notes are transcribed with Mistral’s European API, with data hosted by default in the EU; this is not an international transfer. If any of its sub-processors processes data outside the EU, Mistral states that it is covered by Art. 46 GDPR safeguards.
  • Telegram: the messages a person chooses to receive or send through Telegram pass through its infrastructure, outside the EU, without standard contractual clauses or any other Article 46 GDPR safeguard, because Telegram does not offer them. That is why we only send through Telegram what each notice needs and linking the bot is optional.

You can ask us for a copy of the safeguards at privacidad@casflows.com.

How long we keep data#

DataRetention
Account and service dataWhile the account is active. After closing it you have 30 days to export your data (team payments, from the app itself; the rest, by asking us); then we delete it, with the exceptions in the next row.
What we keep when an account is erasedWhen the account is erased we only keep, blocked and with access restricted to authorised staff: the proof of acceptance of the legal terms (5 years, see below); our own invoicing to the account, once it exists, for the periods required by tax and commercial law; and the purge log, which contains no personal data. In addition, erased data may remain for a while in backups (last row).
Trial accounts that do not subscribeThe trial lasts 15 days. 90 days after the trial ends without a subscription we delete the account, but only after we have sent you that notice by email 15 days in advance. As long as we cannot send it to you, the account is kept as it is; you can ask us to delete it at any time.
Lapsed or unpaid subscriptions that are never closed90 days after your subscription lapses we delete the account, on the same condition: only after we have sent you that notice 15 days in advance.
Past reservations and cleanings24 months from the cleaning date, as service history; then deleted.
Dates blocked on AirbnbUpdated on every sync (if you unblock them on Airbnb, they disappear) and deleted 30 days after they end. The title is deleted when you remove it, 30 days after Airbnb no longer has that block with those dates, or 30 days after it ends.
People in your teamUntil you remove them or the account is closed. The Telegram identifier is deleted when unlinked.
Your account’s Telegram botThe encrypted token is deleted when the bot is retired and when the account is closed; the bot stays yours on Telegram and, if you no longer want it, delete it in @BotFather. The Telegram identifier of the person who creates it is deleted as soon as the set-up is completed and, at the latest, 24 hours after the link is requested; their Telegram name, when you confirm or reject that the bot is yours and, at the latest, 7 days after the bot is registered or its holder changes if you do neither. The holder’s fingerprint is kept while the bot exists and deleted when it is retired. The match between a Telegram chat and its conversation is deleted after 30 days if that person is not linked and has no photos or voice notes pending.
Airbnb income (movements of the reports you upload)We keep them on your behalf, as processor, so that you can see how much each property earns: they are not casflows invoices nor data we use for anything else. They are kept for 6 years from the date on which Airbnb releases the payment. You can delete them earlier, per property, from the statistics. The fee settings are kept as long as the property exists. If you close the account earlier, they are deleted with the rest of your data when the export period ends.
Booking.com income (movements of the statements you upload)We keep them on your behalf, as processor, so that you can see how much each property earns: they are not casflows invoices nor data we use for anything else. They are kept for 6 years from the date on which the payment is issued. You can delete them earlier, per property, from the statistics. If you close the account earlier, they are deleted with the rest of your data when the export period ends.
Team payments (closed periods, amounts, payments and adjustments recorded)We keep them on your behalf, as processor, so that you have support for the payments to your team: they are not casflows invoices nor data we use for anything else. They are kept for 6 years from the end of the period or from the date of the payment or adjustment. If you close the account earlier, they are deleted with the rest of your data when the export period ends: download the period reports beforehand (PDF, Excel or CSV).
Incident photos24 hours after the incident is marked as resolved and, at most, 12 months after we receive them (even if the incident is still open). An issue counts as resolved from the moment someone with access to your account marks it as “Resolved” in casflows (if it is reopened before then, the photos stay and the period starts again when it is resolved again). Also, you can delete any photo earlier and, if you need it, mark the issue to keep it for a claim (with a reason): while the mark is in force, we delete neither the issue nor its photos. The mark lasts 6 months, renewable; if it expires, these periods apply again. Telegram: as soon as we store a photo, we delete the message with the photo from the bot chat; Telegram only allows this within 48 hours of it being sent, so, if we don't manage to, it stays in that chat, under the control of that person and of Telegram. On the other hand, the text the person writes stays in their chat.
Photos of the finished cleaning (optional)15 days after the date of the cleaning, always (also if you turn the feature off); those we could not download from Telegram, at most 2 days after they were sent. Telegram: as soon as we store a photo, we delete the message from the bot chat (only possible within 48 hours of it being sent; if we don't manage to, it stays in that chat, under the control of that person and of Telegram). The confirmation that a cleaning is finished (date and who) is kept with the cleaning and follows its period.
Incident voice notescasflows does not store the audio: it only exists while it is being transcribed and only the text is stored, with the incident’s periods. The identifier of the Telegram message is deleted as soon as it is transcribed (and, if something fails, at most 2 days later). Once transcribed, we delete the voice note from the bot chat (only possible within 48 hours of it being sent; if we don't manage to, it stays in that chat, under the control of that person and of Telegram). Mistral AI may keep the audio and the text for a limited time to monitor abuse of its service, except with zero data retention (see Who we share data with).
Resolved incidents and restocking reports already restocked12 months after they are resolved or restocked. A report left half-sent in the bot (waiting for the person to choose the property) is deleted 15 minutes after the last thing they sent.
Information requests12 months from when you write to us. Sooner, if you ask us to delete it.
Invitations to access casflowsExpire after 7 days and work only once; we only store their hash and the invited email, which are deleted on acceptance or 1 day after expiring.
Guest names and party sizes (if you turn on forwarding)30 days after the check-out date; immediately if the reservation is cancelled. If the email arrives before the reservation and the reservation never appears, at the end of the stay stated in the email (at least 72 hours) or, if it does not state the check-out date, after 90 days. Copies already delivered (Telegram, past Google Calendar events): see Guests.
Data extracted from Booking.com emails (booking number, property ID, check-in date and property name)30 days after the check-in date, always.
Domain of the last rejected sender (forwarding diagnostics)90 days.
Log of reservation emails received (no names)90 days.
Gmail forwarding verification codeUntil the first Airbnb or Booking.com email arrives and, at most, 7 days.
Telegram linking linksExpire after 7 days and are single-use; we only store their hash.
Google Calendar connection linksExpire after 7 days and are single-use; we only store their hash.
“Block on Airbnb” linkUntil you create a new one (the previous one stops working at once) or the property or the account is erased. It stops responding if the account is closed or lapses.
Sent messages (notice queue)90 days from sending.
Google tokenDeleted as soon as you disconnect Google or we detect you revoked access.
Acceptances of the data processing agreement (with the controller details) and Instructions historyWhile the account exists; they are erased with it (you can download them beforehand in Settings → Legal). Afterwards only the proof of acceptance in the “Proof of acceptance of the legal terms” row remains.
Push notificationsUntil you turn them off on that device, remove it from “Your devices”, sign out on it, the notification service reports its address as expired or your user is erased. The preferences for an account, while you have access to it.
Technical logsUp to 30 days.
Proof of acceptance of the legal termsDuring the relationship. When your user is erased we keep, blocked, a fingerprint (HMAC-SHA-256) of your email computed with a secret key, together with the date you accepted: no name or email in clear text, but it is not anonymous data, because with that key we can check whether a given email accepted. It is used only to prove acceptance in the event of a claim; only server processes and, for a specific claim, authorised staff can access it. It is deleted 5 years after the erasure (general limitation period for personal claims).
BackupsErased data may remain for up to 7 days in the encrypted database backups until they are overwritten. Those backups are never restored as live data, except to recover the service after a disaster; in that case, we would erase again whatever had already been erased.

Your rights#

You can exercise at any time, free of charge, your rights of:

  • Access: find out what data about you we process and get a copy.
  • Rectification: correct inaccurate or incomplete data (you can change most of it yourself in the app).
  • Erasure: ask us to delete your data when it is no longer needed, among other cases.
  • Restriction: ask us to pause processing in certain cases.
  • Portability: receive your data in a structured, commonly used format (for example JSON or CSV).
  • Objection: object to processing based on legitimate interest.
  • Withdraw consent or the authorisation you gave (for example, the connection of your Google Calendar as a member of a host’s team), without affecting prior processing.

Data we are the controller of (your account, information requests and technical logs): write to privacidad@casflows.com stating which right you want to exercise, from your account email if you have one. We decide and reply within one month, extendable by two further months for complex cases (we will let you know). If we cannot verify your identity we will ask for the minimum information needed.

Data we process on behalf of a host (if you are a guest or part of their team): the host is the controller and decides on your request; contact them. If you write to us, we will pass your request on to them without delay and help them answer it, as the data processing agreement provides, but we do not decide it ourselves.

If you believe we have not handled your data properly, you can lodge a complaint with the data protection authority of your country. As the controller is established in Spain, the lead supervisory authority is the Spanish Data Protection Agency (Agencia Española de Protección de Datos, AEPD, www.aepd.es).

How we protect data#

  • Encryption in transit (TLS/HTTPS) for all communications.
  • Encryption at rest of the database and, on top of that, application-level encryption (AES-256-GCM) of secrets: the iCal URL, the Google token and the “Block on Airbnb” secret link.
  • Isolation between customers with row-level security (RLS) in the database: each account only sees its own data.
  • Least privilege: explicit per-table and per-column permissions, and internal processes only access what they need.
  • Passwords stored only as hashes; single-use, expiring Telegram links; secrets never go to logs.
  • The “Block on Airbnb” secret link can only be created or changed by an account owner, only publishes occupancy dates for that property (which, together with the property name known to whoever has it, reveal when it is occupied) and is invalidated by creating a new one.
  • Confidentiality: only authorised staff who need it access the data, under a duty of confidentiality (Article 5 LOPDGDD).
  • Data hosted in the European Union and an incident management procedure, notifying the authority and affected people where the law requires it.

No system is infallible. Please use a strong, unique password and tell us immediately if you suspect unauthorised access.

Automated decisions#

casflows automates tasks (creating a cleaning, showing whether another guest checks in that same day or sending a reminder), but it does not make decisions based solely on automated processing that produce legal effects concerning you or similarly significantly affect you, and it does not profile you.

Cookies and local storage#

We only use strictly necessary technical cookies for the service to work, which are exempt from consent (Art. 22.2 of the Spanish LSSI). We do not use analytics, advertising or third-party tracking cookies. These are all of them:

NamePurposeDuration
sb-…-auth-token (may be split into sb-…-auth-token.0, .1…)Keep you signed in (Supabase Auth). It only exists if you sign inUntil you sign out or it expires; 400 days at most
sb-…-auth-token-code-verifierRandom security value (PKCE) created when you ask to recover your password or sign in with GoogleUntil the process is completed or you sign out; 400 days at most
NEXT_LOCALERemember the language you chose. Only created if you choose a language other than your browser’sUntil you close the browser
casflow_gcal_oauthProtect the Google connection (encrypted, single-use OAuth security state)10 minutes at most
casflow_cuentaRemember which casflows account you are working in, if you have access to several (it only stores its identifier; your access is checked every time)1 year (kept when you sign out, to remember the last account)
Push notification subscription (stored by your browser, not a cookie)Receive on that device the notifications you turn on. It only exists if you turn them onUntil you turn them off, sign out or withdraw the permission in your browser
theme (local storage, not a cookie)Remember light or dark themeUntil you clear it from your browser

If we ever add non-essential cookies, we will ask for your consent first with a specific notice.

Minors#

casflows is a professional service and is not directed at minors (under 18): they cannot have an account or be part of a team. If we detect an account belonging to a minor, we will delete it; if you know of such a case, write to privacidad@casflows.com.

A property’s guests may include minors: about them casflows only processes, if the host turns on forwarding or enters them in a booking, the number of children and infants in the party (only the number, never their name). As a host, please do not write unnecessary data about minors in notes or in a booking’s guest details; if we see that it has been entered, we will ask you to delete it.

Changes to this policy#

We may update this policy when the service or the law changes. The last-updated date is shown above. If the change is material, we will notify you by email or in the app at least 30 days in advance and, where the law requires it, ask for your acceptance or consent again.

Contact#

For any privacy matter: privacidad@casflows.com. By post: ENBA HOMES, S.L., Camino del Prado 1, Bloque 4, Bajo A, 29630 Benalmádena, Málaga, España.

Back to home