Documentation → Guides → Audiences

Audiences: the complete guide

How to split your subscribers into groups (by interest, country, ZIP code or any other criterion) and send each one only the pushes they care about.

Why audiences

Sending everything to everyone works while you send one push a day. As volume grows, irrelevant notifications become the number one cause of unsubscribes: the sports reader who gets three politics pushes a day first ignores them, then revokes the permission, and at that point they are gone for good. Audiences solve exactly this: every push reaches only the people who showed interest in that topic. The typical result is higher CTR and a flatter unsubscribe curve.

How it works: tags

Everything rests on one simple idea: subscribers accumulate tags, audiences are filters on tags.

A tag is a key-value pair attached to a subscriber. Your site assigns it with one line of JavaScript, available wherever the Natom snippet is installed:

natom.tag('cat_sports', '1')

When a reader visits a page containing that line, from that moment they count as interested in sports. Tags accumulate: someone who reads sports and then politics will carry both tags, and can belong to both audiences.

What about visitors who browse before subscribing? An example: Mark reads three sports articles and only accepts notifications on the fourth. Those three tags arrived when Mark was not a subscriber yet, but they are not lost: the snippet parks them in his browser and sends them all together at subscription time. The result: Mark joins your audience already profiled as a sports reader, instead of as an "empty" subscriber. The browsing that precedes subscription, which is precisely when a reader shows you their interests, is never wasted.

The recommended convention for categories

Use one tag per category with a fixed value of 1, not a single "category" tag with a variable value:

// YES: interests accumulate
natom.tag('cat_sports', '1')
natom.tag('cat_politics', '1')

// NO: each page overwrites the previous one
natom.tag('category', 'sports')   // then 'politics' erases 'sports'

The key format is free, but cat_ + a lowercase name with underscores is the convention that also enables automatic RSS routing.

A complete WordPress example

On WordPress, one line in your article template (usually single.php) emits a tag for each category of the article:

<?php foreach (get_the_category() as $cat): ?>
  <script>natom.tag('cat_<?php echo sanitize_title_with_dashes($cat->slug, '', 'save') ?>', '1')</script>
<?php endforeach; ?>

From that moment every reader profiles themselves through what they read, for every present and future category, with no further maintenance.

Letting readers choose: explicit preferences

So far a reader joins an audience because the site tags them (by hand with natom.tag(), or automatically through the WordPress plugin based on what they read). For some publishers that is not enough: they want readers to declare the categories they care about. Natom does that with explicit preferences.

Enable them from the prompt editor (Sites › Prompt, "Let readers pick categories") by listing the categories, or from the WordPress plugin by picking among the site's categories. From then on:

Choices live on the reader's device and on their subscriber profile: unticking a box removes them from that audience immediately.

Three things to know about panel categories

Creating an audience

Dashboard → SitesAudience button on your site's row. An audience is a name plus a filter:

Audiences: yoursite.com

NameFilterMembers
Sports readerscat_sports = 112,480
Italygeo = IT44,102

