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.)
Active Tables
AAMPE_CONTACT_PROFILES
AAMPE_CONTACT_PROFILES
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?)
The propensity arrays contain scores that sum to one and look like the following:
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?)
| Column | Type | Description |
|---|---|---|
contact_id | STR | Unique person identifier |
propensities_offering | ARRAY | User propensities for each offering |
propensities_valueproposition | ARRAY | User propensities for each value proposition |
propensities_tone | ARRAY | User propensities for each tone label |
propensities_timing | ARRAY | User propensities for each timing window |
propensities_channel | ARRAY | User propensities for each channel |
User Profiles - Example Queries
AAMPE_MESSAGE_EVENTS
AAMPE_MESSAGE_EVENTS
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.
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.
| Column | Description | |
|---|---|---|
aampe_message_id (pk) | STR | Aampe’s unique identifier for a message event |
provider_message_id | STR | The event identifier from the message provider (e.g. Braze). Not available for all message providers. |
contact_id | STR | Unique person identifier |
message_timestamp | TIMESTAMP | When the message was sent |
received_timestamp | TIMESTAMP | When the message provider confirmed a successful delivery. |
message_timezone | STR | Timezone for message_timestamp |
message_formula_id | INT | Numerical Identifier for a message formula (called “messages” in the Aampe composer.) |
message_formula_name | STR | Name for a message formula (called “messages” in the Aampe composer) |
message_content | STRUCT | title: title of messagebody: main message content |
message_diversity_score | FLOAT | Computed 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_baseline | FLOAT | Computed by Aampe. This is the reward Aampe expects to observe if the agent does nothing. |
channel_assignment_id | STR | Unique decision ID for channel selection |
channel | STR | Channel |
timing_assignment_id | STR | Decision ID for timing selection (potentially a joint decision with channel) |
timing_label_assigned | STR | label_set: the decision being made (typically “day_time” for timing decisions)label_id: numeric ID for the timing labellabel_name: human-friendly name for the timing labelscore: Model score for timing-decision modelassignment_type: description of the model output (is it exploratory or not) |
trigger_id | STR | Identifier for trigger associated with message. There is always a trigger id, even if the message was not triggered by an event. |
messaging_type | STR | Either “controlled” (scheduled message blasts). Or “automated” which means an agent decided the message to send and when to send it. |
copy_assignment_id | STR | Decision ID for message copy elements |
tags | ARRAY | Array of tags associated with the message event |
message_to | STR | Delivery to address |
message_from | STR | Delivery from address |
message_date | DATE | Date of message_timestamp - for easier partitioning when needed |
click_action | STR | Type: what happens when the message is clicked (e.g. deeplink) Value: deeplink URL or other api call resulting from click |
image_url | STR | Image URL (when not included in message_content) |
reward_delta | FLOAT | The extent to which the message event outperformed expectations (given by reward_baseline). |
trigger_name | STR | Name of trigger (or else “no trigger”) |
copy_assignment | STR | action_set_family: the agents decision set (typically “copy” for copy decisions) action_set: Label groups such as value proposition, offering, … action_name: the specific labelprobability: mean-concentration parameter of the Beta distribution for the chosen actionaggregated_signal: another mean-concentration parameter of the Beta distribution for the chosen action |
Aampe Messages - Example Queries
AAMPE_MESSAGE_ATTEMPTS
AAMPE_MESSAGE_ATTEMPTS
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.| Column | Description | |
|---|---|---|
aampe_message_id (pk) | STR | Aampe’s unique identifier for a message event |
provider_message_id | STR | The event identifier from the message provider (e.g. Braze). Not available for all message providers. |
contact_id | STR | Unique person identifier |
message_timestamp | TIMESTAMP | When the message was sent |
message_date | DATE | Date of message_timestamp - for easier partitioning when needed |
message_timezone | STR | Timezone for message_timestamp |
channel | STR | Channel |
message_formula_id | INT | Numerical Identifier for a message formula (called “messages” in the Aampe composer.) |
message_formula_name | STR | Name for a message formula (called “messages” in the Aampe composer) |
trigger_id | STR | Identifier for trigger associated with message. There is always a trigger id, even if the message was not triggered by an event. |
copy_assignment_id | STR | Decision ID for message copy elements |
message_content | STRUCT | title: title of messagebody: main message content |
tags | ARRAY | Array of tags associated with the message event |
delivery_status | STR | Whether or not the message was successfully delivered |
AAMPE_CONTACT_EVENTS_PARTIAL
AAMPE_CONTACT_EVENTS_PARTIAL
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_clickedaampe_email_clickedaampe_email_openedaampe_email_unsubscribedaampe_email_bounced
_partial suffix. | Column | Description | |
|---|---|---|
event_instance_id (pk) | STR | Aampe’s unique identifier for an event occurance event |
event_name | STR | The event name (as seen in the Aampe composer). |
contact_id | STR | Unique person identifier |
event_timestamp | TIMESTAMP | When the message was sent |
event_date | DATE | Date of event_timestamp |
metadata | STRUCT | Numerical Identifier for a message formula (called “messages” in the Aampe composer.) |