Unified Data Connector for CFM: Overview, Relevance, Setup, and Troubleshooting
Updated
The Unified Data Connector (UDC) is Sprinklr’s file-based data ingestion framework that enables you to seamlessly import and synchronize external data into the platform. It supports both one-time file uploads and scheduled or recurring ingestion from managed sources such as SFTP, Amazon S3, Google Cloud Storage (GCS), and Azure Blob.
By using UDC, you can reduce manual effort, accelerate time-to-value, and ensure reliable data ingestion with built-in capabilities such as validation, transformation (via Groovy), encryption support, monitoring, and audit tracking.
Why UDC is Important for CFM
Customer Feedback Management (CFM) relies on accurate and timely data to personalize surveys and generate unified insights. UDC enables this by supporting ingestion across two key data areas:
Transactions: Interaction-level data associated with customer profiles that powers survey personalization, workflow triggers, and reporting.
Responses: Survey responses imported from external systems, enabling continuous analytics and consolidation of feedback data.
Core Capabilities
With UDC, you can:
Ingest custom, standard, and system entities through file uploads or storage sources (SFTP, S3, GCS, Azure Blob)
Track run history and audit logs, including success and failure files.
Apply data transformations using Groovy scripting.
Process encrypted files (PGP/RSA) securely.
Configure scheduled ingestion and notifications.
How UDC integrates with CFM Transactions
Transaction Groups and ingestion paths
Transactions in CFM are organized into Transaction Groups. The ingestion path defines how a group is populated:
Import: One-time file ingestion via UI for ad hoc lists and personalized link exports.
Unified Data Connector: Scheduled or on-demand ingestion from SFTP/GCS/S3/Azure Blob or direct File Upload, with mapping, validation, and transformations.
API: Real-time programmatic ingestion via Create Transactions API, governed by a defined schema.
UDC for Transactions: end-to-end flow
Create a Transaction Group (type: Unified Data Connector) and associate it with relevant survey projects for governance and downstream use in distributions and workflows.
Configure the connector
Entity is preselected via the Transaction Group flow.
Integration Type: Insert Transactions and Upsert Profile (each run creates new transactions; profiles are created or updated as needed).
Operation Type for Profile multi-select custom fields: choose Merge or Set.
Select a source: File Upload, SFTP, GCS, S3, or Azure Blob. Provide a Connector Name and optional description.
Upload a sample file (defines the expected headers and structure for all runs). Keep the sample’s extension consistent with your real files (including encryption suffixes like .pgp).
Map headers
System-level mandatory fields: First Name, Full Name, Last Name, Social Network, Social Network User Id.
Map Transaction Custom Fields and optional Profile fields as needed.
Mark additional connector-level mandatory fields and attach validation rules (email/phone/regex).
Set or hard-code the socialNetwork field with uppercase values for CFM distributions: EMAIL, SMS, WHATSAPP_BUSINESS.
Use Custom Headers with Groovy to compose/transform values (e.g., concatenate names, set constants, timestamps).
Sharing & Notifications: Share access and configure run notifications (success/failure/warnings) to collaborators.
Run, schedule, and monitor: Execute on-demand or schedule; view Activity logs and download failure/success files for investigation.
Note:
Transaction Field Governance
Transaction field availability is determined by the union of:
Global Custom Fields.
Fields available to the associated survey projects.
Data for unmapped or non-governed fields is still ingested and stored, but it won’t appear in survey-level workflows, placeholders, or Responses until governance is updated. Associate the Transaction Group with the right projects and align custom field governance accordingly.
How UDC integrates with CFM Responses
Use the CFM Response connector to import answers from external systems into a target survey:
From CFM Global Settings, create a Data Connector with entity type CFM Response and select the target survey.
Integration Type: Insert (creates new response records).
Select source (File Upload/SFTP/GCS/S3/Azure Blob), name/describe the connector, and provide source-specific details.
Mapping Configuration
Map to Standard Fields, Survey Questions, Response Fields, Transaction Fields, or Profile Fields as appropriate.
Mandatory survey questions must be mapped; missing values in ingestion yield Partially Completed responses.
Apply validation (email/phone/regex/no-duplicates) and optionally mark connector-level mandatory fields.
Use Value Mapping for coded responses (e.g., A1 → Option 1) across supported question types, ensuring normalized analytics.
Run
Activate
“Ingestion Connector Name” is recorded on each response.
“Response Type” = “Imported”.
“Distribution Channel” defaults to “Data Ingestion” if not provided.
Key setup prerequisites and governance
Custom Fields: Define Profile Custom Fields, Transaction Fields, and Response Custom Fields before mapping.
Survey association: Associate Transaction Groups with the survey projects that will use them for distributions/workflows.
Permissions
Response import: Survey-level “Import” under “Can Edit” → “Response and Analytics”.
Data Connector setup: Global permissions to View, Create, Edit, Delete, and View Audit Logs for Setup → Data Connector.
Troubleshooting guide
Source connections and credentials
GCS service account JSON
Create a GCS service account, then generate a JSON key in the Keys section.
Grant a custom role (or equivalent) with at least: storage.buckets.get, storage.objects.get, storage.objects.list, storage.objects.create, storage.objects.delete.
IP allowlisting is typically unnecessary because service-account auth is used. If your security policy requires network controls, restrict to published Sprinklr IPs. Refer to this article for more details.
S3 with IAM Role
Minimum policy: s3:PutObject, s3:GetObject, s3:DeleteObject on arn:aws:s3:::{bucket-name}/*; s3:ListBucket on arn:aws:s3:::{bucket-name}.
In AWS-hosted partners, ensure trust relationship allows Sprinklr’s internal IAM role to assume the customer role (raise ITOps ticket as per internal process).
SFTP
Verify host, port, username, and either password or key-based authentication per connector configuration pages linked in UDC docs.
Confirm file permissions and directory paths for polling and archiving.
File format and sample file
Sample file extension must match real files: If your bucket files are .csv, the sample must be .csv. For encryption, sample must mirror .csv.pgp, etc.
CSV delimiter
For Transaction ingestion via UDC: configure mappings based on your file. If your operational standard uses semicolons, ensure the same delimiter is used consistently in source and sample.
Header consistency: Future runs must use identical headers to the sample file unless you explicitly update the sample.
File encoding must be UTF-8: Source files should be encoded in UTF-8 format. Files encoded in other formats, like Windows-1252 (which is a superset of ISO-8859-1/Latin-1), may display replacement characters in transaction values. To prevent character rendering problems, convert source files to UTF-8 prior to ingestion.
Quoted values in CSV fields: According to the standard CSV guidelines (RFC 4180 / most common parsers), a field enclosed in double quotes cannot have an unescaped literal double quote inside it. For instance, "Acme 24" LOW 129" is incorrect because the quote following 24 ends the quoted field. To add a literal double quote, you can escape it by doubling it: "Acme 24"" LOW 129" or by using backslash escaping, such as "Acme 24\" LOW 129".
Semicolon delimiter and quoting: The default delimiter is semicolon (;). If any header or cell value contains a semicolon, quote all headers and cell values within double quotes to ensure the file is parsed correctly. For example, "Gold";"Silver; Platinum; Bronze".
Mapping, validations, and mandatory fields
Social Network must be uppercase and a valid CFM channel for Transactions: EMAIL, SMS, WHATSAPP_BUSINESS. You can hard-code this via a custom header if uniform.
System-level mandatory fields (Transactions): First Name, Full Name, Last Name, Social Network, Social Network User Id must be provided or derived via transformations.
Connector-level mandatory fields: If marked mandatory and missing, the record or run will fail per connector logic, inspect failure files.
Survey question mandatory mapping (Responses): All questions flagged as Mandatory in the builder must be mapped; missing values result in Partially Completed responses.
Validation failures (email, phone, regex, no-duplicates) prevent ingestion of the affected record; check the failure file for row-level errors.
Governance alignment
Transaction Fields visibility: If a mapped field isn’t available to a survey project, data still ingests but won’t surface in placeholders, workflows, or Responses until governance is updated.
Survey association for Transaction Groups: Ensure the group is associated with the projects where distributions/workflows will reference it.
Keypoints to note
Illegal characters in source files
Illegal/replacement characters ( U+FFFD) are fully supported in UDC ingestion and Groovy custom-header code. Files containing these characters will pass through the connector pipeline and transformations without failures or data loss; no special escaping or pre-processing is required.
If your file contains illegal characters at the start, such as Email_ID, use the field directly from the placeholders in the custom header instead of typing the header name manually. This ensures the character processes correctly with the file's first header.
Encryption: Binary vs ASCII (PGP/GPG)
UDC supports PGP-encrypted files in both Binary and ASCII-armored formats. However, there is a known issue with ASCII-armored files where the platform detects MIME type as text/plain and alters the extension (e.g., .csv.pgp → .csv.pgp.txt), breaking file matching and ingestion (tracked in CFM-15286).
Ensure the sample file is encrypted and has the correct extension (.pgp). If the file is encrypted with the wrong public key, ingestion fails because the headers cannot be parsed correctly.
Per-file ingestion limit (UDC + GCS for Transactions)
Controlled by platform configuration (TRANSACTION_DATA_CONNECTOR_V2_INGESTION_LIMIT). Default cited value is 10,000. If exceeded, runs fail with diagnostics in View Activity; coordinate with your admin/POC to adjust if needed.
Configuring Notifications
We can configure notifications for the success or failure of manually run connectors, but this option is unavailable for recurring connectors (such as SFTP, S3, GCS) to prevent spam
Best Practices
Define your data model upfront by creating Profile and Transaction custom fields before configuring mappings. Use consistent field names across your source systems and Sprinklr to simplify maintenance.
Capture complete interaction data in Transactions and selectively update Profile attributes to maintain both historical interaction records and current customer information.
Standardize channel values by using uppercase values for the Social Network field (for example, EMAIL, SMS, and WHATSAPP_BUSINESS) and manage them centrally through Groovy custom headers.
Leverage Value Mapping in Response connectors to convert coded responses into standardized values, ensuring consistent reporting and analytics.
Manage schema changes carefully by updating sample files, reviewing mappings, and validating changes in a lower environment before deploying to production.
Monitor connector activity regularly by reviewing activity logs, analyzing failure files, and configuring automated notifications to quickly identify and resolve ingestion issues.