Audience
Contacts, lists, and segments — where your email already lives
Organize all your contacts in one place without extra fees or CSV exports. Create simple subscriber lists or smart segments that update automatically, so you can email the right people at the right time — with zero per-contact costs.
The problem
Amazon SES stores email addresses, but not your audience.
SES lets you send emails, but it doesn't give you a clean way to manage subscriber traits, build targeted customer segments, or track what users are actually doing.
Without a central hub, subscriber data ends up scattered everywhere — signup dates in your main database, engagement lists in manual spreadsheets, and opt-outs in separate tools that don't talk to each other.
SendOps gives you a complete, unified audience platform built directly on top of your Amazon SES account — so all your subscriber data stays clean, accurate, and in one place.
Contacts
Complete subscriber profiles in one place
Every contact has a single unified record for your entire team — traits, list memberships, consent, and delivery history all together.
Typed attributes
Attributes live in a registry with real types — strings, numbers, booleans, datetimes, enums. Writes are validated against it. No more guessing whether plan is a string or a number this week.
Import, sync, or push
Get contacts in however they exist today: CSV import, sync from your SES contact list, or push from your app through the API. They all land on the same contact.
The contact 360
Open a contact and see everything attached to it: which lists and segments it belongs to, its message timeline, and whether it currently exists in SES.
Deliverability on the record
Engagement and undeliverable status live on the contact itself. If an address bounces or goes quiet, you see it where you'd look first — not in a separate report.
Lists & Segments
Manual lists and smart segments
Organize contacts into static lists or build dynamic segments that update automatically as user behavior changes.
Static lists
Curate custom subscriber groups straight from your dashboard — ideal for beta testers, VIP customers, or manual event signups.
Dynamic segments
Set simple rules based on attributes or actions. As user traits and app events update, subscribers join or leave the segment automatically.
Consent stays synchronized automatically. When someone unsubscribes in SendOps or SES, they stay unsubscribed everywhere — so you never accidentally email someone who opted out.
Your audience data is securely stored in SendOps, scoped to your account, and easily exportable at any time. See our list terms and privacy policy.
SendQL
Segments are queries, not click-paths
SendQL is a real query language over your audience. Attributes, message events, and your product's activities are all first-class — so "trial users who clicked this week but never ordered" is one readable predicate, not twelve dropdowns.
Definitions live where you want. Keep them as files in a connected git repo — PR-reviewed, synced on merge — or manage them in the app. Git holds the definition; SendOps holds the membership.
Plain text, on purpose. A segment is a few lines anyone can read in review — and because it's just text, coding agents can author and maintain segments too.
Trial users showing intent but not converting:
attr.plan = "trial"
and now - attr.signup_date between 3d and 14d
and count(click within 7d) >= 1
and not exists(order)Engaged subscribers who are safe to send to:
subscribed to "newsletter"
and not suppressed
and not exists(complaint within 180d)Activities
Your product's events are audience signals
Email events only tell half the story. What a contact does in your product — signs up, upgrades, uses a feature, places an order — is the half that matters for who should hear from you next.
Send those events to SendOps through the Activity API and they attach to the contact. From there they're segmentable in SendQL — sum(amount of order within 90d) > 500 — and they can trigger workflows, so an upgrade or a quiet week starts the right email on its own.
One stream, two uses. The same activity feeds segment membership and workflow triggers — you send it once.
Next to the email history. Activities land on the same contact record as sends, opens, and clicks — one timeline, not two systems.
An audience layer the whole team can use
The same contacts, lists, and segments — reached the way each person actually works.
For Marketers
Build audiences without filing an engineering ticket. Segments update themselves as attributes and events change — no exported CSV going stale in a shared drive.
For Developers
Audiences as code. Segment definitions are plain text, so they live in your repo, go through PR review, and sync automatically. Contacts and attributes flow in through the API.
For Operators
Consent and suppression in one place. Unsubscribes and opt-outs are mirrored to SES with stricter-wins semantics — a suppressed contact stays suppressed, everywhere.
Your audience, in your platform
Contacts, lists, and segments on top of your own SES account. Not rented from an ESP.
Free plan available. No contact limits. Connects to your SES account in two minutes.