Skip to Content

EnjoyHQ

User research repository platform. Sync your warehouse data to import feedback documents and customer profiles into EnjoyHQ via their REST API.

Prerequisites

  • An EnjoyHQ account on the Scale subscription plan (API access required)
  • An EnjoyHQ API key generated from Manage Integrations > API
  • HTTPS connectivity to api.enjoyhq.com

Authentication

EnjoyHQ uses API Key authentication via a Token authorization header.

  1. In EnjoyHQ, navigate to Manage Integrations
  2. Select the API card in the Other section
  3. Click Add New API Key to generate a new key
  4. Copy the API key immediately
  5. Enter the API key in Zeotap when configuring the destination

Important: API access requires a Scale subscription plan. Contact EnjoyHQ support if you do not see the API option in your integrations page.

Configuration

EnjoyHQ does not require additional configuration fields beyond authentication. All API requests are routed to api.enjoyhq.com/v1.

Target Settings

FieldTypeRequiredDescription
Object TypeSelectYesType of data to send: Documents (Feedback & Research Data) or Users (Customer Profiles)

Supported Operations

Sync Modes

ModeSupported
UpsertYes
InsertYes
Update
Mirror

Upsert behavior:

  • Documents: When a foreign_id is mapped, EnjoyHQ uses it to track updates. Subsequent imports with the same foreign_id update the existing document rather than creating a duplicate.
  • Users: Users are matched by email. If a user with the given email exists, their properties and segments are updated.

Audience Sync Modes

EnjoyHQ does not support audience/list membership management. Use standard sync modes to import data.

ModeSupported
Add
Remove
Mirror
Upsert

Features

  • Field Mapping: Yes
  • Schema Introspection: No

Required Mapping Fields

Object TypeRequired FieldsDescription
Documentssource, bodyThe feedback source identifier and the text content of the document.
UsersemailEmail address of the user. Used for record matching and upserting.

Default Destination Fields

Documents: source, body, subject, foreign_id, sentiment, created_at, tags, author_email, author_name

Users: email, name, properties, segments

How It Works

Documents

When the Documents object type is selected, Zeotap sends feedback data to the EnjoyHQ /v1/documents/import endpoint. Each row becomes a document in your EnjoyHQ repository.

The following fields are mapped:

  • source — Identifies the feedback source (e.g., “support”, “survey”, “intercom”). Case-insensitive.
  • body — The text content of the feedback. Maximum 64 KB per content body.
  • subject — Optional title for the document.
  • foreign_id — Optional external identifier for tracking updates across imports.
  • sentiment — NPS score (0-10) or explicit value: “positive”, “negative”, “neutral”. Scores 0-6 map to negative, 7-8 to neutral, 9-10 to positive.
  • created_at — ISO 8601 timestamp for the document.
  • tags — JSON array of categorization strings (max 500 elements).
  • author_email and author_name — Author information attached to the document content.

Users

When the Users object type is selected, Zeotap sends customer profile data to the /v1/users/import endpoint. Users are matched by email address.

  • email — Required. The user’s email address (max 100 characters).
  • name — Optional display name (max 128 characters).
  • properties — JSON array of key-value pairs for custom user attributes. Each property has a key, value, and field_type (“string”, “number”, or “date”).
  • segments — JSON array of segment objects with a name field.

Any additional mapped fields that are not part of the standard set are automatically sent as user properties with a string field type.

Note: User property and segment processing is asynchronous. It may take approximately one minute for imported properties to appear in EnjoyHQ.

Batch Processing

Zeotap sends data in batches of up to 500 items per API request (the EnjoyHQ API maximum for the documents/import array). Individual request payloads must stay under 10 MB. Failed batches are retried automatically with exponential backoff.

If any single document or user in a batch fails validation, the EnjoyHQ API rejects the entire request. Zeotap surfaces the failure against every row in the affected chunk so you can inspect the response and correct the offending row before re-running the sync.

Rate Limits

EnjoyHQ applies rate limits to protect API stability:

  • Rate-limited requests receive an HTTP 429 response
  • Zeotap automatically retries with exponential backoff when rate limited
  • String fields are limited to 1,024 characters
  • Content body fields are limited to 64 KB
  • Tag arrays are limited to 500 elements per document
  • Maximum request payload size is 10 MB

For high-volume imports, consider scheduling syncs during off-peak hours.

Best Practices

  • Use foreign_id for document deduplication: Map a unique identifier from your source data to foreign_id to enable upsert behavior and prevent duplicate documents when re-syncing
  • Set the source field consistently: EnjoyHQ groups documents by source. Use consistent naming (e.g., “zendesk”, “intercom”, “survey”) so documents are properly organized in the repository
  • Use NPS scores for sentiment: If you have numeric NPS scores, map them directly to the sentiment field. EnjoyHQ automatically converts 0-6 to negative, 7-8 to neutral, and 9-10 to positive
  • Sync users before documents: If you need to associate documents with user profiles, import user records first so that author email matching works correctly
  • Keep property names stable: Changing user property keys between syncs creates new properties rather than updating existing ones

Troubleshooting

Authentication failed: invalid API key

Verify that you copied the complete API key from EnjoyHQ Manage Integrations > API. Ensure your account is on the Scale plan, which is required for API access. Generate a new key if the existing one may have been revoked.

403 Validation errors on import

The API returns 403 with validation details when required fields are missing or values are invalid. Check that source and body are mapped for documents, or email is mapped for users. Verify that field values do not exceed length limits (1,024 characters for strings, 64 KB for content body).

Documents not appearing in EnjoyHQ

Document imports are processed asynchronously. Allow a few minutes for documents to appear in search results. Check that the source field is mapped — documents without a source are rejected. Verify the body field contains non-empty text content.

User properties not updating

User properties are processed asynchronously and may take approximately one minute to appear. Ensure the email field is correctly mapped, as it is the primary key for user matching. Note that sending an empty properties array deletes all previously imported properties.

413 Payload too large

The request payload exceeds the 10 MB limit. This typically happens with very large text content in the body field or too many tags. Reduce the number of rows per batch or trim large text fields before syncing.

429 Too Many Requests

You are exceeding the EnjoyHQ API rate limit. Zeotap retries automatically with backoff, but if errors persist, reduce the sync frequency. Check if other integrations are also importing data concurrently.

Duplicate documents appearing

If documents are being duplicated across syncs, ensure you are mapping the foreign_id field to a unique identifier in your source data. Without foreign_id, each import creates a new document even if the content is identical.

Sentiment values not recognized

The sentiment field accepts NPS scores (0-10) or explicit string values: “positive”, “negative”, “neutral”. Other values are ignored. If using numeric scores, ensure they are integers between 0 and 10.

Last updated on