> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tracklysms.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Going to Production

> Checklist for launching your Trackly SMS integration in production

Follow this checklist before sending your first production messages. Each step covers a critical area that affects deliverability, compliance, and reliability.

<Steps>
  <Step title="Secure Your API Keys">
    Generate a production API key in **Dashboard > Settings > API Keys**. Store it in your backend environment variables or a secrets manager — never in client-side code or version control.

    ```bash theme={null}
    # Good: environment variable
    export TRACKLY_API_KEY=trk_your_production_key

    # Bad: hardcoded in source
    api_key = "trk_your_production_key"  # Don't do this
    ```
  </Step>

  <Step title="Provision Phone Numbers">
    Set up your sending phone numbers (toll-free or 10DLC) in the dashboard. Each number must complete carrier verification before it can send messages.

    * Toll-free numbers require verification (1-3 business days)
    * 10DLC numbers require brand and campaign registration
    * Ensure your numbers are in `active` status before sending
  </Step>

  <Step title="Configure Compliance Settings">
    Set up opt-out handling and TCPA compliance:

    * Verify STOP keyword handling is active (enabled by default)
    * Configure TCPA quiet hours for your sending lists
    * Set cooldown periods between messages to the same contact
    * Review your compliance settings in **Dashboard > Settings > Compliance**
  </Step>

  <Step title="Set Up Webhooks">
    Configure webhook endpoints to receive delivery status updates, unsubscribes, and replies:

    1. Add your webhook URL in **Dashboard > Settings > Webhooks**
    2. Implement signature verification using your webhook secret
    3. Return a 200 status within 5 seconds
    4. Process events asynchronously for reliability

    See [Webhook Events](/api-reference/v2/webhooks/events) for the full event format.
  </Step>

  <Step title="Handle Errors and Retries">
    Implement error handling and retry logic:

    * Parse the `code` field from error responses for programmatic handling
    * Implement exponential backoff for transient `5xx` errors
    * Use bulk endpoints for high-volume operations (up to 1,000 items per request)
    * Log error responses for debugging

    See [Error Codes](/api-reference/v2/error-codes) and [API Limits & Best Practices](/api-reference/v2/rate-limiting).
  </Step>

  <Step title="Configure Billing">
    Set up your payment method to avoid sending interruptions:

    1. Add a credit card in **Dashboard > Settings > Billing**
    2. Review per-segment pricing ($0.0045 for first 1M, $0.003 after)
    3. Auto-charge triggers based on your sending volume tier
    4. Monitor your usage in the billing dashboard
  </Step>

  <Step title="Test at Scale">
    Before launching to your full audience:

    1. Send test messages to your own numbers
    2. Verify webhook delivery and signature verification
    3. Test with a small batch (10-50 contacts) to confirm everything works
    4. Monitor delivery rates in the dashboard
    5. Gradually increase volume
  </Step>

  <Step title="Set Up Monitoring">
    Configure alerts to catch issues early:

    * Connect [Discord alerts](/integrations/discord-alerts) for real-time notifications
    * Monitor delivery rates — a sudden drop may indicate carrier filtering
    * Track opt-out rates — high rates may signal content issues
    * Review failed messages in the dashboard weekly
  </Step>
</Steps>

<Accordion title="Common gotchas">
  * **Sending before verification**: Toll-free numbers must complete carrier verification before sending. Messages sent before verification are silently dropped.
  * **Missing webhook endpoint**: Without webhooks, you have no visibility into delivery status or opt-outs. Set up webhooks before going live.
  * **Ignoring TCPA**: Sending outside quiet hours (8 AM–9 PM in the contact's timezone) violates TCPA regulations and can result in fines.
  * **No retry logic**: Transient errors (5xx) require retry logic with exponential backoff. Without it, messages are silently lost.
  * **Hardcoded API keys**: Keys committed to source control are compromised. Rotate immediately if this happens.
</Accordion>

## Next Steps

<CardGroup cols={2}>
  <Card title="Send First SMS" icon="paper-plane" href="/quickstarts/send-first-sms">
    Send your first message
  </Card>

  <Card title="Testing" icon="flask" href="/guides/testing">
    Test your integration safely
  </Card>
</CardGroup>
