Versioning allows developers to manage multiple versions of an integration at
different stages of development.

On the **Develop** tab in the Google Home Developer Console, integrations are
considered "unversioned". Once you begin the [Test phase of
development](https://developers.home.google.com/matter/checklist#test_field_trial) on the
**Test** tab, integrations become versioned. An integration version is used
from that point forward for every remaining step in the workflow, from Test to
Launch.

For example, you might have one version of an integration undergoing
certification for an imminent launch, while a newer version of the integration
with different functionality is being tested for another launch a few months
out.

## Prerequisites

Integration versions are a snapshot of an unversioned integration. This means
that when you create a test plan for certification, and thus an integration
version, *all branding metadata related to that integration must be the
information you wish to use for the launched integration*.
**Before you create a certification test plan, make sure you have done the
following:**

<br />

1. [Created a company profile](https://developers.home.google.com/matter/project/profile.md.txt).
2. [Entered the production Vendor ID
   (VID) for the integration](https://developers.home.google.com/matter/integration/create#vendor_id).
3. [Configured setup and branding](https://developers.home.google.com/matter/integration/branding.md.txt).

**If you have not completed
all of these
for your integration, an integration version created for certification testing
*cannot be certified*.** You will have to create a new version and start over
from the Test step.

You will also have to create a new version and start over **if you want to
update your branding before an integration version is certified.**

## Create a new version

When you [create a test plan](https://developers.home.google.com/matter/test.md.txt#create) for
certification, a new version of the integration is created. This numbered
version is listed in all integration lists in the Developer Console
from the Test tab onwards.

*New versions are never created from other numbered versions.* For example, the
first test plan you create for an integration will create version *v.1* for that
integration. Creating another test plan will create version *v.2* for that
integration, but this version will not be based on *v.1* . Instead, this version
is based on the unversioned instance of the integration, same as *v.1* was.

The *N/A* version of an integration represents the unversioned instance of the
integration, which is managed on the **Develop** tab.

In other words, on **Matter** \> **Test** in the
Developer Console:

- If you click **Test** for version *N/A* of the integration, a new version is created. The version number will be one higher than any existing numbered versions.
  - If no numbered versions exist, version *v.1* is created.
  - If version *v.1* exists, version *v.2* is created. If version *v.2* exists, version *v.3* is created, and so on.
- If you click **Test** for a numbered version of the integration (for example, *v.1* ), a new version is *not* created. Instead, version *v.1* is tested again.

> [!IMPORTANT]
> **Key Point:** Once created, an integration version is immutable. Metadata for the version, such as branding, *cannot be changed* for that version.

## Metadata

When a version is created, any metadata listed in the
[prerequisites](https://developers.home.google.com/matter/integration/versioning.md.txt#prerequisites) that has been added for the unversioned
integration is attached to the version. However, **the metadata attached to a
version cannot be viewed or changed.**

Any change to an integration's metadata will not be reflected in existing
versions. A [new version must be created](https://developers.home.google.com/matter/integration/versioning.md.txt#create) for the updated metadata to
be used for Certification and Launch.

## Delete a version

Integration versions cannot be deleted and are not designed to be deleted. They
should be updated to reflect a state of the integration (new test plan or field
trial) that can be certified and launched.

An integration version is only removed from the Developer Console when
it has launched and is later replaced by the launch of a different version.