Skip to content

How to Export Data from eGain: API Limits, Methods & Portability

Export eGain data via REST API, Analytics reports, or Knowledge Console. No bulk export exists — API caps at 75 records/page. Full guide to methods, limits, and gaps.

Abdul Abdul · · 23 min read
How to Export Data from eGain: API Limits, Methods & Portability
TALK TO AN ENGINEER

Planning a migration?

Get a free 30-min call with our engineers. We'll review your setup and map out a custom migration plan — no obligation.

Schedule a free call
  • 1,500+ migrations completed
  • Zero downtime guaranteed
  • Transparent, fixed pricing
  • Project success responsibility
  • Post-migration support included

How to Export Data from eGain: API Limits, Methods & Portability

Info

TLDR: eGain has no "Export All" button. The REST API (v3 for cases and customers, legacy APIs for knowledge content) is the primary extraction method, capped at 75 records per page. Knowledge articles can also export via Print Preview or the Real-Time Knowledge Access bulk export to S3/SFTP. Analytics reports export aggregate metrics, not individual records. Workflow configurations, routing rules, and integration settings cannot be exported at all. Engineering resources are required for any complete export.

Last verified: July 2025, against eGain SaaS (cloud-hosted) platform. API paths and behaviors reference eGain v22.x+ documentation. On-premise deployments may differ in API availability, authentication, and rate behavior.

eGain is a knowledge management and digital customer engagement platform, not a pure helpdesk. Its data model spans two domains: knowledge content (articles, topics, folders, guided help) and customer interactions (cases, activities, customers, conversations). What many teams call "ticket export" is really export of Cases plus their child Activities, related Customers, Notes, and Attachments — each requiring separate API calls.

This guide covers every extraction path: what each method actually returns, what it drops, the exact pagination and authentication constraints, and the operational failures that catch teams mid-migration.

What Data Can You Export from eGain?

Before planning an extraction, you must map eGain's data model. The exportability of each object depends on the method you use.

Object Analytics Report Export Knowledge Console Export REST API Export Format Known Limitations
Cases Yes (aggregate metrics) No Yes (/core/casemgr/v3/case) JSON, XML API search supports exact match only. Must use $attribute=all for full case data. (apidev.egain.com)
Activities Yes (aggregate metrics) No Yes (/core/casemgr/v3/activity) JSON, XML Must be fetched per-case or via search. Chat transcripts and email bodies require $attribute=all.
Customers No No Yes (/core/customermgr/v3/customer) JSON, XML Get Customer by IDs allows up to 75 comma-separated IDs per request and does not support pagination. Bulk export depends on the search operation. (apidev.egain.com)
Conversations No No Yes (Conversation Manager API) JSON, XML Message content may require separate per-conversation fetching.
Notes No No Yes (/core/casemgr/v3/note) JSON, XML Must be fetched per-case. No bulk search export path.
Articles No (aggregate stats only) Yes (Print Preview → PDF/Excel) Yes (Portal Manager or Authoring APIs) JSON, XML, PDF, Excel Print Preview captures rendered content. API returns HTML body. Inline images may need separate download.
Topics & Folders No Partial (Print Preview) Yes (/knowledge/portalmgr/v4/portals/{portalID}/topics) JSON, XML Hierarchical structure requires $level=-1 to expand full tree. (apidev.egain.com)
Guided Help / Case Bases No Yes (XML export) Partial XML Exports entire case base as a single XML file. No individual article export from case bases.
Attachments No No Yes (Case Manager for activities; Authoring API for articles) Binary + metadata Must download individually via contentUrl. Some attachment types are deleted from server after first download. (apidev.egain.com)
Users / Agents No No Yes (User Manager API) JSON, XML Permission-dependent. Cannot export password hashes. (apidev.egain.com)
Departments No No Yes (Department Manager API) JSON, XML Straightforward extraction.
Analytics / Reports Yes No No Excel, PDF, CSV, XML, HTML, Tiff Aggregate metrics only — not individual record-level data. (help.egain.com)
Workflows, routing, integrations No No No documented bulk export N/A Admin-managed objects, not part of a supported portability package. (help.egain.com)

