Skip to Content

Unify

Sync contacts, companies, and custom object records to Unify for sales intelligence, enrichment, and go-to-market workflows. Zeotap pushes audience data and enriched profiles to Unify via the Data API v1, enabling your sales team to act on the latest customer signals directly within Unify plays and prospecting workflows.

Prerequisites

  • A Unify account with API access enabled
  • A Unify API key generated from Settings > API Keys in the Unify dashboard
  • The API name of the target object in Unify (e.g. company, person, or a custom object)
  • A unique attribute defined on the target object for upsert matching (e.g. domain for companies, email for people)

Authentication

Unify uses API Key authentication. The API key is sent via the x-api-key header on every request.

  1. Log in to Unify 
  2. Navigate to Settings > API Keys
  3. Click Create API Key and copy the generated key
  4. In Zeotap, select API Key as the authentication method
  5. Paste the key into the API Key field

Required Permissions

The API key must have read and write access to the Data API. Ensure the key has permissions to:

  • List and read objects (GET /objects)
  • Create, update, upsert, and delete records on the target object

Configuration

FieldTypeRequiredDescription
Validation ModeselectNoControls how Unify validates attribute values. strict fails on any invalid attribute. ignore_invalid strips unknown attributes silently. If not set, Unify uses its default behavior.

Target Settings

FieldTypeRequiredDescription
Object NametextYesThe API name of the Unify object to sync data to (e.g. company, person, or a custom object API name).
Match AttributetextNoThe unique attribute used for record matching on upsert (e.g. domain for companies, email for people). Must be a unique attribute in Unify. Required when using upsert sync mode.

Supported Operations

Sync Modes

ModeSupportedDescription
UpsertYesMatch records by the configured match attribute and create or update accordingly
InsertYesCreate new records; fails if a record with conflicting unique values already exists
UpdateYesUpdate existing records by record ID
MirrorNot supported

Audience Sync Modes

ModeSupportedDescription
AddNot supported — Unify does not expose a list/audience membership API
RemoveNot supported
MirrorNot supported
UpsertNot supported

Features

FeatureSupported
Field MappingYes
Schema IntrospectionNo

Required Mapping Fields

No required mapping fields. Map any attributes that match the target object’s schema in Unify.

Default Destination Fields

FieldType
namestring
domainstring
emailstring
phonestring
statusstring

These are suggested starting fields. The actual attributes depend on the target object’s schema in Unify.

How It Works

  1. Row processing — Zeotap processes each row from the sync batch individually (Unify does not expose a bulk API)
  2. Operation mapping — Based on the sync mode, each row is sent to the appropriate Unify endpoint:
    • Upsert: POST /data/v1/objects/{object}/records/upsert with match and create_or_update fields
    • Insert: POST /data/v1/objects/{object}/records with attribute data
    • Update: PATCH /data/v1/objects/{object}/records/{id} with attribute data
  3. Match attribute — For upsert mode, the configured match attribute (e.g. domain) is extracted from the row and sent in the match field so Unify can find existing records
  4. Validation — If a validation mode is configured, it is sent as a query parameter (?validation_mode=strict or ?validation_mode=ignore_invalid)
  5. Error handling — Each row result is tracked individually. Failed rows are recorded with the HTTP status and error message from Unify

Rate Limits

Unify allows 100,000 requests per five-minute window. Since Zeotap sends one request per row, this is equivalent to approximately 333 requests per second. For typical sync volumes this limit is unlikely to be reached.

If a 429 Too Many Requests response is received, Zeotap pauses briefly before continuing with the remaining rows.

Best Practices

  • Always configure a match attribute for upsert mode — Without a match attribute, Unify cannot reliably find existing records and may create duplicates
  • Use ignore_invalid validation mode during initial setup to avoid failures from unmapped or misspelled attributes, then switch to strict once mappings are finalized
  • Map identity fields (email, domain, phone) to maximize the value of Unify’s enrichment and identity resolution
  • Use upsert mode for ongoing syncs to keep records up to date without creating duplicates
  • Start with a small batch to verify field mappings and match behavior before running a full sync

Troubleshooting

Connection test fails with “unauthorized”

The API key is invalid, expired, or missing required permissions. Generate a new key from Settings > API Keys in Unify and update the credentials in Zeotap.

Connection test fails with “object not found”

The configured Object Name does not exist in Unify. Verify the API name by navigating to your Unify data model or calling GET /data/v1/objects to list available objects.

Upsert creates duplicate records

The Match Attribute is not configured or the attribute is not marked as unique in Unify. Ensure the match attribute (e.g. domain, email) is set in the target settings and is defined as a unique attribute on the Unify object.

Rows fail with “record_missing_required_field”

The target object in Unify has required attributes that are not being mapped from Zeotap. Check the object schema in Unify and ensure all required fields are included in the field mapping.

Rows fail with “record_conflict”

A record with the same unique attribute values already exists. This typically happens in insert mode when trying to create a record that already exists. Switch to upsert mode to update existing records instead.

Rows fail with “referenced_record_not_found”

The row contains a reference attribute pointing to a record that does not exist in Unify. Ensure referenced records (e.g. a company referenced by a person) are synced before the records that reference them.

Update fails with “record_not_found”

The record ID used for the update does not exist in Unify. Verify that the primary key column contains valid Unify record UUIDs. If records were deleted in Unify, re-sync using upsert mode instead.

Slow sync performance

Unify’s Data API processes records one at a time. For large datasets, syncs may take longer than batch-capable destinations. Consider syncing only changed records using incremental models to reduce the number of API calls.

Last updated on