One-click geo audiences (your subscribers' countries):

✓ Italy (44,102)+ Switzerland (1,204)+ Germany (511)

One-click audiences from tags:

✓ Sports (12,480)+ Politics (9,771)+ Economy (4,310)
The Audience window: existing segments, plus one-click creation from the countries and tags already present among your subscribers.

Two ways to create a segment:

On creation, everyone who already matches the filter joins instantly (automatic backfill). From then on, every new subscriber or new tag updates memberships on its own, in real time.

Sending to an audience

In New push, select one site only: the Audience menu unlocks with that site's segments and their member counts.

New push

Audience (with a single site selected)

Sports readers (12,480) ▾
The Audience selector in the send form: the push goes only to the chosen segment's members.
The menu stays disabled with multiple sites selected: an audience belongs to a specific site, so targeted push and cross-domain push are alternatives.

Geo targeting

Every subscriber automatically receives the system tag geo with their country (e.g. geo = IT), detected from the browser time zone at subscription. No code needed: the data is already there for everyone.

Example 1: a push for one country only

Typical scenario: a site with international readers. A promotion valid in one country, or a national service announcement, makes no sense for the others, and every irrelevant push burns the patience of whoever receives it.

  1. Sites → Audience: the "one-click geo audiences" block lists your subscribers' real countries with counts. Click + Italy: audience created, members already in.
  2. New push → select that site only → pick Italy in the Audience menu → send.

New push

Audience (with a single site selected)

Italy (44,102) ▾

Title: Train strike on Thursday: the guaranteed time slots
The push reaches the 44,102 Italian subscribers. The 1,715 abroad are not disturbed.

A geo-targeted send: the same mechanics as any push, only the selected audience changes.

Example 2: ZIP codes and cities (local targeting done right)

To go below country level (ZIP, city, region) automatic detection is not enough: anyone promising ZIP codes "from the browser" is estimating from the IP address, with huge errors. The accurate path is tagging where your site actually knows the data because the user provided it. The classic example is a local news portal with a "weather in your area" box or edition preferences:

<!-- when the user picks their area in a form -->
<script>
document.querySelector('#area-form').addEventListener('submit', function () {
  natom.tag('zip', document.querySelector('#zip-field').value)
})
</script>

<!-- or on the pages of a local edition -->
<script>natom.tag('edition', 'brooklyn')</script>

From there, ZIP codes and editions appear in the "one-click audiences from tags" block with counts, and "Local news: Brooklyn" becomes a push that reaches Brooklyn readers only. It is the most accurate method there is, because the data comes from the user, not from a guess.

Audiences + RSS: automatic segmented pushes

This is where the pieces click together and the platform starts working by itself. If you connect your site's RSS feed, the "route to audiences by category" option makes every new article become a push targeted at its own readership, with nobody ever pressing a button.

How the routing thinks

When an article is published, Natom reads its categories from the feed and converts them with the same tag convention (lowercase, spaces become underscores, cat_ prefix). Then it looks for the audience filtering on that tag:

Category in the feedTag looked upWho gets the push
Sportscat_sportsthe "Sports" audience, if it exists
Higher Educationcat_higher_educationthe matching audience, if it exists
Local news (no audience created)cat_local_newsall subscribers (fallback)

Two behaviors worth knowing: with multiple categories, the first one with a matching audience wins; if none matches, the push goes to everyone, so no article is ever left without a readership.

Setting it up, once

  1. Your template tags readers by category (the WordPress line above). Within days, audiences populate on their own as people read.
  2. You create the audiences from the "one-click from tags" block: Sports, Politics, Economy... one click each.
  3. You connect the feed from the site's RSS button, with automatic sending and routing enabled:

RSS: yoursite.com

FeedAuto-sendAudienceEvery
yoursite.com/feedyesby category15m

☑ send new articles automatically
☑ route to audiences by category

The feed configuration with routing enabled: from here on, everything is automatic.

What happens next, every day

Your newsroom publishes as it always has. Natom checks the feed, and for every new article:

New article in the feed · category Sports

"Derby postponed for bad weather: the new dates"

↓ push created and sent automatically to

Audience: Sports (12,480 subscribers) · the other 33,337 are not disturbed

The automatic flow: article → category → audience → targeted push. Zero clicks.

The compounding benefit over time: every reader receives their own topics only, CTR climbs, unsubscribes drop, and the newsroom never had to learn a new tool. Prefer supervision? Turn auto-send off: articles arrive as drafts already routed in the Campaigns section, and you approve them with one click.

Frequently asked questions

Can a subscriber belong to multiple audiences?

Yes, and it is the desired behavior: tags accumulate and so do memberships. Someone reading both sports and politics receives pushes for both topics.

What about subscribers with no tags?

They remain reachable through pushes to "All subscribers". Audiences never cut anyone off the main channel: they add precision, they do not remove reach.

Do audiences cost extra?

No. They are included in the plans that feature them, with no per-send costs whatever the segment size.

Can I delete an audience?

Yes, from the Delete button in the Audience window. Subscribers and their tags are untouched: only the grouping disappears.

← Back to documentation · Go to dashboard →