        result = await materialize_campaign(db, c, recipient_rows)
        c.total_recipients = result.get("total", 0)
        await db.commit()
    res = await start_campaign(db, c)
    if not res.get("ok"):
        raise HTTPException(status_code=409, detail=res.get("reason", "Cannot start"))
    await log_audit(db, user.id, "campaign.start", "campaign", c.id,
                    {"queued": res.get("queued")})
    return {"status": "running", "queued": res.get("queued")}


