Sandbox environment for API development

Before we commit to building our integration against the production API, we need to understand the availability and characteristics of any sandbox or test environment.

Specifically:

  1. Is there a dedicated sandbox environment with isolated data, or should we use a production account with test data?
  2. If a sandbox exists, does it mirror production API versions and behavior (e.g., rate limits, webhook delivery semantics)?
  3. Are there restrictions on data persistence or account longevity that would affect our CI/CD pipeline testing?
  4. Does the sandbox support the full OAuth flow, including refresh token rotation?

We are particularly concerned with the fidelity of webhook delivery and idempotency guarantees, as our integration depends on reliable event ordering for work order state transitions.

References to relevant documentation or RFC-style specifications would be appreciated.

Parents
  • +1 to Eli's approach — that's exactly what we did. Heads up though: if you're using webhooks heavily, the lack of replay/debug tooling in "test" accounts is a pain. We ended up building a small proxy that captures and redelivers payloads so we can replay scenarios without regenerating work orders.

    Also worth noting: test accounts still count toward your org's seat licensing if you're on a paid plan, so we ended up creating a single shared sandbox account with strict naming conventions (TEST- prefix on everything) rather than one per developer. YMMV if your security model requires isolation.

    Re: idempotency — the API doesn't provide native idempotency keys (no Idempotency-Key header), so we had to implement client-side deduplication on our end. Just something to plan for if you're doing retries.

  • Thank you both — this clarifies the constraints significantly.

    Devon, regarding your proxy: are you persisting captured webhooks to verify ordering guarantees, or primarily for replay? I'm curious whether you've observed any delivery reordering in practice (e.g., work_order.status_changed arriving before work_order.created for rapid state transitions).

  • Mostly for replay, but we do log timestamps. In my experience, ordering has been FIFO within a single event type, but I wouldn't bet on cross-event ordering — especially if you're creating and immediately updating a work order. We've seen created and status_changed arrive out of order by 50-200ms, probably due to separate queue workers.

    Your mileage may vary depending on load. We ended up treating webhooks as "something probably happened, go fetch current state" rather than "this exact transition occurred."

  • Confirmed — docs state "best effort" ordering, no guarantees. Recommend polling API for critical transitions.

    • Setting Up Webhooks
    • Internal ticket FP-8924 tracks eventual consistency improvements (no ETA)
Reply Children
No Data