--- title: "AhaSend for Drupal 2.0" description: "If your Drupal site sends password resets, order confirmations, Webform submissions or account notifications, you want two things from your email setup: the mail arrives, and you can prove it did. Version 2.0 of the AhaSend module is built for exactly that. It is a rewrite on top of AhaSend API v2, it works as a transport for the Symfony Mailer module, and we added three additional features: a sandbox mode, signed webhooks and a message log inside Drupal." url: https://ahasend.com/blog/ahasend-drupal-20 markdown_url: https://ahasend.com/blog/ahasend-drupal-20.md lang: en type: blog_post published: 2026-10-12 updated: 2026-10-12 author: "Mark Kraakman" category: "Product Update" image: https://cms.ahasend.com/sites/default/files/2026-10/updated-drupal-module.png --- # AhaSend for Drupal 2.0 _By Mark Kraakman, October 12, 2026, in Product Update_ ![Updated Drupal module](https://cms.ahasend.com/sites/default/files/2026-10/updated-drupal-module.png) If your Drupal site sends password resets, order confirmations, Webform submissions or account notifications, you want two things from your email setup: the mail arrives, and you can prove it did. Version 2.0 of the [AhaSend module](https://www.drupal.org/project/ahasend) is built for exactly that. It is a rewrite on top of AhaSend API v2, it works as a transport for the Symfony Mailer module, and we added three additional features: a sandbox mode, signed webhooks and a message log inside Drupal. ## What the module does The module sends all Drupal email through AhaSend. Because it is a transport for [Symfony Mailer](https://www.drupal.org/project/symfony_mailer), every email Drupal produces goes the same way: core mail, Webform, Commerce, contact forms, anything that uses the mail system. There is no second code path to maintain and nothing to change in your modules. It supports Symfony Mailer 1.x and 2.x (Mailer Plus), and handles HTML and plain text email with To, Cc, Bcc, Reply-To, attachments and inline images. Drupal 10.6 and 11 are supported. ## What is new in 2.0 ### API v2 The module now talks to AhaSend over API v2. In practice that means you configure it with an API key and your Account ID from the AhaSend dashboard, both of which you find under API credentials. API v2 is the same API behind our SDKs and the CLI, so what you see in the Drupal module matches what you see everywhere else. ### Sandbox mode Sandbox mode lets you run the full sending flow without delivering anything. Messages are accepted and processed by AhaSend, but no email leaves our servers. Use it on staging, during a migration, or when you want to verify that a Webform actually fires an email before you let it reach real people. Switch it off in the transport settings when you go live. Read all about it here: https://ahasend.com/docs/send-api/sandbox ### Signed webhooks AhaSend can call your Drupal site when something happens to a message: delivered, bounced, opened, clicked, suppressed and more. The webhook endpoint in the module verifies the signature on every request, so only events that really come from AhaSend are accepted. The events feed the message log described below, and they are available for your own code if you want to act on a bounce or a click. ### Message log Under Reports you now get a message log: every email the site sent through AhaSend, with its delivery timeline. When someone says "I never got the email", you open the log, find the message and see whether it was delivered, deferred or bounced, and why. No more opening the AhaSend dashboard to answer a support question about your own site. ## Getting started Install the module with Composer: ```plaintext composer require 'drupal/ahasend:^2.0@alpha' ``` Then enable it, pick AhaSend as the transport in Symfony Mailer, and enter your API key and Account ID. You need [an AhaSend account](https://dash.ahasend.com/user/register) with a verified sending domain. The free plan includes 1,000 emails a month. For webhooks, create a webhook in the AhaSend dashboard pointing at your site and paste the signing secret into the module settings, so Drupal can verify the events it receives. ## Upgrading from 1.x Version 1.x is no longer supported and there is no upgrade path. Uninstall 1.x first, then install 2.0 and configure it again. The settings are few, so this takes a couple of minutes. ## Why send Drupal mail through AhaSend AhaSend is a European transactional email provider. All infrastructure runs in the EEA, there is a DPA you can countersign, and the sender setup is the same as for any other integration: verify your domain once with DKIM, SPF and DMARC and you are done. Deliverability is what we spend our days on, so your reset emails land in the inbox rather than in spam. The module is maintained by the AhaSend team on drupal.org. Issues and feature requests go in the [issue queue](https://www.drupal.org/project/issues/ahasend). [Start for free on AhaSend →](https://dash.ahasend.com/user/register)