Notify docs
Limits

Limits and retention.

What the preview allows, what happens at the limit, and how long Notify keeps each record.


1

Preview limits

Per workspace unless stated. Need more for a real workload? Write to hello@productcraft.co with the workspace and the limit: most of these are raised per workspace.

Notify preview limits
WhatLimit
Recipients per send call1,000
data payload16 KB as JSON (413 DATA_TOO_LARGE)
Accepted recipients3,000 per minute per workspace (429 RATE_LIMITED with Retry-After); raisable on request
Bulk recipient import1,000 recipients per call, 20 calls per minute
Recipient-token mints3,000 per minute per workspace: cache a token per user for most of its lifetime
Sends per recipient30 per minute for non-critical types and a separate 30 for critical ones (the excess is skipped as rate_limited)
Client (recipient-token) calls60 per minute per recipient
Real-time streams5 per recipient, 500 per workspace during the preview (429 STREAM_LIMIT)
Notification types / categories200 / 50 per workspace
Devices per recipient20 active (registering a 21st prunes the least recently seen)
Device registrations10 per recipient per hour; a token can move to another recipient at most 3 times a day (429 DEVICE_MOVE_LIMIT)
Template size32 KB per channel and locale
Push payloadAPNs 4 KB, FCM 4 KB, web push about 3.9 KB of JSON (checked before sending; payload_too_large)
Notification TTL24 hours by default (ttl_seconds on the type); retries stop at the TTL
Scheduled sendsend_at or delay_seconds within the type TTL
EmailMail’s limits apply (60 a minute, 600 an hour, 10,000 a day per workspace). Notify keeps to them: the excess waits for the next window (email_budget), up to 10,000 waiting emails per workspace. Email pauses automatically above 0.1 % complaints or 5 % hard bounces over the last 500 sends.
Recipient token lifetime1 hour by default, at most 24 hours
Webhook endpointsthe shared per-workspace limit of every ProductCraft product

2

What happens at a limit

  • Request limits answer 429 RATE_LIMITED with Retry-After. The Node SDK waits and retries with the same Idempotency-Key.
  • Per-recipient budgets and type throttles never fail your call: the excess delivery is skipped as rate_limited or throttled, so a noisy type cannot flood a user, and a critical type has its own budget.
  • Sizes and counts answer 413 or 422 LIMIT_EXCEEDED before anything is stored.
  • Every workspace also shares the per-IP limit of the API edge (20 requests a second, 600 a minute per client IP).

3

Retention

How long Notify keeps each record
RecordKept for
Notifications, deliveries and attempts (including the rendered push text)30 days
Inbox items90 days, or 30 days after the recipient archives them
Devicesuntil pruned (removed 7 days later), or after 270 days without a registration
Daily statistics13 months
Recipients, preferences and preference historyuntil you erase the recipient or delete the workspace
Push credentialsuntil you delete or replace them; a replaced key’s ciphertext is wiped after 24 hours

Erasing a recipient removes their data sooner; see Erasure and retention, which also says what ProductCraft Mail keeps for emails. Deleting the workspace deletes everything.


4

Preview terms

Notify is free during the preview and has no SLA. It is hosted in the EU (DigitalOcean, Frankfurt, fra1). Pricing after the preview will be announced before it ends.