[For engineering] Critical behavior to know: eGain API responses return only a pre-defined set of summary attributes by default. If you do not include $attribute=all in your GET requests, you will receive truncated records missing fields like activity content, customer contact points, and case custom attributes. This is the single most common export mistake with eGain — it silently drops data from your response without warning. No error is returned; you simply receive fewer fields.

Two additional constraints to catch early: if customer departmentalization is enabled, user-scoped exports can be restricted by department. And if you rely on Analytics for custom field exports, eGain only records custom attributes you explicitly enabled for Analytics, with a limit of 10 custom attributes per object type. (apidev.egain.com)

SaaS vs. On-Premise Deployment Differences

eGain is available as both a cloud-hosted SaaS platform and an on-premise deployment. Export behavior differs between the two:

Factor SaaS (Cloud-Hosted) On-Premise
API availability All documented REST APIs available via public endpoints APIs may require VPN/internal network access; firewall rules must allow outbound data transfer
Authentication OAuth 2.0 client credentials via eGain-hosted token endpoint Token endpoint hosted internally; may use different IdP integration
Rate limits Server-side throttling managed by eGain; no tenant-configurable overrides Throttling depends on local infrastructure capacity; can often sustain higher throughput
Data residency Region-specific hosting (US, EU, APAC); export may trigger cross-border data transfer obligations Data resides on customer infrastructure; no transfer concerns during export
RTKA availability Licensed feature on qualifying SaaS plans May require separate configuration for S3/SFTP connectivity
Direct database access Not available Possible with DBA access; bypasses API pagination entirely but voids support agreements

For on-premise deployments with direct database access, teams sometimes bypass the API entirely and query the underlying Oracle or SQL Server database. This is faster but unsupported — eGain's schema is not documented for direct access, and schema changes between versions can break queries without notice.

Export Methods: Every Way to Get Data Out of eGain

Method Data Coverage Volume Limit Speed Complexity Best For
Analytics Report Export Aggregate reporting data only Report-dependent Fast (minutes) Low PMs needing operational metrics
Knowledge Console Print Preview Articles (content + metadata) All articles in selected folder Moderate Low One-time article snapshots
Case Base XML Export Guided help content Entire case base Moderate Low Backing up decision-tree content
REST API (v3 Core) Cases, Activities, Customers, Conversations, Users, Departments 75 records/page Slow at scale High Full data migration or integration
Legacy REST API (v11/v12/v15) Articles, Topics, Folders, Attachments (knowledge-focused) 75 records/page Slow at scale High Knowledge base extraction
Real-Time Knowledge Access (RTKA) KB metadata, HTML content, attachments, portal/language bundles Async export; up to 250 articles per JSON file High for KB Medium Full knowledge backup or migration (apidev.egain.com)

[For PMs] Zero-engineering options: Analytics report exports and Knowledge Console Print Preview require no developer resources. Everything else requires at least one engineer who can write API integration code.

Webhook/event stream note: eGain does not expose a general-purpose webhook or event-stream mechanism for near-real-time data replication. There is no equivalent of Zendesk's incremental export API or Salesforce's Change Data Capture. All export is pull-based via REST API polling. If you need ongoing data synchronization rather than a one-time export, you must build a scheduled polling job against the search endpoints.

Native UI Export: Step-by-Step

eGain's admin UI does not have a traditional "Export to CSV" button for cases, customers, or activities. The native export options break down into three workflows.

Exporting Analytics Reports

  1. Navigate to eGain Analytics
  2. Open or create the desired report (real-time or historical)
  3. Click the export button and choose your format: Excel, PDF, CSV, XML, HTML, or Tiff
  4. Optionally, schedule recurring report delivery via email in your chosen format
Warning

Analytics exports contain aggregate operational data — metrics like case volumes, resolution times, agent performance, and queue statistics. They do not export individual case records, customer records, or conversation transcripts. Do not confuse report exports with data exports.

Exporting Knowledge Articles via Print Preview

  1. Log in to the eGain Knowledge Console
  2. Navigate to the knowledge base folder containing your articles
  3. Click Print Preview in the Tree Pane toolbar
  4. The preview renders all articles in the selected folder with content, name, and folder path
  5. Export the preview as PDF or Excel

This method produces a human-readable snapshot of article content. It captures rendered formatting but does not preserve article metadata like creation dates, version history, or language variants. Attachments are not included.

