기업회원 신청 서류 안내
신청자 구분에 따라 재직증명서 또는 위임장을 함께 제출해 주세요.
신청자 구분에 따라 재직증명서 또는 위임장을 함께 제출해 주세요.
A PRACTICAL GUIDE
Shorten long URLs to fit inside an SMS and measure who clicked. Creating short links, reading click stats, and splitting stats per campaign.
POST /api/v2/short-urls이 가이드는 아직 번역되지 않아 English 문서를 표시합니다.
Putting a long URL directly into a text message costs you twice: it eats your byte budget, and you learn nothing about who clicked.
[Event] Autumn sale! https://shop.example.com/promotions/autumn-2026?utm_source=sms&utm_campaign=autumn
→ blows past 90 bytes into LMS pricing, and engagement is invisible.
[Event] Autumn sale! https://sendgo.io/s/k7Rm2xQ
→ fits in an SMS, and clicks are counted.
POST /api/v2/short-urls
| Field | Required | Notes |
|---|---|---|
targetUrl |
✅ | Original URL. http/https only, up to 2,048 characters |
title |
A label for the management screen | |
expiresAt |
After this, 410 Gone. Y-m-d H:i:s |
|
forceNew |
true issues a new code even for a URL already shortened |
const created = await sendgo.shortUrl.create({
targetUrl: 'https://shop.example.com/promotions/autumn-2026',
title: 'Autumn sale landing',
expiresAt: '2026-09-30 23:59:59',
});
const { code, shortUrl } = created.data;
await sendgo.sms.sendSms({
content: `[Event] Autumn sale! ${shortUrl}`,
contacts: [{ contact: '01012345678' }],
});
created = client.short_url.create(
target_url="https://shop.example.com/promotions/autumn-2026",
title="Autumn sale landing",
)
link = created["data"]["shortUrl"]
client.sms.send_sms(
content=f"[Event] Autumn sale! {link}",
contacts=[{"contact": "01012345678"}],
)
<?php
$short = $sendgo->shortUrl->create([
'targetUrl' => 'https://shop.example.com/promotions/autumn-2026',
'title' => 'Autumn sale landing',
]);
$link = $short['data']['shortUrl'];
$sendgo->sms->sendSms([
'content' => "[Event] Autumn sale! {$link}",
'contacts' => [['contact' => '01012345678']],
]);
const stats = await sendgo.shortUrl.stats(code, { from: '2026-09-01' });
await sendgo.shortUrl.list({ count: 10 }); // list
await sendgo.shortUrl.show(code); // detail
await sendgo.shortUrl.deactivate(code); // stop redirecting, keep the stats
stats = client.short_url.stats(code, from_="2026-09-01")
client.short_url.list(count=10)
client.short_url.show(code)
<?php
$stats = $sendgo->shortUrl->stats($code, ['from' => '2026-09-01']);
$sendgo->shortUrl->list(['count' => 10]);
$sendgo->shortUrl->show($code);
$sendgo->shortUrl->deactivate($code);
If several campaigns point at the same landing page, use forceNew to get distinct codes. Otherwise the numbers merge and you cannot tell which campaign worked.
const augustLink = await sendgo.shortUrl.create({
targetUrl: 'https://shop.example.com/sale',
title: 'August sale - Alimtalk',
forceNew: true,
});
const septemberLink = await sendgo.shortUrl.create({
targetUrl: 'https://shop.example.com/sale', // same destination
title: 'September sale - SMS',
forceNew: true, // different code
});
#{var3} instead.How Kakao Alimtalk template review works, why informational-only matters, how to lay out variables, and the wordings that get rejected.
Register Kakao channels, submit Alimtalk templates for review, file sender numbers, and sync opt-outs without ever sending anyone to sendgo.io. Includes webhook delivery of review outcomes.
Every error code returned by the Sendgo send endpoints, and how to tell a failure worth retrying from one that will fail identically every time.