← All articles
Jun 12, 20263 min read

Push Notifications With EQ: Writing Copy That Doesn't Sound Like a Robot

  • push notifications
  • UX writing
  • product design
  • Expo
  • North
Push Notifications With EQ: Writing Copy That Doesn't Sound Like a Robot

Push notifications are where product voice goes to die. The medium trains us toward machine-speak — "Your circle has 1 update" — because notifications are usually built as events that happen to have text attached. For North, a family app whose entire premise is warmth without surveillance, that default would quietly poison the product. So the notification system in the admin back office was built around a different premise: a push is a message from someone, and the system should know who.

25 presets, written like a person

The notify dashboard ships with 25 preset templates — written once, deliberately, with what I can only call EQ: supportive, warm, low-pressure copy for the moments a family app actually has. Check-ins that don't read as checking up. Nudges that sound like care instead of demand. Reconnect prompts that don't shame anyone for a dead battery.

Presets beat freeform for a reason that isn't laziness: notification copy is written in the worst possible conditions — quickly, mid-task, by whoever is operating the dashboard. Freeform means the tone is whatever mood the operator was in; a curated library means the voice was designed once, calmly, and every send inherits it. It's the same argument as a design system, applied to words. The operator picks intent; the library guarantees register.

Every template supports {name} personalization — resolved server-side per recipient against their first name, in both title and body. "Sara, someone's thinking of you" and "Someone's thinking of you" are one variable apart and a category apart in how they land. Generic push is ambient noise; named push is mail.

Sender personas: who is this from?

The system's most interesting field is the sender. A notification can speak as North (the app voice — system messages, feature notes) or as a circle member ("Mom asked you to check in"). The distinction sounds cosmetic and is actually architectural: the same delivery pipeline carries two completely different social objects. A reminder from the app is ignorable software; the same reminder from your mother is a relationship event. Choosing the persona per message means the platform's social weight is spent deliberately — and sparingly, because impersonating humans for engagement is exactly how apps burn trust. (North's always-on nudge channel follows the same ethic: the system speaks honestly about who wants what.)

The plumbing that lets the copy matter

Under the warm layer, the mechanics are strict, because a heartfelt message that arrives three times — or never — is worse than a robotic one:

  • Expo chunking. The Expo push API caps batches at 100 messages; the sender partitions automatically, so a circle-wide send and a single nudge run the same code path.
  • Personalization before chunking. {name} resolution happens per-recipient as payloads are built — the batch is a batch of individual messages, not a broadcast with a template attached.
  • Respecting preferences with one exception. Per-user sound/silent preferences are honored across notification types; only safety-relevant nudges normalize an "off" to default — the deliberate, documented exception covered in the reconnect post.

The principle

Most teams A/B-test notification timing and frequency and never touch the words. But the notification is the only part of your product that interrupts someone's life uninvited — copy quality there compounds more than anywhere else. Write the library once, with care. Personalize by name. Know who's speaking. The engineering is a day; the difference is the user's thumb hovering between "open" and "turn off notifications" — the binary every push product actually lives or dies on.

WRITTEN BY

Shahzaib Muhammad Akram

Senior Frontend EngineerCyberjaya, Malaysia