Exporting Guided Help Case Bases

Case bases (decision-tree content used in guided help) can be exported as a single XML file from the Knowledge Console. This copies the entire case base, including all embedded articles. There is no option to export individual articles from a case base — it is all or nothing.

Admin Utility Exports

A handful of narrow admin objects have dedicated UI export paths: Security > User Accounts > Password Blacklist > Export File downloads a CSV, and Security > Data Masking > Patterns > Export Pattern downloads XML. These are useful examples of how limited the native export surface is. (help.egain.com)

API-Based Export: Endpoints, Pagination, and Rate Limits

The REST API is the only method that provides structured, record-level access to eGain's full data model. eGain maintains two API families, and you may need both depending on what you are extracting.

API Families

API Family Version Auth Method Default Format Primary Use
Core/Modern APIs v3 OAuth 2.0 (Client Credentials) JSON or XML Cases, Activities, Customers, Conversations, Users, Departments
Legacy Authoring/Access APIs v11, v12, v15 Session-based (X-egain-session header) XML Articles, Topics, Folders, Attachments, Portals

Authentication Setup

For v3 APIs (recommended for case and customer data):

  1. Register a Client Application in the eGain Administration Console to generate your Client ID and Client Secret
  2. Access the application's Metadata to find your Authorization and Token URLs — use these rather than hard-coding a public hostname, as the API domain may differ by tenant (developer-qe.ezdev.net)
  3. Use the Client Credentials flow for server-to-server exports:
curl --location --request POST '<YOUR_TOKEN_URL>' \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'grant_type=client_credentials' \
  --data-urlencode 'client_id=<CLIENT_ID>' \
  --data-urlencode 'client_secret=<CLIENT_SECRET>' \
  --data-urlencode 'scope=<REQUIRED_SCOPES>'
  1. Include the returned token as Authorization: Bearer <access_token> in all subsequent requests. OAuth tokens have a finite TTL (typically 3600 seconds); refresh before expiry.

For legacy APIs (knowledge content):

  1. Call the Login API to create a session
  2. Store the X-egain-session header from the response
  3. Include this header in all subsequent requests
  4. Sessions time out after approximately 20 minutes of inactivity — handle re-authentication in your export scripts
  5. Always call the Logout API when done to release the license; otherwise the license is held until session timeout

Pagination

eGain offers two mutually exclusive pagination approaches. You cannot combine them in the same request — doing so returns a 400 Bad Request.

Parameter Type Default Max Notes
$pagenum Page-based 1 Used with $pagesize
$pagesize Page-based 25 75 Maximum records per page
$rangestart Range-based 1 Used with $rangesize
$rangesize Range-based 25 75 Maximum records per range request

The maximum page size of 75 records is a hard limit. For a dataset of 100,000 cases, you need a minimum of 1,334 API calls just for the case list — before fetching activities, notes, or attachments for each case.

For the Get Customer by IDs endpoint specifically, the operation accepts up to 75 comma-separated IDs per request and explicitly does not support pagination or range parameters. Bulk customer export depends on the search operation instead. (apidev.egain.com)

Rate Limits

eGain does not publish a single suite-wide requests-per-minute quota in its public documentation. The Access (self-service) APIs documentation states that API usage is monitored as session usage, where a session is 10 minutes in duration and a maximum of 10 calls is permitted, with overages billed per eGain's pricing terms.

The v3 Core APIs do not publish explicit per-minute or per-day rate limits in their public docs. In practice, sustained high-volume extraction may trigger server-side throttling or session termination. Build exponential backoff into your scripts regardless — when throttled, the server returns HTTP 429 Too Many Requests. Read the Retry-After header and pause execution. If you fail to implement backoff, eGain may temporarily block your session or IP.

Common API Error Codes During Export

