Weekly product update: Easy testing for Routes webhooks
Last week we released a much requested email tracking feature: domain-level webhooks. Continuing on that theme, this week we've released another webhook-related feature: easy testing for Routes webhooks. Now you can test your Routes webhook endpoints by POSTing a sample message to your app directly from your Mailgun control panel. We we'll be rolling out a similar Test feature for Tracking webhooks in the coming weeks so stay tuned for that.
Testing your Routes webhooks
We'd tried to make testing your Routes webhooks as simple as possible. All you need to do is enter a URL where you want to receive an HTTP POST and we'll POST a sample message with values for all available parameters. This way you can test your webhook handler and make sure everything is working properly prior to sending real email traffic. As always, you can also test how your Routes match against certain Filter Expressions you've created.
Here is what the new feature looks like in your control panel:
Here is a list of all the possible posted parameters:
A sample Flask app for accepting webhooks
We've posted this code before, and we'll post it again here because its helpful. If you're using webhooks to parse incoming messages, you need a way to process the incoming data. Here is a little Flask app that you can use to get started and customize for your specific use case.
from flask import Flask from flask import request app = Flask(__name__) @app.route('/mailgun-tracking', methods=['GET', 'POST']) def tracking(): # access some of the email parsed values: request.form['recipient'] request.form['from'] request.form['subject'] # extended parameters request.form['Message-Id'] request.form['message-headers'] request.form['timestamp'] request.form['body-plain'] request.form['stripped-html'] request.form['stripped-text'] request.form['stripped-signature'] return "Ok" if __name__ == '__main__': app.run(host='188.8.131.52', port=100, debug=True)
Till next week.