> ## Documentation Index
> Fetch the complete documentation index at: https://developers.pleo.io/llms.txt
> Use this file to discover all available pages before exploring further.

# How to Sync Tag Groups with Accounting Dimensions

export const SyncTagGroupsDiagram = () => {
  const [isDark, setIsDark] = useState(false);
  useEffect(() => {
    const check = () => setIsDark(document.documentElement.classList.contains("dark"));
    check();
    const observer = new MutationObserver(check);
    observer.observe(document.documentElement, {
      attributes: true,
      attributeFilter: ["class"]
    });
    return () => observer.disconnect();
  }, []);
  const nodeFill = isDark ? "#212222" : "#EEF4F4";
  const nodeStroke = isDark ? "#848989" : "#E1E6E6";
  const nodeTextStyle = isDark ? ",color:#EEF4F4" : ",color:#131414";
  const linkStyle = isDark ? "" : "linkStyle default stroke:#848989,stroke-width:1px;";
  const diagram = `
%%{init: {"themeVariables": {"fontSize": "24px"}}}%%
flowchart LR
    S1["1. Retrieve Selected Dimensions"] --> S2["2. Retrieve All Tag Groups"] --> S3["3. Match by Code"]
    S3 -->|No match| S4["4. Create Tag Group"]
    S3 -->|Match found| S5["5. Unarchive or Update"]
    S4 --> S6["6. Archive Unmatched"]
    S5 --> S6

click S1 "#1-retrieve-selected-dimensions-from-the-accounting-system"
click S2 "#2-retrieve-all-tag-groups-from-pleo"
click S3 "#3-match-dimensions-to-tag-groups-by-code"
click S4 "#4-create-tag-groups-for-new-dimensions"
click S5 "#5-unarchive-or-update-existing-tag-groups"
click S6 "#6-archive-tag-groups-with-no-matching-selected-dimension"

style S1 white-space:normal,fill:${nodeFill},stroke:${nodeStroke}${nodeTextStyle}
style S2 white-space:normal,fill:${nodeFill},stroke:${nodeStroke}${nodeTextStyle}
style S3 white-space:normal,fill:${nodeFill},stroke:${nodeStroke}${nodeTextStyle}
style S4 white-space:normal,fill:${nodeFill},stroke:${nodeStroke}${nodeTextStyle}
style S5 white-space:normal,fill:${nodeFill},stroke:${nodeStroke}${nodeTextStyle}
style S6 white-space:normal,fill:${nodeFill},stroke:${nodeStroke}${nodeTextStyle}
${linkStyle}
`;
  return <Mermaid chart={diagram} />;
};

export const TagsSyncWorkflowDiagramTopNav = ({highlight}) => {
  const [isDark, setIsDark] = useState(false);
  useEffect(() => {
    const check = () => setIsDark(document.documentElement.classList.contains("dark"));
    check();
    const observer = new MutationObserver(check);
    observer.observe(document.documentElement, {
      attributes: true,
      attributeFilter: ["class"]
    });
    return () => observer.disconnect();
  }, []);
  const nodeFill = isDark ? "#212222" : "#EEF4F4";
  const nodeStroke = isDark ? "#848989" : "#E1E6E6";
  const nodeTextStyle = isDark ? ",color:#EEF4F4" : ",color:#131414";
  const subgraphFill = isDark ? "#131414" : "#ffffff";
  const subgraphStroke = isDark ? "#848989" : "#6B7070";
  const subgraphTextStyle = isDark ? ",color:#EEF4F4" : ",color:#6B7070";
  const linkStyle = isDark ? "" : "linkStyle default stroke:#848989,stroke-width:1px;";
  const highlightStyle = highlight ? `style ${highlight} stroke:#FEB6FE,stroke-width:2px` : "";
  const shape = (id, label) => `${id}["${label}"]`;
  const diagram = `
%%{init: {"themeVariables": {"fontSize": "18px"}}}%%
flowchart LR

subgraph AS["Accounting System"]
    ${shape("source", "Dimensions & Dimension Values")}
end

subgraph Pleo["Pleo API's"]
    ${shape("A", "1.Select Dimensions for Sync")}
    ${shape("B", "2.Sync Tag Groups with Dimensions")}
    ${shape("C", "3.Sync Tags with Dimension Values")}
    A --> B --> C
end

source --> A

click A "/docs/current/how-tos/accounting-integrations/imports/tags/how-to-select-dimensions-for-tags-sync"
click B "/docs/current/how-tos/accounting-integrations/imports/tags/how-to-sync-tag-groups-with-accounting-dimensions"
click C "/docs/current/how-tos/accounting-integrations/imports/tags/how-to-sync-tags-with-dimension-values"

style A white-space:normal,fill:${nodeFill},stroke:${nodeStroke}${nodeTextStyle}
style B white-space:normal,fill:${nodeFill},stroke:${nodeStroke}${nodeTextStyle}
style C white-space:normal,fill:${nodeFill},stroke:${nodeStroke}${nodeTextStyle}
style source white-space:normal,fill:${nodeFill},stroke:${nodeStroke}${nodeTextStyle}
style AS fill:${subgraphFill},stroke:${subgraphStroke}${subgraphTextStyle}
style Pleo fill:${subgraphFill},stroke:${subgraphStroke}${subgraphTextStyle}

${highlightStyle}
${linkStyle}
`;
  return <Mermaid chart={diagram} />;
};

