Skip to content

Add Algolia plugin#67

Open
andrewmumblebee wants to merge 4 commits into
mainfrom
work/ah/algolia
Open

Add Algolia plugin#67
andrewmumblebee wants to merge 4 commits into
mainfrom
work/ah/algolia

Conversation

@andrewmumblebee

@andrewmumblebee andrewmumblebee commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

🔌 Plugin overview

  • Plugin name: Algolia
  • Purpose / problem solved: Monitor an Algolia search application from SquaredUp. Imports every Algolia index as an object and surfaces index size/growth, search volume, and search quality (no-result rate, top searches, top no-result searches) on out-of-the-box dashboards — so search and platform teams can track their Algolia estate alongside everything else in SquaredUp.
  • Primary audience (e.g. platform teams, SREs, product teams): Platform/search teams and SREs running Algolia-powered search; product teams tracking search quality (no-result rate, popular and failing queries).
  • Authentication method(s) (e.g. OAuth, Username/Password, API Key): API Key — Algolia Application ID + API Key sent as X-Algolia-Application-Id / X-Algolia-API-Key headers (an Admin key, or a custom key with the listIndexes, settings and analytics ACLs).

🖼️ Plugin screenshots

Plugin configuration

image

Default dashboards

image image

🧪 Testing

Built and tested end-to-end against a live, authenticated Algolia application in a SquaredUp tenant (every data stream tested live, not just authored):

  • Authentication — the configValidation Authenticate step (List Indices) probed via squaredup test returned HTTP 200.
  • Importsquaredup index completed successfully; 13 Algolia Index objects imported (records, data/file size, last build time, pending tasks) and confirmed present in the graph.
  • Data streams — all 5 verified live with squaredup test:
    • indexes (account-wide) — one flat row per index, correct numeric types.
    • searchCount, noResultRate, topSearches, noResultSearches (per-index, scoped) — tested against two different indices each and confirmed they return differing results (e.g. cloud_docs ≈ 551 searches/7d vs ce_docs ≈ 2); empty results for zero-traffic indices confirmed as valid HTTP 200 rather than errors.
  • Multi-host handling — Search streams use the templated https://{{applicationId}}.algolia.net host; Analytics streams override config.baseUrl to https://analytics.{{region}}.algolia.com. Auth headers (set once at plugin level) work across both hosts; analytics region resolved and confirmed.
  • Validation & deploysquaredup validate passes (5 data streams, 1 import definition, UI, icon, default content, config validation, custom types) and the plugin deploys cleanly.

⚠️ Known limitations

  • Search + Search Analytics only. Does not include the Algolia Usage API (operations/records time series) or Monitoring API (latency/indexing/infrastructure metrics) — those require an Algolia Premium/Enterprise plan and dedicated keys. Both are strong candidates for a v2.
  • Analytics granularity is daily — analytics tiles use timeframes of 7 days and longer (sub-daily windows like "last hour" aren't meaningful for this data).
  • Analytics need search traffic — indices with no recent searches show empty analytics tiles. This is expected, not an error.
  • Analytics region must match the app — the wrong region returns empty analytics. The Analytics region field (default US) handles EU-region apps, and the analytics baseUrl includes a || 'us' fallback so an accepted default still resolves correctly.
  • Rate limits — the Analytics API is limited to ~100 requests/minute per application; dashboards over very large numbers of indices may be throttled.
  • listIndexes ACL required — a Search-Only key will fail setup validation because it cannot list indices.
  • No monitors shipped — Search/Analytics data has no clean binary health signal, so no monitors are included (avoiding over-alerting).
  • Transient .tmp reindex indices are imported as objects and may appear/disappear between imports — a normal Algolia reindex artefact, not a plugin bug.

📚 Checklist

  • Plugin, datastream and UI naming follow SquaredUp guidelines
  • Logo added
  • One or more dashboards added
  • README added including configuration guidance
  • No secrets or credentials included
  • I agree to the Code of Conduct

@andrewmumblebee andrewmumblebee marked this pull request as ready for review June 16, 2026 15:44
@andrewmumblebee andrewmumblebee requested a review from a team June 16, 2026 15:44
@github-actions

Copy link
Copy Markdown

🧩 Plugin PR Summary

📦 Modified Plugins

  • plugins/Algolia/v1

📋 Results

Step Status
Validation ❌ Failed
Deployment ⏭️ Skipped

🔍 Validation Details

plugins/Algolia/v1
{
  "valid": false,
  "errors": [
    {
      "file": "metadata.json",
      "message": "Unsupported metadata schema version: 2.1. Expected version 2.0."
    },
    {
      "file": "configValidation.json",
      "message": "Step references a data stream that is invalid or doesn't exist in this plugin: indexes",
      "path": [
        "steps",
        0,
        "dataStream",
        "name"
      ]
    }
  ]
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant