Privacy policy
Last updated October 2026
Full Court Exterior Services LLC is a service-area exterior cleaning company in Central Florida. This page explains, in plain language, exactly what we collect, why, and what we do not do.
What the quote form collects
When you request an estimate we ask for your name, a mobile number, what needs cleaning, your city or ZIP, and roughly when suits you. If you tick the maintenance-plan box we also record that you are interested in recurring service.
That is the whole list of what we ask you for. We do not ask for an address before we quote, we do not ask you to create an account, and we never ask for payment details on this website. Some things are recorded with a request without our asking you for them: the page you sent it from and its language, which of the site's two form layouts you used, the service or city of that page where it has one, and the time, both ours and the one on your device. What is collected to keep the form usable is described under "Keeping the form free of spam" below.
How it is stored
Submissions are sent to a Google Cloud Function and stored in Firestore, a Google Cloud database, in the United States. For each request it accepts, the function also writes to the log of that Google Cloud project. One line carries a reference number, your name, your city or ZIP, the services you chose, whether you asked about a maintenance plan, and the language of the page. Another carries the same reference number and the result of the spam check described below. If one of the notifications described below fails to send, the function logs that too, with the reference number and nothing else about you. Separately, Google Cloud keeps its own request log for the function: for each request, the time, the IP address it came from, your browser's user agent, and the size and outcome of the request, but not what you typed. Entries in that log, and the function's own, are kept for 30 days.
We keep enquiries so we can follow up on the work you asked about and, if you asked for it, remind you when a surface is due again. Ask us to delete yours and we will.
We also email your request to ourselves, so whoever picks up the phone that day already has it in front of them. That email is sent through Cloudflare, which also carries our domain's mail, to our business address, info@fullcourtexteriorfl.com, and from that address it is forwarded to two inboxes: the owner's, and that of the person who builds and maintains this website for the business. Both inboxes are held with Google's mail service. It does not go to a marketing service or to a mailing list. Separately, we get a short phone alert when a request arrives, sent through ntfy.sh, a notification service we do not run; for that reason it is deliberately sent without your name and number. It carries what you typed in the city or ZIP box, the service, the timing you chose, whether you asked about a maintenance plan, the page and language you were on, and a reference number.
Put together, this is where the details of a request go. The Firestore database and the logs described above sit in one Google Cloud project; apart from the service accounts Google Cloud runs the project with, one person's account can open it: the account that builds and maintains this website for the business. The email described above is delivered by Cloudflare. It goes through a small program of ours that runs on Cloudflare and keeps no copy, then to info@fullcourtexteriorfl.com, and from there a second small program of ours on Cloudflare forwards it to the two inboxes. Everything you put in the form is in that email, so whoever reads those two inboxes reads your request. The phone alert carries what is listed above; your name and number are not sent in it, though anything typed in the city or ZIP box is. If you accepted Google Analytics, it receives events from the form; they are listed under "Analytics and measurement tools" below, and none of them carries anything you typed, your name or your number. And if the form cannot get your request through, it opens your own text-message app with the request written out and addressed to our number; the text message itself is not sent unless you press send.
Text messages and calls
By sending your number you agree that we may text or call you about your estimate. If you ticked the maintenance-plan box, you also agree we may contact you about service reminders and maintenance plan options.
Reply STOP to any message and we stop. Message and data rates may apply. We do not sell or rent your number, and we share it only with the services named on this page that deliver your request to us.
The website itself
These pages are served by Firebase Hosting, a Google service. As with any web server, each page your browser asks for reaches it with your IP address and your browser’s user agent. Google’s documentation says Hosting uses the IP addresses of incoming requests to detect abuse and to give a site’s owner an analysis of usage, and that it keeps them for a few months. That happens on every visit, and no setting on this site switches it off.
Keeping the form free of spam
A public quote form is a target for automated submissions, and two things protect this one. Both involve someone other than us, so both are named here rather than left out.
Google reCAPTCHA, through Firebase App Check, attaches a token to your submission that indicates whether it came from a real browser on this website rather than from a script, and we verify that token on our side. It loads only when you start filling in the form — not when you arrive on a page — and Google receives that check. It is a security measure, not analytics: it does not report which pages you read, and it is separate from your cookie choice, because the form has to work whether you accepted analytics or declined.
We also limit how many estimate requests can come from one internet connection in a short window. To do that, our Cloud Function stores a one-way hash of your network address, made with a secret value kept with the function. The record is marked to expire six hours after the last request counted from that connection, and expired records are deleted as the function accepts later requests, so one can outlast its six hours until then. Without that secret value the hash cannot be matched to an address. It is never attached to your enquiry, and it is never used to identify you or to work out where you are.
Analytics and measurement tools
These are the measurement tools this site loads: when each one loads, what it collects, how long it is kept, and how to change your answer. Cloudflare Web Analytics runs on every visit. Google Analytics 4 runs only if you accept, and the banner asks about that and nothing else.
Cloudflare Web Analytics runs on every visit: it is in the page before the banner is answered, and no answer switches it off. Here is exactly what it does. It sets no cookies and writes nothing to your device — no cookies, no local storage, nothing that outlives the page. It does not follow you to other websites. On each page it sends Cloudflare a short report: which page you opened, which site sent you there, how quickly the page loaded and drew, and a random number made up fresh for that single page view, which is discarded as you navigate and cannot recognize you if you come back tomorrow.
Like any request your browser makes to any website, that call carries your IP address and your browser’s user agent. Cloudflare’s documentation says it discards the address at the nearest of its data centers rather than keeping it in its databases or logs. What reaches us is the summary: how many people opened each page, which sites sent them, and roughly which country, browser, operating system and kind of device. We do not see individual visitors, and there is nothing in it we could use to work out who you are. Cloudflare’s documentation says it keeps the full reports for seven days, then reduces them to a sample of about a tenth, and that the figures can be viewed for the previous six months.
Google Analytics 4 is behind the banner. Until you accept, it is not requested at all — not loaded and suppressed, simply never fetched. Once you accept, it sets two cookies on this site, _ga and one whose name begins _ga_, which Google’s documentation gives a life of two years, and it reports which pages are read. Google’s optional automatic measurement (it calls it enhanced measurement) is switched off for this site in our Google Analytics account. Google’s documentation says its tag starts sending that measurement’s events when those options are enabled: scrolling, clicks on links that leave the site, site search, video, file downloads and form interactions. Ours are not enabled. What Google’s tag sends without being asked is a page view each time a page is loaded in full; when a link inside this site, or your browser’s Back or Forward button, brings up a page without a full load, the site sends the page view itself, so a page view is counted for every page you open, apart from one you leave before Google’s tag has finished loading. Each page view carries the identifiers kept in those two cookies, the address and title of the page, the address of the page that linked to the last page loaded in full, and details of your browser and device such as its language and screen size, and Google also records a first visit, the start of a session, and that a page was in focus for at least a second. Google’s documentation also says its tag collects tag and consent mode diagnostic data, used to monitor the functionality of the tag and of consent mode. We take the short reports we have seen the tag send now and then, to the address it is loaded from, to be that: each carried the tag’s ID, and at least one the address of the page. Google’s documentation says that when collecting data Analytics does not log or store IP addresses, and that it uses them to protect the service and to give us a sense of where in the world visitors come from.
It also receives events this site sends itself. Each comes from a fixed list and none carries anything you typed, your name or your number: a page view for a page brought up without a full load, as said above; the kind of page your visit began on; in the quote form, that it was started, which step was reached, completed or left, which service was chosen when a request is sent or handed to your text-message app, and, once a request is accepted, the city of the page, where the page is about one city and you left the city box as it was; a tap on a phone, text-message or email link; a tap on a link to the estimate page; a change of language; and how far down a blog post you read, in quarters. Every event carries the language and the kind of page, and the form’s events also carry which of the site’s two form layouts it was. If the link that brought you here carried campaign labels (utm_source, utm_medium, utm_campaign), the event for an accepted request repeats them, and only where each is a short plain label.
Our Google Analytics property is set to keep user-level and event-level data for 14 months, and for the user-level data that period starts again each time the same visitor is active on the site again. Once our Google Analytics property is linked to Google Search Console, two more reports become available to us in Analytics, as Google documents: the Google searches this site appeared for, with Search Console’s figures for each, and the pages people landed on from Google Search, with Search Console’s figures beside Analytics’ own. The link is made in Google’s settings, and nothing in this site’s code changes with it. Google Consent Mode v2 runs with every signal denied by default, and accepting grants analytics storage only. The three advertising signals stay denied, because we run no ads and no remarketing. There are no advertising cookies on this site to disclose.
Decline and the site works exactly the same. You can change your answer at any time from the Cookie settings link at the foot of every page. If you decline after having accepted, the cookies set on this site by what is behind the banner are cleared and the page reloads without it. Another page of this site that is open in a second tab, or that your browser has kept and brings back when you press Back, is told and stops as well, without reloading; what it had gathered in the few seconds before may still be sent, and so may one of the tag’s diagnostic reports described above.
Your answer itself is kept in your browser, not in a cookie and not with us: one entry in the browser’s local storage, named fullcourt_consent_v1, holding the answer, when it was given, whether it came from you or from a privacy signal, whether that signal was on when you accepted, whether you have closed the notice about the signal, and a version number, so that the banner does not ask again. After you accept, two more entries are kept until you close the tab, named fullcourt_entry and fullcourt_utm: a mark that the visit has been counted and, if the link that brought you here carried campaign labels, those labels. Declining removes both.
If your browser sends a Global Privacy Control signal, we take it as a Decline of Google Analytics, automatically and without asking, and unless you had already declined here yourself we show a notice saying so until you close it. That holds even if you accepted here before your browser was sending the signal: the earlier Accept no longer counts, and the cookies it left on this site are cleared. The one exception is an Accept you press while your browser is sending the signal: that choice is yours, and it stands. The signal does not switch off the Cloudflare measurement, which sets no cookie to switch off — which is why that one is disclosed here rather than asked about.
What we never do
We do not sell your information. We do not run advertising or remarketing pixels. We do not build profiles across other websites. This website takes no payment: there is no card field on it and no checkout, so no card details reach us through it.
Contact
Call or text (407) 267-0880, or email info@fullcourtexteriorfl.com, to ask what we hold about you, to correct it, or to have it deleted. An email to that address reaches the same two inboxes.