Skip to main content
Use the Push to Algolia connector to transform your data and send it to Algolia using an API client.

Get started

  1. Go to the Algolia dashboard and select your Algolia .
  2. On the left sidebar, select Data sources.
  3. On the Connectors page, select Push to Algolia, then click Connect.
  4. Configure your transformation: create a new one or reuse an existing one.
  5. Configure your destination: create a new one or reuse an existing one.
  6. Create the task to generate a taskID.

Usage

How to update your API clients implementation:

Search API client WithTransformation helper methods

The helper methods are drop-in replacements for the standard API clients methods (saveObjects, partialUpdateObjects, replaceAllObjects) but all rely on the push API endpoints and are subject to the connector limits.
This solution is recommended if:
  • You only have one destination linked to the you’re targeting.
  • You already have an existing implementation using an API client.

saveObjectsWithTransformation

var response = await client.SaveObjectsWithTransformationAsync(
  "ALGOLIA_INDEX_NAME",
  new List<Object>
  {
    new Dictionary<string, string> { { "objectID", "1" }, { "name", "Adam" } },
    new Dictionary<string, string> { { "objectID", "2" }, { "name", "Benoit" } },
  },
  true
);

partialUpdateObjectsWithTransformation

var response = await client.PartialUpdateObjectsWithTransformationAsync(
  "ALGOLIA_INDEX_NAME",
  new List<Object>
  {
    new Dictionary<string, string> { { "objectID", "1" }, { "name", "Adam" } },
    new Dictionary<string, string> { { "objectID", "2" }, { "name", "Benoit" } },
  },
  true,
  true
);

replaceAllObjectsWithTransformation

var response = await client.ReplaceAllObjectsWithTransformationAsync(
  "ALGOLIA_INDEX_NAME",
  new List<Object>
  {
    new Dictionary<string, string> { { "objectID", "1" }, { "name", "Adam" } },
    new Dictionary<string, string> { { "objectID", "2" }, { "name", "Benoit" } },
    new Dictionary<string, string> { { "objectID", "3" }, { "name", "Cyril" } },
    new Dictionary<string, string> { { "objectID", "4" }, { "name", "David" } },
    new Dictionary<string, string> { { "objectID", "5" }, { "name", "Eva" } },
    new Dictionary<string, string> { { "objectID", "6" }, { "name", "Fiona" } },
    new Dictionary<string, string> { { "objectID", "7" }, { "name", "Gael" } },
    new Dictionary<string, string> { { "objectID", "8" }, { "name", "Hugo" } },
    new Dictionary<string, string> { { "objectID", "9" }, { "name", "Igor" } },
    new Dictionary<string, string> { { "objectID", "10" }, { "name", "Julia" } },
  },
  3
);

Ingestion API push method

This solution is recommended if you only have one destination linked to the index you are targeting.
var response = await client.PushAsync(
  "ALGOLIA_INDEX_NAME",
  new PushTaskPayload
  {
    Action = Enum.Parse<Action>("AddObject"),
    Records = new List<PushTaskRecords>
    {
      new PushTaskRecords
      {
        ObjectID = "o",
        AdditionalProperties = new Dictionary<string, object>
        {
          { "key", "bar" },
          { "foo", "1" },
        },
      },
      new PushTaskRecords
      {
        ObjectID = "k",
        AdditionalProperties = new Dictionary<string, object>
        {
          { "key", "baz" },
          { "foo", "2" },
        },
      },
    },
  }
);

Ingestion API pushTask method

This solution is recommended if you have multiple destinations linked to the index you are targeting.
var response = await client.PushTaskAsync(
  "6c02aeb1-775e-418e-870b-1faccd4b2c0f",
  new PushTaskPayload
  {
    Action = Enum.Parse<Action>("AddObject"),
    Records = new List<PushTaskRecords>
    {
      new PushTaskRecords
      {
        ObjectID = "o",
        AdditionalProperties = new Dictionary<string, object>
        {
          { "key", "bar" },
          { "foo", "1" },
        },
      },
      new PushTaskRecords
      {
        ObjectID = "k",
        AdditionalProperties = new Dictionary<string, object>
        {
          { "key", "baz" },
          { "foo", "2" },
        },
      },
    },
  }
);

Performance considerations

If you don’t need an Algolia-managed transformation, send records in the traditional way to avoid unnecessary overhead.

Supported indexing actions

The Push to Algolia connector supports all action types for batch indexing operations. For deleteObject, delete, and clear actions, it skips the transformation and uses traditional indexing instead.

Connector Debugger

To check and debug pushTask operations:
  • Check incoming events in the Connector Debugger on the Algolia dashboard.
    • The eventID returned by a successful pushTask API call shows the status of the indexing operation.
  • To get real-time feedback, add the watch parameter to the pushTask API call. The response body reports errors and successes.

Limitations

This connector is subject to the following limitations:
Last modified on February 20, 2026