{"id":28089115,"url":"https://github.com/scullwm/mailhookbundle","last_synced_at":"2026-02-27T05:39:17.639Z","repository":{"id":30465786,"uuid":"34019743","full_name":"ScullWM/MailHookBundle","owner":"ScullWM","description":"A bundle to catch API webhook from different mail service","archived":false,"fork":false,"pushed_at":"2024-01-02T14:27:23.000Z","size":49,"stargazers_count":38,"open_issues_count":0,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-08-18T10:51:45.787Z","etag":null,"topics":["amazon-web-services","bounce","hacktoberfest","mailgun","mailjet","mandrill","sendgrid","sparkpost","webhook","webhooks-catcher"],"latest_commit_sha":null,"homepage":"https://medium.com/@ScullWM/start-using-mailhooks-in-your-symfony-app-87ae1a5a33bc","language":"PHP","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/ScullWM.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,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-04-15T21:32:04.000Z","updated_at":"2024-10-29T13:52:30.000Z","dependencies_parsed_at":"2025-05-07T18:37:21.504Z","dependency_job_id":"f4782d3d-ea96-47d2-abee-b4e5c8a107de","html_url":"https://github.com/ScullWM/MailHookBundle","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/ScullWM/MailHookBundle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScullWM%2FMailHookBundle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScullWM%2FMailHookBundle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScullWM%2FMailHookBundle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScullWM%2FMailHookBundle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ScullWM","download_url":"https://codeload.github.com/ScullWM/MailHookBundle/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ScullWM%2FMailHookBundle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273121664,"owners_count":25049530,"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","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["amazon-web-services","bounce","hacktoberfest","mailgun","mailjet","mandrill","sendgrid","sparkpost","webhook","webhooks-catcher"],"created_at":"2025-05-13T12:53:51.258Z","updated_at":"2026-02-27T05:39:17.578Z","avatar_url":"https://github.com/ScullWM.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"MailHookBundle\n=============================================================================\nCatch webhook from various API mail service and directly get the related user.\n\n\n[![Build Status](https://scrutinizer-ci.com/g/ScullWM/MailHookBundle/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/ScullWM/MailHookBundle/)\n[![Build Status](https://scrutinizer-ci.com/g/ScullWM/MailHookBundle/badges/build.png?b=master)](https://scrutinizer-ci.com/g/ScullWM/MailHookBundle/build-status/master)\n\n\nFeatures\n--------\nDefine your project url to your mail provider service (Mandrill, MailJet...) and get events dispatched into your app.\n\n\nSupport various service\n--------\n- Campain Monitor\n- Mailgun\n- Mailjet\n- Mandrill\n- Sendgrid\n- Sparkpost\n- And add your custom service\n\nExample use cases:\n-------------\n- Disable to a user's notification when a mail is signal as spam.\n- Send a private message to a user if last mail send get bounced.\n- Warning an Account Manager about a hard bounce on a new user creation.\n- Track email reading and clicks on your custom CRM.\n- All you want!\n\n\nInstallation\n-----------------------------------\n\nAdd the package to your composer.json file\n```\n\"scullwm/mailhookbundle\": \"dev-master\",\n```\n\nAdd this to app/AppKernel.php\n```php\n\u003c?php\n    public function registerBundles()\n    {\n        $bundles = array(\n            ...\n            new Swm\\Bundle\\MailHookBundle\\SwmMailHookBundle(),\n        );\n\n        ...\n\n        return $bundles;\n    }\n```\n\nConfiguration\n-------------\n\n### 1) Edit app/config.yml\n\n```yaml\nswm_mail_hook:\n    secretsalt: notSecret\n```\n\n### 2) Edit app/routing.yml\n\n```yaml\nswm_mailhook_controller:\n    resource: \"@SwmMailHookBundle/Controller/\"\n    type:     annotation\n    prefix:   /\n```\n\nWell done!\n\n\nUse it\n------\n\nGo to your email service provider like mandrillapp.com and find where to configure your webhook.\nCheck hooks you want and set the url like this:\n\nhttp://www.mywebsite.com/webhook/{secretSalt}/{serviceName}/catch\n\nWith no configuration for mandrill it should be :\nhttp://www.mywebsite.com/webhook/notSecret/mandrill/catch\n\nWith a custom secretSalt and mailjet service it should be :\nhttp://www.mywebsite.com/webhook/dDifXo26/mailjet/catch\n\n\nEvents dispatched\n-----------------\n\n- swm.mail_hook.event.open\n- swm.mail_hook.event.send\n- swm.mail_hook.event.click\n- swm.mail_hook.event.soft_bounce\n- swm.mail_hook.event.hard_bounce\n- swm.mail_hook.event.deferral\n- swm.mail_hook.event.spam\n- swm.mail_hook.event.blocked\n- swm.mail_hook.event.unsub\n- swm.mail_hook.event.reject\n- swm.mail_hook.event.other\n\n\nEvents listener provided\n------------------------\n\nBy default, a simple MailHookEvent is dispatched by the DefaultHydrator.\nBut if you are using FosUserBundle, you can use the FosUserHydrator to use directly UserMailHookEvent which return directly the user entity associate on the email.\n\n\nIf your using FosUserBundle\n----------------------------\n\nThere's already a special route called \"swm_mailhook_user_catcher_for_service\":\n/{secretSalt}/{service}/catchuser\n\nIt directly return a UserMailHookEvent where you can getUser().\n\nTo see a basic exemple see this link : https://gist.github.com/ScullWM/8acea9c0e229ed76717f (Using JMS/di-extra-bundle optionnal)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscullwm%2Fmailhookbundle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscullwm%2Fmailhookbundle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscullwm%2Fmailhookbundle/lists"}