Per-campaign delivery funnel: delivered / read / failed, with the failure reason #15197
achiya-automation
started this conversation in
Feature Requests
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
The problem
After a WhatsApp campaign runs, Chatwoot shows it as
completed. It doesn't show how many messages were delivered, how many were read, how many failed — or why.Campaigncarriescampaign_status: active | completed | processing, and the per-messagestatusexists onmessages, but nothing aggregates it back to the campaign.Why it matters commercially
"Completed" and "delivered" are different things, and the gap between them is where the money goes. A campaign to 240 contacts that reports
completedmight have delivered to 221 and failed on 8 — and those 8 failures each carry a Meta error code that tells the operator something actionable: this recipient hit their personal cap, this template is paused, this number isn't on WhatsApp.Without it, an operator sending campaigns from Chatwoot cannot answer "did it work?" without querying the database directly.
What it would take
An aggregate over
messagesgrouped by campaign, surfaced on the campaign page: audience → attempted → sent → delivered → read, plus a per-recipient list carrying the Meta error title for failures and a link into the conversation.One detail that matters: contacts who were in the audience but for whom no send was ever attempted need to be listed separately. Otherwise a silent drop looks identical to a delivery — the denominator quietly shrinks and the success rate reads better than it was.
Offer
Implemented and running in an MIT-licensed add-on (chatwoot-power-tools); happy to port it natively if you'd take it.
All reactions