Skip to main content
How-to

AtData Email Intelligence Integration for Demographic Insights

Introduction

The AtData Email Intelligence Integration enables UltraCart merchants to enrich customer profiles with valuable demographic data such as age, gender, and income range.
This enrichment supports smarter segmentation, more personalized upsells, and deeper customer analytics across UltraCart’s ecosystem.

When paired with the Data Warehouse (BigQuery) and AI-Powered Report Builder, AtData insights can be visualized in dashboards that reveal patterns in customer demographics, behavior, and purchasing trends.

Tip: Use AtData demographic enrichment to identify who your most profitable customers are, tailor offers to their preferences, and optimize marketing ROI.


Prerequisites

  • AtData InstantData account (Sign up here)

  • API Key from AtData

  • UltraCart merchant or admin access

  • (Optional) BigQuery Data Warehouse and AI Report Builder enabled


Configuration Steps

1. Create an AtData Account and Generate an API Key

  1. Go to InstantData.

  2. Create or log in to your AtData account.

  3. Generate an API Key.

  4. Choose which demographic fields you want (e.g., Age, Gender, Income).

Warning: AtData operates on a per-lookup pricing model. Configure only the attributes you plan to use to manage costs.


2. Connect AtData to UltraCart

  1. Log in to your UltraCart Merchant Account.

  2. Navigate to:

    Configuration → Integrations → AtData Email Intelligence
  3. Paste your API Key into the field.

  4. Select the demographic attributes to query.

  5. Click Save.

UltraCart will automatically enrich customer records as new orders are created or customers are added.


3. Data Refresh Cycle

  • UltraCart queries AtData once per year per unique email address.

  • Returning customers are automatically re-queried after 12 months.

  • Retrieved data is stored in your BigQuery dataset towerdata_email_intelligence.

Note: Only the demographic attributes you select will appear in the dataset.


4. Using Demographic Data in StoreFront Upsells

You can use demographic triggers to target upsell offers.

  1. Go to StoreFront → Upsells.

  2. Create or edit an Upsell Path.

  3. In Advanced Conditions, set filters such as:

    • age > 25 AND gender = "Female"

    • age BETWEEN 35 AND 54 AND gender = "Male"

Examples:

  • Offer “Luxury Skin Care Kits” to females aged 25–40.

  • Suggest “Performance Nutrition Packs” to males aged 30–45.


Analyzing AtData Results

1. Analyze with BigQuery

Data from AtData populates the towerdata_email_intelligence table, which can be joined with uc_orders and uc_customers tables for insight-rich reporting.

Example SQL Queries

Average Order Value (AOV) by Gender

SELECT
td.gender,
ROUND(AVG(o.summary.total.value), 2) AS avg_order_value
FROM `my-project.my_dataset.uc_orders` o
JOIN `my-project.my_dataset.towerdata_email_intelligence` td
ON o.billing.email_hash = td.email_hash
WHERE o.payment.payment_dts IS NOT NULL
GROUP BY td.gender
ORDER BY avg_order_value DESC;

Customer Distribution by Age Range

SELECT
CASE
WHEN td.age BETWEEN 18 AND 24 THEN '18–24'
WHEN td.age BETWEEN 25 AND 34 THEN '25–34'
WHEN td.age BETWEEN 35 AND 44 THEN '35–44'
WHEN td.age BETWEEN 45 AND 54 THEN '45–54'
ELSE '55+'
END AS age_range,
COUNT(DISTINCT o.billing.email_hash) AS customer_count
FROM `my-project.my_dataset.towerdata_email_intelligence` td
JOIN `my-project.my_dataset.uc_orders` o
ON o.billing.email_hash = td.email_hash
WHERE o.payment.payment_dts IS NOT NULL
GROUP BY age_range
ORDER BY customer_count DESC;

Revenue by Gender and Age Group

SELECT
td.gender,
CASE
WHEN td.age BETWEEN 18 AND 34 THEN '18–34'
WHEN td.age BETWEEN 35 AND 54 THEN '35–54'
ELSE '55+'
END AS age_group,
SUM(o.summary.total.value) AS total_revenue
FROM `my-project.my_dataset.towerdata_email_intelligence` td
JOIN `my-project.my_dataset.uc_orders` o
ON o.billing.email_hash = td.email_hash
GROUP BY td.gender, age_group
ORDER BY total_revenue DESC;

2. Explore with AI Report Builder

KPIDescriptionSuggested Chart
KPIFormula (SQL Expression)Description / Notes
Average Order Value (AOV)SUM(o.summary.total.value) / COUNT(DISTINCT o.order_id)Measures average spend per order.
Revenue per CustomerSUM(o.summary.total.value) / COUNT(DISTINCT o.billing.email_hash)Indicates total revenue divided by unique customers.
Repeat Purchase Rate(COUNT(DISTINCT CASE WHEN order_count > 1 THEN o.billing.email_hash END) / COUNT(DISTINCT o.billing.email_hash)) * 100Percentage of customers who made more than one purchase.
New vs Returning CustomersCASE WHEN order_rank = 1 THEN 'New' ELSE 'Returning' ENDCategorizes customers by purchase sequence.
Revenue by Age GroupSUM(o.summary.total.value) grouped by td.age rangesLinks revenue to demographic segments.
Customer Distribution by GenderCOUNT(DISTINCT td.email_hash) grouped by td.genderProportion of customer base by gender.
LTV (Customer Lifetime Value)SUM(o.summary.total.value) per td.email_hashAggregates total lifetime revenue per customer.
Conversion Rate by Gender(COUNT(DISTINCT o.order_id) / COUNT(DISTINCT s.session_id)) * 100 grouped by td.genderMeasures conversion from session to order per gender.
AOV Growth (MoM)(current_month_aov - previous_month_aov) / previous_month_aov * 100Month-over-month growth rate for AOV.

Tip: Save standardized SQL expressions in your report templates to maintain consistency across all dashboards.


FAQ

Q: How often does UltraCart query AtData?
A: Once per year per email. The system re-queries automatically when a customer repurchases after 12 months.

Q: Can I backfill data for existing customers?
A: Yes. Purchase bulk lookup credits from AtData and contact UltraCart Support.

Q: Where is demographic data stored?
A: In your BigQuery dataset (towerdata_email_intelligence).

Q: Can I use demographics in StoreFront Communications?
A: Yes, demographic fields can be used for audience segmentation and conditional messaging.

Q: Can dashboards be shared automatically?
A: Yes. Schedule dashboards for automatic delivery via email in PDF format.


Next Steps


Related Documentation

Was this page helpful?