ChartMogul
Sync customer data, contacts, and custom attributes to ChartMogul for subscription analytics and revenue reporting. Zeotap sends your warehouse data to ChartMogul so you can enrich customer profiles, track lifecycle stages, and power revenue metrics.
Prerequisites
- A ChartMogul account (any plan)
- A ChartMogul API key with read/write permissions
- A ChartMogul data source UUID (found in Data Platform > Data Sources)
Authentication
ChartMogul uses API Key authentication via HTTP Basic auth.
- Log in to your ChartMogul account
- Click your avatar in the top-right and select Profile
- Navigate to View API Keys
- Copy your API key (or create a new one if needed)
- Paste the API key into Zeotap when configuring the destination
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| Data Source UUID | Text | Yes | The ChartMogul data source UUID. Found in Data Platform > Data Sources. Format: ds_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
Target Settings
| Field | Type | Required | Description |
|---|---|---|---|
| ChartMogul Object | Select | Yes | The object type to sync: Customers or Contacts |
Supported Operations
Sync Modes
| Mode | Supported | Description |
|---|---|---|
| Insert | Yes | Create new records in ChartMogul |
| Update | Yes | Update existing records by external ID (customers) or UUID (contacts) |
| Upsert | Yes | Create or update records — looks up by external ID, creates if not found |
Audience Sync Modes
ChartMogul does not have a list or segment membership API, so audience sync modes are not supported.
Features
| Feature | Supported |
|---|---|
| Field Mapping | Yes |
| Schema Introspection | No |
Required Mapping Fields
| Object | Required Fields | Description |
|---|---|---|
| Customers | external_id | A unique customer identifier from your system |
| Contacts | customer_external_id | The external_id of the parent customer in ChartMogul |
Default Destination Fields
Customers
| Field | Type | Description |
|---|---|---|
external_id | string | Unique customer identifier from your system |
name | string | Customer display name |
email | string | Customer email address |
company | string | Company or organization name |
country | string | ISO 3166 alpha-2 country code (e.g. US, DE) |
state | string | US state code (e.g. US-CA) |
city | string | Customer city |
zip | string | Postal or zip code |
lead_created_at | timestamp | When the customer became a lead (ISO 8601) |
free_trial_started_at | timestamp | When the free trial started (ISO 8601) |
owner | string | Email of the responsible team member |
website_url | string | Customer website URL |
Any additional mapped fields are automatically sent as custom attributes on the customer profile.
Contacts
| Field | Type | Description |
|---|---|---|
customer_external_id | string | External ID of the parent customer |
first_name | string | Contact first name |
last_name | string | Contact last name |
email | string | Contact email address |
title | string | Job title |
phone | string | Phone number |
linked_in | string | LinkedIn profile URL |
twitter | string | Twitter handle or URL |
notes | string | Additional notes |
How It Works
- Row-by-row processing: Zeotap sends each row individually to the ChartMogul API. ChartMogul does not offer a batch endpoint.
- Customer lookup: For upsert and update modes, Zeotap looks up customers by
external_idanddata_source_uuidto find the ChartMogul UUID before updating. - Contact lookup: For contact upserts, Zeotap searches by email within the parent customer’s contacts.
- Custom attributes: Any mapped fields that are not standard ChartMogul fields are automatically sent as custom attributes with inferred types (String, Integer, Boolean).
- Error handling: Failed rows are logged individually and do not block other rows in the batch.
Rate Limits
ChartMogul enforces the following rate limits:
| Limit | Value |
|---|---|
| Requests per second | 40 |
| Max parallel connections | 20 |
Zeotap automatically retries requests that receive a 429 Too Many Requests response with exponential backoff.
Best Practices
- Use stable external IDs: The
external_idfield should be a stable, unique identifier from your system (e.g., your internal customer ID). Changing external IDs will create duplicate customers. - Create data sources for each integration: Use a dedicated ChartMogul data source for Zeotap syncs. This makes it easy to track which data came from your warehouse.
- Map custom attributes carefully: ChartMogul custom attribute types are set on first creation and cannot be changed. Ensure your data types are correct before the first sync.
- Use contacts for people, customers for accounts: In ChartMogul, a customer represents a billing account (company), while contacts represent individual people within that account.
Troubleshooting
Authentication failed: invalid API key
Verify your API key is correct. Go to Profile > View API Keys in ChartMogul. Ensure you are copying the full key and that it has not been revoked.
Data source UUID not found
Confirm the data source UUID exists in your ChartMogul account under Data Platform > Data Sources. The UUID format is ds_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
Customer not found for update
When using update or upsert mode, ensure the external_id value in your data matches an existing customer in ChartMogul under the configured data source. Customers from different data sources have separate external ID namespaces.
Contact creation fails with “customer not found”
When syncing contacts, the customer_external_id must reference an existing customer in ChartMogul. Sync your customers first, then sync contacts.
Custom attributes not appearing
Custom attributes are set on the customer profile under Attributes. Note that ChartMogul attribute types (String, Integer, Timestamp, Boolean) are locked after first creation. If you need to change a type, delete the attribute in ChartMogul first.
Rate limit errors (429)
If you see frequent 429 errors, reduce the sync frequency or batch size. ChartMogul allows 40 requests per second. Zeotap automatically retries with backoff, but sustained high volume may cause delays.