기업회원 신청 서류 안내
신청자 구분에 따라 재직증명서 또는 위임장을 함께 제출해 주세요.
신청자 구분에 따라 재직증명서 또는 위임장을 함께 제출해 주세요.
A PRACTICAL GUIDE
What Korean law requires of promotional SMS and Kakao messages, and how to enforce it in code: the (광고) prefix, a free opt-out, and no sending between 21:00 and 08:00 KST.
이 가이드는 아직 번역되지 않아 English 문서를 표시합니다.
Promotional and marketing messages fall under the Network Act (정보통신망법). Ignoring it means fines, and repeated violations put the sending channel itself at risk.
Informational messages — order confirmations, delivery updates, verification codes — are exempt. Since Alimtalk is approved for informational content only, in practice these rules govern advertising SMS and Brand Message.
You may only send to people who agreed in advance. That is the marketing opt-in checkbox at signup. It must not be pre-ticked, and you have to retain the record of when consent was given.
(광고) prefixAt the very start of the body.
(광고)[Brand] Autumn sale, up to 50% off
...
For an LMS with a subject line, it goes at the start of the subject. Mid-body or trailing placement does not count.
The recipient must be able to opt out at no cost to them. A toll-free 080 number is standard.
(광고)[Brand] Autumn sale, up to 50% off
Details https://sendgo.io/s/k7Rm2xQ
Free opt-out 080-000-0000
Advertising messages may not be sent between 21:00 and 08:00 KST. Sending in that window requires separate consent specifically for night-time delivery.
Sendgo validates promotional sends against this window. Guard it in your own code too — batch jobs running later than planned and slipping past 21:00 is a routine occurrence.
<?php
use Carbon\CarbonImmutable;
final class AdSendWindow
{
// Advertising messages cannot go out between 21:00 and 08:00 KST.
public static function isAllowed(?CarbonImmutable $at = null): bool
{
$at ??= CarbonImmutable::now('Asia/Seoul');
return $at->hour >= 8 && $at->hour < 21;
}
/** Inside the restricted window, push to the next permitted time (08:00). */
public static function nextAllowed(CarbonImmutable $at): CarbonImmutable
{
if (self::isAllowed($at)) {
return $at;
}
return $at->hour >= 21
? $at->addDay()->setTime(8, 0)
: $at->setTime(8, 0);
}
}
// Decide in KST rather than trusting the server timezone.
function kstHour(date = new Date()): number {
return Number(
new Intl.DateTimeFormat('en-GB', {
timeZone: 'Asia/Seoul', hour: '2-digit', hour12: false,
}).format(date),
);
}
const canSendAd = () => {
const h = kstHour();
return h >= 8 && h < 21;
};
from datetime import datetime
from zoneinfo import ZoneInfo
def can_send_ad(at: datetime | None = None) -> bool:
at = at or datetime.now(ZoneInfo("Asia/Seoul"))
return 8 <= at.hour < 21
<?php
function assertAdFormat(string $content, string $optOut): void
{
if (! str_starts_with($content, '(광고)')) {
throw new InvalidArgumentException('Advertising messages must start with (광고).');
}
if (! str_contains($content, $optOut)) {
throw new InvalidArgumentException('The body is missing the free opt-out notice.');
}
}
adFlag on Brand MessageBrand Message and Friendtalk carry an adFlag marking the message as advertising.
await sendgo.brandMessage.send({
targeting: 'M',
messageType: 'FL',
friendTemplateUuid: '...',
adFlag: 'Y', // marks this as an advertising message
contacts: [...],
});
With adFlag: 'Y', Kakao applies its advertising rules (opt-out button and so on). Sending advertising content with N is a violation.
The night ban is judged on actual delivery time. Scheduling relatively — "three hours from now" — can land inside the restricted window depending on when the batch ran.
<?php
$at = AdSendWindow::nextAllowed(CarbonImmutable::now('Asia/Seoul')->addHours(3));
$sendgo->brandMessage->send([
'targeting' => 'M',
'scheduleType' => 'SCHEDULED',
'at' => $at->format('Y-m-d H:i:s'),
'adFlag' => 'Y',
// ...
]);