Privacy
What this site collects
No account unless you want one. No cookies unless you say yes, apart from the one that keeps you signed in if you sign in. No tracking between sites. And whatever you type into a calculator is worked out in your browser and is not sent anywhere while you calculate. The calculators are static pages, and nothing typed into them is logged anywhere, by anyone. If you create an account and switch on sync, the work your tools save is copied to your account so that it is there on your other devices; without that switch it stays in this browser, as before. The account runs on a small server and a database used only for the account, sync, Pro, the news list and feedback, all described below.
The whole of what does happen is on this page. It is longer than it used to be, because an optional account means there is more to say. Last updated 5 November 2026.
What changed on 15 October 2026: this page now covers the optional account, with a username and a password, that SyntaxFlow is switching on. Until then it said "No account" and "whatever you type never leaves your browser". Both are still true if you do not create an account. If you do, If you create an account says exactly what we keep, why, where and for how long.
The part people actually care about
A calculator page loads once and then runs entirely on your machine. Sheet sizes, wind loads, spans, glass build-ups, the cutting list you paste in — all of it is computed in JavaScript in your browser and none of it is transmitted. Creating an account does not change that: calculating sends nothing. You can prove this to yourself: open your browser's network panel, fill a tool in and press everything. A few small beacons go out — one saying a page was opened, one saying a tool was used, and Microsoft Clarity's record of where the page was clicked and scrolled, with every piece of text masked — and you can inspect all of them. None carries a single value from the form. That is not a policy promise we are asking you to trust; it is a property of how the site is built, and it is visible.
The same holds for the specification sheet. It is generated and printed by your browser. We never see a copy.
What an account adds is a copy of what the tools save, never of what you type while calculating: with sync on, your projects and documents, the jobs and stock you save in the optimisers, your offcut rack and your saved schedules are sent to your account when they change. What a calculator remembers of what you last typed stays in this browser.
Cookies, and the one question we ask
By default, none. Nothing is stored on your device until you say yes. The one exception is signing in, which is something you ask for: see The account's cookie below. The two things that would set cookies are Google Analytics and Microsoft Clarity, and both are loaded with every consent signal denied, so before you touch the banner they run without storing any identifier at all.
If you press Allow, Google Analytics and Clarity set their cookies and can then recognise a return visit. If you press No, thanks, or simply ignore the banner, they stay in the denied state for good on that browser: anonymous, unlinked pings for Google, and for Clarity a new identifier on every page view, so that no two pages can be tied together.
Either way, Google is given the address of the page without anything after it: no query, no fragment. Links between the calculators carry sizes, and the page you see after paying carries the payment's reference; those stay on your side.
There is no third option hidden behind a settings page, the decline button is the same size as
the accept button, and the banner does not come back to nag you. Your answer is remembered in
sf.consent.v2 in local storage — one word, on your machine. If you had already
answered before Clarity was added, a no was kept as a no; a yes was asked again, because it was
given to Google Analytics alone.
No advertising cookies are set under any circumstance. Google's advertising signals and ad personalisation are switched off in the configuration, not merely left at their default, so consenting to analytics does not quietly enrol you in retargeting.
The account's cookie
If you sign in, the site sets one cookie, __Host-sfac, holding a random session
identifier. The page's scripts cannot read it (HttpOnly), it is only sent over HTTPS (Secure), it is
not sent with forms or background requests coming from other sites (SameSite) and it belongs to this
site alone. It carries no information about you and is not used for analytics or advertising. It ends
when you sign out, after 30 days without use, or 90 days after you signed in, whichever comes first;
closing a session from your account ends it too. While you are signing in, a second, temporary cookie
may be set that only protects the sign-in against forgery. Because both are strictly necessary for a
service you asked for, they are not behind the banner.
What is stored in your browser
Everything the tools remember, they remember on your own machine. With sync on, part of it is also copied to your account, as described below. Here is the complete list — every key this site can write to your local storage, and what each one is for:
Not one of them is a cookie, and none of them is sent anywhere unless you switch on
sync. The first group is settings and flags — none carries an identifier except, once you
sign in and switch on sync, your account's internal number, and a flag saying "this browser has Pro"
is indistinguishable from anybody else's. Nothing in the first group is ever synced. The second group is your actual work: your rack,
your cutting lists, your customers' names, your logo. That is exactly the material a normal web
application would upload to a server. Without an account, or with sync off, it never leaves the
machine you typed it on, and we could not show it to you, hand it to anybody, or lose it in a breach,
because we do not have it. With sync on, only these keys of the second group travel to your account:
the optimisers' saved jobs and stock (sf.jobs.*, sf.stock.*,
sf.cutjobs.v1), the rack (sf.rack.v1) and the saved schedules
(sf.schedule.projects.v1), and we hold a copy of them on the terms set out in
If you create an account.
You can delete the unlock from the unlock page, or clear this site's data in your browser to remove the lot. Without an account, nothing else about you exists to delete; with one, your account page downloads or deletes what it holds. Clearing this browser does not delete your account's copy.
The document tools (budgets, survey sheets, job reports, checklists, the price list, dossiers,
project packs, offer comparisons and plan takeoffs) and My projects keep their work in this
browser's IndexedDB database named syntaxflow: projects, documents, photos and attached
files, your library of materials and services, and settings such as your company details and your
price list. Like the keys above, it stays on this device unless you switch on sync, which copies it to
your account, photos and attached files included; with sync on, a third database, sf-sync,
keeps what sync needs to notice changes (the version of each item last in step with the account and a
fingerprint of its content).
My data saves all of it to a backup file on your device, restores it, or
deletes it.
Photos of offcuts on the rack, if you add them, are kept only in this browser (in its internal storage, IndexedDB), reduced to 800 pixels. They are not uploaded anywhere.
Purchases and Family
Purchase cases, the messages and documents pasted or added in Family, and the events, tasks
and profiles made from them are kept in this browser's IndexedDB database named
sf-px, on this device. Files are read in the browser; they are not uploaded to any
server unless you switch on sync, which copies cases, messages, documents and files to your
account. A message pasted on one of Family's pages reaches the planner through this tab's
session storage (sf.px.familia.handoff.v1), which the planner reads once and
deletes. Without an account, or with sync off, nothing is synced between devices, so we
cannot see, recover or delete any of it: each tool exports a case or the agenda, and deletes a case or
all of its data in this browser. With sync on, the same data is also kept in your account, and
deleting it in a tool deletes it from the account at the next sync. Profiles of children in Family take an alias, with no date of birth or
photo. With sync on, those aliases, and anything you have pasted that mentions a child, are kept in
your account too: think before adding anything about a child that you would not want kept on a
server, especially about their health.
The counter described below receives from these tools what it receives on any page: an
action (a case created, a calendar exported, a proposal reviewed) with the page and a closed
category. Never what is typed, file names, shops, amounts, dates or aliases. Microsoft Clarity
does not load on the two tools' own pages (/purchases/my-cases/,
/family/planner/ and their Spanish versions) or on any page with Family's paste
box. Nor does it load on the account and sign-in pages, or on the pages you come back to after
paying.
If you create an account
The account is optional. Every calculator, optimiser and document tool works without one, as it always has. An account is for two things: having Pro, paid once or monthly, recognised on any device where you sign in, and keeping your work in step between your devices, if you switch sync on.
How you sign in. With a username and a password you choose. We never store your password: only a hash of it, a one-way fingerprint from which the password cannot be worked out, so we cannot tell it to you either. When you create the account you are given a recovery code; we keep only its hash too. You may also add an email address. It is optional, it is used to get you back into the account and, only when you ask, to receive a document (see "If you ask us to email you a document"), and it is stored sealed (encrypted). Account emails (a sign-in link, getting back in) are sent through Resend (see below). The recovery code still gets you back in without email.
What we keep
What we do not keep: your password or recovery code in readable form, your IP address, your name or picture from Google, your card details (those stay with Stripe), and anything you type into a calculator that the tool itself does not save.
What it is used for, and on what basis
To sign you in and keep you signed in; to keep your devices in step, when you ask for it; to recognise Pro on your account; and, if you added an email address, to help you back into the account when you ask. No newsletter, no marketing, no profiling and no advertising use. Nothing you sync is used to train any model.
Legal basis: performance of the contract you enter into when you create the account, switch on sync or subscribe, the optional email address included; our legitimate interest in keeping accounts secure, for the security log and the limits on attempts; and legal obligation, for invoices.
Who can read it
This is not end-to-end encryption. What you sync is stored so that our server can hand it back to your other devices, which means the server can read it. Connections are encrypted (HTTPS), but we will not tell you that we cannot see your data, because technically we could. What we promise instead is that we do not look: nobody opens your synced work unless you ask us to, to help with a specific problem, or the law obliges us to.
Where it is kept, and who helps us run it
These companies process data for the account on our behalf. What follows is what their own pages said when we read them in October 2026.
- Cloudflare runs the account server, the database (D1) and the file store (R2). Both are created with Cloudflare's EU jurisdiction, which according to Cloudflare's documentation means their data is stored only within the EU. Cloudflare's data processing addendum says Cloudflare complies with the EU-US Data Privacy Framework and uses the European Commission's standard contractual clauses for transfers. Cloudflare's DPA · D1 data location · R2 data location
- Resend: it sends account emails (only if you added an address), news emails (only if you signed up) and documents you ask to be emailed. Resend's documentation says that, whichever region the emails are sent from, account data, email metadata and logs included, is stored in the United States, so your address and the fact that we sent you a message would be held there. Resend's data processing addendum says it uses the standard contractual clauses and is certified under the EU-US Data Privacy Framework. Resend's regions · Resend's DPA
- Google, only if signing in with Google is offered and you choose it. Google confirms who you are and sends us your account identifier and verified email address; we ask for nothing else. Your Google account itself is governed by Google's own terms and privacy policy. Google API Services User Data Policy
- Stripe, for payments, as described under If you pay.
How long it is kept
These periods are our decisions, not periods set by law, except the last one.
What you can do yourself
From your account page, without writing to anyone: see the devices where you are signed in and close any of them; switch sync off, which leaves everything in this browser and keeps the account's copy until you delete it; download everything the account holds, files included; and delete the account, which signs you out everywhere and erases what it holds as set out above. The end of a subscription never deletes your data. While a monthly subscription is running, cancel it first, so that Stripe does not go on charging an account that no longer exists.
Security, without overstating it
Your password and recovery code are kept only as hashes, and the optional email address is stored sealed. The session cookie cannot be read by the page's scripts and travels only over HTTPS. Requests that change anything are protected against cross-site forgery, sign-in attempts are limited, and our logs record that something happened, never what you wrote. No system is beyond attack. If a breach ever affects your data, we will tell you, on this site and by email if you added an address, and the Spanish data protection authority, as the law requires.
Adults only
Accounts are for adults aged 18 or over. In Family, children appear only as profiles with an alias, created by an adult, with no date of birth or photo.
If you sign up for news
If you type your email into the news box for workshops, we send you an email to confirm it. You are only signed up if you click the link in that email; if you do not, your address is deleted after 7 days.
What we keep. The address, the language of the page you signed up from, which page it was, and the dates you signed up, confirmed and unsubscribed. We do not keep your cutting list or anything you typed into the calculators.
What for. To send you a few emails a year, when there is a new tool. Every one has a one-click unsubscribe link that needs no account.
Legal basis. Your consent, given when you confirm and withdrawable whenever you like.
How long. While you stay signed up. If you unsubscribe, we keep the address marked as unsubscribed for one year, only so that we do not write to you again by mistake, and then it is deleted.
Who sends it. Resend, as our processor (see "Transfers outside the EU"). The emails are plain text: no images, no tracking pixels and no click-tracking links.
If you ask us to email you a document
If you are signed in and press "Email me this plan" on the cutting plan, we send the text of that plan to the confirmed address on your account, never to any other. To do that the text passes through our server and through Resend, which delivers it. We keep no copy of the email or its content; only a counter to stop bulk sending (at most 10 an hour per account), which resets every hour.
Legal basis. Performing the service you ask for.
If you give us feedback
After you have used a tool several times, the page may ask how it went. It is optional. If you answer, we keep what you write (up to 500 characters), the tool, the language, the date and, only if you give them, your name or your workshop's. We do not keep your email or your cutting list.
Publication. Only if you tick the box that allows it, and always after a person has reviewed it. You can ask us to remove it at any time.
Legal basis. Your consent. How long. Two years, or until you ask us to delete it.
Pages kept for when you have no signal
This site installs a service worker: a small script your browser keeps, which saves a copy of each page as you open it so the tools still run with no connection — in a stairwell, a basement, a van. The pages and their stylesheet are all it holds. It is the site's own public files, the same ones anybody can fetch; nothing you type passes through it and nothing it stores is readable by us.
It never serves you a stale page while you have signal: a page is always fetched fresh when the network is there, and the saved copy is used only when the request fails. Clearing this site's data, or unregistering the worker in your browser's settings, removes it entirely.
Analytics
These pages carry Cloudflare Web Analytics, a few hundred bytes that record that a page was viewed and how quickly it loaded. It uses no cookies, does not fingerprint your device, does not build a profile, and cannot follow you to another site. It never sees anything you type into a calculator.
What we can see from it is aggregate: how many people opened the wind-load tool this week, which country roughly, which page they arrived from, and whether the site is slow somewhere. Cloudflare's own account of how the product works is on their site.
Legal basis: our legitimate interest in knowing whether the site works and is used, which is a narrow interest served by data that does not identify you.
Google Analytics, and exactly what it records
Alongside that, the site loads Google Analytics 4, subject to the choice described above. It answers a question Cloudflare's tool cannot: not just which pages were opened, but what people did on them.
About two dozen events are recorded. Rather than print a list here that goes stale the moment a tool is added — it did exactly that, and said "four" for weeks while there were twenty-six — here is the rule, which does not change, and a link to the live list, which cannot be wrong:
So an event says the cutting optimiser was used, or a label sheet was printed on this page. Never the sheet size, the cutting list, the customer or any number on the screen. The counter is public: it returns every event name being counted and how many times, which is the whole of what is kept and is checkable by you rather than promised by us.
The counter that does not use cookies
Since August 2026 the site also counts those same events itself, without Google and without asking, because the analytics above can only group a visit into a session for the people who accept cookies, and that is a minority — leaving us guessing about everybody else.
It is allowed to run without asking for one reason: it stores nothing about you. No cookie, no identifier, no IP address, no browser, no referrer. It adds one to a number, and the number is per day, per event and per page. There is no row in it that is about a person, so there is nothing in it to identify, export or delete — which is also why you will not find a way to opt out of it: an opt-out would need to know who you are, and it does not.
Since 12 October 2026 each of those events is also kept as a row, so we can see which tools and which features are used, not only how often. A row holds the day and hour, the event, the page, and five coarse facts that still say nothing about who you are: the country (two letters, from Cloudflare's own reading of the request, the address itself is not kept), the kind of device (phone, tablet or computer, worked out from the browser's description, which is then thrown away), where the visit came from as a category (a search engine, a social network, an AI assistant, a campaign, another page of this site, another website or none; if it is another website, only its name, such as example.com, or the label of a link made for a campaign, never the address of the page), whether this browser has Pro, and, only if you accepted analytics cookies, whether this is your first visit or a later one (1, 2 to 4, 5 or more). Rows are deleted after 400 days. They are read by us only, in a report behind a password.
Each carries the page path and nothing else, except an error report, which also carries the file and line of our code that failed: a place in the code, never the error message, which could contain something you pasted. No event carries a value you typed. Nor your username, your email address or your account number: the page events do not know whether you have an account. We record that the cutting optimiser was used; we do not record the sheet size, the cutting list, the customer, or any number on the screen. That is not a setting we could turn on later and forget to tell you about — those values are never passed to the tracker in the first place, and you can read the four lines of code that do it in /assets/js/analytics.js.
Since October 2026 our server adds to the same counter a few things that only it sees, so we know whether anybody tries to pay or uses an account: that a return from Stripe was checked and what Stripe answered (paid, not paid, could not be checked), that somebody tried to restore Pro on another device and whether it worked, and, once accounts are switched on, that an account was created, that a sign-in succeeded or failed, that a password was recovered or changed, that an account was deleted, or that a device switched sync on. Each of those rows holds the day, the action and that coarse result, and nothing else: no hour, no page, no country and no device, and nothing that could tie it to you or to an account. No username, email address, card digits, payment or session reference, IP address or browser. Automated visits are not counted, and the browser's description used to tell them apart is not kept.
Calculators embedded in other websites (since October 2026). When one of our
calculators is shown inside another website, in the frame that /embed/ gives, the
counter receives one event, embed_view, with the calculator and the name of that website
(its host, for example proveedor.es; never the address of the page; an IP address or a local name is
recorded only as "private"), and tool_used when somebody changes a field. Nothing typed in
the calculator is sent, no cookie is set, and neither Google Analytics nor Clarity runs inside the
frame.
Google receives, as it does on any site using its tag, your IP address (truncated — IP anonymisation is on), your approximate location derived from it, your device and browser, and the referring page. Google acts as our processor for this; their terms apply, and the data goes to servers that may be outside the EEA under the transfer arrangements described below.
Legal basis: your consent, which you can withdraw at any time by clearing this site's data in your browser — after which the banner will ask again.
Microsoft Clarity, and exactly what it records
Since October 2026 the site also loads Microsoft Clarity, subject to the same choice. It draws heatmaps — where people click and how far down a page they get — and replays of how a page was used, so that we can see where a tool gets in somebody's way and fix it.
It never receives what you type, or any text from the page. The project is set to Clarity's strict masking, which replaces every piece of text with placeholders in your browser, before anything is sent. On top of that, every calculator, form, field, table and result on this site is marked to be masked, so that a mistaken change to that setting still could not send a size, a cutting list or a customer's name. What Clarity does receive is the layout of the page and the movements, clicks and scrolls on it.
Like any tag, Clarity also receives your IP address, your device and browser and the referring page. Microsoft acts as our processor; their privacy statement applies, and the data may go to servers outside the EEA under the transfer arrangements described below. Its cookies are set only if you press Allow; without that, it gives every page view a new identifier and keeps nothing on your device.
Legal basis: your consent, which you can withdraw at any time by clearing this site's data in your browser — after which the banner will ask again.
There is still no tag manager, no advertising pixel, no chat widget, no third-party fonts and no A/B testing tool.
Hosting
The site is served by Cloudflare Pages. The account, if you create one, also runs on Cloudflare, as described above. Like every web server in existence, Cloudflare's edge processes the IP address of the request in order to deliver the page, and keeps short-lived operational logs for security and abuse prevention. We do not have access to a per-visitor log and we do not export one. Cloudflare acts as our processor; their privacy policy governs what they do at their layer.
Legal basis: legitimate interest in serving and protecting the site.
If you pay
Payments — €29 once, or €3.99 a month on a Pro subscription started before 11 November 2026 — are handled end to end by Stripe on Stripe's own pages. We never see your card number — it does not pass through this site at any point.
What we do receive from Stripe afterwards, and hold in Stripe's dashboard rather than on any system of ours: your name, your email address, your billing address, your VAT number if you gave one, the amount, the date and the last four digits of the card. We use it for exactly three things — issuing your invoice, answering you if you write to support, and meeting Spanish tax record-keeping duties. We do not add you to a mailing list. We do not sell or share it, and there is no marketing use of it at all.
If you pay while signed in, or subscribe monthly (which needs an account), we also keep in your account the Stripe reference of the payment or subscription and the date Pro runs to, so that Pro is recognised wherever you sign in. Cancelling the monthly, changing its card and downloading its invoices happen on Stripe's own pages.
Legal basis: performance of the contract for the invoice and support, and legal obligation for the tax records, which is also why we cannot delete an invoice on request — Spanish law requires those to be kept, generally for several years, and that duty overrides an erasure request for that specific document.
Stripe processes the payment under its own terms: partly on our behalf, and for some purposes of its own as a controller. See Stripe's privacy policy.
If you withdraw. The withdrawal page keeps the email address, the product and the order number you enter, with the date, in our database in the European Union, so that we can confirm it and refund you, which is a legal obligation. They are deleted after three years.
Transfers outside the EU
Cloudflare and Stripe — and, only if they are used, Resend for emails and Google for signing in — are US-headquartered and operate globally, so some processing happens outside the European Economic Area. The account's database and file store are created in Cloudflare's EU jurisdiction; the emails we send are logged by Resend in the United States. All of them rely, according to their own documents, on the European Commission's standard contractual clauses and their published transfer frameworks for this. We have no separate arrangement of our own, and we send nothing to anyone else.
Who the controller is
For the analytics, the hosting, the accounts, what you sync and the customer records described above, the controller is Elam Uceda Herrero, trading as SyntaxFlow, Calle Fresnedillas 25, 28035 Madrid, Spain, reachable at soporte@huingenieros.com. The terms page carries the full trading identification.
Your rights
Under the GDPR you can ask us for a copy of what we hold about you, to correct it, to erase it, to restrict or object to its use, and to receive it in a portable form. Write to the support address and we will answer within a month; usually the same week. If you have an account, you can do much of this yourself from your account page: download everything it holds, and delete it.
Realistically, for most visitors the honest answer to a request will be that we hold nothing at all, because we do not. If you have bought Pro, what we hold is the Stripe record described above, minus the invoice we are obliged to keep. If you have an account, we hold what If you create an account lists, and your account page downloads all of it.
If you think we have handled your data badly, you are entitled to complain to your national supervisory authority — in Spain, the Agencia Española de Protección de Datos. We would prefer to fix it first.
Children
This is a professional tool for the glass and construction trades, with two household tools for adults, Purchases and Family. None of it is directed at children, accounts are only for people aged 18 or over, and we do not knowingly collect anything from children. The only trace of a child is what an adult enters in Family: a profile with an alias, and whatever that adult pastes, which stays in their browser unless they switch on sync.
Changes
If this page changes, the date at the top changes with it. If a change is ever material — if we started collecting something we do not collect today — it would be said plainly at the top rather than buried in a clause. The optional account is such a change, which is why it is announced at the top of this page.
tool_used event, and not one
request carrying a number you entered. (Signed in with sync on, you will also see the work you saved
being copied to your account: that is the copy you asked for, not the calculation.) That is the policy, and it is checkable rather than
promised.