Choose a data source
JustAI needs two kinds of data about your customers. Customer profiles describe each person: their user ID, email address, and traits such as plan or signup date. Customer events record what each person does, such as completing an order. This page compares the ways to send both and recommends a path for common setups. When you finish, you know which source guide to follow and what your team and your JustAI team each do.
Where your data goes
Section titled “Where your data goes”Every source ends in one of two places:
- The data APIs. The Identify API creates and updates profiles. The Track API records events. Segment, RudderStack, Hightouch, and your own backend all send the same Identify and Track requests, so the rules in Send customer profiles and Send customer events apply to each of them.
- CSV upload. For small profile lists, you upload a CSV in the JustAI app. If you need a file import from Amazon S3, discuss a customer-specific setup with your JustAI team before building the export.
JustAI does not connect to your warehouse or database. Data from Redshift, Snowflake, BigQuery, or another warehouse arrives as API calls through a tool such as Hightouch, or through a customer-specific file import whose availability your JustAI team confirms.
Message engagement is separate. Iterable reports it through the system webhook. Klaviyo and Customer.io report it through the setup in Delivery. Your data source does not send those delivery events.
Compare the options
Section titled “Compare the options”| Source | Best for | What you configure | Who does the work | Profiles | Events | Freshness |
|---|---|---|---|---|---|---|
| Segment | Teams that already track with Segment | A Webhooks (Actions) destination with an Identify mapping and a Track mapping | Your engineering or data team, in Segment | Yes | Yes | As events happen |
| RudderStack | Teams that already track with RudderStack | Two Webhook destinations, each with a transformation | Your engineering or data team, in RudderStack | Yes | Yes | As events happen |
| Hightouch | Customer data that lives in a warehouse | HTTP Request syncs from a profile model and an event model | Your data team, in Hightouch | Yes | Yes | Each sync run |
| Amazon Redshift | Teams whose source of truth is Redshift | Hightouch syncs to Identify and Track | Your data team | Yes | Yes, through Track | Each sync run |
| Amazon S3 file import planning | Teams evaluating a customer-specific file import | Confirm availability, format, access, and acceptance checks before exporting | Your data team and your JustAI team | Confirm before planning | Confirm before planning | Confirm before planning |
| CSV upload | Small lists, pilots, and testing | A CSV file with an email column, uploaded in Users > Import users | Anyone on your team, in the JustAI app | Yes | No | When you upload |
| Direct API | Teams that send data from their own backend | Identify and Track calls from your servers | Your engineering team | Yes | Yes | As events happen |
How the paths differ
Section titled “How the paths differ”Three differences decide which path fits a given job.
Track requests can affect published journeys regardless of event time. A live Track event can start a journey, end a Wait until step, or trigger an exit. That is true for events from your backend, Segment, RudderStack, or Hightouch. Do not replay past events through Track: an old timestamp does not prevent a matching event from affecting a published journey. Contact your JustAI team before planning an import of event history.
Identify changes can start profile-change journeys. Confirm with your JustAI team whether A profile attribute changes is available for your organization. When available, an Identify call that changes a trait can start that journey. Profile updates from a CSV upload do not start those journeys. For a customer-specific file import, confirm the behavior with your JustAI team.
CSV uploads never clear values. A blank cell leaves the stored value as it is. For a customer-specific file import, confirm how blanks and deletions work before sending data. To blank a value, send the trait as null with the Identify API. The trait stays on the profile with a null value. A CSV upload also stores every value as text.
Recommended paths
Section titled “Recommended paths”Start from the tools you already run:
- You already use Segment or RudderStack. Forward Identify and Track calls to JustAI. You set up destinations in your CDP, and your app code does not change. Follow the Segment or RudderStack guide.
- You track events with Segment or RudderStack, and your customer attributes live in a warehouse. Forward Identify and Track calls from your CDP, and send warehouse attributes with a Hightouch profile sync or discuss a customer-specific file import with your JustAI team. Follow the Segment or RudderStack guide, then the Hightouch or Amazon S3 file import guide. Set up both sources as described in Combine sources.
- Your customer data lives in a warehouse, and you use Hightouch. Sync a profile model to the Identify API and an event model to the Track API. Follow the Hightouch guide.
- You use Redshift without a reverse ETL tool. Send profiles through Identify and live events through Track from your backend, or discuss a customer-specific export with your JustAI team. Follow the Amazon Redshift guide.
- You use Snowflake, BigQuery, or another warehouse without a reverse ETL tool. Send profiles through Identify and live events through Track from your backend, or discuss a customer-specific file import with your JustAI team. Follow the Amazon S3 file import guide.
- You have a large population to load before launch. Plan an Identify backfill, or ask your JustAI team whether a customer-specific file import can meet your needs. See Load your existing customers.
- You have engineers and no CDP. Call the Identify and Track APIs from your servers. Follow the Direct API guide.
- You need a small list now, for a pilot or a test. Upload a CSV in the app. Include a
user_idcolumn so later API calls reach the same people. Follow the CSV upload guide.
If none of these fits, start with the direct API. It supports profiles and events, and every forwarding tool sends the same requests.
If you use mParticle or another tool that is not listed here, talk to your JustAI team before you plan your rollout.
Combine sources
Section titled “Combine sources”You can combine paths. A common split is events from a CDP such as Segment, and customer attributes from a warehouse through Hightouch. Confirm any customer-specific file import before adding it to this setup. Set up the sources this way:
- Send the same user ID from every source. Otherwise JustAI treats the records as different people. See Identity and consent.
- Keep sending Identify calls from your CDP, with
emailin the traits. CDP events arrive as they happen, but warehouse syncs and file loads run on a schedule. Without CDP Identify calls, a new customer’s first event can start a journey before the warehouse sends their profile. If no profile has the event’s user ID, email steps can’t send to that person. - Decide which source owns each trait. Send each trait from one source only. For example, your app’s Identify calls send
emailandfirst_name, and the warehouse sendsplanandlifetime_value. When two Identify calls write the same trait, the call with the latertimestampwins, so two sources that send the same trait overwrite each other.
Load your existing customers
Section titled “Load your existing customers”Before launch, load a profile for every customer you plan to reach. Choose one of two ways:
- Identify backfill. Your Hightouch profile sync sends every existing row on its first run, or your backend sends one Identify call for each customer. Use this when you already send profiles with the Identify API. As a conservative starting point, consider 10 or fewer concurrent requests. This is not an enforced limit; confirm the rate with your JustAI team. A backfill that changes traits can start journeys whose entry is A profile attribute changes, so finish the backfill before you publish those journeys.
- Customer-specific file import. Before building an export, ask your JustAI team to confirm availability, format, update rules, timing, and acceptance checks for your population. See Plan an Amazon S3 file import.
Before the first full run, send your JustAI team the number of profiles and, for an Identify backfill, your planned concurrency. Your JustAI team confirms the rate or discusses whether a customer-specific file import can meet your needs.
If you combine a customer-specific file import with Hightouch or another live source, agree on the cutover and verification procedure with your JustAI team before either runs.
