Skip to main content

Overview

Aampe is ready to share granular data about users, messages, and other events straight to your data warehouse. While there are many potential applications, customers generally find these datasets useful for
  • Reporting and monitoring
  • Causal inference and offline message evaluation
  • Inputs into various AI models (llm prompts, ML features, etc.)
Expand the tables below to see column descriptions, example queries, and more.

Active Tables

Aampe generates a profile for each user that has interacted with an agent.

The propensity for each label within a given label set reflects the agent’s estimate for how often that label will outperform the other label options. (If I were to simulate 100 messages from Aampe for each user, how often would the agent choose each label?)
ColumnTypeDescription
contact_idSTRUnique person identifier
propensities_offeringARRAYUser propensities for each offering
propensities_valuepropositionARRAYUser propensities for each value proposition
propensities_toneARRAYUser propensities for each tone label
propensities_timingARRAYUser propensities for each timing window
propensities_channelARRAYUser propensities for each channel
The propensity arrays contain scores that sum to one and look like the following:
[
	{"label_id":5678, "propensity":0.5432, "label_name":"Food"},
	{"label_id":6789, "propensity":0.4568, "label_name":"Travel"}
]

User Profiles - Example Queries

// for a given user, what's their propensity for each offering label

SELECT 
  contact_id, 
  label_name, 
  propensity
FROM aampe_contact_profiles,
UNNEST(propensities_offering)
WHERE contact_id = '1a2b3c4d'
ORDER BY propensity DESC
Agents save the details of each decision they make, including the parameters of the statistical models, sampling results, and the final decision result.

With a row for every message event, this table helps with day-to-day reporting and monitoring. It also plays a key role in offline analysis and causal inference.
ColumnDescription
aampe_message_id (pk)STRAampe’s unique identifier for a message event
provider_message_idSTRThe event identifier from the message provider (e.g. Braze). Not available for all message providers.
contact_idSTRUnique person identifier
message_timestampTIMESTAMPWhen the message was sent
received_timestampTIMESTAMPWhen the message provider confirmed a successful delivery.
message_timezoneSTRTimezone for message_timestamp
message_formula_idINTNumerical Identifier for a message formula (called “messages” in the Aampe composer.)
message_formula_nameSTRName for a message formula (called “messages” in the Aampe composer)
message_contentSTRUCTtitle: title of message
body: main message content
message_diversity_scoreFLOATComputed by Aampe. When several message alternates are available within a chosen set of labels, we send the alternate with the best message diversity score. This ensures messages vary their language even if the offering or value proposition is the same.
reward_baselineFLOATComputed by Aampe. This is the reward Aampe expects to observe if the agent does nothing.
channel_assignment_idSTRUnique decision ID for channel selection
channelSTRChannel
timing_assignment_idSTRDecision ID for timing selection (potentially a joint decision with channel)
timing_label_assignedSTRlabel_set: the decision being made (typically “day_time” for timing decisions)
label_id: numeric ID for the timing label
label_name: human-friendly name for the timing label
score: Model score for timing-decision model
assignment_type: description of the model output (is it exploratory or not)
trigger_idSTRIdentifier for trigger associated with message. There is always a trigger id, even if the message was not triggered by an event.
messaging_typeSTREither “controlled” (scheduled message blasts). Or “automated” which means an agent decided the message to send and when to send it.
copy_assignment_idSTRDecision ID for message copy elements
tagsARRAYArray of tags associated with the message event
message_toSTRDelivery to address
message_fromSTRDelivery from address
message_dateDATEDate of message_timestamp - for easier partitioning when needed
click_actionSTRType: what happens when the message is clicked (e.g. deeplink)
Value: deeplink URL or other api call resulting from click
image_urlSTRImage URL (when not included in message_content)
reward_deltaFLOATThe extent to which the message event outperformed expectations (given by reward_baseline).
trigger_nameSTRName of trigger (or else “no trigger”)
copy_assignmentSTRaction_set_family: the agents decision set (typically “copy” for copy decisions)
action_set: Label groups such as value proposition, offering, …
action_name: the specific label
probability: mean-concentration parameter of the Beta distribution for the chosen action
aggregated_signal: another mean-concentration parameter of the Beta distribution for the chosen action

Aampe Messages - Example Queries

// for each message, what were the labels, label parameters, etc.?

SELECT 
    aampe_message_id,
    message_date,
    action_set,
    action_name as label_name,
    probability,
    aggregated_signal
FROM 
    aampe_message_events,
    UNNEST(copy_assignment)
WHERE 
    aampe_message_id = '1234-asdf'
Not all messages are delivered successfully. Some messages fail between Aampe and the message provider. Other messages fail between the message provider and the customer. The aampe_message_attempts table provides message-level details on which messages were delivered successfully.
ColumnDescription
aampe_message_id (pk)STRAampe’s unique identifier for a message event
provider_message_idSTRThe event identifier from the message provider (e.g. Braze). Not available for all message providers.
contact_idSTRUnique person identifier
message_timestampTIMESTAMPWhen the message was sent
message_dateDATEDate of message_timestamp - for easier partitioning when needed
message_timezoneSTRTimezone for message_timestamp
channelSTRChannel
message_formula_idINTNumerical Identifier for a message formula (called “messages” in the Aampe composer.)
message_formula_nameSTRName for a message formula (called “messages” in the Aampe composer)
trigger_idSTRIdentifier for trigger associated with message. There is always a trigger id, even if the message was not triggered by an event.
copy_assignment_idSTRDecision ID for message copy elements
message_contentSTRUCTtitle: title of message
body: main message content
tagsARRAYArray of tags associated with the message event
delivery_statusSTRWhether or not the message was successfully delivered
This table contains events delivered to Aampe from the message provider. Depending on your message provider, channels, and Aampe settings Aampe, these events may include:
  • aampe_clicked
  • aampe_email_clicked
  • aampe_email_opened
  • aampe_email_unsubscribed
  • aampe_email_bounced
This is a subset of all Aampe events visible in the composer, hence the _partial suffix. 
ColumnDescription
event_instance_id (pk)STRAampe’s unique identifier for an event occurance event
event_nameSTRThe event name (as seen in the Aampe composer).
contact_idSTRUnique person identifier
event_timestampTIMESTAMPWhen the message was sent
event_dateDATEDate of event_timestamp
metadataSTRUCTNumerical Identifier for a message formula (called “messages” in the Aampe composer.)