---
title: Newsletter Segments, Tags and Targeted Sends | SendHQ
description: Build newsletter segments from tags, lists, signup date, engagement, country and custom fields. Send to your most engaged readers first, then to more without repeats.
canonical: https://sendhq.cc/newsletter/segments
last-updated: 2026-11-06
updated: 2026-11-06
---
# Send each issue to the right readers

Segments pick who gets an issue from what you know about each reader: their tags, lists, custom fields, when they signed up and how they have engaged. You can send to everyone in a segment, or to the first few thousand most engaged readers and add more later, and nobody gets the same issue twice.

[Start for $19 a month](https://sendhq.cc/app?plan=indie_hackers_marketing&price=19) [SendHQ for newsletters](https://sendhq.cc/newsletter.md)

## Who it is for

- **Indie founders** who want to email beta users separately from people who only joined the waitlist.
- **Creators running a newsletter** who send a paid-workshop announcement only to readers who opened something in the last 90 days.
- **SaaS teams sending product updates** who send a feature update only to customers on a given plan, using a custom field set from their app.
- **Agencies** who keep each client's audience tagged and filtered inside one workspace.

## Build a segment

Combine conditions and choose whether a reader must match **all** of them or **any**. The number of matching subscribers updates as you build.

- **Tags and lists:** has or does not have a tag; in or not in a list.
- **Status and source:** subscribed or not, and whether they came from a signup form, the API or an import.
- **Signup date:** before or after a date, or within the last N days.
- **Engagement:** opened or clicked in the last N days, ever or never; number of opens; sends in a row without an open.
- **Country**, from where readers opened or clicked.
- **Email and name:** address contains or ends with, name set or not.
- **Custom fields** of type text, number or date: equals, contains, greater or less than, before or after, set or not set.

## Send to part of a list first

- **First N people.** Limit an issue to a number of readers instead of the whole audience.
- **Most engaged first.** Order that limited audience by engagement (a click counts three times an open, then the most recent activity), or by signup date.
- **Send to more.** Later, add the next group from the same audience with one action. SendHQ skips everyone who already got the issue, so nobody receives it twice.

## Tags, custom fields and merge tags

Each contact can carry up to 50 tags and up to 50 custom fields, typed as text, number or date. Fields work in merge tags, such as `{{fields.company | your team}}`, and in segment conditions. Set them from the dashboard, a CSV import, or your app through the API.

## Contacts in bulk

- Filter contacts by list, status (including dormant), tag, source, signup date, a search, or a saved segment.
- Act on the selection or on everything that matches: tag, untag, add to a list, remove from a list, unsubscribe or delete. Deleting asks you to confirm the exact count first.
- Export a CSV with email, name, status, tags, signup date, source, consent, opens, clicks and custom fields, in the same column layout the importer reads, so an export imports back cleanly.
- Import a CSV with a tags column, or tag everyone in the file at once. Each file can hold up to 5,000 rows; split larger lists into several files.

## From the API and your AI agent

Ask an agent to build a segment, check its size and point the next issue at it. The same features are in the REST API under `/api/v1`, the `sendhq` CLI, and the MCP server, so Claude, ChatGPT or Cursor can do this work for you through the hosted connector at `https://mcp.sendhq.cc/mcp`. See the [campaigns API reference](https://sendhq.cc/docs/api-reference/campaigns.md).

REST API

```
# How many readers match before you save it
curl https://sendhq.cc/api/v1/segments/preview -X POST \
  -H "Authorization: Bearer $SENDHQ_API_KEY" -H "Content-Type: application/json" \
  -d '{"match":"all","conditions":[{"field":"tag","op":"has","value":"customer"},{"field":"opened","op":"in_last_days","value":90}]}'

# Send to the 2,000 most engaged readers in that segment first
curl https://sendhq.cc/api/v1/broadcasts/brd_123 -X PATCH \
  -H "Authorization: Bearer $SENDHQ_API_KEY" -H "Content-Type: application/json" \
  -d '{"audience":{"segment_id":"seg_123","order":"engaged","limit":2000}}'

# Later: the next 3,000, skipping everyone who already got it
curl https://sendhq.cc/api/v1/broadcasts/brd_123/send-more -X POST \
  -H "Authorization: Bearer $SENDHQ_API_KEY" -H "Content-Type: application/json" -d '{"limit":3000}'
```

## Honest limits

- Engagement conditions use human opens and clicks only. Apple Mail Privacy Protection loads every image on its own, so those loads are filtered out, and a reader who reads in Apple Mail without clicking can look like a non-opener. Keep that in mind before excluding “never opened” readers.
- Segments work on contact data. Events in your own product reach SendHQ only if you write them to tags or custom fields through the API.
- Imports take up to 5,000 rows per file, and a bulk action covers up to 10,000 contacts at a time.

## Questions

**Can I send a newsletter to only part of my list?**

Yes. Send to a saved segment, limit the issue to the first N readers, and order them by engagement or signup date. Send to more later adds the next readers without repeating anyone.

**What can a segment filter on?**

Tags, lists, status, signup source and date, opens and clicks in the last N days, number of opens, sends without an open, country, email address, name, and custom text, number and date fields, matched on all or any conditions.

**Can I import tags from another platform?**

Yes. A tags column in the CSV is read on import, and you can also add tags to everyone in the file. Each import file can hold up to 5,000 rows.

**Does exporting contacts lose any data?**

The CSV export uses the same column layout the importer reads, including tags, status, consent and custom fields, so a file you export can be imported back as it is.
