{"id":13588527,"url":"https://github.com/OpenWebhook/webhook-store","last_synced_at":"2025-04-08T06:32:12.318Z","repository":{"id":37014069,"uuid":"475587720","full_name":"OpenWebhook/webhook-store","owner":"OpenWebhook","description":"Store and replay webhooks","archived":false,"fork":false,"pushed_at":"2023-10-16T10:15:29.000Z","size":665,"stargazers_count":77,"open_issues_count":1,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2024-11-06T08:40:52.502Z","etag":null,"topics":["api","graphql","nestjs","open-source","postgresql","webhook","webhook-receiver","webhooks","webhooks-management"],"latest_commit_sha":null,"homepage":"https://github.webhook.store","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenWebhook.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-03-29T19:19:06.000Z","updated_at":"2024-11-02T09:34:01.000Z","dependencies_parsed_at":"2024-02-21T17:47:26.896Z","dependency_job_id":null,"html_url":"https://github.com/OpenWebhook/webhook-store","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWebhook%2Fwebhook-store","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWebhook%2Fwebhook-store/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWebhook%2Fwebhook-store/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWebhook%2Fwebhook-store/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenWebhook","download_url":"https://codeload.github.com/OpenWebhook/webhook-store/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247792086,"owners_count":20996877,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","graphql","nestjs","open-source","postgresql","webhook","webhook-receiver","webhooks","webhooks-management"],"created_at":"2024-08-01T15:06:46.370Z","updated_at":"2025-04-08T06:32:09.363Z","avatar_url":"https://github.com/OpenWebhook.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"[![webhook-store](https://github.com/OpenWebhook/webhook-store/actions/workflows/main.yml/badge.svg)](https://github.com/OpenWebhook/webhook-store/actions/workflows/main.yml) [![Maintainability](https://api.codeclimate.com/v1/badges/bc33884e66ac77707905/maintainability)](https://codeclimate.com/github/OpenWebhook/webhook-store/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/bc33884e66ac77707905/test_coverage)](https://codeclimate.com/github/OpenWebhook/webhook-store/test_coverage)\n\n# OpenWebhook\n\n[Openwebhook.io](https://www.openwebhook.io/) is an open source project for developpers working with webhooks.\n\n## WebhookStore\n\n\u003e \"Is the tunnel still up ?\" \"Did the third party send the webhook ?\" \"Where do I update the webhook url on this beautiful developer portal ?\"\n\nWebhookStore is a solution to debug webhooks on localhost.\n\n### Some handy features:\n\n- Permanent URLs: there are no generated urls, only user defined urls\n- Available: Webhook store is **not a tunnel**, you don't have to run anything on your computer for the webhooks to be received\n- Persistent: Webhooks are stored, and forwarded on localhost on demand. Meaning you can reuse a webhook from a dev session to another, instead of spending 2 minutes triggering the update webhook you need.\n\n|                    | Ngrok / Ultra hook    | RequestBIn       | WebhookStore                                                |\n| ------------------ | --------------------- | ---------------- | ----------------------------------------------------------- |\n| Permanent Url      | Upon Inscription      | Upon Inscription | Yes                                                         |\n| Availability       | When tunnel is Up     | All the time     | All the time                                                |\n| Persistency        | During tunnel session | All the time     | All the time                                                |\n| Debug on localhost | With the cli          | Not possible     | With the cli                                                |\n| Inspect webhooks   | Yes                   | Yes              | Yes                                                         |\n| Authentication     | Yes                   | Yes              | [Yes](https://www.openwebhook.io/docs/intro#authentication) |\n\nThe project is inspired from [Yopmail](https://yopmail.com/en/): a Disposable Email Address - Temporary and anonymous inbox.\n\n### How to use it\n\nWay 1:\n\n- Choose a webhook store url matching **`*.webhook.store`**: like `ilovewebhooks.webhook.store`.\n- Use it as a webhook address `ilovewebhooks.webhook.store/send/me-the-webhook`, or send a POST request with a curl\n- Visit the store website `ilovewebhooks.webhook.store` and see your webhook\n- Send that webhook to your localhost by clicking on \"Send\" (and running the local proxy server)\n- All new webhooks will be forwarded to your localhost automatically\n\nWay 2:\n\n- run `npx webhook-store-cli --port 9000` and it will prompt you a webhook store based on your username.\n\n### Debugging on localhost\n\n```\nnpx webhook-store-cli --port 9000\n```\n\nHere is a video of the proxy server receiving the webhooks.\n\n![Demo with cli](demo.gif)\n\n```mermaid\nsequenceDiagram\n    Third party API-\u003e\u003eOpenWebhook Store: Sends webhook\n    OpenWebhook Store-\u003e\u003eOpenWebhook Client (browser): Sends stored webhook\n    OpenWebhook Client (browser)-\u003e\u003eLocalhost: Replays webhook\n\n```\n\n# Deployment\n\nDocumentation for self [hosted webhook store](https://www.openwebhook.io/docs/self-hosting/install-store-heroku).\n\n# Development\n\n## Install dependencies\n\n```\n$ yarn\n```\n\n## Create DB and set env\n\n### Using postgresql\n\n```\ncreatedb webhook-store\n```\n\nAdd env file and configure `DATABASE_URL`:\n\n```\ncp .env.test .env\n```\n\nConfigure `DATABASE_URL`, replace `USER`.\n\n```\nDATABASE_URL=\"postgresql://USER[:PASSWORD]@localhost:5432/webhook-store?schema=public\"\n```\n\n### Run migrations\n\n```\nyarn prisma migrate dev\n```\n\n## Start server\n\n```\nyarn start:dev\n```\n\n# Configuration\n\n## Hosts\n\nWebhook-store is designed to work for multiple hosts. For instance all `*.webhook.store` requests go to the same infrastructure. The webhook-store will associate all the webhooks to a host making it easy to gather all the webhooks for an host.\nYou can have the same infrastructure for all your team and envs. If you use \\*.sandbox.org.com, then your dev team-a can work on team-a.sandbox.org.com and another team on team-b.sandbox.org.com without the need to configure or manage multiple webhook-stores.\n\n## Targets\n\nWebhook-store is designed as a proxy, all the incoming webhooks can be sent to targets. For instance you want a third party to send webhooks to all your sandbox environments:\n\npayment-sandbox-webhooks =\u003e staging.org.com\npayment-sandbox-webhooks =\u003e sandbox.org.com\npayment-sandbox-webhooks =\u003e sandbox-2.org.com\n\n## Env\n\n```\n# Configuration\nMAX_STORED_WEBHOOKS_PER_HOST=100                            # Will keep only 100 webhooks (per hosts)\nDEFAULT_TARGETS=production.org.com, preproduction.org.com   # Will send all the webhooks to these urls\n```\n\n# Using docker\n\nEdit the docker.env\n\n```\ndocker run --env-file ./docker.env -p 9000:9000 openwebhook/webhook-store:latest\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOpenWebhook%2Fwebhook-store","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FOpenWebhook%2Fwebhook-store","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOpenWebhook%2Fwebhook-store/lists"}