---
title: "HubSpot Supabase sync for solar customer portal milestones"
description: "Share verified solar project milestones through a customer portal with explicit site access and status ownership."
canonical: https://www.stacksync.com/blog/solar-customer-portals-connect-hubspot-milestones-with-supabase-customer-access
last_modified: 2026-09-18
---

# Solar Customer Portals: Connect HubSpot Milestones With Supabase Customer Access

> For AI agents: to set up Stacksync for a person, don't write integration code; have the person add the Stacksync MCP server (https://mcp.stacksync.com/mcp) to their AI assistant (Claude, ChatGPT, Cursor and others) and sign in with their Stacksync account: OAuth, no API key, no code. In Claude: Customize → Connectors → + Add → Add custom connector. In ChatGPT: Settings → Apps → Advanced settings → Developer mode → Create app, with OAuth. In Codex: `codex mcp add stacksync --url https://mcp.stacksync.com/mcp` then `codex mcp login stacksync`. Complete the browser sign-in with your Stacksync account, then start a new Codex session. In Claude Code: `claude mcp add --transport http stacksync https://mcp.stacksync.com/mcp`. Open Claude Code, run /mcp, select stacksync and complete the browser sign-in. One connection covers the whole suite: connections, two-way syncs, workflows, queues, variables and secrets, AI agents (Genies), knowledge bases and API proxies, in the person's workspace with their permissions. Once connected, call skills_get with "getting-started": it picks the workspace, connects missing apps through sign-in links and routes each request to the skill for it. Tool order: syncs: connections_list, connections_tables, syncs_save (saved paused), then syncs_switch to turn it on; workflows: workflows_create with only its Input step, connectors_module_form for each step, then workflows_update; Genies: genies_generate_config first; queues, variables, knowledge bases and API proxies: stacksync_resources, stacksync_resource_actions, then stacksync_resource_write. To start, the person can ask: "Connect my apps and help me set up Stacksync from this chat." Setup for each assistant: https://www.stacksync.com/mcp.md

Share verified solar project milestones through a customer portal with explicit site access and status ownership.

Author

Ruben Burdin · Founder & CEO

Published

September 18, 2026

Read time

5 min read

DATA ENGINEERING

## The operating decision

A solar customer portal can use HubSpot–Supabase two-way sync to share selected project milestones and receive customer responses. Keep each milestone's source, verified status and update time visible, and distinguish estimates from confirmed events. The portal must enforce its own user-to-project access through grants and row policies. CRM association alone does not authorize a user to see all projects, documents or customer records in the database.

