# Testing guidance
URL: https://support.starshipit.com/articles/14700000001017-testing-guidance
Canonical: https://support.starshipit.com/articles/14700000001017-testing-guidance
Markdown: https://support.starshipit.com/articles/14700000001017-testing-guidance.md
Updated: 2026-06-18

> For the complete documentation index, see [llms.txt](https://support.starshipit.com/llms.txt).

> Test Starshipit API integrations safely with controlled accounts and data.

Starshipit does not have a separate sandbox environment. Test integrations by using a controlled Starshipit account, safe test data, and a staged rollout before moving real order volume.

## Before you begin

- Confirm which Starshipit account you will use for testing.
- Use the API key from that account.
- Keep API keys out of source control, screenshots, and shared logs.
- Choose order numbers, SKUs, names, phone numbers, and email addresses that are clearly test data.

## Choose a test account

Customers often test with one of these account setups:

| Option | Use when | Notes |
| --- | --- | --- |
| Child account | You already use child accounts or want test activity separated from the main account. | The child account has its own API key, setup, couriers, rules, and data. |
| Second account | You want a separate account for integration testing. | Talk to Starshipit if you need a second account for testing. Use a different API key for each account. |
| Controlled production account | You need to test against the real account setup. | Use obvious test orders and start with a very small volume. |

Your API access tier controls the rate limit. The API key controls which account your requests access.

## Recommended test stages

| Stage | Goal | What to verify |
| --- | --- | --- |
| Authentication | Confirm headers and account access | A read-only request returns expected account data. |
| Order import | Create one safe test order | The order appears with the expected address, items, and shipping method. |
| Rates | Request rates for known package data | Returned services match the same shipment in Starshipit. |
| Label creation | Generate one controlled label, often with Plain Label | Tracking, label data, and shipment status are stored correctly. |
| Webhooks | Receive and process events | Duplicate events do not create duplicate updates. |
| Failure handling | Trigger common errors | Your integration logs each request and response, then retries safely when a recoverable failure occurs. |

## Safe test data

Use test values that are obvious to staff:

- Order numbers such as `API-TEST-1001`.
- Recipient names such as `API Test Recipient`.
- SKUs such as `API-TEST-SKU`.
- Internal email addresses owned by your team.
- Addresses that your courier setup can rate and label.

Avoid real customer names, phone numbers, email addresses, order notes, or delivery instructions during early testing.

## Move toward production

1. Run each quickstart in a child account, second account, or controlled account.
2. Test domestic and international examples if your operation ships internationally.
3. Confirm failed requests are visible to the team that can fix them.
4. Confirm the integration has a retry mechanism for recoverable failures.
5. Confirm retries do not create duplicate orders, labels, emails, or source-system updates.
6. Confirm your production API access and rate limit before switching traffic.
7. Start with a small order volume and monitor response statuses, labels, and webhook processing.

## What to log

We recommend logging every request and response while you test, then keeping enough production logging to investigate failures without exposing secrets:

- Source order ID and Starshipit order ID.
- Endpoint and method.
- Request body, with API keys and other secrets removed.
- Response status and response body.
- Retry count.
- Timestamp.
- Whether the request imported, updated, rated, labelled, manifested, or synced data.

Build retries with backoff for temporary failures such as rate limits, timeouts, and intermittent network errors. For write requests, check the order, shipment, webhook event, or source-system identifier before retrying so the retry does not create duplicates.

## Related guides

- [Quickstart: Import a test order](/articles/developer-center/getting-started/quickstart-import-a-test-order)
- [Quickstart: Print a label by API](/articles/developer-center/getting-started/quickstart-print-a-label-by-api)
- [Troubleshoot API integrations](/articles/developer-center/getting-started/troubleshooting-api-integrations)
