Privacy policy
This policy explains what information Granite collects, how we use it, who helps us run the service, how long we keep it, and the choices you have. It covers the Granite application and this website.
Who we are
Granite is a web application for franchisor organizations and their franchise locations. It is operated by:
Granite Suite
In this policy, “Granite,” “we,” and “us” mean that company.
Our role
Granite is used by franchisor organizations (each a “Customer”) and the people they invite, including franchise owners and employees. A Customer decides what information goes into its workspace and who can see it. For that information (“Customer data”) we act as a service provider, handling it only to provide the service under our Terms of service and the Customer’s instructions.
The same applies to information about the people a franchise serves, such as a homeowner who receives an estimate or appointment email from a franchise: the franchise and its Customer decide what is kept about them, and we handle it for them.
For the account details we need to run the service, for this website, and for contact-form inquiries, we decide how the information is used.
If you use Granite through an organization, that organization’s own privacy practices also apply to you, and you can ask it about the information it keeps in Granite.
Information we collect
Account information
- Your name, email address, organization memberships, roles, franchise assignments and invitations.
- Sign-in runs on Granite’s own sign-in system, using your email address and a password you choose. Granite stores only a one-way hash of your password, never the password itself.
Organization and franchise information
- Franchise details such as legal names, DBA names, employer identification numbers (EINs), addresses, contacts, phone numbers, agreement and renewal dates, and franchise fees.
- Customer records and customer feedback that an organization chooses to import.
- Supplier purchase records, price lists and tax settings that an organization enters or imports.
Estimates, scheduling and a franchise’s own customers
- Details of the people and businesses a franchise serves: name, contact person, email address, phone number, address, and the address where the work is done.
- Estimates, change orders, appointments, crew assignments, notes and job photos.
- When a franchise sends an estimate, change order or appointment by email, the person who receives it can open it through a private link without an account. When they open an estimate, Granite records when it was first viewed. When they sign an estimate or change order, Granite records the name they type, their drawn signature, the time, their IP address and their browser and device details. A franchise can also collect a signature in person on its own device, and Granite records who collected it and that device’s IP address and browser and device details. Each signature is kept with the customer’s name, email address and phone number as they were at signing. Granite also records a reason they give for declining an estimate or change order, and their confirmation of an appointment or a message asking to change it.
Sales reports and uploaded files
- Sales report files, such as Excel and CSV files, and the sales figures in them.
- Franchise documents uploaded for document requirements, such as insurance certificates and licenses, and franchise images.
- For organizations that use Bid Takeoff, construction bid sets and drawings, uploaded directly or fetched from a share link the franchise provides.
Billing and payment information
- Billing rules, reporting periods, calculated charges, invoices, credits, loans, payment requests and payment status.
- Connection details for the Customer’s own Stripe account. Stripe credentials are stored encrypted, and we receive payment updates from Stripe.
- Card and bank account details are entered with Stripe, on Stripe-hosted Checkout. Granite never receives or stores card numbers or full bank account numbers.
- If a franchise sets up autopay, Stripe saves its card or bank account in the Customer’s Stripe account. Granite keeps only Stripe’s references to it (such as its customer and payment method identifiers) and a short label such as “Visa ending 4242,” and records each automatic payment attempt and its result.
Accounting sync information
- When an organization connects QuickBooks Desktop or Enterprise, the invoice, payment, customer and item details needed for the sync, and the status of the connection.
Email delivery information
- Recipient addresses, delivery status, and bounce or complaint reports for the emails Granite sends.
Assistant and connected apps
- For every organization unless the organization turns the in-app Granite assistant off: the messages people send it, the assistant’s answers, which Granite page and record (such as a franchise, invoice or sales report) the person had open, any filters or search text on it, the actions that page offers, what the assistant did on that page and whether it worked, and, when needed to help, values in form fields other than fields meant for private information.
- When a Customer or person connects an app, such as an AI agent or tool, to Granite through Granite’s API or MCP server, the app acts on that person’s behalf with that person’s permissions, limited further to the access they approved when connecting it, until they disconnect it. Information Granite returns to it goes to the app the Customer or person connected and is under their control.
Usage and technical information
- An activity history of who changed important records, and when.
- Request logs, IP address, browser type and error details needed to run and protect the service.
- A session cookie that keeps you signed in, and browser storage used for sign-in state and similar app functions.
- Product measurement events limited to approved, non-identifying properties, such as a status or a count range. They never include names, email addresses, file names or document contents, and Granite processes them itself.
This website and the contact form
- When you use the contact form, we store your name, work email, company, number of locations and message in a restricted inbox so the Granite team can respond.
- This website uses Cloudflare Web Analytics for aggregate visit statistics, which does not use cookies. The website does not use advertising cookies or trackers.
How we use information
- To provide the service: sign-in, sales reporting, billing calculations, invoices, payment requests, document tracking, estimates, scheduling, reminders and follow-up.
- To send service email, such as invitations, report and document reminders, payment requests, payment reminders and billing notices, and, on a franchise’s behalf, the estimate and appointment emails it sends to its own customers. Granite does not send marketing email from the application.
- To take card and bank payments through the Customer’s own Stripe account, including autopay when a franchise sets it up, and keep invoice status current.
- To sync invoices and payments with QuickBooks when an organization connects it.
- To answer questions and help on the page in the Granite assistant, unless the organization turns it off.
- To keep the service secure, prevent abuse and investigate problems.
- To provide support when an organization or user asks for help.
- To respond to contact-form inquiries.
- To improve the product, using only the non-identifying measurement events described above.
- To meet legal obligations.
We do not sell personal information, and we do not share it for advertising.
Legal bases
Where the law requires a legal basis, we rely on performing our contract with the Customer, our legitimate interests in running, securing and improving Granite and in answering inquiries, compliance with legal obligations, and consent where it is required. For Customer data, the Customer decides the legal basis for the information it puts into Granite.
Service providers
These providers help us run Granite. Each receives only the information it needs for its task.
- Stripe: card and bank payment processing in each Customer’s own Stripe account, including Stripe-hosted Checkout and saved payment methods for autopay.
- Cloudflare: storage of uploaded and generated files, such as sales report files, franchise documents, job photos, bid sets and invoice PDFs, in Cloudflare R2, and delivery, security and aggregate visit statistics for this website.
- Resend: delivery of service email, including email verification and password reset messages and the estimate and appointment emails franchises send to their customers, and delivery status reports.
- LedgerSpoke: QuickBooks Desktop and Enterprise sync through Intuit Web Connector, only when an organization connects QuickBooks. Where an organization’s sync is set up with Conductor instead, Conductor performs this role.
- OpenAI: generating Granite assistant answers. The assistant is on for every organization unless the organization turns it off. OpenAI receives the person’s message; earlier messages in the same conversation; the Granite page the person is on, including the record open on it (such as a franchise, invoice or sales report), any filters or search text, the actions that page offers, what the assistant did on that page and whether it worked, and, when needed to help, values in form fields other than fields meant for private information, such as phone, tax ID, card or bank fields; and the results of the Granite tools the assistant runs for the person, such as invoice, sales, billing-rule and export details. It handles them under its API terms. We send requests with OpenAI’s no-storage option.
- TypeSafe AI, Inc. (Jev): on for every organization’s assistant unless the organization turns it off, choosing which assistant tools fit a request. It receives a shortened copy of the person’s message (at most 1,000 characters) with email addresses, phone numbers and record identifiers typed in common formats replaced by placeholders (names, other details typed into the message, and numbers typed in unusual formats may still be included), and the fixed names and descriptions of the assistant’s tools. It does not receive account records, identifiers, page context, conversation history or tool results.
- Server and database hosting: a virtual private server provider whose server runs the application and its Postgres database, which we manage ourselves.
We may also disclose information when the law requires it, to protect the rights and safety of our users or the public, or as part of a merger, acquisition or sale of the business, in which case this policy continues to apply to it.
Where information is processed
Information may be processed in the United States and in other countries where our service providers operate.
How long we keep information
- Customer data is kept while the Customer’s account is active. When the account closes, the Customer can ask for a copy of its data. After that, we delete or de-identify it within 90 days after the account closes, except records we must keep longer for legal, tax or dispute reasons, which we keep only as long as that reason lasts.
- Assistant conversations are kept for the period each organization sets, from 1 to 365 days (90 days unless the organization changes it), and are then deleted. Shortening the period also applies to existing conversations. Extending the period applies only to new conversations.
- Bid sets uploaded or fetched for Bid Takeoff are deleted 30 days after the bid is due, sooner if the bid is closed early, and straight away if it is cancelled. The bid’s record and takeoff results stay with the Customer data.
- Backups may hold deleted data for a limited time until they are overwritten.
- Contact-form inquiries are kept while we respond and follow up. You can ask us to delete yours at any time.
- Activity history and technical logs are kept as long as needed for security, troubleshooting and the Customer’s review of changes.
Security
- Connections to Granite use HTTPS.
- Stripe credentials are stored encrypted, and card and bank account details never reach Granite.
- Access inside an organization follows each person’s role and franchise assignments.
- Important changes are recorded in the activity history.
- Granite platform administrators can open a support session only with a recorded reason. Support sessions are read-only, end after 15 minutes, and are logged.
No system is perfectly secure. If you believe your account has been used without permission, tell your organization administrator and contact us right away.
Your rights and choices
- You can ask to access, correct, export or delete your personal information, and to object to or restrict some uses of it. Depending on where you live, local law may give you more rights.
- If your information is in an organization’s workspace, send your request to that organization first. If a franchise sent you an estimate or appointment, ask that franchise. We will help it respond.
- Organization administrators can change member access, roles and franchise assignments in the app.
- You can ask us to delete a contact-form inquiry at any time.
To make a request, use the contact form described below. We may need to confirm your identity before acting on it, and we will not treat you differently for making a request. You can also complain to your local data protection authority.
Children
Granite is a business service. It is not directed to children, and we do not knowingly collect personal information from children under 16.
Changes to this policy
We will update this page when our practices change and revise the date at the top. If a change is significant, we will tell organization administrators by email or in the service before it takes effect.
Contact us
Send privacy questions and requests through our contact form at https://www.marblecrm.com/contact/ and start your message with “Privacy request.” Do not include passwords or card details in your message.