Customer messaging campaigns

Plan the message. Control the audience. Know what happened.

SignalBX brings campaign content, reusable templates, segment or manual audiences, immediate and scheduled dispatch, and recipient-level delivery outcomes into one accountable workflow for WhatsApp, Telegram, and Discord.

Draft workspace

Prepare campaign identity, channel, content, tags, and schedule.

Reusable templates

Start from system or tenant templates and resolve named variables.

Channel-aware content

Validate message and media shapes for the selected sender.

Flexible audiences

Add a manual list, active saved segment, or inline audience rules.

Audience snapshots

Materialize eligible recipient identifiers before dispatch begins.

Immediate or scheduled

Send an eligible campaign now or claim it after a future time.

Recipient outcomes

Track pending, sent, failed, and skipped state for every recipient.

Campaign reporting

Compare campaign, active, audience, and sent-message totals by period.

One campaign control plane

Keep content, audience, timing, and results in the same record.

A campaign moves through explicit lifecycle states while preserving its selected channel, content, snapshotted recipients, schedule, counts, ownership, tags, and source metadata.

Campaign operations workspace Illustrative data · tenant-scoped campaign
Weekend loyalty offerWhatsApp · customer outreach in progress
Content validSending
Audience2,184snapshotted recipients
Sent1,932provider accepted
Failed17recipient failures
Progress89%recipient records processed
Campaign setupDispatch in progress
Message · text

Thanks for being one of our most engaged customers. Your weekend offer is ready.

WhatsApp content validation passed
ChannelWhatsAppFirst-party outbound sender
Audience sourceSaved segmentRecent VIP customers
Schedule2 Aug · 10:00Claimed for dispatch
Tagsloyalty · weekendCampaign organization
Last updated by campaign managerContent locked while sending

Audience with provenance

Know how every recipient entered the campaign.

Use an explicit manual list, resolve an active saved segment, or apply inline audience rules. SignalBX records the source; segment-based selection materializes channel-compatible contacts before sending.

  • Retain the saved segment ID and display name as campaign context
  • Require the contact channel to match the campaign channel
  • Ignore duplicate recipient identifiers within the same campaign
Campaign audienceSource + snapshotted recipients

Recent VIP customersSaved segment · WhatsApp

2,184 recipients
AM

Aarav MehtaWhatsApp · +91 •••• 1428

Pending
NK

Nina KapoorWhatsApp · +91 •••• 8402

Sent
LM

Leo MartinWhatsApp · +33 •••• 8821

Sent
MS

Maya ShahWhatsApp · +91 •••• 3117

Failed
Recipient identityContact link retained where available
Audience sourceSaved segment
Segment
Recent VIP customers
Channel
WhatsApp
Matched
2,184
Inserted
2,184
Duplicates
Not inserted
SnapshotDispatch in progress

An explicit campaign lifecycle

Draft, schedule, send, and finish with a state everyone can read.

Lifecycle guards keep campaign changes predictable. A campaign needs content, a channel, and recipients before dispatch; terminal state reflects the actual recipient outcomes.

01

DraftCompose content and materialize recipients

Editable
02

Scheduled or immediateChoose a future time or send now

Authorized
03

SendingDispatch pending recipients with bounded concurrency

In progress
04

Terminal resultSent, partially sent, failed, or cancelled

Accounted for

Reusable message foundations

Create from a template without hiding the campaign.

System and tenant templates carry category, content, channel compatibility, variables, and tags. Creating a campaign resolves supplied placeholders into a normal, independently managed draft.

templateId channel variables content tags
POST/api/v1/broadcasts/from-template
{
  "templateId": "2bf7c54b-8ac1-4bd5-a713-6e014728d9b0",
  "name": "Weekend loyalty offer",
  "channel": "whatsapp",
  "variables": {
    "customer_name": "there",
    "offer_details": "20% off selected items",
    "expiry_date": "Sunday at midnight"
  },
  "tags": ["loyalty", "weekend"]
}

Illustrative campaign creation from a seeded marketing template.

  • Variable substitution
  • Channel validation
  • Tenant scoped

Content that respects the channel

Choose one delivery channel—and use content it actually supports.

Each campaign targets one configured outbound channel. Content is normalized and validated before the campaign is created or changed, using the same capability boundary as direct messages.

WA

WhatsApp

Text, images, video, audio, documents, stickers, locations, contacts, templates, and interactive payloads.

Media limits · MIME and extension checks
TG

Telegram

Text, images, video, audio, documents, stickers, locations, contacts, and polls.

URL media rules · poll validation
DC

Discord

Text and image content through the registered Discord outbound sender.

Text · image
TP

Templates

Marketing, transactional, notification, onboarding, or general templates can seed campaign content.

System library · tenant templates

Recipient-level accountability

