Customer 360

A table centered around your core customer that makes self-service analytics possible

Single source of truth

You don’t have to search through many tables or spend hours figuring out why numbers don’t match. All your company data is in one data model making it easy to find and always accurate.

Simple traceability

No web of dependencies. All reporting and analyses tables depend on a single customer 360 table in your warehouse.

Minimal maintenance

Changes to BI tables (adding new columns, updating logic, etc.) can be done in a few clicks without adding any complexity to the definition.

Reinvented joins

Bridging data across systems doesn’t require custom engineering. You can bridge data from disparate systems easily and without defining foreign keys.

Customer 360 is based on the activity schema standard

Narrator's customer 360 approach adheres to the activity schema standard for all of its data modeling.
To learn more please see the full specification.
How it Works

Building your customer 360

Each row is an action taken by your customer in time (can be a client 360, company 360, vehicle 360, etc…)
Step 1

Define customer actions (activities) using simple SQL transformations

Logic is simple and easy to understand (~25 lines of code)
Activities are the building blocks that are used to assemble tables
All company definitions are managed in one place
Each activity follows a standard format. For more information on the 11 columns that make up each activity check out our ‎docs.


SELECT              AS
  , o.created_at    AS ts
  , NULL            AS source
  , NULL            AS source_id
  ,         AS customer
  , 'completed_order' AS activity
  , d.code          AS feature_1 -- discount code
  , NULL            AS feature_2
  , NULL            AS feature_3
  , (o.total_price - o.total_discounts) AS revenue_impact
  , NULL            AS link
FROM shopify.order  AS o 
LEFT JOIN shopify.order_discount_code d
  ON (d.order_id =
  o.cancelled_at is NULL
  and is not NULL
SELECT                 AS activity_id
  , t.created_at       AS ts
  , 'zendesk'          AS source
  , t.submitter_id     AS source_id
  ,            AS customer
  , 'submitted_ticket' AS  activity
  , t.subject          AS feature_1 -- subject
  ,               AS feature_2 -- ticket_id
  , t.description      AS feature_3 -- description
  , NULL               AS revenue_impact
  , 'https://{ZENDESKURL}/' ||  AS link
FROM zendesk.ticket AS t 
JOIN zendesk.user AS u
  ON ( = t.submitter_id)
WHERE t.subject <> 'SCRUBBED'
SELECT            AS activity_id
  , a.timestamp     AS ts
  , null            AS source
  , null            AS source_id
  , m.email_address AS customer
  , 'opened_email'  AS activity
  , c.title         AS feature_1 -- Campaign Name
  ,          AS feature_2 -- list name
  , c.type          AS feature_3 -- campaign type
  , NULL            AS revenue_impact
  , c.archive_url   AS link
FROM mailchimp.campaign_recipient_activity a 
JOIN mailchimp.member m
  ON ( = a.member_id and m.list_id = a.list_id)
JOIN mailchimp.list l
  ON ( = a.list_id)
JOIN mailchimp.campaign c
  ON ( = a.campaign_id)
WHERE a.action = 'open'
  p.message_id          AS activity_id
  , p.timestamp         AS ts
  , 'segment'           AS source
  , p.anonymous_id      AS source_id
  , p.user_id           AS customer
  , 'viewed_page'       AS activity
  , p.context_page_path AS feature_1
  , p.referrer          AS feature_2
  , NULL                AS feature_3
  , NULL                AS revenue_impact
  , p.context_page_url  AS link
FROM segment.pages p
New Activity created
Completed Order
Narrator Logo
Narrator inserts the activity data into your customer 360 table
Step 2

Narrator builds your customer 360 using those SQL transformations

What Narrator does:
  • Maintains your customer 360 table in your warehouse
  • Updates it with the SQL definitions created by your data team
  • Applies robust identity resolution
  • Runs nightly reconciliation
  • Inserts and updates according to the schedule you set
  • Runs automated testing to notify you if your data changes dramatically
Completed Order
Viewed Page
Submitted Ticket
Viewed Page
Viewed Page
Completed Order
Opened Email
Started Session
Recieved Email
Viewed Page
Viewed Page
Shipped Product
How it Works

Using your customer 360

Combine activities in your customer 360 to generate any table for BI, reporting, and analysis
Narrator’s core innovation is that every data table can be constructed using a combination of activities and relationships between those activities.
Using the Narrator platform, quickly assemble any table to:
Answer any question
Materialize any table for reporting or BI
Build the dataset for your next analytics or data science project

Email Attribution

Q: How many orders are we driving through our emails?
Learn more about how these components generate queries in our docs.
"Narrator provides value by consolidating and organizing our activity data in such a way that's meaningful and flexible so that we can quickly create a dataset to answer relevant business questions."
Creative Market
Dylan Levan - Senior Marketing Analyst
Creative Market
Narrator Logo

Expect more from your self-service tools

We're serious about going from question to data-driven decision in minutes. We'll show you with your data!
  • Product
  • Data Platform
  • Analyze Button
  • Narratives
Narrator © 2022
TermsPrivacyData Processing AddendumCookie PolicyManage CookiesCalifornia Privacy Notice