Surface
Integrations

Salesforce Integration Setup

Connect Surface to Salesforce to automatically sync leads, contacts, and activity data. Surface creates or updates records in real-time and maintains two-way sync for enriched fields and lead scores.

You'll need Salesforce admin permissions to authorize the integration and configure field mappings.

Connect Salesforce

  1. In Surface, navigate to Settings > Integrations

  2. Click Connect next to Salesforce

  3. Sign in to your Salesforce account when prompted

  4. Review the requested permissions and click Allow

  5. Surface will verify the connection and sync your Salesforce schema

The integration typically completes in 30-60 seconds.

Configure sync settings

Choose how Surface creates records:

Lead vs. Contact. Decide whether to create new submissions as Leads (standard) or Contacts (if you skip lead qualification in Salesforce).

Create or update. Surface can create new records or update existing ones if it finds a match by email.

Sync frequency. Real-time (instant), every 5 minutes, or hourly batches.

Deduplication. Enable to prevent creating duplicate leads if someone submits forms multiple times.

Most teams create Leads for new prospects and update Contacts for known customers. Configure this based on your Salesforce lead lifecycle.

Map form fields to Salesforce

Surface auto-maps common fields (First Name, Last Name, Email, Company, Phone). For custom fields:

  1. Go to Settings > Integrations > Salesforce > Field Mapping

  2. Select a Surface form field on the left

  3. Choose the corresponding Salesforce field on the right

  4. Repeat for all fields you want to sync

  5. Save your mapping configuration

Surface syncs both standard and custom Salesforce fields. Create any custom fields in Salesforce first before mapping.

Sync enriched data

Surface enrichment fields sync to Salesforce automatically:

  • Lead Score → Custom Lead/Contact field

  • Company Size → Number of Employees

  • Industry → Industry (standard field)

  • Technographics → Custom multi-select or text field

  • UTM Attribution → Campaign fields or custom UTM fields

You'll need to create custom fields in Salesforce for Surface-specific data like lead score and intent signals.

Create custom fields in Salesforce before mapping them in Surface, or the sync will fail for those fields.

Set up lead assignment

Surface can assign leads to Salesforce users:

Owner assignment. Map your Surface routing rules to Salesforce users by email. Surface assigns the lead to the matching Salesforce user.

Queue assignment. Route leads to Salesforce queues instead of individual users for round-robin distribution.

Default owner. Set a fallback owner for leads that don't match any routing rule.

Configure in Settings > Integrations > Salesforce > Assignment.

Track form activity

Surface logs form submissions as Salesforce Tasks or Campaign Members:

Tasks: Creates a task on the Lead/Contact each time they submit a form, with form name and timestamp.

Campaign Members: Adds the lead to a Salesforce campaign matching the form name or traffic source.

Choose your preference in the integration settings.

Test the integration

Before going live:

  1. Submit a test form submission with a unique email

  2. Check Salesforce to verify a Lead was created with all mapped fields populated

  3. Verify enrichment data (score, company size) synced correctly

  4. Confirm the lead was assigned to the right owner based on your routing rules

Fix any mapping errors before enabling the sync for live traffic.

The Salesforce integration syncs in real-time—leads appear in Salesforce within seconds of form submission, enabling instant sales follow-up.

Troubleshooting

Leads not syncing: Check that your Salesforce user has create permissions on Lead/Contact objects and that required fields are mapped.

Assignment failing: Verify that the assigned Salesforce users exist and are active. Email addresses must match exactly.

Custom fields not populating: Ensure custom fields exist in Salesforce and are the correct data type (text, number, picklist, etc.).

Was this helpful?