Search documentation...

K
ChangelogBook a demoSign up

Environments and deployments

Environments and deployments are only available on Business tier plans.

Maintaining separate environments for different stages of the release process is a common practice across technical domains.

Separating environments minimizes the risk of accidental changes or disruptions to the user-facing experience. For example, environments can help you avoid overwriting CRM data you didn't mean to, activating a marketing campaign prematurely, or incurring unexpected data warehouse charges.

Generally, production environments are for live, user-facing applications, staging for pre-release testing, and development for experimentation.

Environments diagram

You can set up whatever environments your organization requires in Hightouch.

How do environments work?

Each Hightouch workspace in your organization acts as a separate environment. You can link resources between workspaces, which allows you to deploy models and syncs from one environment to another.

Each workspace can have its own set of alerts and can use its own extensions. Environments integrate seamlessly with other governance features, such as role-based access controls (RBAC) and approval flows. Workspace permissions and drafts are enforced across workspaces when deploying changes.

You can set up your organization so that specific team members have access to certain resources. For example, some team members, such as your data team, may have permission to set up sources and models. Others, such as the marketing team, can deploy or draft sync deployments.

Separate resources for separate environments

Each workspace has its own set of resources, including sources, models, destinations, and syncs. Hightouch allows you to link resources across workspaces. For example, you can link a Snowflake playground in your "dev" workspace to a production Snowflake instance in your "prod" workspace, a Salesforce sandbox to your production Salesforce instance, etc.

Environments diagram

Environments allow you to deploy changes to models and syncs. When you deploy a model or sync, Hightouch copies its configuration to another workspace, updating or creating resources where necessary. Before performing the copy, Hightouch checks that all underlying resources are appropriately configured.

For example, you may be experimenting with changes to a Salesforce sync mapping in your development environment. When you're happy with your change, you can deploy it to your production environment. Before copying your changes to a production sync, Hightouch checks that the underlying model and destination have linked counterparts in production.

Keeping resources separate between environments lets you create as many as you want in a development environment without cluttering other environments you may want to keep pristine. And since changes don't automatically deploy to linked resources, you can safely delete or update resources without worrying about knock-on effects in other environments. Each resource also has its own history, which you can inspect, for example, by examining its activity history.

Resource dependencies

While any resources of the same type can be linked, for example, source to source and sync to sync, you can only deploy models and syncs. To deploy models and syncs, you must link their underlying sources and destinations to their relevant counterparts.

When you deploy models or syncs, Hightouch checks that the underlying resources match linked counterparts in the target environment. For example, if you link one source to another, you can deploy models built off the linked source.

Deploying a model
Model deployments check that linked sources of the same type exist in both workspaces.

Deployed model
Once deployment validation passes, the deployment creates or updates a model in the target workspace.

To deploy syncs, the underlying linked models and destinations need to match in both workspaces.

Deploying a sync
Sync deployments check that linked destinations and models exist in both workspaces.

Deployed sync
Once deployment validation passes, the deployment creates or updates a sync in the target workspace.

Environment usage

To deploy changes, you first need to link resources. You can either link existing sources and destinations on their configuration pages, or link them as part of the deployment workflow.

You only need to link underlying resources once to allow deployments. Removing links between resources doesn't impact syncs or models you previously deployed.

You can link existing sources and destinations to their counterparts in other workspaces. You can only link models and syncs during the deployment workflow.

When you deploy a resource for the first time, you create and simultaneously link the resource to a counterpart in the target workspace. During deployments, Hightouch ensures you've linked the necessary underlying resources. If you haven't, you can link them directly from the deployment wizard.

To link existing sources and destinations, follow these steps:

  1. Go to the resource's overview page and open the Linking tab.

Linking resources in the Hightouch UI

  1. Select the relevant resource for each workspace you want to link and then click Link.

Hightouch only displays eligible resources for linking. To be eligible: - the resources must be of the same type; for example, they both must be Snowflake - the user creating the link must be a member of both workspaces - both workspaces must belong to the same organization

