Skip to main content
Understanding six objects explains almost everything in Senderz.

The objects

Workspace

Your tenant. Every contact, campaign, domain and integration belongs to exactly one workspace. A user can belong to several.

Contact

A recipient. Carries identity, consent per channel, tags, custom properties and predictive scores.

Segment

A live filter over contacts. Dynamic segments re-evaluate on read; static segments are a fixed membership list.

Campaign

A one-off send to a segment on a single channel — email, SMS or push.

Flow

A triggered automation. Reacts to events forever with wait timers, branches and multi-channel steps.

Template

Reusable content. Email blocks, raw HTML, SMS text or a push notification.

Public vs internal IDs

Your Workspace ID — the value you send as X-Sender-Tenant — is the workspace slug (a short, human-readable string), not the internal UUID. The API accepts either the slug or the UUID, but the slug is what the UI shows and copies.
Internal foreign keys, JWTs and row-level security use the UUID. You only ever handle the slug.

The send pipeline

Every message — campaign, flow, test or transactional — flows through the same gates in the same order. This is why a bug in a builder can’t produce a non-compliant send: enforcement lives at the worker, not the UI.
1

Suppression

Hard bounces, complaints and unsubscribes suppress a contact within seconds. Suppressed recipients are dropped first. Push suppression is per-browser-endpoint.
2

Consent

The recipient must have recorded opt-in for that channel. Source, IP, timestamp and channel are logged on every consent change.
3

Frequency caps & quiet hours

Per-contact caps shared across channels. Marketing SMS, voice and push to Israeli numbers respect quiet hours and Shabbat. Email is exempt from the legal block.
4

SMS wallet (SMS only)

No tenant SMS reaches a carrier without a wallet authorisation. Push and email have no per-message carrier cost, so no wallet step.
5

DKIM signing (email only)

Signed at the worker using a per-tenant key held in AWS KMS. The private key never leaves KMS.
6

Provider dispatch

Email routes through a failover provider chain; SMS through Israeli carriers; push through Web Push (VAPID); voice through the carrier TTS.

Channels at a glance

Every channel on a contact carries one of four states:
subscribed
Opted in — can receive marketing on this channel.
unsubscribed
Opted out — marketing is blocked; transactional/OTP still allowed.
never_subscribed
No opt-in ever recorded — the conservative default on import.
cleaned
Removed by hygiene (e.g. repeated bounces).

Marketing vs transactional

Transactional mail — order confirmations, password resets, OTP codes — flows through a separate path that bypasses frequency caps and quiet hours. This separation is at the message-type level, not the campaign level. Marketing sends always carry tracking, unsubscribe headers and (where applicable) the SMS wallet debit; transactional sends never do.
Don’t try to send marketing content through the transactional API to skip quiet hours or consent. The compliance gates exist to protect your reputation and keep the platform’s shared carrier accounts in good standing.

Where to go next

Workspaces & team

Roles, multiple workspaces and switching.

Contacts

The contact model in depth.