2 Project Areas Check the surfaces being coated, then enter sqft and optionally a photo
3 Coating System BEST is the default quoted tier β customer sees Good and Better as alternates on the estimate
β Good (1 Coat Solid Β· 5-Year) and Better (2 Coat Solid Β· Lifetime) are auto-included on the customer's estimate for comparison. $899 project minimum applies Β· Good auto-hides when garage >600 sf Β· Rates editable in Pricing tab.
4 Extras Only checked items appear on the estimate
5 Additional Services Optional line items not driven by sqft
6 Discount Bundle 10% applies automatically when 2+ areas are in scope β no reference needed. Pick another option only to override.
π· Bundle discount active β 10% off (2 areas in scope)
7 Color, Source & Notes
Subtotal
β
Discount
β
Grand Total
β
A Brand Configuration White-label for partner contractors
B Sales Representatives
Editing the active rep below applies to estimates instantly. Save Defaults to persist the full roster.
C Extras & Add-Ons Pricing Per-sf rates, percentages of base, and flat fees
β Auto-saves as you type Β· Builder labels update in real-time across the app
D Pricing Master Sheet
Active mode (from Consult Type): VIRTUALDefaults: in-person +5% premium over virtual
Option
π₯ VIRTUAL
π€ IN-PERSON
0β549
550β899
900+
0β549
550β899
900+
Saves brand config, pricing, rep roster, and integration settings to your browser. Reset restores GFP factory defaults.
π Estimate History
π Integration Hooks Stubbed β ready to wire to live services
All hooks fire from real events in the app. With integrations off, events log to browser console for testing. Flip a toggle and enter credentials to activate. Each "Test" button fires a sample payload using current builder state.
π€ GoHighLevel β CRM Sync
OFF
Pushes estimate events to a GHL webhook. Use to create opportunities, attach PDF, trigger follow-up automations, sync contact data. Events fired: estimate.created, estimate.viewed, estimate.downloaded, estimate.signed_requested, estimate.deposit_requested.
π³ Stripe β Deposit Capture
OFF
Generates a Stripe Checkout link for the 50% deposit. Customer clicks "Pay Deposit" on the estimate and pays via credit card or ACH. Note: Requires a small backend (Cloudflare Worker, Supabase Edge Function, etc.) to mint Checkout Sessions β never put a secret key in this file. The Public Key field below is for the eventual frontend wire-up.
β E-Sign β Customer Signature
OFF
Submits the estimate PDF to DocuSign / HelloSign / Dropbox Sign for customer signature. Pre-fills signature fields on Terms page and Use & Care page. Note: Like Stripe, this needs a backend endpoint to call your e-sign provider β never expose API keys in browser code.
π Analytics Hook
Every estimate event is also broadcast as window.dispatchEvent(new CustomEvent('gfp.event', {detail: {...}})). Pipe it to GA4, Segment, Mixpanel, PostHog, or a Google Sheet without touching this file. Useful events: estimate.created, estimate.viewed, estimate.downloaded, estimate.deleted.
No config needed β events fire by default. Listen in your analytics shim or browser DevTools console.