Production Readiness Checklist

Use this checklist to confirm your integration is production-ready. Complete every section before processing real shipments.

Credentials & environments

  • Created a production account at accounts.envia.com/signup
  • Generated a production API key (Dashboard → Settings → Developers → API Keys → Add)
  • Stored production and sandbox keys in separate secret stores
  • Configured your application to use the correct base URLs:
APISandboxProduction
Shippinghttps://api-test.envia.com/https://api.envia.com/
Querieshttps://queries-test.envia.com/https://queries.envia.com/
GeocodesN/A — production onlyhttps://geocodes.envia.com/
  • Verified that production tokens are never used in sandbox and vice versa

Core shipping flow

  • Rate quoting works for all carriers you plan to use
  • Label creation returns a tracking number and downloadable PDF
  • Tracking returns status and events for created labels
  • Cancellation voids labels and returns balance (tested with a sandbox label)
  • If using pickups: Pickup scheduling returns a confirmation

Address validation

  • Customer addresses are validated with the Geocodes API before label creation
  • Invalid postal codes are caught and surfaced to the user
  • Address forms adapt to country-specific requirements (using address structure from Queries API)

Error handling

  • Your application handles 401 Unauthorized (expired or wrong-environment token)
  • Your application checks the meta field in Shipping API responses — some errors return HTTP 200 with "meta": "error" in the body
  • Your application handles the different error formats for each API (see Error Response Formats)
  • Your application handles 5xx errors with retry logic
  • Error messages are logged for debugging and not exposed raw to end users

Webhooks

  • Webhook endpoint is publicly reachable via HTTPS
  • Webhook endpoint responds with 2xx within 5 seconds
  • Registered separate webhook URLs for sandbox and production
  • Tested webhook delivery using Test Webhook
  • Implemented idempotency (handle duplicate webhook deliveries gracefully)

Billing

  • Production account has sufficient balance to create labels
  • You have a process to monitor and top up balance before it runs out
  • You understand how refunds work for cancelled labels — cancelling a label before the carrier scans it triggers an automatic refund to your account balance

Security

  • API keys are stored in environment variables or a secrets manager, not in source code
  • API keys are rotated on a regular schedule
  • Unused or old keys are revoked
  • Webhook payloads are validated before processing

Testing summary

Before going live, confirm you have successfully completed these end-to-end flows in the sandbox:

  1. Domestic shipment: Quote → Label → Track → Cancel
  2. International shipment (if applicable): Quote → Label with customs → Commercial invoice → Track
  3. Pickup scheduling (if applicable): Create labels → Schedule pickup
  4. Webhook flow: Register → Receive test event → Process payload

Ready to go live

Once every item is checked:

  1. Switch your application's base URLs to production
  2. Use your production API token
  3. Create your first live shipment
  4. Monitor the first few shipments closely in your dashboard
🛟

Need Help?

Have questions or need assistance going to production? Our support team is ready to help.

Create a support ticket here and we'll guide you through the process.

What to read next