C
Docs

Salesforce

Sync opportunities, bid analyses, and proposals with Salesforce CRM

Updated 2026-07-224 min read

Salesforce Integration

Connect Cothon with Salesforce to keep your government procurement pipeline in sync with your CRM. Opportunities, bid analyses, and generated proposals can be pushed to Salesforce automatically or on demand, and updates made in Salesforce can flow back to Cothon.

Connecting

  1. Go to Settings → Integrations → Salesforce and click Connect.
  2. Sign in to Salesforce and authorize the Cothon connected app.
  3. You are returned to Cothon with the connection active.

The connection uses OAuth 2.0 with PKCE. Cothon stores only the resulting access and refresh tokens (encrypted) and refreshes them automatically; your Salesforce password is never seen or stored by Cothon.

Note

Depending on your org's policies, a Salesforce administrator may need to approve the connected app before users can authorize it.

What syncs

Opportunities → Salesforce Opportunity

Cothon fieldSalesforce fieldNotes
TitleNameTruncated to 120 characters
Status/stageStageNameSee stage mapping below
Closing dateCloseDateDefaults to 30 days out if no closing date is set
DescriptionDescriptionTruncated to Salesforce's field limit
Estimated valueAmountSynced when a value is available
Win probabilityProbabilitySynced when available

Stage mapping (fixed):

Cothon stageSalesforce stage
DiscoveryProspecting
QualificationQualification
ProposalProposal/Price Quote
NegotiationNegotiation/Review
Closed (awarded)Closed Won
Closed (lost/declined)Closed Lost

The first sync creates the Salesforce record and stores its ID on the Cothon opportunity; later syncs update the same record rather than creating duplicates.

Bid analyses → custom object

Analyses sync to a Bid_Analysis__c custom object in your org, including the analysis name, file name, processing status, analysis summary, requirement counts (total, fully met, partially met, gaps), confidence score, and analysis date. If the analysis is linked to an opportunity that has already synced, the records are related in Salesforce.

Proposals → custom object

Generated proposals sync to a Proposal__c custom object with the proposal title and status.

Warning

The custom objects and their fields must exist in your Salesforce org for analysis and proposal sync to succeed. If a sync fails with a missing-field error, check with your Salesforce administrator.

Salesforce → Cothon

Cothon accepts Salesforce Outbound Messages (workflow-driven webhooks). When a synced Opportunity or Bid_Analysis__c record changes in Salesforce, the outbound message updates the matching Cothon record — title, amount, close date, stage, and probability for opportunities.

Sync settings

In Settings → Integrations → Salesforce you can configure:

  • Auto-sync toggles — separately enable automatic sync for opportunities, analyses, and proposals
  • Sync on status change — push an update whenever an opportunity's status changes
  • Sync frequency — realtime, hourly, daily, or manual
  • Sync filters — limit sync by stage and by minimum opportunity value
  • Field mappings — stored per user alongside the settings above

Manual sync

  • Single record — sync an individual opportunity, analysis, or proposal from its page.
  • Sync all — push everything that hasn't synced yet in one operation from the Salesforce settings page.

Sync log

The integration keeps a per-record sync log: what was synced, when, in which direction, and whether it succeeded. Review it from the Salesforce settings page when diagnosing a missing or out-of-date record.

Disconnecting

Click Disconnect on the Salesforce settings page. This deletes the stored tokens and stops all syncing immediately. Records already created in Salesforce remain there; records in Cothon keep their data but lose the live link. For complete removal, also revoke the Cothon connected app under Setup → Connected Apps in Salesforce.

Troubleshooting

SymptomLikely causeWhat to do
"Authentication failed"Token expired or app access revokedReconnect the integration
Analysis sync failsBid_Analysis__c object or fields missingAsk your Salesforce admin to create them
Record not updatingAuto-sync off or filters exclude itCheck sync settings, then sync manually
Duplicate-looking recordsRecord created before the integration linked itThe Cothon-linked record is the one with a stored Salesforce ID; merge in Salesforce if needed

Next steps

Was this page helpful?