Skip to main content

Environments: local, staging, production

JourneyLayer doesn't force a fixed set of environments — you choose how to model them. Two common patterns:

Create one project per environment: Acme (Production), Acme (Staging). Each has its own tokens and data, so test traffic never pollutes production analytics. Point each website/app build at the matching project's token.

Pros: clean separation, no test data in production reports. Cons: segments/campaigns are built per project.

Pattern B — one project, filter by property

Use a single project and stamp every event with an environment property, e.g.:

JourneyLayer.track('Signup Completed', { env: 'staging' });

Then exclude env = staging in your segments and analytics. Simpler to manage, but you must remember to filter.

Local development

When developing locally, the SDK still sends events to your project. To avoid mixing local noise into production:

  • Use a staging project token in local builds, or
  • Add an env: 'local' property and filter it out, or
  • Only load the SDK when NODE_ENV === 'production'.

Allowed domains per environment

If you use Allowed website domains, remember to add every origin you serve from — including localhost, your staging hostname, and both the apex and www of production — or events from missing origins are rejected with 403.

Next

Start sending data: Website SDK → Install.