---
title: "Salesforce NetSuite sync for construction accounts and jobs"
description: "Connect construction accounts and jobs across Salesforce and NetSuite while preserving finance ownership and approved scope."
canonical: https://www.stacksync.com/blog/salesforce-netsuite-for-construction-service-groups-accounts-jobs-and-approved-commercial-data
last_modified: 2026-09-18
---

# Salesforce–NetSuite for Construction Service Groups: Accounts, Jobs, and Approved Commercial Data

> 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

Connect construction accounts and jobs across Salesforce and NetSuite while preserving finance ownership and approved scope.

Author

Ruben Burdin · Founder & CEO

Published

September 18, 2026

Read time

4 min read

DATA ENGINEERING

## The operating decision

For a construction service group, Salesforce–NetSuite two-way sync should connect relationship accounts to billing customers and opportunities to the right projects or jobs. Use a maintained cross-reference and explicit field ownership. Salesforce can originate approved commercial context while NetSuite returns project and financial status. Do not map objects solely because their names match: a NetSuite Account is an accounting record, whereas a Salesforce Account normally represents a business relationship.

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

![Summary card: Salesforce NetSuite sync for construction accounts and jobs](https://www.stacksync.com/images/blog-highlights/icp-salesforce-netsuite-for-construction-service-groups-accounts-jobs-and-approved-commercial-data.webp)

## What this looks like in construction services and installation

Imagine a regional service group with a national customer and several local operating companies. Salesforce has one account managed by a national sales team. NetSuite holds billing customers under the legal subsidiaries doing the work. One opportunity covers a master agreement, but individual jobs have distinct authorizations. Copying the Salesforce account into a single ERP customer would lose that structure. The integration needs to preserve the national relationship while each job points to its actual billing entity.

## Records, ownership, and update rules

| Record | Owner | Operating rule |
| --- | --- | --- |
| Salesforce Account | Account management | Represent the relationship; use external customer links for each authorized billing entity. |
| NetSuite Customer | Finance | Maintain subsidiary context, billing identity and approved terms. |
| Opportunity and scope version | Sales operations | Publish the approved commercial version separately from later sales edits. |
| Project or job | Project administration | Retain its own ERP identifier and the opportunity that originated it. |

![Record ownership diagram: Salesforce Account, NetSuite Customer, Opportunity and scope version](https://www.stacksync.com/images/blog-diagrams/icp-salesforce-netsuite-for-construction-service-groups-accounts-jobs-and-approved-commercial-data.webp)

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

## Work through the process

1. 01

   Draw the legal and operating hierarchy

   List which entity signs the agreement, which office delivers the work, and which entity issues the invoice. A parent account can have multiple billing customers. Make the relationship explicit before selecting mappings so one branch's address correction cannot rewrite another branch's legal billing details.
2. 02

   Choose a stable job boundary

   Decide whether a customer request creates a project, a service job, or only a qualification record. Link each approved job to its originating opportunity without assuming one opportunity always equals one project. This matters when a national agreement produces separate work authorizations over time.
3. 03

   Separate live negotiation from approved scope

   Store the approved amount, scope revision and approval reference as a controlled set. An account executive changing the current opportunity forecast must not silently change a committed project budget. Publish a proposed revision for review when the commercial version differs from the approved job version.
4. 04

   Verify supported operations

   Review Salesforce object eligibility and the actual NetSuite objects required by the design. NetSuite's documentation distinguishes read and write support for individual entities and custom records. Test a customer update, project creation where supported, relationship update, and rejected write using the permissions intended for production.
5. 05

   Expose status with context

   Return project status and approved invoice references to the relevant Salesforce record. Include the source update time so an account manager can distinguish a current billing hold from stale information. Reconcile orphaned projects and duplicate cross-references before adding more branches to the connection.

![5-step operating sequence: Salesforce NetSuite sync for construction accounts and jobs](https://www.stacksync.com/images/blog-diagrams-mermaid/icp-salesforce-netsuite-for-construction-service-groups-accounts-jobs-and-approved-commercial-data.webp)

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

## Handle the exceptions explicitly

### National account buys through a new subsidiary

Create or approve the additional billing relationship rather than repointing every historical job.

### Opportunity reopens after project creation

Keep the existing project link and route the changed scope as a revision, not a new job.

### An ERP field is read-only in the chosen path

Use it for visibility and keep the owning action in NetSuite until a supported operation is verified.

## What to verify before expanding

- Every job identifies both its relationship account and billing customer.
- A revised forecast cannot alter the approved job amount.
- One national account can resolve to several authorized billing entities.
- Source errors are visible without showing a false completed status.

## 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 salesforce Account example and the exception your team handles most often, for example national account buys through a new subsidiary.

- [HubSpot–Supabase for Construction Service Portals: Customers, Sites, and Request Status](https://www.stacksync.com/blog/hubspot-supabase-for-construction-service-portals-customers-sites-and-request-status)
- [Construction Company Acquisitions: Unify Customer and Job IDs Across Branch Systems](https://www.stacksync.com/blog/construction-company-acquisitions-unify-customer-and-job-ids-across-branch-systems)
- [Construction Job-Cost Visibility: Define Ownership Across CRM, ERP, and Field Records](https://www.stacksync.com/blog/construction-job-cost-visibility-define-ownership-across-crm-erp-and-field-records)
- [Real-Time HubSpot Database Integration and Salesforce Sync with Stacksync](https://www.stacksync.com/blog/real-time-hubspot-database-integration-and-salesforce-sync-with-stacksync)
- [Automated Invoice Reconciliation: Catch Billing Discrepancies Before They Cost You](https://www.stacksync.com/blog/automated-invoice-reconciliation-catch-discrepancies)

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

## Technical references

- [Stacksync Salesforce connector requirements](https://docs.stacksync.com/two-way-sync/connectors/salesforce)
- [Stacksync NetSuite connector and object support](https://docs.stacksync.com/two-way-sync/connectors/netsuite)

FAQ

## Frequently asked questions

Is Salesforce Account the same as NetSuite Account?

No. Map the business meaning. A Salesforce relationship account commonly relates to a NetSuite Customer; NetSuite Account belongs to the accounting model and should not be substituted by name.

Should one opportunity always create one job?

Only if that matches your business. Master agreements, phased installations and branch work authorizations often require one opportunity to relate to several separately controlled jobs.

Can sales see invoice information without controlling it?

Yes. Publish the finance-approved fields sales needs, such as invoice reference and status. Keep issue, release, credit and payment actions with the authorized finance process.

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 Salesforce and NetSuite integration](https://www.stacksync.com/integrations/netsuite-and-salesforce)
- [connector Salesforce integrations](https://www.stacksync.com/connectors/salesforce)
- [connector NetSuite integrations](https://www.stacksync.com/connectors/netsuite)
- [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 Construction Company Acquisitions: Unify Customer and Job IDs Across Branch Systems 5 min read read](https://www.stacksync.com/blog/construction-company-acquisitions-unify-customer-and-job-ids-across-branch-systems)

[Data engineering Construction Job-Cost Visibility: Define Ownership Across CRM, ERP, and Field Records 4 min read read](https://www.stacksync.com/blog/construction-job-cost-visibility-define-ownership-across-crm-erp-and-field-records)

[Data engineering Fence Fabricators and Installers: Align Salesforce Approved Configurations With NetSuite Sales Orders 5 min read read](https://www.stacksync.com/blog/fence-fabricators-and-installers-align-salesforce-approved-configurations-with-netsuite-sales-orders)

## 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/)
