Salesforce
Sync opportunities, bid analyses, and proposals with Salesforce CRM
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
- Go to Settings → Integrations → Salesforce and click Connect.
- Sign in to Salesforce and authorize the Cothon connected app.
- 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 field | Salesforce field | Notes |
|---|---|---|
| Title | Name | Truncated to 120 characters |
| Status/stage | StageName | See stage mapping below |
| Closing date | CloseDate | Defaults to 30 days out if no closing date is set |
| Description | Description | Truncated to Salesforce's field limit |
| Estimated value | Amount | Synced when a value is available |
| Win probability | Probability | Synced when available |
Stage mapping (fixed):
| Cothon stage | Salesforce stage |
|---|---|
| Discovery | Prospecting |
| Qualification | Qualification |
| Proposal | Proposal/Price Quote |
| Negotiation | Negotiation/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, ormanual - 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
| Symptom | Likely cause | What to do |
|---|---|---|
| "Authentication failed" | Token expired or app access revoked | Reconnect the integration |
| Analysis sync fails | Bid_Analysis__c object or fields missing | Ask your Salesforce admin to create them |
| Record not updating | Auto-sync off or filters exclude it | Check sync settings, then sync manually |
| Duplicate-looking records | Record created before the integration linked it | The Cothon-linked record is the one with a stored Salesforce ID; merge in Salesforce if needed |
Next steps
- Pipedrive — alternative CRM option
- Slack — add team notifications
- Opportunities — managing opportunities in Cothon
Related Articles
Was this page helpful?