Medallia
Import feedback records, contact profiles, and custom data into Medallia Experience Cloud for customer experience analytics. Zeotap syncs your warehouse data directly to Medallia via the Import API.
Prerequisites
- A Medallia Experience Cloud account with API access enabled
- OAuth2 API credentials (client ID and client secret) created in Medallia Admin under API Management
- An Import API feed configured in your Medallia instance
- The API gateway URL for your Medallia instance (e.g.,
https://instance.apis.medallia.com) - Your Medallia OAuth tenant / company name (used in the token URL path
/oauth/{tenant}/token)
Permissions
Your Medallia API credentials must have the following permissions:
- Import API — write access to the target feed
- OAuth2 — ability to generate access tokens via client credentials grant
Contact your Medallia administrator to ensure the API client has the correct scopes assigned.
Authentication
Medallia uses OAuth2 Client Credentials authentication.
- Log in to the Medallia Admin portal
- Navigate to API Management > API Credentials
- Click Create API Client (or use an existing client)
- Copy the Client ID and Client Secret
- Enter both values in Zeotap when configuring the destination
Zeotap automatically handles token generation and refresh using the OAuth2 client credentials grant.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| API Gateway URL | Text | Yes | Your Medallia instance API gateway URL (e.g., https://instance.apis.medallia.com). Do not include trailing slashes. |
| OAuth Tenant / Company Name | Text | Yes | The tenant (company) identifier assigned by Medallia, used in the OAuth token URL path /oauth/{tenant}/token. This is usually different from your Client ID. |
| Feed / Importer Name | Text | Yes | The name of the Import API feed configured in Medallia. This corresponds to the importer-name in the /inbound/v2/async/{importer-name} endpoint. |
Target Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Record Type | Select | Yes | The type of data to import: Feedback / Survey Records, Contact Profiles, or Custom Records |
Supported Operations
Sync Modes
| Mode | Supported | Description |
|---|---|---|
| Insert | Yes | Append new records to Medallia via the Import API |
| Upsert | — | Not supported. Medallia Import API is append-only |
| Update | — | Not supported |
| Mirror | — | Not supported |
Audience Sync Modes
Medallia does not support audience/segment membership management via API. Audience sync modes are not available.
Features
- Field Mapping: Yes
- Schema Introspection: No
Required Mapping Fields
| Field | Description |
|---|---|
e_id | Unique identifier for the record (e.g., case ID, transaction ID, or customer ID) |
Default Destination Fields
All Record Types: e_id, e_firstName, e_lastName, e_email, e_phone
Feedback / Survey Records (additional): e_surveyid, e_overallsat, e_nps, e_comment
Contact Profiles (additional): e_companyname, e_accountid
You can map additional fields beyond these defaults. The field names must match the fields configured in your Medallia Import API feed.
How It Works
- Authentication: Zeotap obtains an OAuth2 access token using your client credentials. Tokens are automatically refreshed when they expire.
- Batching: Records are chunked into batches of up to 500 records per API request (Medallia’s recommended limit).
- Import: Each batch is sent as a JSON array via
POST /inbound/v2/async/{feed-name}. Medallia processes the import asynchronously and returns a feed file ID for tracking. - Error Handling: If a batch fails, Zeotap logs the error and reports per-row failures. Transient errors (429, 5xx) are retried automatically.
Rate Limits
Medallia enforces rate limits on API requests. Key limits to be aware of:
- Payload size: Up to 100 MB per request for concurrent processing, 1.5 GB for non-concurrent
- Concurrent requests: Configurable per feed in Medallia Admin
- Token requests: Standard OAuth2 rate limits apply
If you encounter rate limit errors (HTTP 429), Zeotap automatically retries with backoff.
Best Practices
- Use meaningful record IDs: Map
e_idto a stable, unique identifier from your warehouse to enable deduplication on the Medallia side. - Match feed schema: Ensure your field mappings align with the fields defined in your Medallia Import API feed configuration. Unrecognized fields may be silently dropped.
- Monitor feed status: After syncs complete, check the feed file status in Medallia Admin to confirm records were processed successfully.
- Keep batches reasonable: Zeotap automatically chunks to 500 records. For very large syncs, consider scheduling during off-peak hours.
- Secure credentials: Rotate your OAuth2 client secret periodically and use a dedicated API client for Zeotap.
Troubleshooting
Authentication failed: invalid client_id or client_secret
Verify your OAuth2 credentials in Medallia Admin under API Management. Ensure the client has not been deactivated or expired. Re-copy the client ID and secret.
Import feed not found
The feed name must exactly match the Import API feed configured in Medallia. Check for typos, extra spaces, or case sensitivity. Navigate to Medallia Admin > Import APIs to verify the feed name.
Records not appearing in Medallia
Medallia processes imports asynchronously. Records may take several minutes to appear. Check the feed file status in Medallia Admin for processing errors or validation failures.
429 Too Many Requests errors
You are hitting Medallia’s rate limits. Zeotap retries automatically, but persistent 429 errors indicate the sync volume exceeds your API quota. Contact Medallia support to increase your rate limits, or reduce sync frequency.
Field mapping errors
Ensure the field names in your mapping match the expected field names in your Medallia feed configuration. Medallia fields typically use the e_ prefix (e.g., e_firstName, e_email). Unrecognized field names may cause the import to fail or records to be partially ingested.
Gateway URL connection errors
Verify the API gateway URL is correct for your Medallia instance. The URL format is typically https://instance.apis.medallia.com. Ensure your network allows outbound HTTPS connections to this host.