Product documentation

Merging Accounts

There are several reasons you may need to merge accounts. For example, duplicate records may have been created in error, integrations may have produced…

There are several reasons you may need to merge accounts. For example, duplicate records may have been created in error, integrations may have produced unintended duplicates, or customers may have entered incorrect company information when booking training.

You can perform the merge yourself without asking Administrate Support to do it for you. Merge Accounts one pair at a time from the Merge Account screen, which opens from Options > Merge Account on an Account, from the Potential Duplicate Accounts list or from the possible-duplicates banner on an Account, or with the GraphQL API. Use the Import Data tool to merge Accounts in bulk. Every route runs the same merge: the merged Account’s contacts, bookings, registrations and financial records are moved onto the kept Account, and the merged Account is then deleted.

Your user role needs the Account - Merge permission in addition to Account - edit and Account - delete. When this permission was introduced, it was granted to every role, for each company, that already had Account edit or Account delete permission there, so anyone who could merge before can still merge. An administrator can remove it from a role to stop that role merging.

A merge is normally recorded on the surviving Account’s Audit tab. The record is made on a best-effort basis, so a merge that succeeds can occasionally have no audit entry if the acting user or the audit write is unavailable. See Review a merge in the Account Audit tab.

Step 1: Identify the Accounts to Merge

Use a GraphQL query to search for the accounts you want to merge:

query searchForAccount {
  accounts(filters: [{
    field: name,
    operation: wordlike,
    value: "Globex"
  }]) {
    edges {
      node {
        id
        legacyId
        name
        isIndividual
        isVenue
      }
    }
  }
}

Replace Globex with the account name you want to search for.

The fields returned are important for validation:

  • id: Required to perform the merge (GraphQL ID).
  • legacyId: Helps confirm you are selecting the correct account (TMS ID).
  • name: Confirms account identity.
  • isIndividual: If true, the account is an individual. An individual can be merged into an organisation, and the organisation must be the one kept. The Merge Account screen does not merge two individuals.
  • isVenue: If true, the account is a venue. It can still be merged: its venues move to the kept account, and the kept account is marked as a venue.

Example response:

{
  "data": {
    "accounts": {
      "edges": [
        {
          "node": {
            "id": "T3JnYW5pc2F0aW9uOjMyNw==",
            "legacyId": "327",
            "name": "Globex Corporation",
            "isIndividual": false,
            "isVenue": false
          }
        }
      ]
    }
  }
}

In this example, the account is neither an individual nor a venue and can proceed to merge.

Step 2: Merge the Accounts

Use the following mutation, supplying the GraphQL IDs for the source (fromAccount) and destination (toAccount) accounts:

mutation mergeAccount {
  account {
    merge(input: {
      fromAccount: "XXXXXXXXXXXXX",
      toAccount: "XXXXXXXXXXXXXX"
    }) {
      account {
        id
        legacyId
        name
      }
      errors {
        label
        value
        message
      }
    }
  }
}

The fromAccount will be merged into the toAccount. Ensure you carefully select the correct destination account before executing the mutation.

If the mutation returns errors, review the error messages or contact Support for assistance.

Merging in bulk with Import Data

To merge many pairs of accounts at once, use the Import Data tool:

  1. Open Import Data and select the Account entity, then the merge action (“Merges two Accounts”).
  2. Download the template. It has two required columns:
    • From Account — the ID of the Account that will be merged and then deleted.
    • To Account — the ID of the Account that will be merged into.
  3. Fill in one row per merge. Both ID columns accept either form returned by the account search query in Step 1: the encoded Account ID (id, such as T3JnYW5pc2F0aW9uOjMyNw==) or the plain numeric TMS ID (legacyId, such as 327). Numeric IDs are converted to the encoded form during processing.
  4. Save as CSV and upload the file.

If you maintain your own external IDs on Accounts, the mergeByExternalIds action accepts those instead of encoded IDs.

Using the Merge Account screen

On the Merge Account screen, pick the other Account from Possible Duplicates or search for it. The comparison appears as soon as you select the other Account. Possible duplicates list every Account that matches this one, including all the Accounts in a larger group, with the reason each matched; use Load More Possible Duplicates when there are more. If the two Accounts are different organisations, select Not a Duplicate on this review screen instead of merging them. A confirmation names both Accounts before you dismiss the pair (see Potential Duplicate Accounts).

Then choose which Account to keep under Account to Keep. Each option shows the two roles side by side: Keep: the Account that survives, and Merge and Delete: the Account whose records move to it and which is then deleted. You can keep either one. The kept Account retains its own ID. Opening the merged and deleted Account’s URL redirects to the kept Account, but integrations that used the merged Account’s ID must use the kept ID from then on.

When you open the screen from an individual Account, you merge that individual into an organisation: the screen reads Merge and Delete name (Account ID: …) into an Organisation, the search offers organisations only, and the organisation is always the one kept. An individual Account cannot be kept over an organisation, because an individual Account holds exactly one Contact. Two individual Accounts cannot be merged on this screen.

If either Account has external IDs, the screen shows this warning:

WARNING: One or both Accounts have External IDs (xIDs). These are often used by integrations syncing data between Administrate and other systems. Check which Account ID your integrations use before choosing the Account to keep!

External IDs move to the kept Account only when it has no external ID with the same name.

The comparison table lets you choose, field by field, which Account’s value wins where they differ. For single-value fields you do not choose, the Account you are keeping wins and a blank value is filled from the merged Account. Yes/no flags combine, so a flag is set if either Account has it, and Industries are combined. Where a choice is offered, you can deliberately choose a blank value by selecting the side that is empty; the merge then leaves the field empty, subject to your permissions and the field’s validation. Custom fields, addresses and phone numbers are used to fill missing values on the kept Account.

