Skip to main content

Messaging Best Practices

Follow these best practices to maximize deliverability, stay compliant with carrier regulations, and provide the best experience for your recipients.

Deliverability

Use E.164 Phone Number Format

Always format phone numbers in E.164: +[country code][number] with no spaces, dashes, or parentheses.

Register for 10DLC (US)

All A2P SMS to US numbers requires 10DLC registration. Unregistered traffic will be filtered or blocked.

Warm Up New Numbers

When using a new number for high-volume sending, gradually increase volume over 2–4 weeks:

Monitor Delivery Rates

Use webhooks to track delivery status in real time. If your delivery rate drops below 95%, investigate immediately:
  • Check for opt-outs and invalid numbers
  • Review carrier feedback for content filtering
  • Verify 10DLC campaign status

Compliance

  • Express consent is required for transactional messages
  • Express written consent is required for marketing messages (TCPA requirement)
  • Keep records of when and how each recipient opted in

Honor Opt-Outs Immediately

Orbit automatically handles standard opt-out keywords (STOP, CANCEL, UNSUBSCRIBE). When a user opts out:
  1. Stop sending immediately
  2. Send a confirmation: “You have been unsubscribed. Reply START to resubscribe.”
  3. Never message the number again until they re-opt-in

Include Required Disclosures

Every first message to a new recipient should include:
  • Your business name
  • Message frequency description
  • “Reply STOP to unsubscribe”
  • “Msg & data rates may apply” (for US)

Follow Quiet Hours

Avoid sending marketing messages outside business hours in the recipient’s timezone:

Content

Keep SMS Concise

SMS has a 160-character limit per segment (70 for Unicode). Longer messages are split into segments and cost more: Cost optimization tips:
  • Remove unnecessary whitespace and formatting
  • Use URL shorteners for links
  • Avoid emoji in transactional SMS to stay in GSM-7

Personalize Messages

Personalized messages see 2–3x higher engagement:

Use Templates for WhatsApp

WhatsApp requires pre-approved templates for business-initiated conversations. Best practices:
  • Keep templates under 1024 characters
  • Use variables for personalization: Hello {{1}}, your order {{2}} is ready.
  • Submit templates in all languages you need upfront
  • Avoid promotional language in transactional templates

Error Handling

Implement Retry Logic

Use exponential backoff for transient failures:

Handle Specific Error Codes

Clean Your Contact Lists

Regularly remove:
  • Invalid numbers (persistent INVALID_PHONE_NUMBER errors)
  • Opted-out numbers (RECIPIENT_OPTED_OUT)
  • Undeliverable addresses (repeated failed status)

Channel Selection

Choose the right channel for each use case:

Implement Channel Fallback

For critical messages, configure cross-channel fallback at the organization level rather than per-request. Once configured, every send on the primary channel transparently retries the next channel in the chain when the primary delivery fails — no per-call flag required.
  1. Open Settings → Channels → Cross-Channel Fallback on the dashboard.
  2. Add a rule, e.g. Primary: WhatsApp → Fallback: SMS. Chains of 2+ channels are supported (RCS → WhatsApp → SMS); each fallback fires only when the previous one exhausts its retries or returns a hard, non-retryable error.
  3. Save. The fallback takes effect on the next send.
When the primary channel chain (WhatsApp providers) exhausts its retries and returns a non-retryable failure, the router advances to SMS automatically and applies the recipient’s opt-out + DNC checks against the new channel before delivery.

Performance

Use Webhooks Instead of Polling

Subscribe to delivery status webhooks rather than polling GET /api/v1/messages/{id}:

Batch Operations

For bulk sends, use campaigns instead of individual API calls:
Need help optimizing your messaging strategy? Contact the Orbit solutions team at solutions@devotel.io.