> ## 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.

# Contact Verification

> Jane changes her mobile number while setting up communication preferences.

## Real-World Example

Jane changes her mobile number while setting up communication preferences. The portal should confirm the new number before using it for SMS notices, payment reminders, or account access.

## Visual Flow

```mermaid placement="top-right" actions={true} theme={"system"}
flowchart TD
    A["Consumer enters or updates contact details"] --> B["Portal checks email and mobile format"]
    B --> C{"Contact detail changed?"}
    C -->|Yes| D["Portal sends verification"]
    C -->|No| E["Existing verified contact stays active"]
    D --> F["Consumer confirms the contact method"]
    F --> G["Contact becomes safe for portal communication"]
    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 actor;
    class B,D,E,F system;
    class C decision;
    class G outcome;
    linkStyle default stroke:#94A3B8,stroke-width:2px;
```

## How It Should Work

* It should treat email and mobile number changes as verification-sensitive actions.
* It should preserve the current verified contact until the new contact is confirmed.
* It should support communication controls, login, and OTP delivery without mixing old and new contact states.

## How It Should Not Work

* It should not send account-sensitive messages to an unverified new contact.
* It should not remove the consumer from future communications only because verification is pending.
* It should not allow a contact update to affect another consumer record.

## Developer Notes

* Contact verification is used across profile, communication controls, and OTP flows.
* When changing this behavior, test both email and mobile update paths.

## Related App Areas

* `app/Livewire/Consumer/Profile/CommunicationControls.php`
* `app/Livewire/Consumer/Forms/Profile/CommunicationControlsForm.php`
* `app/Livewire/Consumer/ConsumerContactInput.php`
* `app/Livewire/Consumer/Traits/SendOtp.php`
