Skip to content
Back to blog
email9/14/2026

Where Campaign Contacts Actually Come From

Campaign audiences in the email app pull from a separate Go-side contact store — not from CareSuite customer records, even though both surfaces answer to "CRM."

emailcontactsarchitecture

Here's a reasonable assumption that turns out to be wrong in this platform: that the email app's campaign audiences are built from your CareSuite customer data. They aren't. It's worth being precise about this, because the platform genuinely has more than one thing that could plausibly be called "the CRM," and assuming they're the same store is an easy way to be confused about why a campaign's contact list doesn't match what you'd expect from your CareSuite customers.

The email app's contact list route (/api/contacts/list) is explicit about this in its own code comments: CRM contacts are a genuinely different data source than the campaigns, templates, settings, and queue data that live in the email-marketing-worker's own D1 database. Contacts, specifically, live in Go's own database, through internal/marketing/crm — a third, separate contact store from both CareSuite (frontend/apps/crm) and the email app's own D1 tables.

So when you're building a campaign audience in the email app, you're pulling from that Go-side contact store, not from CareSuite's customer, lead, or opportunity records. If you've been managing customer data primarily in CareSuite and expect it to show up automatically as a campaign audience in the email app, it won't — those are two separate systems that happen to share a category name.

This isn't a bug to route around; it's a real architectural boundary worth understanding before you build a campaign and get confused about why your audience list looks thin, or different, from what CareSuite shows you. If your workspace uses both apps, treat contact data as something you may need to maintain in more than one place, or plan deliberately around, rather than assuming "CRM" means the same store no matter which app you're standing in.