Algolia Netlify
Netlify Functions to listen to Ghost Webhooks on post changes and update defined Algolia search index.
Usage
Set up Algolia
First step is to grab the API keys and Application ID from Algolia. For the setup we need both, the "Search-Only API Key" as well as the "Admin API Key".
The Admin API Key can either be the general one, or can be created just for this specific search index.
If you decide to create a new API key, you want to make sure that the generated key has the following authorizations on your index:
- Search (
search)
- Add records (
addObject)
- Delete records (
deleteObject)
- List indexes (
listIndexes)
- Delete index (
deleteIndex)
Set up Netlify Functions
The Ghost Algolia tooling uses Ghost Webhooks to index and update posts. The scripts that receive and process the webhooks are hosted by Netlify Functions:
- Deploy to Netlify by clicking on this button:

- Click 'Connect to Github' and give Netlify permission
- Configure your site
- Choose a repository name
- Set 'TRUE' to trigger indexing
- Algolia Application ID
- The Algolia Admin API key or and API key with the permissions as described above
- The name of the index you want to use
- Set the
NETLIFY_KEY to be used with the target URL
Set up Ghost Webhooks
Ghost webhooks will initiate posts to be indexed to Algolia. This can be a new entry, an update, or a removal. On Ghost's admin panel, create a new Custom Integration (Ghost Admin → Settings → Integrations → Custom Integrations) and the following webhooks:
-
post.published
-
post.published.edited
-
post.unpublished
-
post.deleted
These webhooks will trigger an index on every future change of posts.
To run an initial index of all the content, you can use the handy CLI from our Ghost Algolia tooling. Head over here and follow the instructions from there.
Security
To avoid unauthorized access to the Netlify functions endpoints, we highly recommend to setup the NETLIFY_KEY variable. This key is currently optional but will be enforced in the future.
Develop
This is a mono repository, managed with lerna.
Follow the instructions for the top-level repo.
git clone this repo & cd into it as usual
- Run
yarn to install top-level dependencies.
To run this package locally, you will need to copy the existing .env.example file to .env and fill it with the correct keys.
By running
you will create a server on localhost:9000 where your functions will be exposed to listen to (e. g. http://localhost:9000/.netlify/functions/post-unpublished), so you can use them in your local Ghost instance as Webhook target URL.
Test
yarn lint run just eslint
yarn test run lint and tests
Copyright & License
Copyright (c) 2013-2023 Ghost Foundation - Released under the MIT license.