Skip to content

02 Get your data in

Join business data

How conversations get joined to revenue, orders and other business data, and how to make sure the join works.

Optional. You don't need this to get started. Back to the quickstart

Joining what customers said to what they did is where most of the value is: which complaints come before a cancellation, which locations’ reviews track their sales, which bot failures cost the most.

1. As extra columns on your conversation file. Any column you upload with your conversations (plan, region, order value, store id) is stored with each conversation in the structured_metadata table. The agent can filter and group your Dimensions by it immediately. Best for a few fields that describe the conversation or the customer at that moment.

2. As a separate business data file. Upload revenue, orders or account history under Structured data as its own table. Best when the data has its own grain (one row per order, per account per month) or changes over time. Business data comes in by file upload only today; an API for it is on the roadmap.

For the second route, both sides need a shared id:

  • an account id or customer id
  • an order number
  • a store or location id
  • a hashed customer email, with the same hash on both sides, when email is the only shared key

Never join on a raw email address, phone number or name: Dimension Labs has a policy of not ingesting or storing any PII (PII redaction).

Put that id in your conversation file as an extra column. The column names can differ between the two files; the values must match exactly. Leading zeros, case and stray spaces all break a join, and Excel’s scientific notation destroys long ids. The file checker’s join test shows how many keys match before you upload either file.

The agent works out the join itself, from the fields that overlap between your conversations and the business table. You can upload almost any file or table under Structured data. What makes the join work is a shared identifier, such as an account id, on both sides. You can also name the columns yourself: “Join my conversations to the ‘Closed Won’ table on Account ID.”

next.dimensionlabs.ioProduct footage
Conversations joined to business data. Recorded in the product.
transcriptsOne row is a message
  • sessionId
  • text
  • incoming
  • timestamp
One table per promptOne row is a session
  • session key
  • Dimension
  • Dimension
  • …
structured_metadataOne row is a conversation
  • conversation key
  • account_id
  • plan
  • region
Your business fileIts own grain
  • account_id
  • renewal_date
  • arr
  • status
Joined on the conversation key, by the platformJoined on a shared id you include, such as an account id
TableWhat’s in itOne row is
transcriptsEvery message: text, direction, timeA message
structured_metadataThe extra columns you uploaded with your conversationsA conversation
One table per promptThe Dimensions from that promptA conversation
Your business fileWhatever you uploadedWhatever its grain is

Dimension tables and structured_metadata join on the conversation key. The agent handles this for you; ask it to show you the join it used.

Ask the agent:

  • “How many conversations matched a row in my orders table, and how many didn’t?”
  • “Show me five conversations that didn’t match, with their account ids.”

A low match rate nearly always means the ids differ in format between the two files.