What's New in v9.9.0
💬 Richer Webhook Payloads & Better Chatwoot Conversations
Version 9.9.0 adds structured interactive replies, order details, conversion attribution, and media metadata to webhooks. Chatwoot now displays poll choices, preserves reply context for agent messages, and identifies removed reactions when the original emoji is known. It also prevents reaction echoes and updates Go dependencies.
✨ Features
Interactive Replies and Order Metadata (#954)
- Add
interactive_replyfor button, list, template-button, and native-flow responses, including native-flow names and raw response JSON when available. - Add snake_case order fields alongside the existing order payload. Existing
selectionfields remain available.
Conversion Attribution and Media Metadata (#952)
- Include available conversion attribution and
media_infofor supported media messages, plus mentions, forwarding score, and disappearing-message expiration. - Read context from the message itself, including supported response, poll, and business-message types. Empty metadata is omitted.
Removed Reaction Emoji (#947)
- Include optional
removed_reactionin reaction webhooks when the original emoji is available in local chat storage. - Show the removed emoji in Chatwoot when known. The original
reactionfield remains empty for removals.
Poll Choices and Reply Context in Chatwoot (#949, #950)
- Show poll questions and options for creations and successfully decrypted edits while preserving WhatsApp text formatting.
- Thread WhatsApp replies and reactions onto the corresponding Chatwoot agent message when its stored link matches the destination and conversation.
- Show a quoted excerpt for replies when no usable native reply link is available.
🐛 Bug Fixes
Prevent Chatwoot Reaction Echoes (#943)
- Give mirrored reaction notes their WhatsApp event source ID so the echo guard can prevent send-back before the sent-message cache is updated.
🔧 Technical Improvements
- Update 11 Go dependencies, including whatsmeow to
v0.0.0-20261105212532-307a2edf117d, MCP Go tov1.5.0, go-sqlite3 tov1.14.53, and pure-Go SQLite tov1.61.1. - Load Docker Hub credentials from 1Password and add a manual
check_onlyworkflow mode to verify 1Password and registry access without building or publishing images. - Replace Patreon promotion with GitHub Sponsors (#941).
Upgrade Notes
- Treat the new webhook metadata as optional.
removed_reactionrequires a known stored reaction, and conversion, media, interactive-reply, and order fields depend on the incoming message. - Keep existing
selectionand order-field handling where required. The new fields extend these payloads. - Review the authentication and TLS changes in the v9.8.0 upgrade notes when upgrading from v9.7.0 or earlier.
What's Changed
- docs: replace Patreon promotion with GitHub Sponsors (#941) by @aldinokemal
- fix(chatwoot): prevent reaction echo send-back (#943) by @andersonrfsilva
- feat(chatwoot): thread WhatsApp replies and reactions onto agent messages (#950) by @andersonrfsilva
- feat(webhook): forward conversion attribution and media metadata (#952) by @aldinokemal
- feat(chatwoot): show poll options in Chatwoot (#949) by @andersonrfsilva
- feat: include removed emoji in reaction events (#947) by @andersonrfsilva
- feat(webhook): forward interactive replies and order metadata (#954) by @aldinokemal
- ci: use 1Password registry credentials and add access check mode (5f1afb6) by @aldinokemal
- chore(release): update dependencies and bump version to v9.9.0 (be8e3a2) by @aldinokemal
Contributors
Full Changelog: v9.8.0...v9.9.0