Roastify

Order Simulator

Test your webhook integrations by simulating order status progressions for test orders

The Order Simulator allows you to manually progress test orders through the fulfillment workflow. This is useful for testing your webhook integrations and verifying that your application handles order status updates correctly.

Test Orders Only

The simulator only works with orders created using a Test API key.

Real Webhooks

Status changes fire real webhooks to your configured endpoints.

Mock Data

Shipping and billing records are created with mock data for realistic testing.

Overview

When you create orders via the API using a Test API key, those orders are marked as test orders and will not be fulfilled in production. However, you may still want to test how your application handles the various status updates and webhooks that occur during the fulfillment process.

The Order Simulator provides a UI in the merchant dashboard that lets you manually advance a test order through each status, triggering the same webhooks that would fire in production.

Accessing the Simulator

Create a Test Order

First, create an order using your Test API key. Orders created with test keys are automatically marked as test orders.

POST https://api.roastify.app/v1/orders
x-api-key: rty_test_your_key_here

{
  "shippingAddress": { ... },
  "items": [{ "sku": "COL-SO-12", "quantity": 1 }]
}

Navigate to the Order Detail Page

In the merchant dashboard, go to Orders and click on your test order to view its details.

Open the Simulator Tab

Test orders display a fourth tab called Simulator (indicated by a flask icon). Click this tab to access the order simulator.

The Simulator tab only appears for test orders. Live orders do not have this option.

Status Progression

Orders follow a linear progression through the fulfillment workflow. The simulator enforces the same rules as production—you cannot skip statuses or move backwards.

Workflow Statuses

StatusDescriptionNext Status
CreatedOrder received, awaiting fulfillmentPicked
PickedItems picked from inventoryPrinted
PrintedShipping label printedPackaged
PackagedOrder packaged and ready to shipShipped
ShippedOrder handed off to carrier(Terminal)

Cancellation

Orders can only be canceled when in the Created status (before fulfillment begins). Once an order moves to "Picked" or beyond, it cannot be canceled. Cancellation is immediate—there is no approval step required.

Using the Simulator

The simulator displays a visual timeline showing the current order status and available actions.

Advancing Status

View Current Status

The timeline shows completed, current, and upcoming statuses. The current status is highlighted.

Click Advance Button

Click the Advance to [Next Status] button to progress to the next status.

Webhook Fires

A webhook is sent to your configured endpoint with the new status. You'll see a success toast confirming the update.

Canceling an Order

If the order is in "Created" status, you can click Cancel Order to cancel it. This immediately moves the order to "Canceled" status (a terminal state) and fires a fulfillment.canceled webhook.

Mock Data Created

To provide a realistic testing experience, the simulator creates mock records when certain statuses are reached.

At "Packaged" Status

When you advance an order to "Packaged", a mock Shipping Label is created with:

FieldValue
Tracking NumberTEST-{timestamp}
Tracking URLhttps://tools.usps.com/go/TrackConfirmAction?tLabels=TEST-{timestamp}
CarrierUSPS
ServicePriority Mail
Shipping Cost$8.50
Estimated Delivery5 days from simulation

At "Shipped" Status

When you advance an order to "Shipped", the following occurs:

  1. Shipping Label status is updated to "in_transit"
  2. A mock Transaction is created with:
FieldValue
Amount$12.50
Payment Statussucceeded
Card Last 44242
Is Testtrue

Best Practices

Troubleshooting

Next Steps

Webhooks Guide

Learn more about webhook events, payloads, and signature verification. Webhooks →

API Quickstart

Get started with the Roastify API and create your first test order. Quickstart →

On this page