HTTP Status Meaning Typical Cause During Export Recommended Action
400 Bad Request Malformed request Mixing $pagenum with $rangestart; missing required query parameter; requesting attachments on non-email/non-chat activity types Validate request parameters against endpoint docs
401 Unauthorized Auth token expired or invalid OAuth token TTL exceeded; legacy session timed out after 20 min inactivity Re-authenticate and retry
403 Forbidden Insufficient permissions Client app scope does not cover the requested resource; department restrictions Verify OAuth scopes and user role assignments
404 Not Found Resource does not exist Referencing a deleted case, customer, or attachment; using wrong API version path Log the ID and continue; add to orphan report
429 Too Many Requests Rate limit exceeded Sustained high-frequency polling without delays Read Retry-After header; implement exponential backoff starting at 5 seconds
500 Internal Server Error Server-side failure Large response payload; transient infrastructure issue Retry with exponential backoff (max 3 attempts); if persistent, reduce $pagesize
503 Service Unavailable Server overloaded or in maintenance Maintenance window; excessive concurrent sessions Pause export; retry after 60 seconds; check eGain status page

Key API Endpoints for Export

# Cases
GET /core/casemgr/v3/case?$attribute=all&$pagenum=1&$pagesize=75

# Activities (interactions within cases)
GET /core/casemgr/v3/activity?caseID={id}&$attribute=all&$pagenum=1&$pagesize=75

# Customers
GET /core/customermgr/v3/customer?$attribute=all&$pagenum=1&$pagesize=75

# Articles (legacy Authoring API)
GET /system/ws/v12/kb/article?$attribute=all&$lang=en-us&$pagenum=1&$pagesize=75

# Articles (Portal Manager API)
GET /knowledge/portalmgr/v3/portals/{portalID}/articles?filter[topic]={topicID}&$pagenum=1&$pagesize=75&$attribute=all

# Article attachments
GET /system/ws/v12/kb/attachment?article={articleId}&$lang=en-us&$attribute=all

# Activity attachments
GET /core/casemgr/v3/activity/{ids}/attachment/{attachmentID}?$attribute=contentUrl

# Folder hierarchy (full tree)
GET /system/ws/v12/kb/folder?$level=-1

# Topic tree (v4)
GET /knowledge/portalmgr/v4/portals/{portalID}/topics

Paginated Case Export with Retry Logic

import requests
import time
 
def export_all_cases(base_url, token, page_size=75):
    page = 1
    all_cases = []
    
    while True:
        url = f"{base_url}/core/casemgr/v3/case"
        params = {
            "$attribute": "all",
            "$pagenum": page,
            "$pagesize": page_size
        }
        headers = {
            "Authorization": f"Bearer {token}",
            "Accept": "application/json"
        }
        
        for attempt in range(3):
            resp = requests.get(url, params=params, headers=headers)
            
            if resp.status_code == 200:
                data = resp.json()
                cases = data.get("cases", {}).get("case", [])
                if not cases:
                    return all_cases
                all_cases.extend(cases)
                page += 1
                break
            elif resp.status_code == 401:
                token = refresh_token()  # Re-authenticate
            elif resp.status_code == 429:
                retry_after = int(resp.headers.get("Retry-After", 2 ** attempt * 5))
                time.sleep(retry_after)
            elif resp.status_code >= 500:
                time.sleep(2 ** attempt * 5)
            else:
                raise Exception(f"API error {resp.status_code}: {resp.text}")
        else:
            raise Exception(f"Max retries exceeded on page {page}")
    
    return all_cases

Real-Time Knowledge Access (RTKA) for Bulk Knowledge Export

For large knowledge bases, eGain offers Real-Time Knowledge Access — an asynchronous bulk export that writes to a customer-provided Amazon S3 bucket or SFTP server. Each exported JSON file can contain up to 250 articles, and the file tree includes JSON metadata, HTML article bodies, and attachment files. (apidev.egain.com)

