# Registration Flow

**Standard Registration (with SMS verification):**

1. User submits registration data (POST without `code`)
2. System sends SMS verification code
3. Code stored in session as `confirmation_data`
4. User resubmits with `code` parameter
5. System validates phone and code match
6. Creates loyalty account in external system
7. Creates local LoyaltyCard record
8. Sets user attributes: `has_loyalty=true`, `verified_user=true`
9. Optionally syncs user data if `is_sync=true`

**OTP Registration (without SMS verification):**

1. User already verified via other means
2. Direct submission to `/add_loyalty_card_otp/`
3. Skips SMS verification entirely
4. Creates loyalty account and local record
5. Sets `has_loyalty=true` attribute

**Search and Link:**

1. User submits phone/email to `/search_exists_create/`
2. System queries external loyalty system
3. If account exists, creates local LoyaltyCard link
4. If not found, returns message (no account creation)