Before you confirm, the screen reminds you that merging and deleting the other Account is permanent and can’t be undone, and that merging changes Accounts and linked records, so active webhooks may run. Type the name of the Account that will be merged and deleted where the screen asks you to Type “…” to confirm merging and deleting it, then select Merge and Delete.

Account hierarchies

If the Account you are merging away has child Accounts, the merge moves its live direct children, and their subtrees, under the surviving Account. Accounts with children can be merged; they are no longer refused for that reason.

The merge is designed not to create a parent cycle. If the kept Account sits anywhere below the merged Account, following each Account’s parent, it takes over the position the merged Account held. If that parent would create a cycle, the merge falls back to the kept Account’s own valid previous parent, or to no parent.

Only where parent Accounts already form a loop can a child Account fail to move under the kept Account without keeping that loop. Such a child is left with no parent. After the merge the screen you land on says so and names each child, for example: These child accounts could not move under the surviving account without creating a loop in the account hierarchy, so they were moved elsewhere: Acme Labs (now has no parent account). A merge does not otherwise repair a hierarchy.

When a merge is refused

If your user role is limited to particular companies, the merge is refused when one of these checks fails: you lack delete permission for the company of the Account being merged and deleted, you lack edit permission for the company of the kept Account, you lack edit permission for the company of a child Account the merge would move, the merge would move the kept Account into a company you cannot edit, or you lack the Account - Merge permission for either Account’s company. The error names the Account, the company and the permission you are missing. For example:

  • You need delete permission for company ‘Acme Ltd’ to merge away account ‘Acme UK’ (ID …).
  • You need edit permission for company ‘Acme Ltd’ to merge into account ‘Acme Group’ (ID …).
  • Merging would move child account ‘Acme Training’ (ID …), which belongs to company ‘Acme Ltd’ — you need edit permission for that company.
  • Merging would move account ‘Acme UK’ (ID …) into company ‘Acme Ltd’ — you need edit permission for that company.
  • You need merge permission for company ‘Acme Ltd’ to merge account ‘Acme UK’ (ID …).

A merge that would keep an individual Account over an organisation is refused for every user: An individual account cannot be kept when merging it with an organisation account. Keep the organisation account instead.

The message names the company in full even when your role cannot otherwise view that company.

A company-limited user is also refused when a child Account of the source belongs to no company, because there is no company to grant permission for: Merging would move child account ‘…’ (ID …), which belongs to no company; company-scoped users cannot move it.

To resolve a refusal, ask an administrator to grant the missing permission for that company, or ask a user who is not company-limited to run the merge. These are the checks the merge makes today; they are not a review of every record the merge moves.

Review a merge in the Account Audit tab

Open the surviving Account and select Audit. A merge appears as an Account row alongside the Account’s other changes and tasks, with the When, User, Type and Details columns. Merge rows read source name → surviving name and show the merged-from Account ID. Select a row to open the details.

The details separate two things:

  • Surviving Account shows what the merge actually changed on the survivor: each recorded field with its value before and after. This covers the Account’s own fields and flags, its industries and its root Account. It is not a full comparison of everything the merge moved: custom-field values, postal addresses and phone numbers are not listed here.
  • Requested field selections lists the choices made for each field when the merge was requested, and which Account each choice named (Surviving Account or Deleted Account). A requested choice is not proof that the survivor changed. Compare it with the Surviving Account section to see what changed.

Older merges show only the merge itself with no field details, and so can a merge that recorded no survivor changes and no requested selections. A merge that changed nothing on the survivor can still list its requested field selections. Values can appear as None when a field was empty, or as structured text for list-type fields. Very large values, or merges with very many changed fields, are shortened, and the details say the audit detail was truncated.

Use the Type and User filters or the Details search to find a merge, and sort by When, Type or User. Very large histories are searched over the most recent 10,000 entries of each kind, and the tab says when that applies.

The tab shows only merges recorded for this surviving Account. It is not a history of the whole hierarchy, and a merge appears on the survivor’s tab, not on an Account that has been deleted. Opening the deleted Account’s URL redirects to the survivor. Every merge across the Accounts you can see is also listed on the Merge Log tab of the Potential Duplicate Accounts page.

Access to the tab is all-or-nothing, as for the Event audit tab: anyone who can open an Account’s history sees every entry and every value on it, within the Account and Contact company scoping of their role.

Validate the surviving Account

A merge deletes the merged Account, so validate the kept Account after the merge completes:

  • contacts and their details
  • registrations and event history
  • invoices and other financial records
  • custom field values, where the two Accounts held different values

FAQ

What information is merged?

Everything linked to the merged Account moves to the kept Account, including:

  • Contacts, bookings and registrations
  • Invoices, credit notes, purchase ledger and other financial records
  • Opportunities and Tasks
  • Training Tokens: the merged Account’s token balance and history are combined into the kept Account’s
  • Pricing Agreements and Training Passes
  • Projects, Documents and private events
  • Learning paths, venues and child Accounts (see Account hierarchies)

The merged Account itself is then deleted.

What does not move, or moves only in part?

  • The merged Account’s own single-value field values: they are kept only where you chose them on the Merge Account screen, or where they filled a blank on the kept Account. Yes/no flags and Industries combine unless you choose a side, so the kept Account can gain them even where it already had values.
  • Its custom field values, postal addresses and phone numbers fill only values the kept Account does not already have.
  • Its external IDs move only where the kept Account has no external ID with the same name.
  • Its Audit history stays with the deleted Account; the merge itself is recorded on the kept Account’s Audit tab and on the Merge Log.
  • Any pairs it was marked Not a Duplicate with are removed.