export const WhatComesNext = ({children, href}) => <div className="mt-4">
    <a href={href} className="btn-primary">
      {children} →
    </a>
  </div>;

export const RememberCallout = ({title, children}) => <div className="callout-box callout-remember">
    <div className="callout-row">
      <span className="callout-icon">
        <svg width="22" height="22" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="currentColor"><path d="M229.66,98.34,172.39,155.8c11.46,22.93-1.72,45.86-10.11,57a8,8,0,0,1-12,.83L42.34,105.76A8,8,0,0,1,43,93.85c29.65-23.92,57.4-10,57.4-10l57.27-57.46a8,8,0,0,1,11.31,0L229.66,87A8,8,0,0,1,229.66,98.34Z" opacity="0.2" /><path d="M235.32,81.37,174.63,20.69a16,16,0,0,0-22.63,0L98.37,74.49c-10.66-3.34-35-7.37-60.4,13.14a16,16,0,0,0-1.29,23.78L85,159.71,42.34,202.34a8,8,0,0,0,11.32,11.32L96.29,171l48.29,48.29A16,16,0,0,0,155.9,224c.38,0,.75,0,1.13,0a15.93,15.93,0,0,0,11.64-6.33c19.64-26.1,17.75-47.32,13.19-60L235.33,104A16,16,0,0,0,235.32,81.37ZM224,92.69h0l-57.27,57.46a8,8,0,0,0-1.49,9.22c9.46,18.93-1.8,38.59-9.34,48.62L48,100.08c12.08-9.74,23.64-12.31,32.48-12.31A40.13,40.13,0,0,1,96.81,91a8,8,0,0,0,9.25-1.51L163.32,32,224,92.68Z" /></svg>
      </span>
      <div>
        {title && <div className="callout-title">
            {title}
          </div>}
        <div className="callout-body">
          {children}
        </div>
      </div>
    </div>
  </div>;

<TagsSyncWorkflowDiagramTopNav highlight="B" />

<div className="border-[1px] rounded-none p-4 bg-[#ffffff] border-[#FEB6FE] dark:bg-[#131414] dark:border-[#FEB6FE]">
  <SyncTagGroupsDiagram />
</div>

This how-to explains how an integration synchronises Tag Groups in Pleo with the selected Accounting Dimensions from the Accounting System.

Syncing Tag Groups is the second step in the Tags Sync workflow.

Tag Groups in Pleo correspond to Dimensions in the Accounting System. This step ensures the Tag Group structure in Pleo mirrors the current state of the selected Dimensions.

Your integration must:

* Retrieve selected Dimensions from the AS
* Retrieve all Tag Groups (active and archived) from Pleo
* Create, unarchive, update, or archive Tag Groups as needed
* Deselect Dimensions that have become inactive in the AS

