Audiences & contacts

Every contact. The right audience.

Import a spreadsheet or sync contacts from your application, then group them into reusable audiences. Keep names, email addresses and typed properties together, review who is deliverable and choose the audience for your next campaign.

Create your account, then add contacts and build your first audience.

Set up in:
Cursor

Contacts & audiences

Interactive example

Audience members
3
Shared contact records
Alex Morgan
alex@example.com
Email
Sam Rivera
sam@example.com
Email
Jordan Lee
jordan@example.com
Email
Contact property
first_name
Personalization
Hello, Alex.

Select an audience to see how the same contact can belong to more than one group. Example records.

One contact record. Attributes that don't drift.

A contact holds a person’s email address, phone number and properties. An audience groups those contacts for a campaign. Add someone to multiple audiences and their details stay together in one record. It is all part of the Bird Email platform.

Five things that keep your data clean.

The data model does the bookkeeping, so your lists don't rot.

  1. 01

    One record per person.

    A workspace contact can hold an email address, a phone number or both, plus names, an external ID and custom data.

  2. 02

    Audiences are membership.

    An audience is a set of contacts you add and remove freely. Attributes always live on the contact, never copied onto the list.

  3. 03

    Typed property registry.

    Define your custom fields up front: string, number, boolean, or datetime, with optional fallbacks. Unknown keys and wrong-typed values are rejected at write time.

  4. 04

    Batch upsert up to 1,000.

    Upsert up to 1,000 contacts in a single call, and join them to an audience in the same request.

  5. 05

    Exact-match lookup.

    Find a contact by exact email match, so your own systems can sync without scanning every record.

Get a whole list in with one call.

Batch imports match the identifiers each entry carries and report per-entry outcomes. Upsert up to 1,000 contacts and join them to an audience in one request. When identifiers point to different contacts, review the conflicting entry before retrying. Reconcile completed and failed entries when resuming an interrupted import.

import.ts
202
// Upsert up to 1,000 contacts and add them to an audience at once.
const result = await bird.contacts.batch({
  audience_ids: ["adn_01krdgeqcxet5s7t44vh8rt9mg"],
  contacts: [
    { email: "ada@example.com",   first_name: "Ada",   data: { plan: "growth" } },
    { email: "grace@example.com", first_name: "Grace", data: { plan: "free" } },
  ],
});

// Per-contact results come back in submission order.
for (const item of result.data) {
  console.log(item.entry.email, item.status);
}

See the audiences behind your next campaign.

Import a spreadsheet, review its field mapping and organize contacts into reusable groups. Names and typed properties stay on the contact; membership determines which audience they belong to.

Bird dashboard showing newsletter subscribers and customer audiences with example membership counts.

Product screenshot with example records. Review audience membership and deliverability before sending.

Works with the rest of Email.

Target the audiences you build here from a broadcast, and the same contacts receive transactional mail through the send API.

Questions about contacts and audiences

Where do my contacts and audiences live?
Contacts belong to a workspace. A record can hold an email address, a phone number or both, plus an external ID and typed properties. Audiences reference those records, so updating a contact keeps its data consistent across the lists it belongs to.
How can I import a list?
Upload a CSV, TSV or Excel file in the dashboard and review the field mapping before importing. You can assign contacts to audiences during import. For application syncs, batch-upsert up to 1,000 contacts per request through the API or CLI.
Are audiences dynamic segments?
The documented audience workflow uses static membership: you add or remove contacts. A broadcast resolves the audience when sending begins. Use your application or import workflow to keep membership current.
What types of contact properties are supported?
Define text, number, boolean and datetime properties with optional fallback values. Use those properties for recipient personalization and keep the typed values consistent when importing or syncing contacts.

Put it into practice.

Continue with the documentation, guides and examples for this topic. Resources are in English.

Get an implementation brief

Bring the right people into your next campaign.

Start with your contacts, keep their properties and preferences together, and build the audience you want to reach.

Create your account, then add contacts and build your first audience.

Start with one channel.
Add the others when you're ready.

A test API key is yours immediately. Production unlocks when you add a payment method and verify a sender.

Using Claude Code, Cursor, or Codex? Copy a setup prompt and your agent installs the Bird CLI and skills for you. Pick yours:

Cursor