1. Who operates PerfectFlow
PerfectFlow is a product of Code Flakes LLC ("CodeFlakes", "we"), which builds and operates it as a service for its clients. Where this policy says "your instance", it means the copy of PerfectFlow that CodeFlakes operates for your company.
Code Flakes LLC, a company incorporated in the State of Florida, United States.
Registered address: 4851 W Hillsboro Blvd, A3, Coconut Creek, FL 33073, United States.
Email: info perfectflow.cloud
Representative
We value your privacy and your rights as a data subject and have therefore appointed Prighter Group with its local partners as our privacy representative and your point of contact for the following regions:
- European Union (EU)
Prighter gives you an easy way to exercise your privacy-related rights (e.g. requests to access or erase personal data). If you want to contact us via our representative, Prighter or make use of your data subject rights, please visit the following website: https://app.prighter.com/portal/13067132566
powered by Prighter
2. Where your data lives
PerfectFlow is deployed in one of two modes, and your plan determines which one is yours:
- Dedicated instance. Your company gets its own server and its own database. No other client shares either. It comes with the plans that include it.
- PerfectFlow Lite. Several companies are hosted on one server and one database. Each company's records carry their own identifier, and the system filters every query by it automatically, so each company reaches only its own data. Each also signs in through its own subdomain.
Either way, your company's data — including the social media accounts you connect and the posts you schedule — stays separate from every other client's.
That instance runs on DigitalOcean infrastructure: servers, a database cluster and private object storage. The region is chosen when you sign up and does not change afterwards:
- Clients in the European Economic Area: the whole architecture — server, database, storage and automation engine — in Frankfurt (Germany), inside the EEA.
- All other clients: a United States region, the one that best fits their location among those available (today, New York).
Your instance's region is set when you subscribe, and you can ask us for it at any time. One instance's data is never replicated or copied into another instance's region. The only thing that leaves your instance for ours is the counts and technical reports described in section 10, which contain none of your operational data, and, if you connect Gmail, Google's authorisation, which passes through our instance without staying there (section 4).
The only exceptions are the social media and Gmail integrations: CodeFlakes has a single application registered with Meta, one with TikTok and one with Google, and every instance connects its accounts through them. Those applications are the channel through which the API calls are made; the data they return is still stored in each client's own instance.
3. Your account and business data
To set up your account and provide the service we store the contact details you give us: name, email address, phone number and your company details.
Support desk. We handle support at codeflakes.perfectflow.cloud/support. Your company's contact people have an account there to open and follow their requests, and we store their name, their email address, what they write in each request and the files they attach. We use it to handle those requests and to perform what you contracted with us. The desk runs on our own instance, on DigitalOcean infrastructure in the United States. Please do not include data about your customers in a request unless it is needed to solve it; if some arrives, we use it only for that.
Inside PerfectFlow, your company enters its own operational data (customers, sales, inventory, finance and so on, depending on the modules you use). That data is yours: we store and process it solely so that the system works, and we do not use it for any other purpose. Separately, the system counts how it is used and how it is running; those counts contain none of your operational data and are described in section 10.
Who is accountable for which data
There are two kinds of data, and they are not governed the same way:
- Your client account data — your name, your email address, your company details, billing and your support desk requests — and the service usage data in section 10. We are the controller of that data, and this policy is what covers it.
- The data your company enters into its instance — your customers, your contacts, your sales. You are the controller of that data and we act as your processor: we process it on your instructions and for nothing else. What we may and may not do with it is set out in the data processing agreement (DPA) which you accept when you subscribe and which applies where European data protection law applies to you; where it does not, in the terms of service.
One practical consequence: if someone whose data sits in your instance wants to exercise their rights, the request is addressed to you, and we give you the tools and the assistance to answer it.
The legal basis for the data we control — if European law applies to you
This table is for clients to whom the European Union's General Data Protection Regulation, or its United Kingdom equivalent, applies: that is the law that requires a legal basis to be stated, and the articles cited belong to it. It covers only the data we control — your client account data and the service usage data — not what your company loads into its instance — you are the controller of that, and you set its basis.
If that law does not apply to you, what we do with that data is the same — signing you up, providing the service, billing you, handling your support, keeping the service secure, measuring service usage in aggregate and meeting our legal obligations — without those articles being applicable.
| Purpose | Legal basis |
|---|---|
| Setting you up, delivering the service, invoicing you and handling your support, including support desk accounts and requests | Performance of the contract (Art. 6(1)(b) GDPR) |
| Keeping accounting and tax records | Legal obligation (Art. 6(1)(c)) |
| Answering a demo or information request before you subscribe | Pre-contractual steps at the data subject's request (Art. 6(1)(b)) |
| Keeping the service secure and logging administrative access | Legitimate interests (Art. 6(1)(f)): operating the system securely and being able to show it |
| Measuring, in aggregate, how the users of your account use the service (section 10) | Legitimate interests (Art. 6(1)(f)): running the service, supporting you and deciding what to improve from real usage, without following any individual |
| Telling you about material changes to these terms or to the subprocessors | Performance of the contract (Art. 6(1)(b)), and legal obligation where the GDPR itself requires the notice |
We do not process data we control on the basis of consent, so there is nothing to withdraw on that footing. If we ever did, it would be asked for separately and could be withdrawn at any time.
4. Integrations: social media and Gmail
The social media module lets you connect a supported social media account and, from PerfectFlow, view how the account and its content are performing, write and schedule posts, publish them, and — on Instagram — read and answer the conversations your customers start. Each network has its own subsection: everything the module stores for that network is set out there. At the end is the Gmail or Google Workspace connection, which sends your email from your own account.
Instagram (Meta)
PerfectFlow lets you connect an Instagram professional account. What follows describes everything the module stores and processes for that connection.
When you connect an account
| Data | What it is used for |
|---|---|
| Instagram professional account identifier | Telling Meta's APIs which connected account an action refers to. |
| Username and display name | Showing you on screen which account is connected, so you don't publish to the wrong one. |
| Access token and token expiration information | Authorising calls to Meta's APIs on behalf of the connected business. The expiration information allows the connection to be maintained without asking you to authorise it again. |
| Account type | Knowing which operations the connected account supports. |
Tokens are refreshed automatically by a background process. Token renewal is performed only as permitted by Meta's APIs, in order to maintain the connection authorised by the account owner.
For each post
Posts can be published immediately or scheduled: a scheduled post is published later by a background job in PerfectFlow, without anyone having to be present.
- The text of the post.
- The image or video files you attach.
- The date it is scheduled for.
- The identifier Meta returns when the post is created.
- The permalink to the published post.
- The status of the post and, if it failed, the error message returned by the API.
Instagram insights and analytics
When you connect an Instagram professional account and enable analytics, PerfectFlow may retrieve account and media performance information made available by Meta's APIs, including metrics such as reach, views, engagement and other aggregate performance metrics. What is actually available depends on what Meta exposes for that account and that piece of content.
PerfectFlow stores a daily snapshot of the connected account's counters and, for each post, the performance figures Meta returns, so that the dashboard can show how they change over time rather than only today's number.
These figures are aggregate counts. The module does not download the follower list, and it does not read the text of comments — only how many there are.
The purpose is limited to displaying analytics inside PerfectFlow and showing account and content performance to authorized PerfectFlow users of the connected business. Insights are not used for advertising, for profiling individuals, for sale of data, or for training artificial intelligence models.
Instagram direct messages
If you use PerfectFlow's Instagram Inbox, PerfectFlow receives information made available through Meta's messaging APIs and webhooks in order to display and manage conversations with your professional Instagram account. This covers conversations that people start with the connected business; PerfectFlow is not a tool for messaging Instagram users who have not written to you.
For each conversation, the data may include:
- The Instagram-scoped sender identifier, and the sender or display information Meta makes available.
- The conversation identifier and the message identifier.
- The message text or content, and any attachments or media associated with it.
- The timestamp of each message, and message status information.
PerfectFlow processes this information so authorized users of your company can view customer conversations and respond to them from within PerfectFlow. PerfectFlow sends replies only when permitted by Meta's applicable messaging rules and messaging windows.
Instagram message data is not used for advertising, profiling, sale, or artificial intelligence model training. It is your operational data: your company is its controller and Code Flakes hosts it as processor, like everything else in your instance.
TikTok
You can connect a TikTok account to schedule and publish videos to it from PerfectFlow.
When you connect an account
| Data | What it is used for |
|---|---|
open_id (the account identifier) |
Telling TikTok's API which account to publish to. |
| Display name and profile picture | Showing you on screen which account is connected, so you don't publish to the wrong one. |
| Access token, which lasts 24 hours, and its expiry date | Authorising calls to TikTok's API on your behalf. The expiry date allows the token to be refreshed before it lapses. |
| Refresh token, which lasts 365 days | Renewing the access token without asking you for permission again. |
| The permissions you granted | Knowing what PerfectFlow may do with the account. We store the granted permissions rather than the requested ones, because they determine whether your video is published on its own or left in drafts. |
Both tokens are stored encrypted in the database. Renewal is a background process that only exchanges one token for another, requesting no additional data. Unlike Meta, with TikTok that renewal is daily, because the access token lasts 24 hours.
For each post
- The text and the video file you attach.
- The date it is scheduled for.
- The
publish_idTikTok returns. - The status of the post and, if it failed, the error message returned by the API.
How the video reaches TikTok
You upload the video file to PerfectFlow and it is stored in private object storage. To publish, PerfectFlow hands TikTok a signed URL that expires after 30 minutes, and TikTok downloads the video from there itself. Once that window passes the URL stops working. The file is never public.
Where the video ends up: drafts or published
There are two possible destinations, and they change what you have to do:
- With the
video.uploadpermission, the video is left in your TikTok account's drafts and you publish it yourself from the TikTok app. - With the
video.publishpermission, the video is published directly.
PerfectFlow uses whichever your account granted.
WhatsApp Business
For now this channel is not available to clients established in the European Economic Area.
Separately from Instagram, you can connect a WhatsApp Business account, which does messaging only: nothing is published to WhatsApp. When you do, the module stores the conversation and the messages exchanged — sender identifier and display information, message text and attachments, timestamps, and whether the thread has been answered or archived — so authorized users of your company can reply from PerfectFlow.
This is a separate integration with its own authorisation, and it is not enabled unless you connect the account.
Where all of this is stored
Image and video files are stored in private, S3-compatible object storage. Every other field is stored in your instance's database.
Gmail and Google Workspace
From Settings › Email (Configuración › Correos) you can connect your own Google account — Gmail or Google Workspace — so PerfectFlow sends your email from your address: the system's notices to your users and the communications you set up for your contacts. It is optional: until you connect it, no data from your Google account is processed.
Which permissions we ask for
| Permission | What it is used for |
|---|---|
gmail.send |
Sending email on behalf of the connected account. It is a send-only permission: it does not allow reading, listing, searching, modifying or deleting the messages in your mailbox. |
openid and email |
Knowing which address you connected, to show it to you on screen and use it as the sender. |
PerfectFlow never reads, stores or modifies anything in your mailbox. We ask for no read permission. From your Google account we keep only the connected address and the access tokens. Messages are put together in your instance and handed to the Gmail API so they go out from your address; for each send, the system records the same as with any other sender, such as the recipient, the subject and whether it went out or failed.
How the tokens are stored
When you connect, Google issues a refresh token and an access token. They are stored encrypted in your instance's database. Authorisation goes through our base instance (codeflakes.perfectflow.cloud, in the United States), which is the one that has the app registered with Google: it exchanges the authorisation code, hands the tokens to your instance server to server and, when your instance asks, renews the access token. The base instance does not keep your tokens or your address, and never sees the content of your email.
This is operational data: you are the controller and Code Flakes processes it as processor, like the rest of the data in your instance.
How to disconnect it
Press «Desconectar» (Disconnect) in Settings › Email: PerfectFlow revokes the token with Google, deletes it from your instance, and your email goes back to the usual route. You can also remove access at any time from your Google account, at myaccount.google.com/permissions. If Google stops accepting the token, PerfectFlow lets you know so you can reconnect it.
Limited Use of Google data
PerfectFlow's 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.
Specifically:
- We use that data only to send the email you set up in PerfectFlow and to show you which account is connected.
- We do not transfer it to third parties, except where needed to provide this feature, to comply with the law, or as part of a merger, acquisition or sale of assets, with prior notice.
- We do not use it for advertising, we do not sell it and we do not use it to train artificial intelligence models.
- No person at Code Flakes reads it, unless you give us your explicit permission, it is needed for security — for example, to investigate abuse — or the law requires it.
5. What we do not do
To be explicit, the social media module does not:
- Sell information obtained through Meta APIs.
- Use Instagram message content or insights for advertising.
- Use Instagram data to train artificial intelligence models.
- Build advertising profiles of Instagram users.
- Access information or permissions that the connected business has not authorized.
- Use customer conversations for purposes unrelated to providing the PerfectFlow service.
Two limits worth stating plainly, because they are easy to assume the other way round: the module does not download your follower list — only aggregate counts — and it does not read the text of comments on your posts, only how many there are. Comment management is not part of this integration.
For TikTok, which is a separate integration, the module only publishes:
- We do not read your existing videos.
- We do not read your follower list.
- We do not read your TikTok messages.
- We do not use TikTok data for advertising or to train AI models.
- We do not share TikTok data with third parties.
Nothing described in this policy is used for advertising, profiling of individuals, artificial intelligence model training, or sold or transferred to third parties for their independent marketing or commercial purposes. Transfers that are necessary to deliver the service — to Meta in order to publish what you asked to publish, or to the infrastructure providers listed below — are a different thing, and they are described in section 6.
The same goes for the usage measurement in section 10: it is not used for advertising or to assess anyone on your team, because it is not kept per person.
And with Gmail, PerfectFlow only sends: it does not read, list or delete your email, and it keeps nothing from your mailbox (section 4).
6. Who it is shared with
We do not sell data and we do not pass it to third parties for commercial purposes. Data leaves your instance only in these cases:
- Meta Platforms (Instagram): provides authentication and authorized Instagram account information, analytics and messaging data through its APIs and webhooks. Meta also receives the content and messages that authorized PerfectFlow users choose to publish or send through Instagram.
- TikTok: it receives the video's text and the temporary signed URL it downloads the file from, and returns the
publish_idand the status of the post. - Google (Gmail or Google Workspace), only if you connect your account: it receives the email PerfectFlow sends from it — recipient, subject, content and attachments — in order to deliver it.
- Code Flakes, to its own base instance (
codeflakes.perfectflow.cloud), on the same DigitalOcean infrastructure: the technical reports and aggregate usage counts in section 10. This is not a disclosure to third parties, and it contains none of your operational data or your customers' data. - When a competent authority legally requires it of us.
The social media module may communicate with Meta platforms, including Instagram and WhatsApp Business, and with TikTok when the corresponding integration is enabled.
Service providers and subprocessors
To run the service we rely on the following providers, which process data on our behalf as subprocessors, under a data processing agreement, and cannot use it for their own purposes:
| Provider | What for | Where |
|---|---|---|
| DigitalOcean | Servers, database and file storage | Your instance's region (EU or US) |
| Cloudflare | DNS resolution of the domain to the server. No proxy: it does not sit in the traffic path | Global network |
| GitHub | Code repository and automated deployment of updates onto the server. Hosts no data from your instance | United States |
Third-party platforms you connect
These are different: they are platforms your business connects to PerfectFlow, under your own account and your own relationship with them. They come in only if you turn on the matching channel, and until you do they process none of your data:
| Provider | What for | Where the data is |
|---|---|---|
| Meta (WhatsApp Business) | Exchanging messages with your contacts over WhatsApp — always your own account | Ireland and the United States |
| Meta (Instagram) | Account connection, analytics, publishing the content you schedule, and the conversations of the connected professional account | Ireland and the United States |
| TikTok | Publishing the videos you schedule | Ireland and the United States |
| Your outbound email provider | Delivering all mail that leaves the system: notices to your users — password resets, invitations — and communications to your contacts. The account is always yours | Depends on the provider you contract |
| Google (Gmail or Google Workspace) | Sending your email from your own address, if you connect your account. Send-only: the mailbox is not read — always your own account | The United States and other countries where Google operates |
| Stripe | Charging your own customers — the account is always yours | Ireland and the United States |
| PagueloFacil | Charging your own customers — only if you turn on this gateway, with your account | Panama |
| Other integrations | Whatever you connect through the automation engine with your own accounts — for example, your Calendly scheduling | Depends on the provider you choose |
Automations run on software we self-host, on the same infrastructure your instance lives on. On a dedicated instance that engine is yours alone; on PerfectFlow Lite it is shared between the clients on the same server, with each client's flows and connections kept separate. That software's vendor does not access your data; the messages those automations send do go out through the channels in the table above.
Each subprocessor in the first table accesses only what it needs to deliver its service, is bound by a data processing agreement, and cannot use the data for its own purposes. If we add or replace one, we tell you thirty days in advance and you may object.
Third-party platforms such as Meta process information according to their own applicable privacy terms and platform agreements, in addition to the actions initiated by authorized PerfectFlow users. Those are your accounts and your relationship with those platforms; we connect to them on your instruction.
The full, current list — with the detail of what each provider processes and which of them are your own accounts — is on the subprocessors page.
International transfers
Code Flakes LLC is based in the United States. Even where a European client's instance is hosted inside the EEA, the processor is a US company, and that is the flow the processing agreement covers.
The members of Code Flakes who can access those instances do so from outside the European Economic Area. They are members of the company itself, not a contracted firm; even so, remote access of this kind may constitute an international transfer under Chapter V of the GDPR. We say so plainly because we cannot provide the service without that access.
The measures we apply: day to day nobody goes in — what connects is the automated deployment system; a team member goes in only when a problem is blocking the service, always through an encrypted VPN with an exit point in the United States — and the work runs on the server itself, with no copies downloaded to local machines. Updates are installed by an automated deployment system (GitHub Actions), which connects to the server from the United States, runs the commands there and extracts no copies.
If your company is in the European Economic Area
Your instance is hosted in Frankfurt (Germany), in DigitalOcean's fra1 region. What leaves it for the United States, and under which safeguard:
- Code Flakes LLC: the remote support access described above; the technical reports and aggregate counts in section 10, to our base instance in New York; and, if you connect Gmail, Google's authorisation, which passes through that instance without staying there. Code Flakes LLC is not certified under the EU-U.S. Data Privacy Framework: the intended instrument is the European Commission's Standard Contractual Clauses — module 2 if your company is the controller of the data; module 3 if it is itself a processor for someone else — which we sign as an annex when you ask, under clause 9 of the processing agreement.
- Google, if you connect Gmail or Google Workspace: the email you send from that account. Google LLC is certified under the EU-U.S. Data Privacy Framework; the relationship and its safeguards are those of your own contract with Google.
- Meta, if you connect Instagram (and WhatsApp Business, once it is available in the EEA): what is exchanged with that account. Meta Platforms, Inc. is certified under the EU-U.S. Data Privacy Framework; the relationship and its safeguards are those of your own account with Meta.
In addition, on EEA instances the time each screen spends in view is not measured in the browser, unless you ask us to turn it on (section 10).
What you configure. The integrations you connect and the public booking, form or checkout pages the system generates for your business are configured by you: what data you ask for, whether you charge and through which gateway. We do not control those decisions or what you load into your instance, and we do not delete or purge your data on our own initiative: how long you keep it is your decision, and the system gives you the tools to erase and export. Your PerfectFlow subscription is paid through Stripe; we do not store your card details.
If your company needs Standard Contractual Clauses or another instrument for this access, we will cooperate and sign the one that is reasonably applicable; and if the situation does not work for you, you may terminate the contract without penalty. The full terms are in clause 9 of the data processing agreement and on the subprocessors page.
PerfectFlow is a service: we answer for how we operate. The obligations that fall to you as controller of the data you load — legal basis, informing your contacts, a representative in the Union if you need one, contracts with the providers you connect through your own account — are yours.
7. How long it is kept
- Access and refresh tokens: kept while the account is connected. Disconnecting it from PerfectFlow deletes them.
- Gmail or Google Workspace: the connected address and its tokens are kept while the account is connected. When you disconnect it, the token is revoked with Google and both are deleted.
- Connected account data and posts: kept in your instance until you request their deletion or the instance is decommissioned.
- Image and video files: kept alongside the post they belong to and deleted with it.
- Instagram messages: retained in the customer's PerfectFlow instance while necessary to provide the Instagram Inbox feature, until deleted by the customer, pursuant to a deletion request, or when the instance is decommissioned.
- Instagram insights: retained as necessary to provide analytics and historical reporting — the daily snapshots are what make a trend possible at all — until deleted by the customer, pursuant to a deletion request, or when the instance is decommissioned.
Outside the social media module:
- Your client account data — contact and billing — is kept while the subscription is active and, afterwards, for the tax and commercial limitation period that obliges us to retain accounting records.
- The data your company loads into its instance is yours to keep: you set the periods, as controller. Once the contract ends we hold the instance for thirty (30) days so you can export it, and after that we delete the instance, its database and its files, backups included, unless you tell us otherwise in writing.
- Backups are taken daily and kept for seven days, so a deleted record also disappears from the backups after that period.
- Support desk accounts and requests are kept with your client account data and for the same period.
- Service usage aggregates are kept for ninety (90) days and then deleted. The counters we use to count distinct people expire on their own before that (section 10).
You can request deletion at any time by following the data deletion instructions.
8. Security
Access to PerfectFlow and communications with third-party APIs are encrypted in transit using HTTPS. Authentication tokens used for supported third-party integrations are encrypted at rest. Each instance is isolated from the others as described in section 2, and administrative access is limited to the CodeFlakes staff who operate the service.
The database and its backups are encrypted at rest by the hosting provider. Server access uses a cryptographic key, not a password; our staff always connect through an encrypted VPN and only when strictly necessary, and updates are applied by an automated deployment system. The accounts we use to administer the infrastructure — DigitalOcean, Cloudflare and GitHub — use two-factor authentication.
No system is infallible. If we detect a security breach affecting your instance's data, we will tell you without undue delay and in accordance with applicable legal and contractual requirements, by email at your account's contact address, with the information you need to meet your own notification obligations.
9. Your control over this data
Concretely, this is what you can do:
- Disconnect the account from PerfectFlow's social media module. Doing so deletes the authentication tokens, and PerfectFlow can no longer access Instagram analytics, publish content, receive new Instagram messages, or send replies on behalf of the connected account.
- Revoke access from Meta, in your Instagram account settings, under the apps and websites connected to your account. This takes effect immediately, independently of PerfectFlow.
- Revoke access from TikTok, in your account settings, under connected apps. This also takes effect immediately.
- Disconnect Gmail with «Desconectar» in Settings › Email, or remove access from Google, at myaccount.google.com/permissions. Either way, PerfectFlow can no longer send from your account.
- Request deletion of your data by writing to info perfectflow.cloud. The details are on the data deletion page.
- Ask us for a copy or a correction of the data we hold about you, at the same address.
- Turn off the usage measurement in section 10: you can ask us to turn it off for your account, at the same address.
If the General Data Protection Regulation applies to you
For the data we control — your client account data and the service usage data — you can exercise the rights of access, rectification, erasure, restriction, objection and portability. Write to info perfectflow.cloud and we will answer within one month at the latest. You can also do so through our representative in the European Union, Prighter: https://app.prighter.com/portal/13067132566
If you believe we have not handled your request properly, you have the right to lodge a complaint with the data protection supervisory authority in your country.
For the data your company enters into its instance, those rights are exercised against you, as their controller. We assist you in answering them under the terms of the data processing agreement: export, correction and deletion of the records you tell us to act on.
10. Service usage and product improvement
To run PerfectFlow, support you and decide what to improve, Code Flakes LLC measures how the system is used and how it is running inside your instance. It is our own measurement, kept as counts, and it is worth saying first what it is not:
- No third-party scripts. Neither Google Analytics nor any other external measurement tool is loaded inside the CRM.
- No new cookies. The only cookie is still the session cookie the system already uses to keep you signed in.
- No session recording and nothing of what is on screen: no clicks, no keystrokes, no screenshots.
- No content. For each screen only its generic name is noted — for example, «Contacts › record» — never which record was opened or what it contained.
- Not per person. None of this can tell what a specific user did.
What the system always counts
These are counts of what the system itself does, which we need in order to run it:
- Errors per screen: how many and of what type, without the error message or the data being worked on.
- Records per module: how many there are and how many were created in the last thirty days, with the module's name.
- Emails and WhatsApp messages sent and failed, per day.
- Whether the system's initial setup is finished.
On top of that come the technical reports the system already sent: installed version, server health, number of users and records, and modules turned on.
Usage measurement
In addition, unless you ask us to turn it off, the system measures:
- The screens that are opened and the time they spend in view (on EEA instances, screens only: see below).
- All of it added up per day and per role — for example, «Front desk» or «Admin» — never per person.
- How many distinct users used the system in the day, in seven and in thirty days. To count them without storing who they are, statistical counters (HyperLogLog) are kept in your own instance; they do not store user identifiers, cannot list them and expire on their own. The daily totals carry no user identifier.
The totals are kept for ninety (90) days and then deleted.
Instances in the European Economic Area. Time in view is measured by a small first-party script that reads in the browser whether the tab is visible and sends that to your instance. Because European law protects access to information stored on the user's device (Art. 5(3) of Directive 2002/58/EC on privacy and electronic communications), on instances hosted in the EEA that in-browser measurement is off: only the screens that are opened are counted, on the server. It is turned on only if you ask us in writing, and before that we will tell you what it takes to do so in line with the law of your country, which may require your users' consent.
Where they go
The counts are worked out in your instance and travel, already aggregated, to Code Flakes' base instance (codeflakes.perfectflow.cloud), hosted on the same DigitalOcean infrastructure, in the United States, together with the technical reports above. No new providers are involved and nothing is shared with anyone.
Who is responsible and on what basis
Code Flakes LLC is the controller of this data, because we decide to measure and what for: running the service, supporting you and improving it. If the General Data Protection Regulation applies to you, the legal basis is our legitimate interests (Art. 6(1)(f)) with regard to the users of your account, and you can object to this processing by writing to us. No data is processed about the people listed as customers or contacts in your instance: what is counted is how your team uses the system, not whom it serves.
How to turn it off
Usage measurement can be turned off for your account: you can ask us to turn it off by writing to info perfectflow.cloud. The counts the system always makes — errors, records, messages sent, setup — carry on, because they measure no one: they count what the system does.
11. This website
The public PerfectFlow website at perfectflow.cloud does not use Google Analytics, nor any other analytics, and sets no tracking cookies. Some customer landing pages may use Google Analytics 4, but only when that customer explicitly enables the analytics feature — that is a different site, under that customer's own property. This section is about this website; the measurement the system does inside your instance is in section 10. The only thing stored in your browser is a local flag (pf_cookies) remembering that you dismissed the cookie notice, so it isn't shown again. That flag never leaves your browser.
This site has no contact form. There are three ways to reach us, each with its own consequence:
- Emailing us at info perfectflow.cloud. We use those details solely to reply to you.
- Booking a demo, which opens Calendly. What you type there — name, email and the slot you pick — is collected by Calendly and reaches us so we can prepare the meeting.
- Messaging us on WhatsApp, which opens the WhatsApp app with our number. That conversation is governed by WhatsApp's own terms.
The pages on this site load a typeface from Google Fonts servers. To serve it, Google receives your browser's IP address. No cookie is set that way and we receive nothing back about your visit.
This policy also shows the seal of our representative in the European Union, Prighter, which is loaded from its servers to reflect that the representation is current. To serve it, Prighter receives your browser's IP address.
12. Minors
PerfectFlow is a management tool for businesses. It is not directed at minors and we do not knowingly collect data from people under 18.
13. Changes to this policy
If we change what the system does with data, we update this page and the last-updated date shown above. Significant changes are also announced by email to active clients.
14. Contact
Code Flakes LLC — PerfectFlow
4851 W Hillsboro Blvd, A3, Coconut Creek, FL 33073, United States
Email: info perfectflow.cloud
For data deletion, follow the data deletion instructions.