Test your integration in your store sandbox
Create simulated orders and inspect events without real payments or manufacturing.
Published by FRED
Each FRED store can have its own independent sandbox. Select your store in the dashboard and choose Create sandbox. Start empty, use a demonstration product, or copy your configuration and selected products. Copied objects receive new IDs. Copying covers uploaded products and name, sender and review settings. Inserts, shared catalog items, contacts, payments and Shopify connections are not copied. Test settings are not synchronized with production.
Connect your server
Open the sandbox and API keys, then create a test key. It starts with sk_test_
and is permanently bound to that sandbox. Use the same API URL and business routes
as production, with X-API-Key. Switching the dashboard environment does not change
your application: its key determines which environment it accesses.
To control simulations, add sandbox:simulate alongside the file, quote and order
permissions your integration needs. Keep the key on your server.
Files, products, quotes, orders and webhook destinations remain separate between sandboxes, even for stores belonging to the same account. Production IDs cannot be used in a sandbox.
Control an order
Create and confirm a test order through the usual routes. A confirmed order uses a simulated payment and workshop. Progress is manual by default: use the dashboard Test tools or the simulation API.
curl https://api.fredpod.com/v1/sandboxes/$FRED_SANDBOX_ID/simulations \
-H "X-API-Key: $FRED_TEST_KEY" \
-H "Idempotency-Key: shipping-simulation-001" \
-H "Content-Type: application/json" \
-d '{"order_id":"ord_example","action":"complete"}'| Action | Required state and effect |
|---|---|
next | Advances a confirmed order's jobs by one step |
complete | Advances jobs to simulated shipping |
printing_failed | Simulates failure while jobs are printing |
delivered | Marks a shipped order as delivered |
payment_failed | Simulates a declined payment before confirmation |
capacity_unavailable | Simulates unavailable capacity before manufacturing starts |
shipping_delayed | Emits a delay incident for a shipped order |
Reuse the same Idempotency-Key and payload after a network error. The response
includes a simulation ID and sandbox generation. The idempotency key is required.
The result can be retrieved for 24 hours through
GET /v1/sandboxes/{sandbox_id}/simulations/{simulation_id}. Invalid state
transitions are rejected.
Test prices and delivery estimates are fictional and are not production price,
capacity or manufacturing commitments. Comparisons and storefront quotes use
fictional measurements marked as estimate_source: sandbox; no file is sent to a
printer. AI Studio and real credit purchases are unavailable in sandboxes.
Check webhooks
Configure destinations in the sandbox environment. Notifications are actually
sent to those HTTPS URLs and signed with those endpoints' own secrets. Payloads
include mode: "test", sandbox_id and sandbox_generation for store sandboxes.
Keep their handling separate from production.
A connection test checks your receiver; an order simulation checks the business flow and its events. Inspect attempts, errors and retries on the Webhooks page. Use an HTTPS relay to reach a local server.
Reset and go live
A reset keeps API keys and webhook destinations and creates a new data generation. Previous objects and upload tokens are no longer usable. A webhook already received cannot be recalled. Deletion revokes keys; recreation gets a new identity. Archived private uploads are purged after FRED's configured retention period.
Quotas limit storage and simulation frequency. Storage defaults to 100 MB per generation and 500 MB across a real account's test accounts, including archived uploads until they are purged.
For production, create a live key, prepare production resources and webhook destinations, and complete ordering and payment setup. Test orders are never converted automatically into real orders. The current Shopify connection rejects test keys when activating a real service: test your FRED integration separately before activation.
Older test keys without a store sandbox keep their historical account-wide environment. They are not reassigned automatically. Once a store sandbox exists, new test keys for the account must specify their sandbox.