Notifications on Discord for Easy Digital Downloads
Changelog
2.0.0
New Feature: Added @mention support per status – specify @here, @everyone, or a Discord role ID to ping your team for critical events
New Feature: Added per-status color picker – choose a custom embed color for each notification directly from the settings page, with sensible defaults pre-selected
New Feature: Added test notification button per webhook – sends a live test embed to Discord directly from the settings page
New Feature: Added customer details to order embeds – customer name, email, and country with flag emoji
New Feature: Added Discord notification log with enable/disable toggle, configurable auto-purge retention period (default 7 days), manual purge option, and daily cron cleanup
New Feature: Added ppsndw_edd_discord_payload filter to allow customisation of the data sent to Discord
New Feature: Added uninstall.php – removes log table, all plugin options, and scheduled cron events when the plugin is deleted (opt-in via settings)
Enhancement: Redesigned settings page with tabbed layout (Notifications and Logs) and compact single-row-per-status table
Enhancement: Moved settings page to Downloads > Discord Notifications
Enhancement: Added status-specific embed colors – green for complete, amber for pending, blue for processing/pre-approved, red for failed/revoked/cancelled, grey for abandoned
Enhancement: Added Discord embed field truncation to respect API limits (title 256 chars, field values 1024 chars)
Enhancement: Added response code capture – the HTTP status returned by Discord is logged alongside each notification entry
Enhancement: Added load_plugin_textdomain() so translation files in /languages are properly loaded
Enhancement: Updated Tested Up To for WordPress 6.8
Security: Added defined(‘ABSPATH’) || exit guard to all PHP include files to prevent direct file access
Security: Escaped all dynamic output in the settings page with esc_html(), esc_attr(), and esc_url()
Security: Sanitize webhook URLs with esc_url_raw() instead of sanitize_text_field()
Security: Added wp_unslash() before sanitizing POST values to correctly handle WordPress magic quotes
Security: Replaced date() with gmdate() for timezone-safe timestamp generation
Security: Added nonce verification and capability checks to all form submissions and AJAX handlers