> ## Documentation Index
> Fetch the complete documentation index at: https://docs.younegotiate.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Campaign Tracker

> ABC Collections sends a campaign to 500 consumers. After the campaign runs, the creditor opens Campaign Tracker to see whether the messages were processed.

## Real-World Example

ABC Collections sends a campaign to 500 consumers. After the campaign runs, the creditor opens Campaign Tracker to see whether the messages were processed.

The tracker should help them understand which messages were sent, which are pending, and which failed so they can follow up if needed.

## Visual Flow

```mermaid placement="top-right" actions={true} theme={"system"}
flowchart TD
    A["Campaign is scheduled or sent"] --> B["System processes campaign messages"]
    B --> C["Tracker records message status"]
    C --> D{"Message result"}
    D -->|Sent| E["Show as sent"]
    D -->|Pending| F["Show as pending"]
    D -->|Failed| G["Show as failed"]
    classDef default fill:#F8FAFC,stroke:#64748B,stroke-width:1.5px,color:#0F172A;
    classDef actor fill:#E0F2FE,stroke:#0284C7,stroke-width:2px,color:#0C4A6E;
    classDef system fill:#F8FAFC,stroke:#64748B,stroke-width:1.5px,color:#0F172A;
    classDef decision fill:#FEF3C7,stroke:#D97706,stroke-width:2px,color:#78350F;
    classDef risk fill:#FEE2E2,stroke:#DC2626,stroke-width:2px,color:#7F1D1D;
    classDef outcome fill:#DCFCE7,stroke:#16A34A,stroke-width:2px,color:#14532D;
    class A,C,E outcome;
    class B,F system;
    class D decision;
    class G risk;
    linkStyle default stroke:#94A3B8,stroke-width:2px;
```

## How It Should Work

* It should show campaign delivery and activity details.
* It should help the creditor confirm whether campaign messages were sent or are still pending.
* It should connect tracked activity back to the correct campaign.

## How It Should Not Work

* It should not show campaigns from another creditor.
* It should not mark messages as sent when they were not processed.
* It should not hide failed or pending campaign activity.

## Developer Notes

* Always check audience, creditor ownership, template selection, and opt-out/communication rules before sending.
* Background campaign work should record enough status for the tracker to explain sent, pending, and failed activity.
* Provider delivery, email open, SMS delivery, and opt-out activity can arrive later through SendGrid and Twilio callbacks. See [Communication Delivery & Webhooks](/portals/creditor/background-processing/communication-delivery-and-webhooks).

## Related App Areas

* `routes/creditor/index.php`
* `app/Livewire/Creditor/Communications`
* `app/Console/Commands/RunCampaignCommand.php`
* `app/Jobs/SendCampaignEmailSmsOrELetterJob.php`
