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.
Contacts & audiences
Interactive example
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.
- 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.
- 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.
- 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.
- 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.
- 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.
// 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.

Product screenshot with example records. Review audience membership and deliverability before sending.
Shared customer data
Use the same contact foundation across your messaging workflow.
Continue with the workflow you need
Choose the product or guide that matches the next job.
Questions about contacts and audiences
Where do my contacts and audiences live?
How can I import a list?
Are audiences dynamic segments?
What types of contact properties are supported?
Put it into practice.
Continue with the documentation, guides and examples for this topic. Resources are in English.
Use your audience
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.