The only way to link syncs to other syncs and models to other models is by deploying them. Once deployment creates a new sync or model, it's automatically linked for future deployments.

You cannot deploy to existing syncs or models. If you want to link existing syncs or models from one workspace to another, delete the development or testing version and recreate it by deploying it from your production environment. Don't hesitate to if you have any questions or concerns.

Deploy changes

To deploy changes, you need permission to at least create drafts for the relevant resource type (model or sync) in the target workspace to which you want to deploy changes. For example, if you want to deploy a sync, you need permission to create sync drafts in the workspace you want to deploy the sync to.

To deploy syncs or models, follow these instructions:

  1. From a model or sync's configuration page, click the deploy icon to the left of the Run button and select Deploy.

Deploying changes in the Hightouch UI

  1. Select the environment you want to deploy the change to. The first time you deploy a particular resource, Hightouch creates a new resource in the target environment. If you've deployed the resource before, the deployment updates the previously created and linked resource.
  2. If the relevant underlying resources aren't already linked, follow the steps in the modal to link them.
  3. The deployment wizard shows what has changed: added, removed, and updated configurations. Review these to ensure they're the changes you want to deploy.

Deploying changes in the Hightouch UI

  1. For sync deployments, you can choose whether to deploy its schedule as well as the other configuration changes.
  2. Click Deploy.
  3. Syncs created via deployment are disabled by default. If you want to enable a deployed sync, make sure to do so from its overview page once you've deployed it.

You can't deploy drafted changes on a configuration. You first need to get approval and/or publish changes to a resource before deploying the changes.

Deployment validations

Before deploying changes, Hightouch validates dependencies. Hightouch blocks deployments until you've resolved all dependency issues. For example, if you try to deploy a dbt-based model from your staging to production workspace, but the dbt extension isn't set up in production, Hightouch blocks the deployment. Once you've resolved the issue, for example, by configuring a missing extension, you can retry the deployment.

Deployments will clear or replace any existing drafts or approval requests on a sync or model in a target workspace. You will be warned if a deployment will replace a draft during the validation step.

FAQ

What permissions do you need to use environments?

To link resources, you need create permissions for the relevant resource type in both workspaces you want to create the link between. To deploy changes, you need permission to create or update drafts for the relevant resource type in the target workspace you want to deploy changes to.

You can link sources to other sources, models to other models, destinations to other destinations, and syncs to other syncs. You can't link audiences or Customer Studio schema models. Please if this is something you're interested in.

The only way to link syncs to other syncs and models to other models is by deploying them. Once deployment creates a new sync or model, it's automatically linked for future deployments.

If you want to link existing syncs or models from one workspace to another, delete the development or testing version and recreate it by deploying it from your production environment. Don't hesitate to if you have any questions or concerns.

Can you use environments to copy resources?

You can use deployments to copy existing models and syncs but not sources and destinations. To copy an existing model or sync to a different workspace, follow the instructions for deploying changes.

Can you only deploy changes to production environments?

Deploying changes has no directionality. You can deploy changes from a testing workspace to a production workspace and vice-versa, as long as the validations pass.

Can you use environments and deployments with Git Sync?

If you already use Git Sync to manage your syncs and destinations across workspaces, deploying a sync or model to your target workspace would create its corresponding yaml file in the configured Git Sync repository. Beyond updating yaml files, environments and deployments don't interact with your Git Sync repositories.

You should use either Git Sync or the in-app environments and deployments feature for your environment management.

Ready to get started?

Jump right in or a book a demo. Your first destination is always free.

Book a demoSign upBook a demo

Need help?

Our team is relentlessly focused on your success. Don't hesitate to reach out!

Feature requests?

We'd love to hear your suggestions for integrations and other features.

Last updated: Jul 12, 2023

On this page

How do environments work?Separate resources for separate environmentsResource dependenciesEnvironment usageLink resourcesDeploy changesFAQWhat permissions do you need to use environments?Can you link any resource to another resource of the same type?How do you link existing models and syncs?Can you use environments to copy resources?Can you only deploy changes to production environments?Can you use environments and deployments with Git Sync?

Was this page helpful?