This is a licensed feature, not available on all plans. But for teams with 10,000+ knowledge articles, RTKA is significantly faster than paginating through the Portal Manager API at 75 records per page. For a 10,000-article knowledge base, RTKA produces roughly 40 JSON part files plus HTML and binary folders, compared to a minimum of 134 paginated API calls just for the article list (plus separate calls for each article's attachments).

Throughput Math

At 75 records per page with conservative pacing (1 request per second to avoid triggering undocumented throttling):

  • 75 records/second for a single object type (list calls only)
  • ~270,000 records/hour theoretical maximum for list calls

In practice, you will be far slower because each case requires separate calls to fetch its activities, notes, and attachments. A realistic sustained throughput for a full case export is 500–2,000 fully hydrated case records per hour, based on the following assumptions:

  • Average of 4 activities per case (each requiring a separate GET call with $attribute=all)
  • 30% of activities have at least one attachment (each requiring a content URL fetch + binary download)
  • ~200ms average network latency per API round-trip to eGain's cloud endpoints
  • 1-second intentional delay between requests to stay below undocumented throttling thresholds
  • The lower end (500/hr) applies to cases with 8+ activities and multiple attachments; the upper end (2,000/hr) applies to cases averaging 2 activities with no attachments

This means a 100,000-case dataset with typical activity density takes 50–200 hours of extraction time — or 2–8 days of continuous operation. Plan for interruptions: network failures, token expiry, and transient 500 errors will add 15–25% to the raw extraction time.

Does eGain Let You Export Attachments?

Yes, but attachments are a separate extraction problem. They are never included inline in case or article export responses.

For activity attachments: Use the Case Manager API at /core/casemgr/v3/activity/{ids}/attachment/{attachmentID}. Request $attribute=contentUrl to get a download URL. The endpoint returns 400 if the activity type is not email or chat — calltrack and other activity types are excluded. (apidev.egain.com)

For knowledge article attachments: Use the legacy Authoring API at /system/ws/v12/kb/attachment?article={articleId}&$lang=en-us or the v4 Portal Manager endpoints at /knowledge/portalmgr/v4/articles/attachments/{attachmentID}. The RTKA bulk export writes attachments into per-article folders alongside the exported HTML content. (apidev.egain.com)

Danger

One-time download trap: eGain's documentation for suggestion attachments states that the contentUrl "only exists temporarily on the server" and "the attachment can be retrieved only once as it is deleted from the server after download." If this behavior applies to your attachment type, you cannot retry a failed download without re-requesting the URL. Build download verification (check HTTP 200 response, validate file size > 0 bytes, compute SHA-256 checksum) and write to local storage immediately before processing.

File size limits: Chat attachments are configurable from 2 MB to 10 MB per file, and knowledge-base attachments are configurable from 1 MB to 25 MB, with a default of 3 MB. Incoming email size, including content and attachments, is capped by the partition setting for maximum email size. (help.egain.com)

Inline images embedded within email or article HTML bodies are typically referenced by URL. If those URLs point to eGain-hosted assets, you must separately download and re-host them — they will break if you decommission the eGain instance. eGain may also store inline email images as base64-encoded strings within the HTML payload or as CID (Content-ID) references. If your destination platform does not support CID parsing, these images will appear as broken links after migration. To handle this: parse the HTML for cid: references, match them to MIME parts or attachment IDs in the activity response, download each, re-host on your target platform's CDN, and rewrite the src attributes in the HTML body.

Retention risk: eGain purge jobs can remove chat transcripts, email attachments, audit data, and case/activity details on a schedule. If retention windows are active, a late export request becomes a data-retention problem, not just an API problem. Check your purge configuration before planning any export timeline. (help.egain.com)

What Data Cannot Be Exported from eGain?

Every platform has export blind spots. Here is what you cannot get out of eGain through any documented method:

Data Type Exportable? Why It Matters Workaround
Workflow/automation configurations No Represent months of operational logic encoding business rules, escalation paths, and conditional routing Manual audit using Admin Console screenshots; document each workflow step-by-step before decommissioning
Routing rules and assignment logic No Control which agents receive which case types; encode team structure and skill-based routing Export agent skill assignments via User Manager API; manually document routing rules from Admin Console
Custom views and saved filters No Represent agent-specific or team-specific workflow optimizations Screenshot and recreate; interview power users for undocumented filters
User permissions and role definitions Partial — user records exportable via User Manager API, but role definitions (what each role can do) are not bulk-exportable Role definitions encode your security model Export user-to-role mappings via API; manually document role permission matrices from Admin Console
Analytics dashboards and report definitions No — aggregate report data exportable, but the dashboard configurations and report definitions are not Custom reports represent analytics investment Export all report data in all formats before decommissioning; recreate definitions in target
Integration configurations No API keys, webhook URLs, middleware mappings Document all active integrations, credentials (stored in your secrets manager, not eGain), and data flow diagrams
SLA/escalation policy definitions No Encode response time commitments and escalation chains Document from Admin Console; map to target platform's SLA framework
Deleted/archived records No documented API access May be needed for compliance or legal holds Contact eGain support; may require professional services engagement
Audit logs No bulk export API Required for compliance and security forensics; audit data has its own purge category Contact eGain support for manual extraction; note that purge jobs may have already removed older entries (help.egain.com)
Password hashes / auth credentials No Expected — no platform exports credential material Users must re-authenticate in target; plan for password reset communications

[For customer success] The critical gap for most teams is workflow and routing configurations. These represent significant operational logic that must be manually documented and rebuilt in any target platform. In our experience, workflow recreation typically consumes 30–40% of total migration project time for organizations with complex routing trees — more than the data extraction itself. Teams consistently underestimate this.

Data Format, Encoding, and Cleanup After Export

eGain's APIs support XML (default on legacy APIs) and JSON (supported on all v3 APIs, optional on legacy). Article content bodies are stored as HTML inside the API response regardless of the response format.

Common Data Quality Issues in eGain Exports

  • HTML in text fields: Article bodies and activity content contain raw HTML. If you are migrating to a platform that uses Markdown or plain text, you must run an HTML-stripping and conversion script (e.g., using Python's html2text or BeautifulSoup), or your new system will display unreadable code blocks.
  • Date format inconsistencies: The v3 knowledge article responses use date strings like 29 Jun 2022 03:45:18.000 +0000, while v4 topic responses use ISO-style timestamps such as 2022-05-23T19:44:02Z. The v3 Case Manager API uses yet another format. Normalize all timestamps to ISO 8601 UTC during the landing phase, not during import. (apidev.egain.com)
  • Encoding: API responses are UTF-8. XML responses include the encoding declaration. Watch for HTML entities (&amp;, &lt;, &#x2019;) in article content that may need decoding.
  • Orphaned references: Activities referencing deleted customers, or articles referencing removed folders, will have dangling IDs in export data. Build an orphan report during extraction — log every foreign key that fails to resolve.
  • Summary vs. full attributes: If you forget $attribute=all, you will get records missing key fields. This bears repeating — it is the most common eGain export mistake. A case exported without $attribute=all may return only caseId, subject, status, and createdDate, omitting custom attributes, assigned agent, department, and priority.

Post-Export Validation Checklist

  1. ✅ Verify record counts match between eGain UI and exported data (compare against Analytics report totals)
  2. ✅ Confirm all cases have their associated activities exported (check that activity count per case matches the activityCount field on the case record)
  3. ✅ Check that article bodies contain full HTML content, not just summaries (verify character count > 100 for articles known to have content)
  4. ✅ Validate that customer contact points (email, phone) are present — missing contact points indicate $attribute=all was omitted
  5. ✅ Verify attachment files were downloaded and are not corrupted (check file sizes > 0 bytes; validate checksums if available)
  6. ✅ Confirm date/time values are in expected timezone and format
  7. ✅ Spot-check 10 records across different object types for field completeness: 3 recent, 3 oldest, 2 with most activities, 2 with largest attachments
  8. ✅ Verify hierarchical relationships (folder trees, case-activity links) are intact — reconstruct the tree and diff against the UI
  9. ✅ Run a foreign key integrity check: every customerId on a case should resolve to an exported customer record

Export for Migration vs. Backup vs. Compliance

Your extraction strategy changes based on your end goal.

Migration: You need structured, relationship-preserving data — every case linked to its activities, every article linked to its folder and attachments. ID mapping is critical: eGain's internal IDs will not match destination platform IDs, so you must build a mapping table during import. The target platform's import constraints (field length limits, supported HTML tags, attachment size caps) will dictate post-export transformation requirements. You can often leave behind data older than three years to reduce scope — verify this with your legal and compliance teams first.

Backup: Full-fidelity snapshots require extracting every object with $attribute=all and downloading all attachments. Schedule recurring API-based exports if eGain does not offer built-in backup. Store exports in an immutable, versioned format — dated JSON files in cloud storage with a manifest tracking record counts, extraction timestamps, and checksums.

Compliance (GDPR, DSAR): For GDPR Article 20 data portability, you must provide personal data in a "structured, commonly used, and machine-readable format." Here is the technical workflow for DSAR fulfillment using eGain's API:

  1. Search by identifier: Query GET /core/customermgr/v3/customer?$attribute=all with the data subject's email address as a search filter
  2. Retrieve associated cases: For each matching customer ID, query GET /core/casemgr/v3/case?customerId={id}&$attribute=all to pull all cases
  3. Retrieve activities per case: For each case, query activities with $attribute=all to capture full conversation history
  4. Download attachments: Fetch all attachments associated with the data subject's activities
  5. Compile output: Merge into a single JSON document or structured ZIP archive containing customer profile, all cases, all activities, and all attachments
  6. Right-to-erasure verification: If the request includes deletion (Article 17), confirm all extracted records are complete before executing deletion via the Customer Manager API's delete operation — there is no undo

eGain maintains a Data Processing Addendum covering international data transfers under Standard Contractual Clauses — relevant if you are exporting data from an EU-hosted eGain instance.

Contract Termination and Data Access

eGain's standard subscription agreements do not publicly guarantee a specific data export window or format at contract termination. Based on typical enterprise SaaS practices:

  • Data retention post-termination is typically 30–90 days, after which eGain may delete tenant data. Verify the exact window in your Master Subscription Agreement.
  • There is no documented self-service "Download All My Data" mechanism triggered by contract termination. You must complete your API-based export before the contract ends or before your API credentials are revoked.
  • Request a data dump from eGain support as a fallback. Enterprise contracts may include provisions for eGain to provide a database export, but this is not standard and must be negotiated.

Bottom line: Do not assume you can export after termination. Begin your data extraction at least 60 days before contract end, and confirm your API credentials will remain active through the export window.

Vendor Lock-In and Data Portability Assessment

[For CTOs]

eGain data portability rating: Partially Locked.

Factor Assessment
Knowledge content (articles, topics, folders) Exportable via API with full HTML bodies. Attachments require separate extraction. Guided help case bases export only as monolithic XML with no individual article granularity. RTKA improves bulk KB export for licensed users.
Case/interaction data Exportable via v3 API but only 75 records per page, exact-match search only, no bulk export job or incremental export mechanism.
Customer records Exportable via API. No bulk export function — search operation required for scale.
Workflow and routing logic Not exportable. Must be manually documented and recreated.
Analytics and reporting definitions Not exportable. Only aggregate report data can be downloaded.
Integrations Not exportable. Must be rebuilt.

What percentage of data can you get out cleanly? Approximately 70–80% of your data (cases, customers, articles, attachments) is extractable through the API. Nearly 100% of your operational configuration — workflows, routing rules, SLA policies, dashboards, integration configs — cannot be exported at all. This configuration debt is where the real switching cost hides.

Data Portability Comparison: eGain vs. Zendesk vs. Intercom vs. Salesforce Service Cloud

Capability eGain Zendesk Intercom Salesforce Service Cloud
Bulk record export No bulk job; paginated API only (75/page) Incremental Export API (1,000/page); full JSON bulk export via Support admin Cloud storage export to S3/GCS (full account data) Data Export service (weekly CSV); Data Loader (bulk API, 10,000/batch); also SOQL query export
Max page/batch size 75 records 1,000 records (incremental); 100 per page (list) N/A (full export) 2,000 records (REST); 10,000 (Bulk API 2.0)
Incremental/delta export Not supported — must re-export everything or track state externally Native: start_time parameter returns only records modified since timestamp Not natively supported for ongoing sync Change Data Capture (CDC) for real-time event streaming
Attachment export Separate API calls per attachment; some one-time-download restrictions Included in ticket export as URLs; bulk downloadable Included in export package Attachment object queryable via API; binary download via content URL
Webhook/event stream None Webhooks for ticket, user, and organization events Webhooks for conversations, contacts, and events Platform Events, Change Data Capture, Outbound Messages
Workflow/config export Not exportable Partial — triggers, automations, macros exportable via API Not exportable Full metadata API; change sets; Salesforce DX for version-controlled config
Self-service "Download All" No Yes (Admin Center > Account > Data export) Yes (Settings > Data Management > Export) Yes (Setup > Data Export)
GDPR/DSAR tooling Manual API workflow required Built-in GDPR deletion/export tool in Admin Center Data deletion/export via Settings Built-in Individual Rights features in Privacy Center
Rate limits Undocumented for v3; legacy APIs: 10 calls/10-min session 400–700 requests/minute (depends on plan) Varies by endpoint; typically 1,000/min for most APIs 100,000 API calls/24hr (Enterprise); Bulk API: 15,000 batches/24hr
Engineering effort for full export High — custom scripts required for every object type Low to Medium — bulk export covers most data with minimal code Low — single export request covers account data Medium — Data Loader handles most cases; complex orgs need Bulk API scripts

The comparison makes eGain's portability gaps concrete: no incremental export, no self-service bulk download, no webhook infrastructure, and the lowest page size cap of any platform in this comparison. The engineering effort required for an equivalent full-data export from eGain is 3–5x higher than from Zendesk or Intercom.

Timeline and Resourcing for a Full Data Export

Phase Small (<10K records) Medium (10K–100K records) Large (100K+ records)
Scoping & API access provisioning 1–2 days 2–3 days 3–5 days
Script development & testing 2–3 days 3–5 days 5–10 days
Extraction 2–4 hours 4–24 hours 1–5 days
Attachment downloads 1–4 hours 4–12 hours 1–3 days
Validation & cleanup 1 day 2–3 days 3–5 days
Total elapsed time 4–6 days 7–12 days 12–25 days

Minimum team composition:

  • Analytics export only: 0 engineers (self-serve through UI)
  • API export: 1 backend engineer with REST API experience
  • Full migration (export + transform + import): 1–2 engineers + 1 PM

The extraction phase itself is not the bottleneck. Script development and post-export validation consume the majority of project time. Activities must be fetched per-case and attachments per-record — the number of API calls scales multiplicatively, not linearly. For a 50,000-case dataset averaging 4 activities per case, you need approximately 50,000 (cases) + 200,000 (activities) + 60,000 (attachment fetches at 30% rate) = 310,000 API calls minimum, taking roughly 86 hours at 1 request/second.


If you are benchmarking portability across support platforms, these guides cover the export process for other systems:


Frequently Asked Questions

Can I export all my data from eGain?
You can export most record-level data — cases, activities, customers, articles, conversations, and attachments — through eGain's REST API. There is no single "Export All" button. Workflow configurations, routing rules, analytics dashboards, and integration settings cannot be exported and must be manually recreated in any target system.
Does eGain export include attachments?
Not automatically. Attachments must be downloaded separately via the API using the contentUrl attribute returned with attachment metadata. Article attachments use the Authoring API; activity attachments use the Case Manager API. There is no bulk attachment download endpoint, and some attachment URLs are temporary and deleted after first download.
How long does it take to export data from eGain?
For a small dataset under 10,000 records, expect 4–6 business days including script development and validation. For 100,000+ records, plan for 12–25 business days. The API's 75-record page limit means extraction for large datasets can take multiple days of sustained calls, and activities must be fetched per-case.
Is there a way to export eGain data without using the API?
Yes, but with major limitations. eGain Analytics reports export to CSV, Excel, PDF, XML, or HTML — but only aggregate metrics, not individual records. The Knowledge Console Print Preview exports articles to PDF or Excel. Guided help case bases export to XML. For record-level case, customer, or activity data, the API is the only path.
Can I export eGain data for GDPR compliance?
Yes, but you must build the workflow. eGain's API can produce JSON exports of individual customer records that satisfy GDPR Article 20 requirements for structured, machine-readable format. There is no built-in self-service data portability tool — your team must query the Customer Manager API to fulfill data subject access requests.

More from our Blog

Help Desk Data Migration Playbook: What Data to Move and What to Leave Behind
Help Desk

Help Desk Data Migration Playbook: What Data to Move and What to Leave Behind

This definitive playbook answers the single most critical question: "What data do we actually need to move?". This strategic guide helps you declutter and decide what's precious and what's junk. We provide a clear breakdown of the non-negotiable Tier 1 data, like tickets , knowledge bases , and user profiles, versus the Tier 2 data that provides rich context, like automations and organizations. Use this as your strategic checklist to avoid common mistakes and ensure a flawless, functional new help desk.

Raaj Raaj · · 7 min read