Skip to content
Last updated

Treasure Data CDP Integration

Treasure AI Voice can push your organization's recordings, transcripts, AI-generated summaries, and device inventory directly into your own Treasure Data CDP database. Once the data lands in your CDP, you can join it with the rest of your customer data, build segments, drive journeys, and run analytics over what was actually said in your meetings and calls.

The integration is push-based and on demand: an administrator runs an export from the AI Voice Console, and Treasure AI Voice streams a snapshot of the selected data into the tables you specify. There is no standing pipeline to manage and no data sits in an intermediate location — your API key is used only to authenticate that single run and is never stored or persisted.

Who can use this

The Treasure Data CDP export is available to Enterprise Administrators only, and must be enabled for your organization before it appears. See Enabling the integration below.

What gets exported

Each export writes to four logical tables in your CDP database. The recordings, transcript_segments, and summaries tables reflect the recordings in scope for the run; the devices table always reflects your full device inventory regardless of the selected date range.

Recordings are included regardless of processing status. The status column reflects each recording's state, and transcription_text, summary_text, and the related fields are empty for recordings that have not finished transcribing or summarizing yet.

TableContentsGranularity
recordingsOne row per recording: metadata, the full speaker-labeled transcript, the AI summary, and action items.One row per recording
transcript_segmentsThe transcript broken into individual timed utterances, with speaker attribution and per-segment language detection.One row per utterance
summariesThe AI-generated summary and action items, separated out for easy joining. Only recordings that have a summary produce a row.One row per summarized recording
devicesYour organization's PLAUD device fleet: assignment, status, firmware, and last-seen timestamps.One row per device

Every row carries a stable uuid derived from the source record. The same record always maps to the same uuid, so you can identify and remove duplicate rows after re-running an export over an overlapping date range.

Every row also carries a time column (Unix epoch seconds) that Treasure Data CDP uses for native time partitioning, so analysts can efficiently filter by time. The time value is anchored to the most meaningful timestamp for each table — recorded_at for recordings and summaries, the utterance start for segments, and the last heartbeat (falling back to provisioning time) for devices.

Schema reference

The schema is owned by Treasure AI Voice. Columns are appended to your CDP tables on first write — you do not need to pre-declare them.

recordings

ColumnTypeDescription
timelongUnix epoch seconds of recorded_at. Used for time partitioning.
uuidstringStable identifier for this recording row. Deduplicate on this.
idstringRecording ID (matches recording_id in the other tables).
organization_idstringYour organization's identifier.
recorded_atstringISO 8601 timestamp of when the recording was captured.
user_emailstringEmail of the member who created the recording.
user_namestringDisplay name of the member who created the recording.
file_namestringOriginal file name of the recording.
duration_secondslongLength of the recording in seconds.
statusstringProcessing status (e.g., COMPLETED).
transcription_languagestringPrimary detected language of the transcription.
transcription_textstringThe full transcript, rendered as speaker-labeled, speaker-grouped text — the same form an administrator sees when opening the recording in the AI Voice Console. Note: If a recording's transcript exceeds the 1 MB per-event size limit (typically recordings over 3 hours), the entire recordings row for that recording is rejected by the ingest API. The export continues and completes with a partial status; the recording's rows in transcript_segments and summaries are unaffected.
summary_textstringThe AI-generated summary of the recording.
action_itemsarray<string>AI-extracted action items.
inferred_namestringAI-inferred title for the recording.
tagsarray<string>Tags applied to the recording.
device_serial_numberstringSerial number of the PLAUD device used to capture the recording.
team_idstringIdentifier of the team the recording is associated with, if any.

transcript_segments

ColumnTypeDescription
timelongUnix epoch seconds at the segment's start offset within the recording.
uuidstringStable identifier for this segment row.
recording_idstringThe parent recording's ID. Join to recordings.id.
organization_idstringYour organization's identifier.
segment_indexlongZero-based position of the segment within the recording.
start_mslongSegment start offset, in milliseconds from the beginning of the recording.
end_mslongSegment end offset, in milliseconds from the beginning of the recording.
speaker_idstringRaw speaker identifier from diarization (e.g., spk_0).
speaker_labelstringHuman-friendly speaker name when one has been assigned in the AI Voice Console; otherwise empty.
languagestringDetected language of the segment.
language_probabilitydoubleConfidence of the language detection for the segment.
textstringThe transcribed text of the segment.

summaries

ColumnTypeDescription
timelongUnix epoch seconds of recorded_at.
uuidstringStable identifier for this summary row.
recording_idstringThe recording this summary belongs to. Join to recordings.id.
organization_idstringYour organization's identifier.
recorded_atstringISO 8601 timestamp of the underlying recording.
summary_textstringThe AI-generated summary.
action_itemsarray<string>AI-extracted action items.
inferred_namestringAI-inferred title for the recording.

devices

