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

# Send and update your data

> How to send your data to Algolia, batch large datasets, synchronize with incremental updates and atomic reindexing, or handle concurrency.

export const Records = () => <Tooltip tip="A record is a searchable object in an Algolia index. Each record consists of named attributes." cta="Algolia records" href="/doc/guides/sending-and-managing-data/prepare-your-data#algolia-records">
    records
  </Tooltip>;

export const Index = () => <Tooltip tip="An Algolia index is a searchable dataset that consists of records and configuration settings. These settings define how the records are searched and ranked.">
    index
  </Tooltip>;

export const AcademyLink = ({href, title}) => {
  return <Card horizontal title="Algolia Academy" href={href} icon="square-play">Learn more about: {title}</Card>;
};

After you've [structured your data](/doc/guides/sending-and-managing-data/prepare-your-data) into <Records />,
you need to send it to Algolia to make it searchable.

<AcademyLink href="https://academy.algolia.com/training/0199aaf1-800d-7fcf-aa9e-82636cfcf669/overview" title="Pushing Data to Algolia" />

## Index your data without coding

* [Dashboard](/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/importing-from-the-dashboard)
* [No-code connectors](/doc/guides/sending-and-managing-data/send-and-update-your-data/connectors/overview)
* [Crawler](/doc/tools/crawler/getting-started/overview)
* [Ecommerce integrations](/doc/integration)
* [Algolia CLI](/doc/tools/cli/get-started)

## Index your data with coding

* [API clients](/doc/libraries/sdk/v1/methods/save-objects)
* [Web frameworks](/doc/framework-integration)
* [Search API](/doc/rest-api/search)

## Name your index

Choose a unique, readable name, and make sure you don't use any sensitive or personally identifiable information (PII) as your <Index /> name.
This includes usernames, user IDs, or email addresses.
As index names appear in network requests,
**consider them as being publicly available.**

## Authenticate with Algolia

You need an [application ID and a valid API key](/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/importing-with-the-api#required-credentials) to push your data. These credentials protect your data, and you can set different access levels for your team.

Every indexing operation requires these credentials.
The application ID gives you access to your indices,
and the appropriate API key gives you the permission to perform indexing operations.

For more information, see:

* [API keys](/doc/guides/security/api-keys)
* [Security best practices](/doc/guides/security/security-best-practices)

## Unique object identifiers

The engine identifies each record with a unique `objectID`, ideally, one you set yourself. If you don't, Algolia generates them for you. You can retrieve the `objectID` by browsing the index. Later on, when you need to update or delete records, you must provide the `objectID`.

## Send records in batches

Algolia lets you send one or more records in a single API call or batch records. You can batch your indexing operations with the API or the dashboard.

For optimal indexing performance, **you should send your records in batches**.
An ideal batch size is approximately 10 MB, representing 1,000 to 10,000 records,
depending on the average record size.

Batching **reduces network calls and speeds up indexing**.
You'll see the most significant performance improvements if you have many records,
but it's good practice for everyone to batch indexing operations whenever possible.

**Batching doesn't change [how Algolia counts indexing operations](https://support.algolia.com/hc/en-us/articles/18138875086865).**
Every indexing operation adds to your count.

For more information, see:

* [Sending records in batches](/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/sending-records-in-batches)
* [Large indexing jobs](/doc/guides/scaling/scaling-to-larger-datasets)
* [Index operations are asynchronous](/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/index-operations-are-asynchronous)

## Update your data

After the initial data import,
you need to keep your index up-to-date with the latest changes on your app or website.
The appropriate update frequency depends on **how often your content changes and how fast you need it to be searchable**.

Take the example of an ecommerce store:

* You want to update price changes or product availability in real time.
* You don't need to update the number of sales (used for custom ranking) as often, so you can periodically send them in batches.

Aim to find a balance between:

* Getting fresh information into the search experience as quickly as possible
* Reducing the number of operations (which affects your performance and, potentially, the Algolia pricing).

For more information, see:

* [Incremental updates](/doc/guides/sending-and-managing-data/send-and-update-your-data/how-to/incremental-updates)
* [Data synchronization strategies](/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/the-different-synchronization-strategies)\*\*

## How to handle multiple users

You can use **[security-filtering](/doc/guides/security/api-keys/how-to/user-restricted-access-to-data)** to restrict the data users can see when searching. This allows for dedicated searchable content, which isn't visible to unauthorized users.

## Concurrency

When working in a concurrent environment,
you might need more control to guarantee data consistency.
The engine supports built-in operations that allow conditional updates based on [versioning and optimistic locking](/doc/guides/sending-and-managing-data/send-and-update-your-data/in-depth/handling-concurrency-with-versioning).

## Third-party integrations

You may use a framework or platform to power your app.
Most of these solutions have their own databases and frontends.

Algolia has several integrations to simplify the indexing process for popular frameworks and platforms:

* [Adobe Commerce/Magento Open Source](/doc/integration/magento-2/getting-started/quick-start)
* [BigCommerce](/doc/integration/bigcommerce/get-started/installation)
* [commercetools](/doc/integration/commercetools/get-started/installation)
* [Salesforce B2C Commerce](/doc/integration/salesforce-commerce-cloud-b2c/getting-started/introduction)
* [Shopify](/doc/integration/shopify/getting-started/quick-start)
* [Django](/doc/framework-integration/django/setup)
* [Laravel](/doc/framework-integration/laravel/getting-started/introduction-to-scout-extended)
* [Rails](/doc/framework-integration/rails/getting-started/setup)
* [Symfony](/doc/framework-integration/symfony/getting-started/algolia-searchbundle)
