wkentdag

payload plugin algolia

by wkentdag
Search
v3
^3.0.0
MIT

Overview

Summary generated from the README

Syncs documents from selected Payload collections to Algolia using collection hooks. It is added through the plugins array with Algolia credentials and a list of collection slugs. Requires Payload 3.x. Drafts are not indexed and globals are not supported.

Features

  • Indexes documents from chosen collections into Algolia on create, update and delete
  • Adds objectID and collection keys to each record
  • Custom generateSearchAttributes function to reshape records
  • Optional waitForHook to await Algolia operations in hooks
  • Removes unpublished documents from search results

Use cases

  • Add Algolia-powered site search to a Payload site with pages and posts
  • Enrich search records with related data such as media URLs before indexing

From the author

Algolia search plugin for PayloadCMS

Installation

npm i payload-plugin-algolia

17

Stars

2

Forks

3

Open Issues

3 months ago

Last Updated

0

Weekly Downloads

v1.0.2

npm Version

26.3 KB

Unpacked Size

1

Dependencies

GitHub stars

Trends appear after 7 days of data. Daily snapshots have not started yet.

npm weekly downloads

Trends appear after 7 days of data. Daily snapshots have not started yet.

Each point is npm's rolling 7-day download count.

Health Score

48/100Fair

Composite score based on GitHub activity, stars, npm downloads, publish recency, dependency count, and package size.

Badge for your README

Payload Directory health badge
Markdown
[![Payload Directory](https://payloaddirectory.dev/badge/786237326-root.svg)](https://payloaddirectory.dev/plugins/786237326-root)
HTML
<a href="https://payloaddirectory.dev/plugins/786237326-root"><img src="https://payloaddirectory.dev/badge/786237326-root.svg" alt="Payload Directory"></a>
Updated Jul 8, 2026Created Apr 13, 2024Published Jul 8, 2026

README

payload-plugin-algolia

PayloadCMS plugin that syncs collections with Algolia search

ci status

Requires Payload 3.x (payload peer dependency).

Installation

npm i payload-plugin-algolia

Usage

At a minimum, the plugin requires Algolia credentials and a list of enabled collections.

// payload.config.ts

import { buildConfig } from 'payload'
import { AlgoliaSearchPlugin } from 'payload-plugin-algolia'
import Pages from './collections/Pages'
import Posts from './collections/Posts'

export default buildConfig({
  collections: [Pages, Posts],
  plugins: [
    AlgoliaSearchPlugin({
      algolia: {
        appId: process.env.ALGOLIA_APP_ID,
        apiKey: process.env.ALGOLIA_ADMIN_API_KEY,
        index: process.env.ALGOLIA_INDEX,
      },
      collections: ['pages', 'posts'],
    }),
  ],
  // ...more config
})

Options

generateSearchAttributes

By default, the plugin will pass the entire document through to Algolia, with two appended keys:

  • objectID: format ${collection}:${id} eg pages:1
  • collection: the collection slug

You can modify search attributes by providing a custom generateSearchAttributes function:

import { type GenerateSearchAttributes } from 'payload-plugin-algolia'

interface PageRecord {
  title: string
  text: string
}

interface PostRecord extends PageRecord {
  image: string
}

const generateSearchAttributes: GenerateSearchAttributes<PageRecord | PostRecord> = async ({
  doc,
  collection,
  req: { payload },
}) => {
  switch (collection.slug) {
    case 'posts': {
      if (doc.featured_image) {
        const { url } = await payload.findByID({
          collection: 'media',
          id: doc.featured_image as number,
        })

        return {
          ...doc,
          image: url,
        }
      }

      return doc
    }
    default:
      return doc
  }
}

waitForHook

Boolean, default = false

Set to true to wait for algolia set / delete operations during the collection hooks.

Notes

The current scope of the plugin is quite limited. PRs welcome!

Drafts

Drafts are not indexed. If a document is unpublished, it gets removed from search results. Otherwise, draft updates to a published document have no effect.

Globals

Globals are not currently supported for indexing.

Algolia search config

The internal Algolia client accepts all options. Beyond that, the rest of the setup for a typical Algolia configuration is outside the scope of the plugin (setting search attributes and facets, etc).

Contributing

After cloning the repo and installing dependencies, run pnpm exec simple-git-hooks to setup automatic pre-commit linting.

Similar plugins