DestinationsSalesOutreach

Outreach

Sync data from your warehouse to Outreach, the leading sales engagement platform. Keep your Outreach prospects and accounts enriched with the latest data from your data warehouse.

Prerequisites

  • An Outreach account with API access enabled
  • An Outreach user with admin privileges (for OAuth app authorization)
  • OAuth scopes: prospects.all, accounts.all, sequences.all, sequenceStates.all

Authentication

Outreach supports two authentication methods:

  1. Click Connect with OAuth in Zeotap
  2. Sign in to your Outreach account
  3. Authorize the requested permissions
  4. You are redirected back to Zeotap with your credentials stored securely

OAuth tokens expire after 2 hours. Zeotap automatically refreshes tokens using your refresh token. Refresh tokens are valid for 14 days.

Bearer Token

  1. Obtain an access token from the Outreach developer portal or your OAuth application
  2. Paste the token into the Access Token field in Zeotap
  3. Note: Bearer tokens expire after 2 hours and are not automatically refreshed — use OAuth for production syncs

Configuration

This destination has no additional configuration fields beyond authentication and target settings.

Target Settings

FieldTypeRequiredDescription
Outreach ObjectSelectYesThe object to sync to: Prospects or Accounts

Supported Operations

Sync Modes

ModeSupported
UpsertYes
InsertYes
UpdateYes
Mirror

Audience Sync Modes

ModeSupported
Add
Remove
Mirror
Upsert

Outreach does not have a list or segment membership API, so audience sync modes are not supported. Use standard sync modes to manage prospects and accounts.

Features

  • Field Mapping: Yes
  • Schema Introspection: No — Zeotap provides curated default fields for prospects and accounts

Required Mapping Fields

ObjectRequired FieldsDescription
ProspectsemailsArray of prospect email addresses
AccountsnameAccount name

Default Destination Fields

Prospects

FieldTypeDescription
emailsjsonArray of email addresses
firstNamestringFirst name
lastNamestringLast name
titlestringJob title
companystringCompany name
tagsjsonArray of tags
addressCitystringCity
addressStatestringState
addressCountrystringCountry
homePhonesjsonHome phone numbers
mobilePhonesjsonMobile phone numbers
workPhonesjsonWork phone numbers
custom1stringCustom field 1
custom2stringCustom field 2
custom3stringCustom field 3

Accounts

FieldTypeDescription
namestringAccount name
domainstringCompany website domain
descriptionstringAccount description
industrystringIndustry
numberOfEmployeesnumberNumber of employees
naturalNamestringNatural name
localitystringLocality/region
tagsjsonArray of tags
custom1stringCustom field 1
custom2stringCustom field 2

Additional fields can be mapped using custom field names from your Outreach instance.

How It Works

  1. Insert mode: Zeotap creates new records in Outreach via POST /api/v2/{object_type}. Each row becomes a new prospect or account.

  2. Update mode: Zeotap updates existing records via PATCH /api/v2/{object_type}/{id}. The record ID must be provided as the primary key in your sync configuration or as an id field in the data.

  3. Upsert mode: For each row, Zeotap first searches Outreach for an existing record by natural key (email for prospects, domain/name for accounts). If a match is found, the record is updated; otherwise, a new record is created.

Records are sent individually to the Outreach API since there is no synchronous batch endpoint. The Outreach API follows the JSON:API 1.0 specification, so all payloads use the application/vnd.api+json content type.

Rate Limits

Outreach enforces the following rate limits:

  • 10,000 requests per hour per authenticated user
  • Rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
  • HTTP 429 response when limits are exceeded

Zeotap automatically retries on 429 errors with exponential backoff, respecting the Retry-After header when present.

Best Practices

  • Use OAuth authentication for production syncs to enable automatic token refresh
  • Map the emails field as an array (JSON) when syncing prospects — Outreach stores multiple emails per prospect
  • Prefer upsert mode to avoid creating duplicate records
  • Monitor rate limits when syncing large datasets — at 10,000 requests/hour, a large sync may take several hours
  • Use domain as the lookup key for account upserts to get accurate matching
  • Sync accounts before prospects if you need to establish account-prospect relationships

Troubleshooting

Authentication failed: invalid or expired token

Re-authenticate via OAuth to obtain a new token pair. If using a bearer token, generate a new one from the Outreach developer portal. OAuth tokens expire after 2 hours; refresh tokens expire after 14 days of inactivity.

Insufficient permissions (403)

Your OAuth application or token is missing required scopes. Reconnect via OAuth and ensure the following scopes are granted: prospects.all, accounts.all.

Rate limiting (429 errors)

Outreach allows 10,000 API requests per hour. Zeotap retries automatically on 429 errors with backoff. For very large syncs, consider reducing the sync frequency or splitting syncs across time windows.

Duplicate records created

If duplicate prospects are being created, ensure you are using upsert mode and that the emails field is correctly mapped. The upsert lookup requires a valid email to match existing prospects.

Record not found for update

When using update mode, each row must include a valid Outreach record ID as the primary key. If records have been deleted in Outreach, the sync will report errors for those rows.

Field validation errors

Outreach validates field values on create and update. Common issues include:

  • emails must be an array of valid email addresses
  • numberOfEmployees must be a number
  • Custom fields must match the expected data type configured in Outreach

JSON:API format errors

Zeotap formats all requests using JSON:API 1.0 specification as required by Outreach. If you see content type errors, this may indicate a proxy or middleware is modifying request headers.

Token refresh failed

If OAuth token refresh fails, the refresh token may have expired (14-day lifetime) or been revoked. Re-authenticate via OAuth in Zeotap to obtain new credentials.