Relay SMS Platform
Template Features

Character Counting

Templates automatically calculate SMS segments to help you estimate costs.

Automatic Calculation

TypeScriptCode
import { getTemplate, renderTemplate } from '@relay-works/templates'; const template = getTemplate('order-confirmed'); const result = renderTemplate(template, { company: 'Acme Store', orderNumber: 'A1B2C3', itemCount: 3, amount: '49.99', url: 'https://relay.link/order-123' }); console.log(`Message: ${result.text}`); console.log(`Characters: ${result.characterCount}`); console.log(`Segments: ${result.segments}`); console.log(`Encoding: ${result.encoding}`); console.log(`Cost estimate: $${result.segments * 0.02}`);

Render Result

Every template render returns:

TypeScriptCode
{ text: string; // The rendered message characterCount: number; // Total character count segments: number; // Number of SMS segments encoding: string; // 'GSM-7' or 'UCS-2' }

SMS Segment Limits

GSM-7 Encoding

  • Single segment: 160 characters
  • Multi-segment: 153 characters per segment

UCS-2 Encoding (Unicode)

  • Single segment: 70 characters
  • Multi-segment: 67 characters per segment

Cost Calculation

With Relay's pricing at $0.02 per segment:

TypeScriptCode
const result = renderTemplate(template, data); const cost = result.segments * 0.02; console.log(`This message will cost $${cost.toFixed(2)}`);

Optimizing for Segments

Keep messages under 160 characters for single-segment delivery:

TypeScriptCode
// Check before sending if (result.segments > 1) { console.warn('Message requires multiple segments'); console.log('Consider shortening URLs or company names'); }

URL Shortening Impact

Long URLs can increase segment count:

TypeScriptCode
// ❌ Long URL - 2 segments const longResult = renderTemplate(template, { company: 'Acme', url: 'https://mystore.com/orders/a1b2c3/tracking?utm_source=sms' }); console.log(longResult.segments); // 2 // ✅ Short URL - 1 segment const shortResult = renderTemplate(template, { company: 'Acme', url: 'https://relay.link/ord-123' }); console.log(shortResult.segments); // 1

Next Steps:

Last modified on