A campaign total is useful. The delivery record behind it is better.

Each snapshotted recipient carries its own state, contact link, SignalBX message ID, provider message ID, error detail, and timestamps—so partial outcomes remain visible instead of collapsing into one campaign status.

Recipient delivery ledgerSearchable · sortable · exportable with permission
Weekend loyalty offer2,184 recipient records
AllPendingSentFailedSkipped
RecipientStatusSignalBX messageProvider messageSent at
Aarav Mehta+91 •••• 1428Sentmsg_81f2…wamid.HBg…
Nina Kapoor+91 •••• 8402Sentmsg_30a7…wamid.HBg…
Leo Martin+33 •••• 8821Pending——
Maya Shah+91 •••• 3117Failed——
Search by recipient identifier Sort by recipient, contact, status, sent, created, or updated time

Campaign work, made explicit

The decisions behind dependable customer outreach.

Launch

“Should this go now or later?”

Send a prepared campaign immediately or persist a future schedule for atomic claiming when it becomes due.

Immediate + scheduled dispatch
Audience

“Who exactly will receive it?”

Inspect the snapshotted recipient rows sourced from a manual list, saved segment, or inline audience rules.

Explicit audience source
Content

“Will this media work on the channel?”

Validate supported content types, required URLs or fields, and channel-specific media constraints before dispatch.

Shared outbound validation
Partial result

“Some sends failed. What now?”

Keep successful and failed recipient outcomes separate and finalize the campaign as partially sent when both exist.

Recipient-level truth
Cancellation

“Can we stop a campaign already in motion?”

Cancel scheduled or sending campaigns and mark recipients still pending as skipped while preserving completed outcomes.

Cooperative cancellation
Reporting

“Are we sending more than last period?”

Compare campaign count, active campaigns, total audience, and sent-message totals against the preceding equal period.

Current + previous KPIs

Dispatch with guardrails

Permissioned, idempotent, retry-aware, and observable.

Campaigns cross provider boundaries at scale. SignalBX keeps authorization, dispatch state, concurrency, duplicate protection, retries, failures, and export safety explicit throughout the send.

Scoped permissions
Reading, exporting, creating, sending or scheduling, and managing campaigns use distinct tenant permissions.
Recipient requirement
A campaign cannot send or schedule until at least one recipient has been materialized.
Idempotent sends
Every recipient send receives a stable campaign-and-recipient idempotency key through the outbound pipeline.
Bounded concurrency
Recipient delivery uses a configurable default with optional per-channel concurrency overrides.
Retry handling
Retryable rate-limit, provider, network, and timeout outcomes receive bounded attempts before failure.
Durable failures
Exhausted recipient failures retain attempt count, error detail, job identity, and campaign scope in PostgreSQL.
Atomic scheduling
Due scheduled campaigns are claimed with row locking so concurrent scheduler instances do not claim the same work.
Safe exports
Campaign and recipient CSV exports are permissioned, no-store, row-limited, and neutralize spreadsheet formulas.

Customer campaign questions

What teams need to know before dispatch.

Which channels can SignalBX campaigns send through?

The registered first-party outbound senders are WhatsApp, Telegram, and Discord. Each campaign selects one channel, and its content is validated against that channel’s implemented capabilities.

Can one campaign send across several channels at once?

No. A campaign has one required channel. Teams can create separate campaigns for different channels so recipient identity, content validation, dispatch limits, and outcomes remain unambiguous.

Where can a campaign audience come from?

Recipients can be added as a manual list or materialized from exactly one active saved segment or inline segment definition. Segment-derived recipients must match the campaign channel and have a non-empty channel user ID.

Does a saved segment stay live after it is added?

No. Matching contacts are snapshotted into campaign recipient rows before sending. Later contact or segment changes do not silently rewrite that recipient list.

What templates are available?

SignalBX seeds marketing, transactional, notification, and onboarding text templates. Tenants can also create general or categorized templates with optional channel, content, variables, tags, and metadata.

Are template variables personalized separately for every recipient?

No. Supplied variables are resolved when the campaign is created from the template. The resulting campaign content is shared by its recipients; this implementation does not perform per-recipient merge-field rendering during dispatch.

How is the final campaign status decided?

When no pending recipients remain, all successful sends produce SENT, a mix of sent and failed produces PARTIALLY_SENT, and all failures produce FAILED. A cancelled campaign retains completed outcomes and marks remaining pending recipients as skipped.

What reporting is available?

Campaign summary reporting returns total campaigns, active scheduled-or-sending campaigns, total snapshotted audience, and messages sent for a selected period with an equal preceding-period comparison and deltas.

Outreach with an operating record

Build every campaign to be clear before send—and accountable after.

Bring channel-aware content, explicit audiences, controlled dispatch, and recipient-level outcomes into one customer messaging workflow.