Flowstates messaging platform logo
    All posts
    OTPRoutingOperations

    Transactional vs Marketing Traffic on the Same Gateway

    Why authentication, service, promotional, support and urgent traffic need separate senders, routes, queues and monitoring — with an isolation matrix and migration checklist.

    Flowstates Team·Customer messaging operations11 March 2026 · 7 min read

    Traffic classes have incompatible requirements

    The argument for one sender identity and one route is simplicity: one registration, one integration, one bill. The argument against it is that the classes sharing that route have different deadlines, different consent bases, different content review and different definitions of success.

    Once they share a route, a scheduled campaign's queueing behaviour applies to an authentication code, and a content review triggered by promotional wording applies to the sender identity carrying that code. Neither effect is visible in an aggregate delivery percentage.

    Five classes are worth separating explicitly:

    • Authentication — a code or link the user is actively waiting for. Useful only inside the window they remain in the flow.
    • Service — order, payment, appointment, account state. Expected, tied to a business event.
    • Promotional — marketing. Requires a consent basis, subject to content rules and time-of-day restrictions in many markets.
    • Support — conversational, often two-way, needs a reply path and a human owner.
    • Urgent operational — outage, safety, fraud alerts. Rare, high consequence, escalation path if unacknowledged.

    What has to differ between them

    Sender identity and registration

    Registered sender identities carry the declared use case and, in some markets, approved templates. In the US, 10DLC registration through The Campaign Registry includes a declared use case, and the registration details affect how traffic is treated; the specifics are set by the registry and carriers and should be confirmed with your provider for the campaign in question. Sharing one identity across authentication and promotional content means a content decision about one class lands on the other.

    Consent and suppression

    Promotional traffic depends on a consent record and an honoured opt-out. Authentication and service messages generally rest on a different lawful basis, and suppression rules must not silently block a code the user requested. That requires per-class suppression semantics: a marketing opt-out is not a global block, and a global block must still be honoured.

    Queue priority and throughput allocation

    Give each class its own queue with an explicit priority, and its own throughput allocation on the route. Without a per-class allocation, a large scheduled send consumes capacity from whatever else is on that route.

    Route policy

    Separate route identities per class where a provider supports it, and preferably separate providers for authentication and promotional traffic, so failure domains, throttling behaviour and contracts are independent. A rule worth stating explicitly: promotional traffic never fails over onto an authentication route.

    Retry and deadline policy

    Each class needs a useful deadline — the point after which delivery no longer helps — and a stop condition rather than unbounded retries. Authentication deadlines are short and set by the flow the user is in; a service notification's deadline is set by the business event; a promotional deadline is set by the campaign window and quiet hours.

    Content and template governance

    Authentication and service content should be templated, reviewed and versioned, with the sender identity, template ID and approval state recorded. Promotional content changes frequently and needs a review path that cannot alter a template another class depends on.

    Monitoring baselines

    Alert against each programme's own recent baseline per route and destination, not a universal number. Useful signals differ by class: for authentication, the latency distribution to final status and the verification outcome; for promotional, throttling and rejection reasons and complaint or opt-out rate; for support, response time and unanswered inbound; for urgent traffic, acknowledgement.

    Incident response

    Define per class who is paged, what the first action is, and what "resolved" means. An authentication route degradation and a slow campaign should not reach the same person the same way.

    Isolation matrix

    DimensionAuthenticationServicePromotionalSupportUrgent operational
    Sender identityDedicated, registeredDedicated or shared with serviceDedicated, registered for marketing use caseTwo-way capableDedicated or service identity
    RouteDedicated, latency-firstDedicated or shared with authentication only if allocation is enforcedSeparate route and preferably separate providerRoute supporting inboundDedicated with independent fallback
    Queue priorityHighestHighLowest, scheduledInteractivePre-emptive
    Consent basisRequested by userBusiness eventRecorded consent, opt-out honouredExisting conversationLegitimate operational need
    SuppressionGlobal blocks onlyGlobal blocks onlyMarketing opt-out plus globalConversation stateGlobal blocks only
    DeadlineSet by the live flowSet by the business eventCampaign window, quiet hoursSession-basedImmediate, escalate if unacknowledged
    RetriesBounded, no duplicate code per sessionBounded, deduplicated per stateBounded, respects quiet hoursHuman-drivenBounded, then alternate channel plus escalation
    Failover targetAuthentication route on another providerService routeNever an authentication routeSupport-capable routeIndependent path
    AlertingLatency distribution and verification outcomeFinal-status mix per routeThrottling, rejections, opt-outsUnanswered inboundAcknowledgement

    Migration checklist

    Moving from a shared setup to separated classes, in an order that does not create an outage:

    1. Classify existing traffic. Tag every send with a class at the application boundary before changing anything, and confirm the tags against real volume.
    2. Record current baselines per programme and route, so the change can be evaluated afterwards.
    3. Register the new sender identities per market and wait for confirmed registration; treat lead time as a third-party dependency.
    4. Provision separate route identities and throughput allocations per class.
    5. Implement per-class queues, priorities, deadlines and stop conditions.
    6. Implement per-class suppression semantics, and verify that a marketing opt-out cannot block a requested authentication code.
    7. Move the lowest-risk class first, usually promotional, and observe against the recorded baselines.
    8. Move service traffic, then authentication last, with the previous route kept warm as fallback.
    9. Split alerting by class, with named owners and defined actions.
    10. Re-baseline after the move, and remove the mixed-class fallback path so it cannot be used silently.

    Flowstates sells and operates messaging routes, supports customers keeping their own provider contracts, and supports hybrid arrangements. The separation above is the same work in each case: what changes is who holds the supply contract, not who has to enforce the isolation.

    Want to talk through your messaging stack?

    Book a 30-minute review with our team. No pitch deck - we'll look at what you have and tell you where the operational risk is.