Privacy
What we store, why, and what happens when you leave
Handled sits between your HubSpot portal and your QuickBooks® company, and stores the minimum needed to keep the two agreeing.
What Handled stores
| Category | What it is | Why |
|---|---|---|
| Connection credentials | OAuth tokens for HubSpot and QuickBooks, and your QuickBooks company identifier | To read and write on your behalf. QuickBooks tokens are encrypted at rest (AES-256-GCM). HubSpot tokens are not yet — see the note below. |
| Cost lines | Bill, expense, purchase-order, vendor-credit and time-entry lines attributed to a job, vendor refunds recorded as deposits, and journal-entry lines if you switch those on: amount, date, vendor or employee name, hours and wage rate for time entries, cost code, description, and the QuickBooks customer and job the line belongs to | The job-cost figure on the deal |
| Revenue documents | Invoices, credit memos, sales receipts, refund receipts, deposits and journal-entry lines attributed to a job: amount, tax, date, document number and the QuickBooks customer’s name | The revenue and realised-margin figures on the deal |
| Job and invoice crosswalks | Which HubSpot deal maps to which QuickBooks job; which invoice mirrors which | So the same record is not created twice |
| Contact crosswalk — personal data | Contact names and email addresses, mapped between HubSpot contacts and QuickBooks customers | To address an invoice to the right person |
| Billing state | Milestone schedules, invoice proposals, approval records (who approved, and when) | The approval audit trail |
| Settings and mappings | Your cost codes, sync configuration, billing templates | Your configuration |
| Operational | A task queue and a record of webhook deliveries | Reliable, retryable syncing |
| Website account — personal data | If you create an account on this site: your email address, your name if you give one, and a hashed password if you set one. Sessions record a hashed IP address and your browser's user-agent string | To sign you in, and to rate-limit sign-in attempts |
The personal data Handled holds is: contact names and email addresses; the names of employees whose QuickBooks time entries are costed to a job, with their hours and wage rate; the QuickBooks customer and job names on cost lines and revenue documents, which for a homeowner is usually their name; the email address and user id of the HubSpot users who install Handled or approve an invoice; vendor or payee names on cost lines; the email address of each person invited to a tenant; and, if you create an account on this website, your email address, your name if you give one, a hashed password if you set one, and a hashed IP address and user-agent string for each session.
Handled does not store payment-card data or bank details. Besides the two OAuth connections there is one further credential case, and it only exists if you create it: if you configure a data-lake export destination, Handled stores the connection credentials you enter for it — for example an object-storage key or a warehouse password. They are stored to run the export you asked for, and are erased with everything else.
What Handled does not do
- It does not sell or share your data.
- It does not use your data to train models. The one AI-assisted feature drafts the wording of an invoice line. What is sent is the deal name — usually a property address — plus the milestone name and the billing rule. No amounts and no contact details are sent, and the amount and the decision to bill are computed, never generated.
- This website runs no analytics and no third-party scripts, and sets no advertising or tracking cookies. It sets five cookies in total, all of them strictly to sign you in or to finish an invitation or a QuickBooks connection you started — listed in full below.
Cookies
Every cookie this website can set is listed here. All five exist only to sign you in or to finish an invitation or a QuickBooks connection you started, all five are HttpOnly (so page scripts cannot read them), Secure and SameSite=Lax, and none of them is used for advertising, analytics or tracking you across sites.
| Cookie | Set when | Lasts | What it holds |
|---|---|---|---|
jobline_oauth_nonce | The moment you click Continue with HubSpot — before you have signed in, and even if you then abandon the sign-in | 15 minutes | A random one-time value. It ties the sign-in you started to the browser you started it in, so somebody else's half-finished sign-in cannot be completed in your browser |
jobline_link_ticket | Only if you sign in with HubSpot using an email address that already has a Handled account. You are not signed in at this point — we ask you to sign in to the existing account first | 15 minutes | A short-lived signed note recording that HubSpot vouched for that address. It grants nothing on its own |
__Host-jobline_session | When you are signed in | 30 days, or until you sign out | A random token and nothing about you. Signing out deletes it |
jobline_invite | Only if you open an invitation link while you are not signed in, so the invitation is still there once you have signed in | 15 minutes | A short-lived signed note naming the invitation you opened, never the invitation’s own token. It grants nothing on its own: the invitation still has to be for the address you sign in with |
__Host-jobline_qbo_connect | When you start a QuickBooks connection in your browser | 15 minutes | A one-time value for each QuickBooks connection you have started and not finished, up to five, which only our server can compute. It ties the connection to the browser that started it, so it cannot be finished from somewhere else |
The first two are deleted as soon as the sign-in they belong to finishes, whether it succeeded or failed. The invitation cookie is deleted once the invitation is accepted or turned down, and each connection’s value is removed when QuickBooks sends you back. On a local development server the session cookie is named jobline_session and the QuickBooks connection cookie jobline_qbo_connect, because the __Host- prefix requires HTTPS.
Sub-processors
- Vercel — application hosting
- Supabase — the database holding everything above
- Intuit and HubSpot — your own systems, which Handled connects
- Anthropic — invoice line wording only
- Resend — the email this website sends: sign-up confirmation, password and invitation messages, which carry your email address
- Stripe — subscription checkout and billing. When you subscribe it receives your HubSpot portal id, the plan you chose and the email address you sign in with, and it holds your card: Handled never sees the card number
What happens when you leave
Erasure is a hard delete — not a flag, not an archive — performed table by table with a per-table report, covering the tables listed above including the contact crosswalk that holds names and emails. Your OAuth tokens are deleted with it.
One record is kept: our billing record for your portal. Erasure does not remove your HubSpot portal ID and domain, when Handled was installed and removed, your plan and trial or subscription status, or our Stripe references and our log of billing events, because they are our record of your subscription and of what we bill for it. They hold none of your jobs, deals, contacts, customers, QuickBooks documents or cost lines. How long we keep them is still being set, and this page will say before Handled is offered publicly.
1 · Nothing triggers erasure on an uninstall yet. The erasure routine is built and tested, but nothing in Handled acts on an uninstall today, so uninstalling erases nothing by itself. Email us and we will run the erasure and send you the per-table report — that path works today and we would rather you use it than assume.
2 · Uninstalling does not switch off your QuickBooks authorisation. That authorisation is held at Intuit, and until it is revoked Handled keeps reading QuickBooks on its scheduled refresh. The erasure we run on request revokes it at Intuit before it deletes our copy of the token, and its report says whether Intuit confirmed the revoke. So also remove Handled in QuickBooks, under Settings → Apps: that step ends the access whatever happens on our side, and we would rather tell you than let you assume the uninstall did it.
3 · HubSpot tokens are not yet encrypted at rest. QuickBooks tokens are encrypted with AES-256-GCM. The HubSpot side is stored in plain text in our database and is a pre-launch item we have not finished. It is named here because a security page that omits its own gap is worth less than one that admits it.
Erasure is required of us by HubSpot’s developer policy and by marketplace certification.
If you trial Handled and do not convert
This describes how the trial is designed to behave. Trials are not open yet, and this behaviour is not built — it is stated here so the intent is on the record, not as a description of something running today.
Your figures will stay on your deals, marked plainly as no longer updating and carrying the date they stopped. We do not silently clear fields in your CRM — and we will not leave a stale number looking live either.
Your rights
Ask us and we will tell you what is held for your portal, correct it, or delete it. Email privacy@roofingbusinesspartner.com. Most of what Handled holds originates in your HubSpot portal or your QuickBooks company, and you control both directly.
Breach notification
If your data is affected by a breach we will notify you and HubSpot without delay, as HubSpot’s developer policy requires.
Contact: privacy@roofingbusinesspartner.com. Last drafted 28 August 2026 — version and effective date to be set at legal review.