{"id":18382505,"url":"https://github.com/kiss-my/webhook-transfer","last_synced_at":"2026-04-16T08:31:38.070Z","repository":{"id":42877810,"uuid":"256808879","full_name":"kiss-my/webhook-transfer","owner":"kiss-my","description":"A dead-simple Express.js server to forward a single POST payload to an unlimited number of webhooks.","archived":false,"fork":false,"pushed_at":"2022-12-12T12:42:36.000Z","size":215,"stargazers_count":2,"open_issues_count":8,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-11T23:36:00.377Z","etag":null,"topics":["discord","gitlab","proxy","slack","webhook"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kiss-my.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}},"created_at":"2020-04-18T17:08:44.000Z","updated_at":"2024-01-17T06:25:30.000Z","dependencies_parsed_at":"2023-01-27T19:31:40.848Z","dependency_job_id":null,"html_url":"https://github.com/kiss-my/webhook-transfer","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/kiss-my/webhook-transfer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiss-my%2Fwebhook-transfer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiss-my%2Fwebhook-transfer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiss-my%2Fwebhook-transfer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiss-my%2Fwebhook-transfer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kiss-my","download_url":"https://codeload.github.com/kiss-my/webhook-transfer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiss-my%2Fwebhook-transfer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31877467,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T07:36:03.521Z","status":"ssl_error","status_checked_at":"2026-04-16T07:35:53.576Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["discord","gitlab","proxy","slack","webhook"],"created_at":"2024-11-06T01:06:17.708Z","updated_at":"2026-04-16T08:31:38.055Z","avatar_url":"https://github.com/kiss-my.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Webhook Transfer\n\nA dead-simple Express.js server to forward a single POST payload to an unlimited number of webhooks.\n\n## What it does\nHere at *kiss my*, we use it for our GitLab (on-premise) / Slack / Discord integrations: GitLab's Discord integration sends really badly formatted messages like this one:  \n\n![result with gitlab discord integration](docs/gitlab-discord.png) \n\nwhile using the Slack integration + a Slack formatted webhook in Discord (by adding `/slack` to the webhook's URL) looks like this:  \n\n![result with gitlab slack integration](docs/gitlab-discord-slack.png)\n\nMuch more useful!\n\n**It's also very useful to easily send Slack notifications from a single project to an unlimited number of Slack workspaces :)**\n\n## How it works\nInstead of having only one URL per GitLab integration, you hit `/relay` on this server's hostname and pass multiple webhook URLs in the `urls[]` query param.  \n\nSo if you have say 2 webhooks:  \n* `https://hooks.slack.com/some/token`  \n* `https://discordapp.com/api/webhooks/some/other/token/slack` (the `/slack` part is mandatory to use the Slack integration)\n\nAnd you've deployed this app to `https://my-webhook-proxy.example.com`\n\nNow follow these steps:  \n* Convert those two webhook URLs to URL parameters. You can do so using [the great URLencoder free tool](https://www.urlencoder.org/), or any other tool.  \n* Use the encoded webooks in the query string to the Transfer app: `https://my-webhook-proxy.example.com/relay?urls[]=encodedURL1\u0026urls[]=encodedURL2` *(a free Web tool to make it even easier will be deployed soon)*  \n* Paste this new URL as the webhook URL for the Slack integration.  \n* Do anything that triggers a notification (you can test it when saving the integration settings)    \n* Enjoy!  \n\n## Deployment\n* Run the server using `yarn start` or use the Docker image `kissmy/webhook-transfer`  \n\n## Disclaimer\nThis app works if your webhook works, so please test your endpoints before raising an issue.  \nIt's not thoroughly tested nor has any kind of error handling (might have in the future if someone else than us uses it).  \nIt is provided \"as is\" but may evolve into something more robust if specific use cases arise in the future.\n\n\n## Contribute\nIssues, PR's and enhancement ideas are welcome. While this project suits us for our current usage, we're doing our \nbest to be reactive to any activity in this repository.  \n\nThere's no code of conduct, just common sense and respect to other people when you collaborate on this repo like  \nyou'd do with your barber or in a shop. Being \"anonymous\" on the Web doesn't excuse anyone for being a jerk. \n\n## License\nMIT  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkiss-my%2Fwebhook-transfer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkiss-my%2Fwebhook-transfer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkiss-my%2Fwebhook-transfer/lists"}