Three real-world shapes that cover the majority of production communication workloads. Each one is a blueprint — expand on it, mix pieces, or compose multiple blueprints into a single flow.
An event-driven messaging flow reacts to application events — signups, orders, payments, alerts, SLA breaches — and dispatches the right message to the right channel for the right audience.
Arka ingests events from webhooks, queues, or your internal bus, applies routing rules (user preference, geo, language, opt-in status), renders the right template per channel, and dispatches in parallel with retry and fallback built in.
flow: payment-failed-notification trigger: type: event name: payment.failed steps: - route: by: {{ user.preferred_channel }} branches: email: - channel: email template: payment-failed-email fallback: [sms] whatsapp: - channel: whatsapp template: payment-failed-wa fallback: [sms, email] sms: - channel: sms template: payment-failed-sms
When you need to send thousands or millions of messages — campaigns, password resets, announcements, compliance notices — you need rate-limiting, retries, reputation protection, and real-time analytics without building them yourself.
Arka processes a recipient list through a rate-limited queue, applies per-provider and per-destination throttling, handles transient failures with exponential backoff, and streams delivery receipts into its reporting pipeline for live dashboards.
flow: quarterly-campaign trigger: type: batch source: s3://my-bucket/customers-q2.csv rate_limit: per_second: 1000 per_provider: sendgrid steps: - channel: email template: quarterly-update retries: max: 3 backoff: exponential dead_letter: s3://my-bucket/dlq/ provider: sendgrid fallback: [mailgun]
Real customer interactions are rarely one-shot messages. Support threads, appointment confirmations, OTP verification, interactive bots — all require round-trip messaging with state, context, and routing that works across multiple channels.
Arka handles the full conversation lifecycle: outbound message with a reply window, inbound webhook matching, session state, context carry-over between turns, timeouts, and human-escalation handoff. The same flow can start on WhatsApp and finish on email.
flow: support-request session: ttl: 24h store: {{ customer.id }} steps: - channel: whatsapp template: support-ack wait_reply: 10m - intent: provider: llm on: {{ last_reply }} - branch: when: resolved: - channel: whatsapp body: "Glad we could help!" needs_human: - channel: slack to: #support-queue body: "Escalation for {{ customer.id }}" include_history: true