Sandbox Environments — Test Changes Before Production
Sandboxes are isolated copies of your org you can use to safely test workflow tweaks, new approval processes, CPQ price rules, email template rewrites, and configuration changes without touching production. Each sandbox clones all of your configuration plus a bounded sample of recent data (last 90 days of contacts capped at 500, pipeline items capped at 200) with PII redacted. When you're happy with your changes you select what to promote and CRMown applies just those changes to the parent org. Plan-gated to Max (1 sandbox) and Own license (3 sandboxes).
Steps
- Go to Enterprise > Sandbox (the 🧪 Sandbox tab under the Enterprise suite). Only OWNER and ADMIN see this tab — TEAM/EXECUTIVE/VIEWER don't have sandbox permissions.
- Click "Create sandbox", name it something descriptive ("Q4 workflow testing", "approval-process-rewrite"), and click Create. The clone job runs in the background — typically 30-120 seconds for a typical org. Status flips from "creating" to "ready" when done.
- Click "Enter sandbox" on a ready sandbox. The whole dashboard takes on an amber tint, the favicon swaps to 🧪, the browser tab title gets a [SANDBOX] prefix, and a banner across the top reads "🧪 SANDBOX — <name> · Changes here will not affect production until promoted." This is unmissable on purpose — path-based routing means the URL doesn't change much.
- Make whatever changes you want inside the sandbox: edit workflows, tweak approval processes, modify CPQ price rules, adjust email templates, etc. Every change happens against the sandbox's cloned data, not your real production data.
- When ready, exit the sandbox (click "Exit sandbox" in the banner) and go back to Enterprise > Sandbox > <your sandbox> > Changes tab. CRMown computes a diff between your sandbox and production and shows every modified, added, or deleted entity with its before/after state.
- Uncheck anything you don't want to promote (e.g., "this workflow change was just for testing"), then click "Promote selected". A promotion job runs server-side and applies just the selected changes back to production. Promotion status streams live; partial failures are tolerated and surfaced.
- Use the "Intercepted emails" tab to see every email your sandbox tried to send — outgoing email is hard-disabled in sandboxes (nothing reaches Resend, customers won't see test emails) and instead captured to this log so you can verify your workflows generated the right content.
Good to know
- Sandboxes auto-expire after 30 days. Click "Extend +30d" to push the expiration out another month, capped at 180 days total lifetime from creation. Past 180 days the sandbox hard-deletes — a 7-day warning email goes to the creator before that happens.
- Sandbox AI calls (e.g., AI Bar, AI Draft, agents) count against your PRODUCTION org's AI quota — not the sandbox's. This prevents people from spinning up sandboxes to bypass the AI cap.
- PII redaction: in cloned data, contact emails become "ab***@sandbox.local" and phone numbers get x'd out except the last 4 digits. First/last names are kept (they're useful for testing UX, low-sensitivity). Conversations, activity logs, and full message history are NOT cloned — only the bounded contact + pipeline-item sample.
- Owner of the sandbox session matters: you must be ADMIN/OWNER on the parent org to enter a sandbox. The auth middleware verifies this every request — there's no "borrow access" path. (Internally we use a token-swap pattern: req.currentUser.orgId stays your home org while req.effectiveOrgId points at the sandbox for data scoping.)
- The diff workflow covers seven entity types: Workflows, Pipelines (+ stages + custom fields), Approval Processes (+ steps), CPQ Products, CPQ Price Rules, Email Templates, and Custom Roles. Other entity types (contacts, deals, conversations) intentionally don't flow back — sandboxes are for testing CONFIGURATION, not bulk-editing real data.
- Cloned files (recordings, documents) reference the parent's R2 storage directly with a read-only flag — no deep copy. New files uploaded inside the sandbox land in a separate "sandbox-<sandboxOrgId>/" namespace and are cleaned up on sandbox delete. Your parent's file storage is never modified.
- Path-based routing in v1: sandbox sessions don't use a separate subdomain. The X-Sandbox-Id header (set by the frontend when you click "Enter sandbox") tells the API which sandbox you're in. Subdomain-based routing (q4-test.sandbox.app.crmown.io) is a v1.5 feature if customers ask.
Troubleshooting
Error messages
quota_exceeded— You've hit your plan's sandbox cap (Max: 1, Own: 3). Delete an existing sandbox to free a slot, or upgrade to Own.sandbox_not_ready— The sandbox is still cloning, has failed, or has expired. Check the status in Enterprise > Sandbox before retrying.sandbox_forbidden— The sandboxId in your X-Sandbox-Id header points at a sandbox owned by a different org. Cross-org sandbox access is blocked by design.sandbox_role_denied— Only ADMIN and EXECUTIVE roles can enter sandboxes. Ask an OWNER to upgrade your role or impersonate.lifetime_cap_reached— Sandbox is at its 180-day maximum lifetime. Extensions cannot push past this; create a fresh sandbox if you still need testing capacity.custom_role_delete_not_supported— Promoting a CustomRole deletion is refused — would orphan users assigned that role. Reassign users to a different role first, then delete.
Plans
Max plan: 1 active sandbox. Own license: 3 active sandboxes. Free / Starter / Pro: not available — upgrade to access. Sandbox-management endpoints require sandbox:admin permission (OWNER, ADMIN). Entering a sandbox requires sandbox:read (OWNER, ADMIN, EXECUTIVE).
Related
- Approval & Review Process — sandbox is a great place to test new approval chains before promoting them to production
- CPQ — try out new pricing rules / product catalog tweaks against real-shaped quote data
- Workflows — test trigger / step changes against bounded sample data without risking real customer touchpoints
- AI Usage — sandbox AI calls count against the parent org's quota, not a separate sandbox quota
- Settings > Billing — plan tier determines sandbox quota