Stripe, GitHub and Sentry alerts on your iPhonePaste a URL. Hear every event that matters.

Add a connector, paste its URL into a service like Stripe or Sentry, and its events arrive as notifications. There's no handler to write and nothing to host.

Connectors are on the Solo plan and up. Compare plans

What can Acciti connect to?

App Store, Stripe, GitHub, Provisore, Sentry, Grafana and Better Stack. Each comes with a catalogue of its events, and each event already has a priority and a message. Anything else can post signed JSON to a custom connector.

Events that mean something broke, like a monitor going down, alert from the start. Routine ones, like a sale or a merged pull request, start switched off, and you choose which to turn on.

App Store

Signed by Apple

Paste the ingest URL into App Store Connect as your production server URL.

Alerts from the start

  • Apple's own test notification, sent when you ask for one.Quiet
  • A renewal failed with no grace period, so access has stopped.High
  • A renewal failed, and the customer keeps access through the grace period.Normal
  • Apple refunded a purchase.High

Off until you turn them on: SUBSCRIBED, SUBSCRIBED.RESUBSCRIBE, DID_RENEW, DID_RENEW.BILLING_RECOVERY, ONE_TIME_CHARGE, OFFER_REDEEMED, GRACE_PERIOD_EXPIRED, EXPIRED, REFUND_REVERSED, CONSUMPTION_REQUEST, DID_CHANGE_RENEWAL_STATUS.AUTO_RENEW_DISABLED, DID_CHANGE_RENEWAL_STATUS.AUTO_RENEW_ENABLED, DID_CHANGE_RENEWAL_PREF.UPGRADE, DID_CHANGE_RENEWAL_PREF.DOWNGRADE, PRICE_INCREASE.PENDING, PRICE_INCREASE.ACCEPTED, REVOKE.

Stripe

Signed body

Add the ingest URL as a webhook endpoint in Stripe, then paste Stripe's signing secret back here.

Stripe issues the secret and shows it once. Paste it here.

Stripe-Signature

Off until you turn them on: invoice.payment_failed, customer.subscription.deleted, invoice.paid, checkout.session.completed, charge.dispute.created.

GitHub

Signed body

Add the ingest URL as a repository webhook, with the secret shown here and content type application/json.

Acciti issues the secret and shows it once. Paste it into GitHub.

X-Hub-Signature-256

Off until you turn them on: workflow_run.completed, deployment_status, issues.opened, pull_request.opened.

Provisore

Signed body

In Provisore, add an Acciti notification channel with this ingest URL and the secret shown here.

Acciti issues the secret and shows it once. Paste it into Provisore.

X-Provisore-Signature

Alerts from the start

  • An uptime monitor is confirmed down.Emergency
  • A deploy failed.Emergency
  • A restore from a backup failed.Emergency
  • A certificate did not renew before its danger window.High
  • A scheduled or manual backup failed.High
  • A rollback to an earlier release failed.High
  • Provisioning a server failed.High
  • A server metric alert crossed its threshold.High
  • A certificate is inside its expiry warning window.Normal
  • An uptime monitor recovered.Quiet
  • A metric alert cleared.Quiet

Off until you turn them on: deployment.succeeded, server.provisioned.

Sentry

Signed body

Create a Sentry internal integration with this webhook URL, then paste its client secret back here.

Sentry issues the secret and shows it once. Paste it here.

Sentry-Hook-Signature

Alerts from the start

  • A Sentry issue alert fired.High
  • A Sentry metric alert went critical.Emergency
  • A Sentry metric alert crossed its warning threshold.High
  • A Sentry metric alert cleared.Quiet
  • A new issue appeared.Normal

Off until you turn them on: issue.resolved, issue.assigned, comment.

Grafana

Bearer secret

Add a webhook contact point with this URL, bearer authentication, and the secret shown here as the token.

Acciti issues the secret and shows it once. Paste it into Grafana.

Authorization

Alerts from the start

  • An alert group is firing.High
  • An alert group cleared.Quiet

Better Stack

Bearer secret

Add a webhook integration with this URL and an Authorization header of Bearer plus the secret shown here.

Acciti issues the secret and shows it once. Paste it into Better Stack.

Authorization

Alerts from the start

  • A monitor started an incident.Emergency
  • An incident resolved.Quiet

Off until you turn them on: incident.acknowledged, monitor.ssl_expiring.

Custom

Signed body

POST JSON to the ingest URL with an X-Acciti-Signature header of sha256= plus the hex HMAC-SHA256 of the body.

Acciti issues the secret and shows it once. Paste it into Custom.

X-Acciti-Signature

You define the payload. Name the event types you send and write a rule for each.

How does Acciti know a webhook is genuine?

Every connector checks each request before it can reach your phone. How depends on the service.

Signed body

Most services sign the exact bytes they send. A valid signature proves who sent it and that nothing changed on the way.

Bearer secret

Grafana and Better Stack sign nothing, so they send a secret in a header. That proves who sent it, but not that the body arrived unchanged.

Apple's certificate chain

App Store notifications are signed by Apple. There's no shared secret on either side, and nothing to rotate.

What does an event become?

A rule turns one event into one notification, with a priority, a title and a body. It can name an escalation policy, so an unacknowledged alert reaches the next person on call.

Every kind comes with default rules, and you can edit all of them.

A rule
{  "eventType": "monitor.down",  "priority": 2,  "titleTemplate": "{{resource}} is down",  "bodyTemplate": "Provisore's monitor for {{resource}} is down as of {{timestamp}}.",  "escalation": "production"}

Questions

What is a connector?
A URL you paste into another service. Acciti verifies what that service posts, matches it against your rules and sends the notification. You don't run a handler or a server.
How does Acciti verify an incoming webhook?
Most services sign the exact bytes of each request, and Acciti checks that signature. It proves who sent the request and that nothing changed in transit. Grafana and Better Stack don't sign requests, so their connectors check a secret in a header instead.
What happens to an event with no matching rule?
Acciti records it and sends nothing. The dashboard lists every event type a connector has received without a rule, so you can write one.
Can my own server still receive the events?
Yes. Turn on forwarding and Acciti posts every verified event on to your URLs, byte for byte and signed. App Store Connect takes one notification URL per app, so this is how Acciti, your server and any other service each get them.

Connect your first service.

Sign in, add a connector and paste its URL into the service. Its next event arrives on your phone.