## Prerequisites

Before you begin:

* You're familiar with the [Tags Sync Overview](/docs/current/integration-design/accounting-integrations/imports/tags/integration-design-tags-overview) and the [Integration Design for Syncing Tag Groups](/docs/current/integration-design/accounting-integrations/imports/tags/integration-design-tags-sync-tag-groups)
* Your integration is authenticated using one of the [supported authentication methods](/docs/current/integration-design/auth/integration-design-auth-overview#authentication-policy-overview)
* Your integration can call Pleo's Tags API endpoints
* [Dimension selection has been configured](/docs/current/how-tos/accounting-integrations/imports/tags/how-to-select-dimensions-for-tags-sync)

## Scenario

This how-to continues from [How to Select Dimensions for Tags Sync](/docs/current/how-tos/accounting-integrations/imports/tags/how-to-select-dimensions-for-tags-sync).

The final Dimension selection from that step (**Department**, **Project**, **Finance**, and **Cost Centre**) is the input for this sync. The table below shows the starting state in both systems when this sync runs.

| Dimension (AS) | Selected | Tag Group (Pleo) | Pleo Status    |
| -------------- | -------- | ---------------- | -------------- |
| Department     | ✓ Yes    | Department       | Active         |
| Project        | ✓ Yes    | Project          | Active         |
| Finance        | ✓ Yes    | —                | Does not exist |
| Cost Centre    | ✓ Yes    | Cost Centre      | Archived       |
| —              | —        | Region           | Active         |

## Steps

### 1. Retrieve Selected Dimensions from the Accounting System

Fetch all Dimensions from the AS that are currently selected in your integration's configuration.

For each Dimension, verify it is still active. Deselect any that are no longer active.

**Example Pseudo:**

```pseudo theme={null}
selectedDimensions = loadSelectedDimensionsFromConfig()

activeDimensions = fetchDimensionsFromAS()

for dimension in selectedDimensions:
    if dimension not in activeDimensions:
        deselect(dimension)

selectedDimensions = loadSelectedDimensionsFromConfig()
```

#### Example Result

All four selected Dimensions are still active in the AS. None are deselected.

| Dimension   | AS Status | Retained? |
| ----------- | --------- | :-------: |
| Department  | Active    |   ✓ Yes   |
| Project     | Active    |   ✓ Yes   |
| Finance     | Active    |   ✓ Yes   |
| Cost Centre | Active    |   ✓ Yes   |

***

### 2. Retrieve All Tag Groups from Pleo

**API Endpoint**: GET [`/v0/tag-groups`](/reference/tags-api/tag-groups/returns-all-tag-groups-for-given-company)

**Example parameters:**

* companyId: `12abc3d4-e567-890e-1234-abc56e78fabc`
* includeArchived: `true`

Fetch both active and archived Tag Groups from Pleo. Including archived Tag Groups allows unarchiving rather than creating duplicates.

**Example Pseudo:**

```pseudo theme={null}
tagGroups = fetchTagGroupsFromPleo(includeArchived: true)
```

#### Example Request

<Tabs>
  <Tab title="OAuth 2.0">
    ```bash theme={null}
    curl -X GET "https://external.staging.pleo.io/v0/tag-groups?company_id=12abc3d4-e567-890e-1234-abc56e78fabc&include_archived=true" \
      -H "Authorization: Bearer <access_token>"
    ```
  </Tab>

  <Tab title="API Key">
    ```bash theme={null}
    curl --request GET \
    -u "pls_1ab2cd3e4f5g6h7a89b012c34de56f78_gabc90:" \
    -H "Accept: application/json;charset=UTF-8" \
    "https://external.staging.pleo.io/v0/tag-groups?company_id=12abc3d4-e567-890e-1234-abc56e78fabc&include_archived=true" \
    | jq
    ```
  </Tab>
</Tabs>

#### Example Response

```json theme={null}
{
  "data": [
    {
      "id": "faf59f4a-073e-4f23-9725-944d993e6310",
      "companyId": "12abc3d4-e567-890e-1234-abc56e78fabc",
      "name": "Cost Centre",
      "code": "Cost Centre",
      "archived": true,
      "createdAt": "2026-05-21T13:23:03.729251Z",
      "updatedAt": "2026-05-21T13:23:14.461704Z",
      "metadata": {}
    },
    {
      "id": "768fb809-b282-4411-875a-406f8e4c5bdb",
      "companyId": "12abc3d4-e567-890e-1234-abc56e78fabc",
      "name": "Department",
      "code": "Department",
      "archived": false,
      "createdAt": "2026-05-21T13:19:05.124301Z",
      "updatedAt": "2026-05-21T13:19:05.124301Z",
      "metadata": {}
    },
    {
      "id": "a9a0a2f5-a97b-41f9-aa28-dc3cde85f691",
      "companyId": "12abc3d4-e567-890e-1234-abc56e78fabc",
      "name": "Project",
      "code": "Project",
      "archived": false,
      "createdAt": "2026-05-21T13:19:43.112716Z",
      "updatedAt": "2026-05-21T13:19:43.112716Z",
      "metadata": {}
    },
    {
      "id": "f1cd0c96-32c5-4b85-8b93-8f6543bc6378",
      "companyId": "12abc3d4-e567-890e-1234-abc56e78fabc",
      "name": "Region",
      "code": "Region",
      "archived": false,
      "createdAt": "2026-05-21T14:12:44.543271Z",
      "updatedAt": "2026-05-21T14:12:44.543271Z",
      "metadata": {}
    }
  ]
}
```

#### What it looks like in Pleo Web App

<div style={{ textAlign: "center" }}>
  <img src="https://mintcdn.com/pleo-61d4d38b/wtOkkKeJcHLAWNr4/images/current/accounting-integrations/imports/tags/ui-tags-group-active.png?fit=max&auto=format&n=wtOkkKeJcHLAWNr4&q=85&s=def2762273a5c4577ca0be834997a06a" alt="Active Tag Groups in Pleo" width="100%" style={{ display: "block", margin: "0 auto" }} data-path="images/current/accounting-integrations/imports/tags/ui-tags-group-active.png" />
</div>

<br />

<div style={{ textAlign: "center" }}>
  <img src="https://mintcdn.com/pleo-61d4d38b/wtOkkKeJcHLAWNr4/images/current/accounting-integrations/imports/tags/ui-tags-group-archived.png?fit=max&auto=format&n=wtOkkKeJcHLAWNr4&q=85&s=92d7212c5eca085ead6dc776ab6b1723" alt="Archived Tag Groups in Pleo" width="100%" style={{ display: "block", margin: "0 auto" }} data-path="images/current/accounting-integrations/imports/tags/ui-tags-group-archived.png" />
</div>

#### Example Result

| Tag Group   | Pleo Status |
| ----------- | ----------- |
| Department  | Active      |
| Project     | Active      |
| Region      | Active      |
| Cost Centre | Archived    |

***

### 3. Match Dimensions to Tag Groups by Code

For each selected Dimension, attempt to find a matching Tag Group in Pleo using **code** (case-insensitive).

**Example Pseudo:**

```pseudo theme={null}
tagGroupsByCode = index tagGroups by code.toLowerCase()

for dimension in selectedDimensions:
    matchedTagGroup = tagGroupsByCode[dimension.code.toLowerCase()]

    if matchedTagGroup is null:
        createTagGroup(dimension)
    else if matchedTagGroup.archived == true:
        unarchiveTagGroup(matchedTagGroup, dimension)
    else:
        updateTagGroupIfNameChanged(matchedTagGroup, dimension)
```

#### Example Result

| AS Dimension | Tag Group (Pleo) | Pleo Status    | Action              |
| ------------ | ---------------- | -------------- | ------------------- |
| Department   | Department       | Active         | No action           |
| Project      | Project          | Active         | No action           |
| Finance      | —                | Does not exist | → Step 4: Create    |
| Cost Centre  | Cost Centre      | Archived       | → Step 5: Unarchive |
| —            | Region           | Active         | → Step 6: Archive   |

***

### 4. Create Tag Groups for New Dimensions

**API Endpoint**: POST [`/v0/tag-groups`](/reference/tags-api/tag-groups/creates-a-new-tag-group-resource)

If an AS Dimension is selected but no matching Pleo Tag Group exists, create a new Tag Group.

This only applies when no Tag Group with this code exists in Pleo (neither active nor archived). If a matching archived Tag Group exists, it is handled by step 5 (unarchive) instead.

**Example Pseudo:**

```pseudo theme={null}
if matchedTagGroup is null:
    newTagGroup.name     = dimension.name
    newTagGroup.code     = dimension.code
    newTagGroup.archived = false
    POST newTagGroup to Pleo
```

#### Example Request

<Tabs>
  <Tab title="OAuth 2.0">
    ```bash theme={null}
    curl -X POST "https://external.staging.pleo.io/v0/tag-groups?company_id=12abc3d4-e567-890e-1234-abc56e78fabc" \
      -H "Authorization: Bearer <access_token>" \
      -H "Content-Type: application/json" \
      -d '{
            "name": "Finance",
            "code": "FIN",
            "archived": false
          }'
    ```
  </Tab>

  <Tab title="API Key">
    ```bash theme={null}
    curl --request POST \
    -u "pls_1ab2cd3e4f5g6h7a89b012c34de56f78_gabc90:" \
    -H "Accept: application/json;charset=UTF-8" \
    -H "Content-Type: application/json" \
    "https://external.staging.pleo.io/v0/tag-groups?company_id=12abc3d4-e567-890e-1234-abc56e78fabc" \
    -d '{
          "name": "Finance",
          "code": "FIN",
          "archived": false
        }' \
    | jq
    ```
  </Tab>
</Tabs>

#### Example Response

```json theme={null}
{
  "data": {
    "id": "18741f60-1ded-4467-97e8-4b0e1178b3f2",
    "companyId": "12abc3d4-e567-890e-1234-abc56e78fabc",
    "name": "Finance",
    "code": "FIN",
    "archived": false,
    "createdAt": "2026-05-21T13:52:03.646775474Z",
    "updatedAt": "2026-05-21T13:52:03.646775474Z",
    "metadata": {}
  }
}
```

#### What it looks like in Pleo Web App

<div style={{ textAlign: "center" }}>
  <img src="https://mintcdn.com/pleo-61d4d38b/wtOkkKeJcHLAWNr4/images/current/accounting-integrations/imports/tags/ui-tags-group-added-finance.png?fit=max&auto=format&n=wtOkkKeJcHLAWNr4&q=85&s=47e12e2f46f1c25b622d303925198f02" alt="New Finance Tag Group Created in Pleo" width="100%" style={{ display: "block", margin: "0 auto" }} data-path="images/current/accounting-integrations/imports/tags/ui-tags-group-added-finance.png" />
</div>

#### Example Response `BAD_REQUEST`

You'll get an error similar to below if you try to create more than 5 active Tag Groups in Pleo.

```json theme={null}
{
  "error": {
    "type": "BAD_REQUEST",
    "message": "Active tag groups are limited to 5/company"
  }
}
```

***

### 5. Unarchive or Update Existing Tag Groups

**API Endpoint**: PUT [`/v0/tag-groups/{groupId}`](/reference/tags-api/tag-groups/updates-the-tag-group-resource-by-id)

**Example parameters:** groupId: `faf59f4a-073e-4f23-9725-944d993e6310`

If a matching Tag Group is found:

* **AS Dimension is active, Pleo Tag Group is archived** → Unarchive the Tag Group by setting `archived: false`
* **AS Dimension is active, Pleo Tag Group name differs** → Update the Tag Group name to match the AS
* **AS Dimension is active, Pleo Tag Group name matches** → No action required

**Example Pseudo:**

```pseudo theme={null}
if matchedTagGroup.archived == true:
    matchedTagGroup.archived = false
    matchedTagGroup.name     = dimension.name
    PUT matchedTagGroup to Pleo

else if matchedTagGroup.name != dimension.name:
    matchedTagGroup.name = dimension.name
    PUT matchedTagGroup to Pleo
```

#### Example Request

In the below example the "Cost Centre" Tag Group is unarchived.

<Tabs>
  <Tab title="OAuth 2.0">
    ```bash theme={null}
    curl -X PUT "https://external.staging.pleo.io/v0/tag-groups/faf59f4a-073e-4f23-9725-944d993e6310" \
      -H "Authorization: Bearer <access_token>" \
      -H "Content-Type: application/json" \
      -d '{
            "code": "Cost Centre",
            "name": "Cost Centre",
            "archived": false,
            "metadata": {}
          }'
    ```
  </Tab>

  <Tab title="API Key">
    ```bash theme={null}
    curl --request PUT \
    -u "pls_1ab2cd3e4f5g6h7a89b012c34de56f78_gabc90:" \
    -H "Accept: application/json;charset=UTF-8" \
    -H "Content-Type: application/json" \
    "https://external.staging.pleo.io/v0/tag-groups/faf59f4a-073e-4f23-9725-944d993e6310" \
    -d '{
      "code": "Cost Centre",
      "name": "Cost Centre",
      "archived": false,
      "metadata": {}
      }' \
    | jq
    ```
  </Tab>
</Tabs>

#### Example Response

```json theme={null}
{
  "data": {
    "id": "faf59f4a-073e-4f23-9725-944d993e6310",
    "companyId": "12abc3d4-e567-890e-1234-abc56e78fabc",
    "name": "Cost Centre",
    "code": "Cost Centre",
    "archived": false,
    "createdAt": "2026-05-21T13:23:03.729251Z",
    "updatedAt": "2026-05-21T13:59:14.102020Z",
    "metadata": {}
  }
}
```

#### What it looks like in Pleo Web App

<div style={{ textAlign: "center" }}>
  <img src="https://mintcdn.com/pleo-61d4d38b/wtOkkKeJcHLAWNr4/images/current/accounting-integrations/imports/tags/ui-tags-group-active-updated-with-unarchived.png?fit=max&auto=format&n=wtOkkKeJcHLAWNr4&q=85&s=5a3ae83d5322328d493f7d507575f5ae" alt="Active Tag Groups in Pleo" width="100%" style={{ display: "block", margin: "0 auto" }} data-path="images/current/accounting-integrations/imports/tags/ui-tags-group-active-updated-with-unarchived.png" />
</div>

<br />

<div style={{ textAlign: "center" }}>
  <img src="https://mintcdn.com/pleo-61d4d38b/wtOkkKeJcHLAWNr4/images/current/accounting-integrations/imports/tags/ui-tags-group-archived-removed.png?fit=max&auto=format&n=wtOkkKeJcHLAWNr4&q=85&s=a54bba042688ebcea0b795662f91ee14" alt="Archived Tag Groups in Pleo" width="100%" style={{ display: "block", margin: "0 auto" }} data-path="images/current/accounting-integrations/imports/tags/ui-tags-group-archived-removed.png" />
</div>

***

### 6. Archive Tag Groups with No Matching Selected Dimension

**API Endpoint**: PUT [`/v0/tag-groups/{groupId}`](/reference/tags-api/tag-groups/updates-the-tag-group-resource-by-id)

If a Pleo Tag Group is active but its corresponding AS Dimension is no longer selected, archive the Tag Group.

Do not delete Tag Groups. Archiving is non-destructive and reversible.

**Example Pseudo:**

```pseudo theme={null}
selectedCodes = selectedDimensions.map(d => d.code.toLowerCase())

for tagGroup in tagGroups where archived == false:
    if tagGroup.code.toLowerCase() not in selectedCodes:
        tagGroup.archived = true
        PUT tagGroup to Pleo
```

#### Example Request

<Tabs>
  <Tab title="OAuth 2.0">
    ```bash theme={null}
    curl -X PUT "https://external.staging.pleo.io/v0/tag-groups/f1cd0c96-32c5-4b85-8b93-8f6543bc6378" \
      -H "Authorization: Bearer <access_token>" \
      -H "Content-Type: application/json" \
      -d '{
        "code": "Region",
        "name": "Region",
        "archived": true,
        "metadata": {}
      }'
    ```
  </Tab>

  <Tab title="API Key">
    ```bash theme={null}
    curl --request PUT \
    -u "pls_1ab2cd3e4f5g6h7a89b012c34de56f78_gabc90:" \
    -H "Accept: application/json;charset=UTF-8" \
    -H "Content-Type: application/json" \
    "https://external.staging.pleo.io/v0/tag-groups/f1cd0c96-32c5-4b85-8b93-8f6543bc6378" \
    -d '{
      "code": "Region",
      "name": "Region",
      "archived": true,
      "metadata": {}
    }' \
    | jq
    ```
  </Tab>
</Tabs>

<RememberCallout title="Remember">
  * Archiving a Tag Group does not automatically archive its Tags. Tags belonging to an archived Tag Group remain in their current state.
  * As this is a PUT action, include the current values for all fields; only `archived` should change.
</RememberCallout>

#### Example Response

```json theme={null}
{
  "data": {
    "id": "f1cd0c96-32c5-4b85-8b93-8f6543bc6378",
    "companyId": "12abc3d4-e567-890e-1234-abc56e78fabc",
    "name": "Region",
    "code": "Region",
    "archived": true,
    "createdAt": "2026-05-21T14:12:44.543271Z",
    "updatedAt": "2026-05-21T14:25:14.216836Z",
    "metadata": {}
  }
}
```

***

## Result

The table below recaps what happened to each Tag Group across all steps.

| Tag Group   | Step 1 (AS Selection) | Step 2 (Pleo State) | Step 3 (Match)     | Action              |
| ----------- | --------------------- | ------------------- | ------------------ | ------------------- |
| Department  | Selected, active      | Active              | Matched (active)   | No action           |
| Project     | Selected, active      | Active              | Matched (active)   | No action           |
| Finance     | Selected, active      | Does not exist      | No match           | Created (Step 4)    |
| Cost Centre | Selected, active      | Archived            | Matched (archived) | Unarchived (Step 5) |
| Region      | —                     | Active              | No match           | Archived (Step 6)   |

Pleo now reflects the selected Dimensions from the AS.

| Tag Group   | Final State in Pleo | AS Selection | Aligned with AS? |
| ----------- | ------------------- | ------------ | :--------------: |
| Department  | Active              | Selected     |       ✓ Yes      |
| Project     | Active              | Selected     |       ✓ Yes      |
| Finance     | Active              | Selected     |       ✓ Yes      |
| Cost Centre | Active              | Selected     |       ✓ Yes      |
| Region      | Archived            | —            |       ✓ Yes      |

The Tag Group structure is now ready for Tag synchronisation.

***

## What Comes Next?

<WhatComesNext href="/docs/current/how-tos/accounting-integrations/imports/tags/how-to-sync-tags-with-dimension-values">
  How to Sync Tags with Dimension Values
</WhatComesNext>

***

<div className="text-xs uppercase" style={{ fontVariant: 'small-caps' }}>
  this how-to is part of:
</div>

<div className="mt-4 flex flex-wrap gap-2">
  <a
    href="/docs/current/guides/accounting-integrations/imports/tags-sync-workflow-guide"
    className="inline-flex items-center rounded-full border border-gray-300 dark:border-gray-600
px-3 py-1 text-xs font-medium
bg-white dark:bg-[#1f262b] text-black dark:text-white
hover:bg-gray-100 dark:hover:bg-[#2b2f33]
transition-colors"
  >
    Tags Sync Workflow Guide
  </a>
</div>

***

## Related Reading

* [Sync Tag Groups with Dimensions](/docs/current/integration-design/accounting-integrations/imports/tags/integration-design-tags-sync-tag-groups)
* [Data Mapping](/docs/current/integration-design/accounting-integrations/imports/tags/integration-design-tags-data-mapping)
* [Platform Capabilities — Tags Sync](/docs/current/platform/accounting-integrations/imports/tags/tags-sync-overview)

***