ColumnTypeDescription
timelongUnix epoch seconds of the last heartbeat (or provisioning time if the device has never reported).
uuidstringStable identifier for this device row.
serial_numberstringThe device serial number.
organization_idstringYour organization's identifier.
statusstringCurrent device status (e.g., ACTIVE, LOCKED).
device_modelstringDevice model (e.g., Note Pro, NotePin S).
firmware_versionstringFirmware version currently installed.
assigned_user_emailstringEmail of the member the device is assigned to.
assigned_user_namestringDisplay name of the member the device is assigned to.
assigned_atstringISO 8601 timestamp when the device was assigned.
provisioned_atstringISO 8601 timestamp when the device was provisioned.
last_heartbeat_atstringISO 8601 timestamp of the device's most recent status report.
last_sync_atstringISO 8601 timestamp of the device's most recent sync with the mobile app.

Prerequisites

Before running an export, make sure you have:

  • An Enterprise Administrator account on Treasure AI Voice.
  • The integration enabled for your organization (see below).
  • A Treasure Data CDP API key that holds the IMPORT role and can write to the target database.
  • A destination database in your Treasure Data CDP. The export writes to the tables you specify within that database, creating them on first write.
Use a write-only key, not your Master key

Provide a dedicated write-only API key scoped to the destination database and limited to the IMPORT role. Do not use your Master key — it grants full account access and far exceeds what an export needs. The key you supply is used only to write events for a single export run; it is held in memory for the duration of the run and is never stored, logged, or read back.

Because the export writes to whatever destination the supplied key can reach, treat the Enterprise Administrator role and the keys used here as part of your data-governance controls — restrict who holds the role and which databases the key can write to.

Japan region only

Treasure AI Voice exports to the Japan (AP01) region of Treasure Data CDP only. Make sure your destination database lives in the Japan region; keys and databases in other regions will not accept the export.

Enabling the integration

The integration is off by default. To turn it on:

  1. Sign in to the AI Voice Console as an Enterprise Administrator.
  2. Open the Export page.
  3. Select the Treasure Data CDP destination.
  4. Click Enable export.

If you do not see the option to enable it, contact your Treasure AI representative.

Running an export

  1. On the Export page, with Treasure Data CDP selected, enter:
    • API Key — your Treasure Data CDP API key (IMPORT role).
    • Database — the destination database name (for example, ai_voice_export).
  2. (Optional) Expand Advanced to customize:
    • Recordings table and Transcript segments table names (defaults: recordings, transcript_segments).
    • From / To date range to limit which recordings are exported. The range applies to when each recording was captured, and the To date is inclusive through the end of that day.
  3. Click Export.

The AI Voice Console reports progress while it reads your recordings, joins transcript data, and sends the events to Treasure Data CDP. A typical run completes in under a minute.

Date range and devices

The From / To range filters recordings, transcript segments, and summaries. The devices snapshot always reflects your full fleet, so you will see device rows even when no recordings match the selected range.

Understanding the result

Each run finishes in one of these states:

ResultMeaning
DoneAll rows in scope were accepted by Treasure Data CDP. The summary shows how many recordings and segments were sent.
Done with some rejectionsThe export completed, but Treasure Data CDP rejected some rows. The summary shows the accepted and rejected counts. Review the audit log or your Treasure Data CDP table receipts to investigate the rejected rows.
No recordings to exportNothing matched the selected scope — either there are no completed recordings yet, or the date range filtered them all out. (A device snapshot may still be sent.)
API key rejectedTreasure Data CDP did not accept the API key. Double-check it and try again.
API key lacks the IMPORT roleThe key is valid but cannot write events. Ask your Treasure AI administrator to grant the IMPORT role to the key, or use a key scoped to the destination database.
A recording is too large to sendA recording's transcript exceeded the 1 MB per-event size limit (typically recordings over 3 hours). The recordings row for that recording was rejected; the export completed with a partial status. The recording's rows in transcript_segments are present in your CDP from this run — join on recording_id to reconstruct the full transcript. To avoid the error on future runs, narrow the date range to exclude that recording, or contact your Treasure AI representative.

Every export run — including its outcome and the row counts — is recorded in the Audit Logs under the TD_CDP_EXPORT event type. The API key is never written to the audit log.

Querying the exported data

Because each table shares recording_id (recordings.id), you can reconstruct any view of your meeting data in your CDP. For example:

  • Join summaries to recordings on recording_id to get summaries alongside the full recording metadata.
  • Join transcript_segments to recordings on recording_id, ordered by segment_index, to reconstruct or analyze the conversation utterance by utterance.
  • Pivot transcript_segments on speaker_label (or speaker_id) to analyze talk time per participant.
  • Join recordings to devices on device_serial_number = serial_number to attribute conversations to devices and assigned users.
Refreshing data

To keep your CDP current, re-run the export periodically over the relevant date range and deduplicate on uuid in your downstream models. Re-running over an overlapping date range will add duplicate rows, because the export always appends and does not track previously exported recordings. Deduplicate by keeping the most recent row per uuid — for example:

WITH ranked AS (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY uuid ORDER BY time DESC) AS rn
  FROM your_table
)
SELECT * FROM ranked WHERE rn = 1