Product case study

Reducing campaign failures through root-cause analysis

Enterprise brands run scheduled multi-channel campaigns off the CDP. A failed send is not a bug report — it is a missed revenue window that the marketing team cannot re-open.

PROBLEM

Campaign failures were being handled one at a time. Each was closed as an isolated incident, so nobody could say whether failures were rising, or which cause dominated.

HYPOTHESIS

A small number of failure causes account for the majority of failed sends, and most are detectable before the send window rather than after it.

RESEARCH

Pulled every failed send event over a rolling period, joined it to campaign configuration and segment state, and grouped by failure reason instead of by ticket.

DATA USED

Send event logs · campaign config · segment membership snapshots · channel provider responses

DECISION MAKING

Ranked causes by volume and by how many distinct accounts they touched. Anything hitting multiple accounts was argued as a platform defect, not a configuration error, which changed who owned the fix.

SOLUTION

Pre-send validation on the dominant causes, plus a recurring report that made failure-reason distribution visible to product rather than buried in tickets.

BUSINESS OUTCOME

Failure handling moved from reactive per-ticket work to a prioritised backlog, and repeat causes stopped re-appearing in the queue every month.

REFLECTION

The analysis was trivial. The hard part was reframing a ticket queue as a dataset — once it was one, the argument made itself.

SQL INVESTIGATION

SELECT failure_reason,
       count(*)                AS failures,
       count(DISTINCT campaign_id) AS campaigns
FROM   send_events
WHERE  status = 'failed'
  AND  event_ts >= now() - INTERVAL 90 DAY
GROUP  BY failure_reason
ORDER  BY failures DESC;