# Albato Data Storage: Store Data and Match Records Across Apps — Albato Help Center

Source: https://albato.com/wiki/articles/albato-storage-store-and-organize-your-data

Welcome to Albato Help

Search articles

# Albato Data Storage: Store Data and Match Records Across Apps

Last update:  
6/10/2026 · 2 min read

* * *

IN THIS ARTICLE

Albato Data Storage keeps data between automation runs. Use it to match record IDs across apps, collect records for a batch transfer, or reuse saved values in other automations.

**How the Storage Is Organized**

Think of it as a table in Google Sheets. Each record is a row. Its **key** is a unique ID, equivalent to column **A**. The other columns are **variables**, such as a status, an update date, or an ID from another app. Use the key to find or update a saved record.

## How to Connect Albato Data Storage

1.  Go to **Apps** and click **Add a connection**.

Screenshot 01

2.  Select **Albato Data Storage** and click **Add a connection**.

Screenshot 02

3.  Enter a **name** for the connection and define the variables it will store.

Type each variable name and press **Enter** to add another variable. You can create separate storage connections for different tasks.

Screenshot 03

## Available Actions

Screenshot 04

-   **Data by key: delete value** deletes a saved record. For a one-time transfer where the record is no longer needed afterward, add this action at the end of the automation.
    
-   **Data by key: add/update value** creates a record or updates an existing one. If the supplied key already exists, the action updates that record's other fields instead of creating a duplicate.
    
-   **Counter by key** actions maintain a counter for a key rather than creating a row with variable fields. You can add or increment a counter by **1**, retrieve its current value, or clear it.
    

Screenshot 05

## Available Triggers

Screenshot 06

Choose when the automation should start and whether it should process records individually or in batches.

-   **New rows** (batch) collects new records and passes them as a row section. Use it for bulk transfers, such as the data aggregation example below.
-   **New row** starts an automation when a new record is created in the storage.
-   **Row updated** starts an automation when an existing record is updated.

## Use Cases

### Match Records Across CRM Systems

When a deal has different IDs in two CRM systems, save the pair in Data Storage. Use the first CRM's deal ID as the key and the second CRM's ID as a variable. An update automation can then look up the saved ID to find the matching deal in the second CRM.

To also keep the deal's status and update date, define these three variables. The deal ID remains the record key.

-   **status** holds the deal's status.
-   **dateUpdate** holds its update date.
-   **externalCrmId** holds its ID in the second CRM.

Screenshot 07

Enter the variables in the connection settings as shown below.

Screenshot 08

The variables become available as fields when you configure actions in an automation.

You can return to the connection settings to add, remove, or edit variables.

> Important: Renaming a variable changes its field code and breaks its mappings in previously configured automations. Review and update those mappings after renaming a variable.

Open the configured connection to view saved records in the **Data by key** tab.

Screenshot 09

### Collect Data for Batch Transfers

When a destination needs contact data in batches, use Data Storage as an intermediate store. One automation saves new and updated CRM records; another exports the accumulated records once a day. This separates collection from delivery so you can account for the destination's requirements and limits.

### Use Data Storage as an Alternative to Table Lookup

Use a saved mapping table to match statuses or other values between CRM systems.

For example, **New Deal** in CRM 1 might have ID **123**, while the corresponding status in CRM 2 has ID **456**. Save this mapping once in Data Storage and reuse it across automations. A separate automation can add new mappings or update existing ones.

For a comparison, see the [Table Lookup instruction](https://albato.com/en/wiki/articles/table-lookup-tool).

## Sync Contacts Between HubSpot and Salesforce

**Before You Start**

-   Connect [HubSpot](https://albato.com/en/wiki/articles/how-to-connect-hubspot-to-albato) and [Salesforce](https://albato.com/en/wiki/articles/how-to-connect-salesforce-to-albato) to Albato.
-   Create a Data Storage connection with an **externalCrmId** variable, following the setup above.

This example uses two automations. The first creates Salesforce contacts from new HubSpot contacts and saves their IDs. The second updates those Salesforce contacts when the HubSpot records change. The same pattern can be used for other records, such as deals.

### Create Contacts and Save Their IDs

1.  Configure **HubSpot** as the trigger for new contacts and **Salesforce** as the action that creates a contact.

Screenshot 10

2.  Add **Albato Data Storage** and select **Data by key: add/update value**.

Screenshot 11

**Map the Two Contact IDs**

-   **Key**: select the contact ID from the HubSpot trigger.
-   **externalCrmId**: select the contact ID returned by the Salesforce action.

Screenshot 12

The completed automation has three steps.

Screenshot 13

### Update the Matching Contacts

Create a separate automation for contact updates.

1.  Add a **HubSpot** trigger that retrieves contact updates.

Screenshot 14

2.  Add **Albato Data Storage** and select **Data by key: find values**.

Screenshot 15

In **Key**, select the **contact ID** from HubSpot. This identifies the saved record to retrieve.

Screenshot 16

3.  Add **Salesforce** and select **Update a record**.

Screenshot 17

In **Entity ID**, select **externalCrmId** from the Data Storage step.

Screenshot 18

Map the remaining fields you want to update in Salesforce.

### Optional: Route New and Existing Contacts

Add the [Router tool](https://albato.com/en/wiki/articles/router-tool) to the update automation if you need different paths for contacts with and without a saved Salesforce ID.

-   **externalCrmId is empty**: create a Salesforce contact.
-   **externalCrmId has a value**: continue to the update action.

The following diagram shows this optional routing pattern.

Screenshot 19

## Related Articles

-   [Connect HubSpot to Albato](https://albato.com/en/wiki/articles/how-to-connect-hubspot-to-albato)
-   [Connect Salesforce to Albato](https://albato.com/en/wiki/articles/how-to-connect-salesforce-to-albato)
-   [Set Up the Router Tool](https://albato.com/en/wiki/articles/router-tool)
-   [Use Table Lookup](https://albato.com/en/wiki/articles/table-lookup-tool)

Did this answer your question?
