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:
OAuth 2.0 (Recommended)
- Click Connect with OAuth in Zeotap
- Sign in to your Outreach account
- Authorize the requested permissions
- 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
- Obtain an access token from the Outreach developer portal or your OAuth application
- Paste the token into the Access Token field in Zeotap
- 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
| Field | Type | Required | Description |
|---|---|---|---|
| Outreach Object | Select | Yes | The object to sync to: Prospects or Accounts |
Supported Operations
Sync Modes
| Mode | Supported |
|---|---|
| Upsert | Yes |
| Insert | Yes |
| Update | Yes |
| Mirror | — |
Audience Sync Modes
| Mode | Supported |
|---|---|
| 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
| Object | Required Fields | Description |
|---|---|---|
| Prospects | emails | Array of prospect email addresses |
| Accounts | name | Account name |
Default Destination Fields
Prospects
| Field | Type | Description |
|---|---|---|
emails | json | Array of email addresses |
firstName | string | First name |
lastName | string | Last name |
title | string | Job title |
company | string | Company name |
tags | json | Array of tags |
addressCity | string | City |
addressState | string | State |
addressCountry | string | Country |
homePhones | json | Home phone numbers |
mobilePhones | json | Mobile phone numbers |
workPhones | json | Work phone numbers |
custom1 | string | Custom field 1 |
custom2 | string | Custom field 2 |
custom3 | string | Custom field 3 |
Accounts
| Field | Type | Description |
|---|---|---|
name | string | Account name |
domain | string | Company website domain |
description | string | Account description |
industry | string | Industry |
numberOfEmployees | number | Number of employees |
naturalName | string | Natural name |
locality | string | Locality/region |
tags | json | Array of tags |
custom1 | string | Custom field 1 |
custom2 | string | Custom field 2 |
Additional fields can be mapped using custom field names from your Outreach instance.
How It Works
-
Insert mode: Zeotap creates new records in Outreach via
POST /api/v2/{object_type}. Each row becomes a new prospect or account. -
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 anidfield in the data. -
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
emailsfield 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:
emailsmust be an array of valid email addressesnumberOfEmployeesmust 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.