Skip to main content
Trackly SMS issues sandbox (test) API keys. A send made with a sandbox key runs the same validation as a live send, then returns a simulated response instead of actually sending — no message is delivered and no segment is billed. Use these practices, together with a sandbox key, to test safely and cost-effectively.

Use Your Own Numbers

Send test messages to phone numbers you control. This lets you verify delivery, formatting, and opt-out handling without affecting real contacts.

Leverage the Free Tier

Every account includes 500 free messages per month. Use this allowance for integration testing before committing to paid volume.

Use a Sandbox API Key

Create a key in Dashboard > Settings > API Keys with Sandbox mode enabled — its value begins with trk_test_, and every send made with it is simulated instead of delivered. The partner key-mint endpoint issues live keys only, so provision sandbox keys from the dashboard. Label the key clearly (e.g., “Development - Sandbox”) so it’s easy to:
  • Revoke it without affecting production keys
  • Keep test traffic out of billing and message history — sandbox sends are never billed and are not recorded
  • Prevent accidental production sends from development environments
Send to a reserved test number to get a deterministic outcome — delivered, failed, replied, or opted-out — for exercising each code path. Each single sandbox send also fires your configured webhook endpoint, flagged as a sandbox event, so you can verify signature handling end-to-end; bulk sandbox sends don’t fire webhooks, so use single sends to test webhook delivery. See Sandbox Mode for the full request/response reference, including the reserved test numbers and their outcomes.

Test Opt-Out Flow

Verify that STOP keyword handling works correctly. This requires a live key — a sandbox send is never delivered or recorded, so it can’t complete the flow below:
  1. Send a test message to your own number with a live key
  2. Reply with STOP
  3. Confirm the contact is marked as unsubscribed in the dashboard
  4. Attempt to send another message — it should be blocked
  5. Reply with START to re-subscribe (if your account supports it)
To preview the opted_out outcome without a live send, send to +15005550103 with a sandbox key. See Sandbox Mode for the simulated response and the webhook event it fires.

Test Webhooks

Use a webhook inspection tool to verify event delivery before building your handler:
  1. Set up a temporary endpoint using a service like webhook.site or RequestBin
  2. Register that URL as an account webhook endpoint with Create Endpoint and store the signing secret it returns
  3. Send a test message using a sandbox API key and verify you receive the event, with sandbox: true on the envelope’s data object
  4. Check that the X-Trackly-Signature header is present
Per-list Delivery Forwarding webhooks configured in the dashboard are a separate system: they carry your shared secret in the X-Webhook-Secret header, are not HMAC-signed, and do not receive sandbox events. See Webhook Events for that format.
Then implement your handler and verify the signature: the X-Trackly-Signature header carries t=<timestamp>,v1=<hex_signature>, where the signature is an HMAC-SHA256 of {timestamp}.{body} keyed with the endpoint’s signing secret. See Webhook Signing & Verification for the full procedure, including the rotation header.

Test Bulk Operations

Start with small batches before scaling up:
  1. 5 contacts — verify the request format and response structure
  2. 50 contacts — check partial failure handling (include one invalid number)
  3. 500 contacts — validate performance and error handling at moderate scale

Test Checklist

  • Single message sends and receives successfully
  • Bulk send handles partial failures correctly
  • Webhook events are received and verified
  • STOP keyword triggers unsubscribe
  • Error responses are parsed and handled
  • Transient error (5xx) retry logic works
  • Link tracking redirects correctly (if using offers)
  • Contact creation and journey enrollment works

Next Steps

Going to Production

Launch your integration

Error Codes

Handle all error scenarios