Sandbox seeding
Sandbox seeding fills a sandbox with a realistic, right-sized subset of production data — so your team tests against data that behaves like the real thing, without copying sensitive values into a less-protected environment.
Seeding is a restore with three habits: a production snapshot as the source, a sandbox as the target, and anonymization on the way in.
Why seed instead of copying?
- Full-copy sandboxes are expensive and slow to refresh; partial copies are hard to scope by hand.
- A seeded sandbox contains exactly the object tree you chose — with relationships intact, thanks to the level-by-level loading of the restore engine.
- Anonymization keeps personal data out of the sandbox entirely, which your compliance team will appreciate.
Step by step
- Start a restore from a recent production snapshot (see Restoring data).
- Scope the subset. Pick your root object with a filter that right-sizes the data — e.g.
CreatedDate >= '2025-01-01'for a year of accounts — then tick the children your tests need (contacts, opportunities, cases…). - Anonymize sensitive fields. On each object holding personal data, add anonymize rules:
$Emailfor emails,$Firstname/$Lastnamefor names,$Number_10for phone-like fields. See Data mapping and anonymization. - Neutralize side effects. Use Ignore fields for fields that trigger integrations, and a Data mapping rule like
* · OwnerId · * · * → <your user's Id>to keep assignment rules quiet in the sandbox. - Pre-flight. Choose the sandbox as the target (sandboxes are listed first), pick the load mode — Insert for a fresh sandbox, or Upsert with per-object match fields for repeatable refreshes — and check the record counts.
- Launch and monitor. Watch the per-object results land; destination Ids link straight into the sandbox.
[SCREENSHOT REQUIRED: Seeding scope with anonymization badges visible on object cards]
Repeatable refreshes
Set a match field (an External Id) on each object in the builder, and the same seeding job can be cloned and re-run after every sandbox refresh without creating duplicates — records are matched and updated in place.
Save the scope as a draft (or keep a launched job to clone) so next month's refresh is two clicks, not an afternoon.