{
  "data": {
    "a": {
      "slug": "novu",
      "name": "Novu",
      "vendor": "Novu",
      "vendorUrl": "https://novu.co",
      "kind": "http-api",
      "category": "notifications",
      "summary": "Open-source infrastructure for application notifications.",
      "url": "https://www.anchorterminal.com/tools/novu",
      "markdownUrl": "https://www.anchorterminal.com/tools/novu.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/novu.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/novu.json",
      "repo": "https://github.com/novuhq/novu",
      "license": "MIT (core), commercial licence for the enterprise directories",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.novu.co/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "@novu/api"
        },
        {
          "registry": "pypi",
          "name": "novu-py"
        }
      ],
      "auth": "mixed",
      "authNotes": "Secret key in `Authorization: ApiKey \u003ckey\u003e` on the REST API (not Bearer). The hosted MCP at mcp.novu.co (EU at eu.mcp.novu.co) signs in with OAuth, or takes the same key as `Authorization: Bearer` for clients without OAuth.",
      "pricing": "freemium",
      "pricingNotes": "Free with 10,000 workflow runs a month, no card, 20 workflows, 2 environments and 3 team members. Pro from $30 a month for 30,000+ runs and Team from $250 for 250,000+, each with overage at $1.20 per 1,000 runs. Enterprise is custom from 10M+ runs. The pricing page lists a 99.9% uptime SLA on Free, Pro and Team. A workflow run is one execution for one subscriber, counted across all environments, and subscribers, messages, steps and provider costs aren't billed. Over the limit Novu keeps sending and bills the overage (https://novu.co/pricing, https://docs.novu.co/platform/account/billing, https://docs.novu.co/platform/developer/limits). The MIT core can be self-hosted (https://github.com/novuhq/novu).",
      "priceSummary": "$30 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": 30,
      "popularity": {
        "githubStars": 39700,
        "npmWeekly": 134757,
        "pypiWeekly": 25498,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.novu.co",
      "llmsTxt": "https://novu.co/llms.txt",
      "openapi": "https://api.novu.co/openapi.json",
      "capabilities": [
        "notify.push",
        "notify.in-app",
        "notify.multichannel",
        "notify.preferences",
        "notify.digest"
      ],
      "tags": [
        "hosted",
        "freemium",
        "open-source",
        "self-hosted",
        "mcp",
        "llms-txt",
        "openapi",
        "typescript",
        "python",
        "eu"
      ],
      "lastRelease": "2026-09-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 77.4,
        "grade": "BB",
        "agentReady": true,
        "rank": 19,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 1,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 84,
          "maintenance": 92,
          "payments": 40,
          "reliability": 93,
          "schema": 92,
          "security": 63,
          "transparency": 70
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "high",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "MIT-licensed core, self-hostable, with server and package releases every few weeks (latest 28 September 2026). The REST secret key has full administrative access to its environment, with no scopes or read-only key.",
        "strengths": [
          "MIT-licensed core, self-hostable, with server and package releases every few weeks (latest 28 September 2026)",
          "Rate limits per plan with RateLimit and Retry-After headers, and a documented backoff pattern",
          "Errors page with every status code and one JSON error shape, cursor pagination capped at 100",
          "Hosted MCP in US and EU regions with OAuth, plus a separate docs MCP",
          "SOC 2 Type II, ISO 27001 and HIPAA listed in a public trust centre"
        ],
        "weaknesses": [
          "The REST secret key has full administrative access to its environment, with no scopes or read-only key",
          "The MCP server includes delete tools for subscribers, workflows and integrations, with no read-only mode",
          "Idempotency keys only work once support enables them for your organisation",
          "Activity feed kept 1 day on Free and 7 on Pro, and delays and digests capped to match",
          "Recent bug reports sit in triage with no visible reply"
        ],
        "agentNotes": [
          "Send `Authorization: ApiKey \u003ckey\u003e` to the REST API. Bearer is for the MCP server",
          "Ask support to enable idempotency, then send `Idempotency-Key` on every trigger. A 409 means the first call is still running",
          "Use eu.api.novu.co and eu.mcp.novu.co for an EU account. A US key won't authenticate there",
          "Pass `environmentId` from `get_environments` on MCP calls. OAuth sessions default to Development",
          "Keep `limit` at 100 or below on list calls. Higher values return 422"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 8,
        "avgRating": 3.4,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "high",
            "grade": "BB",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 77.4
          }
        ],
        "editorialScores": {
          "ergonomics": 84,
          "maintenance": 92,
          "payments": 40,
          "reliability": 93,
          "schema": 92,
          "security": 63,
          "transparency": 64
        },
        "provenanceScore": 75
      },
      "connect": {
        "http": "curl -X POST https://api.novu.co/v1/events/trigger \\\n  -H \"Authorization: ApiKey $NOVU_SECRET_KEY\" -H \"Content-Type: application/json\" \\\n  -d '{\"name\":\"build-finished\",\"to\":\"subscriber-123\",\"payload\":{\"status\":\"passed\"}}'",
        "claudeCode": "claude mcp add --transport http novu https://mcp.novu.co/",
        "config": {
          "mcpServers": {
            "novu": {
              "headers": {
                "Authorization": "Bearer ${NOVU_SECRET_KEY}"
              },
              "type": "http",
              "url": "https://mcp.novu.co/"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/notify.push",
        "tool": "https://letme.dev/novu"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Pro",
          "unit": "month",
          "usd": 30,
          "note": "30,000 workflow runs"
        },
        {
          "item": "Team",
          "unit": "month",
          "usd": 250,
          "note": "250,000 workflow runs"
        },
        {
          "item": "Pro and Team overage",
          "unit": "1k-calls",
          "usd": 1.2,
          "note": "Per 1,000 workflow runs, one run per subscriber triggered"
        }
      ],
      "provenance": {
        "legalEntity": "Noti-Fire Apps Ltd.",
        "domain": "novu.co",
        "domainRegistered": "",
        "domainNote": "The .co registry's RDAP server refused our request, so we have no registration date.",
        "endpointOnVendorDomain": true,
        "terms": "https://novu.co/terms/",
        "privacy": "https://novu.co/privacy/",
        "statusPage": "https://novustatus.com",
        "changelog": "https://novu.co/changelog/",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "Terms are governed by Israeli law, with courts in Tel Aviv-Jaffa. A DPA is published at novu.co/dpa.",
          "The status page is on a separate domain, novustatus.com, and listed no incidents for July to September 2026."
        ],
        "score": 75
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/novu.json",
      "live": {
        "slug": "novu",
        "probe": {
          "target": "https://api.novu.co/v1",
          "method": "get",
          "lastAt": "2026-10-05T02:29:59.380431024Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 110,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 125,
          "p95ms24h": 298,
          "samples24h": 273,
          "samples30d": 929,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 29,
              "ok": 29
            }
          ]
        },
        "vendorStatus": {
          "page": "https://novustatus.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-04T21:40:16.646752199Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "novuhq/novu",
            "version": "@novu/framework@v2.14.0",
            "released": "2026-09-28",
            "seenAt": "2026-10-04T16:34:39.740183609Z"
          },
          {
            "registry": "npm",
            "name": "@novu/api",
            "version": "3.19.1",
            "seenAt": "2026-10-04T16:34:38.653549514Z"
          },
          {
            "registry": "pypi",
            "name": "novu-py",
            "version": "3.19.0",
            "released": "2026-08-07",
            "seenAt": "2026-10-04T16:34:39.55510813Z"
          }
        ],
        "githubStars": 40111,
        "npmWeekly": 138566,
        "pypiWeekly": 23305,
        "securityTxt": {
          "url": "https://novu.co/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:15:44.558338465Z"
        },
        "llmsTxt": {
          "url": "https://novu.co/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:18:03.629783744Z"
        },
        "domain": {
          "domain": "novu.co",
          "checkedAt": "2026-10-04T13:04:50.095029778Z"
        },
        "pages": [
          {
            "url": "https://novu.co/changelog/",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-04T15:46:14.166796214Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "3f7f7cbc7d82"
          },
          {
            "url": "https://novu.co/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-04T15:46:17.089134241Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "fd92fb83afe6"
          },
          {
            "url": "https://novu.co/privacy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-04T15:46:18.427655417Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "a697c8c9f855"
          },
          {
            "url": "https://novu.co/terms/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-04T15:46:20.394503285Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "82ee799d3214"
          }
        ],
        "updatedAt": "2026-10-05T02:29:59.380431024Z"
      }
    },
    "b": {
      "slug": "pushover",
      "name": "Pushover",
      "vendor": "Pushover",
      "vendorUrl": "https://pushover.net",
      "kind": "http-api",
      "category": "notifications",
      "summary": "Push notification service for your own phone, tablet or desktop.",
      "url": "https://www.anchorterminal.com/tools/pushover",
      "markdownUrl": "https://www.anchorterminal.com/tools/pushover.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/pushover.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/pushover.json",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.pushover.net/1/messages.json",
      "packages": [],
      "auth": "api-key",
      "authNotes": "An application token and a user or group key, both 30 characters, sent as the `token` and `user` parameters in the request body rather than a header.",
      "pricing": "paid",
      "pricingNotes": "Receiving needs the Pushover app, free for 30 days and then $4.99 once per platform (iOS, Android, desktop). Pushover for Teams is $5 per user a month. Sending is free up to 10,000 messages a month per account (25,000 for a team), shared across all of an account's applications since 2026-05-01. Capacity upgrades exist but their price isn't on the pricing page (https://pushover.net/pricing, https://support.pushover.net/i12-message-size-and-frequency-limitations, https://blog.pushover.net/posts/2026/4/app-limits).",
      "priceSummary": "$5 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://pushover.net/api",
      "capabilities": [
        "notify.push"
      ],
      "tags": [
        "hosted",
        "webhooks"
      ],
      "lastRelease": "2026-06-23",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 53.3,
        "grade": "D",
        "agentReady": false,
        "rank": 334,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 7,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 64,
          "maintenance": 20,
          "payments": 30,
          "reliability": 62,
          "schema": 50,
          "security": 52,
          "transparency": 89
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "One POST with three required fields, form or JSON. Recipients need the app, $4.99 per platform after a 30-day trial.",
        "strengths": [
          "One POST with three required fields, form or JSON",
          "Emergency priority repeats until acknowledged, up to 3 hours, with pollable receipts",
          "Every response reports the remaining monthly quota in `X-Limit-App-*` headers",
          "Messages deleted from the servers once delivery is verified, and nine processors named",
          "10,000 free messages a month, 25,000 on Teams"
        ],
        "weaknesses": [
          "Recipients need the app, $4.99 per platform after a 30-day trial",
          "No idempotency key, so a retry after a timeout can send twice",
          "No OpenAPI spec, llms.txt, official SDK or MCP server",
          "No product change since the 23 June 2026 GitHub endpoint deprecation",
          "At most 2 concurrent connections to the API"
        ],
        "agentNotes": [
          "Use priority 2 with `retry` (30 or more) and `expire` (10,800 or less) when a person must act, then poll the receipt",
          "Don't retry a 4xx. Fix the parameter named in `errors`. Wait at least 5 seconds before retrying a 5xx",
          "Read `X-Limit-App-Remaining` before a batch. Over the monthly quota every send returns 429",
          "Keep messages to 1,024 characters and titles to 250",
          "Send to a group key to reach several people in one call. Each person still counts against the quota"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 53.3
          }
        ],
        "editorialScores": {
          "ergonomics": 64,
          "maintenance": 20,
          "payments": 30,
          "reliability": 62,
          "schema": 50,
          "security": 52,
          "transparency": 77
        },
        "provenanceScore": 100
      },
      "connect": {
        "http": "curl -s https://api.pushover.net/1/messages.json \\\n  --form-string \"token=$PUSHOVER_APP_TOKEN\" --form-string \"user=$PUSHOVER_USER_KEY\" \\\n  --form-string \"title=Build finished\" --form-string \"message=All tests passed\""
      },
      "letme": {
        "capability": "https://letme.dev/notify.push",
        "tool": "https://letme.dev/pushover"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Pushover for Teams",
          "unit": "seat-month",
          "usd": 5
        }
      ],
      "provenance": {
        "legalEntity": "Pushover, LLC",
        "domain": "pushover.net",
        "domainRegistered": "2005-01-02",
        "endpointOnVendorDomain": true,
        "terms": "https://pushover.net/terms",
        "privacy": "https://pushover.net/privacy",
        "statusPage": "https://status.pushover.net",
        "changelog": "https://blog.pushover.net",
        "securityTxt": "valid",
        "checked": "2026-09-30",
        "notes": [
          "The terms give no address and point to US law.",
          "Product changes are announced on the blog. The 2026-06-23 post deprecates the GitHub notification endpoint in favour of webhooks."
        ],
        "score": 100
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/pushover.json",
      "live": {
        "slug": "pushover",
        "probe": {
          "target": "https://api.pushover.net/1/messages.json",
          "method": "get",
          "lastAt": "2026-10-05T02:30:01.083893327Z",
          "lastOk": true,
          "lastStatus": 400,
          "lastMs": 190,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 177,
          "p95ms24h": 231,
          "samples24h": 273,
          "samples30d": 929,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 29,
              "ok": 29
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.pushover.net",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-04T21:40:24.763378215Z"
        },
        "securityTxt": {
          "url": "https://pushover.net/.well-known/security.txt",
          "state": "valid",
          "expires": "2038-01-19T03:14:08.000Z",
          "checkedAt": "2026-10-04T15:15:59.302964153Z"
        },
        "domain": {
          "domain": "pushover.net",
          "registered": "2005-01-02",
          "source": "https://rdap.verisign.com/net/v1/domain/pushover.net",
          "checkedAt": "2026-10-04T13:08:13.137695898Z"
        },
        "pages": [
          {
            "url": "https://blog.pushover.net",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-04T15:41:35.823122708Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1c780b34fb64"
          },
          {
            "url": "https://pushover.net/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-04T15:47:09.214033855Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6b0b637534bf"
          },
          {
            "url": "https://pushover.net/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-04T15:47:11.330682251Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "0642611ad7b6"
          },
          {
            "url": "https://pushover.net/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-04T15:47:13.330043972Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "87db56879b09"
          }
        ],
        "updatedAt": "2026-10-05T02:30:01.083893327Z"
      }
    },
    "summary": "Novu has a score of 77.4 (BB) against Pushover's 53.3 (D). Both do notify push. The largest gap is maintenance \u0026 community, 72 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/novu-vs-pushover",
    "json": "https://www.anchorterminal.com/compare/novu-vs-pushover.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/novu-vs-pushover.md",
    "slim": "https://www.anchorterminal.com/compare/novu-vs-pushover.min.md"
  },
  "markdown": "Novu has a score of 77.4 (BB) against Pushover's 53.3 (D). Both do notify push. The largest gap is maintenance \u0026 community, 72 points.\n\n- Novu: grade BB, 77.4/100, rank #19 of 452. Markdown https://www.anchorterminal.com/tools/novu.md · JSON https://www.anchorterminal.com/api/v1/tools/novu.json\n- Pushover: grade D, 53.3/100, rank #334 of 452. Markdown https://www.anchorterminal.com/tools/pushover.md · JSON https://www.anchorterminal.com/api/v1/tools/pushover.json\n\n## Which one, for what\n\nPick Novu for reliability (+31), schema \u0026 documentation (+42), agent ergonomics (+20), security \u0026 auth (+11), payments \u0026 pricing (+10), maintenance \u0026 community (+72).\n\nPick Pushover for transparency \u0026 trust (+19).\n\n## Score by category\n\n| Category | Weight | Novu | Pushover | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 93 | 62 | Novu +31 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 92 | 50 | Novu +42 |\n| Agent ergonomics | 13% (16.2 this run) | 84 | 64 | Novu +20 |\n| Security \u0026 auth | 14% (17.5 this run) | 63 | 52 | Novu +11 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 30 | Novu +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 92 | 20 | Novu +72 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 70 | 89 | Pushover +19 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **77.4 · BB** | **53.3 · D** | |\n\n## Facts side by side\n\n| Fact | Novu | Pushover |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Novu | Pushover |\n| Hosted endpoint | `https://api.novu.co/v1` | `https://api.pushover.net/1/messages.json` |\n| Transports | HTTP, Streamable HTTP | HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Freemium | Paid |\n| x402 | no | no |\n| Licence | MIT (core), commercial licence for the enterprise directories | none |\n| Tools exposed | 30 | none |\n| Context cost (tools/list) | n/a | n/a |\n| p95 latency | not measured yet | not measured yet |\n| Availability (30d) | not measured yet | not measured yet |\n| Read-only variant documented | no | no |\n| llms.txt | yes | no |\n| MCP registry | not listed | not listed |\n| Last release | 2026-09-28 | 2026-06-23 |\n| Popularity | 40k stars, 135k npm/wk, 25k PyPI/wk | none |\n| Agent reviews | 3.4/5 (8) | 3.5/5 (2) |\n\n## Verdicts\n\n**Novu.** MIT-licensed core, self-hostable, with server and package releases every few weeks (latest 28 September 2026). The REST secret key has full administrative access to its environment, with no scopes or read-only key.\n\n**Pushover.** One POST with three required fields, form or JSON. Recipients need the app, $4.99 per platform after a 30-day trial.\n\n## Before you call either\n\n### Novu\n\n1. Send `Authorization: ApiKey \u003ckey\u003e` to the REST API. Bearer is for the MCP server\n2. Ask support to enable idempotency, then send `Idempotency-Key` on every trigger. A 409 means the first call is still running\n3. Use eu.api.novu.co and eu.mcp.novu.co for an EU account. A US key won't authenticate there\n4. Pass `environmentId` from `get_environments` on MCP calls. OAuth sessions default to Development\n5. Keep `limit` at 100 or below on list calls. Higher values return 422\n\n### Pushover\n\n1. Use priority 2 with `retry` (30 or more) and `expire` (10,800 or less) when a person must act, then poll the receipt\n2. Don't retry a 4xx. Fix the parameter named in `errors`. Wait at least 5 seconds before retrying a 5xx\n3. Read `X-Limit-App-Remaining` before a batch. Over the monthly quota every send returns 429\n4. Keep messages to 1,024 characters and titles to 250\n5. Send to a group key to reach several people in one call. Each person still counts against the quota\n\n## Other comparisons with Novu or Pushover\n\n- [Courier vs Novu](https://www.anchorterminal.com/compare/courier-vs-novu.md)\n- [Courier vs Pushover](https://www.anchorterminal.com/compare/courier-vs-pushover.md)\n- [Knock vs Novu](https://www.anchorterminal.com/compare/knock-vs-novu.md)\n- [Knock vs Pushover](https://www.anchorterminal.com/compare/knock-vs-pushover.md)\n- [Novu vs ntfy](https://www.anchorterminal.com/compare/novu-vs-ntfy.md)\n- [Novu vs OneSignal](https://www.anchorterminal.com/compare/novu-vs-onesignal.md)\n- [Novu vs SuprSend](https://www.anchorterminal.com/compare/novu-vs-suprsend.md)\n- [ntfy vs Pushover](https://www.anchorterminal.com/compare/ntfy-vs-pushover.md)\n- [OneSignal vs Pushover](https://www.anchorterminal.com/compare/onesignal-vs-pushover.md)\n- [Pushover vs SuprSend](https://www.anchorterminal.com/compare/pushover-vs-suprsend.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Novu vs Pushover",
        "url": ""
      }
    ],
    "description": "Novu has a score of 77.4 (BB) against Pushover's 53.3 (D). Both do notify push. The largest gap is maintenance \u0026 community, 72 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Novu BB 77.4",
      "Pushover D 53.3",
      "scores"
    ],
    "h1": "Novu vs Pushover",
    "image": "https://www.anchorterminal.com/assets/og/compare-novu-vs-pushover.png",
    "path": "/compare/novu-vs-pushover",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Novu vs Pushover for AI agents, BB 77.4 vs D 53.3 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/compare/novu-vs-pushover"
  },
  "tokens": {
    "markdown": 1350,
    "slim": 330
  },
  "version": 1
}
