opencode/salesforce
…
..
force-app/main/default
README.md
sfdx-project.json

Console account identity in Salesforce

This metadata adds the console signup Lead Source and these fields on both Lead and Contact:

  • Has_Console_Account__c (checkbox)
  • Console_Account_ID__c (non-unique external ID, so an inquiry Lead and a Contact may refer to the same user)
  • Console_Signup_Date__c (account creation timestamp)

It also adds a Console Account section to the existing Lead and Contact detail layouts, grants field permissions through Console_Account_Sync, and maps the three Lead fields to Contact on conversion. Existing records are not backfilled.

New signup Leads use the lowercased email domain as Company (for example, acme.com). Recognized personal-email domains use Individual. This is an exact-domain list in the Console repo (packages/core/src/crm.ts), not a legal-company-name lookup. Signup sync preserves existing Lead companies and Contact account associations; Enterprise inquiries use the company supplied by the visitor.

Before applying to another org, retrieve and preserve that org's current LeadSource values, layouts, and LeadConvertSettings; these checked-in files are the additive changes prepared for the connected OpenCode org.

From this directory, deployment uses the existing Salesforce CLI authentication:

sf project deploy start --source-dir force-app --target-org opencode --wait 10
sf org assign permset --name Console_Account_Sync --target-org opencode

The Console writes these fields when someone signs up. Enterprise inquiry Leads from the website no longer receive them from the website; Salesforce automation sets them.

For local development, run bun run dev:enterprise in packages/console/app with sf on PATH. It serves the same Enterprise request handler on 127.0.0.1:3101, using the CLI's authenticated transport. It never sends local sales notifications or EmailOctopus subscriptions.