feat: Implement unsubscribe link for marketing automation [31188f42]
This commit introduces a new unsubscribe feature to allow contacts to opt-out from marketing automation. Key changes include: - Database schema migration: Added (UUID) to the model. - Data population: Implemented a script to assign unique tokens to existing contacts. - API endpoint: Created a public GET endpoint to handle opt-out requests. - Automation: New contacts automatically receive an unsubscribe token upon creation. - Integration: The full unsubscribe link is now returned via the provisioning API for storage in SuperOffice UDFs (ProgID: SuperOffice:9). - Documentation: Updated and to reflect the new feature and its integration requirements. - Added for quick overview and next steps.
This commit is contained in:
@@ -180,7 +180,21 @@ Contacts stehen in 1:n Beziehung zu Accounts. Accounts können einen "Primary Co
|
||||
|
||||
**Status (Marketing Automation):**
|
||||
* *Manuell:* Soft Denied, Bounced, Redirect, Interested, Hard denied.
|
||||
* *Automatisch:* Init, 1st Step, 2nd Step, Not replied.
|
||||
* *Automatisch:* Init, 1st Step, 2nd Step, Not replied, Unsubscribed.
|
||||
|
||||
### 6.1 Feature: Unsubscribe-Funktionalität (v2.1 - Feb 2026)
|
||||
|
||||
**Konzept:**
|
||||
Um DSGVO-konforme Marketing-Automatisierung zu ermöglichen, wurde eine sichere Unsubscribe-Funktion implementiert.
|
||||
|
||||
**Technische Umsetzung:**
|
||||
1. **Token:** Jeder Kontakt in der `contacts`-Tabelle erhält ein einzigartiges, nicht erratbares `unsubscribe_token` (UUID).
|
||||
2. **Link-Generierung:** Der Company Explorer generiert einen vollständigen, personalisierten Link (z.B. `https://<APP_BASE_URL>/unsubscribe/<token>`).
|
||||
3. **API-Endpunkt:** Ein öffentlicher GET-Endpunkt `/unsubscribe/{token}` nimmt Abmeldungen ohne Authentifizierung entgegen.
|
||||
4. **Logik:**
|
||||
* Bei Aufruf des Links wird der Status des zugehörigen Kontakts auf `"unsubscribed"` gesetzt.
|
||||
* Der Benutzer erhält eine simple HTML-Bestätigungsseite.
|
||||
5. **CRM-Integration:** Der generierte Link wird über die Provisioning-API an den `connector-superoffice` zurückgegeben, der ihn in ein entsprechendes UDF in SuperOffice schreibt.
|
||||
|
||||
## 7. Historie & Fixes (Jan 2026)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user