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

# Compare a Component Across Campaign Versions

> Use the Component Diff in My Extole to see how a campaign component changed between two campaign versions, and bring settings from one version into your draft.

# Overview

The **Component Diff** compares two campaign components — an email, a reward, a business event, or any other component — setting by setting. Each side can come from any campaign and any campaign version. Usually you compare one component with itself at two versions, to check what an edit or an upgrade changed, or to bring settings from an earlier version back into your draft.

Users with Admin access can open the Component Diff. It is not available to the [User Support role](https://docs.extole.com/guides/user-management/managing-users/user-roles-permissions.md).

# Open the Component Diff

1. Open the campaign, then open the component you want to compare — for example, select a step in Flow Builder.
2. In the component's settings drawer, click the **Component actions** menu (⋮).
3. Select **Component Diff**.

The component picker opens for the incoming side, ready to compare the component with itself:

* The campaign is the component's own campaign.
* The version is **Published**. When the published version is also the latest draft, or the campaign has never been published, it is the version your latest draft was made from.
* The component is already selected: highlighted in the component tree, or shown in the picker field for a version's list. Select it to compare, or pick another one.

The address of the Component Diff keeps both sides — campaign, version, and component — so you can bookmark it or share it, and it opens with both sides already chosen.

# Choose What to Compare

The Component Diff has two sides, each shown in its own card:

* **Current**: the component whose settings you change when you apply.
* **Incoming**: the component you compare it with.

Each card shows the campaign name, the component name, and a version picker. To choose a different component, click the component name. The picker asks for three things in order:

1. **Campaign**: any campaign in your account.
2. **Version**: the version to read the component from.
3. **Component**: at **Latest draft**, the campaign's component tree, with a search box that accepts a name or a component ID. At any other version, a list of that version's components. The line above shows what you are browsing, for example "Components of Refer a Friend at Published (v423)".

The search starts with the current component's name and keeps it when you switch campaigns, so you can find the same component in another campaign.

Each version picker offers:

* **Published**: the version your customers see, with its number, for example **Published (v423)**. It is unavailable for a campaign that has never been published.
* **Latest draft**: the version with your most recent applied edits, with its number, for example **Latest draft (v427)**.
* **Version history**: the campaign's recent versions, each with its state and date. You can also type a version number into the picker.

A component that is not in the version you chose shows a message on that side, for example "The current component is not in v224. Pick a component from that version, or change the version."

To start over with a different incoming component, click **Clear comparison** (×). Changing either side clears the **Reject** and **Accept** choices you made.

# Read the Settings Tab

The **Settings** tab lists only what differs between the two sides. The count under the **Component Diff** title shows how many settings changed.

* **Sockets**: appears first when the component's sockets differ. A socket is where child components are installed — for example, the actions that run after a business event.
* **Modified**: settings that exist on both sides with different values.
* **Added**: settings that exist only on the incoming side.
* **Removed**: settings that exist only on the current side.

Use the **All**, **Modified**, **Added**, and **Removed** filters to show one section at a time.

## Sockets

Each socket row lists its child components on both sides and says what changed:

| Label | Meaning |
| - | - |
| **Socket added** or **Socket removed** | The socket exists on one side only. |
| **Children changed** | A child component was added or removed. |
| **Order changed** | The same child components, in a new order. |
| **Library version changed** | A child component has a new version from the component library. |
| **Re-saved** | A child component was saved again with the same library version. It is shown in gray, because nothing in it was upgraded. |

Each child component shows its library version, such as **Library v9**, and how many times it was saved in its campaign, such as "save 14". Its color and icon follow the **Tree** tab: added, removed, a new library version, or gray when it is unchanged.

Child components are matched by their component ID. A child that was replaced by a new component shows as removed on one side and added on the other, even when the two have the same name.

A child component that is on both sides is a link. Click it to open its own Component Diff in a new tab, at the same campaigns and versions. The socket rows are for review only.

## Where a Setting Gets Its Value

A setting can hold its own value, use the component's default value, or take its value from a parameter. When a modified setting gets its value from a different place on each side, each side names its source above the value: **Standalone value**, **Using default value**, or **Parameter value**. This is how a setting can be listed as modified while its values look the same.

# Bring Settings Into Your Draft

You can bring settings into your draft when **Current** is the latest draft of the campaign you opened the Component Diff from. **Published** counts when it is the same version as the latest draft. With any other current version, the Component Diff is for review, and the **Reject**, **Accept**, and **Apply changes** buttons don't appear.

Each setting in the **Modified**, **Added**, and **Removed** sections has a **Reject** and an **Accept** button. Every setting starts as **Reject**.

* **Reject** leaves the current setting as it is.
* **Accept** makes the current setting match the incoming side:

| Section | What Accept does to the current component |
| - | - |
| Modified | Replaces the current value with the incoming value, for each language. If the incoming setting gets its value from a different place, such as the default value or a parameter, the current setting switches to that place too. An incoming image is copied into the current component. |
| Added | Adds the setting, with the incoming value. |
| Removed | Deletes the setting. |

To decide several settings at once:

* **Reject** or **Accept** in a section heading, such as **Modified**, decides every setting in that section.
* A group heading inside a section has its own **Reject** and **Accept** when the group holds more than one setting.
* **Reject all** or **Accept all**, beside the filters, decides every setting in the diff.

When you have chosen, click **Apply changes**. It is unavailable until you accept at least one setting. **Apply changes** saves the accepted settings into the current component, in the campaign's latest draft, and leaves rejected settings untouched. The Component Diff then closes. **Cancel** closes it without saving anything.

If **Apply changes** shows an error, check the component before you try again: settings it added or deleted before the error stay that way.

Your customers don't see the change until you publish the campaign. See [Making Updates to your Campaigns](https://docs.extole.com/guides/programs-and-campaigns/managing-campaigns/making-updates-to-your-campaigns.md) for how applying and publishing differ.

# Read the Tree Tab

The **Tree** tab shows the component and its child components, and marks each child that was added, removed, or modified between the two sides. A child with changed settings shows how many, for example "3 settings".

Select that child to see its own settings diff. When you can bring settings into your draft, the child's settings have **Reject** and **Accept** buttons, and **Apply Changes** saves the accepted ones into that child. Click **Back to Tree** to return.

To open an added or removed child in the component builder, hover over it and click **Open in component builder**. The button appears when the child is in the campaign's latest draft.


## Related topics

- [Get a campaign by version](https://docs.extole.com/api-reference/campaigns/get-a-campaign-by-version.md)
- [Paging and Filtering List Endpoints](https://docs.extole.com/technical/platform-integrations/rest-apis/paging-and-filtering-list-endpoints.md)
- [Get a built campaign by version](https://docs.extole.com/api-reference/campaigns/get-a-built-campaign-by-version.md)
- [Get a component by version](https://docs.extole.com/api-reference/components/get-a-component-by-version.md)
- [Upgrade a component](https://docs.extole.com/api-reference/components/upgrade-a-component.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.