← Roadmap publique
CHANGELOG
CallTracker AWM V1.10.6Snapshot sécurisé de la version effectivement publiée. Les lignes potentiellement sensibles sont masquées automatiquement.## 1.10.6 - Refonte UX Google Ads / CPL - 2026-09-21 - Refonte complete de la page **CallTracker AWM -> Google Ads** pour suivre le shell visuel AWM en Light et Dark. - Ajoute un en-tete acquisition/CPL avec etats OAuth, MCC et synchronisation visibles immediatement. - Remplace le rendu WordPress brut des champs par des cartes, champs, boutons, tableaux et etats coherents avec CallTracker. - Ameliore fortement le responsive mobile/tablette, notamment la liste des MCC et les actions. - Aucun changement OAuth, API Google Ads, calcul CPL, table SQL ou historique : correctif UX uniquement. ## 1.10.5 - Interface Google Ads restaurée dans CallTracker - 2026-09-21 - Ajoute une page **CallTracker AWM -> Google Ads** directement depuis le module, sans dépendre de Hub AWM -> Réglages. - Corrige la régression où Hub AWM 4.5.57 masquait l ancien écran `callink-google-ads` alors que le moteur Google Ads 1.10.4 restait actif. - Permet d enregistrer OAuth Client ID / Secret, les deux MCC ou davantage, puis de connecter Google Ads. - Ajoute un test de MCC qui liste les comptes clients accessibles avant toute association de campagne. - Conserve le moteur CPL multi-MCC 1.10.4, l historique, la formule CPL et les synchronisations automatiques. - Le Developer Token historique reste compatible; depuis le 9 septembre 2026, Google rattache l accès API au projet Google Cloud des identifiants OAuth. ## 1.10.4 - Google Ads CPL multi-MCC automatise - 2026-09-21 - Utilise Google Ads API v25 pour recuperer `metrics.cost_micros` par MCC, compte et campagne. - Le Developer Token devient facultatif dans le moteur: si un ancien token existe il reste envoye pour compatibilite, sinon l acces repose sur le projet Google Cloud lie aux identifiants OAuth. - Conserve plusieurs MCC dans une seule integration CallTracker et utilise le bon `login-customer-id` par campagne. - Ajoute la devise Google Ads, le `request-id`, la source et la fraicheur de synchronisation au CPL. - Ajoute une synchronisation automatique par petits lots toutes les 15 minutes pour le mois courant et le mois precedent, sans longue requete bloquante. - Une erreur Google Ads ne remplace jamais un investissement valide par zero; la campagne passe en etat `stale` avec la derniere erreur conservee. - Etend la table CPL de facon additive avec source, devise, statut, date de synchro et metadonnees de source. - Le mode manuel et l historique Laravel restent disponibles sans migration destructive. - Les futurs profils OAuth multiples restent prevus seulement si les deux MCC exigent des identites Google differentes. ## 1.10.3 — Pulse v2 routage — 2026-09-12 - Le score Health CallTracker pénalise uniquement les erreurs de synchronisation/routage connues. - Les campagnes et Twilio restent non modifiés automatiquement; le score sert au triage. ## 1.10.2 — Pulse opérationnel transversal — 2026-09-12 - Expose au Core un pulse campagnes actives / brouillons / erreurs de synchronisation routage. - Le pulse reste strictement descriptif et ne déclenche aucune opération Twilio. ## 1.10.1 — 2026-09-11 - CallTracker respecte désormais le statut opérationnel canonique de CRM AWM. - Un client inactif n'est plus éligible aux opérations CallTracker, tout en conservant campagnes, appels, enregistrements et historique. - La réactivation CRM restaure l'éligibilité selon le réglage CallTracker déjà enregistré. ## 1.10.0 — 2026-09-02 - Structure le parcours client **CallTracker → Nouveaux services → Nouveau funnel → Configuration du numéro → Formulaire/Webhook → Routage**. - Sépare définitivement la commande commerciale de l exécution technique : CRM crée et possède le service Funnel à 10 $/mois; CallTracker prépare la campagne technique. - Un nouveau funnel commence en état **configuration requise** et n active pas la facturation récurrente tant qu aucun numéro n a été acheté et attribué. - L achat du numéro réutilise le service CRM et la campagne préparés, revalide la disponibilité Twilio juste avant la transaction puis active le service CRM après succès. - Un échec Twilio laisse le funnel en configuration pour permettre une nouvelle tentative sans recréer un abonnement; un achat potentiellement accepté mais incomplet est conservé pour vérification afin d éviter un double achat. - Étend le routage modifiable par Hub Client : destination principale, fuseau, horaires, fermetures, destination hors heures, débordement séquentiel, délai et Message 2. - Conserve toutes les validations de propriété côté serveur et journalise séparément les modifications effectuées depuis Hub Client. ## 1.9.9 — 2026-09-02 - Ajoute un webhook HTTPS unique et secret pour chaque Funnel CallTracker. - Active automatiquement la structure de formulaire du funnel après achat du numéro et génère son URL de webhook sans exposer de secret Twilio. - Accepte les envois POST JSON ou formulaire de plateformes externes et reconnaît les champs courants nom, courriel, téléphone, message et URL de page. - Ajoute une protection anti-rejeu courte et un identifiant idempotent lorsque la plateforme fournit `submission_id` ou un identifiant de requête. - Les formulaires reçus sont enregistrés dans l historique CallTracker existant et alimentent immédiatement Leads et CPL du bon funnel. - Ajoute un test client non destructif qui vérifie campagne, jeton et stockage sans créer de faux lead. - Conserve le dernier instant de réception par funnel pour faciliter le diagnostic dans Hub Client. ## 1.9.8 — 2026-09-02 - Ajoute la recherche sécurisée de numéros Twilio pour Hub Client sans exposer les identifiants ni les URL d API. - Permet au client CallTracker autorisé d acheter un numéro et de créer son Funnel directement depuis son Hub. - Chaque achat crée une campagne CallTracker, attribue le numéro et lie un service CRM Funnel à 10 $/mois. - Le service est préparé avant l appel Twilio et supprimé automatiquement si aucun achat externe n a eu lieu. - Si Twilio accepte l achat mais qu une étape locale échoue, la campagne est conservée pour empêcher un double achat et Alliance reçoit un état à vérifier. - L inventaire des numéros est invalidé après achat afin de refléter immédiatement le nouveau numéro. ## 1.9.7 — 2026-09-02 - Livre la phase 1 du **Lot C — Routage avancé**. - Ajoute des horaires hebdomadaires par campagne dans le fuseau déjà géré par CallTracker. - Ajoute les fermetures spéciales / jours fériés au format YYYY-MM-DD. - Ajoute une destination hors heures facultative; si elle est vide, CallTracker ferme proprement l appel au lieu de transférer vers une mauvaise route. - Ajoute une destination de débordement séquentielle après non-réponse, occupé ou échec de la première destination. - Ajoute un délai de sonnerie configurable de 10 à 60 secondes. - Ajoute un aperçu de la route effective dans Hub : état Ouvert/Fermé, heure locale, destination actuelle et débordement. - Ajoute la route Core `callink/v1/routing-next` signée par Twilio pour enchaîner le secours sans sonner deux destinations en parallèle. - Étend Validation et santé : empreinte, horaire, destination hors heures, débordement, délai et tests requis. - Les équipes, priorités, stratégies multi-tentatives, modèles réutilisables et tests simulés restent dans le Lot C phase 2. # Changelog — CallTracker AWM ## 1.9.6 — 2026-08-25 - Ajoute la bascule globale de l’ancienne plateforme dans **Validation et santé**. - Resynchronise par lots tous les numéros des campagnes actives et les numéros encore actifs dans l’export legacy retrouvés localement vers le webhook entrant AWM. - Reprend également les numéros dont les appels entrants sont désactivés et les numéros actifs legacy retrouvés sur une campagne locale maintenant inactive; AWM garde le webhook puis bloque leur transfert. - Refuse la finalisation si un numéro actif de l’export legacy ne correspond à aucune campagne locale, afin de ne jamais laisser un numéro oublié sur l’ancienne plateforme. - Résout les Phone Number SID manquants, retire `VoiceFallbackUrl` et `VoiceApplicationSid`, puis relit Twilio pour confirmer la reprise. - Ajoute progression, aperçu, erreurs par campagne, reprise sans popup et journal Core. - Ajoute le verrou **BASCULE AWM** qui transforme Laravel en référence historique et bloque les nouveaux imports migration/CPL. - Ajoute une réouverture exceptionnelle explicite pour les imports historiques. - Conserve Lot C Routage avancé comme prochaine implémentation et référence l’accès API Google approuvé pour le futur Lot E CPL/Google Ads. --- ## 1.9.5 — 2026-08-25 - Corrige les campagnes existantes dont le numéro de réception a été modifié : la sauvegarde déclenche maintenant une resynchronisation du webhook entrant Twilio vers AWM. - Vérifie le Phone Number SID; s'il manque ou ne correspond plus au numéro de campagne, le SID est recherché dans le compte Twilio configuré puis rattaché à la campagne. - Priorité de destination explicite : numéro de transfert de campagne, puis numéro du client en fallback. - Une modification du numéro client resynchronise automatiquement les campagnes qui utilisent ce fallback et n'ont pas d'override propre. - Ajoute un bloc « Routage entrant Twilio » dans l'éditeur avec destination effective, dernière destination synchronisée, date, erreur éventuelle et bouton de resynchronisation manuelle. - Conserve une empreinte de configuration afin de ne contacter Twilio que lorsqu'un élément critique de routage change. - Journalise les synchronisations et échecs dans Core AWM sans empêcher l'enregistrement local de la campagne. - Exige Core AWM 4.5.43. - Utilise Hub AWM 4.5.15 pour empêcher le Heartbeat WordPress de déclencher le loader plein écran toutes les ~30 secondes dans l’éditeur. ## 1.9.4 — 2026-08-25 - Retire l'autosave WordPress natif de l'éditeur interne `callink_campaign` afin d'éviter le dialogue bloquant « Connexion perdue » et la sauvegarde locale navigateur hors du contrat AWM. - Conserve Heartbeat pour les verrous/session, mais affiche l'état de connexion directement dans la barre **Enregistrer la campagne**. - Affiche **Connexion active**, **Hors ligne — reconnexion automatique** ou **Connexion WordPress instable — enregistrement manuel disponible** sans modal navigateur. - Le bouton d'enregistrement n'est désactivé que lorsque le navigateur est réellement hors ligne; une alerte Heartbeat seule n'empêche pas une tentative manuelle. - Supprime les notices natives `lost-connection` / stockage local lorsqu'elles sont injectées dans l'éditeur de campagne. - Exige Core AWM 4.5.42 et Hub AWM 4.5.14 pour l'expérience complète. - Référence le correctif dans la roadmap sans marquer les validations Twilio terrain comme terminées. --- ## 1.9.3 — 2026-08-25 - Ajoute un registre persistant d idempotence pour les callbacks Twilio de statut et d enregistrement. - Détecte les rejeux et empêche les doubles écritures sans bloquer les retries légitimes des routes TwiML. - Empêche les statuts hors ordre de faire régresser un appel grâce à `SequenceNumber` et aux états monotones. - Ajoute une file de reprise locale courte pour erreurs transitoires, cinq tentatives et un état échec définitif visible dans Validation et santé. - Évite de rejouer les erreurs 4xx déterministes. - Normalise appels et formulaires vers un temps UTC canonique et calcule les périodes CPL dans le fuseau de chaque campagne. - Retire l URL Twilio brute du contrat client et passe la lecture des enregistrements par un proxy sécurisé Core/Hub Client. - Exige Core AWM 4.5.41; l expérience client complète utilise Hub Client AWM 1.8.7. - Met à jour roadmap et documentation sans marquer les validations terrain comme terminées. --- ## 1.9.2 — 2026-08-25 - Ajoute le centre **Validation et santé** accessible depuis Hub AWM. - Compare les compteurs de migration attendus et importés pour clients, campagnes, numéros, appels, formulaires et périodes CPL, en tenant compte des exclusions persistantes. - Analyse les doublons, orphelins et incohérences de propriétaire afin de faire ressortir les exceptions avant clôture. - Ajoute un diagnostic par campagne : client, numéro, SID Twilio, affectation, webhook entrant, destination, fuseau horaire, Message 1, Message 2, Dialer, enregistrement et dernière activité. - Ajoute un parcours de tests guidés pour la configuration, l’appel entrant, la destination, le CPL, le Dialer sortant, l’enregistrement et les messages audio selon les réglages actifs. - Permet d’approuver une campagne seulement après validation explicite; l’approbation est liée à une empreinte SHA-256 des paramètres critiques et devient périmée si ceux-ci changent. - Ferme l’exposition client du CPL par défaut : Core et Hub Client n’affichent que les campagnes approuvées, avec un état **CPL en validation** pour les autres. - Ajoute une clôture de migration signée et réversible après approbation des campagnes actives; la clôture est refusée lorsque des exceptions bloquantes subsistent ou qu’une campagne active reste non approuvée; les campagnes inactives peuvent être revues séparément pour leur CPL historique. - Remplace les confirmations navigateur natives des principaux flux CallTracker actifs par des confirmations AWM intégrées : inventaire de numéros, achats/réservations, campagnes, imports, CPL, Twilio, Google Ads, audio et historique. - Journalise les validations, approbations, réouvertures et clôtures dans Core AWM. - Exige Core AWM 4.5.39, Hub AWM 4.5.13 et Hub Client AWM 1.8.6 pour l’expérience complète. --- ## 1.9.1 — 2026-08-24 - Ajoute un marqueur de résultat explicite pour les opérations natives de campagne : corbeille, restauration, suppression définitive et enregistrement groupé. - Ces résultats sont consommés par le loader AWM au lieu d’un bandeau WordPress. - Le mécanisme reste compatible avec l’action native « Annuler » extraite par Hub lorsque WordPress la fournit. - Aucun changement de tables, métas, routes métier, tombstones, historique ou formule CPL. --- ## 1.9.0 — 2026-08-24 - Corrige définitivement le lien WordPress `Toutes` noir sur noir : `.subsubsub` est stylé directement car WordPress le rend hors de `#posts-filter`. - Ajoute les réglages par campagne **Enregistrer les appels**, **Dialer côté client** et **Fuseau horaire**. - Le fuseau proposé provient uniquement de la fiche CRM/WHMCS; aucune recherche d’adresse externe n’est lancée. - Les appels entrants peuvent demander un enregistrement Twilio conditionnel avec callback Core; les métadonnées d’enregistrement sont synchronisées dans l’historique canonique. - Les appels sortants restent visibles mais strictement exclus des leads et du CPL. - La migration réutilise le réglage historique `record_call` pour initialiser le nouveau réglage sans rupture. ## 1.8.1 — 2026-08-24 - Corrige le listing WordPress des campagnes pour qu’il hérite entièrement des couleurs du shell AWM en clair/sombre. - Rétablit le contraste de « Toutes », filtres, pagination, champs de recherche, tableaux et actions lorsque le thème sombre est changé dynamiquement. - Remplace les fonds noirs opaques du listing par les surfaces partagées Hub/Core sans modifier les campagnes ni leur historique. ## 1.8.0 — 2026-08-24 - Ajoute le routage entrant par campagne avec **Message 1 — Avertissement** puis **Message 2 — Publicité** avant la redirection. - Intègre le MP3 d’avertissement Alliance par défaut; Alliance peut le remplacer ou revenir au fichier par défaut. - Permet au client de téléverser/remplacer/supprimer son Message 2 MP3, de l’activer/désactiver et de modifier son numéro de réception uniquement pour ses campagnes. - Ajoute le contrôle administratif complet des deux messages et de la destination depuis la fiche client Hub AWM. - Stocke les MP3 dans un répertoire privé Alliance, limite à 5 Mo, valide la signature MP3 et les sert par une URL Core signée. - Écrit maintenant les nouveaux appels Twilio entrants et sortants dans `callink_calls` en plus du post type historique; les callbacks mettent à jour statut et durée de façon idempotente. - Les appels sortants apparaissent dans l’historique comme **Sortant** mais restent strictement exclus des leads et du CPL. - Conserve la migration Laravel, les identifiants historiques, les exclusions anti-réimportation et les routes existantes. --- # Changelog — CallTracker AWM ## 1.7.0 — 2026-08-19 - Rafraîchit le lot de migration à partir de l’export Laravel du 19 août 2026. - Intègre 69 306 appels et 44 712 formulaires attribuables; conserve 17 appels et 2 379 formulaires orphelins hors attribution. - Utilise le propriétaire canonique de la campagne comme frontière client pour 25 351 appels dont le `client_id` Laravel historique diffère, tout en conservant cet identifiant pour audit. - Étend l’outil Migration existant aux 3 602 lignes de coûts/CPL et protège les lignes WordPress manuelles. - Signale les erreurs SQL CPL comme résultat partiel plutôt que comme réussite complète. - Refuse l’import CPL vers une campagne non publiée, en corbeille, supprimée ou exclue. - Ajoute le formulaire AWM intégrable par campagne avec défi HMAC, anti-robot, limitation et dédoublonnage. - Ajoute la réception Connector pour Elementor et autres intégrations locales autorisées. - Étend `callink_forms` de manière additive aux identifiants de soumission, sources, téléphone, page et empreintes techniques. - Aligne le nombre de leads sur appels entrants plus formulaires dans l’administration et le portail client. - Conserve le flux courriel historique comme repli et ne prend pas en charge les fichiers dans cette première version. - Exige Core AWM 4.5.8; aucune table, route, option, méta ou identité historique n’est supprimée ou renommée. --- ## Historique des versions précédentes # Changelog — CallTracker AWM ## 1.6.0 — 2026-08-19 ### Ajouté - Service `CallLink_Campaign_Bulk_Actions` pour les aperçus et exécutions groupées de campagnes et réservations locales. - Actions campagne : archivage, corbeille, libération Twilio, suppression définitive et réattribution cliente. - Actions inventaire : réservation locale, réattribution et retrait de réservation. - Aperçu serveur détaillé, phrase de confirmation, jeton à usage unique revendiqué atomiquement, empreinte d’état, verrouillage concurrent, limites de lot et résultats par élément. - API interne d’inventaire partagée par les parcours unitaires et groupés : normalisation, lecture, écriture et retrait de réservation. ### Sécurité et compatibilité - Niveau Core `calltracker/approve`, nonce, validation stricte, confirmation sensible à la casse et journalisation pour chaque lot sensible. - Le client cible d’une réservation est revalidé côté serveur avec la même éligibilité CallTracker que l’interface. - Inventaire Twilio relu directement lors de l’exécution d’un lot de réservations. - Exclusion legacy explicitement persistée pour les mises à la corbeille et suppressions personnalisées. - Appels et formulaires conservés; aucune table, option, route, méta ou identifiant historique renommé ou supprimé. - Le post type historique `callink_campaign` et le statut technique `publish` restent compatibles et non publics. ### Corrigé - Les suppressions par changement direct de statut ne peuvent plus contourner la protection anti-réimportation. - Les actions unitaires et groupées utilisent maintenant la même frontière de validation des réservations. - Une erreur de nettoyage local après une libération Twilio irréversible est signalée et journalisée sans présenter la libération externe comme annulée. - La libération Twilio retire désormais la réservation locale depuis une seule frontière partagée par les parcours unitaires et groupés. - Les lots campagne qui libèrent ou réattribuent un numéro verrouillent aussi la ressource téléphonique afin d’éviter une collision avec un lot de réservations. - Les corbeilles et suppressions destructives échouent de manière fermée si l’exclusion legacy d’une campagne historique ne peut pas être réellement persistée. - Les options partagées de réservations, d’exclusions legacy et d’instantanés de suppression utilisent maintenant des écritures sérialisées avec relecture de persistance. - Après une libération Twilio acceptée, l’état local, les appels entrants, le Dialer et le retrait de réservation sont contrôlés séparément; toute divergence est signalée dans le résultat et le journal Core. - Une réattribution vérifie le propriétaire enregistré, restaure la réservation concurrente si l’écriture principale échoue et compare le nombre d’appels/formulaires réellement propagés. --- ## 1.5.1 — 2026-08-19 - L’éditeur natif `callink_campaign` n’utilise plus le workflow éditorial WordPress : libellés Campagne, boîte Publier retirée et colonne latérale de publication supprimée. - Ajout d’une barre AWM « Enregistrer la campagne »; le statut WordPress `publish` reste uniquement un état technique interne de compatibilité. - Les messages « Article mis à jour » deviennent « Campagne enregistrée » et sont consommés par le loader AWM au lieu d’un bandeau. - La liste Campagnes masque les vues de statuts éditoriaux WordPress et remplace la colonne Publication par « Dernière modification ». - La campagne reste explicitement non publique et non exposée au front-end. ## 1.5.0 — 2026-08-19 - Ajout de l’inventaire Twilio à quatre états : **Libre, Réservé, Attribué, À vérifier**. - Comparaison serveur du compte Twilio Alliance avec toutes les campagnes CallTracker sans exposer les identifiants Twilio au navigateur. - Détection des doublons de numéro, campagnes locales absentes du compte Twilio, réservations orphelines et numéros encore détenus après corbeille/libération déclarée. - Affichage du dernier rattachement connu, de la campagne et du client lorsque disponibles. - Réservation et retrait de réservation protégés par permission CallTracker Modifier, nonce, validation et journal de sécurité Core. - Cache Twilio court et invalidation automatique après achat ou libération d’un numéro. ## 1.4.1 — 2026-08-18 - Le Dialer accepte maintenant une campagne liée à un alias historique sûr du client canonique, via le résolveur d’identité Core 4.5.4. - Les contrôles restent stricts : campagne publiée, statut actif, Dialer activé, numéro Twilio présent et identité cliente reliée de façon sûre. - Les nouveaux appels sortants lancés depuis le Hub Client sont attribués à la fiche canonique portée par la session lorsque la campagne conserve encore un ancien propriétaire technique. ## 1.4.0 — 2026-08-18 - CallTracker AWM 1.4.0 devient la référence officielle du shell visuel AWM partagé. Son ancien en-tête spécifique est remplacé par le shell Core afin d’éviter les doublons tout en conservant toutes les routes et fonctions existantes. ## Sécurité 1.3.7 — 2026-08-17 - CallTracker AWM 1.3.7 utilise le coffre Core 4.4.0 pour protéger au repos les secrets Twilio et Google Ads sans modifier les routes historiques. # Changelog — CallTracker AWM ## 1.3.6 — 2026-08-17 - Les routes REST historiques Twilio `/callink/v1/token`, `/voice`, `/incoming` et `/status` sont désormais enregistrées exclusivement par Core AWM 4.3.9. - CallTracker conserve le traitement métier Twilio mais n’est plus propriétaire de la surface API publique. - Les URL historiques restent strictement inchangées. ## 1.3.5 — 2026-08-17 - Les campagnes historiques mises à la corbeille ou supprimées définitivement sont maintenant inscrites dans une liste d’exclusion persistante (`callink_legacy_campaign_tombstones`). - Les synchronisations/migrations depuis l’ancienne plateforme ignorent systématiquement ces campagnes et ne peuvent plus les republier ni les recréer automatiquement. - Une campagne déjà présente dans la corbeille au moment d’une synchronisation est automatiquement protégée contre la résurrection. - Une restauration WordPress explicite retire l’exclusion et autorise de nouveau la synchronisation de cette campagne. - Les exclusions et restaurations sont consignées dans le journal de sécurité Core lorsqu’il est disponible. ## 1.3.4 — 2026-08-17 - Correctif global des associations historiques Clients ↔ Campagnes : les campagnes liées à une ancienne adresse du même client sont maintenant visibles dans la fiche CallTracker canonique lorsqu’une correspondance sûre peut être établie. - Exemple couvert : une campagne liée à `info@domaine.tld` et une fiche WHMCS liée à `proprietaire@domaine.tld`, avec identité cohérente. - Aucun rattachement n’est réécrit silencieusement; les consolidations permanentes restent soumises au rapprochement global contrôlé. ## 1.3.3 — 2026-08-17 - Rapprochement global de l’ensemble des anciennes fiches CallTracker vers les fiches WHMCS canoniques, avec fusion en lot limitée aux correspondances sûres et uniques. - Les campagnes, appels et formulaires suivent la fiche canonique après rapprochement; les cas ambigus restent visibles pour validation manuelle. - Correction du rendu réel des écrans WordPress de campagnes : retrait du logo historique dupliqué et conservation d’un seul en-tête CallTracker en haut. - Harmonisation complète du listing et de l’éditeur Campagnes en clair/sombre, incluant champs, metaboxes, publication, tableaux et actions. - Compatibilité des associations clients historiques : les campagnes liées par ID WHMCS ou courriel sûr apparaissent dans la fiche CRM/WHMCS canonique. - Agrégation des compteurs de campagnes, appels et formulaires sur les références sûres du même client. ## 1.3.2 — 2026-08-17 - Amélioration du parcours Campagnes : visualisation consolidée des appels et formulaires par campagne. - Campagnes associées visibles depuis la fiche client avec compteurs et accès direct à l’activité. - Harmonisation visuelle de l’administration Campagnes et en-tête CallTracker avec le thème AWM. ## 1.3.1 — 2026-08-17 - Activation ou désactivation d’un client pour CallTracker sans modifier son statut WHMCS/CRM. - Les clients CallTracker actifs sont les seuls proposés lors de la création d’une campagne avec achat Twilio. - Rattachement direct d’une campagne existante non assignée depuis l’écran Clients. - Préselection du client lors de l’ouverture de « Nouvelle campagne ». - Refus serveur d’un achat ou d’un jeton Dialer client lorsque CallTracker est désactivé pour ce client. - Compatibilité préservée pour les clients ayant déjà des campagnes historiques. ## 1.3.0 — 2026-08-17 - Ajout d’un accès Clients directement dans CallTracker AWM. - Recherche des clients par nom, entreprise, courriel, téléphone, campagne ou numéro Twilio. - Filtres Actifs, Inactifs et Tous disponibles depuis CallTracker; les clients inactifs restent masqués par défaut. - La référence WHMCS demeure la source du statut actif, avec respect des exceptions manuelles et de la fiche interne Alliance Web Marketing. - Réutilisation de la route historique `callink-clients` et des métadonnées existantes, sans nouvelle table ni duplication de clients. # Historique — CallTracker AWM ## 1.2.0 — 2026-08-17 - Contrat de permissions Core AWM 1.0 appliqué aux campagnes, numéros, historique et CPL. - Niveaux distincts pour consultation, opérations quotidiennes, approbation et réglages. - Signatures Twilio refusées consignées dans le journal central avec limitation anti-bruit. - Diagnostic Core des webhooks Twilio et du Dialer. - Activation arrêtée proprement avec Core antérieur à 4.3.0, sans modification des campagnes ni de l’historique. ## 1.1.2 — 2026-08-15 - Libération explicite d’un numéro Twilio sans recopie manuelle. - Comparaison serveur du numéro enregistré avant l’appel irréversible à Twilio.