Skip to content

Keep your CRM in sync automatically

Sync contacts and deals with Salesforce, HubSpot, and other CRMs. Bidirectional sync with field mapping and conflict resolution in one API call.

BidirectionalField MappingConflict ResolutionBatch Sync
import { Stack0 } from '@stack0/sdk'
const stack0 = new Stack0({ apiKey: process.env.STACK0_API_KEY })
// Sync a contact to your CRM
export async function syncContact(contact: Contact) {
const result = await stack0.integrations.crm.syncContact({
provider: 'salesforce',
data: {
email: contact.email,
firstName: contact.firstName,
lastName: contact.lastName,
company: contact.company,
phone: contact.phone,
customFields: {
lead_source: 'website',
signup_date: contact.createdAt,
},
},
options: {
upsert: true,
matchOn: 'email',
},
})
return result // { id, provider, status, externalId }
}
// Sync a deal with field mapping
export async function syncDeal(deal: Deal) {
const result = await stack0.integrations.crm.syncDeal({
provider: 'hubspot',
data: {
name: deal.title,
amount: deal.value,
stage: deal.stage,
contactEmail: deal.contactEmail,
closeDate: deal.expectedCloseDate,
customFields: {
product_line: deal.product,
},
},
options: {
conflictResolution: 'latest_wins',
},
})
return result
}

What's included

Bidirectional Sync

Push and pull data between your app and CRM. Changes flow both ways automatically.

Field Mapping

Map your schema to CRM fields. Supports custom fields and complex objects.

Conflict Resolution

Latest wins, source wins, or custom rules. Never lose data during sync.

Batch Sync

Sync thousands of records efficiently. Parallel processing with per-record status.

Real-time Webhooks

Get notified when CRM records change. Trigger syncs on create, update, or delete.

Custom Objects

Sync beyond contacts and deals. Support for any CRM object type.

Built for production

Bidirectional sync

Push data to your CRM and pull changes back. Keep both systems in sync without manual work.

Field mapping

Map your data to any CRM field, including custom fields. Configure mappings once and sync forever.

Conflict resolution

Choose how to handle conflicts: latest wins, source wins, or per-field rules. No data loss.

Batch operations

Sync up to 1,000 records per call. Process your entire pipeline in seconds.

TypeScript SDK

Full type safety for contacts, deals, and custom objects. Catch errors at compile time.

Simple pricing

$1 per 1,000 API calls. No per-record fees or monthly minimums.

Common implementations

Sales Pipeline

Keep deal stages, values, and contacts in sync between your app and CRM.

Marketing Automation

Sync lead scores, campaign responses, and engagement data to your CRM.

Customer Onboarding

Push new signups to your CRM with account details and onboarding status.

Support Integration

Sync ticket data and customer health scores to give sales full context.

Frequently asked questions

Ready to build?

Get started in minutes.

Get Started