FAQ
Quick answers to the questions we hear most. Still stuck? Email hello@permylastwebhook.com.
The basics
What is Per My Last Webhook?
A Microsoft Teams app that turns CI/CD pipeline events into rich Adaptive Cards in your channels. It's the drop-in successor to the deprecated Office 365 / Teams Connectors — same idea (webhook in, card out), but normalized across sixteen platforms with routing, noise controls, and an audit trail.
Which platforms are supported?
GitHub Actions, GitLab, Jenkins, Azure DevOps, Bitbucket Pipelines, CircleCI, Buildkite, Argo CD, TeamCity, Datadog, Grafana, Drone CI, Sentry, PagerDuty, Prometheus Alertmanager, and Octopus Deploy have dedicated support. Anything else that can POST JSON works through the generic platform with a field mapping.
Does this replace the retired Office 365 Connectors?
Yes — that's exactly why it exists. Microsoft wound down Connectors; this fills the gap with a proper Teams app (bot + tabs + SSO) instead of a bare incoming webhook.
Setup & install
Do I need to be a Teams admin?
To see cards, no. To set things up, you need two things that only an admin can grant, once: admin consent for your tenant (the first person to add the app triggers it), and the Connector Admin role for each person who will create or change subscriptions. Consent does not assign that role to anyone; see who can manage subscriptions. Not an admin? Add the app anyway and Teams will route the approval to one.
Do I have to add the bot to use it?
No. If you'd rather not use the bot, pick the incoming webhook destination and paste a Teams Workflows URL. You'll miss bot-only features (in-place updates, incident mode, DMs), but basic delivery needs no bot.
How do I test without a real build?
Every subscription has a Test button that fires a synthetic card through the real delivery path. You can also preview any payload in the card validator before wiring anything up.
Plans & billing
Is there a free tier?
Yes — Free covers all sixteen platforms, rich cards, channel/webhook delivery, status filters, and up to three subscriptions. See Pricing & plans.
What's behind Pro?
Scale and workflow: unlimited subscriptions, routing, incident mode, on-call DMs, quiet hours/dedupe, @mentions, approvals, and custom branding. Pro is a flat price per tenant — no per-seat billing.
Security & data
What data do you store?
Your subscription config (names, filters, destinations), the minimum needed to deliver, and an audit trail of changes/approvals, in a database that is encrypted at rest. API keys are kept only as salted hashes. Signing secrets are encrypted by the app before they are stored. Webhook URLs are stored as they are, never shown again once saved, and never written to logs. We don't store your source code or build artifacts.
How is the ingest URL secured?
Each subscription's ingest URL carries a unique secret key that authenticates every call, compared in constant time. Several platforms can additionally sign the payload (HMAC) for integrity. You can rotate the key any time.
How does sign-in work?
Management (the tabs/admin UI) uses Microsoft Entra SSO. A token is only honored if it comes from a tenant that completed admin consent and the user holds the admin app role — a two-stage gate. If sign-in ever fails, the in-app Diagnostics tab tells you exactly which stage and how to fix it.
Is delivery reliable?
Transient failures are retried with backoff, timeouts are handled so you don't get duplicate cards, and each org has its own rate limit so a noisy tenant can't affect others.
Troubleshooting
My card didn't show up.
Usually the bot isn't in the channel, a filter/quiet-hours window is dropping the event, or the webhook points at the wrong URL. Walk the checklist in Troubleshooting.
Sign-in / "not installed" / access denied.
Open the Diagnostics tab and run the checks — it pinpoints consent, tenant-install, and app-role issues with the matching fix.
Email hello@permylastwebhook.com — we answer.