Gladly
Sync customer profiles from your warehouse to Gladly, the customer service platform built around people instead of tickets. Keep your Gladly customer profiles enriched with the latest data so your support agents have full context for every conversation.
Prerequisites
- A Gladly organization with an active subscription
- A dedicated API user account with the API User permission
- Your organization domain (e.g.,
mycompanyfrommycompany.gladly.com) - An API token generated for the API user
Permissions
The API user must have:
- API User permission enabled in Gladly
- Access to create and update customer profiles via the REST API
Gladly recommends creating a dedicated user for API calls rather than using an agent account. This separates API activity from agent activity for auditing purposes.
Authentication
Gladly uses Basic Authentication with an API user email and token.
- Navigate to Destinations in the Zeotap sidebar
- Click Add Destination and select Gladly
- Enter the Username (the email address of your Gladly API user)
- Enter the API Token (generated in Gladly under the API user’s settings)
- These credentials are stored securely and never exposed in the UI after saving
Generating an API Token
- Log in to your Gladly organization as an admin
- Navigate to Settings > API Tokens
- Click Create Token and assign it to your dedicated API user
- Copy the token immediately — it will not be shown again
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| Domain | Text | Yes | Your Gladly organization domain (e.g., mycompany for mycompany.gladly.com). Do not include the full URL. |
Supported Operations
Sync Modes
| Mode | Supported |
|---|---|
| Upsert | Yes |
| Insert | Yes |
| Update | Yes |
| Mirror | — |
Audience Sync Modes
| Mode | Supported |
|---|---|
| Add | — |
| Remove | — |
| Mirror | — |
| Upsert | — |
Gladly does not have a native list, segment, or audience membership API. Customer profiles are individual records without group membership management, so audience sync modes are not supported.
Features
- Field Mapping: Yes — map your warehouse columns to Gladly customer profile fields
- Schema Introspection: No — configure field mappings manually based on the Gladly customer profile schema
Required Mapping Fields
| Field | Description |
|---|---|
email | Customer email address. Used to identify and create customer profiles in Gladly. |
Default Destination Fields
These fields appear as suggestions in the field mapping editor:
| Field | Type | Description |
|---|---|---|
name | String | Full name of the customer |
email | String | Primary email address |
phone | String | Primary phone number |
address | String | Customer mailing address |
externalCustomerId | String | Your system’s unique identifier for the customer |
customAttributes | Object | Key-value pairs for custom data fields |
How It Works
- Field mapping: Zeotap maps each warehouse row to a Gladly customer profile using your configured field mappings
- Field transformation: Email and phone fields are automatically converted to Gladly’s array format (e.g.,
{"emails": [{"original": "user@example.com"}]}) - API calls: Each record is sent individually via the Gladly REST API:
- Insert:
POST /api/v1/customers— creates a new customer profile - Update:
PATCH /api/v1/customers/{id}— updates an existing profile by Gladly customer ID - Upsert: Searches by email first; if a matching profile is found it is updated via PATCH, otherwise a new profile is created via POST
- Insert:
- Custom attributes: Any mapped fields that are not standard Gladly profile fields are automatically placed into
customAttributes - Retry logic: Transient failures (HTTP 429 rate limits, 5xx server errors) are retried with exponential backoff (up to 3 retries per request)
Batch Size
The Gladly REST API processes one customer profile per request. Zeotap handles the batching internally, sending records sequentially with automatic retry and error tracking for each individual record.
Rate Limits
Gladly enforces the following default rate limits:
- 10 requests per second across all HTTP methods (GET, POST, PUT, PATCH, DELETE)
- Rate limit headers are included in responses:
Ratelimit-Limit-SecondandRatelimit-Remaining-Second - Exceeding the limit returns HTTP 429 Too Many Requests
- Zeotap automatically respects rate limit responses and applies exponential backoff
If you experience frequent rate limiting, consider:
- Reducing sync frequency
- Syncing smaller batches by filtering your model
- Contacting Gladly support to discuss increased rate limits for your organization
Best Practices
- Create a dedicated API user in Gladly specifically for Zeotap integrations rather than using an agent account
- Map the email field as it is required for customer profile identification during upsert operations
- Use upsert mode when you want to create new profiles and update existing ones in a single sync
- Include
externalCustomerIdin your mappings to maintain a cross-reference between your system and Gladly - Test with a small batch before running a full sync to verify field mappings and authentication
- Monitor sync results in the Zeotap sync run history to catch mapping or authentication errors early
Troubleshooting
Authentication failed: invalid username or API token
Verify that the username is the email address of a valid Gladly API user and the API token is correct. Ensure the API user account is active and has the API User permission. Regenerate the token if necessary.
Gladly API returned error 403
The authenticated user does not have sufficient permissions. Verify the API user has the API User role enabled in Gladly settings.
Update requires a primary key (Gladly customer ID)
When using Update sync mode, each row must have a Gladly customer ID mapped as the primary key. Without it, Gladly cannot identify which profile to update. Switch to Upsert mode to automatically look up customers by email.
Customer not found during upsert
If the email address does not match any existing Gladly customer profile, a new profile will be created. This is expected behavior for upsert mode. If you expect the customer to exist, verify the email address in your source data matches the one in Gladly.
Domain validation failed
The domain must be just the subdomain portion of your Gladly URL. For example, if your Gladly URL is https://mycompany.gladly.com, enter mycompany — not the full URL.
Rate limited (HTTP 429)
Your sync is exceeding Gladly’s 10 requests per second limit. Zeotap automatically retries with backoff, but persistent rate limiting may slow down your sync. Consider reducing sync frequency or syncing smaller datasets.
Fields not appearing in Gladly
Ensure your field mappings use the correct Gladly field names. Standard fields like name, email, phone, and address are mapped directly. All other fields are placed into customAttributes. Check that custom attributes are enabled for your Gladly organization.
Connection timeout
Large syncs may experience timeouts if the Gladly API is under heavy load. Zeotap uses a 30-second timeout per request with automatic retries. If timeouts persist, try syncing during off-peak hours or reducing batch sizes.