Back to Blog
Software

Customers Keep Saying They Never Got the Message: Designing a Reliable KakaoTalk, SMS, and Email Notification System

Recurring "I never got the message" tickets usually trace back to sending code scattered across features and delivery results nobody can check. This guide covers how to consolidate KakaoTalk, SMS, and email into a queue-based sending module with fallback, consent handling, and delivery tracking.

POLYGLOTSOFT Tech Team2026-10-117 min read5
Notification SystemKakaoTalk AlimtalkSMSEmail DeliverySystem Design

When Notifications Are Scattered Across Your Business Logic

"I paid, but I never got a confirmation." "No one told me my booking was confirmed." If tickets like these keep coming in, look at your system's structure before you blame the messaging vendor. In long-running services, notifications tend to have been bolted on wherever they were needed.

  • Sending code attached feature by feature: Order, booking, and settlement modules each call the sending API directly. Message copy lives in the source code as string literals, so changing one line requires a deployment.
  • No way to check the outcome: A successful API call means the message was accepted, not delivered. Without stored results, the best answer support can give is "it looks like it was sent."
  • For a service sending 100,000 messages a month, a failure rate of just 3% means 3,000 customers miss a notice every month. The real problem is that this number is invisible.

    Choosing Channels and Falling Back

    Each channel has different delivery conditions and cost structures, so combine them according to the nature of the message.

  • KakaoTalk AlimTalk: Cheaper than SMS and more trusted because the sender profile is displayed. However, it allows informational messages only, requires templates to be pre-approved, and does not reach people who don't use KakaoTalk or who have blocked the channel.
  • Text messages (SMS/LMS): The most dependable channel, since a phone number is all you need. SMS is limited to 90 bytes (about 45 Korean characters); beyond that, the message becomes a more expensive LMS.
  • Email: The lowest cost per message and well suited to long content and attachments, but less immediate and exposed to spam filtering.
  • App push: Almost free per message, but it depends on the app being installed and notifications being allowed.
  • The key is fallback. Resending by text when an AlimTalk fails is the classic pattern. Because an AlimTalk body can run up to 1,000 characters, passing it to text as-is either incurs LMS pricing or truncates the content. Prepare a short fallback version alongside each template.

    Sending Architecture: Queue and Decouple

    If you call the sending API inside the order transaction, a 3-second delay at the vendor makes the order 3 seconds slower too. Business processing should end by placing a send request on a queue, with separate workers handling the actual delivery.

  • Retries: Retry transient errors at increasing intervals (for example 1, 5, and 30 minutes), and stop immediately on permanent failures such as an invalid number.
  • Duplicate prevention: Use an idempotency key such as "order number + notification type" so that retries or duplicate events never send the same message twice.
  • Rate limiting: Throttle workers to the vendor API's per-second limit. Separate priority queues keep a bulk announcement from pushing payment notifications to the back of the line.
  • Templates and Consent Management

    Templates should be managed as data, not code. Store the template code, version, per-channel copy, and variable list, and record the version used in every send log. AlimTalk only allows approved templates, so build the review period into your copy-change schedule and track "in review / approved / rejected" status in the system.

    The sending module should also own legal compliance. Under Korean law:

  • Informational vs. promotional: Promotional messages require prior opt-in consent, an "(광고)" (advertisement) label, and a free way to opt out.
  • Night-time restriction: Sending promotional texts or notifications between 9 p.m. and 8 a.m. requires separate consent. Design the queue to defer these sends automatically.
  • Consent history: Store when and how consent was given, and reconfirm it every 2 years.
  • Confirming Delivery and Running the System

    Operations start with storing the vendor's delivery reports (via webhook or polling API) against your send log. With "accepted → sent → delivered/failed" status and failure reason codes on record, support can give an accurate answer in seconds. Failure statistics by reason also point to what to fix: many invalid numbers call for cleaning up member data, while many channel blocks suggest you are sending too often.

    For email, sender domain authentication determines deliverability. SPF verifies the sending server, DKIM verifies the message signature, and DMARC sets the policy for what happens when those checks fail. Since February 2024, Gmail has required all three from senders of 5,000 or more messages a day and advises keeping the spam complaint rate below 0.3%. The safe approach with DMARC is to start at `p=none`, review the reports, and tighten the policy step by step.

    How POLYGLOTSOFT Helps

    Fixing a notification system is less about building something new and more about gathering what is scattered into one place. Through its subscription development service, POLYGLOTSOFT audits the sending code in your existing system and builds, in stages, a queue-based unified sending module, a template management screen, fallback rules, and a delivery results dashboard. Because it is a monthly subscription, adding a channel or changing a policy needs no separate contract. If you want to answer "I never got the message" with evidence, tell POLYGLOTSOFT where things stand today.

    Need Technical Consultation?

    Our expert consultants in smart factory, AI, and logistics automation will analyze your requirements.

    Request Free Consultation