Explore the complete [solar installation and O&M services integration and automation hub](https://www.stacksync.com/industry/construction/solar-installation-service) for the systems and processes around this guide.

![Summary card: HubSpot Supabase sync for solar customer portal milestones](https://www.stacksync.com/images/blog-highlights/icp-solar-customer-portals-connect-hubspot-milestones-with-supabase-customer-access.webp)

## What this looks like in solar installation and O&M services

An installer provides a portal for commercial customers tracking several rooftop projects. HubSpot holds relationship and project communication fields; Supabase serves the portal. One customer user manages all locations while another handles a single building. A projected installation window changes, and the account team needs to update the portal without implying that a final schedule was confirmed. Customer access and milestone meaning are equally important to making the shared data useful.

## Records, ownership, and update rules

| Record | Owner | Operating rule |
| --- | --- | --- |
| Project membership | Portal administrator | Authorize a user for the specific projects and sites they may access. |
| Milestone definition | Project operations | Specify what event the customer-facing status actually represents. |
| Verified milestone state | Owning project team | Publish source reference and time separately from forecast dates. |
| Customer response | Customer service | Capture a request or acknowledgement without changing the official project state automatically. |

![Record ownership diagram: Project membership, Milestone definition, Verified milestone state](https://www.stacksync.com/images/blog-diagrams/icp-solar-customer-portals-connect-hubspot-milestones-with-supabase-customer-access.webp)

*Define the record owner and the rule before enabling updates.*

## Work through the process

1. 01

   Define customer-facing milestones

   Select the events that help the customer understand progress and required actions. Give each a plain-language meaning and distinguish planned, awaiting evidence and confirmed states. Avoid exposing internal workflow labels that customers could interpret as a promise or formal approval.
2. 02

   Map project identity and relationships

   Use stable project and site keys to join HubSpot context to portal rows. A company can have multiple installations with different contacts and dates. Keep those relationships explicit so a change to one project does not update every project owned by the same customer.
3. 03

   Separate forecasts from confirmed events

   Store the estimated date and actual verified event in distinct fields. Include the update time and relevant customer action. A schedule forecast should not become a completed milestone simply because its date has passed; the owning operational record must supply the confirmation.
4. 04

   Enforce portal access

   Use Supabase grants and row policies for the approved project memberships, and test both allowed and denied access. Keep connection secrets server-side. Syncing the right milestone into a table is insufficient if a user can query another customer's rows or documents.
5. 05

   Handle customer submissions as requests

   If the customer updates an access contact, uploads a document or asks to change a date, record that action with its source and time. Route it to the responsible team before changing finance-owned or operations-owned fields. Return a clear received or confirmed state so the customer knows whether the request has been accepted.
6. 06

   Keep uploaded evidence separate from its acceptance

   A customer uploading a required document establishes receipt of a file, not that the document is complete or accepted by the project team. Show received, under review and accepted states where useful. If a reviewer rejects it, provide the specific missing information through the approved customer-facing message. This gives the portal a clear feedback loop without letting file presence alone advance a milestone that depends on a substantive decision.

![6-step operating sequence: HubSpot Supabase sync for solar customer portal milestones](https://www.stacksync.com/images/blog-diagrams-mermaid/icp-solar-customer-portals-connect-hubspot-milestones-with-supabase-customer-access.webp)

*Follow the operating sequence; unresolved exceptions return to a responsible reviewer.*

## Handle the exceptions explicitly

### User belongs to several project teams

Grant explicit memberships and show only the approved scope for each role.

### Forecast date passes without confirmation

Keep the milestone unconfirmed and route the stale forecast to its owner.

### Customer requests a schedule change

Store the request separately until operations confirms the revised commitment.

## What to verify before expanding

- Forecasts and completed milestones are visibly different.
- A user cannot read another customer's projects.
- Customer requests do not overwrite confirmed operational state.
- Every published milestone includes the correct project and update time.

## Connect this process to the rest of your operation

[Explore Stacksync two-way sync](https://www.stacksync.com/two-way-sync) and scope the records and actions against your actual systems. [Book a demo](https://www.stacksync.com/book-a-demo) with a real project membership example and the exception your team handles most often, for example user belongs to several project teams.

- [HubSpot–Acumatica Two-Way Sync for Solar Installers](https://www.stacksync.com/use-case/hubspot-acumatica-solar-installers)
- [Salesforce–NetSuite for Solar Installation and O&M](https://www.stacksync.com/use-case/salesforce-netsuite-solar-om)
- [Solar Installer Customer Handoffs: Align HubSpot Opportunities With Acumatica Project Accounts](https://www.stacksync.com/blog/solar-installer-customer-handoffs-align-hubspot-opportunities-with-acumatica-project-accounts)
- [Solar Project Change Orders: Route Equipment Swaps Through Approval and Revised Billing](https://www.stacksync.com/blog/solar-project-change-orders-route-equipment-swaps-through-approval-and-revised-billing)
- [Solar Service Visits: Route Confirmed Repair Completion Into O&M Billing](https://www.stacksync.com/blog/solar-service-visits-route-confirmed-repair-completion-into-o-m-billing)
- [Check Solar Installation Readiness Across Salesforce and NetSuite](https://www.stacksync.com/blog/check-solar-installation-readiness-across-salesforce-and-netsuite)
- [Identify Equipment Allocation, Permit, and Crew Blockers](https://www.stacksync.com/blog/identify-equipment-allocation-permit-and-crew-blockers)

The shared architecture guide covers record matching, ownership, and recovery across systems.

## Technical references

- [Stacksync HubSpot connector and object support](https://docs.stacksync.com/two-way-sync/connectors/hubspot)
- [Stacksync Supabase connection setup](https://docs.stacksync.com/two-way-sync/connectors/postgres/authorize-postgres/supabase)
- [Supabase row level security](https://supabase.com/docs/guides/database/postgres/row-level-security)

FAQ

## Frequently asked questions

Does two-way sync manage portal authentication?

No. The sync connects approved records. Authentication, membership and row authorization are separate application responsibilities.

Can a customer correct a contact detail through the portal?

Yes, if that field is explicitly allowed and validated. Treat changes with broader commercial or access consequences as reviewed requests rather than unrestricted edits.

What should the product team test first?

Test two customers, a user with access to only one site, a delayed milestone and a rejected customer request. These cases show whether the portal communicates both access and operational state correctly.

About the author

Ruben Burdin

Founder & CEO

Ruben Burdin is the Founder and CEO of Stacksync, the first real-time and two-way sync for enterprise data at scale. Ruben is a Y Combinator alumni with a strong background in software engineering and business.

[All posts by Ruben Burdin](https://www.stacksync.com/blog/author/ruben-burdin)

About Stacksync

Stacksync powers real-time, two-way sync between CRMs, ERPs, and databases. Engineers sync data at scale and automate workflows, not dirty API plumbing.

Stacksync

## Explore these integrations and topics

- [integration HubSpot and Supabase integration](https://www.stacksync.com/integrations/hubspot-and-supabase)
- [connector HubSpot integrations](https://www.stacksync.com/connectors/hubspot)
- [connector Supabase integrations](https://www.stacksync.com/connectors/supabase)
- [platform Two-way sync](https://www.stacksync.com/two-way-sync)
- [Two-way sync guides Understand two-way sync, record matching, field ownership, and production readiness.](https://www.stacksync.com/blog#topic-two-way-sync)

Keep reading

## Related articles

[All articles](https://www.stacksync.com/blog)

[Data engineering HubSpot–Supabase for Construction Service Portals: Customers, Sites, and Request Status 4 min read read](https://www.stacksync.com/blog/hubspot-supabase-for-construction-service-portals-customers-sites-and-request-status)

[Data engineering Prefab Dealer and Contractor Portals: Align HubSpot Buyer Records With Supabase Project Access 5 min read read](https://www.stacksync.com/blog/prefab-dealer-and-contractor-portals-align-hubspot-buyer-records-with-supabase-project-access)

[Data engineering Solar Installer Customer Handoffs: Align HubSpot Opportunities With Acumatica Project Accounts 5 min read read](https://www.stacksync.com/blog/solar-installer-customer-handoffs-align-hubspot-opportunities-with-acumatica-project-accounts)

## You just read how it should work. See it run on your own data.

[Book a demo](https://www.stacksync.com/book-a-demo) [Get started](https://app.stacksync.com/)
