If you’re using Segment to drive targeted email campaigns, you already know that “custom traits” can unlock a ton of personalization. But honestly, it’s easy to get lost. Naming conventions, messy data, and overcomplicated setups can ruin what should be a straightforward way to send better emails. This guide is for marketers, data folks, and anyone juggling Segment and email tools who wants to get custom traits right—and skip the pain.
Why Custom Traits Matter for Targeted Email (and Where It Goes Wrong)
Custom traits are little data nuggets (think: user interests, loyalty tier, last product viewed) that you track in Segment and send to your email platform. They’re the key to sending truly relevant messages instead of spray-and-pray blasts.
Done right, they let you: - Personalize content and offers - Build smarter segments - React in real-time to user behavior
But most teams trip up by: - Tracking too many traits (half of which never get used) - Using vague or inconsistent naming - Failing to keep traits in sync across tools - Creating traits that are too granular or too broad
Translation: You end up with a mountain of data, but none of it’s actually useful for email.
Step 1: Start With Real Campaign Goals
Before you even open your Segment dashboard, get clear on what you’re actually trying to do. Don’t just track everything because you can.
Ask yourself: - What types of emails do we want to send? (E.g., cart abandon, upgrade pitch, product recommendations) - What user info would actually change what we send or how we target? - Are we trying to trigger emails, build audiences, or just add a bit of personalization?
Pro tip: If you can’t picture a specific email that would use a trait, don’t bother tracking it—for now.
Step 2: Define Traits That Actually Matter
Now, make a list of traits you’ll need. Less is more. Focus on ones that: - Are clearly tied to your campaign goals - Won’t change every five minutes (avoid tracking “last page seen” unless you’re building real-time triggers) - Are easy to keep up-to-date
Examples of good traits:
- plan_type
(for upsell campaigns)
- last_purchased_category
(for recommendations)
- email_opt_in
(for compliance)
What to skip: - Traits you can’t trust (e.g., data that’s flaky or often missing) - Vanity data (do you really need to know their shoe size if you sell software?)
Step 3: Nail Down Naming Conventions Before You Ship Anything
This step sounds boring, but it’s where most setups fall apart. If you use different trait names in different tools, you’ll end up with “planType,” “plan_type,” and “PlanType” all floating around—and good luck figuring out which is which a year from now.
Do this:
- Use snake_case (e.g., last_purchase_date
)—it’s readable and consistent.
- Document every trait and what it means. A simple Google Doc or Notion page works.
- Stick to a single tense and format (e.g., always use is_subscribed
not sometimes is_subscriber
).
What to ignore: Fancier naming conventions you find online. Just pick something sensible and stick to it.
Step 4: Map Traits in Segment (the Right Way)
When you’re ready, go into Segment and add your custom traits using the “identify” call (for user-level data) or “group” call (for account-level stuff).
How to set a trait: javascript analytics.identify('userId123', { plan_type: 'pro', last_purchased_category: 'books', email_opt_in: true });
Tips: - Only update traits when something meaningful changes (like a plan upgrade). No need to send the same data on every pageview. - Make sure you’re sending the same trait names to your email platform (Braze, Customer.io, Iterable, etc.)—check their docs to confirm.
Common mistakes: - Overwriting traits with old data (be careful not to reset “email_opt_in” to false by accident) - Sending traits as properties on the wrong calls (e.g., as event properties instead of user traits)
Step 5: Sync Traits to Your Email Platform—and Test
Just because a trait exists in Segment doesn’t mean it’s magically usable in your email tool. Each email platform has its own quirks and limits.
What to check: - Are the traits showing up as expected in your email tool’s user profiles? - Are they updating in real time, or do you need to wait for a sync? - Does your email platform support the data types you’re sending? (For example, some tools can’t handle nested objects or arrays.)
How to test: - Create a test user and run through the whole flow—from signup to trait update to email. - Try building a segment or trigger using your new trait. If it doesn’t show up, double-check your mapping and naming.
Pro tip: Set up alerts or dashboards to spot traits that stop syncing or look weird. Broken data is worse than no data.
Step 6: Use Traits in Campaigns—But Don’t Overdo It
Now you’ve got traits in place, use them for targeting, triggers, and email content. But don’t try to personalize every pixel—target the things that actually move the needle.
Good uses:
- Triggering a winback email only for users with last_purchase_date
older than 90 days
- Showing a special offer to users with plan_type: free
- Personalizing recommendations by last_purchased_category
Bad uses: - Overcomplicating your emails with too many dynamic variables - Creating dozens of micro-segments that are impossible to manage
If you find yourself spending more time fiddling with traits than sending actual campaigns, it’s time to simplify.
Step 7: Clean Up and Iterate
Traits aren’t set-and-forget. Over time, you’ll find some are useless or out-of-date. Make cleanup a regular habit.
How to keep things tidy: - Review your trait list every quarter. Kill off anything you’re not using. - Audit your campaigns—are you still using the traits you thought you would? - Update documentation when traits change or get deprecated.
Ignore: The urge to track everything “just in case.” If you need it later, you can always add it.
What Actually Works (and What Doesn’t)
Focus on: - Tracking only what you’ll use - Documenting your traits - Keeping naming consistent - Testing the full flow (Segment → email tool → live campaign)
Skip: - Over-engineered schemas - Chasing “real-time” for traits that don’t need it - Fancy dashboards no one checks
Keep It Simple and Iterate
Don’t let custom traits become a side project that eats up all your time. Start with a handful of well-chosen traits that actually support your campaigns. Document them, keep them in sync, and review them regularly. As your needs grow, add more—but only if they’ll make your emails better or your targeting smarter.
It’s not about having the cleanest data model. It’s about sending emails people actually want to get. Start simple, ship fast, and tidy up as you go.