Documentation OpsIQ

Construire, exploiter et Étendre OpsIQ.

C'est la documentation complète pour OpsIQ. Configurez le produit, lancez le support, configurez l'IA, gérez le CRM, installez le widget, construisez des connecteurs, appelez le REST API, recevoir des webhooks, paqueter les applications du marché et opérer des déploiements auto-organisés.

Guide du clientGuide d'administrationGuide du développeurRéférence CRMSDK de connecteurAPI RESTAuto-hébergé
Portée

Portée du présent manuel

Tout OpsIQ fait, en un seul endroit: comment chaque écran fonctionne, comment connecter vos propres systèmes, et comment construire sur elle. Commencer n'importe où, les sections suivent la même commande que la barre latérale d'administration.

Portée
Carte de documentationLe manuel est organisé autour du produit OpsIQ, suivant le même ordre que la barre d'administration.Carte de documentationProduit OpsIQAUDIENCEOpérateursBÂTIMENTDéveloppeursRUNAdministrateursVUE DE L'ESPACE DE TRAVAIL EN DIRECTUtilisez OpsIQÉcrans et workflows de produitsInclusExtender OpsIQConnecteurs, APIs et widgetInclusUtiliser OpsIQSécurité, cron et déploiementInclusRéférenceContrats de package, API et webhookInclus1CHOOSE AUDIENCEOpérateur ou développeur2FOLLOW THE UIMiroir de sections OpsIQ3USE SOURCE TRUTHLe statut vient de la construction
Le manuel est organisé autour du produit OpsIQ, suivant le même ordre que la barre d'administration.
Guide de terrain Portal Studio

Utilisez le guide d'administration et de développement dédié pour l'architecture du portail, les pages, les composants, la version préliminaire, le centre d'aide, l'identité, SCIM, les versions régies, les extensions, les migrations et la certification.

Ouvrir le guide Portal Studio

Ce qui est ici

Exécuter le produit

Chaque écran de l’administration: analyses, chat en direct, tickets, CRM, base de connaissances, Site Intelligence, promotions et portail client. Que fait chaque page, ce que les chiffres signifient et quoi faire quand ils ne semblent pas corrects.

Connectez vos systèmes

Le widget du site Web, les boîtes aux lettres de courrier électronique, les webhooks entrants et sortants et la bibliothèque de connecteurs pour des plateformes comme Shopify, WooCommerce, WHMCS Zendesk, Stripe, Slack et Gmail.

Construisez votre propre

Le Connector Builder pour les connecteurs sans code, Actions & Triggers si vous préférez ne pas utiliser de connecteurs du tout et le REST API avec chaque action, portée et code d'erreur.

Faites-le fonctionner

Rôles et autorisations, sécurité, cron, diagnostics, sauvegardes et déploiement hébergé ou auto-hébergé.

Où commencer

1
Si vous exécutez OpsIQ jour après jour

Chaque page s’ouvre avec l’objet de la page, vous pouvez donc arrêter dès que vous avez ce dont vous avez besoin.

2
Si vous l'administrez

Ajoutez les sections Paramètres, Sécurité, Diagnostics, Cron et Production qui décident si tout le reste fonctionne.

3
Si vous créez une intégration

Commencez par Connecteurs, puis le Constructeur de connecteur, puis REST API Lisez-les dans l'ordre et vous aurez vu toutes les façons de créer des webhooks. OpsIQ Il peut parler à un autre système.

💡
Deux choses changent ce que vous voyez. Les permissions masquent les pages de votre rôle, donc une section décrite ici peut manquer dans votre barre latérale. Demandez à un administrateur de vérifier votre rôle. Et les connecteurs portent une étiquette de maturité de Production, Beta, Preview ou Template; la construction en cours et son manifeste de connexion sont l'autorité sur laquelle vous avez, pas cette page.
Commencez ici

Ce que OpsIQ fait pour votre entreprise

OpsIQ Il remplace vos analyses, chat en direct, service d'assistance, CRM, boîte à outils SEO, middleware d'intégration et plate-forme de développement par un seul administrateur unifié où chaque outil partage le même contexte client. Au lieu de coller ensemble 8-12 Des produits SaaS séparés, vous installez OpsIQ Une seule fois et de tout faire fonctionner à partir d'un seul écran.

La plateforme
OpsIQ plateforme unifiéeUn cerveau central d'IA connecté au chat en direct, au CRM, aux tickets, à l'intelligence du site, aux promotions et aux analyses.Chat en directPromotionsCRM AISite d'IntelBilletsAnalytiqueOpsIQCERVEAU IA1ONE WORKSPACETous les outils dans un seul admin2SHARED BRAINUn contexte client3ANYWHERECloud ou auto-hébergé
OpsIQ est une plateforme avec un contexte client partagé, chaque outil alimente, et est alimenté par, le même cerveau d'IA.

Tout OpsIQ fait · en détail

Analyse du site Web et intelligence des visiteurs

Suivi des visiteurs en temps réel

Chaque chargement de page, clic, défilement et événement de navigation est capturé en temps réel. Voyez qui est sur votre site en ce moment, quelles pages ils regardent, combien de temps ils passent, et d'où ils viennent, tous sans cookies tiers.

Journal des visiteurs et sessions

Historique complet de chaque visiteur avec l'appareil, le navigateur, le système d'exploitation, le pays, la ville, le référent, les paramètres UTM, la page de destination et la résolution des identités. Les sessions regroupent les vues de pages en parcours afin que vous puissiez voir tout le chemin emprunté par un visiteur.

Relecture de session

Lecture de style chronologique des sessions de visiteurs capturés. Voyez exactement ce que les utilisateurs ont fait : mouvements de souris, clics, défilements, transitions de page et interactions de forme. Utilisez-le pour diagnostiquer les problèmes UX, comprendre les points de dépôt et vérifier les flux de conversion.

Flux en direct

Un flux en temps réel de l'activité des visiteurs au fur et à mesure. Voir les pages vues, les débuts de chat, les soumissions de formulaires et les signaux d'intention mis à jour toutes les quelques secondes. Filtrer par pays, appareil ou référent pour se concentrer sur des segments de trafic spécifiques.

Pages haut de page

Pages classées par visites, temps d'engagement, taux de rebond, conversions et activité d'assistance Identifiez votre contenu le plus performant et les pages qui doivent être améliorées.

Géo-intelligence

Distribution des appareils et des navigateurs, analyse de la source du trafic, suivi des moteurs de recherche référents et informations sur la pénétration du marché.

Entonnoir d'intention

Suivre les signaux d'intention des visiteurs (visites de pages, retours répétés, modèles de navigation documentaire et interactions de soutien) afin d'identifier les visiteurs susceptibles d'acheter, de faire des achats ou d'avoir besoin d'aide.

Expériences A/B

Exécutez des tests de split sur votre site web directement depuis OpsIQ. Créez des variantes, définissez l'allocation du trafic, les objectifs de conversion et mesurez la signification statistique.

Suivi des erreurs JavaScript

Capturez automatiquement les erreurs JavaScript côté client de votre site Web. Consultez les messages d'erreur, les traces de pile, les navigateurs affectés, le nombre de fréquences et les pages qui les déclenchent.

Journal des événements

Chaque événement suivi (vues de page, événements personnalisés, interactions de chat, présentations de formulaires, achats) dans un journal de bord consultable et filtrable avec métadonnées complètes.

Ventes et conversions

Suivez les commandes, le chiffre d'affaires, les remboursements, les renouvellements d'abonnement et attribuez les conversions aux sources de trafic, aux campagnes et au parcours des visiteurs.

Plombs

Les visiteurs à haut niveau d'intention identifiés par les modèles de comportement. Le pointage est basé sur les visites de page, l'heure sur le site, la fréquence de retour, les interactions de soutien et les signaux personnalisés.CRMpipeline.

Site Intelligence (SEO et analyse de contenu)

Crawls de site

Analyse automatisée de l'ensemble de votre site Web pour découvrir des pages, détecter les liens cassés, trouver les balises Meta manquantes, vérifier le texte alternatif d'images, valider URLs canonique et cartographier la structure de votre Site.

Audit SEO technique

Analyse technique complète : scores de vitesse des pages, ergonomie mobile, Core Web Vitals, état du certificat SSL, chaînes de redirection, contenu dupliqué

Audit de contenu

Évaluez la qualité de chaque page, le nombre de mots, le score de lisibilité, la densité des mots-clés, la structure du titre, le ratio liens internes/externes et la fraîcheur.

Recherche alimentée par l'IA

Posez des questions en langage naturel sur votre contenu et obtenez des réponses synthétisées par l'IA avec les références de la page source.

Suivi du SERP rank

Surveillez les changements de position au fil du temps, comparez-vous aux concurrents et voyez quelles pages se classent pour quels termes.

Recherche de mots clés

Découvrez les opportunités de mots-clés en fonction de votre contenu, de l'analyse des concurrents et des données sur le volume de recherche.

Analyse de backlink

Voyez quels sites vous renvoient, suivez les liens nouveaux et perdus, analysez la distribution des textes d’ancrage et identifiez les opportunités de création de liens.

Grille SEO locale

Pour les entreprises disposant d'un emplacement physique, visualisez votre visibilité dans la recherche locale sur une grille géographique et voyez comment vos classements varient en fonction de l'emplacement, de la distance par rapport à votre entreprise et de l’intention de recherche.

Synchronisation du profil Google Business

Connectez votre profil Google Business à OpsIQ. Synchronisez les avis, les publications, les questions et réponses, les photos et les informations professionnelles. Gérez votre page GBP depuis l'intérieur de _OpsIQ. Répondez aux avis, publiez des publications et suivez les statistiques.

visualHtml

Rapports automatisés SEO et analytiques générés sur votre horaire (quotidiennement, hebdomadairement, mensuellement). Les rapports comprennent les changements de classement, les tendances du trafic, les problèmes techniques trouvés, et la performance du contenu.

Support alimenté par l'IA

Chat IA client

L'IA répond aux questions des clients sur votre site Web 24/7 Grâce à votre base de connaissances, aux données de la plateforme connectée (commandes, comptes, abonnements) et aux invites de formation personnalisées.Anthropic), GPT-4o (OpenAI), Gemini (Google), et Grok (xAI).

Assistante d'IA

Un copilote d'IA dans votre panneau d'administration qui vous aide à rédiger des réponses aux tickets, à rédigez les communications clients, à analyser les tendances de support, à rechercher les données client sur toutes les plateformes connectées et à exécuter des actions via le système de connecteur.

Ancrage des connaissances en IA

L'IA est ancrée dans vos articles de base de connaissances, les entrées FAQ, la documentation du produit et les données de plate-forme connectées. Il ne hallucine pas. Il répond à partir de vos informations commerciales réelles ou s'aggrave quand incertain.

Auto-handoff aux humains

Lorsque l’IA ne parvient pas à résoudre une question, détecte un problème ou que le client demande la présence d’un humain, elle passe automatiquement le relais à votre équipe avec le contexte complet de la conversation.

Invites de formation à l'IA

Écrivez des invites d'instructions distinctes pour l'IA destinée aux clients et celle destinée à l'administrateur. Contrôlez le ton, les limites, les règles d’escalade, les sujets interdits et le comportement spécifique de l'entreprise.

Historique et audit de l’IA

Chaque conversation d'IA est enregistrée avec tous les détails de la demande/réponse, l'utilisation du jeton, le suivi des coûts, le fournisseur utilisé et la version du modèle.

Insights sur l'IA

Consultez les questions courantes, les taux de résolution, la fréquence des remises, la satisfaction client par sujet et les domaines dans lesquels l'IA a besoin d'une meilleure formation.

Configuration de l'IA par espace de travail

Chaque site/espace de travail connecté peut utiliser son propre fournisseur d’IA, modèle, température, budget de token et invites de formation. Une entreprise SaaS peut utiliser Claude pour le produit principal et GPT-4o pour une marque secondaire.

Gestion de l'IA et BYOK

Deux modes d'IA : Gestion de l'IA (inclus dans votre plan, non API clé nécessaire) ou Apportez votre propre clé (utilisez la vôtre OpenAI/Anthropic/Google/xAI API Les deux sont de première classe, chaque fonction fonctionne avec l'un ou l'autre mode.

Budgets et contrôle des coûts pour les tokens d’IA

Définissez des budgets de token mensuels, des limites par conversation et des alertes en cas de solde faible. Suivez les dépenses par fournisseur, par espace de travail et par conversation.

Tickets et helpdesk

Système de tickets natif

Un service d'assistance complet avec les départements, les priorités (faible/moyen/élevé/urgent), les statuts, le suivi des SLA, les notes internes, la réponse du client, les pièces jointes et les conversations en fil.

Triage et réponse automatique par IA

L'IA trie automatiquement les tickets entrants par département et priorité. Activez la réponse automatique pour des départements sûrs. L'AI rédige et envoie une réponse après un délai configurable (par défaut : 2 minutes) afin que les humains puissent intervenir en premier.

Ingestion d'email

Connectez une boîte aux lettres (Gmail, IMAP ou spécifique à un fournisseur) pour créer automatiquement des tickets à partir d’e-mails entrants.

Intégration du portail des billets

Intégrez un portail de billets orienté client sur votre site Web. Les clients peuvent soumettre des billets, afficher leur historique, répondre à des tickets ouverts et vérifier l'état, tous marqués à votre conception.

Fusion de tickets

Fusionnez les tickets en double dans un seul fil de discussion. Les tickets fusionnés affichent [Fusionné] sur la ligne d’objet, et l’historique des conversations est conservé dans le ticket qui restera.

Retour à AI

Une fois qu'un agent humain a pris en charge un ticket, utilisez « Retour à l'IA » pour laisser l'AI reprendre la réponse automatique sur ce ticket. Utile lorsque la partie humaine est résolue mais que le client a des questions de suivi que l'intelligence artificielle peut gérer.

Boîte de réception copilote

Le copilote suggère des réponses, résume l’historique de conversation, recommande les affectations par priorité/service et peut exécuter des actions sur les plateformes connectées.

Chat et support en temps réel

Boîte de réception du chat

Chat client en temps réel géré à partir d'une boîte de réception unifiée. Voir toutes les conversations actives, l'identité du client, l’historique des conversations et les suggestions d'IA. Plusieurs agents peuvent collaborer sur une conversation.

Règles de chat proactives

Déclencher des messages de chat en fonction du comportement du visiteur: temps sur la page, spécifique URL Exemple: afficher un message d'aide après 10 visites, profondeur de défilement, nombre de retours, intention de sortie ou événements personnalisés. 60 Cliquez ici pour accéder à la page des prix.

Widget de chat

Un widget de chat personnalisable intégré à votre site Web. Prend en charge le chat IA, le chat d'agent en direct, la soumission de tickets, la recherche dans la base de connaissances et l'identité du visiteur.

Enquêtes CSAT

Collectez les notes de satisfaction des clients après les interactions via le chat et les tickets. Concevez des sondages avec vos propres questions, échelles d’évaluation et invites de suivi, puis intégrez les résultats dans la performance de l’équipe et les informations issues de l'IA.

Sondage par e-mail post-chat

Après la fin d'un chat, les visiteurs ayant un e-mail connu peuvent recevoir un message personnalisé avec un résumé de l'IA de ce qui a été traité et un clic sur « Est-ce que c'était facile? » Oui/Non. Une fois par fil, des liens à usage unique signés, chaque envoi enregistré et le résultat se trouve sur la page Feedback comme son propre signal à côté des étoiles dans le chat.

Boucle d'identité de retour

Chaque élément de retour d'information qui transporte une personne lui montre: nom, e-mail, un clic vers son parcours client complet et le contact CRM, ainsi que des réponses en un clic par e-Mail ou AI basées sur leur historique réel.

Écrire une IA

Utilise sa propre invite (et non le cerveau du chat) pour la rédaction professionnelle d'e-mails, de réponses aux tickets, d'annonces et de communications avec les clients.

CRM axé sur l’IA

Centre de Commande CRM

Un seul écran affiche l’état complet de votre CRM : la valeur du pipeline, la vitesse des transactions, les tâches à venir, les transactions à risque, l’activité des agents et les recommandations d’IA.

Contacts et entreprises

Gérez les contacts clients avec des profils complets : nom, adresse e-mail, téléphone, société, balises, étape du cycle de vie, historique des conversations, historiques des tickets, historiqus des achats et champs personnalisés. Liez les contacts aux entreprises pour la gestion des relations B2B.

Conseil des transactions et du pipeline

Tableau de transactions visuel de style Kanban avec étapes personnalisables. Faites glisser les offres entre les étapes, définissez des valeurs, assignez des propriétaires, suivez les dates de clôture et consultez la valeur du pipeline à chaque étape.

Entraînement AI

L’IA analyse chaque transaction et fournit un coaching: signaux de risque (départ silencieux, concurrents mentionnés, préoccupations budgétaires), recommandations sur la meilleure action à suivre, probabilité de gagner et calendrier de suivi suggéré.

Prévisions et rapports

Les rapports incluent le pipeline par étape, par propriétaire, par source, les taux de conversion, la taille moyenne des transactions et la durée du cycle de vente.

Agent de prospection (DTS)

La prospection basée sur l'IA identifie les clients potentiels à partir des données de vos visiteurs, des signaux de lead et de l'activité de la plateforme connectée.

Séquences de suivi

Séquences de suivi automatisées en plusieurs étapes: envoyer un e-mail, attendre, envoyer, vérifier la réponse, Définissez des séquences pour les nouveaux prospects, les affaires bloquées, les contrôles post-achat et les campagnes de réengagement.

Cycle de vie et rétention

Suivez les étapes du cycle de vie des clients (lead, prospect, client, churned) avec des transitions automatisées. L'agent de rétention surveille les signaux de churn et suggère des interventions.

Agent de gestionnaire des données

Agent d'IA qui nettoie et enrichit continuellement vos données CRM: déduplique les contacts, remplit les champs manquants, valide les e-mails, standardise les noms des entreprises et signale les enregistrements obsolètes.

Construire mon CRM

Configuration CRM en langage naturel : indiquez à l’IA à quoi ressemble votre processus de vente et il crée vos étapes du pipeline, des champs personnalisés, des modèles d’affaires et des règles d'automatisation.

Vérification de la santé CRM

Audit automatisé de la qualité des données CRM : contacts en double, offres sans étapes suivantes, pipelines obsolètes, informations de contact manquantes et notation de l’exhaustivité des données.

Dial de confiance

Contrôle de l’autonomie à trois niveaux pour chaque agent d’IA CRM : Pilote automatique (l’IA agit indépendamment), Copilote (l'IA suggère, l’humain approuve) et Manuel (l‘IA observe uniquement). Définissez le cadran par agent, par type d’action et par seuil de valeur de transaction.

Quatre agents d'IA

Le CRM exécute quatre agents d’IA spécialisés : Steward (qualité des données), SDR (prospection), Retention (prévention du décrochage) et Analyst (rapports et informations). Chaque agent a son propre paramètre de numérotation fiable.

Connecteurs et intégrations

Connecteurs pré-construits

Connecteurs prêts à l'emploiShopify, WooCommerce, BigCommerce, Magento2, PrestaShop, OpenCart, osCommerce,WordPress, WHMCS, Zendesk, Stripe, Amazon SES, Postmark, Renvoyer, SendGrid, Mailgun,Gmail, IMAP, Slack, et Google Business Profile . Chaque connecteur apporte des actions d'IA spécifiques à la plate-forme, connaissances, et de la synchronisation des données.

Constructeur de connecteurs

Construisez des connecteurs personnalisés pour n'importe quelle plate-forme, aucun code, AI assisté ou code complet. Le constructeur supporte REST et GraphQLAPIs, OAuthflux de code d'autorisation, enregistrement automatique webhook avecStripeet des schémas de signature simples, pagination (offset, page, curseur et link-header), transformation de la liste/erreur, contexte multi-action et emballage du marché.

Création de connecteur assistée par IA

ConnectorBuilderAI vous aide à créer des connecteurs : décrivez ce que vous voulez et il suggère des actions, écrit les gestionnaires de requêtes et mappe les réponses API. Gère l'authentification, la pagination et le traitement des erreurs automatiquement.

OAuth flux pour n'importe quel connecteur

In-app générique OAuth Prise en charge de PKCE, gestion d'état à l'échelle du site, actualisation automatique des jetons. Les connecteurs définissent leurs propres OAuth paramètres et OpsIQ Il gère le flux.

Bus de capacité (extension à l'échelle de la plate-forme)

Les connecteurs n'ajoutent pas simplement des actions de plate-forme. Ils peuvent alimenter les fonctions centrales par des "bus" de capacité. Un connecteur déclare une capacité (calendrier, enrichissement, esign dans CRM; local_listing, range_data dans Site Intelligence; web_analytics dans Analytical; payment_provider dans Payments; email_sync dans Mailbox; video_meeting dans comms) et implémente son petit ensemble de méthodes; OpsIQ le découvre via CapacityRegistry et le télécharge dans l'interface utilisateur, le client 360 Plusieurs connecteurs peuvent offrir la même capacité sans verrouillage. Voir les connecteurs/PLATFORM_CONNECTORS.md.

Pré-installé vs Marketplace

Les connecteurs préinstallés (connecteurs/) sont actifs dans le registre hors de la boîte, maintenus à l'écart de la référence sans clé et du fournisseur le plus utilisé par capacité (par exemple Google Calendar, Gmail, Google Business Profile). Les connecteur de marché (marketplace_connectors/) peuvent être découverts mais inertes jusqu'à leur installation, p. ex. Microsoft 365 Calend, Outlook, DocuSign, Stripe, GA4, SerpApi, Zoom. Chaque pont surmonte une liste de marché afin que l'interface utilisateur et l'IA puissent « installer depuis le marché » (notifier-à-installer) lorsqu'une capacité n'a pas de fournisseur prêt, jamais un bouton cassé.

Marché des connecteurs

Publiez vos connecteurs sur le. OpsIQ Connecteurs de paquet avec le profil.json, la connaissance.json, workflow_recipes.json Marketplace prend en charge les connecteurs gratuits et payants avec facturation multi-source.

Signature de connecteur

Tous les connecteurs sont signés cryptographiquement pour vérifier leur intégrité. La signature est vérifiée au moment de l'installation, et vous pouvez utiliser l'outil resign_all_connectors pour resigner après les mises à jour.

SmartLookup

Système déclaratif de correspondance floue pour les actions du connecteur. OpsIQ Exemple : find_country("germ") fait correspondre l'Allemagne à, la France avec, le Royaume-Uni avec. 88.9% Confiance.

Contrats d'action

Le général OpsIQ API Publications 1,312 Les packages de connecteur déclarent leurs propres actions fournisseur avec des paramètres tapés, des exigences d'authentification, des règles de pagination et des transformations de réponse via l'ActionExecutor unifié.

Recettes de connecteur

Des recettes de workflow prédéfinies qui combinent plusieurs actions de connecteur en flux de travail métier communs. Exemple : « Lorsqu'une nouvelle commande arrive sur Shopify, créez un ticket, mettez à jour le CRM et envoyez une notification Slack.»

Synchronisation des connaissances

Les articles d'aide spécifiques à la plateforme, les guides de configuration et les étapes de dépannage sont automatiquement disponibles pour l'IA sans saisie manuelle des connaissances.

Plateforme de développement

API REST

A named JSON API Couvre tous les administrateurs enregistrés JSON fonctionnement, avecAPI-authentification par clé, isolation de l'espace de travail, étendues, limitation du débit, écritures idempotentes, OpenAPI et une collection Postman générée.

Webhooks

Webhooks sortants pour tous les événements majeurs: commandes, factures, abonnements, tickets, chats, leads, inscriptions d'utilisateurs et abandon de panier. Livraison asynchrone via la file d'attente des tâches, réessai exponentiel, protection SSRF et désactivation automatique après 15 échecs consécutifs.

Signature de webhook

Chaque webhook sortant est signé avec HMAC-SHA256. Vérifiez les signatures sur votre fin de réception pour assurer l'authenticité du webhake.

Widget SDK

JavaScript SDK Installez des recettes pour React, Vue, Next.js, jQuery et JavaScript pour le widget de suivi avec résolution d'identité, suivi personnalisé des événements, contrôle par programmation du chat et configuration spécifique à la page. WordPress, Shopify, et statique HTML.

Plugins et SDK

SDK côté serveur et plugins pour des cadres communs.WordPressplugin,WHMCSmodule, et bibliothèques d'intégration génériques PHP/Node.js.

Événements API

Poussez des événements personnalisés dans OpsIQ depuis votre backend: achats, inscriptions, utilisation de fonctionnalités, erreurs ou tout autre évéement commercial. Les évélements apparaissent dans la timeline du visiteur et sont alimentés dans le contexte analytique et d'IA.

Livre de cuisine pour les triggers

Créez des workflows automatisés déclenchés par des événements (nouveau ticket, chat lancé, visiteur identifié, changement de stade d'une transaction ou évéement personnalisé) qui exécutent des actions de connecteur, envoient des webhooks, mettent à jour les enregistrements ou notifient votre équipe.

API constructeur

Visual API Configurez les points de terminaison, testez les requêtes, inspectez les réponses et déboguez les intégrations sans quitter l'interface d'administration. OpsIQ.

Équipe et administration

Contrôle d'accès basé sur les rôles

Trois rôles: Propriétaire (accès complet, facturation, zone de danger), Administrateur complet (toutes les opérations sauf la facturation et la zone de risque) et Agent (seulement les services affectés, pas d'accès aux paramètres).

Tableau de bord des performances d'équipe

Le propriétaire et le tableau de bord Full Admin seulement montrant les temps de résolution, la répartition de la charge de travail, profondeur de la poignée, ventilation des canaux, analyse des tendances,SLAconformité,CSATpar agent, les tarifs de réouverture, les roulements d'équipe, et les heures les plus occupées.

Présence et suivi en ligne de l'administrateur

Widget qui-est-en ligne en temps réel dans la navigation de l'administrateur.60-second ping, 300-second extend, auto-prune après 120 Voir quels administrateurs sont actuellement actifs et sur quelles pages.

Paramètres par espace de travail

Chaque site connecté (espace de travail) peut avoir sa propre configuration d’IA, ses paramètres de connecteur, ses services de tickets, son image de marque et ses règles opérationnelles.

Gestion de plusieurs sites

Gérez plusieurs sites Web à partir d'un seul administrateur OpsIQ. Chaque site a son propre extrait de suivi, ses données de visiteur et sa configuration.

Système de modèles d'email

Modèles d'e-mail basés sur le registre pour toutes les communications automatisées: notifications de tickets, transcriptions de chat, e-mails de bienvenue, réinitialisation du mot de passe et alertes système. HTML Modèles avec prévisualisation en direct, puces variables ({{customer_name}}, {{ticket_id}}), et le contrôle global de la mise en page.

Importation et exportation

Importez des contacts, des tickets et des articles de connaissances à partir de CSV/JSON. Exportez les données des visiteurs, les rapports d'analyse et les enregistrements CRM.

Sécurité, conformité et opérations

Entreprise SSO

OIDC (OpenID Connect) authentification unique avec runtime complet: découverte, autorisation, rappel, vérification de signature JWKS, userinfo, liste d'autorisations du domaine, provisionnement JIT et gardes d'état. SAML Support de configuration.

GDPR et conformité des données

Gestion intégrée des demandes d'accès aux données (DSAR) : exportez et supprimez les données clients dans tous les systèmes. Effacement des données au niveau du contact, y compris les sessions, les tickets, les chats, le CRM et les journaux de messagerie.

IP blocage et protection contre la force brute

Bloc spécifique IPs Le verrouillage automatique après des tentatives de connexion échouées configurables. Log d'échec de connexions avec IP, horodatage et agent utilisateur.

HSTS et en-têtes de sécurité

Les déploiements auto-hébergés peuvent ajouter des en-têtes CSP via la configuration du serveur. The self-hosted deployments can add CSP headers through server configuration.

Hardening de webhook sortant

SSRF guard bloque les webhooks vers private/metadata IP La livraison asynchrone empêche les points de terminaison lents de bloquer votre application. 15 Les défaillances consécutives empêchent le gaspillage de ressources sur les points finaux morts.

Isolation de l'espace de travail

Les visiteurs, les tickets, les chats, les enregistrements CRM et les conversations d’IA sont intégrés à leur espace de travail. Les fuites de données entre les espaces de travail sont empêchées au niveau des requêtes.

Gestion du cycle de facturation

Prise en charge des cycles de facturation mensuel, trimestriel, semestriel, annuel, biennal et à vie. Normalisation des devises pour les passerelles multi-devises Conversion de devises sur réception du paiement pour un reporting précis des revenus.

Cron et automatisation planifiée

Système cron intégré pour les tâches planifiées: génération de rapports, nettoyage des données, renouvellement d'abonnements, mises à jour de formation AI, synchronisations de connecteurs et retentations de webhook.

Politiques de conservation des données

Configurez la durée de conservation des sessions de visiteur, des transcriptions de chat, de l'historique des conversations d'IA et des journaux d'événements. Nettoyage automatique des données obsolètes pour gérer le stockage et se conformer aux politiques de rétention.

Diagnostic et santé

Tableau de bord d'intégrité du système affichant l'état cron, la connectivité à la base de données, le statut du fournisseur d'IA, l'intégralité du connecteur, les taux de livraison des webhook et l'utilisation du stockage.

À qui OpsIQ est destiné

Magasins de commerce électronique

Magasins

Suivez chaque visiteur de l'atterrissage à l'acquisition. Laissez l'IA répondre « Où est ma commande? » en utilisant des données Shopify/WooCommerce/BigCommerce en temps réel. Gérez les tickets d'assistance avec la réponse automatique AI. Exécutez un pipeline d'affaires pour les prospects grossistes et B2B. Attribuez le chiffre d'activité aux sources de trafic et aux campagnes.

Entreprises de SaaS et logiciels

SaaS

Suivez les pages de documentation qui sont converties. Automatisez l'assistance grâce à une IA ancrée dans votre environnement API Gérez les revenus des abonnements et les offres d'expansion dans le CRM. Connectez votre plateforme de facturation (Stripe, WHMCS Utilisez l'agent de cycle de vie CRM pour détecter et prévenir le churn (départ des clients).

Agences et indépendants

Agence

Offrez des portails d'analyse et de soutien en marque blanche aux clients. Suivez les pistes sur plusieurs sites clients à partir d'un seul administrateur.CRMConstruisez des connecteurs personnalisés pour les plates-formes clientes à l'aide du Connector Builder. Générez une marqueSEOrapports avec le site Intelligence. revendre des connecteurs de marché comme services à valeur ajoutée.

Hébergement et infrastructure

Hébergement

Deep WHMCS Intégration avec 80+ Actions d'IA pour la recherche de commande, gestion des services, DNS Répondez automatiquement aux questions d'hébergement courantes à l'aide des articles de la base de connaissances. Suivez l'engagement de la page d'état du serveur. Gérez les tickets d'assistance technique avec le triage par IA. Utilisez l'échelle de cycle de facturation pour les plans d'hôte mensuels et à vie.

Entreprises à forte intensité de soutien

Appui

Deflect 40-70% of repetitive questions with AI chat grounded in your knowledge base. Route tickets to the right department with AI triage. Track team performance with resolution times, SLA compliance, and CSAT by agent. Use the writing AI for professional reply drafting. Monitor support trends with AI insights.

Équipes marketing et SEO

Commercialisation

Suite complète de Site Intelligence: crawls, audits SEO techniques, analyse de contenu, suivi du classement SERP, recherche de mots-clés, surveillance des backlinks et grille SEO locale. Gestion du profil Google Business. Rapports en marque blanche planifiés pour les clients. Test A/B intégré au widget de suivi.

Fondateurs en solo et petites équipes

Démarrages

Commencez par simplement suivre et discuter, libre d'ajouter. Puis ajoutez des tickets lorsque vous obtenez du volume de support. Activez le CRM lorsque vous commencez à vendre. Connectez les plateformes que vous adoptez. OpsIQ d'une personne faisant tout à une 50- une équipe d'opérations avec le CCRA, les ministères et le suivi des performances par agent.

Entreprise et multi-marques

Entreprise

EntrepriseSSOavecOIDCpour l'authentification centralisée. Isolement multi-espace de travail pour des marques ou divisions distinctes. Configuration AI par espace de travail avec différents fournisseurs et modèles. Développement de connecteurs personnalisés avec distribution sur le marché.GDPRles outils de conformité et les politiques de conservation des données.

Ce que OpsIQ remplace

Google Analytics + Hotjar et Plausible

Analyse complète du site Web avec suivi des visiteurs, replay de session, classements de pages, géo-intelligence, entonnoirs d'intention, attribution de conversion, événements, expériences A/B, et suivi des erreurs JS, tout est respectueux de la vie privée, le tout dans une seule plateforme.

Interphone + dérive + Tidio

Chat client basé sur l'IA avec ancrage des connaissances, prise en charge de l'intelligence artificielle multi-fournisseurs, transfert automatique aux humains, règles de chat proactives, historique des conversations, sondages CSAT et création de tickets à partir du chat.

Zendesk + Freshdesk et Help Scout

Système de tickets natif avec départements, priorités, SLA, triage par IA, réponse automatique avec délai configurable, ingestion d'e-mails, incorporation de ticket, fusion de ticket et fonctionnalité Return to AI.

HubSpot + Pipedrive + Salesforce

CRM d'abord AI avec quatre agents spécialisés en IA (Steward, SDR, Retention, Analyst), contrôle de l'autonomie Trust Dial, tableau de pipeline, coaching des affaires, prévisions, séquences, gestion du cycle de vie et configuration CRM en langage naturel.

Ahrefs + SEMrush + Moz

Site Intelligence avec des crawls automatisés, des audits SEO techniques, une analyse de contenu, une recherche AI, un suivi du classement SERP, une étude de mots-clés, une analysis de backlinks, une grille SEO locale et des rapports en marque blanche planifiés.

Zapier + Make + middleware personnalisé

Connecteur SDK with 25+ connecteurs prédéfinis, Connector Builder (sans code/AI-assistée/code complet), OAuth Flux, enregistrement automatique de webhook, un vaste catalogue de définitions d'actions de connecteur qui ne deviennent exécutables que lorsque le connecteur concerné est installé, activé, configuré et validé, SmartLookup, marketplace et packages signés.

Gestionnaire de profils Google Business

Connecteur GBP complet: gestion de l'examen, publication post-édition, gestion des questions et réponses, téléchargements de photos, synchronisation d'informations commerciales, suivi des informations et réponses d'examen alimentées par l'IA, toutes depuis l'intérieur OpsIQ.

Outils de modèles d'email séparés

Modèles d'e-mails basés sur le registre avec éditeur visuel, aperçu en direct, puces variables, contrôle de la mise en page globale et personnalisation par événement pour toutes les communications automatisées.

Tableaux de bord de gestion d'équipe

Performances d'équipe intégrées: temps de résolution, charge de travail, conformité aux SLA, CSAT par agent, taux de réouverture, heures les plus occupées, suivi des présences en temps réel et ventilation par service.

GDPR outils de conformité

Gestion native DSAR, effacement des données dans tous les systèmes, gestion du consentement, politiques de conservation et pistes de vérification, intégrées à la plate-forme, non verrouillées.

Deux éditions

Déploiement hébergé

OpsIQ L'exploitation du produit est la même ; l'infrastructure, les mises à jour et les sauvegardes sont prises en charge par l'opérateur d'hébergement. Ce manuel documente le fonctionnement de OpsIQ Exécution plutôt que les flux de comptes marketing ou commerciaux.

Module auto-hébergé

Installer OpsIQ Installez le logiciel sur votre propre serveur pour un contrôle total des données, de la marque, des mises à jour et des intégrations. 8.4+, MySQL 5.7+ ou MariaDB 10.3+, HTTPS et le OpsIQ Unified cron. Supports WHMCS Intégration en tant que module complémentaire. Souveraineté totale sur les données.

Ordre de lecture recommandé

1
Démarrage rapide

Suivez le guide de configuration en 30 minutes pour faire fonctionner le suivi, le chat et l'IA basique sur votre site Web.

2
Tableau de bord et analyses

Apprenez à lire les données de vos visiteurs, configurer la lecture des sessions, identifier les prospects et comprendre les schémas de trafic.

3
Intelligence du site

Exécutez votre premier crawl SEO, vérifiez votre santé technique et configurez le suivi du classement SERP pour vos mots-clés cibles.

4
Tickets et support

Configurez les départements, configurez la réponse automatique avec l'IA, connectez l'ingestion d'e-mail et entraînez votre IA à gérer les questions courantes.

5
CRM

Organisez vos contacts, créez votre pipeline, configurez les agents d'IA, définissez des niveaux de Trust Dial et laissez l'IA coacher vos offres.

6
Connecteurs et outils de développement

Connectez votre plateforme de commerce électronique/facturation, créez des connecteurs personnalisés, configurez des webhooks et intégrez-vous via le REST API.

💡
New to OpsIQ? Commencez avec le guide de démarrage rapide ci-dessous. Vous pouvez avoir un suivi et une conversation IA basique en cours d'exécution sous 30 15 minutes.
Commencez ici

Démarrage rapide en 30 minutes

Suivez ces étapes pour mettre OpsIQ en marche. Chaque étape s'appuie sur la précédente, et à la fin vous aurez le suivi des visiteurs, un chat AI et une assistance de base pour les tickets.

Étapes
Liste de contrôle de démarrage rapideUne liste de contrôle d'installation guidée montrant l'installations des widgets, la connexion à la plateforme, la formation en IA, l'invitation de l'équipe et le lancement, avec une barre de progression de 60 pour cent.Commencez à jouersetupInstaller le widget OpsIQFAITConnecter une plateforme (WHMCS, Shopify...)FAITEntraînez votre IA sur vos contenusFAITInvitez votre équipeVérifiez et passez en directProgrès de l'installation3 des 5 · 60%1STEP 1Installer le widget2STEP 2Connectez & entraînez l'IA3STEP 3Inviter & aller en ligne
Le chemin de 30-minute: installer le widget, connecter une plateforme, entraîner votre IA, inviter l’équipe, puis aller en ligne.

La configuration 30-minute

1
Activer votre licence

Entrez votre clé de licence dans l'administration du OpsIQ. Allez à Paramètres, entrez la clé fournie pour cette installation et cliquez sur Activer. Vous devriez voir un badge vert "Actif".

2
Définissez votre identité d'entreprise

Allez dans Paramètres et remplissez le nom de votre entreprise, l'industrie, le fuseau horaire, la devise par défaut et les heures d'assistance. Cette information est utilisée par l'IA pour répondre aux questions des clients et par les analyses pour les rapports tenant compte du fuseaux horaires.

3
Choisissez un fournisseur d’IA

Allez dans Configuration de l'IA et sélectionnez votre fournisseur. Options: Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google), ou Grok (xAI). Entrez votre API Cliquez sur « Test de connexion » pour vérifier si vous utilisez votre propre clé, ou utiliser l'IA gérée si disponible dans votre forfait.

4
Installer le widget de suivi

Go to Connected Sites, copy the tracking snippet, and paste it before the closing </body> tag on your website. Visit your site in a private browser, then check the Live Feed in OpsIQ. You should see yourself as a visitor within 15 seconds.

5
Connectez votre plateforme

Si vous utilisez Shopify, WooCommerce, WHMCS, ou une autre plateforme prise en charge, accédez à Connecteurs, recherchez votre plateforme, entrez les informations d’identification et cliquez sur Connexion de test.Cela donne à l’IA un accès aux données des commandes, aux profils clients et au contexte du support.

6
Invitez votre équipe

Accédez à Équipe, cliquez sur Inviter, entrez leur adresse e-mail et leur rôle (Propriétaire, Administrateur complet ou Agent). Les agents peuvent uniquement accéder aux services auxquels vous les avez affectés.

Le chemin le plus rapide possible (5 minutes)

Étape 1: Installer le widget

Copiez l'extrait de code des sites connectés et collez-le sur votre site Web, ce qui vous permet d'effectuer le suivi immédiatement.

Étape 2: Activer l'IA

Allez dans Configuration de l'IA, choisissez un fournisseur, entrez votre clé et enregistrez. Le chat AI est maintenant actif sur votre site Web.

Fait

Vous pouvez ajouter des tickets, un CRM et des connecteurs plus tard, mais vous devez toujours utiliser le même nom d’utilisateur.

Jour 2: Rendre utile

Ajouter des connaissances

Accédez à la base de connaissances et ajoutez 5-10 L'IA utilise ces articles pour répondre aux questions les plus fréquentes des clients avec précision.

Créer des départements

Allez dans Tickets et créez au moins 2 départements (par exemple, « Ventes » et « Support ») et assignez des membres à chacun d'eux.

Écrivez votre AI prompt

Accédez à la formation sur l’IA et rédigez une invite d’IA client qui décrit votre entreprise, votre ton de voix et vos règles d’escalade.

Tester une conversation

Ouvrez votre site web dans un navigateur privé et discutez avec l’IA en tant que client, vérifiez que les réponses sont exactes et le ton est correct.

Semaine 1: Construisez vos opérations

Connecter l'email

Configurez une boîte aux lettres (Gmail, IMAP ou un connecteur de fournisseur) pour que les e-mails des clients créent automatiquement des tickets.

Configurer la réponse automatique

Définissez un délai de 2minutes afin que les humains puissent intervenir en premier.

Examen des analyses

Regardez le nombre de visiteurs, le taux de rebond, les pages principales et les ventes si le suivi est connecté.

Démarrez votre CRM

Ouvrez AI CRM et laissez OpsIQ importer les contacts de vos plateformes connectées.

Mois 1: Optimiser

Examiner l'historique de l'IA

Recherchez les mauvaises réponses, les questions manquées et les occasions d'ajouter des connaissances.

Ajouter des règles proactives

Créez une règle : si un visiteur est sur la page de tarification pendant plus de 60 secondes, affichez un message de chat lui demandant s'il a besoin d'aide.

Construisez un connecteur

Si vous utilisez une plateforme qui ne dispose pas d’un connecteur intégré, utilisez le Connector Builder pour en créer un.

Configurer des webhooks

Connectez OpsIQ à vos outils internes en utilisant des webhooks sortants pour les tickets, le chat et les événements de vente.

Puis-je ignorer l'IA et simplement utiliser le suivi ?+

Oui. Le fournisseur d'IA est optionnel. OpsIQ fonctionne comme une plateforme d'analytique et de billetterie pure sans IA. Vous pouvez activer l'IA plus tard lorsque vous êtes prêt.

Puis-je ignorer les connecteurs et les ajouter plus tard?+

Oui, les connecteurs enrichissent l’IA avec des données spécifiques à la plateforme, mais OpsIQ fonctionne sans eux. Commencez par le suivi et le chat, puis connectez les plateformes au besoin.

Que faire si je n'ai pas encore de site web?+

Vous pouvez toujours utiliser OpsIQ pour les tickets, le CRM et la collaboration d'équipe. Le widget de suivi est facultatif, ajoutez-le lorsque votre site Web sera prêt.

Comment savoir si le widget est installé correctement ?+

Visitez votre site Web dans un navigateur privé/incognito. Puis cochez OpsIQ Vous devriez voir votre visite apparaître dans les 24 heures. 15 Si ce n'est pas le cas, vérifiez: (1) est le fragment collé correctement, (2) si la clé du site est correcte, (3) sont des bloqueurs de publicité ou des en-têtes CSP bloquant le script.

Commencez ici

Carte complète des produits

OpsIQ n’est pas une fonctionnalité, c’est un administrateur d’opérateur, un widget de site web, une couche de support IA, un système de ticket/helpdesk, un CRM complet avec quatre agents AI, une suite Site Intelligence, une plateforme de connecteur avec marketplace et une surface de développeur. Voici tous les composants qu’il contient.

Opérateur admin

Tableau de bord, flux en direct, journal des visiteurs, sessions, replay de session, pages principales, géo-intelligence, entonnoir d'intention, journal d'événements, expériences A / B, suivi des erreurs JS, ventes et conversions, prospects, AI CRM (centre de commande, contacts, entreprises, offres, tableau de pipeline, coaching commercial, prévisions, prospection, séquences, cycle de vie, intendance des données, Construire mon CRM, configuration CRM, santé CRM, CRM API), tickets, boîte de réception du chat, règles proactives, sondages CSAT, brouillons e-mail, boîtiers électroniques, configurations IA, formation IA, historique IA, informations sur l'IA, base de connaissances, connecteurs, Connector Builder, marché, sites connectés, gestion d'équipe, performances de l'écurie, paramètres, diagnostics et licence.

Surfaces face au client

Widget de suivi du site Web (balise analytique + chat + intégration de ticket + recherche dans la base de connaissances), chat client AI, portail de soumission de tickets, gestion des jetons d'identité des visiteurs, téléchargement de fichiers, widget d'enquête CSAT et centre d'aide orienté vers le client.

CRM axé sur l’IA

Centre de commande, contacts, entreprises, offres, tableau de pipeline avec glisser-déposer, coaching d’offre AI (signaux de risque, meilleure action suivante, probabilité de gagner), prévision des revenus, agent de prospection (SDR), séquences de suivi automatisées, gestion du cycle de vie et de la rétention, agent délégué aux données (désurveillance, enrichissement, validation), Build my CRM (configuration en langage naturel), configuration CRM, vérification de l’état du CRM, Trust Dial (pilote automatique / copilote / manuel par agent), quatre agents spécialisés (Steward, SDR, Rétention, Analyste) et CRM API avec webhooks.

Suite Site Intelligence

Crawls de site automatisés, audit SEO technique (vitesse, mobile, Core Web Vitals, ) SSL, redirections, données structurées), audit de contenu (nombre de mots, lisibilité, densité des mots clés, structure du titre), recherche sémantique alimentée par l'IA, suivi du classement SERP sur tous les moteurs, recherche de mot-clé avec notation d'opportunité, analyse et surveillance des backlinks, visualisation de la grille SEO locale, synchronisation du profil Google Business (avis, publications, Q&R, photos, informations), rapports planifiés (quotidiens/hebdomadaires/mensuels) et marque blanche. PDF Output for agencies.

IA et automatisation

Client AI chat (multi-fournisseurs: Claude, GPT-4o, Gemini, Grok), assistant d'IA administratif, ancrage des connaissances en IA, transfert automatique avec rétablissement configurable, configuration de l'IA par espace de travail, gestion de l’IA et. BYOK Les modes, les budgets de jetons et les contrôles des coûts, la piste d'audit historique de l'IA, l'analyse des informations sur l'AI, le triage AI des tickets, la réponse automatique aux tickets avec retard, l’écriture IA (invite séparée) et le copilote de boîte de réception administrateur.

Connecteurs et intégrations

25+ connecteurs pré-construits (Shopify, WooCommerce, BigCommerce, Magento2, PrestaShop, OpenCart, osCommerce, WordPress, WHMCS, Zendesk, Stripe, Amazon SES, Postmark, Renvoyer, SendGrid, Mailgun, Gmail, IMAP, Slack, Google Business Profile), Connector Builder (sans code/AI-assisted/code complet), générique OAuth Flux de travail avec PKCE, marketplace de connecteurs avec distribution payante, signature et vérification des connecteurs, correspondance floue SmartLookup, un vaste catalogue de définitions d'actions HTTP dont la disponibilité dépend de l'installation du connecteur, activation, configuration et validation, synchronisation des connaissances et recettes de workflow.

Plateforme de développement

RESTAPI(visiteurs, événements, tickets, contacts, paramètres, connecteurs), OpenAPI spec,API Gestion des clés, webhooks sortants (asynchrones, signés, réessayés, protégés par SSRF, désactivation automatique), ÉvénementsAPI Pour l'ingestion d'événements personnalisés, widget SDKavec résolution d'identité, livre de recettes des déclencheurs, contrats d'action, connecteur SDK, packaging de marché, SDK côté serveur (PHP, Node.js), WordPress plugin, et WHMCS Module.

Paramètres et opérations

Identité d'entreprise, configuration de l'IA par espace de travail, paramètres de suivi, sécurité (HSTS, politique des autorisations, blocage IP, protection contre la force brute), RBAC (propriétaire / administrateur complet / agent), gestion et invitations d'équipe, tableau de bord de performances de l’équipes, suivi de la présence de l‘administrateur, système de modèles d’email (guidé par le registre, éditeur visuel, puces variables), concepteur d’enquêtes, connaissance du domaine, configurations d’intégration de tickets, marque, politiques de conservation des données, gestion du cycle de facturation (mensuel à vie), normalisation de devises, import/export, diagnostics, automatisation cron et zone dangereuse.

Sécurité et conformité

Enterprise SSO (OIDC avec vérification JWKS, provisionnement JIT), SAML configuration, GDPR/DSAR traitement (exportation et suppression dans tous les systèmes), effacement des données par contact, gestion du consentement, isolation de l'espace de travail (étendue stricte de la couche de requête), pistes d'audit, suivi des échecs de connexion, IP Blocage, webhook sortant SSRF guard et politiques de conservation des données.

Pont de fournisseur

Gestion de l'IA OpsIQ prestataire URL, appels de fournisseurs de renseignements sur le site, validation de licence, rapports de santé, PDF le rendu et les exportations de données, toutes acheminées à travers le paramètre du fournisseur configuré, pas le fournisseur direct API appels depuis votre serveur.

Chaque page d'administration

Tableau de bord

Nombre de base

Centre de commande quotidien: aperçu du trafic, compteur de visiteurs en direct, résumé des ventes, profondeur de la file d'attente d'assistance, alertes d'activité IA et raccourcis rapides.

Flux en direct

Analytique

Flux de visiteurs en temps réel : pages vues, démarrages de chat, soumissions de formulaires et signaux d'intention mis à jour toutes les quelques secondes avec des filtres par pays, appareil et référent.

Journal des visiteurs

Analytique

Enregistrements complets des visites: appareil, navigateur, système d'exploitation, pays, ville, référent, paramètres UTM, page de destination, identité et historique complet des pages vues.

Séances

Analytique

Vue groupée par parcours : flux de page, temps sur la page, profondeur de défilement, chemin de conversion et page de sortie pour chaque session du visiteur.

Relecture de session

Analytique

Lecture chronologique des événements capturés: mouvement de la souris, clics, défilements, transitions de page et interactions de formulaire pour le diagnostic d'UX.

Pages haut de page

Analytique

Classement des performances de la page: visites, temps d'engagement, taux de rebond, conversions, interactions avec le support et direction de la tendance.

Géo-intelligence

Analytique

Rapports géographiques: ventilation par pays/ville avec cartes, distribution des appareils, part de navigateur, sources de trafic et pénétration du marché.

Entonnoir d'intention

Analytique

Suivi de l’intention comportementale : prix des visites, fréquence de retour, navigation dans les documents, interactions avec le support et signaux personnalisés avec probabilité de conversion.

Journal des événements

Analytique

Historique des événements consultable: pages vues, évéements personnalisés, chats, achats, soumissions de formulaires avec métadonnées complètes et filtrage.

Expériences A/B

Analytique

Tests de division : créer des variantes, répartir le trafic, définir les objectifs, mesurer la signification et déclarer les gagnants, tous à partir de l'intérieur OpsIQ.

Erreurs de JS

Analytique

Capture d'erreurs frontales: messages, traces de pile, navigateurs affectés, fréquence, pages affectées et suivi des tendances.

Ventes

Ventes

Tableau de bord des revenus: commandes, renouvellements, remboursements, attribution par source, performances de la campagne, comparaison entre périodes et analyse des tendances.

Plombs

Ventes

Gestion des prospects : scoring, attribution de la source, statut CRM, coordonnées, signaux comportementaux et routage dans le pipeline.

CRM AI

CRM

CRM complet: centre de commande, contacts, entreprises, offres, conseil d'administration du pipeline, coaching, prévisions, prospection, séquences, cycle de vie, délégué aux données et santé.

Billets

Appui

Boîte de réception du support: départements, priorités, suivi des SLA, triage par IA, réponse automatique, notes internes, pièces jointes, fusion et gestion du statut.

Boîte de réception du chat

Appui

Conversations en direct : IA et chat humain, transfert, collaboration, historique des conversations, identité client et collecte de CSAT.

Brouillons d'e-mails

Appui

Gestion des e-mails: courrier entrant aux tickets, composition de réponse assistée par IA, sélection de modèle et configuration de boîte aux lettres.

Configuration de l'IA

IA

Configuration du fournisseur : sélectionnez Claude/GPT-4o/Gemini/Grok, entrez la clé API ou activez l’IA gérée, définissez le modèle, la température et les budgets de jetons par espace de travail.

Formation à l'IA

IA

Création d'invites : invites destinées aux clients et aux administrateurs, règles d'escalade, directives de ton, sujets interdits et configuration des limites.

Histoire de l'IA

IA

Audit de conversation : journaux complets des demandes/réponses, utilisation du jeton, coût par conversation, fournisseur, version du modèle et résultat de la résolution.

Insights sur l'IA

IA

Analyse des modèles : questions courantes, taux de résolution, fréquence de transmission, satisfaction par sujet et identification des lacunes en matière de formation.

Base de connaissances

IA

Contenu de formation sur l'IA: articles, entrées FAQ, documentation produit, connaissance des connecteurs et entrée personnalisée. Recherche sémantique et par mots-clés pour la mise à la terre de l'AI.

Connecteurs

Intégrations

Hub d’intégration : connecteurs installés, statut de santé, inventaire des actions, gestion des informations d’identification, navigateur du marché et Connector Builder.

Sites connectés

Paramètres

Gestion du site: extrait de suivi, clé de site, configuration de widget, paramètres de domaine et isolation de l'espace de travail par site.

Équipe

Paramètres

Gestion des utilisateurs : invitez les membres, attribuez des rôles (propriétaire/administrateur complet/agent), définissez l'accès du service et gérez les autorisations.

Performance de l'équipe

Paramètres

Mesure des opérations: temps de résolution, charge de travail, conformité aux SLA, CSAT par agent, taux de réouverture, heures d'affluence et analyse des tendances.

Paramètres

Paramètres

Configuration: identité d'entreprise, configuration de l'IA, suivi, sécurité, image de marque, rétention, modèles d'email, facturation, import/export, diagnostic et zone dangereuse.

Licence

Paramètres

Gestion des plans : statut de la licence, fonctionnalités du plan, indicateurs d'utilisation, date de renouvellement et options de mise à niveau/rétrogradation.

Commencez ici

Onboarding guidé

Le parcours d'intégration transforme une nouvelle installation en un espace de travail OpsIQ fonctionnel et peut être quitté et repris sans perte de progression.

Écran de produit
IntégrationOnboarding affiche chaque zone de configuration, son état actuel et la prochaine action à effectuer.Intégrationespace de travailPROGRESS60%COMPLETED6SUIVANTWidgetVUE DE L'ESPACE DE TRAVAIL EN DIRECTLicenceValider la licence du produitFaitFournisseur d'IASélectionner le fournisseur et la clé de testFaitMarqueIdentité et ton d'entrepriseFaitSite webAjouter un site et installer le widgetSuivant1COMPLETE BASICSLicence, marque, IA2CONNECT DATASite et connecteur3VERIFY LAUNCHÉquipe, courriels, chèques
Onboarding affiche chaque zone de configuration, son état actuel et la prochaine action à effectuer.

Séquence recommandée

  1. Licence: Valider la licence et confirmer que l'espace de travail est actif.
  2. Fournisseur d'IA: L’IA peut être ignorée si l’espace de travail n’utilisera initialement que les analyses et les tickets, mais vous pouvez également utiliser le modèle d’analyse pour créer des rapports.
  3. Identité de l'entreprise: Définissez le nom, l'industrie, la description, le ton client et les détails de marque utilisés par le widget et l'IA.
  4. Connecteur : Activer au moins une plateforme externe lorsque OpsIQ a besoin de commandes, clients, tickets, e-mails ou d'autres contextes de plateformes.
  5. Site et widget: Créez le site/espace de travail, copiez la clé du site et vérifiez une visite en mode navigateur privé dans Live Feed.
  6. Équipe et routage: Inviter des administrateurs/agents, créer des départements, définir le routage de courrier électronique et confirmer les préférences de notification.
  7. Vérifications de mise en service: Testez le chat, un ticket, la synchronisation de connecteur, cron, e-mail sortant, webhooks et en-têtes de sécurité.

Le retour à l’intégration devrait afficher les étapes terminées plutôt que de forcer un redémarrage.

Commencez ici

Navigation et autorisations d'administrateur

La barre latérale OpsIQ tient compte des permissions. Ce plan explique où se trouve chaque domaine opérationnel et pourquoi une page peut ne pas être visible par tous les administrateurs.

Écran de produit
Navigation OpsIQLa barre latérale regroupe OpsIQ par zone de travail; les liens individuels n'apparaissent que lorsque le rôle actuel peut les utiliser.Navigation OpsIQespace de travailGROUPS8PAGEPermission baséeSEARCHDisponibleVUE DE L'ESPACE DE TRAVAIL EN DIRECTAppuiTickets, email, CSAT, connaissanceOuvertCRMContacts, pipelines, marchés, prospectionOuvertAutomatisationFlux de travail, règles, objectifsOuvertSécurité et confidentialitéAperçu, vérification, consentement, blocsAdministrateur1PICK A GROUPCorrespondre à la barre latérale2CHECK ROLEHidden signifie restreint3USE PAGE HELPOuvrez la section correspondante
La barre latérale regroupe OpsIQ par zone de travail; les liens individuels n'apparaissent que lorsque le rôle actuel peut les utiliser.
Appui

Billets, plateforme de messagerie de l'équipe, CSAT, le Centre d'aide et les flux de chatbot.

CRM

Les surfaces de vente quotidiennes: CRM Home, Command Center, contacts, pipeline, prévision, cycle de vie, prospection, segments, classement, approbations de marchés, data steward, outils de croissance et le flux d'activité.

Automatisation

Workflows axés sur les événements, règles du cycle de vie et objectifs de conversion.

Commercialisation

Sensibilisation, messages proactifs, annonces, Studio de promotion, Studio d'enquête, campagnes de push et visites guidées.

Analytique

Les surfaces de rapport d'abord — Analytics Hub, AI perspicacités, ventes, clients, leads, entonnoirs, tests A/B, replay de session, tableaux de bord personnalisés et rapports programmés — avec les journaux de visiteurs, de sessions, de pages, de géographie et d'événements bruts dans une sous-section Données brutes.

Pages autonomes

Le renseignement, le rendement et la rétroaction des équipes sont des entrées directes à l'extérieur des groupes.

Intégrations

Connecteurs, actions et déclencheurs, boîtes aux lettres, brouillons, paramètres de messagerie, paramètres d'entrée, boutons de sortie et touches API.

Sécurité et confidentialité

Vue d'ensemble de la sécurité, confidentialité et conformité, consentement aux cookies, activité d'audit, connexion ratée, bloquéIPsetJavaScripterreurs.

Paramètres

Bases de l'espace de travail (général, équipe, sites, langues), puis sous-sections pliables : AI Brain (instructions, configuration, évaluation, histoire), CRM Setup (constructeur, champs personnalisés, score de plomb, santé), Data & Health (diagnostic, exportation) et Se mettre en route (à bord, aide).

Les pages qu'un rôle ne peut pas ouvrir sont cachées dans la barre latérale. Mise à jour tag et ouvrir un écran de mise à niveau dans l'application.

Cacher un lien dans une barre latérale n'est pas le seuil de sécurité : chaque action protégée doit passer ses vérifications d'autorisation et d'espace de travail.

Analytique

Hub d'analyse

Le hub Analytics rassemble les rapports sur le support, le chat, l'IA, les visiteurs et les agents dans un espace de travail filtré par date avec des résultats exportables.

Écran de produit
Hub d'analyseLe Hub Analytics affiche une plage de dates, des cartes et onglets statistiques pour les performances du support, du chat, de l’IA, des visiteurs et des agents.Hub d'analyseespace de travailBILLETS184AI RESOLVE63%CSAT4.7VUE DE L'ESPACE DE TRAVAIL EN DIRECTAppuiCréé, fermé, en attente, SLATabulationChatRésultats IA/humains et temps de traitementTabulationIAConfiance, retours d’expérience, utilisation de jetonsTabulationAgentVolume, rapidité et satisfactionTabulation1CHOOSE DATESPréréglé ou personnalisé2CHANGE TABSoutien à l'agent3EXPORTTélécharger CSV
Le Hub Analytics affiche une plage de dates, des cartes et onglets statistiques pour les performances du support, du chat, de l’IA, des visiteurs et des agents.

Filtres et contrôles

  • Utiliser un paramètre prédéfini ou personnalisé de/à Sélectionnez une plage, puis Actualiser pour reconstruire chaque carte et graphique pour la même période.
  • Exporter CSV exporte la vue analytique active plutôt qu’une capture d’écran.
  • La portée par espace de travail est automatique ; changer de site change le jeu de données sous-jacent.

Ce que chaque onglet mesure

  • Support : Tickets créés/fermés/en attente, première réponse, résolution, réduction au premier contact, SLA et ventilation par priorité/service/état.
  • Clavardage : sessions démarrées, résolutions d'IA, escalades, abandons, temps de traitement, messages par session et IA/humain/toutes les CSAT.
  • AI: Confiance moyenne, taux de confiance faible, précision du triage, rétroaction, déviation des connaissances, utilisation de jetons/cache et les éléments à examiner.
  • Visiteur: Les tendances du trafic et de l'engagement pour la période sélectionnée.
  • Agent : Mesure de la charge de travail, de la vitesse, des clôtures et de la satisfaction par agent.

Utilisez Analytics Hub pour l'examen inter-équipe; utilisez les pages dédiées Visiteurs, Tickets, CSAT, Historique de l'IA et Performance d'équipes lorsque vous avez besoin d'une enquête au niveau des enregistrements.

Analytique

Le tableau de bord

Le tableau de bord est votre centre de commande quotidien. Il affiche le trafic, les ventes, la charge d'assistance, l'activité d'IA et les indicateurs de conversion dans une vue unique. Ouvrez-le chaque matin pour comprendre ce qui s'est passé pendant la nuit et ce qui nécessite une attention aujourd'hui.

Tableau de bord
Tableau de bord d'aperçuL'écran Aperçu est dirigé par un OpsIQ Panneau d'intelligence artificielle (avec résumé quotidien, alertes intelligentes, prévisions), tuiles de widget KPI et un widget de trafic sur sept jours, plus un contrôle de mise en page Reset.Aperçuespace de travailOPSIQ INFORMATIONSChoisissez une analyse et OpsIQ l'écritRésumé quotidienDes alertes intelligentesPrévisionsRéinitialiser la mise en pageVISITEURS AUJOURD'HUI2,481+12%REVENUS$8.2k+5%TICKETS OUVERTS143 SLATrafic · derniers 7 jours1AI-FIRSTOpsIQ Panneau de renseignements2WIDGETSLes KPI que vous organisez3À vousRéinitialiser la mise en page à tout moment
L'écran Aperçu réel : OpsIQ Panneau d'intelligence vers le haut (pick une analyse et il l'écrit) au-dessus des widgets KPI que vous arrangez vous-même.

Cartes de tableau de bord expliquées

Visiteurs en direct

Le nombre de personnes sur votre site en ce moment. Cette fonction est mise à jour tous les 15 Un visiteur est "actif" s'il a chargé une page à l'intérieur du seuil d'activité (par défaut : 0). 90 20 secondes).

Nombre de visiteurs uniques

OpsIQ identifie les visiteurs par une combinaison d'empreintes digitales du navigateur, de cookies et (si disponible) d'une identité authentifiée.

Nouveau vs retour

Les nouveaux visiteurs voient votre site pour la première fois. Des visiteurs récurrents ont déjà été vus auparavant. Un taux de retour élevé signifie que votre contenu attire les gens à revenir.

Taux de rebond

Le pourcentage de visiteurs qui sont partis après avoir visionné une seule page. Un taux de rebond au-dessus 70% sur les pages d'atterrissage signifie généralement que la page ne répond pas aux attentes des visiteurs, à un contenu erroné, à une charge lente ou à une mauvaise expérience mobile.

Temps moyen sur la page

Durée moyenne de visite sur chaque page. Des temps très courts (moins de 10 secondes) sur les pages de contenu indiquent que le contenu n'est pas intéressant, tandis que des temps très longs sur les sites de paiement peuvent être un signe de confusion.

Menaces bloquées

IPadresses qui OpsIQ Les sites identifiés comme potentiellement malveillants en fonction du score de menace, des tentatives de force brute ou des blocages manuels. IPs Liste.

Ventes aujourd'hui / cette semaine / ce mois-ci

Chiffre d'affaires des sources de ventes connectées (Shopify, WooCommerce, Stripe, etc.). Si les ventes affichent zéro, vérifiez que votre connecteur de plateforme est connecté et en cours de synchronisation.

Graphique de tendance

Recherchez des tendances: pics de trafic (campagnes, mentions dans la presse), baisses (week-ends, jours fériés) et tendance soutenue. Recherche d'un modèle pour le nombre de visiteurs sur une période donnée.

Sources principales

D’où viennent vos visiteurs : direct, Google, réseaux sociaux, campagnes d’emailing, sites de parrainage… Utilisez ces informations pour comprendre quels canaux marketing fonctionnent.

Top des navigateurs

Si un navigateur affiche un taux de rebond anormalement élevé, vous avez peut-être une erreur dans le code du navigateur. CSS ou JavaScript Problème de compatibilité.

Carte thermique horaire

Une grille affichant l'activité des visiteurs par heure du jour et jour de la semaine. Utilisez-la pour décider quand planifier les quarts d'assistance, quand envoyer des annonces et quand exécuter des promotions.

Les visiteurs récents

Les derniers visiteurs avec pays, page, appareil et source. Utile pour des contrôles ponctuels rapides pendant les campagnes.

Utilisation du filtre de plage de dates

Cliquez sur le sélecteur de date en haut à droite du tableau de bord. Présets: Aujourd'hui, Hier, Dernier7jours, derniers30jours, ce mois, le mois dernier, plage personnalisée. Toutes les cartes et cartes de tableau de bord mettent à jour lorsque vous changez la plage. La plage de dates est dans votre fuseau horaire configuré (réglages).

Exemples de travaux

Enquête sur le taux de rebond

Scénario :
Your bounce rate jumped from 45% to 78% this week. What happened?
Que faire:

Vérifiez : (1) Une page de renvoi en particulier a-t-elle changé? Allez dans Top Pages et triez par taux de rebond. (2) Une campagne a-t-elle envoyé du trafic vers la mauvaise page? Vérifiez les principales sources pour de nouveaux référents. (3) Le site est-il cassé sur mobile? Vérifiez la panne du navigateur pour le taux de rebond mobile. (4Vérifiez le compteur de menaces et les détails des visiteurs pour détecter d'éventuels schémas suspects.

Zéro visiteur sur le tableau de bord

Scénario :
The dashboard shows 0 live visitors even though your website is getting traffic.
Que faire:

Vérifiez : (1) Le widget de suivi est-il installé? Consultez le code source de votre site web et recherchez OpsIQ script. (2) La clé du site est-elle correcte? Comparez la clé data-site dans le script avec celle de Sites connectés. (3) Un CDN ou un cache diffuse-t-il une page obsolète sans le script? Effacer votre cache CDN. (4) Un bloqueur de publicité ou un en-tête CSP bloque le script? Vérifiez la console du navigateur pour les requêtes bloquées.

Lecture de la carte thermique horaire

Scénario :
Your heatmap shows heavy activity between 10am-2pm on weekdays but nothing on weekends.
Que faire:

Il s'agit d'un modèle de trafic B2B. Vos visiteurs sont des professionnels qui naviguent pendant les heures ouvrables.1) Planifier le personnel de soutien pour les heures d'ouverture en semaine. (2) Envoyer des campagnes d'email mardi-jeudi matin. (3) Les fenêtres de maintenance du week-end sont sûres. (4Envisagez d’offrir le chat en direct uniquement pendant les heures de pointe.

Pic de trafic provenant d'une source inconnue

Scénario :
You see a sudden spike of 500 visitors in one hour from an unknown referrer.
Que faire:

Allez sur Visiteurs et filtrez par la fenêtre de temps.1) Sont-ils de vrais visiteurs ou des robots? Regardez la durée de session, les pages consultées et la diversité du navigateur. (2) Si réel, sur quelle page atterrissent-ils? (3) Vérifiez la référence URL. Quelqu'un pourrait vous avoir lié de Reddit, Hacker News ou un blog populaire. (4) Si c'est le trafic de bot, vérifier les menaces et envisager de bloquer la IP portée.

Pourquoi mon compte de visiteurs diffère-t-il de Google Analytics?+

OpsIQ Il utilise l'empreinte digitale du navigateur et les cookies, tandis que GA utilise un modèle de cookie différent. Le filtrage des bots, les taux de blocage d'annonces et l'ordre de chargement des scripts peuvent également entraîner des différences. 10-20% La variance est normale.

Puis-je intégrer le tableau de bord dans un autre outil?+

Le tableau de bord est conçu pour le. OpsIQ Pour les rapports externes, utilisez le REST API.API pour extraire des données analytiques et les afficher dans votre propre tableau de bord ou outil BI.

Que signifie le compteur de "menaces"?+

It counts IP adresses qui OpsIQ Cliquez sur le compteur pour afficher les détails et gérer les blocages.Click the counter to see details and manage blocks.

Analytique

Journal des visiteurs

Le journal des visiteurs affiche chaque visite de vos sites Web suivis, avec une ligne pour chaque page chargée par un visiteur. Utilisez-le pour étudier le comportement individuel des visiteur, trouver du trafic de campagne et diagnostiquer les problèmes de suivi.

Journal des visiteurs
Journal des visiteursUne table des visiteurs avec une barre de filtre (date, recherche IP/email/ville, source, périphérique) et des colonnes pour _IP/e-mail, emplacement, sources, péliphériques et temps, avec une ligne de menace signalée.Journal des visiteursyoursite.com7 joursRechercher IP, e-mail, ville…Source ▾Appareil ▾IP / EMAILLOCALISATIONSOURCEDISPOSITIFQUAND[email protected]États-Unis · New YorkgoogleBureau2 m41.62.10.4Royaume-Uni · LondresdirectMobile6 millions[email protected]DE · Berlinutm:adsMobile14 millions203.0.113.9NG · LagosreferralBureauthreat1–25 des 3,402Séance →1FILTERDate · rechercher · source · appareil2REAL COLUMNSIP/email · localisation · dispositif · menace3DRILL INOuvrir la session complète
Le journal des visiteurs réel : filtrez par date, recherche et périphérique, puis lisez chaque visite par IP/email, emplacement, source, appareil et heure, menaces signalées en rouge.

Ce que chaque ligne montre

IP adresse

Le visiteur IP Anonymisé si IP L'anonymisation est activée dans les paramètres. Cliquez pour voir toutes les visites de ce IP.

Pays et ville

Détecté à partir duIP Nécessite la base de données MaxMind GeoLite2 ou Cloudflare Affiche "Inconnu" si GeoIP n'est pas configuré.

PageURL

La page que le visiteur a chargée. Cliquez pour voir la fiche complète URL. Long URLs Les données sont tronquées dans la vue de tableau.

Référent

D'où le visiteur est venu avant d'atterrir sur votre site. "Direct" signifie pas de référent (signets, URLs tapé, certains liens vers des applications).

Appareil et navigateur

Le type d'appareil du visiteur (ordinateur de bureau, mobile, tablette) et le navigateur utilisé (Chrome, Safari, Firefox, etc.).

Date et heure

Lorsque la page a été chargée, dans votre fuseau horaire configuré.

Identité du client

Si le visiteur est identifié (via un jeton d'identité ou de connexion), son nom ou son adresse e-mail apparaît, sinon il s'affiche comme anonyme.

Filtres

plage de dates

Filtrer les visites sur une période spécifique. Par défaut: derniers 7 jours.

Recherche

Recherche par : IP adresse, page URL, référent, pays ou e-mail du client.

Source

Filtrer par source de trafic: Direct, Organique, Social, Référence, Payé, Email.

Appareil

Filtrez par ordinateur, mobile ou tablette.

Nouveau seulement

Affichez uniquement les visiteurs qui ne vous ont jamais vu auparavant.

Exemples de travaux

Trouver des visiteurs provenant d'une campagne spécifique

Scénario :
You launched a Google Ads campaign with UTM parameter utm_source=google&utm_medium=cpc&utm_campaign=summer-sale. How do you find those visitors?
Que faire:

Dans le journal des visiteurs, utilisez le champ de recherche et tapez « soldes d'été ».URLs et page URLs Vous pouvez également filtrer par Source = Payé pour affiner davantage les résultats.You can also filter by source = Paid to narrow down further.

Recherchez un client qui a signalé un problème

Scénario :
A customer emailed saying "your checkout page was broken yesterday around 3pm." How do you find their session?
Que faire:

Recherchez leur adresse e-mail dans le journal des visiteurs. S'ils étaient connectés, leur identité apparaîtra. Définissez la plage de dates sur hier. Rechercher les visites aux pages de paiement vers 15h. Cliquez sur leur session pour voir le flux complet de la page et toute erreur JavaScript.

Détecter un boucleur ou un grattoir

Scénario :
You notice an IP address has 500+ visits in one hour, all to the same page.
Que faire:

Il s'agit probablement d'un bot, un scraper ou un script endommagé.Allez dans le journal des visiteurs et recherchez par ce mot-clé:IP. Vérifiez: (1) Toutes les visites sont-elles sur la même page? (2) L'agent utilisateur est-il un bot connu? (3) Est-ce que la durée de session est toujours 0 Si vous êtes confirmé comme étant un bot, allez dans Sécurité et bloquez le.IP.

Journal des visiteurs vs Sessions vs Flux en direct

Journal des visiteurs

Idéal pour: enquêter sur des pages spécifiques, trouver du trafic provenant de sources spécifiques, diagnostiquer les problèmes de suivi.

Séances

Une ligne par session de visite. Idéal pour: comprendre le flux des utilisateurs, mesurer la durée de la session, identifier les chemins de conversion.

Flux en direct

Affiche les visiteurs actuellement sur votre site. Idéal pour: surveiller les campagnes en cours, repérer les visiteur à haute intention, observer les opportunités de support.

Pourquoi vois-je mes propres visites dans le journal?+

OpsIQ Pour exclure votre propre trafic, ajoutez vos références à la liste des visiteurs.IPAdresse aux exclus IPs Liste dans Paramètres > Suivi.

Pourquoi un visiteur affiche-t-il le pays "Inconnu"?+

La recherche GeoIP nécessite soit Cloudflare En-têtes géographiques (automatique si vous utilisez )Cloudflare) ou un fichier de base de données MaxMind GeoLite2.Vérifiez Paramètres > Chemin d'accès GeoIP pour vous assurer que le fichier de la base existe et est lisible.

Combien de temps les données des visiteurs sont-elles conservées?+

Les données des visiteurs sont conservées pendant la période de rétention configurée dans Paramètres (par défaut: 90 jours), après quoi les anciens enregistrements sont automatiquement nettoyés par le travail de réception cron.

Analytique

Séances

Les sessions regroupent plusieurs pages vues par la même personne en un seul parcours. Le journal des visiteurs affiche les chargements de page individuels, tandis que les sessions vous montrent comment les utilisateurs se déplacent sur votre site Web depuis l'atterrissage jusqu'à la sortie.

Séances
SéancesLe tableau du journal de session avec les colonnes IP, pays, périphérique, source, durée et pages, ainsi qu'une ligne de menace signalée.Séancesyoursite.comPays (NG)Journal de sessionIP(S)PAYSDISPOSITIFSOURCEDURÉEPAGE41.62.10.4Royaume-UniBureaugoogle3m 12s6102.89.6.2NGMobiledirect1m 05s388.21.4.9DEBureauutm:ads7m 48s11203.0.113.9États-UnisMobilereferral0m 42s21SESSION LOGVoyages en groupe2COLUMNSPays · appareil · source · durée3THREATSessions à risque signalées
Le vrai journal de session : chaque visiteur voyage en ligne (IP, pays, appareil, source, durée et pages) avec des sessions risquées marquées en rouge.

Comment fonctionnent les sessions

Une session commence lorsqu'un visiteur charge sa première page. Elle se poursuit à mesure qu'il navigue vers d'autres pages. Une session prend fin lorsque le visiteur est inactif pendant la période de délai d'attente de la session (par défaut : 30 minutes) ou ferme son navigateur. La même personne qui revient après l'expiration du délai crée une nouvelle session.

Ce que chaque séance montre

Première page

La page d'accueil, où le visiteur a entré votre site. Cela vous indique quel contenu attire les gens.

Dernière page

La page de sortie, où le visiteur est parti. Si la page de départ est souvent la page des prix, les visiteurs pourraient vous comparer avec les concurrents.

Nombre de pages

Plus de pages signifie généralement plus d'engagement, mais cela peut aussi signifier que le visiteur est perdu.

Durée

Les sessions avec 0 secondes sont des rebonds (vue d'une seule page, aucune autre interaction).

Source

La source de trafic pour cette session (direct, Google, social, référence, etc.).

Pays

Pays détecté à partir de l'adresse IP du visiteur.

Bounce

Si le visiteur a quitté la page après avoir consulté une seule page.

Conversion

Si le visiteur a complété un événement de conversion suivi (achat, inscription, envoi d'un formulaire) au cours de cette session.

Filtres

Recherche

Recherche parIP, courriel, pageURL, ou référent dans les sessions.

Type

Filtrer par Nouveaux visiteurs (première session) ou Visiteurs de retour.

Source

Filtrer par source de trafic.

Pays

Filtrer par pays pour voir les sessions d'une région spécifique.

Menaces/Rebondissements

Filtre pour afficher uniquement les sessions rebondies ou signalées comme menaces.

Exemples de travaux

Profiler un client à forte valeur ajoutée

Scénario :
A customer just made a large purchase. You want to understand their journey before buying.
Que faire:

Recherchez leur email dans Sessions. Voir toutes leurs sessions : (1) Combien de fois ont-ils visité avant d'acheter? (2) Quelles pages ont-ils consulté? (3) Ont-ils utilisé le chat ou ouvert un ticket? (4) Quel a été le temps total entre la première visite et l'achat?Cela vous indique le parcours d'achet typique pour les clients à forte valeur ajoutée.

Détecter la connexion à partir d'un nouvel emplacement

Scénario :
A customer usually logs in from Nigeria but you see a session from Russia.
Que faire:

Recherchez l'e-mail du client dans Sessions. Comparez le pays des sessions récentes. Si une session apparaît soudainement à partir d'un pays inhabituel, il pourrait s'agir de voyages légitimes ou d'une violation du compte.1) Y a-t-il eu une tentative de connexion échouée avant la réussite? (2) A-t-il IP Signalez-le pour examen si vous pensez qu'il est suspect.

Quelle est la différence entre une session et un visiteur?+

Un visiteur est une personne (ou un navigateur). Une session correspond à une seule visite de cette personne. Le même visiteur peut avoir plusieurs sessions au fil du temps. Les sessions expirent après la période d'expiration.

Comment OpsIQ identifie-t-il les visiteurs récurrents?+

OpsIQ utilise une combinaison de cookies, d'empreintes digitales du navigateur et de jetons d'identité authentifiés. Si un visiteur efface ses cookies et n'est pas connecté, il apparaîtra comme un nouveau visiteur.

Analytique

Flux en direct

Le Live Feed affiche les visiteurs actuellement sur votre site en temps réel. Il est mis à jour automatiquement toutes les 15 secondes (configurable). Utilisez-le pendant les campagnes, les lancements de produits et les périodes d'assistance chargées pour voir ce qui se passe en ce moment.

Flux en direct
Flux en directUn flux d'activité en temps réel montrant un compte de visiteurs en ligne et un flux des actions récentes des visiteurs par pays.Flux en directyoursite.com3710 visiteurs en ligne maintenantActivité en directmaintenantÉtats-Unis · consulte /pricing2sFrance · a commencé un chat5sAjouté au panier9sCA · inscription terminée1RIGHT NOWVoir qui est sur place2AUTO-REFRESHMises à jour tous les 15s3ACTEEntrez dans un chat en direct
Voyez qui est sur votre site cette seconde et ce qu'ils font, rafraîchissant automatiquement toutes les 15 secondes.

Comment ça fonctionne

Le flux en direct interroge votre serveur à l'intervalle d'actualisation configuré. Chaque ligne affiche un visiteur actuellement sur votre site : sa page courante, son pays, son appareil, sa source, la durée de sa session et le nombre de pages.

Paramètres

Intervalle de rafraîchissement

Fréquence de mise à jour du flux en direct. Par défaut: 15 Les valeurs inférieures (5-10s) donnent des mises à jour plus rapides mais utilisent davantage de ressources du serveur.30-60s) sont plus faciles sur le serveur mais moins en temps réel.

Seuil actif

Durée pendant laquelle un visiteur est considéré comme "actif" après le chargement de sa dernière page. 90 Si un visiteur charge une page puis la lit pendant 10 secondes, il est automatiquement redirigé vers le site d'origine. 2 Si vous ne cliquez pas sur les vidéos pendant plus de 10 minutes, elles disparaissent du flux en direct après le seuil.

Bouton de pause

Cliquez sur Pause pour arrêter l'actualisation automatique. Utile lorsque vous souhaitez lire les détails sans que la liste soit mise à jour, cliquez sur Reprendre pour redémarrer.

Exemples de travaux

Repérez un lead chaud pendant une campagne

Scénario :
You are running a product launch. A visitor just viewed your homepage, then features, then pricing, and is now on the checkout page.
Que faire:

C'est un comportement de haute intention. Dans le flux en direct: (1) Cliquez sur le visiteur pour voir sa session. (2) S'ils démarrent un chat, l'IA aura le contexte complet de leur voyage. (3) S'ils quittent sans acheter, ils deviennent un lead dans la page Leads. (4Envisagez de créer une règle proactive pour afficher un message de chat lorsque les visiteurs atteignent la caisse.

Trop de visiteurs du même IP

Scénario :
You see 20 visitors from the same IP address, all on different pages.
Que faire:

Cela pourrait être: (1) Un bureau avec Internet partagé. Vérifiez si les visites ressemblent à de vrais humains (pages différentes, durées raisonnables de la session). (2Un bot ou un racleur. Vérifiez si les sessions sont très courtes (0-1ou frapper systématiquement les pages. (3) Un test de charge. Si vous effectuez des tests automatisés, exclure le IP de traquer.

Pourquoi le flux en direct montre-t-il les visiteurs 0 lorsque mon site a du trafic?+

Vérifiez : (1) Le script du widget est-il installé sur votre site? (2) La clé du site est-elle correcte? (3) Le seuil actif est-il dépassé? (4) Les visiteurs utilisent-ils des bloqueurs de publicité agressifs qui bloquent le script de suivi?

Puis-je filtrer le flux en direct par pays ou appareil?+

Le flux en direct affiche tous les visiteurs actifs. Pour des vues filtrées, utilisez la page Journal des visiteurs ou Sessions avec leurs options de filtrage. Le flux en live est intentionnellement simple pour le suivi en temps réel.

Analytique

Pages haut de page

Les pages les plus consultées indiquent quelles sont les pages de votre site Web qui reçoivent le plus de trafic, en fonction des visites, de l'engagement, des conversions et de l’activité d'assistance. Utilisez cette fonctionnalité pour identifier vos meilleurs contenus, trouver les pages peu performantes et découvrir celles qui génèrent des questions d'aide.

Pages haut de page
Pages haut de pageUne liste classée des pages les plus visitées avec des barres de visite horizontales et des compteurs.Pages haut de pageyoursite.comLes pages les plus visitées/pricing3,402/2,910/docs1,740/blog/seo-guide980/signup6401RANKEDLes pages les plus visitées2SIGNALSVisites & conversions3FINDPages qui génèrent des tickets
Vos pages classées par trafic et engagement, afin que vous puissiez repérer le meilleur contenu et les pages qui génèrent du soutien.

Ce que chaque page montre

PageURL

Le plein URL Les pages similaires (par exemple, les variantes de produits) sont groupées si le regroupement est activé.

Vues

Nombre total de fois que cette page a été chargée dans la période sélectionnée.

Nombre de visiteurs uniques

Combien de personnes différentes ont consulté cette page (une personne qui consulte la même page deux fois est comptée comme 1 unique).

Taux de rebond

Pourcentage de visiteurs qui ont quitté votre site après avoir consulté cette page uniquement. Un taux élevé de rebond sur les pages d'accueil = problème, et un taux de rebondir élevé sur les « pages de remerciement » = normal.

Temps moyen

Combien de temps les visiteurs passent en moyenne sur cette page. Très court = pas de lecture, très long sur une page de formulaire = confusion.

Le chat commence

Si le chat commence sur une page de produit, cela signifie que la description du produit peut ne pas être claire.

Tickets de support

Nombre de tickets d’assistance créés par les visiteurs présents sur cette page. Un nombre élevé de tickets signale un problème potentiel d’ergonomie ou de contenu.

Exemples de travaux

Trouver des pages qui génèrent des questions d'assistance

Scénario :
Your support team keeps getting questions about shipping. Which page is failing?
Que faire:

Recherchez les pages de produits ou d'expédition qui affichent un nombre élevé. La page avec le plus grand nombre de questions relatives à l'assistance contient probablement des informations peu claires. Corrigez le contenu de la page et vérifiez si le nombre de ces questions diminue.

Repérer les pages à fort taux de sortie

Scénario :
You want to know where people leave your site most often.
Que faire:

Ignorez les pages qui sont naturellement des points de sortie (pages de remerciement, pages de confirmation). Concentrez-vous sur les pages destinées à retenir l’attention des visiteurs : pages produit, prix, fonctionnalités.

Pourquoi une page affiche-t-elle 0 vues alors que je sais qu'elle a du trafic?+

Vérifiez : (1) Le widget de suivi est-il installé sur cette page spécifique? Les applications à une seule page peuvent ne pas déclencher des pages vues lors de changements d'itinéraire.2) La page est-elle exclue dans les paramètres de suivi? (3Un CDN sert-il une version mise en cache sans le script de suivi?

Analytique

Géo-intelligence

La fonctionnalité Geo Intelligence vous permet de comprendre l'origine de vos visiteurs par pays, ville, appareil et source, ainsi que les marchés géographiques, de décider du support linguistique, de planifier le marketing régional et de détecter des schémas de trafic suspects.

Géo
Géo-intelligenceUne carte des emplacements de visiteurs à côté d'un classement par pays.Géo-intelligenceyoursite.comVisiteurs par localisationÉtats-UnisRoyaume-UniDEPaysNG1MARKETSPays, ville, appareil2PLANLangue & régions3WATCHRepérer le trafic étrange
D'où viennent vos visiteurs (par pays, ville et appareil) à la taille des marchés et repérer le trafic inhabituel.

Ce que vous voyez

Top pays graphique à barres

Cliquez sur un pays pour afficher les données au niveau de la ville.

Beignet de pays

Répartition visuelle du trafic par pays. Passez le curseur pour les pourcentages.

Tableau complet des pays

Chaque pays ayant reçu des visiteurs au cours de la période sélectionnée, avec le nombre de visiteurs, le nombre d'ouvertures de session, le taux de rebond et le taix de conversion.

Déroulement vers le bas

Cliquez sur un pays pour voir les villes de ce pays qui ont le plus de visiteurs.

Comment fonctionne la détection GeoIP

OpsIQ détecte l'emplacement des visiteurs de deux façons: (1) Cloudflare en-têtes géo. Si votre site est derrière Cloudflare, la détection par pays est automatique et précise (2) Base de données MaxMind GeoLite2. Téléchargez la base de données gratuite et configurez le chemin dans Paramètres. La détection au niveau de la ville nécessite la base GeoLité2-City, pas seulement la base Country.

Trafic VPN et proxy

Visitors using VPNs will appear to come from the VPN server's location, not their real location. This is by design. OpsIQ cannot and should not try to bypass VPNs. If you see unusual country patterns, consider that 10-20% of visitors may be using VPNs.

Exemples de travaux

Trafic de pays inattendu

Scénario :
You run a US-only business but 30% of traffic is from India.
Que faire:

Vérifiez : (1Regardez la durée de la session et les pages consultées. Des sessions très courtes avec un taux de rebond élevé = des bots probables.2) Est-ce qu'ils vous trouvent via Google? Vérifiez le référent. (3Si le trafic est authentique et engageant, envisagez d’ajouter des prix ou du contenu spécifiques à l’Inde.

Décider du soutien linguistique

Scénario :
You want to know if you should translate your site into Spanish.
Que faire:

Si les pays hispanophones (Espagne, Mexique, Colombie, Argentine, etc.) représentent ensemble plus de 10% de votre trafic avec des taux de rebond faibles, la traduction vaut la peine d'être envisagée. Vérifiez également: les visiteurs de ces pays convertissent-ils à des taUX similaires à ceux de votre marché principal?

Planification des quarts de travail du soutien régional

Scénario :
You need to decide support team hours for different time zones.
Que faire:

Utilisez la carte thermique horaire (dans le tableau de bord) combinée avec Geo Intelligence. 40% La majeure partie de votre trafic provient d'Europe et 35% La carte thermique montre exactement quand chaque région est la plus active, ce qui vous permet d'améliorer votre visibilité.

Pays avec des visites mais pas de commandes

Scénario :
Germany shows 500 visitors this month but zero sales.
Que faire:

Enquêter : (1) Est-ce qu'ils rebondissent sur la page de prix? Peut-être que votre tarification n'est pas compétitive pour ce marché.2) Livrez-vous en Allemagne? Vérifiez si votre page d'expédition mentionne l'Allemagne. (3) Votre paiement est-il disponible en EUR? Un décalage de devises entraîne des paiements abandonnés. (4) Ces visiteurs proviennent-ils d'une seule source qui pourrait être un trafic à faible intention?

Pourquoi un visiteur affiche-t-il le pays "Inconnu"?+

Soit configurez Cloudflare (qui ajoute automatiquement les en-têtes géographiques) ou téléchargez la base de données MaxMind GeoLite2 et définissez le chemin du fichier dans Paramètres > Chemin GeoIP.

Puis-je bloquer le trafic de pays spécifiques?+

OpsIQ Utilisez votre serveur web ou configurez-le à l'aide d'un navigateur Web. Cloudflare Règles de pare-feu pour le blocage par pays.OpsIQ Se concentre sur la visibilité, pas le contrôle d'accès au niveau du réseau.

Analytique

Entonnoir d'intention

L'entonnoir d'intention classe les sessions des visiteurs en fonction de ce qu'ils semblent essayer de faire : parcourir, rechercher, comparer, acheter, obtenir un support ou quitter. Utilisez-le pour comprendre l'équilibre des intentions sur votre site et identifier où les visiteurs abandonnent.

Entonnoir d'intention
Entonnoir d'intentionUn entonnoir de la recherche à la recherche pour comparer à l'achat avec des comptes, plus le soutien et laissant les jetons.Entonnoir d'intentionyoursite.comParcourir · 8,200Recherche · 4,100Comparer · 1,650Acheter · 520Soutien 6%Quitter 11%1CLASSIFYCe que les visiteurs veulent2STAGESParcourir pour acheter3FIXETrouver le point de dépôt
Sessions classées par intention (parcour, recherche, comparaison, achat) afin que vous puissiez voir exactement où les gens déposent.

Catégories d &apos; intention

Navigation

Visiteurs regardant autour d'eux. Sessions courtes, peu de pages, aucun objectif spécifique détecté.

Recherche

Visiteurs lisant des pages de produits/fonctionnalités, des documents ou du contenu de blog. Temps sur la page plus long, plusieurs pages de contenu.

Comparaison

Les visiteurs qui consultent les prix, la comparaison des forfaits ou les tableaux de fonctionnalités.

Achat

Visiteurs à la caisse, au panier ou aux pages d'inscription. Haute intention. Ce sont vos possibilités de conversion.

Recherche d &apos; appui

Les visiteurs sur les pages d'aide, les pages de contact ou qui démarrent un chat.

Rebondissant

Les visiteurs qui ont quitté après une page. Faible engagement.

Comment lire l'entonnoir

Interpréter votre entonnoir

Scénario :
1,000 visitors viewed Pricing. 270 opened chat. 92 started checkout. 64 paid. 18 opened support tickets.
Que faire:

La page de tarification est assez forte pour créer une intention. Le chat est important dans le chemin d'achat: 27% Les tickets de support après la commande peuvent indiquer l'activation ou la confusion du paiement. Action: (1) Assurez-vous que le chat AI répond bien aux questions de prix. (2) Enquêter sur 18 les tickets d'assistance post-vérification pour les questions communes.

Filtres de temps

Utilisez le filtre de la plage de dates pour comparer les tendances d'intention entre les périodes. Par exemple, comparez la semaine du vendredi noir à une semaine normale. Vous devriez voir un pic dans l'intention "Acheter" et éventuellement "Support-cherching" si vos promotions ont créé de la confusion.

Comment OpsIQ classe-t-il l'intention?+

OpsIQ Vues sur la page URLs Les pages de tarification indiquent une intention de comparaison. Les pages d'achat indiquent l'intention d'acquérir un produit. Les page d'aide/de contact indiquent la volonté de prendre en charge le client.

Puis-je personnaliser les catégories d'intention?+

Pas pour le moment. Les catégories sont intégrées en fonction des modèles de comportement Web courants, et la classification personnalisée d'intention est prévue dans la feuille de route.

Analytique

Entonnoirs, rétention et cheminement

Créez des parcours personnalisés à partir d'étapes de page ou d'événement, mesurez la rétention de cohorte et découvrez les chemins que les visiteurs empruntent le plus souvent sur un site.

Écran de produit
EntonnoirsUn entonnoir personnalisé affiche chaque étape de page/événement, les visiteurs restants et le pourcentage de conversion.Entonnoirsespace de travailSTEPS4CONVERSION28.4%WINDOW72hVUE DE L'ESPACE DE TRAVAIL EN DIRECTPrix consulté1,420 visiteurs100%Plan sélectionné780 visiteurs54.9%Le checkout a commencé530 visiteurs37.3%Commande complétée403 visiteurs28.4%1DEFINEChoisir 2–8 étapes2MESUREDéfinir la fenêtre de conversion3AMÉLIORERTrouver la plus grande baisse
Un entonnoir personnalisé affiche chaque étape de page/événement, les visiteurs restants et le pourcentage de conversion.

Entonnoirs

Créer un entonnoir nommé avec 2à8 Définissez la fenêtre de conversion en heures ; un visiteur est compté uniquement lorsque les étapes ordonnées se produisent dans cette fenêtre. Utilisez le décalage entre les étape pour choisir où inspecter la rejouabilité, les erreurs, la vitesse de page ou la messagerie.

Conservation

La rétention regroupe les visiteurs en cohortes hebdomadaires et montre combien d'entre eux retournent. 6, 8 ou 12 Gardez la définition de cohorte stable lors de la comparaison des sorties ou des campagnes.

Chemin

Chemins liste les séquences de pages les plus courantes. Choisissez une longueur de chemin à partir2à5les pages pour garder le résultat lisible. Utilisez-le pour trouver des détours inattendus, des sorties communes et du contenu qui précède à plusieurs reprises la conversion.

Pour réagir à une étape terminée, créez un objectif de conversion, un segment, un déclencheur ou un flux de travail.

Analytique

Relecture de session

La fonctionnalité Replay de session vous permet d'afficher une chronologie des actions effectuées par un visiteur sur votre site : les éléments sur lesquels il a cliqué, la façon dont il a fait défiler le contenu, l'endroit où il s'est arrêté et ce qu'il a saisi (les champs sensibles étant masqués).

Relecture de session
Relecture de sessionUn lecteur de replay affichant une fenêtre de page avec un curseur, un panneau d’informations sur la session et un déflecteur de timeline.Relecture de sessionyoursite.comAcheter maintenantSESSIONDurée 3m 12s14 clicsUS · BureauChrome 1241WATCHCliques, défilement, saisie2MASKEDChamps sensibles cachés3DIAGNOSEVérifier les rapports de bogue
Rejouez exactement ce qu'un visiteur a fait : clics, défilements, saisie (champs sensibles masqués), sur un épurateur de timeline.

Trouver la bonne session

Dans la page Sessions, recherchez les sessions comportant des problèmes signalés, un nombre élevé de pages sans conversion ou des sessions provenant de clients qui ont déposé des tickets d’assistance.

Ce que montre le replay

Chronologie

Une barre horizontale affichant les événements au fil du temps. Cliquez n’importe où sur la chronologie pour passer à ce moment-là.

Navigation de la page

Chaque chargement de page apparaît comme un segment sur la timeline, vous pouvez voir le chemin exact que le visiteur a emprunté.

Cliques

Les événements de clic sont affichés sous forme de points sur la timeline et en surbrillance sur la reconstruction de page.

Défilement

La profondeur de défilement est suivie afin que vous puissiez voir jusqu'où le visiteur a lu.

Interaction de formulaire

La saisie de texte dans les champs à mot de passe et sensibles est masquée par défaut.

Confidentialité et masquage

Les champs de mot de passe, les saisies de carte bancaire et les champs marqués avec data-opsiq-mask ne sont jamais enregistrés. Vous pouvez configurer des règles de masquage supplémentaires dans Paramètres > Suivi. Si votre stratégie de conformité l’exige, vous pouvez désactiver complètement la lecture en continu.

Diagnostiquer un checkout cassé

Scénario :
A customer says "I tried to buy but the button did nothing."
Que faire:

Recherchez leur session dans la page Sessions (recherche par e-mail). Ouvrez le replay. Regardez le segment de la page de paiement.1) Ont-ils cliqué sur le bon bouton? (2) Did a JavaScript (Consultez la page Erreurs JS à ce moment-là.)3) La page a-t-elle été rechargeée ou affiché un message d'erreur? (4) Un champ obligatoire était vide? Le replay montre exactement ce qui s'est passé.

Quel volume de stockage la relecture de session utilise-t-elle ?+

Pour les sites à trafic élevé, envisagez une période de conservation plus courte (par exemple 30 jours) afin de gérer le stockage. Pour les sites avec un trafic faible, envisagent une période plus longue (par ex.

Les visiteurs peuvent-ils refuser la retransmission?+

Si l'option "Respecter Do Not Track" est activée dans les paramètres, les visiteurs avec des en-têtes DNT ne sont pas enregistrés. Vous pouvez également exclure certaines pages de la lecture dans les réglages de suivi.

Analytique

Journal des événements

Le journal des événements affiche tous les évéements enregistrés par OpsIQ (page vue, clics, démarrage de chat, création de ticket, vente et évéments personnalisés) pour vous aider à déboguer vos intégrations, vérifier la livraison du webhook et comprendre l'ordre d'action.

Journal des événements
Journal des événementsUn journal chronologique des événements avec des badges de type codés par couleur: pageview, chat, vente, webhook et personnalisé.Journal des événementsyoursite.compageviewÉtats-Unis · /pricing12:04:01chat.startRoyaume-Uni · widget ouvert12:04:09vente$49.00 · numéro de commande 104212:05:22webhookpayment.succeeded12:05:23customdemo_booked12:06:101EVERYTHINGChaque événement enregistré2DEBUGVérifier la livraison du webhook3ORDERVoir la séquence exacte
Une chronologie de tout les enregistrements OpsIQ (pageviews, chats, ventes, webhooks, événements personnalisés) pour le débogage et l'audit.

Événements intégrés (automatiques)

pageview

Déclenché à chaque chargement d'une page suivie. Comprend URL, titre, référent et horodatage.

chat.started

Déclenché lorsqu'un visiteur ouvre le widget de chat et envoie son premier message.

chat.message

Déclenché pour chaque message dans une conversation de chat (visiteur et IA/agent).

ticket.created

Déclenché lorsqu'un nouveau ticket d'assistance est créé (à partir du chat, de l'e-mail, du widget ou de l’administrateur).

ticket.replied

Déclenché lorsqu'une réponse est ajoutée à un ticket.

order.completed

Déclenché lorsqu'un achat est effectué via une plateforme connectée.

form.submitted

Déclenché lorsqu'un formulaire suivi est soumis (si le suivi de formulaires est activé).

identify

Déclenché lorsqu'un visiteur est identifié via un jeton d'identité.

Erreur de connexion_failed

Déclenchée lorsqu'une tentative de connexion échoue.

Événements personnalisés

Vous pouvez envoyer des événements personnalisés depuis votre site Web ou serveur à OpsIQ. Les évéements personnalisé sont utiles pour suivre les actions spécifiques à votre entreprise: clics sur un bouton, utilisation de fonctionnalités, lectures vidéo, téléchargements, etc.

JavaScript · événement personnalisé depuis le navigateur
// Send a custom event from the browser
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "plan_selected", {
  plan: "pro",
  billing: "annual",
  value: 99
}]);
PHP · enregistrer une activité de contact depuis votre serveur
// Record a server-side activity for a contact (PHP)
$ch = curl_init("https://your-opsiq-domain.com/api/v1.php");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer opq_your_key",
        "Content-Type: application/json",
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "action" => "crm.activities.record",
        "site_key" => "site_abc123",
        "email" => "[email protected]",
        "event" => "subscription.upgraded",
        "value" => 50,
        "currency" => "USD",
    ]),
]);
$response = curl_exec($ch);
curl_close($ch);

Filtrage des événements

Type d &apos; événement

Filtrer par noms d'événement spécifiques: pageview, chat. started, ticket. created, etc.

plage de dates

Afficher les événements d'une période de temps spécifique.

Recherche

Recherchez les données d'événement par mot-clé (URL, e-mail, valeurs de propriété d'évènement).

Combien de temps les événements sont-ils conservés?+

Les événements suivent la stratégie de conservation définie dans Paramètres. Par défaut: 90 jours. Les évéements à forte valeur (achats, évéments de sécurité) peuvent être configurés avec une rétention plus longue.

Puis-je utiliser des événements dans les expériences A/B?+

Oui. Lorsque vous créez une expérience, vous choisissez un événement de conversion. Tout évéement intégré ou personnalisé peut être utilisé comme objectif de conversion, mais il ne doit pas être le même pour tous les utilisateurs.

Analytique

Expériences A/B

Les expériences vous permettent de tester deux versions d'une page ou fonctionnalité et de déterminer celle qui fonctionne le mieux. OpsIQ Suivre les impressions, conversions et signification statistique.

Expériences A/B
Expériences A/BDeux cartes de variante comparant les taux de conversion, avec un badge gagnant et une signification sur la variante principale.Expériences A/Byoursite.comVariante A4.2%Conversion · 1,020 vuesVariante BGRANDS6.8%Conversion · 1,005 vues+62% Ascenseur · 96% significative1ESSAIDeux variantes en tête-à-tête2MESUREConversions & signification3DÉCIDEDéclarer un gagnant
Exécutez deux variantes, observez les conversions et la signification statistique, puis déclarez le gagnant.

Comment fonctionnent les expériences

1
Créer une expérience

Donnez-lui un nom, définissez votre statistique principale (événement de conversion) et configurez les variantes (contrôle et test).

2
Exécutez-le

OpsIQ affecte de manière aléatoire les visiteurs à des variantes et suit leur comportement. Ne modifiez pas l'expérience pendant son exécution.

3
Lire les résultats

Une fois que suffisamment de données ont été recueillies, vérifiez le niveau de confiance. 95% la confiance signifie que vous pouvez être _95% sûr que la différence est réelle et non aléatoire.

États de l'expérience

Brouillon

Créée mais pas encore démarrée. Vous pouvez toujours modifier les variantes et statistiques.

Exécution

Attribuer activement les visiteurs aux variantes. Ne pas modifier pendant l'exécution.

Terminé

Atteint la signification statistique ou a été arrêté manuellement. Les résultats sont définitifs.

Archivé

Les résultats ont été examinés et l’expérience n’a plus sa place dans la liste active.

Les meilleures pratiques

Définissez votre métrique avant le lancement

Choisir une mesure après avoir vu les résultats introduit un biais, et vous risquez de ne pas être satisfait.

Exclure le trafic interne

Ajoutez les adresses IP de votre équipe à la liste d'exclusion afin que les visites du personnel ne fassent pas biaiser les résultats.

Courir assez longtemps

N'arrêtez pas une expérience après 100 visiteurs, car vous avez besoin de centaines ou de milliers de visiteurs par variante pour obtenir des résultats fiables.

Tester un changement à la fois

Si vous changez le titre ET la couleur du bouton, vous ne saurez pas quel changement a causé l'amélioration.

Enregistrez votre décision

Une fois l’expérience terminée, notez quelle variante a gagné et pourquoi vous avez choisi de la mettre en œuvre.

De combien de visiteurs ai-je besoin pour une expérience valide?+

It depends on the baseline conversion rate and the effect size you want to detect. As a rule of thumb: at least 500 visitors per variant for a 20% effect size. For smaller effects, you need thousands.

Puis-je exécuter plusieurs expériences en même temps?+

Oui, mais attention : si deux expériences affectent la même page, leurs résultats peuvent interagir. Il est plus sûr d'exécuter des expériences sur différentes pages ou fonctionnalités en même temps.

Analytique

JavaScript erreurs

JavaScriptErreurs collecte des erreurs côté client de votre site Web visiteurs. Un bouton cassé, un échecAPIappel, ou une ressource manquante apparaît ici. Utilisez-la pour trouver et corriger des bugs qui affectent les clients réels.

Erreurs de JS
JavaScript erreursUne liste des erreurs front-end capturées avec les points de gravité, le fichier source, le navigateur et le nombre d'occurrences.JavaScript erreursyoursite.comLes erreurs récentesTypeError: impossible de lire x d'undefinedCréer un compte checkout. js:42×214404 chargement /assets/app.cssAccueil · Safari×88Non attrapé (en promesse) NetworkErrorapi. js:_17×51Avertissement de dépréciation: unload eventVendeur. js · Edge×331CAPTUREErreurs côté client2IMPACTCompteurs & navigateurs3FIXESquash vrais bugs
De vrais visiteurs qui frappent la surface de code cassée ici (message, source, navigateur et à quelle fréquence) pour que vous puissiez résoudre ce qui compte.

Ce que chaque erreur indique

Message d'erreur

Le texte d'erreur JavaScript (par exemple, "TypeError: Cannot read properties of undefined").

PageURL

Sur quelle page l'erreur s'est produite.

Navigateur et appareil

Le navigateur et le type d'appareil qui ont généré l'erreur. Certaines erreurs sont spécifiques au navigateur.

Pile de trace

L'emplacement du code où l'erreur s'est produite. Cliquez pour développer la trace de pile complète.

Première fois vu

Lorsque cette erreur est apparue pour la première fois.

Dernière fois vu

Quand cette erreur s'est produite la dernière fois.

Compte

Combien de fois cette erreur a été enregistrée.

Sessions affectées

Combien de sessions différentes ont connu cette erreur.

Hiérarchisation des erreurs

Pas tous JavaScript Les erreurs nécessitent une attention immédiate. Prioriser par: (1) erreurs sur les pages critiques (caisse, inscription, connexion), (2) des erreurs avec un nombre élevé de sessions, (3) des erreurs apparues récemment (régression possible d'un changement de code), (4) des erreurs sur votre propre code (pas de scripts tiers).

Réparation d'un bouton de paiement cassé

Scénario :
The JS Errors page shows "TypeError: Cannot read properties of undefined (reading submit)" on /checkout, affecting 45 sessions this week.
Que faire:

Cela signifie : 45 Les clients réels n'ont pas pu compléter le paiement. Étapes: (1) Ouvrez la page dans le même navigateur/appareil. (2) Ouvrez la console du navigateur et reproduisez l'erreur. (3) Vérifiez la trace de pile pour trouver la ligne exacte du code. (4) Corrigez le bogue, déployez et surveillez le nombre d'erreurs allant à zéro.

OpsIQ capture-t-il les erreurs des scripts tiers?+

Oui, OpsIQ captures all JavaScript Les erreurs sur la page, y compris les erreurs provenant des scripts d'analyse, des widgets de chat et les scripts publicitaires. URL Dans la trace de pile pour se concentrer sur votre propre code.

Comment puis-je exclure les erreurs connues inoffensives?+

Vous ne pouvez pas supprimer des erreurs spécifiques dans OpsIQ, mais vous pouvez filtrer la liste par page URL Corrigez ou ignorez les erreurs provenant des extensions du navigateur (elles apparaissent souvent sous la forme d'erreurs de sources inconnues).

Ventes

Ventes et conversions

Le suivi des ventes connecte votre boutique ou plateforme de facturation à OpsIQ afin que vous puissiez voir les revenus en même temps que le comportement du visiteur. Chaque achat est attribué au parcours du visiteurs, ce qui vous permet de savoir quelles pages, campagnes et canaux génèrent des revenus.

Ventes
VentesL'écran des ventes: un total de revenus avec une période de contrôle All-time, une recherche et un tableau Achats récents (date, client, plateforme, montant, source).Ventesyoursite.comREVENUS$42,180+18%Tout le temps ▾Recherche par email, IP, numéro de commande…Achats récentsDATECLIENTPLATFORMEMONETSOURCEJuin 3[email protected]Shopify$49googleJuin 3[email protected]WooCommerce$129directJuin 2[email protected]Stripe$480publicités1REVENUSCommandes & renouvellements2RECENT PURCHASESDate · client · montant3ATTRIBUTEDVers la source de trafic
L'écran de vente réel, les revenus en haut, puis les achats récents (date, client, plate-forme, montant), chacun attribué à sa source de trafic.

Tableau de bord des ventes

Les ventes d'aujourd'hui

Revenu des commandes passées aujourd'hui. Actualise à chaque nouvel événement de commande depuis votre plateforme connectée.

Cette semaine / ce mois-ci / total

Les revenus cumulés au cours de la période. Les remboursements sont soustraits de ces totaux.

Graphique de tendance

Recherchez les pics (promotions, campagnes) et les creux (problèmes, saisonnalité), puis affinez votre recherche en fonction de ces données.

Top sources de conversion

Quelles sources de trafic mènent au plus grand nombre d'achats. Les acheteurs « directs » ont souvent mis votre site en favoris, tandis que les acheteurs Google vous ont trouvé par le biais des recherches.

Les achats récents

Les dernières commandes avec l'adresse e-mail du client, le montant, la devise et les articles achetés.

Guides de configuration de la plateforme

Shopify

Aller à Connecteurs >Shopify. Créez une application personnalisée dans votre.Shopify admin (Paramètres > Applications et canaux de vente > Développer des applications). Champ d'application de l'autorisation: read_orders, read_customers et read_products. API Jeton d'accès. Dans OpsIQ, entrez le domaine de votre boutique (par ex. your-store.myshopify.com) et le jeton d'accès. Cliquez sur Tester la connexion. Si cela réussit, activez la synchronisation webhook pour les notifications de commande en temps réel.

WooCommerce

Aller à Connecteurs >WooCommerce Dans votre. WordPress admin, go to WooCommerce> Paramètres > Avancé > REST API. Créez une clé avec autorisation de lecture/écriture. Copiez la clé et le secret du consommateur. OpsIQ, entrez votre site URL, la clé du consommateur et le secret du consommteur. Cliquez sur Tester la connexion.

Grand commerce

Accédez à Connecteurs > BigCommerce. Dans votre administrateur BigCommerce, accédez à Paramètres avancés >API Création d'un compte V2/V3 API Copiez le jeton d'accès, l'ID du client et la clé de connexion dans les champs correspondants.API Entrez-les dans le champ. OpsIQ et test.

Magento 2

Allez dans Connecteurs > Magento. Dans votre admin Magento, allez dans Système > Intégrations et créez une nouvelle intégration avec. API Activez l'intégration et copiez le jeton d'accès. Entrez-le dans, puis cliquez sur OK. OpsIQ Avec votre base Magento URL.

PrestaShop

Allez dans Connecteurs > PrestaShop. Dans votre administrateur Prestashop, allez dans Paramètres avancés > Webservice. Activez le webservice et créez une nouvelle clé. Accorder l'accès aux commandes, clients et produits. Copier la clé et entrer-la dans OpsIQ Avec votre magasin. URL.

OpenCart

Allez dans Connecteurs > OpenCart. Générer API Entrez les informations d'identification de votre panneau d'administration OpenCart.API URL, nom d'utilisateur et mot de passe OpsIQ. Le connecteur utilise le REST d'OpenCart API Pour les données de commande et client.

osCommerce

Allez dans Connecteurs > osCommerce. Configurer l'accès à la base de données ou API L'intégration osCommerce nécessite généralement un accès direct à la base de données ou une connexion personnalisée.API Module.

Stripe

Accédez à Connecteurs > Stripe. Copiez votre compte Stripe restricted API Cliquez sur la clé dans le tableau de bord Stripe (Développeurs >API La clé doit avoir un accès en lecture aux clients, frais, factures et abonnements. Entrez-la dans le champ OpsIQ Configurer le point de terminaison webhook pour les événements en temps réel.

Personnalisé / autres plateformes

Utiliser le REST API Envoyez des événements order.completed avec l'adresse e-mail du client, le montant, la devise et les articles. Voir les Événements API Section pour le format de la charge utile.

Comprendre votre entonnoir de vente

Top sources de conversion

Affiche quels canaux apportent des clients payants. Si Google apporte 1000 visiteurs et 50 les ventes, c'est un5% taux de conversion. Si email apporte 200 visiteurs et 30 les ventes, c'est-à-dire 15%. L'email est plus efficace par visiteur.

Remboursements

Les commandes remboursées sont suivies séparément et réduisent votre chiffre d'affaires net total. Si les taux de remboursement sont élevés pour une source donnée, il est possible que le trafic soit de mauvaise qualité.

Manipulation des devises

OpsIQ stocke la devise et le montant originaux de la transaction. Les entreprises multidevises voient leurs revenus dans chaque devise, tandis que les rapports normalisés utilisent le taux de change configuré.

Exemples de travaux

100 visiteurs, zéro vente

Scénario :
Your pricing page gets 100 visitors per day but zero conversions.
Que faire:

Enquêter sur: (1) Utilisez Session Replay sur les visiteurs de la page de prix. Regardez comment ils interagissent avec le tableau de prix (2) Consultez les pages en haut pour connaître le taux de rebond et le temps sur la page des prix. (3) Consultez les conversations de discussion des visiteurs de la page de prix. Quelles questions posent-ils? (4) Comparez votre page de prix aux concurrents. (5) Essayez une expérience A/B avec différentes mises en page de tarification.

Attribution pour une campagne marketing

Scénario :
You sent an email campaign with UTM tags. How do you measure its revenue impact?
Que faire:

Allez dans Ventes et filtrez par source. Recherchez le paramètre UTM de la campagne, vous verrez: (1) Combien de visiteurs sont venus du courriel. (2) Combien ont converti en ventes. (3) Revenu total attribué à la campagne. (4) Par rapport à la même période avant la campagne.

Pourquoi les ventes affichent-elles zéro alors que ma boutique a des commandes?+

Vérifiez : (1) Le connecteur de plateforme est-il connecté et en bon état? Allez dans Connecteurs et vérifiez l'état. (2) La synchronisation webhook est-elle activée? Si vous utilisez le polling, la tâche cron est en cours d'exécution? (3) Le connecteur a-t-il le droit API Pour? Shopify, vous avez besoin de read_orders.

Comment OpsIQ attribue-t-il une vente à un visiteur?+

Lorsqu'une commande est reçue via le connecteur, OpsIQ fait correspondre l'adresse e-mail du client à un visiteur connu. Si le visiteur a été suivi avant l'achat, la vente est attribuée au parcours de son visiteur, y compris la source de trafic, la page de destination et l'historique des sessions.

Puis-je ajouter manuellement des ventes?+

Vous pouvez envoyer des événements de vente via le REST API Le format des événements est documenté dans la section Events (Événements).API section.

Ventes

Plombs

Leads sont des visiteurs ou des clients qui montrent l'intention d'acheter ou de soutenir.OpsIQdétecte automatiquement les leads en fonction du comportement: visites de page de prix, visites de retour, interactions de chat, démarrage de la commande et engagement élevé. Utilisez la page Leads pour prioriser le suivi et alimenter votreCRMpipeline.

Plombs
PlombsL'écran Leads: un tableau interrogeable avec IP/email, emplacement, périphérique, source et temps sur le site, ainsi que la principale source et le pays.Plombsyoursite.comSearch IP, ville, pays…Source principale : google · Pays principal : États-UnisIP / EMAILLOCALISATIONDISPOSITIFSOURCEHEURE41.62.10.4Royaume-Uni · LondresMobilegoogle4m 12s[email protected]États-Unis · New YorkBureaudirect7m 02s[email protected]DE · BerlinMobileutm:ads5m 40s203.0.113.9CA · TorontoBureaugoogle3m 28s1DETECTEDVisiteurs à haute intention2TOPSources de lead & pays3ENRICHEDIP, localisation, dispositif, temps
L'écran Leads réel, les visiteurs à haut niveau d'intention comme une table consultable (IP/email, emplacement, appareil, source, temps sur le site) avec les sources et les pays les plus importants.

Ce qui fait un lead

Tarification des visites de page

Les visiteurs qui consultent votre page de tarification ou de forfaits envisagent activement un achat.

Visites de retour

Les visiteurs qui reviennent plusieurs fois sont engagés mais pas encore convertis.

Interactions de chat

Les visiteurs qui commencent un chat cherchent activement de l'aide, soit avant l'achat ou après l'acquisition.

Le checkout commence

Les visiteurs qui atteignent la page de paiement mais ne terminent pas l'achat.

Formulaire de soumission

Les visiteurs qui soumettent un formulaire de contact, une demande de démo ou un formulaires d’inscription.

Engagement élevé de la page

Les visiteurs qui consultent de nombreuses pages avec une longue durée de session font des recherches approfondies.

Panneau de détail

Cliquez sur n'importe quel lead pour voir son profil complet:

Identité

Nom, adresse e-mail et société si connu. Les prospects anonymes affichent IP et leur emplacement.

Séances

Toutes les sessions de ce lead avec flux de page, durée et source.

Pages consultées

Toutes les pages qu'ils ont visitées, classées par récentes.

Source

Comment ils vous ont trouvé : organique, payé, social, par renvoi, direct.

Score du prospect

Un score de 0 à _100 basé sur l'intensité du comportement, la récente et l'intention de page.

État du CRM

Si ce lead a été ajouté au CRM en tant que contact ou offre.

Astuce de vente

Proposition générée par l'IA sur la suite à donner (p. ex. 3 temps · envisager une approche proactive").

Badge de lead à haute valeur

Les prospects dont le score est supérieur à 80 obtiennent un badge « Valeur élevée ». Ce sont vos meilleurs prospects, que vous pouvez hiérarchiser pour les sensibiliser, leur proposer une discussion proactive ou les inclure dans votre pipeline CRM.

Exemples de travaux

Travailler une piste chaude

Scénario :
A lead viewed your pricing page 3 times in 2 days, started a chat asking about enterprise plans, but has not purchased.
Que faire:

C'est une piste de haute intention. Étapes: (1) Vérifiez les détails de leur prospect pour obtenir des informations sur l'entreprise et le rôle. (2) Examinez la transcription du chat pour les besoins et objections spécifiques. (3) Créer une offre dans le CRM avec les informations recueillies. (4) Attribuer une tâche de suivi à un membre de l'équipe commerciale. (5) S'ils retournent à la page de tarification, la règle de chat proactif peut déclencher un message personnalisé.

Convertir des leads anonymes en contacts CRM

Scénario :
You have 50 anonymous leads with high scores but no email addresses.
Que faire:

Options: (1) Créez une règle proactive qui offre un rabais ou le téléchargement d'une ressource en échange d'un e-mail sur les pages à forte intention.2) Utilisez le widget de chat pour demander un e-mail lorsque des visiteurs anonymes commencent une conversation.3) Ajoutez un jeton d'identité à vos pages de connexion / inscription afin que les visiteurs récurrents soient automatiquement identifiés.

Comment le score de lead est-il calculé?+

Le score prend en compte: la récente des visites (récent = plus élevé), la fréquence des visite (plus = supérieur), les pages consultées (prix/caisse = supérieure), la durée de session (plus longue = meilleure), les interactions sur le chat (engagé = meilleur) et les visites répétées (session multiple = mieux).

Puis-je personnaliser les règles de notation des prospects?+

Dans la configuration CRM, vous pouvez ajouter des règles de notation des prospects qui augmentent le score en fonction de mots clés, d'événements, de sources ou de modèles de page spécifiques.

CRM

Votre CRM · commencez ici

OpsIQ envoie un CRM complet d'IA-premier qui capture la vérité client, nettoie les données, scores leads, coachs traite, prévoit des revenus et agit, avec l'intelligence du site Web, support, billets, produits et paiements comme un graphique en direct. Chaque action d'AI est source, expliquée, réversible et contrôlée par approbation.

CRM AI
Présentation de l'AI CRMUn Compteur de confiance mis en Copilote à côté des quatre cartes d'agent IA: Steward, Prospector, Retention et Analyst.CRM AIespace de travailDial de confianceManuelCopilotePilote automatiqueCombien l’IA fait-elle par elle-même?DSÀ la rechercheDéduper, enrichir,valider les donnéesDTSProspecteurTrouver & marquerNouvelles affairesRTConservationLe churn,Renouvellements de licenceANAnalystePrévisions &Expliquer les chiffres1AI-FIRSTQuatre agents spécialisés2YOU DECIDEAutonomie du Trust Dial3TRUSTEDSourcé & réversible
Un premier CRM AI géré par quatre agents spécialisés, et un Dial de confiance qui décide combien ils font sur leur propre.

Aperçu des pages CRM

AI CRM (Centre de commande)

Commencez ici

Votre écran d’accueil quotidien: pulsation des revenus, ce que l’IA a trouvé, ce qu’elle a fait, file d’attente d’approbation, prochaines étapes, santé de l’agent et retour sur investissement.

Personnes à contacter

Nombre de base

Personnes et entreprises dans votre CRM. Recherchez, filtrez, notez et gérez les profils.

Pipeline

Nombre de base

Tableau de négociation visuel avec des étapes glisser-déposer, la probabilité de gagner et le coaching AI.

Prévisions et rapports

Nombre de base

Prévisions de qualité: engagées, probables, cas le plus favorable, avec intervalles de confiance et suivi de la précision.

Cycle de vie

Nombre de base

Où se trouve chaque client : actif, à risque, prêt pour l’expansion, renouvellement attendu ou en décrochage.

Construire mon CRM

Configurer

OpsIQ génère un plan réversible et l'applique à l'approbation. Description de votre configuration CRM en anglais clair.

CRM Santé

Opérations

Page d'auto-vérification: schéma, agents, routes, actions IA et compteurs de données en direct.

Comment OpsIQ vous protège

Demander avant d'agir

Les propositions d'IA sont mises en file d'attente pour approbation. Vous pouvez les approuver, les modifier ou les rejeter, mais rien ne se passe sans votre consentement.

Ne jamais écraser

Lorsque l’IA suggère un changement, elle affiche la valeur actuelle et la valeur proposée. Les données saisies par des humains sont protégées contre les modifications de provenance.

Tout est réversible

Chaque action de l'IA est enregistrée dans le journal et vous pouvez annuler n'importe quelle modification en un seul clic.

Explicable

Chaque recommandation d’IA montre son raisonnement et les sources de données qu’elle a utilisées.

Tout neuf? Commencez ici

1
Ouvrir AI CRM

Cliquez sur AI CRM dans la barre de navigation gauche. Le Centre de commande affiche votre état actuel.

2
Vérifier la santé CRM

Ouvrez CRM Health pour vérifier que le schéma, les agents et les itinéraires sont prêts.

3
Importer des contacts

Si un connecteur est actif (Shopify, WHMCS, etc.), les contacts sont importés automatiquement. Sinon, importez via CSV Ou créer manuellement.

4
Créer un pipeline

Allez dans Pipeline et créez votre premier pipeline avec des étapes (par exemple, Lead, Qualifié, Proposition, Négociation, Gagnant, Perdu).

5
Ajouter votre première offre

Créez une offre à partir d'un contact, définissez le montant et l'étape, puis laissez-vous guider par le coach de vente.

Dois-je utiliser le CRM ?+

Non, le CRM est optionnel. OpsIQ fonctionne parfaitement comme une plateforme de suivi + support + IA sans le CRM, activez-la lorsque vous êtes prêt à gérer les ventes et la relation client.

Le CRM peut-il fonctionner sans connecteurs?+

Oui, vous pouvez créer manuellement des contacts et des offres. Les connecteurs enrichissent le CRM avec les données de la plateforme (commandes, abonnements, tickets), mais ne sont pas obligatoires.

Qu'est-ce que la couche de confiance?+

La couche de confiance est le système de sécurité qui contrôle ce que l’IA peut faire. Mode copilot (par défaut) : L’IA propose, l’humain approuve.

CRM

L’écran d’accueil du CRM IA

Le Centre de Commandement est votre briefing quotidien, ouvrez-le chaque matin pour voir ce qui s'est passé, ce qui nécessite votre attention et ce que vous devez faire ensuite.

Centre de commandement
Centre de Commande CRML’accueil du CRM, avec les bascules Prévisions / Taux de réussite / Pipeline, un indicateur de prévision pondérée et une file de propositions IA offrant Approuver et Ignorer sur chaque ligne.Centre de Commande CRMespace de travailPrévisionsTaux de victoirePipelinePRÉVISIONS · CETTE Q74k $87%Propositions d'IA · approuver la fileCréer une offre · Acme $24kD'un chat avec l'acheteurApprouverRejeterDéplacer Nimbus → PropositionRéponse positive détectéeApprouverRejeterLog task · suivre la tâcheAucune activité dans les derniers 7 joursApprouverRejeter1TOGGLEPrévisions · Taux de victoire · Pipeline2AI PROPOSESOffres, étapes, tâches3YOU DECIDEApprouver ou rejeter
Le véritable centre de commande : basculer entre Prévision, Gagnez le taux et Pipeline, et travailler la file d'attente de proposition AI, approuver ou rejeter les offres, les mouvements d'étapes et les tâches qu'il suggère.

Ce que le Centre de commande affiche

Les chiffres d'aujourd'hui

Valeur pipeline, offres gagnées/perdues, nouvelles pistes, offres actives et tendances de revenus, un instantané de votre état actuel.

Ce que OpsIQ a trouvé

Des informations découvertes par l’IA : transactions bloquées, comptes à risque, nouvelles opportunités, problèmes de qualité des données et signaux du marché.

Ce que OpsIQ a fait

Actions que l’IA a prises (en pilote automatique) ou proposées (en copilote): avancées d’étape, mises à jour de score, enrichissement des contacts et création de tâches.

Besoin d'approbation

Une file d’attente de propositions IA en attente de votre décision. Chacune montre l’action proposée, le raisonnement et les preuves.

Les prochains pas

Liste des chefs d'État et de gouvernement 10 Les choses les plus importantes à faire aujourd'hui: suivre une affaire chaude, vérifier un compte à risque, rechercher un nouveau lead, etc.

Statut d &apos; assistant

Santé des agents d’IA: Capture, Data Steward, Deal Intelligence, Deal Coach, SDR, Retention. Vert = en cours, jaune = nécessite une attention particulière, rouge = erreur.

Résultats

Suivi du ROI: transactions influencées par l’IA, gain de temps, précision des prédictions et comparaison avec le travail manuel CRM.

Briefing du matin

1
Lire les chiffres d'aujourd'hui

Vérifiez l’état de votre pipeline et la tendance des revenus.

2
Effacer la file d'attente d'approbation

Approuvez les actions sûres, modifiez si nécessaire et rejetez les mauvaises suggestions.

3
Vérifiez ce que OpsIQ a trouvé

Lisez les informations sur l’IA. Des transactions sont-elles à risque? Y a-t-il de nouvelles opportunités?

4
Travailler la liste des prochains mouvements

Commencez par la priorité absolue, que l’IA a classée en fonction de son urgence et de son impact potentiel.

Rattacher après le temps libre

Scénario :
You were away for a week. What happened while you were gone?
Que faire:

Ouvrez le Centre de commande et vérifiez: (1) "What OpsIQ done" montre toutes les actions de l'IA pendant votre absence. (2) "Besoin d'approbation" montre les propositions en attente de votre révision. (3) "What OpsIQ"Non trouvé" met en évidence les éléments urgents. (4Définissez la plage de dates du tableau de bord sur votre période d'absence pour voir la tendance.

CRM

Contacts, entreprises et offres

Le CRM organise vos relations commerciales en quatre objets : Contacts (personnes), Entreprises (organisations), Offres (opportunités de revenu) et Tâches (actions de suivi).

Objets de CRM
Objets de CRMUn enregistrement Contact lié aux objets Company, Deal et Task dans un graphique connecté.Objets de CRMespace de travailPersonne à contacterPersonne · courriel · téléphoneSociétéaccountsMarché concluOpportunité de revenusTâchesuivi1OBJECTSContacts, entreprises, offres2LINKEDUn graphe connecté3TASKSSuivi joint
Quatre objets de base (contacts, entreprises, transactions et tâches) liés à un seul graphique client connecté.

Personnes à contacter

Qu'est-ce qu'un contact

Une personne dans votre CRM, qui peut être un client, un prospect, un partenaire ou un lead. Les contacts ont une adresse e-mail, un nom, une société, des balises, une étape du cycle de vie et un score d'attractivité.

Trouver des contacts

Utilisez la barre de recherche pour trouver par nom, e-mail, société ou tags. Utilisez des filtres: étape du cycle de vie, score de lead, source, pays, date de dernière activité, propriétaire assigné.

Profil de contact

Cliquez sur un contact pour voir son profil complet : informations personnelles, société, offres, activités, tickets, chats, visites de site Web, score de lead et informations d'IA.

Score de chaleur

Un score de 0 à _100 calculé à partir des signaux comportementaux: visites du site Web, engagement par e-mail, interactions sur le chat, historique d'achat et récent.

Entreprises

... plus de billets...
Contact-société liant

Les contacts sont liés aux entreprises par domaine d'email ou par attribution manuelle, une entreprise peut avoir plusieurs contacts.

Offres

Qu'est-ce qu'une offre

Les offres ont un titre, un montant, un pipeline, une étape, une probabilité de gagner, une date de clôture, un propriétaire assigné et des contacts/entreprise associés.

Probabilité de gagner

Un pourcentage de chances de gagner l'affaire. Défini manuellement ou calculé par l'IA en fonction de vos données historiques de gains.

Traiter la santé

Vert (en bonne santé), jaune-automne (à risque) ou rouge (au point mort) en fonction de la récente activité, de la durée du stade et des signaux d’engagement.

1. Tâches

Qu'est-ce qu'une tâche

Les tâches ont un titre, une date d'échéance, une priorité, un type (appel, courriel, réunion, autre) et le contact/l'affaire liés.

Tâches générées par l'IA

L’IA crée automatiquement des tâches lorsqu’elle détecte quelque chose qui nécessite de l’attention : suivre une transaction bloquée, répondre à un compte à risque, rechercher un nouveau lead.

Trouver des leads chauds

Scénario :
You want to see all high-score contacts in the UK who have not been contacted recently.
Que faire:

Aller à Contacts. Filtrer par: Lead score > 80, Pays = Royaume-Uni, Dernière activité > 7 Il y a quelques jours. Trier par lead score descendant. Ce sont vos leads négligés les plus chauds, prioriser la sensibilisation.

Création d'une offre à partir d'un contact

Scénario :
A contact just expressed interest in your enterprise plan during a chat.
Que faire:

Ouvrez le profil du contact. Cliquez sur « Créer une offre ». Entrez le titre de l'offre (p. ex., « Acme Corp - Plan Entreprise »), le montant, la filière et l'étape (p. ex., "Qualifié"). Définissez la date de clôture et assignez-vous cette date. Le coach d'affaires commencera à suivre cette opportunité.

CRM

Le pipeline (votre tableau de bord)

Le Pipeline est un tableau visuel où les offres se déplacent à travers les étapes de gauche à droite. Faites glisser et déposez des cartes pour avancer les offre, chaque carte montre le montant de la transaction, la probabilité de gagner, et l'état de santé.

Pipeline
Pipeline CRML'écran du pipeline avec les statistiques des offres ouvertes, de la valeur ouverte, des prévisions pondérées et des offrer attribuées, un bouton Nouvelle offre, une file d'attente Approuver par IA et le tableau Lead/Qualifié/Gagné.Pipelineespace de travailOffres ouvertes23Valeur ouverte128 000 dollarsPrévision pondérée74k $Affaires attribuées12+ Nouveau dealApprouver la file d'attente2 à évaluerPLUMBERVolt Inc.4000 $Lume6k dollarsQUALIFIÉNimbus30k $Pic9 000 $GAGNÉOrbite48k $1LIVE STATSValeur ouverte et prévision pondérée2AI QUEUEApprouver les offres proposées3BOARDFaire glisser les offres par étape
L’écran du pipeline réel: statistiques en direct (valeur ouverte, prévision pondérée), une file d’attente AI Approve pour les offres proposées et le tableau de glisser-déposer.

Utilisation du panneau de pipeline

1
Voir vos offres

Le pipeline affiche toutes les transactions actives sous forme de cartes disposées en colonnes (étapes) dont l'en-tête indique la valeur totale des transactions dans cette étape.

2
Faites glisser pour avancer

Faites glisser une carte vers le niveau suivant, la probabilité de gagner et les comptes sont mis à jour instantanément. Si le déplacement échoue (erreur de validation), la carte se replie sur sa position initiale.

3
Badges de carte de chèque

Badge vert = en bonne santé (activité récente, sur la bonne voie). Ambre = à risque (ralentissement, attention requise). Rouge = au point mort (pas d'activité depuis trop longtemps).

4
Cliquez pour les détails

Cliquez sur une carte pour ouvrir le panneau de détails d’une offre avec les contacts, les activités, le résumé du coach et les actions rapides.

La file d'attente d'approbation

Les propositions d’IA apparaissent dans la file d’attente d’approbation en haut de la page du pipeline. Chaque proposition indique ce que l’IA souhaite faire, pourquoi et les preuves.

Approuver

L'action s'exécute à travers la couche de confiance et est enregistrée dans le journal. The action runs through the Trust Layer and is recorded in the journal.

Éditer

Modifiez la proposition avant d’approuver, par exemple en modifiant l’étape proposée ou le montant.

Rejeter

L’IA apprend des refus pour faire de meilleures suggestions à l’avenir.

Probabilité de gagner expliquée

La probabilité de gagner peut être définie manuellement ou calculée par l'IA. Lorsque l'AI la calcule, elle utilise un modèle entraîné sur vos propres transactions fermées (gagnées et perdues). Si vous ne disposez pas de suffisamment de données historiques, l'intelligence artificielle utilise la probabilité par défaut du stade. $10,000 deal at 30% La probabilité contribue $3,000 Aux prévisions "probables".

Déplacer une offre vers Won

Scénario :
A customer signed the contract and paid.
Que faire:

Faites glisser la carte jusqu'à l'étape "Gagné". OpsIQ will: (1) Marquer la transaction comme close-won. (2) Mettre à jour les prévisions. (3) Ajoutez une activité "Gagné" à la chronologie. (4) Si configuré, déclenche un événement webhook (crm.deal.won).5) Mettez à jour l'étape du cycle de vie du contact sur "Client".

Repérer les offres bloquées

Scénario :
You want to find deals that have been in the same stage for too long.
Que faire:

Recherchez les badges rouges (bloqués) sur le tableau de bord du pipeline. Ces offres n'ont pas eu d'activité depuis plus longtemps que le seuil de pourriture configuré (défini dans Configuration CRM > Pipelines).

Puis-je avoir plusieurs pipelines?+

Oui, allez dans Configuration CRM > Pipelines pour créer des pipelines supplémentaires. Cas d'utilisation courants : pipelines distincts pour les nouvelles affaires et les renouvellements ou pour différents produits/services.

Que se passe-t-il lorsque je fais glisser une offre vers "Perdu"?+

L'opération est marquée comme fermée-perdue. On vous demandera une raison de perte. L'affaire est retirée du forum actif mais peut être trouvée dans le filtre des affaires fermées. Le contact reste dans le CRM.

CRM

Coaching des affaires

Le Deal Coach analyse chaque affaire et vous donne un bref état de santé, des signaux de risque, des personnes clés, une liste de contrôle de qualification, la préparation de réunion et les prochaines actions suggérées. Tout est source. L'entraîneur montre de quel ticket, chat ou activité chaque réclamation provient.

Entraîneur de vente
Entraîneur de venteUne carte d’offre répertoriant les signaux de risque détectés par l’IA avec des sources de preuves, à côté d’une recommandation IA et d’un bouton brouillon-email.Entraîneur de venteespace de travailAcme Corp ·$24,000Étape : Proposition · 60 % de chances de succèsSIGNALS DE RISQUEPas de réponse dans les 10 joursLe champion s'est tuConcurrent mentionné dans le chatSources: ticket #482 · chat 6/12 · fil d'emailAI recommandeRétablir l'économieacheteur avec un récapitulatif ROIet un plan de clôture de 7jours.Rédigez l'e-mail1SIGNALSPourquoi un accord peut échouer2SOURCEDChaque allégation cite des preuves3ACTIONÉtape suivante en un clic
Le coach drape pourquoi un accord pourrait glisser (chaque signal cite sa source) et vous donne le prochain mouvement à prendre.

Ce que vous dit l'entraîneur

Explication de santé

Signaux spécifiques: jours en cours, date du dernier contact, fréquence des activités, mentions de concurrents, schémas d’objection.

Signaux

Chaque signal est lié à sa source (transcription de chat, ticket, courriel, activité) et peut être utilisé pour identifier les objections soulevées, mentions des concurrents, discussions sur la tarification, indicateurs de risque d’assistance, signaux de renouvellement/expansion.

Carte de champion et de bloqueur

Qui aide à la transaction (champion) et qui résiste (bloquant), basé sur l’analyse des interactions et les rôles de contact.

Liste de contrôle des qualifications

Liste de contrôle MEDDICC ou BANT (configurable) indiquant les critères de qualification qui sont remplis et ceux qui manquent. Catégorie: A, B, C, D ou F.

Préparation des réunions

Avant une réunion prévue, le coach génère un brief: ordre du jour, points clés à aborder, questions à poser, risques à traiter et matériel à préparer.

Répondre et appeler des plans

Suggestion du prochain message ou script d'appel en fonction de l'état actuel de la transaction et des interactions récentes.

Échéancier des preuves

Chaque réclamation que le coach fait est liée à une source : un numéro de ticket, l’ID d’une transcription de chat, la date d’activité ou la visite du site Web.

Comment utiliser le coach

1
Lire le brief

Ouvrez n’importe quelle offre et faites défiler jusqu’à la section Coach de l’offre.

2
Combler les écarts de qualification

Si l'élément « Acheteur économique » est manquant, planifiez la désignation et le recrutement du titulaire du budget.

3
Agir sur les suggestions

Le coach propose des actions concrètes. Cliquez pour créer une tâche, rédiger un courriel ou planifier une réunion, toutes acheminées par la file d'attente d'approbation.

Préparation à une grande réunion

Scénario :
You have a meeting with a prospect tomorrow about a $50,000 deal.
Que faire:

Ouvrez l'offre et lisez la section Préparation de la réunion.1) Points de discussion clés basés sur des interactions récentes. (2) Objections qu'ils ont soulevées dans le chat la semaine dernière. (3) Concurrent qu'ils ont mentionné dans un ticket de support. (4) Questions à poser sur leur chronologie. (5Utilisez ce mémoire pour préparer un programme ciblé et fondé sur des données probantes.

Comprendre pourquoi une transaction est à risque

Scénario :
The pipeline shows a red badge on a deal you thought was going well.
Que faire:

Cliquez sur l'offre et lisez l'explication de la santé du coach d'offres, qui peut indiquer : « Cette offre a été au stade Proposition pour. 22 jours (seuil : 14 Le dernier contact a été. 11 Le contact principal a ouvert un ticket d'assistance concernant les problèmes de migration des données. 5 Il y a 2 jours (ticket #T-892 Suggestion : adressez-vous au problème de migration et planifiez un appel de suivi. » Maintenant, vous savez exactement ce qu’il faut corriger.

CRM

Prévisions et rapports

Des prévisions de qualité avec une plage défendable, des explications sur les changements au niveau de l'offre et un suivi de la précision pour que vous puissiez prouver et expliquer vos chiffres.

Prévisions
PrévisionsUn nombre de prévisions trimestrielles avec les bandes Commit, Best-case et Pipeline et une note d'exactitude.Prévisionsespace de travailPRÉVISIONS · CE TRIMESTRE312 000 dollars87% à l'objectifS'engagerLe meilleur casPipelinePondérée par l'IA en fonction de la santé et de l'historique des transactions1CatégoriesS'engager à la pipeline2AI-WEIGHTEDPar deal santé3PROVABLEPrécision suivie
Commit, best-cas et pipeline en un coup d'oeil, AI pondéré par la santé de l'affaire, avec précision suivi pour que vous puissiez le défendre.

Catégories de prévision

Engagé

Les offres avec une probabilité de gain égale ou supérieure à 80%. Ce sont vos gains les plus probables, et ils devraient représenter votre revenu minimum attendu.

Probable pondéré par l &apos; IA

Toutes les transactions ouvertes sont pondérées par leur probabilité de gagner calculée par l'IA, c'est la prédiction la plus réaliste de ce que vous ferez.

Le meilleur cas

Toutes les offres ouvertes à pleine valeur, c’est-à-dire le revenu maximal possible si tout se passe parfaitement (ce qui est rarement le cas).

Intervalle de confiance

An 80% Exemple : "Vous fermez probablement entre 10 et 20% de votre position actuelle." $45,000 and $72,000 Ce trimestre."

Ce qui a changé et pourquoi

Les prévisions incluent l'attribution des variations d'une semaine à l'autre. $15,000, le rapport explique exactement quels accords ont causé ce changement: "Accord A a glissé au prochain trimestre ($8,000), Deal B perdu ($5,000), Deal C réduit en valeur ($2,000)."

Suivi de précision

Prévisions MAPE

Mean Absolute Percentage Error: how far off your forecasts have been historically. Lower is better. A MAPE of 15% means your forecasts are typically within 15% of actual results.

Calibration de probabilité de victoire

Le score de Brier mesure dans quelle mesure les probabilités de gagner correspondent aux résultats réels.70% Probabilité de gagner.70% La plupart du temps, l'étalonnage est bon.

Instantanés hebdomadaires

OpsIQ capture un instantané de vos prévisions chaque semaine (via cron) et vous pouvez voir comment la précision de vos prediction s'améliore au fil du temps.

Rollups et avertissements

Conversion par étape

Combien de transactions passent de chaque étape à la suivante. Si 80% Passer de Qualifié à Proposition mais seulement 20% Passez de la proposition à la négociation, vos propositions pourraient avoir besoin d'être améliorées.

Taux de victoire par source

Quelles sources de leads produisent le plus de gains. Investissez davantage dans les sources à taux de gain élevé.

Performance par propriétaire

Comment chaque membre de l'équipe commerciale se comporte: affaires gagnées, valeur du pipeline, taille moyenne des affaires, taux de gain.

Avertissements

Sandbagging (probabilités irréalistes), overcommitting (irréalistement élevé) et committed-at-risk (deals à forte probabilité montrant des signaux de stall).

Comprendre une baisse des prévisions

Scénario :
Your quarterly forecast dropped from $180,000 to $155,000 since last week.
Que faire:

Ouvrez la page Prévisions et cochez « Ce qui a changé. » Le rapport montre : « Acme Corp deal ($15,000) déménagé à Lost, concurrent choisi. Beta Inc deal ($8,000) date de clôture poussé au trimestre prochain.$3,000) ajouté cette semaine." Le changement net est -$20,000 + $3,000 = -$17,000, expliquant la baisse de 180 000 $ à 163 000 $ (avec les 8 000 $ restants expliqués par des rajustements de probabilité sur d'autres transactions).

CRM

Trouver de nouvelles affaires

L’agent de prospection vous aide à trouver et rechercher des clients potentiels. Décrivez votre client idéal, ajoutez les entreprises cibles et laissez l’IA effectuer des recherches, noter et rédiger une communication en première personne.

Prospection
ProspectionUne liste des entreprises potentielles trouvées par l’IA avec des notes d’adéquation, des scores et un bouton de prospection pour chacune.Prospectionespace de travailLes prospects trouvés par l'agent DTSSociété de gestion des ressources humainesSaaS · 50 personnel · soutien à l'embauche88Projet de communicationCobalt MfgIndustrie · 200 employés74Projet de communicationMesa RetailCommerce électronique · Personnel de 3069Projet de communicationSanté de VegaSoins de santé · Personnel 8063Projet de communication1FINDLes sources d'IA ciblent les comptes2SCOREFit & intention classé3DRAFTPremier contact écrit pour vous
L’agent SDR trouve les entreprises cibles, les évalue sur leur adéquation et rédige la première approche pour votre examen.

Une seule fois setup

1
Décrivez votre client idéal

Accédez à Configuration CRM > Prospection. Décrivez votre profil client idéal (ICP) : industries cibles, taille de l'entreprise, titres professionnels, emplacement géographique, termes de correspondance des produits et score d'adéquation minimum.50-500"Nous avons 20 employés aux États-Unis/au Royaume-Uni, vendant des outils de développement, avec un vice-président des ventes ou responsable de la croissance comme contact principal."

2
Ajouter des entreprises cibles

Vous pouvez également laisser l'IA vous suggérer des entreprises en fonction de votre ICP (Identité de Produit) ou d'autres critères.

3
Réviser les résultats de recherche

L’IA enrichit chaque entreprise avec les données disponibles : taille, secteur d’activité, pile technologique, actualités récentes et score de fiabilité avec explication.

4
Approuver la sensibilisation

Pour les entreprises qui répondent aux critères, l’IA rédige un message personnalisé en première contact.

Corriger le score

Chaque prospect obtient un0-100 Score d'ajustement basé sur cinq facteurs:

Ajustement ICP

La mesure dans laquelle l’entreprise correspond à votre profil de client idéal (industrie, taille, emplacement).

Signaux d'urgence

Y a-t-il des preuves qu’ils ont besoin de votre produit maintenant?

Proximatif budgétaire

La taille de l’entreprise, le stade du financement et les indicateurs des revenus suggèrent la disponibilité budgétaire.

Correspondance de produit

La pertinence de votre produit pour leur entreprise en fonction du secteur et de la technologie.

Ajustement de l'aide

Si vous pouvez servir efficacement ce client (fuseau horaire, langue, complexité).

Recherche d’une entreprise cible

Scénario :
You want to evaluate whether acme.com is worth pursuing.
Que faire:

Ajouter acme.com L'IA retourne: Fit score 78/100 Raisons: B2B SaaS, 120 10 employés, basé aux États-Unis, a récemment embauché un vice-président des ventes (signal d'urgence), utilise le concurrent X (correspondance de produits). Signaux d'achat: visité votre page de tarification deux fois le mois dernier (à partir du suivi du site Web). [email protected] L’ouvreur rédigé fait référence à leurs visites récentes de la page d’embauche et de tarification.

CRM

Séquences de suivi automatiques

Les séquences automatisent le suivi en plusieurs étapes : un mélange d'étapes de messagerie, d'attente, de tâche, d’appel et de webhook qui s'exécutent automatiquement après que vous ayez approuvé l'envoi initial.

Séquences
Séquences de suiviUn flux de séquence horizontale: E-mail, attendre trois jours, E-Mail, puis une tâche, avec détection de réponse.Séquences de suiviespace de travailAprès avoir approuvé le premier envoi →CourrielIntroAttendre3 joursCourrielSuiviTâcheAppelLes étapes peuvent être email, attente, tâche ou webhook. Une réponse stoppe automatiquement la séquence.1AUTOMATESuivi en plusieurs étapes2STEPSE-mail · attendre · tâche · webhook3YOU APPROVELe premier envoi est fermé
Suivi automatisé en plusieurs étapes (email, attente, email, tâche) que vous approuvez en premier et une réponse s'arrête automatiquement.

Comment fonctionnent les séquences

1
Créer une séquence

Définir les étapes: email, attendre 3 jours, email, attendre 5 Jours, tâche (appeler si aucune réponse), e-mail Chaque étape de l'e-mail a un modèle que vous pouvez personnaliser.

2
Enregistrer les contacts

Ajouter des contacts à la séquence. L’IA peut également proposer l’inscription à partir de résultats de prospection.

3
Exécution automatique

Si un contact répond à n'importe quel moment, la séquence est automatiquement mise en pause.

4
Suivre les résultats

Consultez les taux d'ouverture, de réponse, de conversion et de désabonnement par étape pour optimiser votre séquence.

Répondre à la compréhension

Lorsqu'un contact répond, l'IA classe la réponse:

Positif

Intéressé, veut parler. Pauses de séquence, tâche créée pour le suivi.

Objection

La séquence s'arrête, la tâche est créée avec les détails de l'objection.

Se désinscrire

Veut arrêter de recevoir des messages. Contact supprimé définitivement.

Pas maintenant

Intéressé mais le timing est incorrect. Séquence en pause, tâche de rappel créée.

La mauvaise personne

La séquence s'arrête, le contact est signalé pour examen.

Appui

Une question de support, pas une réponse commerciale. Pauses de séquence, ticket créé.

Protections anti-spam

Gestion de l'opt-out

Les demandes de désabonnement sont honorées immédiatement et le contact est supprimé de toutes les séquences futures.

Envoyer un cap quotidien

Limite quotidienne au niveau de l'espace de travail (par défaut: 1,000 e-mails). Empêche les envois massifs qui déclenchent des filtres anti-spam.

Limite par contact

Un message maximum par contact et par jour. Évite de submerger les personnes.

Manipulation des sur-caps

Les pas qui dépassent le plafond quotidien sont reportés au lendemain et ne sont jamais abandonnés ou ignorés.

Que se passe-t-il si un contact ouvre un ticket d'assistance pendant une séquence?+

La séquence est automatiquement mise en pause, le support ayant la priorité sur l'aide. La séquestration peut être reprise manuellement une fois que le problème de support est résolu.

Puis-je tester A/B les étapes de séquence?+

Pas directement dans les séquences, mais vous pouvez créer deux séquence avec des messages différents et comparer leurs résultats.

CRM

Outils de croissance

Une page sous CRM qui contient le moteur de croissance: revenus récurrents (MRR / ARR), catalogue de produits, formulaires de capture de leads, liens de réservation et routage des leads. Tout ici s'écrit directement dans le CRM, donc une soumission de formulaire ou un appel réservé est un contact avec historique, pas une ligne dans une feuille de calcul.

Ce qui vit sur la page

Revenus récurrents

Revenus

Les abonnements sont regroupés à partir des paiements par plateforme, le cycle de facturation est déduit des écarts de paiement et un abonnement expire lorsqu'un paiement est en retard au-delà de 1.5 fois son cycle. Les clients se connectent automatiquement aux contacts CRM lorsque le grand livre contient leur adresse e-mail.

Catalogue de produits

Catalogue

Une source unique de vérité pour ce que vous vendez. Les devis extraient le nom et le prix catalogue du catalogue, et les devis acceptés s'ajoutent au chiffre d'affaires par produit.

Formulaires de capture des pistes

Capturer

Chaque formulaire reçoit une page hébergée et un code d'intégration iframe pour votre propre site. Les soumissions deviennent des contacts, le propriétaire reçoivent une notification et vos règles de routage attribuent la piste.

Liens de réservation

Calendrier

Partagez un lien, laissez les prospects choisir un emplacement libre. Les créneaux respectent les heures de travail de l'organisateur, le fuseau horaire et les réunions existantes. Une réservation crée la réunion, envoie une confirmation par e-mail au prospect et informe l'organiseur.

Routage des pistes

Routage

Les règles du territoire s'exécutent d'abord, puis les règles de champ (combiner un champ comme le pays ou la source), puis les round-robin à travers votre rep pool. Il fait route des CONTACTS ET DES DEALS aussi bien, quel que soit le statut de l'accord: une affaire gagnée nécessite toujours un propriétaire pour l'attribution de commission, la responsabilité de compte et le suivi, et en mode de visibilité propriétaire ou équipe un enregistrement non détenu est invisible pour tout le monde sauf un gestionnaire.

Créer votre premier formulaire

1
Outils de croissance ouverts

Allez dans CRM, puis Outils de croissance, puis la section Formulaires de capture de leads.

2
Nommez-le et choisissez des champs

Tapez un nom et une liste de champs séparés par des virgules, par exemple nom,email,téléphone,message.

3
Partager ou intégrer

Copiez le lien hébergé pour le partager n'importe où, ou copiez le code d'intégration et collez-le dans une page de votre site Web.

4
Regardez les leads arriver

Chaque soumission est un contact CRM avec une activité form. submitted, une notification au propriétaire et un routage automatique.

💡
Les espaces de travail Cloud utilisent leur sous-domaine attribué (company.opsiq. help), afin que le lien résolve toujours les bonnes données.

Protections intégrées

Les bots voient le succès, vous ne voyez rien

Un champ de honeypot caché rejette silencieusement les soumissions de bot.

Taux limité

Dix soumissions par heure et par adresse IP pour les formulaires et réservations.

Le consentement reste honnête

La soumission d’un formulaire ne constitue pas un consentement au marketing, seule une case à cocher de consentement explicite le fait.

Pas de double réservation

Un emplacement est re-validé contre un nouveau contrôle de disponibilité au moment de la réservation.

D’où proviennent les données sur le chiffre d’affaires récurrent?+

Utilisez Re-sync from billing (Resynchroniser depuis la facturation) après avoir connecté une nouvelle plateforme.

Puis-je utiliser les formulaires sans avoir de site web?+

Oui, chaque formulaire a une page hébergée sur votre propre adresse qui fonctionne de manière autonome, avec ou sans JavaScript.

CRM

Hub de messagerie (SMS et WhatsApp)

Un connecteur, jusqu'à vingt passerelles. Connectez les fournisseurs de SMS et WhatsApp que vous utilisez réellement, marquez un par défaut, et choisissez l'un d'eux lors de la transmission d'un contact. Le consentement est vérifié par le CRM avant que n'importe quelle passerelle ne soit contactée.

Mettez-le en place

1
Activer le connecteur

Sur la page Connecteurs, ouvrez le Hub de messagerie (SMS et WhatsApp) et activez-le.

2
Ajouter un fournisseur

Dans le même tiroir, ou dans CRM Growth Tools, choisissez une passerelle dans la liste déroulante (Twilio, Vonage, Termii, Meta WhatsApp Cloud, Infobip et plus), collez son. API Vous pouvez en ajouter plusieurs, y compris la même passerelle deux fois avec des comptes différents.

3
Filer le webhook

Chaque entrée de fournisseur affiche son propre webhook URL Collez-le dans les paramètres de rapport de livraison et de message entrant de la passerelle pour obtenir l'état de livraison et les réponses dans. OpsIQ.

4
Envoyer à partir d'un contact

Ouvrez un contact et utilisez le bouton SMS ou WhatsApp. Si plusieurs opérateurs prennent en charge le canal, un sélecteur vous permet de choisir. Sinon, la valeur par défaut est utilisée.

Le consentement vient en premier

Consentement accordé uniquement

Un consentement inconnu n’est pas un consentement. Un envoi refuse à moins que le consentement SMS ne soit explicitement accordé.

Le non-contact gagne toujours

Un drapeau de non-contact bloque chaque canal, peu importe ce qui est défini.

Suppression honorée

Les contacts figurant sur la liste de suppression ne reçoivent jamais de messages.

Les refus donnent leur raison

Un envoi bloqué vous indique exactement pourquoi, afin que vous puissiez corriger les données au lieu de deviner.

Pour les développeurs : le contrat webhook

URL forme

https://your-address/opsiq/cron/messaging_webhook.php?sk=SITE_KEY&e=ENTRY_ID&t=TOKEN. Le token par entrée est créé lorsque le fournisseur est connecté et ne tourne jamais lors de l'édition.

Formats compris

Twilio form posts (MessageStatus/MessageSid for delivery, Body/From for inbound), Meta WhatsApp Cloud JSON (statuses and messages, including the hub.challenge subscription handshake), and a generic JSON shape: {"type":"delivery","message_id":"...","status":"delivered"} or {"type":"inbound","from":"+234...","body":"..."}.

Effets

Les messages entrants correspondent au contact par numéro de téléphone dans l’espace de travail, atterrissent comme une activité message. received et marquent la conversation comme répondue. Les rapports de livraison indiquent que le message est reçu ou non.

Mode d &apos; échec

Réponses de jeton incorrectes ou manquantes 403 Les charges utiles inconnues sont comptées et ignorées, jamais fatales, de sorte qu'une passerelle mal configurée ne peut pas briser le point final.

Quelles passerelles sont prises en charge?+

Twilio, Vonage, Plivo, MessageBird, Sinch, Infobip, Telnyx, ClickSend, Termii, Africa's Talking, BulkSMS, Textlocal, Meta WhatsApp Cloud, 360dialog, SMSAPI, Gupshup, Kaleyra, D7 Networks, Hubtel et un webhook HTTPS personnalisé pour tout le reste.

Les identifiants sont-ils sécurisés?+

Les informations d'identification sont stockées de manière chiffrée dans les paramètres du connecteur et ne sont jamais renvoyées au navigateur. La modification d'une entrée avec un secret vide conserve celui qui a été stocké.

L'IA peut-elle envoyer des messages?+

Oui, au moyen d’actions enregistrées qui exigent une confirmation et passent par le même contrôle de consentement. L’IA peut aussi lister les fournisseurs connectés pour expliquer ce qui est disponible

CRM

Fidéliser et développer les clients

Chaque compte reçoit un score de risque de déperdition, un score d'intégrité, un pointage d'expansion et un guide recommandé pour réussir.

Cycle de vie
Conseil du cycle de vieUne carte de cycle de vie client (à bord, actif, à risque, renouvellement) avec barres de santé sur chaque carte de compte.Cycle de vieespace de travailEmbarquementAcmesanté 40ACTIFCéréalessanté 88Initechsanté 76À RISQUESoylentsanté 28RENOUVELLEMENTUmbraSe renouvelle en 12jExpansion +8 000 dollars1STAGESDe l'intégration au renouvellement2SCOREDSanté & expansion3PLAYBOOKProchaine étape recommandée
Les clients passent par l'embarquement, actif, à risque et le renouvellement, chacun marqué pour la santé et l'expansion avec un livre de jeu.

Le tableau de bord du cycle de vie

Plan de l'étape

Tableau visuel montrant où se trouve chaque compte: Lead, Prospect, Opportunité, Client, Expansion, Renouvellement, À risque, Churned.

Comptes à risque

Chaque compte affiche le principal facteur (pique de support, inactivité, échec du paiement) et une sauvegarde recommandée.

Possibilités d &apos; expansion

Les comptes qui montrent des signes de volonté d’acheter davantage : forte utilisation, demandes de fonctionnalités, demande de forfaits.

Renouvellements à venir

Comptes avec dates de renouvellement à venir. Triés par niveau de risque et valeur des revenus.

Comment OpsIQ détecte le risque de départ

Le risque de décrochage est calculé à partir de plusieurs signaux fusionnés ensemble:

Signaux de CRM

Santé des transactions, inactivité, pertes récentes, engagement décroissant.

Signaux d’assistance

Nombre de tickets ouverts, pics de volume de ticket, sentiment négatif, escalades.

Engagement du produit

Fréquence de connexion, utilisation des fonctionnalités, visites de pages, appels API.

Signaux de facturation

Échecs de paiement, factures en retard, demandes de rétrogradation, visites de page d'annulation.

Guides pratiques

Sauver le jeu

Pour les comptes à risque : communiquez de façon proactive, répondez aux préoccupations, offrez du soutien et faites passer le problème au niveau supérieur si nécessaire.

Jeu de renouvellement

Pour les prochains renouvellements : confirmer la satisfaction, examiner l’utilisation, présenter la valeur, offrir un incitatif si nécessaire.

Jeu d'expansion

Pour les comptes prêts à croître : présentez des options de mise à niveau, partagez des histoires réussies et démontrez le retour sur investissement.

Jeu d'adoption

Pour les comptes sous-utilisés : offrez une formation, partagez les meilleures pratiques, activez les fonctionnalités qu’ils n’utilisent pas.

Repérer le churn avant qu'il ne se produise

Scénario :
A customer who normally logs in daily has not logged in for 2 weeks, and they opened 3 support tickets this month.
Que faire:

Le tableau du cycle de vie marque ce compte comme "à risque" avec les pilotes: inactivité (14 10 jours depuis la dernière connexion) et le pic de support (3x Le jeu recommandé: appel de sensibilisation proactif pour comprendre ce qui se passe. Y a-t-il un problème avec le produit? Est-ce qu'ils évaluent les concurrents? Une intervention précoce peut sauver le compte.

CRM

Garder vos données propres

L'agent Data Steward détecte et corrige automatiquement les problèmes de qualité des données : doublons, champs manquants, incohérences et enregistrements obsolètes.

Responsable des données
Responsable des donnéesUne liste de problèmes de qualité des données (duplicata, manquant, stale, format), chacun avec une action de correction d'un clic.Responsable des donnéesespace de travailProblèmes de données trouvés par l'agent StewardDupliquer[email protected] and [email protected]FusionnerDisparu12 contacts n'ont pas d'entrepriseEnrichissementObsolète38 Offres intactes pour 90+ joursExamenPrésentationNuméros de téléphone dans les formats 4Réparer tout1CATCHESDupes, lacunes, vieillissement2EXPLAINSPourquoi il a signalé chaque3FIXESSur votre approbation
L'agent Steward garde votre CRM propre, en trouvant des duplicatas, des lacunes, des enregistrements inexistants et des mauvais formats, en fixant sur l'approbation.

Ce qu'il attrape

Contacts en double

Plusieurs dossiers pour la même personne (p. ex. [email protected] and [email protected]). Le steward propose de les fusionner.

Données manquantes

Contacts sans adresse email, offres sans montants, entreprises sans domaines. Suggère de remplir à partir des sources disponibles.

Enregistrements non liés

Offres sans contacts associés, contacts sans entreprises. Propose un lien en fonction du domaine et du contexte de l'email.

Incohérences

Une affaire en phase "Gagné" avec une probabilité de 20%, un contact marqué "Client" sans aucune affaire, une entreprise dont l'industrie n'est pas appariée.

Les mauvaises étapes

Les offres qui se trouvent au même stade depuis trop longtemps ou les contacts dont l’étape du cycle de vie ne correspond pas à leur activité.

Comment utiliser

1
Ouvrir la liste des stewards

Accédez à CRM et recherchez la section Data Steward (ou ouvrez-la depuis l'état de santé du CRM).

2
Approuver les correctifs sécuritaires

Les éléments verts sont sûrs : supprimez les doublons, les données manquantes évidentes. Approuvez-les en bloc.

3
Consultez le reste

Les éléments ambrés ont besoin de votre jugement : doublons possibles avec des différences mineures, changements d’étape proposés, liens entre les entreprises.

Nettoyage des contacts en double

Scénario :
The steward found "John Smith ([email protected])" and "J. Smith ([email protected])": same email, different display names.
Que faire:

Le steward propose de fusionner les deux dossiers, en conservant le dossier avec plus d'activité et en fusionnant les transactions et les activités des autres dossiers. Il examine la proposition, ajuste le nom affiché si nécessaire et approuve l'opération.

CRM

Construire mon CRM

Build My CRM vous permet de décrire votre configuration CRM en anglais clair. OpsIQ génère un plan validé et réversible, qu'il applique à l'approbation.

Construire mon CRM
Construire mon CRMUne description en langage naturel à gauche produisant un plan CRM généré des étapes, champs et segments à droite.Construire mon CRMespace de travailDécrivez votre entrepriseNous sommes une agence de web designVente de retenues mensuelles etProjets ponctuels à petitsbusiness.Construire mon CRMPlan généréÉtapes: Plomb → RétentionTypes de transaction: retenue, projetChamp : valeur mensuelleSegments: PME, agenceSéquence: l'intégrationApprouver & appliquer1DESCRIBEAnglais en ligne2AI PLANSÉtapes, champs, segments3APPROVEAppliquée · sans codage
Décrivez votre entreprise en anglais simple; OpsIQ rédige l'ensemble du CRM (étapes, champs, segments) et l'applique à l'approbation.

Comment ça fonctionne

1
Décrivez ce que vous voulez

Tapez une description en anglais de votre configuration CRM _. Exemple : « Créez un pipeline de renouvellement avec étapes : Prochainement, Contacté, Négociation, Renouvelé, Perdu. Score mène plus haut lorsqu'ils voient les prix deux fois ».

2
Examiner le plan

OpsIQ montre un aperçu de ce qu'il va créer: pipeline, étapes, probabilités d'étape, règles de notation, règle de cycle de vie.

3
Appliquer

Chaque modification est enregistrée sous forme de groupe que vous pouvez annuler en un seul clic, et chaque changement est automatiquement répertorié dans le plan.

4
Retournez si nécessaire

Si quelque chose ne va pas, cliquez sur Annuler pour rétablir l'ensemble du bundle et votre CRM revient à son état précédent.

Ce que vous pouvez construire

Pipelines et étapes

Créez des pipelines nommés avec des étapes personnalisées, des probabilités par défaut et des seuils de pourriture.

Règles de notation

Augmentez les scores des prospects en fonction de leur comportement : « Score plus élevé lorsqu'ils consultent la tarification », « Scores inférieurs lorsqu'il visitent la page Carrières. »

Règles du cycle de vie

Faites progresser automatiquement les étapes du cycle de vie : « Passer à SQL lorsqu’une démo est demandée », « Passer à Client lorsque l’affaire est gagnée ».

Champs personnalisés

Ajouter des champs aux contacts, offres ou entreprises: texte, numéro, date, sélectionner, case à cocher, URL, e-mail.

Liste de contrôle des qualifications

Définir la liste de contrôle MEDDICC ou BANT contre laquelle le coach des affaires évalue.

Mise en place d’un pipeline de renouvellement

Scénario :
You manage SaaS subscriptions and need a pipeline for renewals.
Que faire:

Type: "Créer un pipeline de renouvellement. Étapes: 90 Jours de pluie (10%), 60 Jours de pluie (25%), Contacté (40%), Négociation (60%), renouvelé (100%), Churned (0% Réglez le seuil de pourriture à. 14 days."OpsIQ Une fois le plan généré, vous l'examinez et cliquez sur Appliquer.Le pipeline apparaît immédiatement sur votre page Pipeline.

Que faire si je décris quelque chose qui n’est pas possible?+

Le constructeur ne génère que les actions qu'il sait valider. Si vous demandez quelque chose qui n'est pas dans ses capacités (par exemple, "Integrate with my custom API"), il rejettera la requête et expliquera ce qu'elle peut faire à la place.

Puis-je annuler des modifications?+

Oui, chaque action de Build My CRM est enregistrée sous forme d'un lot réversible. Allez dans l'onglet Santé du CRM > Historique des modifications pour voir tous les lots et annuler ceux que vous souhaitez.

CRM

Configurez votre CRM à votre façon

Configuration manuelle du CRM pour les équipes qui préfèrent cliquer plutôt que de taper Tous les paramètres que Build My CRM peut créer sont également disponibles sous forme de champs de formulaire traditionnels.

Pipelines et étapes

Créez, renommez, réorganisez et supprimez des pipelines et des étapes. Définissez la probabilité de victoire par défaut par étape. Définissez le seuil de pourriture (jours sans activité avant qu'une offre ne soit marquée comme « bloquée »).

Champs personnalisés

Ajoutez des champs aux offres, contacts ou entreprises. Types de champs: texte, nombre, date, sélection (liste déroulante avec options prédéfinies), case à cocher, URL, e-mail. Les champs personnalisés apparaissent sur le profil d'objet et dans les filtres.

Liste de contrôle des qualifications

Définissez la liste de contrôle que le coach d'affaires utilise pour évaluer les affaires. Choisissez MEDDICC, BANT ou un ensemble personnalisé de critères. Chaque élément peut être marqué comme requis ou facultatif.

Règles de l'étape du cycle de vie

Définissez des transitions automatiques d’étape : lorsqu’un contact remplit une condition (consulte les tarifs, soumet un formulaire, effectue un achat), son étape de cycle de vie avance automatiquement.

Règles de lead-scoring

Augmentez ou réduisez les scores des prospects en fonction du comportement. Exemples : "Page de tarification consultée = +15"Livre blanc téléchargé = +10"Page de carrières visitée = -5Le nombre minimum de points peut être défini (par exemple, "doit voir les prix au moins 10 fois"). 2 times").

Vues enregistrées

Créez des combinaisons de filtres et de tris nommés pour les contacts, les offres ou les entreprises. Partagez des vues avec votre équipe Définissez une vue par défaut par type d'objet.

Ajout d'une règle de lead scoring

Scénario :
You want contacts who view your pricing page twice or more to get a higher score.
Que faire:

Accédez à Configuration CRM > Règles de notation des prospects. Cliquez sur Ajouter une règle. Set: Event = "pageview", URL contains = "/pricing", Nombre minimum =2, Boost de score = +20 La prochaine fois que le scorer s'exécutera, les contacts correspondant à cette règle obtiendront +20 à leur score de tête.

CRM

CRM Bilan de santé

La santé du CRM est une page d'autodiagnostic qui vérifie que votre CRM est configuré correctement et fonctionne sans problème.

Vérification de santé
CRM Contrôle de santéUn score de santé à 92 à côté d'une liste de contrôles de configuration réussie et avertisseur.CRM Contrôle de santéespace de travail92SAINEÉtapes du pipeline configuréesConnecteur lié & importationAgents d'IA activés!Aucune séquence de suivi active!12 contacts manquants entreprise1VÉRIFICATIONVérifie votre configuration2FLAGSCe qui manque3SCOREUn seul numéro global
Un audit CRM d’une page : un score de santé global plus une liste de contrôle des éléments correctement configurés et de ceux qui nécessitent encore une attention particulière.

Ce qui est vérifié

Schéma

Si une migration a été manquée, CRM Health l'indiquera en la marquant dans le champ correspondant.

Agents d &apos; AI

Tous les agents CRM (Capture, Data Steward, Deal Intelligence, etc.) sont enregistrés et en bonne santé Vert = en cours d’exécution, jaune = nécessite une attention particulière, rouge = erreur.

Itinéraires

Les routes CRM API et les points de terminaison AJAX sont enregistrés et appelables.

Actions d &apos; AI

Si des actions sont manquantes, CRM Health se répare automatiquement en les enregistrant à nouveau. CRM Health rectifie les erreurs de gestion du système et des processus.

Comptes de données en direct

Total des contacts, entreprises, affaires, tâches, activités et événements. Utile pour vérifier les importations et la capture de données en cours.

Après vérification de l'installation

Après la première configuration de CRM, ouvrez l'état du CRM et vérifiez que toutes les vérifications sont en vert. Si certaines sont orange ou rouge, cliquez sur l'élément pour obtenir une explication diagnostique et des suggestions de correctif.

À quelle fréquence dois-je vérifier l'état du CRM?+

La fonctionnalité CRM Health corrige automatiquement de nombreux problèmes (comme les enregistrements d'actions manquantes) en ouvrant simplement la page. CRM Health est une fonctionnalisation qui permet aux utilisateurs de gérer leurs actions et leur état de santé.

CRM

Connexions CRM pour les développeurs

Le CRM expose un REST public complet API et des webhooks sortants afin qu'il s'adapte à n'importe quelle pile sans exportations manuelles.

API points de fin

Authentification

API clé (Autorisation: porteur opq_...) avec le champ d'application crm.read ou crm écriture. /api/v1.php avec action et site_key.

Personnes à contacter

crm. contacts. list (recherche + filtre), crm, contact. detail (par ID), crme contact. upsert (créer ou mettre à jour), crmme contact. save.

Offres

crm. deals. list, crm. deal. detail, crme. deales. create, crmme. deaux. update, crmi. deels. advance (tous via la couche de confiance).

Activités

crm. activities. list (cadre temporel d'un contact/d'une offre), crm, activites. record (enregistrement d'une nouvelle activité).

Événements

crm. events. list (flux de modification durable avec curseur since_id), crm. event. catalog (liste des types d'événement disponibles).

Créer une offre via API
POST /api/v1.php
Authorization: Bearer opq_live_xxx
Content-Type: application/json

{
  "action": "crm.deals.create",
  "site_key": "<workspace>",
  "title": "Acme renewal",
  "amount": 12000,
  "pipeline_id": 1,
  "stage_id": 2
}

Événements de Webhook

crm.contact.created

Déclenchée lorsqu'un nouveau contact est ajouté au CRM.

crm. deal. stage_changed

Déclenchée lorsqu'une transaction passe à une autre étape.

crm.deal.won

Déclenché quand une transaction est clôturée comme gagnée.

crm.deal.lost

Déclenchée lorsqu'une transaction est clôturée comme perdue.

crm.task.created

Déclenchée lorsqu'une nouvelle tâche est créée (manuelle ou générée par l'IA).

crm.outreach.reply

Déclenché lorsqu'un prospect répond à un e-mail de séquence.

crm. agent. proposal_created

Déclenché lorsqu'un agent d'IA crée une proposition pour la file d'attente d'approbation.

Tous les événements de webhook sontHMAC-signée et réétudiée sur échec.URLdans Paramètres > Webhooks, ou sondagecrm.events.list avec depuis_id pour un flux de changement durable.

Synchronisation des contacts CRM avec Google Sheets

Scénario :
You want every new CRM contact to appear in a Google Sheet for your marketing team.
Que faire:

Configurer un abonné webhook pourcrm.contact.created. Pointez-le sur une application web Google Apps Script ou sur un webhook ZapierURL. La charge utile comprend le nom du contact, l'email, la compagnie, le score de tête et la source. Votre script ajoute une ligne à la feuille Google pour chaque nouveau contact.

CRM

Segments

Les segments enregistrent des filtres de contact réutilisables pour les vues CRM, la sensibilisation, les promotions et d'autres outils adaptés à l'audience.

Écran de produit
SegmentsL'éditeur de segments combine les conditions, affiche le nombre de correspondances en direct et permet à l'opérateur de choisir un filtre en direct ou une image épinglée.Segmentsespace de travailMODEEn directLOGICTOUSMATCHES1,248VUE DE L'ESPACE DE TRAVAIL EN DIRECTÉtape du client= Client actifRègle 10Dernière activitédans les 30 joursRègle 10PaysRoyaume-UniRègle 10Intention élevéeNotez au moins 70Règle 101CHOOSE MODELive ou snapshot2ADD RULESTOUS ou N'IMPORTE QUEL3REUSECampagnes et CRM
L'éditeur de segments combine les conditions, affiche le nombre de correspondances en direct et permet à l'opérateur de choisir un filtre en direct ou une image épinglée.

A Live segment Recalcule à partir des données courantes chaque fois qu'il est utilisé. A Pined snapshot fige la liste de membres actuelle, ce qui est utile lorsqu'une audience d'approche ne doit pas changer après l'approbation.

Choisir TOUS Quand chaque condition doit correspondre ou N'IMPORTE QUEL Les segments système peuvent être visibles, mais protégés contre toute modification ordinaire. Les segments de données peuvent être modifiés par l'utilisateur ou les utilisateurs.

CRM

Note du chef de file

Les règles de notation des prospects transforment les signaux comportementaux et profilés en un score cohérent que les ventes et l'automatisation peuvent utiliser.

Écran de produit
Note du chef de fileLe score des leads montre les règles actives, la fenêtre mobile et le changement de score positif ou négatif que chaque règle applique.Note du chef de fileespace de travailRÈGLES12SCORED8,412HOT LEADS286VUE DE L'ESPACE DE TRAVAIL EN DIRECTActivité de tarification3+ visites en 14 jours+20Achat de mot-cléContient la migration ou l'entreprise+15Risque de soutienÉvénement de plainte dans 30 jours-10Source de confianceRéférence de partenaire+121DESCRIBE RULEUtilisez l'anglais clair2REVIEW FIELDSSignal, fenêtre, points3RESCOREAppliquer à l'espace de travail
Le score des leads montre les règles actives, la fenêtre mobile et le changement de score positif ou négatif que chaque règle applique.

Chaque règle doit toujours être vérifiée avant son activation : confirmer l’activité ou le mot-clé, le nombre minimum de mots, la fenêtre mobile et le changement du score.

Les règles positives et négatives peuvent coexister. Utiliser Espace de travail Rescore Les scores peuvent être utilisés pour alimenter les segments, le routage, la prospection et les conditions de flux de travail.

CRM

Tableau de bord des ventes

Le classement compare les représentants en utilisant l'atteinte du quota, le revenu gagné, la commission et le pipeline ouvert pour le mois sélectionné.

Écran de produit
Tableau de bord des ventesLe classement mensuel classe les représentants commerciaux tout en gardant visibles le chiffre d’affaires gagné, la commission et le pipeline ouvert.Tableau de bord des ventesespace de travailPERIODJuilletTEAM QUOTA82%GAGNÉ184 000 livresVUE DE L'ESPACE DE TRAVAIL EN DIRECTAmina104% quota · 62k £ gagné1reBen88% quota · 51k £ gagné2eC'est vrai.76% quota · 43k £ gagné3ePipeline ouvert312k £ à travers l'équipeExamen1CHOOSE MONTHComparer une période2CHECK QUOTARéalisation par représentant3COACHUtiliser le contexte du pipeline
Le classement mensuel classe les représentants commerciaux tout en gardant visibles le chiffre d’affaires gagné, la commission et le pipeline ouvert.

L’atteinte du quota n’est significative que lorsque chaque représentant dispose d’un quota actuel et que les offres ont le propriétaire, le montant, la devise et l’état de clôture corrects. Utilisez le tableau de bord pour l’encadrement et la reconnaissance, pas comme seule mesure de qualité. Associez-le à la santé des offres, à l’activité et à la précision des prévisions.

CRM

Approbations de transactions

Les approbations des transactions nécessitent l’approbation du gestionnaire avant que les transactions de grande valeur puissent être marquées comme gagnées.

Écran de produit
Approbations de transactionsLa stratégie d'approbation définit deux seuils de valeur et la file d'attente affiche les décisions en attente, approuvées et rejetées.Approbations de transactionsespace de travailPOLICYActivéWAITING6OLDEST3hVUE DE L'ESPACE DE TRAVAIL EN DIRECTNiveau 1Offres de £10,000GestionnaireNiveau 2Affaires à partir de 50 000 £AînésRenouvellement de l &apos; entreprise£72,000 · demandé par BenEn attenteProjet de migration£18,500 · demandé par RitaApprouvé1SET THRESHOLDS0 désactive un niveau2REQUESTLe représentant soumet l'offre3DÉCIDEApprouver ou rejeter
La stratégie d'approbation définit deux seuils de valeur et la file d'attente affiche les décisions en attente, approuvées et rejetées.

Activer la stratégie et définir le niveau.1and Level 2 Un seuil de 10 %. 0 Lorsqu'un non-manager tente de remporter une transaction à un seuil ou au-dessus du seuil, OpsIQ crée une demande d'approbation au lieu de changer silencieusement l'étape.

Chaque décision doit conserver le demandeur, l'approbateur, la date et la raison de la décision pour permettre son audit.

CRM

Règles du cycle de vie

Les règles de cycle de vie déplacent automatiquement les contacts entre les étapes lorsque leurs données actuelles correspondent à une condition enregistrée.

Écran de produit
Règles du cycle de vieLes règles de cycle de vie sont évaluées par priorité ; la première règle correspondante modifie l'étape du contact.Règles du cycle de vieespace de travailACTIF7RUNSNuitPRIORITYLe plus élevé d'abordVUE DE L'ESPACE DE TRAVAIL EN DIRECTLead → Qualifié(e)score ≥ 60 et activité récentePriorité 100Qualifié → clientL'événement existePriorité 90Client → À risqueAucune activité pour les 60 joursPriorité 70À risque → ClientNouvel achat ou réponsePriorité 601PICK STAGESDe et vers2DEFINE FILTERStyle de segment JSON3ORDER RULESPremier match gagné
Les règles de cycle de vie sont évaluées par priorité ; la première règle correspondante modifie l'étape du contact.

Chaque règle a une étape source, une étapes de destination, un indicateur actif, une priorité et un filtre de style segment. La tâche du cycle de vie planifiée évalue les priorités supérieures en premier et s'arrête après la première correspondance pour un contact.

Les règles doivent être mutuellement compréhensibles. Évitez d'avoir deux règles actives qui peuvent déplacer le même contact dans des directions opposées au cours de la même exécution, testez le filtre sur un segment avant de l'activer.

CRM

Flux d'activité CRM

Le flux d'activité de l'espace de travail combine les événements clients et opérationnels afin que les équipes puissent enquêter sur ce qui s'est passé sans avoir à ouvrir chaque module.

Écran de produit
Activité de CRMLe flux d'activités intercale les événements de chat, ticket, e-mail, webhook, conversion et anomalie avec des filtres et une pagination.Activité de CRMespace de travailÉVÉNEMENTS2,804CUSTOMERS1,126ANOMALIES14VUE DE L'ESPACE DE TRAVAIL EN DIRECTChat résolu[email protected] AIMaintenantTicket a réponduT-1048 · Facturation et paiement4 mÉvénement entrantsubscription.upgraded12 millionsConversionNuméro de commande 7788 · £14919 millions1FILTERÉvénement et client2OPEN CONTEXTAller au dossier3PAGE RESULTSGarder les enquêtes circonscrites
Le flux d'activités intercale les événements de chat, ticket, e-mail, webhook, conversion et anomalie avec des filtres et une pagination.

Filtrez par type d’événement, date, contact ou état du client (y compris les clients payants). Le flux est un modèle en lecture de l’activité enregistrée; il ne remplace pas le ticket source, la conversation, l’affaire ou l’enregistrement connecteur.

CRM

Flux de travail

Les workflows répondent à un événement et exécutent une série ordonnée d'actions, y compris des étapes retardées reprises par cron.

Écran de produit
Flux de travailUne exécution de workflow affiche son déclencheur, les actions terminées, le temps d’attente et l’étape suivante.Flux de travailespace de travailACTIF9RUNNING42FERMÉS1VUE DE L'ESPACE DE TRAVAIL EN DIRECTDéclencheurcontact.createdCommencerÉtape 1Envoyer un email de bienvenueFaitDélaiAttendez 2 joursEn attenteÉtape 2Créer une tâche de venteSuivant1CHOOSE TRIGGERL'événement commence la course2ORDER STEPSActions et retards3MONITORReprendre via cron
Une exécution de workflow affiche son déclencheur, les actions terminées, le temps d’attente et l’étape suivante.

Créez un workflow en choisissant le déclencheur, en ajoutant les étapes dans l'ordre et en l'activant. Les retards sont stockés, pas retenus par une requête de navigateur. Le cron unifié reprend les exécutions du workflow attendues.

Les modèles de démarrage intégrés incluent l'accueil après l'inscription, le remerciement post-achat et la confirmation de démonstration. Clonez un modèle, remplacez ses destinataires/son contenu, puis testez avec un enregistrement contrôlé avant une activation générale.

Une nouvelle tentative ne doit pas envoyer de demandes en double pour le déplacement d'argent ou créer des enregistrements en doublon.

Appui

Billets

Les billets sont votre canal de soutien officiel. Ils ont des ministères, des priorités,SLAles cibles, les pièces jointes, les notes internes et le threading complet de la conversation.OpsIQadministrateur, formulaire de ticket/embed, ingestion d'email, escalade du chat, connecteur, ouAPI.

Billets
Détail du billetUn ticket avec une barre latérale méta (priorité, département, SLA, statut), le fil de conversation et les actions d’ébauche et de remboursement de l’IA.Billetespace de travailC-12345PrioritéÉlevéDépartementFacturationSLA3h 12m à gaucheStatutOuvertJ'ai été facturé deux fois pour monSouscription le 3de juin.IAConfirmé le duplicatafrais, traitement des remboursements.projet de réponse AIRemboursement1THREADEDConversation complète + notes2SLA & ROUTINGPriorité, département, minuteries3AI DRAFTRéponse écrite pour vous
Chaque billet porte sa priorité, département, minuterie SLA et le fil complet, et l'IA peut rédiger la réponse pour vous.

Comment un ticket s'écoule

1
Le billet arrive

Un client envoie un message par e-mail, une escalade de chat, l'intégration d'un ticket ou l'administrateur crée un ticket. Le ticket reçoit un ID unique (par exemple, T-12345).

2
Triage

L’IA lit le sujet et le corps de l’e-mail, attribue la priorité (faible/normal/élevé/urgent), suggère un service et détecte les sentiments.

3
Répondre

Un agent ouvre le ticket, lit le contexte (profil du client, données de la plateforme provenant des connecteurs, tickets précédents) et rédige une réponse que l’IA peut élaborer et qu’il modifie avant d’envoyer.

4
Fermer

Lorsque le problème est résolu, l’agent ferme le ticket et en informe le client. Si ce dernier répond après la clôture du ticket, celui-ci se rouvre automatiquement.

Actions par ticket

Changer de département

Déplacer le ticket vers un autre service (par exemple, de Général à Facturation). Utile lorsque l'acheminement initial était incorrect.

Affecter à un agent

L'agent désigné voit le ticket dans sa vue « Mes tickets », puis il peut afficher les informations de contact et d'assistance.

Ajouter une note interne

Écrivez une note visible uniquement par le personnel. Utilisez-la pour : les résultats de l'enquête, les raisons du remboursement, le contexte technique, les engagements antérieurs.

Fusionner les tickets

Combinez les tickets en double provenant du même client. L’objet du ticket fusionné obtient une balise [MERGED] (Fusionné). Tous les messages des deux tickets sont conservés dans le ticket restant.

Réponse en conserve

Insérez un modèle de réponse préécrit.{{customer_name}}et{{ticket_id}}sont automatiquement remplacés.

réécriture AI

Laissez l'IA améliorer votre brouillon de réponse : ajustez le ton, raccourcissez/allongez, corrigez la grammaire ou traduisez. Vous révisez le résultat avant d'envoyer.

Changer la priorité

Définissez la priorité sur Faible, Normale, Élevée ou Urgente. La priorité affecte les minuteries SLA et l'ordre de tri.

Changer de statut

Définir comme Ouvert, En attente, Attente du client, Résolu ou Fermé.

Exemple pratique: gérer un client mécontent

E-mail du client : « Mon abonnement m'a été facturé deux fois »

Scénario :
Subject: Double charge on my account
Body: Hi, I just checked my bank statement and I see two charges of $49.99 from your company dated June 3. I only have one subscription. Can you please refund the duplicate charge? This is really frustrating.
Que faire:

Step 1: AI triage assigns Priority: High, Department: Billing, Sentiment: Frustrated. Step 2: Agent opens the ticket. The connector panel shows the customer's Stripe charges, confirmed two charges on June 3. Step 3: Agent adds an internal note: "Confirmed duplicate charge in Stripe. Transaction IDs: ch_xxx and ch_yyy." Step 4: Agent drafts a reply: "Hi [Name], I can see the duplicate charge and I'm processing a refund for the second transaction right now. You should see $49.99 back in your account within 3-5 business days. I'm sorry for the inconvenience." Step 5: Agent triggers the refund action through the Stripe connector (with confirmation). Step 6: Agent sends the reply and sets status to Resolved.

Départements

Créez des départements dans Paramètres > Tickets > Départements. Département commun : Général, Facturation, Technique, Ventes, Abus, Onboarding Chaque service peut avoir différentes règles de réponse automatique, connaissances en IA et affectations d'équipe.

Réponses en conserve

Créez des modèles de réponse réutilisables dans Paramètres > Tickets > Réponse prédéfinie.

Exemple de modèle de réponse conservée
Hi {{customer_name}},

Thanks for reaching out. I checked the details and here is what I found:

{{response_details}}

If you need anything else, just reply to this ticket and I will be happy to help.

Best regards,
{{agent_name}}
{{department_signature}}

Fusion des billets

Lorsqu'un client envoie la même question plusieurs fois (par e-mail et chat, ou deux e-mailings distincts), vous pouvez fusionner les doublons. Accédez au ticket, cliquez sur Fusionner, sélectionnez l'autre ticket à fusionners. Le ticket restant reçoit tous les messages des deux tickets. L'objet du ticket fusionné reçoivent une balise [MERGED] pour indiquer qu'il a été combiné.

Priorité et SLA

Bas

Questions non urgentes, demandes de fonctionnalités, commentaires généraux. Cible première réponse: 24 heures.

Normal

Questions standard de support. Cible première réponse: 8 heures.

Élevé

Impact sur l'activité du client. Cible première réponse: 4 heures.

Urgent

Service en panne, incident de sécurité, perte de données, erreur de facturation. Cible première réponse: 1 heures.

Les minuteries SLA démarrent lorsque le ticket est créé et s'arrêtent lorsque l'état est « En attente du client ». Si la cible SLA n'est pas atteinte, le ticket sera mis en surbrillance et éventuellement transféré à un niveau supérieur.

Les clients peuvent-ils voir les notes internes?+

Les notes internes sont strictement réservées au personnel. Elles n’apparaissent pas dans le portail de tickets client, les notifications par e-mail ou toute autre surface face aux clients.

Que se passe-t-il lorsqu'un ticket fermé reçoit une réponse?+

Le ticket s’ouvre automatiquement et retourne dans la file d’attente active, l’équipe étant informée de la nouvelle réponse.

Puis-je verrouiller un ticket pour empêcher d'autres réponses?+

Oui. Utilisez l'option Verrouiller le fil pour empêcher à la fois le client et l'IA d'ajouter de nouvelles réponses. Utile pour les litiges résolus ou les enquêtes closes.

Appui

Service Studio: SLA, flux d'état et qualité

La salle de contrôle pour le comportement de votre opération d'assistance: les politiques SLA avec des échelles d'escalade, les calendriers des heures ouvrables, un flux d'état appliqué, les paramètres CSAT et les commutateurs de fonctionnalité d'entreprise. Ouvrez-le à partir de la page Tickets (bouton Service Studio dans la barre des opérations).

Politiques de SLA

Chaque nouveau ticket reçoit une première réponse et un délai de résolution à partir de la politique active la plus spécifique: département + priorité bat le département, bat la priorité, bat le délai par défaut.

Échelles d &apos; escalade

Instead of one breach action, a policy can define up to six steps: for example warn the assignee at 75% of the window, alert managers at 100%, reassign to a named agent at 150%. Each step fires exactly once per ticket.

Heures d'ouverture et calendriers

Avec les heures de bureau, les horloges SLA ne brûlent que pendant les heures ouvrables. Un ticket ouvert le vendredi soir n'est donc pas violé le samedi. Des calendriers nommés (fuseau horaire, jours, heures, jours fériés) peuvent être associés à des politiques individuelles pour les équipes dans différentes régions.

Flux de statut

Une matrice de départ/arrivée qui restreint les modifications d’état que peuvent effectuer les administrateurs, avec un paramètre prédéfini de style Zendesk. L’automatisation, les e-mails entrants et les réponses aux tickets émanant des clients sont toujours exemptés, donc une matrice stricte ne peut jamais engorger le pipeline.

Agréments

Les agents demandent l’approbation d’un ticket (remboursements au-delà d’une limite, exceptions aux règles). Un approbateur nommé ou un administrateur complet décide avec une note ; les requérants ne peuvent jamais approuver leur propre demande.

Relations de tickets

Liez les tickets en tant que liés, dupliqués, parents/enfants ou bloqués; divisez les réponses vers un nouveau ticket lié (l'inverse de la fusion, sans envoyer d'e-mail au client); suivez les tickets pour des notifications dans l'application et, éventuellement, CC les adresses e-mail des abonnés sur les réponset sortantes.

Boîte de réception en direct et collisions

Avec la boîte de réception en temps réel activée, les nouveaux tickets et réponses apparaissent pour les agents en quelques secondes via le flux de notification existant. Sur un ticket, les agents voient qui d’autre est en train de consulter le ticket et reçoivent une bannière d’avertissement lorsqu’un collègue d’équipe est déjà en train d’y répondre.

Routage conscient de l'IA

Les règles de routage peuvent correspondre aux signaux de triage d'IA: priorité, catégorie, sentiment et risque d'escalade, ainsi qu'aux valeurs des champs personnalisés saisies dans votre formulaire de demande du portail.

💡
L’activation d’un commutateur dans Service Studio → Qualité et automatisation est l’option de participation ; en laissant ces options désactivées, le comportement reste identique à celui d’avant la mise à niveau.
Pourquoi un client peut-il rouvrir un ticket fermé quand ma matrice interdit la fermeture → ?+

Les réponses émanant du client, les réponses par e-mail et l'automatisation sont délibérément exclues afin qu'une politique stricte ne puisse jamais bloquer les clients ou interrompre le pipeline.

Les échelles SLA remplacent-elles l'ancienne action en cas de violation?+

Non, les stratégies enregistrées avec une action de violation unique continuent à fonctionner sans modification. Une échelle remplace l'action unique uniquement sur les stratégie où vous définissez des étapes.

Appui

Réponse automatique et escalade des tickets

La réponse automatique permet à l’IA de répondre aux nouveaux tickets automatiquement. L’escalade déplace les tickets vers un autre service lorsque l’AI détecte des besoins spécialisés, et ces deux fonctionnalités fonctionnent aussi bien pour les tickets natifs que pour ceux créés par e-mail.

Auto-réponse
Réponse automatique aux ticketsUn flux: nouveau ticket, un délai de deux minutes, réponse IA à partir des connaissances et du contexte, puis envoyé ou enregistré en tant que brouillon.Auto-réponseespace de travailQuand un nouveau billet arriveNouveau ticketToute sourceDélai2 minréponses AIKB + contexteEnvoyéou projetSi un humain répond pendant le délai, la réponse automatique est annulée et l’intention peut être transmise à un autre service.1DELAYLes humains ont la première chance2AI REPLIESDe la KB + contexte3OR ESCALATERoute par intention
Les nouveaux billets sont courts (pour que les humains puissent y accéder), puis une réponse d'IA de votre connaissance, envoyée ou en attente comme un brouillon.

Comment fonctionne la réponse automatique

1
Le billet apparaît

Un nouveau ticket est créé à partir de n'importe quelle source (email, chat, portail, API).

2
Programme de réponse

OpsIQ Attend le délai configuré (par défaut: ) 2 Cela donne aux agents humains la possibilité de répondre en premier.

3
La première réponse gagne

Si un agent humain répond pendant le délai, la réponse automatique est annulée, sinon l’IA génère une réponse.

4
Générer et envoyer

L’IA lit le ticket, vérifie la base de connaissances, le contexte du connecteur et l’historique client, puis rédige une réponse qui est envoyée (ou mise en file d’attente sous forme de brouillon pour examen, selon les paramètres).

Comment fonctionne l'escalade

1
Configurer les départements

Définissez les départements pouvant recevoir des escalades (par exemple, la facturation peut être échelonnée à partir de Général, le service technique peut être escaladé à partir du Général).

2
Classer le ticket

Avant de répondre automatiquement, l’IA classe l’intention du ticket : facturation, technique, remboursement, abus, etc.

3
Déplacez-vous si nécessaire

Si l’intention du ticket correspond à un service d’escalade, le ticket est déplacé et une note interne explique pourquoi.

4
Générer dans une nouvelle voix

La réponse est générée en utilisant les connaissances du service de destination et la formation à l'IA.

Référence des paramètres

Auto-réponse activée

Activez-le pour activer la réponse automatique de l'IA pour les tickets.

Départements autorisés

Commencez par les départements à faible risque (Général, Ventes) avant d'activer la facturation.

Délai

Le temps d'attente avant que l'IA ne réponde (en secondes). Par défaut: 120 20 secondes (2Réglez à 10 minutes).0Pour des réponses instantanées.

Calendrier des retards

Définissez éventuellement différents délais pour les heures ouvrables par rapport aux horaires d'après-midi.

Arrêtez sur la réponse de l'administrateur

Si un agent humain répond en premier, annuler la réponse automatique. Par défaut : activé.

Escalation activée

Activez le routage automatique des départements en fonction de l'intention du ticket.

Départements d &apos; escalade

Les départements vers lesquels les tickets peuvent être transférés.

État de l &apos; escalade

Statut à appliquer lors d’une escalade (par exemple Ouvert, En attente).

Note d &apos; escalade

Indique s'il faut ajouter une note interne expliquant la raison de l'escalade.

Tickets créés par e-mail

Les tickets créés à partir d’un e-mail (via le sondage de boîte aux lettres ou la distribution par pipeline MX) suivent les mêmes règles de réponse automatique et d’escalade. La réponse AI est envoyée sous forme d’e-mail au client, tandis que les brouillons sont placés dans la file d’attente des brouillont pour examen si elle est configurée.

L’IA répondra-t-elle automatiquement aux questions de facturation?+

Nous vous recommandons de commencer par désactiver la réponse automatique pour la facturation et de l'activer uniquement après avoir formé l'IA avec des connaissances approfondies en matière de facturation, puis d'effectuer des tests complets.

Et si l’IA donne une mauvaise réponse ?+

Si un client répond que la réponse était incorrecte, un agent humain doit intervenir. Revisez l'historique de l'IA pour comprendre pourquoi l'AI a donné la mauvaise réponse, puis mettez à jour la base de connaissances ou la formation de l’IA pour éviter qu’il ne se reproduise.

Puis-je vérifier les réponses automatiques avant qu'elles ne soient envoyées?+

Oui. Définissez le mode de remise sur « Brouillons » au lieu de « Envoi automatique ». Les brouillons des réponses automatiques apparaîtront dans la file d'attente Brouills pour examen humain avant l'envoi.

Appui

Intégration du portail des billets

Le portail de tickets intégré vous permet d'ajouter une interface de gestion de ticket à n'importe quel site Web. Les clients peuvent voir leurs tickets, en créer de nouveaux et répondre, le tout sans entrer dans l'administrateur OpsIQ.

Comment ça fonctionne
Intégration du portail des billetsUn portail de support intégré dans un site Web montrant à un client ses propres tickets et un bouton nouveau ticket.yoursite.com/supportCentre de soutienNouveau ticketVos billets de train#1042 · Question sur le remboursementOuvert#1038 · Aide à la configurationRésolu#1031 · Copie de la factureEn attente1EMBEDAjouter à n'importe quel site2SELF-SERVELes clients voient leurs billets3NO LOGINIdentité traitée en toute sécurité
Intégration du portail des billets

Trois saveurs embed

Intégration en ligne

Le portail prend la largeur complète de son conteneur et est affiché dans une div sur votre page.

Widget flottant

Affiche un bouton flottant qui ouvre le portail de tickets dans un panneau, similaire à un widget de chat.

Authentifié

Nécessite un jeton d’identité signé. Les clients ne voient que leurs propres tickets.

Installation

Extrait d'intégration du ticket
<script src="https://your-opsiq-domain.com/widget.php"
  data-site-key="site_abc123"
  data-mode="tickets"
  data-identity-token="SERVER_GENERATED_TOKEN"
  async></script>

Génération de jetons d'identité

Pour le mode authentifié, votre serveur doit générer un jeton d'identité signé qui indique à OpsIQ l'identités du client afin qu'il ne voit que ses propres tickets.

PHP · générer un jeton d'identité
<?php
// Generate identity token (PHP)
$site_secret = "opsiq_whsec_your_secret";
$payload = json_encode([
    "site_key" => "site_abc123",
    "customer" => [
        "id" => "cust_1001",
        "email" => "[email protected]",
        "name" => "Ada Lovelace",
    ],
    "iat" => time(),
    "exp" => time() + 900, // 15 minutes
]);
$token = base64_encode($payload) . "." . hash_hmac("sha256", $payload, $site_secret);
// Pass $token to the frontend
WHMCS crochet · jeton d'identité
// WHMCS hook — auto-generate identity token
add_hook("ClientAreaPage", 1, function($vars) {
    if (!isset($vars["loggedinuser"])) return;
    $payload = json_encode([
        "site_key" => "site_abc123",
        "customer" => [
            "id" => $vars["loggedinuser"]["id"],
            "email" => $vars["loggedinuser"]["email"],
            "name" => $vars["loggedinuser"]["firstname"]." ".$vars["loggedinuser"]["lastname"],
        ],
        "iat" => time(),
        "exp" => time() + 900,
    ]);
    $token = base64_encode($payload).".".hash_hmac("sha256", $payload, "opsiq_whsec_xxx");
    // Inject into page
});
Node. js, générer un jeton d'identité
// Node.js / Express — generate identity token
const crypto = require("crypto");

function generateOpsIQToken(customer) {
    const payload = JSON.stringify({
        site_key: "site_abc123",
        customer: {
            id: customer.id,
            email: customer.email,
            name: customer.name,
        },
        iat: Math.floor(Date.now() / 1000),
        exp: Math.floor(Date.now() / 1000) + 900,
    });
    const sig = crypto.createHmac("sha256", "opsiq_whsec_xxx")
        .update(payload).digest("hex");
    return Buffer.from(payload).toString("base64") + "." + sig;
}

Caractéristiques du widget

Liste des billets

Liste consultable et filtrable par statut. Une mise en évidence « En attente de votre réponse » signale les tickets auxquels l’équipe a déjà répondu.

Conversation en fil

Vue complète de la conversation avec texte enrichi, pièces jointes et horodatages.

brouillon d'enregistrement automatique

Les brouillons de réponse du client sont automatiquement enregistrés afin qu'ils ne perdent pas leur travail s'ils se déplacent.

Sondage en direct

Le widget sonde pour de nouvelles réponses toutes les ~12 secondes.

Résoudre / rouvrir

Les clients peuvent résoudre ou rouvrir leurs propres tickets en un seul clic.

Les notes internes du personnel ne sont JAMAIS affichées aux clients dans l'intégration de ticket, ce qui constitue une limite de sécurité stricte.
Appui

Boîte de réception du chat

La boîte de réception du chat est l’endroit où votre équipe gère les conversations en direct avec vos clients, et affiche les discussions actives, les conversationes assignées, les discussiones gérées par l’IA et l’historique archivé.

Boîte de réception du chat
Boîte de réception du chatUne boîte de réception du chat d’agent à trois volets: la liste des conversations, la conversation en direct avec une puce brouillon IA et un panneau contextuel visiteur / CRM.Boîte de réception du chatespace de travailJD- Oui.Où est ma commandePaysMensahQuestion de facturationRTC'est vrai.AI traitéOù est ma commande ?Expédié aujourd'hui · UPSProjet d ' AI prêtRépondre à…VISITEURJane DoeÉtats-Unis · Chrome3 commandes passéesValeur vie client 480 $CRMÉtape: Le client1UNIFIEDChaque live chat2CONTEXTPanneau Visiteur + CRM3AI ASSISTDraft & réécriture
Une boîte de réception pour chaque chat en direct, liste de conversation, le thread avec l'IA brouillon sur tap, et le contexte complet visiteur + CRM.

Gestion des conversations

Les chats actifs

Point vert = le client est en train de taper ou a été récemment actif.

Géré par IA

Vous pouvez prendre la relève à tout moment en cliquant sur « Joindre » (Join) et vous connecter au chat.

Assigné à moi

Conversations qui vous sont spécifiquement assignées.

En attente

Conversations où le client attend une réponse.

Archives

Conversations terminées. Recherchable par mot-clé, date et client.

Transfert de l’IA à l’humain

Lorsque vous prenez en charge une conversation de l'IA, suivez ces trois règles:

1
Saluer personnellement

Présentez-vous par votre nom. « Bonjour, je suis Sarah de l'équipe d'assistance »

2
Contexte de référence

Montrez que vous avez lu la conversation. « Je vois que vous m'avez demandé l'état de votre commande »

3
Définir les attentes

Dites au client ce qui va suivre. « Je regarde cela tout de suite et je reviens vers vous d’ici quelques minutes. »

Activer/désactiver l'IA par conversation

Utilisez le bouton d’IA en haut de chaque conversation. Lorsque l’IA est activée, elle génère des réponses. Lorsqu’elle est désactivée, seuls les agents humains peuvent répondre. L’IA se souvient du contexte de la conversation même lorsqu’elle a été désactive et réactivée.

Mode absent / hors heures

En dehors des heures d'ouverture, l'IA peut: (1) Continuer à répondre aux clients, (2) Afficher un message « absent » et créer un ticket pour le suivi, ou (3) Désactiver complètement le chat et afficher le formulaire de ticket Choisissez le comportement qui correspond à votre modèle d'assistance.

Gérer des conversations difficiles

1
Restez calme.

Ne pas correspondre à l'intensité émotionnelle du client. Reconnaître sa frustration sans être sur la défensive.

2
Recueillir des faits

Avant de répondre, recueillez les informations pertinentes : détails de la commande, statut du compte, tickets précédents.

3
Escalate tôt

Si la situation implique des remboursements, des menaces juridiques, des abus ou de la sécurité, faites-en part à un membre supérieur de l’équipe plutôt que d’essayer de gérer le problème seul.

Puis-je avoir un chat d'équipe (agent à agent)?+

Oui, vous pouvez utiliser des notes internes dans une conversation pour communiquer avec d'autres agents. Ces notes ne sont jamais visibles par le client.

Que se passe-t-il lorsque je ferme un chat?+

Si le client envoie un nouveau message plus tard, une nouvelle conversation est créée et les messages sont déplacés vers l'archive.

Appui

Chaînes de messagerie

Connectez WhatsApp, Facebook Messenger, Instagram DM, Telegram et LINE afin que les messages que les clients vous envoient déjà arrivent dans la même boîte de réception que votre chat site, répondu par le même assistant AI.

Chaque canal se comporte de la même manière une fois connecté : un message client devient une conversation dans la boîte de réception Chat, votre assistante AI répond en utilisant les mêmes connaissances et instructions que votre chat site web, et tout agent peut prendre le relais.

À quoi ressemble la connexion

Facebook Messenger & Instagram

Un clic. Ouvrez les connecteurs → Facebook Messenger & Instagram DM, cliquez sur Connectez-vous, connectez-vous avec le compte Facebook qui gère votre page, et choisissez la page. Instagram vient avec elle lorsque votre page a un compte professionnel Instagram lié.

WhatsApp

Un clic où votre fournisseur l'offre : ouvrez le connecteur de Hub de Messagerie et utilisez Connect WhatsApp, puis suivez la connexion guidée de Meta pour récupérer ou créer votre numéro d'entreprise Whatsapp. Sinon collez les identifiants de n'importe lequel des20les portes d'entrée.

Télégramme

Deux minutes. Message @BotPère en télégramme, envoyer/newbot,Choisissez un nom et un nom d'utilisateur se terminant par "bot", et collez le jeton qu'il vous donne dans le connecteur Telegram.OpsIQenregistre le webhook pour vous.

LIGNE

Create a Messaging API channel at developers.line.biz, paste the Channel secret and access token, then copy the webhook URL shown in OpsIQ into LINE and switch its own auto-replies off.

SMS

Ajouter un fournisseur (Twilio, Vonage, Termii et autres) dans le Hub de messagerie avec ses identifiants et son numéro d'expéditeur.

Chaque connecteur affiche ses propres instructions étape par étape dans le tiroir, y compris exactement ce qu'il faut copier et où. Vous n'avez jamais besoin d'identifications de développeur pour les options à un clic.

Allumer un canal

La connexion d'un canal ne démarre pas. Settings → Client Chat → Advanced → Messaging Channels, allumez le maître et ensuite le canal individuel. Chaque canal a son propre commutateur de réponse automatique AI, vous pouvez piloter sur un avant d'ouvrir le reste.

1
Connectez le canal

Dans les connecteurs, en utilisant les instructions dans le tiroir de ce connecteur.

2
Tester la connexion

Cliquez sur Test. Il fait un appel réel au fournisseur et vous dit ce qui ne va pas si quelque chose est.

3
Activer les canaux de messagerie

Paramètres→Chat client→Avancé. Allumez l'interrupteur principal, puis le canal.

4
Envoyez-vous un message

D'un autre compte, envoyez un message à votre page, numéro ou bot. Il doit apparaître dans la boîte de réception Chat en quelques secondes et obtenir une réponse AI.

Fenêtres de réponse

Les plateformes de messagerie limitent la durée de réponse d'une entreprise après l'écriture d'un client. OpsIQ montre le temps restant sur chaque conversation et applique la règle pour vous.

WhatsApp

24 heures à partir du dernier message du client. Après cela, vous ne pouvez envoyer qu'un modèle approuvé, que vous configurez dans le même onglet Advanced.

Messagerie & Instagram

24heures pour les réponses normales; les agents peuvent répondre jusqu'à7quelques jours plus tard, sous l'allocation d'agent humain de Meta.

Télégramme, LINE, SMS

Pas de fenêtre imposée par la plate-forme.

⚠️
Si une réponse échoue parce que la fenêtre s'est fermée, la conversation montre pourquoi. Il s'agit d'une règle de plate-forme, et non d'un OpsIQ limite.

Questions fréquentes

Les clients voient-ils qu'une AI a répondu ?+

Seulement si vous leur dites. La réponse vient de votre page, numéro ou bot exactement comme une réponse humaine le ferait. Vos instructions AI contrôlent le ton et si elle s'identifie.

Un agent peut-il prendre le relais de la conversation ?+

Oui. Ouvrez la conversation dans la boîte de réception Chat et cliquez sur Join. L'IA s'arrête, vous tapez, et le client voit un fil continu sur son côté.

Et si je débranche un canal ?+

Utilisez Déconnecter sur le connecteur. L'historique des messages est conservé; les nouveaux messages cessent simplement d'arriver, et la plate-forme est dit de cesser de les envoyer.

Deux espaces de travail peuvent-ils utiliser la même page Facebook ?+

Non. Une page appartient à un espace de travail à la fois. Connecter-le ailleurs le déplace, et le premier espace de travailler cesse de recevoir des messages, donc déconnectez-vous délibérément plutôt que de se reconnecter ailleurs.

Appui

Conversations de chat réelles

Ces exemples montrent comment une IA client bien entraînée devrait gérer des scénarios courants et vous permettent de tester votre formation en IA et d’identifier les lacunes.

10 exemples de conversation

1. Client de retour s'informant sur la commande

Scénario :
Customer: Hi, I placed an order 3 days ago and haven't received any shipping notification yet. Order #ORD-5523.
Que faire:

L'AI devrait: (1) Chercher l'ordre #ORD-5523 Passez le connecteur.2) Signaler le statut actuel et les informations de suivi si disponibles. (3) Si la commande est retardée, reconnaissez le retard et fournissez un calendrier estimatif. (4) NE PAS inventer un statut d'expédition si le connecteur n'en a pas.

2. Demande de prix par un prospect

Scénario :
Customer: How much does your Pro plan cost? Do you offer annual billing?
Que faire:

L'AI devrait: (1) Répondre à partir de la base de connaissances avec les prix actuels. (2) Expliquez la différence entre facturation mensuelle et annuelle. (3) Si la réponse n'est pas dans la base de connaissances, dites-le et proposez de les connecter avec les ventes.4) NE PAS inventer des prix qui ne sont pas dans la base de connaissances.

3. Client en colère exigeant un remboursement

Scénario :
Customer: This is ridiculous! Your product does not work and I want my money back NOW.
Que faire:

L'IA devrait: (1) Reconnaissez la frustration calmement. (2) Demandez le numéro de commande ou l'email de compte. (3) Expliquer le processus de remboursement. (4) Créer un ticket de support ou passer à un agent humain. (5) Ne promettez PAS un remboursement, qui nécessite l'approbation humaine.

4. Cas de double facturation

Scénario :
Customer: I was charged twice this month. My bank shows two charges of $29.99.
Que faire:

L'AI devrait: (1) Reconnaître la préoccupation. (2) Recueillir les détails pertinents (courriel, dates des charges).3) Expliquer que les problèmes de facturation nécessitent un examen humain. (4) Créer un ticket de service de facturation avec les détails. (5) Définissez la priorité sur Haute.

5. Client multilingue

Scénario :
Customer: Bonjour, je voudrais savoir si vous livrez en France?
Que faire:

L'AI devrait: (1) Répondre dans la langue du client si cette langue est prise en charge. (2) Répondez à la question sur la livraison en France dans la base de connaissances. (3) Si la langue n'est pas prise en charge, répondez dans la langue par défaut et mentionnez les langues disponibles.

6. Conversation après les heures de travail

Scénario :
Customer: Hello, is anyone there? I need help with my account.
Que faire:

L'AI devrait: (1) Si configuré pour l'IA après les heures d'ouverture, répondre et aider. (2) Si après les heures de bureau, des tickets sont créés, dites: "Notre équipe est actuellement hors ligne. J'ai créé un ticket d'assistance pour vous et quelqu'un fera le suivi pendant les heures ouvrables."3) Fournissez le numéro du billet.

7. Acheteur de comparaison avant achat

Scénario :
Customer: How does your product compare to [Competitor X]?
Que faire:

L'AI devrait: (1) Décrivez les forces de votre produit factuellement. (2) Ne pas calomnier le concurrent. (3) S'il existe une page de comparaison dans la base de connaissances, créez un lien vers celle-ci. (4) Si le client demande des fonctionnalités que vous n'avez pas, soyez honnête.

8. Le client veut une recommandation

Scénario :
Customer: I run a small online store with about 100 orders per month. Which plan is right for me?
Que faire:

L'AI devrait: (1) Posez des questions de clarification si nécessaire (par exemple, quelles caractéristiques sont les plus importantes).2) Recommander un plan basé sur la base de connaissances. (3) Expliquez pourquoi ce plan répond à leurs besoins. (4) Mentionnez qu'ils peuvent commencer avec un forfait plus petit et passer à une version supérieure plus tard.

9. Client essayant d'obtenir une remise non autorisée

Scénario :
Customer: I saw online that you give 50% discounts. Can I have one?
Que faire:

L'AI devrait: (1) Expliquez poliment les promotions en cours s'il y en a. (2) NE PAS créer ou promettre des remises qui ne sont pas dans la base de connaissances. (3) Si le client persiste, proposez de le mettre en relation avec l’équipe commerciale.

10. Le client a besoin d'aide avec une fonctionnalité

Scénario :
Customer: How do I export my data? I can't find the export button.
Que faire:

L'AI devrait: (1) Fournir des instructions étape par étape à partir de la base de connaissances. (2) Inclure le chemin exact de la page et l'emplacement du bouton. (3) Si la fonctionnalité nécessite un plan particulier, mentionnez-le. (4Si la fonctionnalité n'existe pas, soyez honnête et suggérez des alternatives.

Appui

Routage et escalade des chats

Lorsqu’un chat en direct nécessite une personne réelle, l’IA répond à deux questions : quelle équipe est propriétaire de cette conversation et qui doit être informé. Les deux sont configurés dans Paramètres, Chat client, Flux d’assistance, sous Départements de routage AI.

Choisir les départements que l'IA peut utiliser

Les deux cases de ce panneau sont une liste blanche. Les départements déplacés vers la droite sont les seuls auxquels l’IA peut acheminer ou ouvrir des tickets. Tout ce qui est laissé sur la gauche est invisible pour elle, même si le département existe et qu’il est doté d’un personnel.

💡
Si aucun département n'est activé, OpsIQ revient au routage hérité à travers tous les départements qu'il peut trouver. Traitez cela comme un filet de sécurité, pas un choix de configuration.

Qui reçoit l'escalade

C’est la partie que la plupart des gens s’attendent à configurer et n’ont pas besoin de le faire. Lorsque l’IA fait passer un chat en mode avancé, OpsIQ envoie un e-mail aux personnes attachées à ce service. Vous gérez cette liste une fois, sur la page Équipe et services, et les deux escalades de ticket et de chat suivent.

Membres de l'équipe du département

Chaque administrateur actif attaché au département reçoit sa propre copie, les comptes suspendus et désactivés sont ignorés.

Administrateur principal

Utilisé quand aucun membre de l'équipe n'est attaché, donc une escalade atteint toujours quelqu'un.

Personne attaché

Le panneau de routage marque ce service en rouge et l’IA ne dit pas au visiteur qu’un humain a été notifié.

⚠️
L'adresse de courriel du service n'est délibérément jamais utilisée comme destinataire. Cette adresse est la boîte aux lettres des tickets entrants du service, celle avec laquelle les messages entrants sont comparés pour ouvrir des tickets. Une escalade envoyée à cette adresse serait renvoyée en tant que nouveau ticket plutôt qu'atteindre une personne.

Le département catch-all

Il reçoit les conversations que l’IA ne pouvait pas placer avec confiance, et c’est un dernier recours plutôt qu’un chemin normal.

1
Des signaux clairs gagnent

Le libellé de facturation va à un service de facturations, le libellé d’hébergement et d’erreur à un département technique, le texte d’achat aux ventes.

2
Le classificateur d'IA essaie ensuite

Si les mots-clés ne sont pas concluants, le modèle lit la conversation et choisit parmi les départements activés.

3
Puis le catch-all

Ce n’est que lorsque les deux sont vides que le service de capture reçoit le chat.

4
Le garde des ventes

Si le catch-all est un service commercial et que le visiteur n'a montré aucun signal d'achat, OpsIQ recherche à la place un service technique ou de support, afin que les questions de support ordinaires ne s'accumulent pas dans Sales.

Ce qui est dit au visiteur

Si l’e-mail d’escalade sort, l’IA dit au visiteur que l’équipe a été notifiée. S’il ne peut pas sortir, l'IA dit quelque chose de honnête et les invite à laisser le message dans la discussion à la place.

Le panneau indique « Personne à aviser » pour un ministère+

Personne n'est attaché à ce panneau. Ouvrez Équipe et Départements, attachez au moins un administrateur actif, puis rechargez la page des paramètres.

Les escalades de chat peuvent-elles aller ailleurs que dans l'équipe?+

Oui, une adresse personnalisée précédemment enregistrée pour un service remplace toujours la liste d'équipe. Les nouvelles configurations doivent associer les personnes au service à la place, de sorte qu'il y ait un seul endroit à maintenir.

Pourquoi mon catch-all a été sauté?+

Si c'est le cas et que le visiteur n'a pas montré de signe d'achat, OpsIQ achemine délibérément l'utilisateur vers un service technique ou de support.

Appui

Boîtes aux lettres et brouillons

OpsIQ peut se connecter aux boîtes de messagerie pour créer automatiquement des tickets à partir d'e-mails entrants et envoyer les réponses sous forme d'email.

Courriel
Envoyer par email à un amiUne boîte aux lettres IMAP sur la gauche alimentant les e-mails entrants dans un ticket en fil avec une réponse rédigée par l'IA à droite.Courrielespace de travail[email protected] · IMAPDemande de remboursement[email protected]Impossible de se connecter[email protected]Copie de facture[email protected]Billet #1042À partir de l'email · FacturationJe souhaiterais un remboursement pour leCharge en double…Brouillon AIRéviser & envoyer une réponse1INGESTIMAP & transfert dans2TO TICKETSFileté automatiquement3AI DRAFTSRéponses pour examen
Recevez les e-mails via IMAP (ou en les transférant), transformez chacun d'eux en ticket et laissez l'IA rédiger une réponse pour examen.

Connexion d'une boîte aux lettres

Protocole

IMAP (la plupart des fournisseurs), Gmail API (Google Workspace), ou Microsoft Graph (Outlook 365).

Paramètres nécessaires

Hôte, port, chiffrement (SSL/TLS), nom d'utilisateur, mot de passe ou mot de passer d'application, dossier (généralement INBOX).

Cartographie des départements

Les e-mails envoyés à [email protected] créent des tickets dans le département "Support".

Configuration de Gmail (étape par étape)

1
Activer la vérification 2-Step

Allez dans Compte Google > Sécurité > 2-Step Verification et activez cette option.

2
Créer un mot de passe d'application

Aller à Google Compte > Sécurité > Mot de passe d'application. Sélectionnez "Mail" et "Autre (OpsIQ)". Copier le16- un mot de passe caractéristique.

3
Entrez dans OpsIQ

Aller à l'email > Boîtes aux lettres > Ajouter. imap.gmail.com, port: 993, chiffrement : SSL, nom d'utilisateur: [email protected], mot de passe : le mot de Passe de l'application.

4
Essai

Si l'opération est réussie, OpsIQ commencera à rechercher de nouveaux e-mails à l'intervalle configuré.

Configuration d'Outlook 365

1
Vérifiez que IMAP est activé

Dans les paramètres Outlook > Courrier > Synchroniser le courrier électronique, assurez-vous que IMAP est activé.

2
Utiliser le mot de passe d'application ou l'authentification moderne

Si l’authentification multifacteur est activée, créez un mot de passe d’application. Sinon, utilisez votre mot de passer habituel.

3
Entrez dans OpsIQ

Hôte : outlook.office365.com, port : 993, chiffrement : SSL, nom d’utilisateur : [email protected].

cPanel configuration de webmail

1
Trouver les paramètres IMAP

In cPanel > Comptes e-mail, cliquez sur votre compte e- IMAP Réglages.

2
Entrez dans OpsIQ

Hôte: habituellement mail.yourdomain.com ou votre nom d'hôte de serveur, port: 993 (SSL) ou 143 (STARTTLS), nom d'utilisateur: adresse e-mail complète.

Brouillons d'email AI

Lorsque la réponse automatique est définie sur le mode « Brouillon », l'IA génère des brouillons de réponse qui apparaissent dans la file d'attente Brouillons.

Examen

Lisez le projet et vérifiez l'exactitude.

Éditer

Modifiez le texte, le ton ou le contenu avant d'envoyer.

Envoyer

Approuvez le brouillon et envoyez-le sous forme de réponse par courrier électronique.

Jeter

Supprimer le projet s &apos; il n &apos.

Envoi automatique

Si la confiance est suffisamment élevée et que l'envoi automatique est activé, les brouillons sont envoyés automatiquement après un délai configurable.

Pourquoi les e-mails ne sont-ils pas convertis en tickets?+

Vérifiez : (1) La boîte aux lettres est-elle connectée et en bon état? Recherchez l’état vert dans E-mail > Boîtes aux2) Le travail cron est-il en cours d'exécution? L'interrogation par courrier électronique nécessite cron. (3) Le courriel est-il filtré ou déplacé vers un dossier autre que la BOÎTE A RECEVOIR?

Puis-je utiliser plusieurs boîtes aux lettres?+

Oui, chaque boîte aux lettres peut être associée à un département différent. [email protected] va à Support, [email protected] Aller à la facturation.

Appui

Satisfaction client (CSAT)

CSAT mesure la satisfaction des tickets et du chat, fait ressortir les réponses insatisfaites et compare l’IA aux résultats humains.

Écran de produit
Satisfaction de la clientèleLa page CSAT combine des fiches de score, le suivi des détracteurs, les commentaires, la répartition par département et agent, ainsi que les commentairet du chat.Satisfaction de la clientèleespace de travailRÉPONSES386AVERAGE4.6POSITIVE91%VUE DE L'ESPACE DE TRAVAIL EN DIRECTSuivi des détracteurs12 Réponses évaluées1–2ExamenEnquêtes sur les billetsEnvoyé 24h après la fermetureAutomatiqueFeedback sur le chatAI 4.5 · Humain 4.7ComparerVue de l'agentScore et nombre de réponsesEntraîneur1WATCH AVERAGEUtilisez la tendance, pas un score2FOLLOW DETRACTORSLire le commentaire3COMPARE FAIRLYIA et humain
La page CSAT combine des fiches de score, le suivi des détracteurs, les commentaires, la répartition par département et agent, ainsi que les commentairet du chat.

Les enquêtes sur les billets sont programmées après la fermeture (normalement 24 Une réponse positive correspond à un score de 10.4ou 5. Utilisez la file des détracteurs pour les scores de.1ou2Lisez le ticket/la conversation avant de contacter le client.

Les petites tailles d’échantillon ne doivent pas être utilisées pour classer les agents ou les modèles, car elles peuvent entraîner des erreurs de classement.

Appui

Diffusions d'e-mail d'équipe

La page Email Platform permet à un opérateur autorisé d’envoyer un message unique à tous les agents actifs, aux agents sélectionnés ou à un service et de consulter l’historique des envois.

Écran de produit
Plateforme de messagerieLe compositeur d'e-mails d'équipe affiche l'audience, le sujet, le message et l'historique de livraison passé.Plateforme de messagerieespace de travailRECEPTEURS12DELIVERED11FERMÉS1VUE DE L'ESPACE DE TRAVAIL EN DIRECTAuditoireTous les agents actifsSélectionnéSujetRotation des services d &apos; appui en juilletPrêtMessageNotes sur le calendrier et l'escaladePrêtHistoriqueÉmissions et résultats précédentsVoir1CHOOSE PEOPLETout, sélectionné ou équipe2WRITE CLEARLYObjet et message3REVIEW HISTORYConfirmer le résultat
Le compositeur d'e-mails d'équipe affiche l'audience, le sujet, le message et l'historique de livraison passé.

Cette page est destinée aux messages opérationnels internes, pas au marketing client. Choisissez l'audience la plus petite possible, prévisualisez les noms et adresses, puis envoyez. La livraison utilise le chemin d'envoi configuré et enregistre le résultat.

Appui

Boîtes aux lettres, livraison et courrier entrant

Configurez comment OpsIQ envoie les e-mails, transforme les messages entrants en tickets et prouve que le domaine d'envoi est prêt.

Écran de produit
Paramètres de courrielLes paramètres de messagerie combinent le routage sortant, l'identité d'origine, l’ingestion des boîtes aux lettres, les vérifications de délivrabilité et les e-mails de test.Paramètres de courrielespace de travailSORTANTSMTPMAILBOXES3DOMAINEPasserVUE DE L'ESPACE DE TRAVAIL EN DIRECTConnecteur préféréSMTP / connecteur de fournisseurConfiguréDe l'identitéSupport <[email protected]>PrêtBoîte aux lettres IMAP[email protected] · BOÎTE D &apos; ENTREPRISESondageDélivrabilitéFPS · DKIM · DMARCPasser1CHOOSE OUTBOUNDConnecteur ou SMTP2CONNECT INBOXIMAP ou tuyau3ESSAIEnvoyer et vérifier
Les paramètres de messagerie combinent le routage sortant, l'identité d'origine, l’ingestion des boîtes aux lettres, les vérifications de délivrabilité et les e-mails de test.

Courrier électronique sortant

Les administrateurs complets peuvent choisir le connecteur de messagerie préféré; OpsIQ Revient à configured SMTP Définissez un nom/une adresse de l'expéditeur reconnaissable, envoyez un test et vérifiez la validité du message. 24-heure de succès / échec métriques.

Boîtes aux lettres

Une boîte aux lettres IMAP nécessite un nom, une adresse e-mail, le service cible, l'hôte, le port, le mode de sécurité, le nom d'utilisateur, le mot de passe, le dossier, l’état du sondage et le choix de validation des certificats. Sondage maintenant pour vérifier l’ingestion sans attendre le cron.

Piping instantané

Sur le même serveur, un pipeline de messagerie peut transmettre directement le message RFC822 brut. Un serveur de messageries distant peut envoyer le message brut au point de terminaison entrant protégé à l'aide de son jeton. Les deux chemins entrent dans le même pipeline d'acheminement des tickets, de déduplication et de threading.

Délivrabilité

La vérification SPF/DKIM/DMARC est une preuve consultative pour le domaine From configuré. Une coche verte ne garantit pas le placement dans la boîte de réception, mais un échec doit être corrigé avant d'envoyer des messages de production.

Appui

Portail de support Studio

Support Portal Studio conçoit et publie l'expérience de support client sans avoir besoin d'images externes.

Écran de produit
Portail de support StudioPortal Studio affiche un aperçu réactif avec les contrôles thème, navigation, connaissances, ticket, assistant, formulaire, pied de page et CSS.Portail de support Studioespace de travailTEMPLATEModerneAVANTAGEBureauETATBrouillonVUE DE L'ESPACE DE TRAVAIL EN DIRECTThèmeCouleurs et typographie de la marqueÉditerNavigationConnaissances, billets, assistantÉditerFormulaire de billetChamps, routage et copieÉditerPublierValider et mettre en ligneExamen1CHOOSE TEMPLATECommencer par la structure2PREVIEW SIZESDe l'ordinateur au mobile3PUBLISH SAFELYExaminer puis publier
Portal Studio affiche un aperçu réactif avec les contrôles thème, navigation, connaissances, ticket, assistant, formulaire, pied de page et CSS.

Utilisez le modèle comme point de départ, puis configurez le thème, la mise en page, la navigation, la recherche des connaissances, le formulaire de ticket, l'assistant, le pied de page, l’image de marque, le comportement du ticket et personnalisé. CSS Prévisualisez votre site sur ordinateur, tablette et mobile avant de le publier.

Appui

Lacunes dans les connaissances

La file d’attente des lacunes de connaissance recueille les questions auxquelles l’IA ne pouvait pas répondre avec confiance afin que l’équipe puisse améliorer sa couverture.

Écran de produit
Lacunes dans les connaissancesLa file d’attente des écarts classe les questions manquées ou à faible confiance et suit si l’équipe les a résolues.Lacunes dans les connaissancesespace de travailOPEN GAPS28REPEATED9RESOLVED116VUE DE L'ESPACE DE TRAVAIL EN DIRECTLimites de migrationDemandé 14 foisÉlevéSupport le week-endDemandé 8 foisMoyenCalendrier des remboursementsDemandé 6 foisMoyenRégion de APIDemandé 3 foisBas1REVIEW QUESTIONVoir le contexte de la conversation2CHOOSE FIXArticle ou message3RESOLVEVérifier la réponse suivante
La file d’attente des écarts classe les questions manquées ou à faible confiance et suit si l’équipe les a résolues.

Ouvrez un espace pour lire la question originale et la conversation à proximité, puis choisissez le bon correctif : mettez à jour un article existant, créez un nouvel article de connaissances, ajoutez un fait d’affaires, corrigez les données du connecteur ou modifiez les instructions d’escalade.

Appui

Administration de la page d'état

La page d'administration de l'état communique l'intégrité du service et les incidents à l'aide des composants, des états actuels et des mises à jour.

Écran de produit
Administration du statutL'administration de l'état répertorie les composants et les incidents afin que les opérateurs puissent publier des informations claires sur le service horodaté.Administration du statutespace de travailOVERALLOpérationnelCOMPOSANTS7INCIDENTS1VUE DE L'ESPACE DE TRAVAIL EN DIRECTSite webOpérationnelVertAPIPerformance dégradéeRegarderIngestion d'emailOpérationnelVertIncident actuelAPI recherche de latenceOuvert1UPDATE COMPONENTChoisissez l'état clair2POST INCIDENTMises à jour horodatées3RESOLVEFermer avec le résumé
L'administration de l'état répertorie les composants et les incidents afin que les opérateurs puissent publier des informations claires sur le service horodaté.

Lorsqu'un incident affecte les clients, publiez un avis initial, ajoutez des mises à jour horodatées au fur et à mesure que les faits changent, puis fermez avec un résumé concis de la résolution. N'utilisez pas la page d'état comme journal de débogage interne; les diagnostics sensibles doivent être conservés dans les journaux du serveur et de OpsIQ.

IA

Configurez votre IA

La configuration de l'IA est le lieu où vous choisissez votre fournisseur, modèle et contrôle des coûts. OpsIQ Ce site supporte plusieurs fournisseurs: Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google), et Grok (xAI). Vous pouvez utiliser votre propre API clé (BYOK) ou l’IA gérée si elle est disponible dans votre forfait.

Mettre en place AI
Configuration de l'IAUn panneau de paramètres d'IA: un basculeur Managed-AI / BYOK fournisseur, un sélecteur de modèle et un compteur mensuel du budget des jetons.Configuration de l'IAespace de travailConfiguration de l'IAFournisseurIA géréeVotre clé (BYOK)Modèleclaude · équilibréBudget mensuel d'IA62%1TWO MODESIA gérée ou BYOK2PICK A MODELVitesse vs profondeur3BUDGETSPlafonds de jetons et contrôle des coûts
Choisissez Managed AI ou votre propre clé, choisissez un modèle pour la vitesse par rapport à la profondeur et limitez vos dépenses mensuelles avec un budget de token.

Choisir un fournisseur

(Anthropic_)

Raisonnement fort, prudent avec les faits, bon à suivre des instructions complexes. Modèles: claude-sonnet-4-20250514, claude-3.5 Idéal pour: les conversations de soutien, les questions techniques, l'analyse détaillée.

GPT-4o (OpenAI)

Rapide, créatif, bonne connaissance générale. Modèles: gpt-4o, gpt 4o-mini. Idéal pour: réponses rapides, rédaction créative, questions de connaissances générales.

Gemini (Google)

Bon aux questions factuelles, support multilingue. Modèles:gemini-2.0-flash,gemini-1.5 Idéal pour: support multilingue, recherches factuelles.

Vert (xAI)

Réponses rapides et concises. Modèles: grok-3-mini-fast. Idéal pour : réponses rapides, ton décontracté.

BYOK vs IA gérée

BYOK (Apportez votre propre clé)

Vous recevez votre propre clé API du fournisseur et payez directement le fournisseur. Contrôle total sur la sélection des modèles et leur utilisation.

IA gérée

L'IA est fournie dans le cadre de votreOpsIQ- C'est pas le cas.APIL'utilisation est mesurée par rapport au solde de crédit AI de votre plan.

Configuration étape par étape

1
Aller à la configuration AI

Dans l'administration OpsIQ, accédez à Paramètres > Configuration de l'IA.

2
Sélectionner un fournisseur

Choisissez votre fournisseur d'IA dans le menu déroulant.

3
Entrez la clé API

Si vous utilisez BYOK, entrez votre. API Pour l'IA gérée, cette opération est effectuée automatiquement.

4
Choisissez le modèle

Sélectionnez le modèle spécifique à utiliser. Les plus petits sont plus rapides et moins chers, tandis que les plus grands donnent des réponses de meilleure qualité.

5
Connexion de test

Cliquez sur "Test de connexion" pour vérifier que la clé et le modèle API fonctionnent. Une coche verte signifie succès.

6
Enregistrer

Cliquez sur Enregistrer pour activer votre configuration d'IA.

Contrôles des coûts

Budget mensuel

Lorsque le budget est atteint, les fonctionnalités d’IA se dégradent gracieusement (réponses plus courtes, pas de réponse automatique) plutôt que de s’arrêter complètement.

Limite de jeton par conversation

Nombre maximum de jetons par conversation. Empêche les conversations débridées de consommer des crédits excessifs.

Alerte de solde faible

Lorsque votre solde de crédits d'IA tombe en dessous du seuil (par défaut: 50,000 tokens), un avertissement apparaît dans l'administration.

Configuration par espace de travail

Si vous gérez plusieurs sites, chaque espace de travail peut utiliser un fournisseur, un modèle et un budget différents. L'espace de travail hérite des valeurs par défaut globales sauf si elles sont remplacées. Pour configurer par espace de travaux: basculez vers l'endroit où se trouve l'écran d'accueil, puis accédez à Configuration AI et enregistrez les paramètres là-bas.

Obtenir les clés API

Anthropic (Claude)

Allez àconsole.anthropic.com > APIClés > Créer une clé. Copier la clé en commençant par "sk-ant-".

OpenAI (GPT)

Allez àplatform.openai.com > APIClés > Créer une nouvelle clé secrète. Copier la clé en commençant par "sk-".

Google (Gemini)

Aller à aistudio.google.com > Get API Clé. Créez une clé pour votre projet. Copiez la clé.

xAI (Grèce)

Aller à console.x.ai > API Clés. Créez et copiez votre clé.

Tester votre configuration d'IA

Scénario :
After entering your API key, click "Test connection." You should see a green checkmark and a sample response from the AI.
Que faire:

Si le test échoue: (1) Vérifiez que le API La clé est correcte (pas d'espaces supplémentaires).2) Vérifiez que la facturation de votre compte est configurée auprès du fournisseur. (3) Vérifiez que le nom du modèle est valide. (4) Si vous utilisez Managed AI, vérifiez que votre licence est active.

Quel fournisseur est le meilleur?+

Il n'y a pas de meilleur fournisseur. Claude est excellent pour les conversations d'assistance. GPT-4o est rapide et polyvalent. Gemini gère bien plusieurs langues. Essayez chacune et voyez laquelle produit les meilleurs résultats pour votre cas d'utilisation spécifique.

Puis-je changer de fournisseur plus tard?+

Oui, vous pouvez changer le fournisseur et la clé API à tout moment. L'historique de conversation existant est conservé. L'IA utilisera le nouveau fournisseur pour toutes les conversations futures.

Que se passe-t-il quand je manque de crédits?+

L’IA se dégrade avec grâce : les réponses deviennent plus courtes, la réponse automatique s’arrête et l’administrateur affiche un avertissement de solde faible. Le suivi principal, les tickets et le CRM continuent à fonctionner sans IA.

IA

Un chat client plus intelligent et moins cher

Un ensemble de contrôles opt-in qui rendent votre client chat plus intelligent (il raisons sur le compte d'un client comme un agent humain) ou moins cher (il envoie l'IA moins, ou répond en moins de étapes). Chaque contrôle est désactivé par défaut et indépendant, allumer sur jamais changer aucun autre comportement. La plupart vivent sous Paramètres > Chat client > Comportement; quelques sont sur Configurer votre AI et Trainez votre AI.

Réponses plus intelligentes (mode agent)

Un chatbot normal répond à une question par recherche. Avec Mode d'agent sur, l'assistant peut faire plusieurs vérifications de compte en lecture seule en un seul tour et les recouper, par exemple « ai-je des billets ouverts, et est mon solde assez pour mon prochain renouvellement? » est répondu dans une réponse avec les maths fait. Il engage seulement pour les clients vérifiés pour compte ou de remboursement des questions; tout le reste exécute le chemin normal d'une réponse unique.

Mode d'agent

Jusqu'à quelques recherches en lecture seule par tour, recoupées avant de répondre. Allumez lorsque vous avez une plate-forme connectée (WHMCS, Shopify, Stripe, Zendesk, etc.). Off = le comportement mono-aspect d'aujourd'hui, inchangé.

Profondeur de réflexion pour les réponses des agents

La difficulté du modèle à raisonner sur des virages complexes (faible/moyen/haut) Commencez par le niveau faible ; la plupart des questions de support sont bien traitées là.

Modèle d &apos; agent

Épingle un modèle plus fort pour les tours d’agent complexes, de sorte que le chat quotidien reste sur un modèle léger et bon marché et que seuls les toures difficiles paient pour la profondeur.

Planifier les réponses à un seul passage (bêta)

Une petite étape de planification décide quelles recherches tirer et si la base de connaissances est nécessaire, puis répond en ONE appel principal au lieu de plusieurs étapes. Un sous-toggle sous le mode Agent. Il ne peut être activé que si le mode agent est activé. Même qualité de réponse, moins d'appels sur les questions multi-parties.

Conversation & compréhension

Mémoire de longues conversations (bêta)

Conserve un bref résumé des anciens messages (noms, numéros de ticket/facture, montants, décisions) afin que l'assistant reste cohérent sur les conversations très longues sans renvoyer la transcription entière. Idéal pour les longs threads à forte intensité d'assistance; s'associe au mode Agent.

Tolérance au typo

Lit les petites fautes de frappe ("mes tickets ouverts", "facture non payée") comme des mots prévus afin que la bonne information soit trouvée au lieu d'être manquée. Fonctionne avec toutes les plateformes connectées.

Contexte du compte Lean

Ne fixe l'instantané du compte du client que lorsque la question porte sur son compte (solde, factures, billets, services), en le faisant passer sur des questions générales.

Économie de coûts

Ignorer la recherche de connaissances pour les salutations (bêta)

"Hi", "merci" et "ok" ne déclenchent pas une recherche de base de connaissances, ces réponses ne l'utilisent jamais. Tout message avec le contenu réel recherche toujours comme normal.

Réponse la plus longue autorisée (tokens)

La longueur de la réponse est le point le plus coûteux d'un appel, donc un plafond raisonnable (environ 500 pour l'assistance) est le contrôle des coûts du chat le plus efficace. Cela ne fait qu'abaisser votre limite globale, jamais l'augmenter.

Configurez votre IA

Profondeur de réflexion (chat client & admin)

Le temps que le modèle pense avant de répondre (minimum à élevé). Gardez le chat client sur minimal/bas pour la vitesse. Réservez des paramètres plus élevés pour l'analyse et le copilote administrateur.

Modèle par IA (par tâche)

Chaque surface d'IA (chat en direct, brouillons de tickets, résumés, analyse, copilote administratif, promotions, Intelligence du site et plus) peut fonctionner sur son propre modèle.

Contrôles des coûts de chat d'administration

Le copilote administrateur peut garder une mémoire de travail limitée et charger uniquement les outils dont une question a besoin (outils lean) au lieu de chaque outil à chaque tour.

Entraînez votre IA

Instructions de compresser

Vos instructions sont envoyées à chaque tour, de sorte que leur longueur est un coût récurrent. Le bouton Compresse réécrit une fente pour dire la même chose en moins de mots. Il refuse la réécriture si elle laisserait tomber n'importe quelle {variable} ou règle, et rapporte ce qu'il a protégé, donc il ne change jamais silencieusement le sens.

"Ce qui est déjà dans le cerveau" (ℹ️)

Affiche ce que OpsIQ sait déjà sur votre entreprise par emplacement, de sorte que vous pouvez supprimer tout ce que vous répétiez dans vos propres instructions.

💡
Pour le court entretien de l'entrée (instructions + données de compte + historique, envoyé chaque tour) coûte généralement plus que la réponse courte, le cache et le contexte maigre aident le plus là. Pour le contenu généré depuis longtemps, la sortie domine. Le plafond de longueur de réponse et une profondeur de pensée inférieure y paient. Voir Configurez votre AI pour garder la mise en cache rapide, ce qui rend la grande partie répétée de chaque tour bon marché.
Est-ce que cela change la façon dont le chat répond déjà?+

Non, chaque contrôle est désactivé par défaut et indépendant. Activer un contrôle ajoute seulement son comportement ; le désactiver remet le chat exactement comme il fonctionnait avant.

Dans quel ordre dois-je les allumer?+

Exécutez le chat quotidien sur un modèle léger et épinglez un modèle d’agent plus puissant. Ensuite, si vous avez une plateforme connectée, activez le mode Agent, puis Planifiez à l’avance, puis la mémoire de longue conversation. Puis réduisez le contexte, ignorez les KB pour les salutations et ajoutez une limite de réponse.

Le kit Admin Agent: recherche web, runbooks, missions, transfert de fichiers

Le chat d’IA de l’administrateur est un ingénieur en activité, pas seulement une boîte à questions. Il peut rechercher des correctifs sur le Web, conserver une bibliothèque de vos procédures d’exploitation, patrouiller vos serveurs selon un calendrier et déplacer des fichiers. La plupart de ces fonctionnalités sont gérées par demande dans le chat; la seule chose que vous configurez à l’avance est le fournisseur de recherche Web qu’il utilise, sur la page Configuration de votre IA.

Recherche sur le Web

Construit en

L'agent recherche sur le web des documents, des messages d'erreur et des informations actuelles pendant qu'il fonctionne. Hors de la boîte, il utilise DuckDuckGo, qui ne nécessite aucune clé ni configuration.

Livres d'exécution

Dans le chat

Une bibliothèque de vos procédures (« comment faire X ici ») que l’agent peut noter après avoir réussi un travail délicat et suivre la prochaine fois, afin que le savoir-faire survive à la fin du chat.

Missions

Programmé

Patrouilles en lecture seule planifiées. « Chaque matin, vérifiez l'espace disque et les journaux d'erreurs et informez-moi » Les résultats arrivent sur votre cloche d'administration.

Transfert de fichiers

Dans le chat

Demandez un fichier log et obtenez un lien de téléchargement privé, ou faites copier un fichier d'un serveur connecté à un autre, les deux limités à 5 MB.

Recherche Web de l'agent Admin (sur Configurer votre IA)

Fournisseur de recherche

Ce que l'agent de recherche Web utilise. La valeur par défaut est DuckDuckGo: sans clé, gratuit, fonctionne sur toutes les installations. Serper.dev (Résultats Google) renvoient généralement de meilleurs résultats mais chacun a besoin d'un API Si un fournisseur de clé échoue pour une raison quelconque (mauvaises clés, quota utilisé, problème de réseau), cette recherche revient automatiquement à DuckDuckGo, donc la recherche n'est jamais obscurcie.

Recherche de la clé API

La clé du fournisseur choisi, uniquement nécessaire pour Brave, Tavily ou Serper. Une fois enregistrée, elle est masquée et ne s'affiche plus sur la page; collez-en une nouvelle pour la remplacer. Un fournisseur avec clé n'est actif que lorsque le fournisseur et sa clé sont sauvegardés.

Livres d'exécution

Lorsque l'agent vient de terminer une tâche que vous souhaitez faire à nouveau, dites "enregistrez-la comme un runbook appelé nightly-cleanup". À partir de là, il voit le runbook par son nom dans chaque session et lorsque vous demandez la tâche par son Nom (ou la décrivez), il récupère les étapes et les suit.

💡
Un runbook est un guide, pas une autorisation. Lorsque l'agent en suit un, chaque étape qui modifierait un serveur passe toujours par votre mode d'autorisation actuel et affiche les cartes d'approbation habituelles. Un runbook ne peut jamais contourner une approbation.

Missions

Une mission est un travail récurrent que l'agent exécute seul : toutes les heures, tous les jours à une heure définie ou chaque semaine un jour donné. Les missions sont conçues en lecture seule. Elles peuvent lire des serveurs, des données et le Web, mais elles ne peuvent jamais rien changer ; elles enquêtent et font rapport. Quand une mission se termine, les résultats atterrissent sous forme de notification sur votre sonnette d'administration.

⚠️
Les missions sont exécutées par le cron OpsIQ, donc il faut le paramétrer (voir Cron et automatisation). Un "run it now" unique depuis le chat fonctionne même entre les runs de cron sur la plupart des serveurs.

Déplacement de fichiers

Demandez un fichier ("obtenez le journal d'erreurs du serveur web pour aujourd'hui") et l'agent le prépare et vous répond avec un lien de téléchargement privé. Le lien ne fonctionne que pour les administrateurs connectés et expire après environ une journée. Les fichiers sont limités à 5 MB; pour tout ce qui est plus gros, demandez à l' agent de compresser ou de couper sur le serveur en premier.

L'agent peut également copier un seul fichier entre deux serveurs connectés, toujours jusqu'à 5 MB. L'écriture sur la destination est traitée comme toute autre modification qu'il effectue: en mode demande vous obtenez d'abord une carte d'approbation, le fichier existant est sauvegardé et la copie est réversible. Pour plus de sécurité, le contenu du fichier est relu à partir de la source au moment où la copie a été appliquée, pas prise du chat.

IA

Entraînez votre IA

La formation à l’IA est le processus par lequel vous apprenez à OpsIQ comment se comporter. Vous écrivez des instructions qui définissent la personnalité, les limites, le domaine de compétence et les règles d’escalade.

Train AI
Entraînez votre IAUn éditeur d'instructions AI avec des onglets Client / Admin et un ton clair en anglais, toujours et jamais règle.Entraînez votre IAespace de travailL'IA clientAdmin IATonneSympathique, concis, jamais envahissant.ToujoursOffrez un intermédiaire humain pour les litiges de facturation.JamaisPromettre un remboursement sans vérifier le compte.1TWO MANUALSAI client & admin2PLAIN ENGLISHTon, toujours, jamais3GROUNDEDPlus votre base de connaissances
Formez l'IA comme une nouvelle location, Manuels clients et administratifs rédigés en anglais simple (ton, toujours, jamais), basé sur votre KB.

Deux zones d'entraînement

Invite de l'IA client

Contrôle la façon dont l’IA parle à vos clients dans le widget de chat C’est l’invite la plus importante à bien faire.

Invite d'IA de l'administrateur

Contrôle la façon dont l'IA assiste votre équipe d'administration dans le tableau de bord de l'opérateur, en gérant les requêtes internes et l'exécution des actions.

Rédiger une excellente invite d’IA client

Votre message d’IA client devrait couvrir ces domaines:

1
Identité

Donnez-lui un nom, un rôle et une personnalité. Exemple : « Vous êtes Luna, une assistante du service clientèle sympathique et compétente pour Acme Store ».

2
Ton et style

Exemple : « Soyez professionnel mais chaleureux. Utilisez un langage simple. Évitez le jargon. Gardez les réponses concises (2-3 20 paragraphes max)."

3
Les frontières de la connaissance

Exemple : « Vous connaissez nos produits, nos prix, notre politique d'expédition et de retour. Vous ne connaissez PAS les produits des concurrents ni les décisions internes de l'entreprise ».

4
Règles d &apos; escalade

Exemple : « Passez à un agent humain lorsque le client demande un remboursement, mentionne une action en justice, signale un problème de sécurité ou pose la même question trois fois. »

5
Choses à ne jamais faire

Exemple : « Ne jamais promettre de remboursements, ne jamais partager les formules internes de tarification, ne pas inventer des caractéristiques de produits qui n'existent pas, ne donner aucun conseil médical, juridique ou financier ».

Exemple d'invites

Exemple client AI prompt · boutique en ligne
You are Aria, a friendly customer support assistant for TechGear.

PERSONALITY:
- Warm and professional
- Concise (2-3 paragraphs max per response)
- Use simple language, no jargon
- If unsure, say so honestly

KNOWLEDGE:
- Our products: laptops, accessories, software subscriptions
- Pricing: as listed in the knowledge base
- Shipping: free over $50, 3-5 business days standard, 1-2 days express ($12)
- Returns: 30-day money-back guarantee, must be in original condition

ESCALATION (hand off to human):
- Refund requests over $100
- Account security concerns
- Legal threats or complaints
- Customer explicitly asks for a human

NEVER DO:
- Promise specific delivery dates (say "estimated")
- Share discount codes not in the knowledge base
- Make up product specifications
- Give financial or legal advice
Exemple client AI prompt · entreprise d'hébergement
You are Atlas, an AI assistant for CloudHost web hosting.

TONE: Technical but accessible. Assume the customer has basic web knowledge.

KNOWLEDGE:
- Shared hosting, VPS, dedicated servers
- cPanel, DNS, SSL, email configuration
- WordPress, Joomla, Drupal installation
- Common error codes and troubleshooting

ESCALATION:
- Server outages affecting multiple customers
- Data loss or security breach reports
- Billing disputes over $50
- Complex migration requests

BOUNDARIES:
- Do NOT access customer servers or databases
- Do NOT change DNS records or passwords
- Always recommend the customer makes changes themselves
- For code issues, suggest steps but clarify you cannot debug their application

Affinez votre prompt au fil du temps

1
Démarrer avec les bases

Commencez par définir l’identité, le ton et les limites de la clé. N’essayez pas de tout couvrir dès le premier jour.

2
Revue AI History hebdomadaire

Lisez les conversations où l'IA a donné des réponses erronées ou sous-optimales.

3
Mettre à jour l'invite

Ajouter des règles spécifiques pour les problèmes récurrents. Exemple : si l'IA continue de promettre des remboursements, ajouter « Jamais promettre un remboursement. Dites que vous allez augmenter à l'équipe de facturation ».

4
Ajouter des connaissances

Si l'IA ne peut pas répondre à une question, ajoutez la réponse à la base de connaissances plutôt que d'essayer de tout mettre dans l'invite.

⚠️
Gardez votre prompt sous 2,000 mots. Des prompts trop longs peuvent confondre l'IA et augmenter les coûts de token.
Quelle est la différence entre l'invite et la base de connaissances?+

L’invite définit la personnalité, les limites et les règles de l’utilisateur, tandis que la base de connaissances fournit des informations factuelles (détails du produit, prix, politiques). L’IA lit les deux, mais l’invité façonne le comportement tandis qu’elle fournit les réponses.

Puis-je avoir des invites différentes pour différents départements?+

Si vous avez besoin d’un comportement différent de l’IA pour différents services, utilisez la base de connaissances pour fournir des informations propres à chaque service et mentionnez le contexte du service dans votre invite.

IA

Histoire de l'IA

L’historique de l’IA affiche toutes les conversations que l’AI a eues avec des clients et des administrateurs, ce qui vous permet d’auditer ses performances, de trouver de mauvaises réponses et d’identifier les lacunes en matière de formation.

Histoire de l'IA
Histoire de l'IAUn journal des tours d'IA avec les badges de type, la question et la réponse, le temps de réponse et le résultat.Histoire de l'IAespace de travailChaque tour de l'IA, enregistréchatQ: où est ma commande?A: expédié aujourd'hui, suivi UPS...0.9sansweredticketProjet de réponse pour T-12345accusé de réception du remboursement rédigé1.4sdraftedadministrateurRésumer les billets de cette semaine12-ligne de résumé retournée2.1sfaitchatQ: annuler mon abonnementRemis à un humain0.7sescalated1EVERY TURNInvite, réponse, action2SEARCHABLEFiltrer & exporter3OWNER-ONLYPiste d'audit complète
Chaque tour AI (chat, brouillon de tickets, action admin) est enregistré avec l'invite exacte, réponse, durée et résultat.

Ce que chaque conversation révèle

Date et heure

Quand la conversation a eu lieu.

Identité du client

Nom et courriel si connu, sinon IP et le pays.

Canal

Widget de chat, réponse automatique aux tickets, brouillon d’e-mail ou IA administrateur.

Messages

Transcription complète de la conversation: messages clients et réponses d’IA.

Utilisation de token

Une utilisation élevée de jetons peut indiquer que l'IA donne des réponses trop détaillées ou que la conversation a continué en rond.

Mesures prises

Toutes les actions exécutées par l'IA pendant la conversation (recherche d'ordre, création de ticket, etc.).

Évaluation

Si CSAT est activé, la note de satisfaction du client pour cette conversation.

Trouver des problèmes

Recherche par mot-clé

Recherchez des sujets spécifiques pour voir comment l'IA les traite, par exemple: recherchez "refund" (remboursement) pour vérifier si l'AI suit votre politique de remboursement.

Filtrer par classement

Affichez uniquement les conversations mal notées pour vous concentrer sur les clients insatisfaits.

Filtrer par canal

Afficher uniquement les réponses automatiques des tickets pour auditer les réponset automatisées séparément du chat.

Trier par utilisation de jeton

Les conversations à haute valeur peuvent indiquer des problèmes : l’IA vagabonde, tourne en rond ou ne répond pas à la question.

Routine d'audit hebdomadaire

1
Vérifiez les conversations peu appréciées

Qu’est-ce qui a mal tourné? S’agissait-il d’un manque de connaissances, d’une question de ton ou d’ une mauvaise réponse?

2
Vérifiez les conversations à haut jeton

Ces réponses peuvent indiquer une certaine confusion. L’IA se répétait-elle? A-t-elle échoué à comprendre la question?

3
Mise à jour de la formation

Pour les lacunes dans les connaissances, ajoutez des articles à la base de connaissance. Pour les problèmes de comportement, mettez à jour l’invite d’IA et pour les mauvaises réponses récurrentes, ajouter des règles de correction explicites.

Détecter les lacunes de connaissances

Scénario :
You search AI History for "installation" and find 15 conversations where the AI said "I do not have specific installation instructions for this product."
Que faire:

Cela signifie que votre base de connaissances ne contient pas les guides d'installation. Créez des articles pour chaque étape d'instalation du produit, puis posez les questions d'IA sur l'installations.

IA

Insights sur l'IA

AI Insights analyse automatiquement les modèles de conversation et fait ressortir des résultats exploitables : questions courantes, tendances en matière de satisfaction, lacunes dans les connaissances et schémas d’escalade.

Insights sur l'IA
Aperçus de l'IA (Intelligence Hub)The Intelligence Hub: un résumé de l'IA aujourd'hui, des alertes intelligentes, un outil Score-a-Lead / Analyser une page et un. 14-Jour Trafic Pattern graphique.Insights sur l'IAespace de travailLE BRIEF D'AUJOURD'HUITraffic up 12%; 3 Hot leads;2Les accords doivent être suivis.Alertes intelligentesErreurs de paiement spikedRebondissez sur /pricingNouveau plomb chaud des Etats-UnisChiffre d'affaires en avance sur la semaine dernièreScore un Lead / Analyser une PageIP ou URL…Exécuter14-Jour de trafic1LE BRIEF D'AUJOURD'HUIL’IA rédige le résumé du matin2SMART ALERTSDes anomalies ont été relevées3ON DEMANDMarquer un lead · analyser une page
Le véritable Hub d'intelligence: un résumé du jour écrit par l'IA, des alertes intelligentes pour les anomalies, le score de prospect à la demande et l'analyse de page, ainsi que le modèle de trafic 14-day.

Ce que les insights montrent

Questions les plus fréquentes

Les questions les plus fréquemment posées. Si « Comment puis-je réinitialiser mon mot de passe? » est #1, votre base de connaissances a besoin d'un guide de remise à zéro bien visible.

Tendances de satisfaction

CSAT scores au fil du temps. La satisfaction en matière d'IA s'améliore-t-elle ou diminue-t'il? Des gouttes soudaines peuvent indiquer un changement de base de connaissances qui a brisé quelque chose.

Taux de résolution

Quel est le pourcentage de conversations que l’IA résout sans intervention humaine? Un taux supérieur à 70% C'est bon. Ci-dessous 50% Cela signifie que l'IA a besoin de plus d'entraînement.

Raisons de l &apos; escalade

Raisons courantes: le client a demandé un humain, l’IA n’a pas pu répondre, sujet sensible, problème de facturation.

Lacunes dans les connaissances

Sujets où l'IA dit fréquemment "Je ne sais pas" ou donne des réponses peu fiables.

Durée moyenne de la conversation

Des conversations très longues (10+ messages) peuvent indiquer que l'IA ne comprend pas la question.

Utiliser les informations pour améliorer

Scénario :
AI Insights shows that 23% of escalations are "Customer asked about warranty" and the AI could not answer.
Que faire:

Il s'agit d'un manque de connaissances évident. Étapes: (1Rédiger un article complet sur la garantie dans la base de connaissances, qui couvre toutes les conditions de garantie, le processus de réclamation et les exclusions.2) Mettre à jour l'invite AI pour faire référence aux informations de garantie. (3Surveillez AI Insights la semaine prochaine pour voir si les escalades de garantie diminuent.

IA

Manuel d'IA pour les administrateurs

L'IA Admin (Ask OpsIQ) aide votre équipe à gérer OpsIQ Vous pouvez lui demander de rechercher des données, d'expliquer les fonctionnalités, de résumer les tickets et d'effectuer des actions sur la plateforme.

Admin IA
Manuel d'IA pour les administrateursLa boîte de commande Ask-OpsIQ avec une carte d'action de plateforme proposée par l'IA montrant les paramètres et confirmer / annuler.Demandez à OpsIQespace de travailDemandez à OpsIQSuspendre le service pour compte en retard #4821IAAction proposée: suspend_serviceCompte : #4821 (en retard) $120)plate-forme: WHMCS · réversible · auditéConfirmerAnnuler1ASK ANYTHINGCommandes en anglais clair2PROPOSE FIRSTAction affichée avant son exécution3YOU CONFIRMScoped & audité
Dites à l'administrateur ce que vous voulez en anglais clair; il propose l'action exacte (scoped, réversible, audité) et attend votre confirmation.

Ce que l'IA de l'administrateur peut faire

Recherchez les données

Demandez: "Montrer tous les billets de [email protected]" ou "Quel est le statut de la commande #ORD-5523?"

Résumer

Dis: "Résumez les derniers 10"Quels sont les principaux problèmes de support cette semaine?"

Expliquer les caractéristiques

Demandez-vous : « Comment puis-je configurer la réponse automatique? » ou « Que signifie le taux de rebond?

Exécuter des actions

Demandez: "Créer un ticket pour [email protected] Informations sur la facturation" ou "Fermer le ticket T-12345"

Requêtes de plateforme

Demandez-vous : « Combien de visiteurs avons-nous eu hier? » ou « Quel est notre chiffre d'affaires ce mois-ci?

Exemple de conversations

Recherche d'un client

Scénario :
Admin asks: "Find customer [email protected] and show me their recent activity"
Que faire:

L’IA recherche le client dans toutes les sources de données connectées : sessions des visiteurs, tickets, conversations sur chat, commandes et contacts CRM. Elle renvoie un résumé de l’activité récente avec des liens vers chaque élément.

Obtenir un résumé quotidien

Scénario :
Admin asks: "What happened today?"
Que faire:

L'IA résume: "Aujourd'hui, vous aviez245visiteurs (en haut)12%), 8nouveaux billets (3résolue par AI),2nouvelles commandes totalisées$198et1chat escalade sur un retard d'expédition."

Exécuter une action

Scénario :
Admin asks: "Change ticket T-5523 priority to Urgent"
Que faire:

L'IA confirme : « Je vais changer la priorité du ticket T-5523 de Normal à Urgent. Cela affectera le minuteur SLA. Confirmer? » Vous confirmez, et l'action est exécutée.

💡
L'IA Admin n'exécute que les actions enregistrées dans le Registre d'Actions, elle ne peut pas inventer des actions ou accéder à des systèmes en dehors de OpsIQ.
IA

Scénarios d'IA client

Cette section couvre les scénarios d'IA courants face aux clients avec le comportement attendu et des conseils de formation.

L'IA client
Scénarios d'IA clientUne bibliothèque de questions client associées au comportement attendu de l’IA et une balise de résultat pour chacune.Scénarios d'IA clientespace de travailBibliothèque de scénarios · comportement d'IA attendu"Où est ma commande?"Recherchez la commande via le connecteur, donnez le suiviRésoudre"Je veux un remboursement"Reconnaissez, ne promettez jamais · la main à un humainDélivrance"Le service est-il en panne?"Vérifier l'état, rapporter l'État actuelStatut"Annuler mon compte"Confirmer l’intention, puis acheminer vers un humainConfirmer1SCENARIOSQuestions fréquentes2EXPECTEDComment l’IA devrait répondre3ESSAITrouver des lacunes de formation
Une bibliothèque de vraies questions client et exactement comment l'IA doit gérer chacun, pour tester votre formation et trouver des lacunes.

Bibliothèque de scénarios

Demande de statut de commande

Scénario :
Customer: "Where is my order #12345?"
Que faire:

Comportement attendu de l'IA: (1) Recherchez la commande via le connecteur de plateforme. (2) Signaler l'état actuel (traitement, expédié, livré).3) Inclure le numéro de suivi si disponible.4) Si la commande est retardée, accuser réception et fournir un calendrier estimatif. (5) Ne jamais inventer des informations de suivi.

Demande de réinitialisation du mot de passe

Scénario :
Customer: "I forgot my password and cannot log in"
Que faire:

Comportement attendu de l'IA: (1) Fournissez les étapes de réinitialisation du mot de passe à partir de la base de connaissances. (2) Inclure le lien de réinitialisation ou le chemin d'accès à la page. (3) Mentionnez que l'email de réinitialisation peut prendre quelques minutes. (4) Suggérer de vérifier le dossier spam. (5) Si le client ne peut toujours pas réinitialiser, passez à un humain.

Demande de fonctionnalité

Scénario :
Customer: "Can you add dark mode to the mobile app?"
Que faire:

Comportement attendu de l'IA: (1) Je les remercie pour leur suggestion. (2) Expliquer comment les demandes de fonctionnalité sont traitées (enregistrées, examinées, hiérarchisées).3) NE promettez PAS que la fonctionnalité sera construite. (4) Si une fonctionnalité similaire existe, mentionnez-la.

Litige de facturation

Scénario :
Customer: "I was charged but my service is not working"
Que faire:

Comportement attendu de l'IA: (1) Reconnaître la frustration. (2) Vérifiez l'état du service si possible. (3) Communiquez avec le service de facturation pour obtenir tous les détails. (4) Ne promettez PAS un remboursement. (5) Définissez la priorité du ticket sur Haute.

Question hors sujet

Scénario :
Customer: "What is the weather like in London today?"
Que faire:

Comportement attendu de l'IA: (1"Je suis l'assistant technique de votre [entreprise] et je peux vous aider à répondre aux questions sur nos produits et services. Pour obtenir des informations météorologiques, essayez un service météo."2) Demandez s'ils ont une question sur un produit.

Comment tester le comportement de l'IA client?+

Ouvrez votre site Web dans un navigateur privé/incognito et discutez avec l’IA en tant que client. Essayez des questions courantes, des cas extrêmes et des scénarios contradictoires Vérifiez que l’AI suit vos règles de prompt et utilise correctement le contenu de la base de connaissances.

IA

Base de connaissances sur l'IA

La base de connaissances est une bibliothèque d’articles que l’IA utilise pour répondre aux questions. Lorsque le client pose une question, l’AI recherche dans la base de données les articles pertinents et les utilise pour générer une réponse précise et fondée.

Base de connaissances
Base de connaissancesLes sources alimentent un magasin de connaissances, puis une IA génère une réponse cité et fondée.Base de connaissancesespace de travailSourcesCrawl de site webArticles d’aideFAQDocuments importésConnaissancesSémantique + mot-cléIARéponse motivéeAvec une source citée."Les remboursements prennent entre 3et _53 jours ouvrables."1INGESTCrawl, FAQ, importation2RETRIEVESémantique + mot-clé3GROUNDEDRéponses à partir de votre contenu
Parcourez votre site et importez des documents dans la base de connaissances; l'IA récupère les bons éléments et réponses, ancrés et cités.

Comment ça fonctionne

1
Le client pose une question

"Quelle est votre politique de retour?"

2
L’IA recherche dans la base de connaissances

OpsIQ trouve l'article "Politique de retour" en faisant correspondre les mots-clés et la signification sémantique.

3
L’IA génère une réponse

L’IA lit l’article et rédige une réponse en langage naturel basée sur le contenu de l’Article.

4
Le client obtient une réponse précise

La réponse est basée sur votre politique réelle, pas les données générales de formation de l'IA.

Créer de bons articles

Un sujet par article

Rédigez un article distinct pour chaque sujet : politique de retour, tarifs d'expédition, configuration du compte, réinitialisation du mot de passe.

Écrire comme un FAQ

Commencez par la question que les clients posent, puis fournissez la réponse pour aider l’IA à faire correspondre les questions aux articles.

Soyez spécifique

« Les retours doivent être initiés dans les 30 jours suivant la livraison » est mieux que « Nous avons une politique de retour. »

Inclure les cas de bord

Qu’en est-il des retours internationaux, des produits numériques et des articles achetés en solde? Couvrez les exceptions.

Gardez-le à jour

Supprimez les informations obsolètes. Mettez à jour la tarification, les politiques et les procédures lorsqu’elles changent.

Articles de démarrage que vous devriez écrire

Expédition et livraison

Frais d'expédition, délais de livraison, suivi, expédition internationale et retards de manutention.

Retours et remboursements

Fenêtre de retour, conditions, processus, calendrier de remboursement et exceptions.

Gestion de compte

Réinitialisation du mot de passe, changement d'adresse e-mail, suppression de compte et exportation des données.

Prix et facturation

Descriptions des plans, cycle de facturation, méthodes de paiement, factures et monnaie.

Guides de produits

Comment utiliser chaque produit ou fonctionnalité. Instructions étape par étape avec captures d'écran.

Dépannage

Problèmes courants et solutions. Messages d'erreur et leurs correctifs.

Informations de contact

Heures d'ouverture, canaux de support, délais de réponse et voies d'escalade.

Juridique et conformité

Résumé de la politique de confidentialité, résumé des conditions d'utilisation, demandes de données GDPR.

Connaissance du connecteur

Chaque connecteur peut apporter des connaissances à l’IA. Lorsqu’un connecteur est activé, ses articles de connaissance intégrés (catalogue de produits, questions courantes, dépannage spécifique à la plateforme) sont automatiquement disponibles pour l’AI. Vous pouvez activer ou désactiver les connaissance de connecteur par connecteur dans les paramètres du Connecteur.

Budget de jetons

La base de connaissances dispose d'un plafond configurable (par défaut: 32,000 jetons) qui contrôle la quantité de contexte de connaître envoyé à l'IA par conversation. Si votre base de données est très grande, l'AI sélectionne les articles les plus pertinents dans ce budget. Augmentez le plafond si l'intelligence artificielle ne trouve pas d'articles pertinents; diminuez-le si vous souhaitez réduire les coûts des jetons.

Combien d'articles dois-je avoir?+

Commencez par5-10 Ajoutez-en d'autres à mesure que vous identifiez des lacunes grâce à l'historique de l'IA et aux informations sur l'intelligence artificielle. La plupart des entreprises ont besoin 20-50 Articles pour une couverture complète.

Puis-je importer des articles d'un autre système?+

Actuellement, les articles sont créés manuellement dans OpsIQ Vous pouvez copier et coller du contenu à partir de FAQ, centres d'aide ou documents existants.

Dans quel format les articles doivent-ils être?+

Le texte brut fonctionne mieux. L'IA comprend le langage naturel mieux que HTML ou markdown structuré. Écrivez comme vous expliqueriez à un client.

IA

Évaluation de l’IA et Watchtower

Les ensembles d'évaluation transforment les questions critiques des clients en tests répétables pour la qualité de réponse, les citations, l'escalade et la sécurité d'action.

Écran de produit
Évaluation de l &apos; IAL’évaluation de l’IA liste les cas d’essai, les comportements requis, les derniers résultats et les exécutions prévues de Watchtower.Évaluation de l &apos; IAespace de travailSETS6CASES84PASS RATE96%VUE DE L'ESPACE DE TRAVAIL EN DIRECTPolitique d'expéditionCitation requisePasserDemande de remboursementConfirmation humaine requisePasserRéclamation non étayéeAction interditePasserQuestion des migrationsSource attendue manquanteFichiers1CREATE CASESEntrée et règles d'or2RUN SAFELYEssai ou évaluation en direct3WATCHProgramme quotidien ou hebdomadaire
L’évaluation de l’IA liste les cas d’essai, les comportements requis, les derniers résultats et les exécutions prévues de Watchtower.

Les administrateurs complets peuvent créer des jeux d’évaluation avec une instruction, les libellés de sources attendus, les citations obligatoires, les règles de confirmation humaine et les attentes en matière d’escalade

La Tour de Garde Planifie des vérifications quotidiennes ou hebdomadaires via cron et exécute un nombre limité de cas (jusqu'à huit par passage planifié) Examine les échecs en même temps que le fournisseur/modèle, la version prompt, la Version de connaissance, les actions proposées et le coût avant de modifier le comportement de production.

IA

Langues et traduction

Langues gère le texte traduit destiné au client et le comportement utilisé lorsque OpsIQ suit la langue du client.

Écran de produit
LanguesLa page Langues affiche la langue source, les langues traduites, l'état brouillon/en direct et le comportement de la langue du client.Languesespace de travailSOURCEAnglaisLANGUAGES4VIVRE3VUE DE L'ESPACE DE TRAVAIL EN DIRECTFrançaisInterface et contenuEn directAllemandInterface et contenuEn directEspagnolProjet de traductionBrouillonSuivre le clientRépondre dans la langue détectéeActivé1SET SOURCELangue d'origine de l'opérateur2ADD LANGUAGETraduire en arrière-plan3PUBLISHDraft ou live
La page Langues affiche la langue source, les langues traduites, l'état brouillon/en direct et le comportement de la langue du client.

OpsIQ Définissez correctement la langue source avant de créer des traductions, ajoutez les langues cibles, puis vérifiez les brouillons avant de publier. « Suivre la langue du client » contrôle la langue de réponse ; traduire l’interface du widget contrôle ses boutons, ses étiquettes et le texte du système.

Ne vous fiez pas à la traduction automatique pour les textes juridiques, de remboursement ou de sécurité sans avoir reçu une révision humaine.

Chaque endroit qui contient votre propre formulation est répertorié avec son nombre de messages: messages de chat client, promotions, messages proactifs, flux de chat, visites guidées, annonces, bulles teasers et plus encore. Sondages et formulairesLa surface du sondage couvre entièrement chaque sondage publié : titre, toutes les questions, toutes le choix de réponses, boutons, copie d’accueil et de remerciement, page chrome et pages des résultats. Les clés sont liées à l’ID de la question et à la valeur de l’option, donc en réordonnant les questions ou les options vous ne perdez jamais une traduction, et en reformulant un message, ce dernier est seulement traduit.

Le sondage par e-mail post-chat suit la langue dans laquelle le visiteur a réellement discuté, à condition que cette langue soit une des langues proposées ici. Sinon, il utilise la langue de votre système. Ses six champs modifiables sont traduits sur cette page également et ce comportement dispose de son propre commutateur dans les paramètres du chat client.

Messages de ticket et de portail couvre les opérateurs de texte fixe tapent une fois et chaque client reçoit ensuite dans cette langue: l'accusé de réception du ticket, les confirmations ouvertes, fermées et de rétroaction, les sign-offs par département et la ligne d'accueil portail. (La réponse automatique AI n'a pas besoin de cela, il répond déjà dans la langue du client.) Envoyez des e-mails à vos clients dans leur propre langue activé en OpsIQ L'écriture, l'email du ticket résolvent la langue du destinataire dans cet ordre : la langue qu'ils ont choisie dans le portail ou le centre d'aide (porté sur le ticket), la localité de leur enregistrement de contact, puis la langue dans laquelle ils ont écrit, détectée localement par la plage de scripts et les mots marqueurs, sans appel externe. Seules les langues sélectionnées sur la page Langues sont jamais utilisées, donc la fonctionnalité est inerte jusqu'à ce que des langues soient ajoutées. HTML e-mail wrapper n'est délibérément pas traduit: c'est un balisage, pas de la prose. L'e-mail adressé au personnel (notifications, alertes départementales, mémoires d'analystes, rapports programmés, le digest hebdomadaire) utilise toujours le langage système.

Appui

Centre d'aide

Votre centre d'aide est un site d'assistance en libre-service créé à partir des articles que vous publiez. Les clients peuvent le lire et y effectuer des recherches sur sa propre page publique, ainsi qu'à l'intérieur du widget de chat, afin de trouver les réponses par eux-mêmes avant même d'ouvrir une conversation. Tout ce qui s'y trouve provient de votre base de connaissances, donc le contenu qui sous-tend votre IA alimente également votre aide publique.

Où vos clients le voient

Sa propre page publique

Un site d'aide propre et consultable à /help.php. Les clients peuvent naviguer par catégorie, rechercher et ouvrir n'importe quel article. Vous pouvez lui donner votre propre nom et style.

À l'intérieur du widget de chat

Un lien d’aide dans le widget de chat pour que les clients puissent rechercher vos articles sans quitter le chat et, s’ils ont encore besoin d’une personne, ils sont à un seul clic du début d’un échange.

Allumez-le

1
Ouvrir la page du Centre d'aide

Aller à Config, then Help Center Dans votre admin et activez Activer le centre d'aide public.

2
Donnez-lui un nom et un regard

Définissez le nom du centre d’aide, qui s’affiche dans l’en-tête et dans l'onglet du navigateur. Choisissez un style visuel. Vous pouvez désactiver la navigation supérieure pour une page propre sans menu.

3
Publier quelques articles

Rien ne s'affiche jusqu'à ce que vous publiiez des articles sur le site.

Publier des articles dans le Centre d’aide

Les articles sont stockés dans votre base de connaissances. Un article apparaît dans le Centre d’aide une fois qu’il est publié et marqué comme public, ce qui peut se faire de plusieurs façons :

Publier un article

Ouvrez l’article, marquez-le comme publié et activez l'option pour l'afficher dans le Centre d'aide.

Publiez tout en une fois

Utilisez le bouton Publier tout Utilisez le bouton pour envoyer l’ensemble de vos ensembles publiés au Centre d’aide en un seul clic, plutôt que de les faire un par un.

Transformez les FAQ en articles

Vous avez déjà des FAQ? Utilisation Publier tout pour aider Pour les transformer en articles d'aide afin qu'ils soient à côté de tout le reste.

Importer une base de connaissances existante

Vous venez d'un autre help desk? Importer KB Vous avez trois façons de faire pointer une base de connaissances existante vers votre contenu, en utilisant le bouton « Articles ».

Coller un URL

Si elle reconnaît la plateforme (par exemple Zendesk), elle lit l’arborescence de catégories exacte de cette plateforme. Sinon, elle explore le site et reconstruit la structure à partir des pages, en n’important que les articles réels et en sautant les pages de connexion, de tarification et de contact.

Choisissez une application connectée

Si une plateforme est déjà connectée à cet espace de travail et qu'elle contient une base de connaissances, elle apparaît dans un menu déroulant sous Importer à partir d'une application connectée. Sélectionnez-la et importez, pas besoin de URL ou mot de passe. L'application n'est répertoriée qu'une fois connectée et configurée.

Télécharger un CSV

Pas de site en direct à pointer? Télécharger une feuille de calcul avec title, category, et body 2 colonnes. Mettre Parent / Child Dans la colonne de catégorie pour créer des catégories imbriquées.

Quel que soit le chemin que vous choisissez, vous obtenez un Voir l'aperçu d'abord: les articles qu'il a trouvés, regroupés par catégorie, chacun avec une case à cocher pour que vous puissiez supprimer tout ce dont vous ne voulez pas. Rien n'est enregistré jusqu'à ce que vous cliquiez sur Importer. Annuler L'importation entière en un seul clic, ou Re-synchronisation Une importation URL ou connected-app plus tard pour tirer dans les nouveaux et modifiés articles.

💡
Développeurs: n'importe quel connecteur peut annoncer sa base de connaissances à ce menu déroulant en déclarant un kb_capabilities Dans son bloc settings.json (type kb_source, avec un adapter et un base_templateVoir la section Connecteurs et la référence de connecteur de plateforme.

Organisez-vous avec l'IA

Un centre d'aide bien rangé est facile à parcourir et plus facile à rechercher. Organisez-vous avec l'IA En un clic, il lit vos articles publiés, les trie en catégories pertinentes et ajoute des balises. Il crée une catégorie quand il en a besoin, réutilise une catalogue qui y correspond déjà, et ignore tout ce que vous avez déjà organisé, de sorte que vous pouvez le lancer à nouveau chaque fois que vous ajoutez de nouveaux articles. Laissez l'IA s'organiser en sous-catégories dans les paramètres du Centre d'aide et il peut également classer des articles sous Parent / Child Catégories, ce qui est pratique juste après l'importation d'une base de connaissances qui avait des sous-sections.

💡
Les catégories permettent aux clients de naviguer et les tags affinent la recherche sur la page publique et dans le widget. Vous pouvez renommer ou déplacer des éléments par la suite, l’IA vous donne un point de départ solide, pas une configuration avec laquelle vous êtes coincé.

Le centre d'aide dans votre widget de chat

Vous pouvez afficher le Centre d'aide directement dans le widget de chat afin que les utilisateurs puissent rechercher des réponses avant de vous envoyer un message.

Dans l'en-tête

Une petite icône d'aide en haut du widget.

Au fond

Un lien textuel sous la boîte de message, par exemple « Parcourir le centre d'aide » Vous pouvez modifier le libellé.

Les deux endroits

Affichez-le dans l'en-tête et en bas pour une visibilité maximale.

Le lien d'aide a sa propre couleur sous le widget Paramètres de l'apparence. Aucun Pour correspondre à votre couleur de lanceur, ou choisissez un Solide Couleur ou un DégradéL'ensemble de l'expérience d'aide suit votre thème de widget, donc il semble toujours faire partie de votre marque.

Mettez votre centre d'aide sur votre propre adresse web

Votre centre d'aide dispose déjà de sa propre adresse propre et partageable (par exemple /help/your-help-centerVous pouvez aller un peu plus loin et le servir sous votre verre. Votre propre domaine, ainsi les clients et les moteurs de recherche le voient comme faisant partie de votre marque, par exemple yourdomain.com/help ou help.yourdomain.comTout continue de fonctionner sur votre domaine : les liens, les images, la recherche et les évaluations des articles.

Sous votre site principal

Dans Configuration, puis Centre d'aide, ouvrez le Intégré onglet et trouver "Afficher votre centre d'aide sur votre propre adresse web".Cloudflare, Nginx ou Apache), copiez le bloc prêt à l'emploi et collez-le dans votre site. Guide de configuration Cliquez sur le bouton à côté avec les étapes exactes.

Sur un sous-domaine

Préférer help.yourdomain.com? Le même panneau a une option de sous-domaine. Sur Cloudflare un sous- domaine est la route la plus fiable, et il vous donne une adresse propre sans rien après elle.

💡
Utiliser Cloudflare? Il ne fait tourner son Worker que sur une adresse qui est proxy par le biais de _Cloudflare (le nuage orange). Votre domaine principal pointe souvent directement vers votre site web, donc une règle placée sur le domaine principal ne peut rien faire tranquillement. help.yourdomain.com. Le guide de configuration vous accompagne dans l'enregistrement DNS et dans le parcours.
Bon pour SEO_. Une fois que votre centre d'aide est sur votre propre domaine, les moteurs de recherche indexent vos articles sous votre marque. Chaque page déclare son adresse correcte et le plan du site les liste, donc le même article n'est jamais indexé deux fois.
💡
Dans les paramètres "Ouvrir dans le centre d'aide" du widget de chat, définissez la valeur Où le lien va à Votre propre domaine de centre d'aide Ensuite, ces liens d'article s'ouvrent sur votre domaine aussi, et non pas sur l'adresse OpsIQ.

Découvrez comment se porte votre centre d'aide

Au-delà des votes sur un seul article, le Centre d'aide possède son propre analytics. Activez-le dans les paramètres du Centre d'aide et enregistrez discrètement comment les gens utilisent votre aide : les articles les plus consultés, ce qu'ils recherchent, et les recherches qui sont revenues vides (une liste prête à écrire), en train de travailler sur le pays visiteur et l'appareil de son propre, de sorte qu'il n'a pas besoin du widget de chat installé pour rapporter. both Vous pouvez voir les endroits où votre aide apparaît, la page publique et l'aide dans le widget, ainsi que combinés, de sorte que vous pouvez voir à quel point chacun est réellement utilisé.

💡
L'analyse reste désactivée jusqu'à ce que vous l'activez, et vous pouvez avoir les adresses IP des visiteurs anonymisées. Rien n'est enregistré avant que vous ne souscriviez.

Choisissez ce qui apparaît sur chaque partie de la page

Chaque section du Centre d'aide (les catégories sur la page d'accueil, les articles populaires, la liste des articles sur une page de catégorie et plus) a sa propre règle simple. Pour chacun, vous pouvez le montrer ou le cacher, et afficher all articles, a Numéro de série, le dernier, ou seulement ceux que vous feature Lorsqu'une règle vient compléter une liste, les clients reçoivent toujours un lien « Afficher tout », de sorte que rien n'est vraiment hors de portée.

Vous décidez également à quoi ressemblent les votes utiles: cachés, un ratio amical comme "12 of 14 Un paramètre de votes minimum empêche un tout nouvel article d'afficher une image désagréable "0Out of0".

Découvrez quels articles fonctionnent

Chaque article montre un Cette réponse vous a-t-elle été utile? Chaque oui ou non est compté par article, de sorte que vous pouvez voir en un coup d'œil quels articles répondent bien aux questions et ceux qui ont besoin d'être réécrits. Les votes répétés du même visiteur sont ignorés, donc les comptes restent honnêtes.

Texte et étiquettes

Vous pouvez modifier les titres et les étiquettes du Centre d’aide pour qu’ils correspondent à votre voix. Laissez n’importe quel champ vide pour revenir à une valeur par défaut raisonnable. Vous ne devez donc modifier que le libellé que vous souhaitez réellement changer.

Chaque article que vous publiez ici est le même contenu que l’IA utilise pour répondre aux chats et aux tickets, donc améliorer l’un améliore l’autre.

Questions fréquentes

Dois-je rédiger un contenu distinct pour le Centre d'aide?+

Non, il est construit à partir des mêmes articles de la base de connaissances que l’IA utilise déjà. Publiez un article une fois et il peut servir les deux.

Puis-je garder certains articles en interne?+

Oui. Seuls les articles que vous publiez et marquez comme publics apparaissent dans le Centre d’aide, tout ce qui n’est pas publié est exclu.

Les clients pourront-ils toujours joindre une personne?+

Oui, le lien d’aide du widget est à un clic de démarrer une conversation, donc le libre-service ne piège jamais personne.

Croissance & SEO

Site Intelligence (suite SEO)

Site Intelligence est le SEO intégré de OpsIQ et la suite de recherche-visibilité. Il rampe votre site comme un moteur de recherche, trace où vous rangez, recherche des mots clés, surveille les backlinks et les concurrents, scanne votre présence locale de carte, vérifie la vitesse de page, et transforme tout en rapports prêts à la clientèle, avec un analyste AI qui explique quoi réparer et peut rédiger les corrections. C'est une fonctionnalité premium; quand elle apparaît comme Site Intelliance dans la barre latérale.

Intelligence du site
Tableau de bord Site IntelligenceUn tableau de bord SEO montrant un score d'état du site, le suivi des mots-clés et une tendance du trafic.Intelligence du siteyoursite.com86SANTÉ DU SITE3 questions critiquesSuivi du rang de mots-clésA. Service d ' assistance#3Chat en direct#7CRM pour les agences#12Clics organiques1CRAWLTrouve les problèmes techniques2DÉPLACEMENTClassements, mots-clés, backlinks3ANALYSE DE L'AIExplique et rédige des correctifs
Le site Intelligence : un score de santé sur le site du dernier crawl, un suivi des mots clés en direct, une tendance de clics organiques et la boucle en trois étapes : crawling, track, laissez l'IA brouillonner les corrections.

Lancez un crawl · commencez ici

Un crawl est : OpsIQ Visiter vos pages comme le ferait un moteur de recherche, pour trouver des problèmes techniques : liens cassés, titres manquants, contenu maigre, pages lentes, problèmes d'indexation.

1
Commencez le crawl

Dans l'aperçu, cliquez pour démarrer un crawl. OpsIQ le met en file d'attente et parcourt vos pages en arrière-plan. Un indicateur de statut indique la progression.

2
Lire les rapports

Chaque problème est regroupé par gravité afin que vous puissiez aborder les plus grands succès en premier.

3
Laissez l'IA vous aider

L'analyste de l'IA produit un mémoire en langage clair sur ce qui est faux et pourquoi il importe, et peut générer des corrections suggérées que vous examinez avant de postuler.

Ce que Site Intelligence suit

Crawls & santé du site

Scanne vos pages pour les problèmes techniques SEO et liste chaque page avec ses problèmes. Ré-exécutez à tout moment, ou planifiez-la.

Suivi du classement

Ajoutez les mots-clés qui vous intéressent; OpsIQ vérifie où se classe votre site et suit son mouvement au fil du temps.

Recherche de mots clés

Découvrez de nouvelles idées de mots-clés à cibler, avec l'aide du coach AI pour les mots-clefs.

Liens retour

Découvrez qui vous renvoie vers votre site, actualisez la liste et refusez les liens que vous ne souhaitez pas associer à votre site.

Concurrents

Ajoutez des domaines concurrents et comparez votre visibilité avec celle de vos concurrents, grâce à une analyse concurrentielle par IA.

Grille locale (carte)

Analysez la visibilité des fiches locales sur une grille géographique pour voir où vous apparaissez sur la carte, ainsi que les outils de profil d'entreprise Google.

Vitesse de page

Lancez des contrôles de vitesse de page afin de corriger les pages lentes qui nuisent au référencement et aux conversions.

Contenu de l'IA

Générez des briefs et des brouillons de contenu ciblant les mots-clés que vous ciblez.

Rapports

Créez des rapports imprimables et prêts à l'emploi pour tous les éléments ci-dessus.

Connectez Google pour des données précises

Deux connecteurs Google transforment les estimations en nombres réels:

Console de recherche Google

Recherche

Obtenez les requêtes, clics et impressions exactes que Google rapporte pour votre site, cartographiez votre propriété et découvrez des opportunités de classement directement à partir des données propres de Google.

Google Analytics 4

Trafic

Combinez vos données de trafic et d'engagement avec vos données SEO, afin que les rapports affichent la visibilité et le comportement ensemble.

Actualisations planifiées et rapports en marque blanche

Vous n'avez pas à tout exécuter à la main. Rafraîchissements planifiés re-cours rampes, contrôles de rang, vérifications de mots clés, backlink rafraîchit, local-grid scans et rapport génération sur une cadence (quotidienne ou hebdomadaire selon le plan et le volume).OpsIQcron, voir la section Cron et l'automatisation. Les rapports générés exportent comme des documents imprimables et prêts à la clientèle: les agences envoient à chaque client un régulierSEOmise à jour, et comme les données de chaque domaine sont séparées, chaque client ne voit que les siennes.

Certaines fonctionnalités du site Intelligence appellent les fournisseurs de données externes et l'IA par OpsIQ Le fournisseur configuré. Ils fonctionnent hors de la boîte lorsque la suite est activée pour votre plan. Si un rafraîchissement ne s'exécute pas, confirmer le OpsIQ cron fonctionne (voir Cron et automatisation).
Dois-je ajouter quelque chose à mon site pour le suivi SEO?+

Pour obtenir des données exactes sur le trafic et les recherches, connectez Google Search Console à GA4.

Puis-je suivre plusieurs domaines ?+

Oui, ajoutez chaque domaine séparément ; leurs crawls, classements et rapports restent entièrement isolés les uns des autres.

À quelle fréquence devrais-je ramper?+

Une fois par semaine est suffisant pour la plupart des sites; crawlez à la demande après un changement important de contenu ou de structure.

Croissance & SEO

Auto-Implémentation (SEO Agent)

L'auto-implémentation est la partie de Site Intelligence qui applique en fait les correctifs le crawl et l'analyste AI recommandent, au lieu de vous conseiller seulement. L'agent travaille strictement à partir de ce que Site Intellectual a déjà trouvé (il ne peut jamais inventer un changement) et marche chaque fix dans la même boucle sûre : un aperçu de course à sec, votre approbation par étape, l'écriture en direct, un instantané automatique, et un re-crawl qui prouve que le nombre de dossiers ouverts a baissé.

Mise en œuvre automatique
Agent SEO d'auto-implémentationUn flux montrant les correctifs SEO recommandés passant par l'aperçu, l'approbation et une écriture en direct, avec un re-crawl de preuve.Mise en œuvre automatiqueyoursite.comCorrections recommandéesAdd missing <title>approuvéRéparation du fichier robots. txtapprouvéEnvoyer le plan du site.xmlreviewAVANTAGES DU DRY-RUN (DIFF)+ <title>AI Helpdesk - OpsIQ</title>+ <meta name=description ...>- <title>Home</title>ApprouverShipPROUVEZ-LE - RÉEXPLORERQuestions en suspens 124Instantané enregistré1AVANTAGEDifférence de run-dry de chaque correction2APPROUVEZ & ÉCRIVEZSSH ou hébergé API3PROVE & ROLLBACKRe-crawl + instantané
Exécution d'une session : l'agent liste les correctifs déjà recommandés par Site Intelligence, affiche un diff de test pour chacun d'entre eux et applique ceux que vous approuvez. SSH or a hosted API, des instantanés avant chaque écriture et re-crawls pour prouver que le nombre de problèmes ouverts a chuté.

Ce qu'il peut changer

L'agent n'applique que les correctifs déjà recommandés par Site Intelligence (ou l'analyste de l'IA) pour ce domaine. Sur toutes les plateformes prises en charge, cela couvre :

Configuration du serveur

sitemap.xml, robots. txt et redirection, règles canoniques et d'en-tête dans. htaccess (Apache / LiteSpeed) ou la configuration nginx.

Chaînes de redirection

Réduit une chaîne de redirection multi-sauts à un seul saut direct vers le URL final, dans le même bloc. htaccess géré, afin que la vitesse et la valeur du lien cessent de fuir par les sauts supplémentaires.

Page <head>

Titres de page, méta descriptions, balises canoniques et blocs de données structurées (schema) manquants ou faibles.

WordPress SEO

Yoast, Rank Math et SEOPress titres & meta, et le texte d'image alt, appliqué par WP-CLI sur leSSHchemin ou le RESTAPIsur le chemin hébergé.

WordPress données structurées

Adds JSON-LD (schema) pour les pages qui ne l'ont pas. SSH Sur le chemin hébergé, un petit helper géré (un plugin à utiliser obligatoirement) imprime le balisage pour qu'il fonctionne avec ou sans un plugin SEO ; sur le chemin d'hébergement, votre plugin SEO le transporte.

Liens internes

Ajoute un lien interne pertinent à l'intérieur du contenu WordPress existant pour sauver des pages orphelines et relier les articles connexes. Un lien par page, jamais dans un titre, un liens existant ou un shortcode, et toujours approuvé par vous en premier.

Réécriture de contenu sur page mince

Brouillonne le contenu de remplacement complet pour les pages minces (activé par une option d'exploration, voir ci-dessous). Chaque brouillon est examiné et approuvé par vous avant toute publication. L'ancien contenu est conservé afin qu'il puisse être restauré.

Cache de la page (WordPress)

Active le cache de page W3 Total Cache lorsque l'exploration détecte des problèmes de vitesse et que ce plugin est installé, afin que les pages soient servies plus rapidement.

Shopify SEO

Titres et descriptions SEO de produits et collections, référencement des pages et articles de blog, plus 301 Les redirections, à travers le. Shopify Admin API.

Webflow SEO

Titre SEO par page et meta description à travers le. Webflow Données API v2.

Préparer les correctifs automatiquement (deux options de crawl)

Le panneau Configurer l'intelligence du site pour un domaine (ses paramètres d'exploration) dispose de deux options qui déterminent à l'avance le nombre de lignes que l'agent doit configurer. Les deux sont désactivées par défaut et utilisent toutes les deux des crédits d'IA. Vous ne pouvez donc les activer que lorsque vous souhaitez que ce travail soit effectué pour vous.

Préparation automatique des correctifs d'IA après chaque crawl

Chaque crawl écrit également le contenu concret de la correction (titres, descriptions méta, texte alternatif, schéma, redirections) pour ce qu'il a trouvé, afin que les corrections soient prêtes à être examinées et appliquées au moment où l'exploration se termine plutôt que d'être générées plus tard sur demande.

Réécriture de contenu par IA (pages minces)

L’agent peut rédiger un projet de contenu complet pour remplacer les pages minces. Rien n’est jamais publié seul : chaque projet apparaît comme une modification que vous examinez côte à côte et approuvez ou rejetez, le contenu précédent est conservé afin qu’il soit réversible, et il est limité à quelques pages par passage.

💡
Chaque modification passe toujours par les mêmes étapes d’approbation, de prise de vue et d’annulation que n’importe quel autre correctif, donc l’activation de ces options ne met jamais rien en ligne par elle-même.

Deux façons de se connecter

SSH / SFTPchemin

Autogéré

Pour les sites sur votre propre serveur, l'agent se connecte par SSH/SFTP Utilise les identifiants que vous stockez, modifie directement la configuration du serveur et les fichiers de page, et exécute WP-CLI pour. WordPress Idéal lorsque vous avez accès au shell et que vous voulez avoir le contrôle total des fichiers.

Accueillé...API chemin (non) SSH)

Sans coque

Pour les plates-formes qui ne permettent pas SSH, l'agent travaille entièrement à travers un fonctionnaire API connecteur, WordPress (REST + mot de passe d'application), Webflow (Données API v2) et Shopify (Administration API Rien n'est installé sur l'hôte.

💡
Wix et Squarespace n’ont pas de API SEO-write public, donc sur ces plateformes Auto-Implement fonctionne en mode consultatif: il vous montre le changement exact à faire (le titre précis, la méta ou le paramètre) pour que vous puissiez l’appliquer manuellement. Tout le reste est en lecture seule et sécurisé.

Allumez les connecteurs

L'agent atteint chaque plateforme par un connecteur:

Construit en

Shopify et WordPress connectique navire avec OpsIQ, il suffit de les activer sous Connecteurs et d'ajouter les identifiants du magasin / site.

De la Marketplace

Webflow, Wix et Squarespace s’installent depuis Connecteurs → Marketplace, puis se connectent de la même manière.

Comment une session fonctionne

1
Choisissez les correctifs

Ouvrez l'option Auto-Implement (rocket) dans la section Site Intelligence, qui répertorie les problèmes déjà détectés par Site Intelligence et qu'il peut corriger sur ce domaine.

2
Prévisualiser chaque modification

Pour chaque fix, l'agent montre une diff à sec (exactement ce qu'il écrira) avant que quelque chose ne touche le site en direct.

3
Approuver étape par étape

Vous approuvez (ou ignorez) chaque modification individuellement, rien n'est appliqué sans votre autorisation explicite à cette étape.

4
Il écrit, puis prend des clichés

Sur approbation, l'agent effectue le changement en direct. SSH ou l'hébergé API et enregistre d'abord un instantané, afin que toute modification puisse être annulée.

5
Prouvez-le, vivez

Au fur et à mesure qu’il applique chaque changement, l’agent vérifie immédiatement la page exacte et affiche un verdict « corrigé en direct » étape par étape. Vous pouvez donc regarder chaque correction atterrir sur la page active au fur et aux mesures de sécurité pour éviter les erreurs d’accès. À la fin, il re-crawl le site entier et confirme que le nombre de problèmes ouverts a diminué.

Sécurité & facturation

SEO-seulement

L'agent ne peut faire que ce que Site Intelligence recommande pour ce domaine. Il ne peut pas apporter des modifications arbitraires à votre site ou serveur.

Approbation par étape

Chaque écriture est prévisualisée en tant que diff et appliquée uniquement après votre approbation de cette étape spécifique.

Capture d'instantané & retour

Un instantané est sauvegardé avant chaque écriture, de sorte que toute modification peut être annulée.

Preuve en direct par étape

Chaque page modifiée est vérifiée à l’instant où elle est écrite et reçoit un verdict « corrigé en direct », de sorte qu’un correctif est confirmé par rapport à la page active immédiatement, pas seulement dans le re-crawl final.

Le contenu n'est jamais publié automatiquement

Les liens internes et les réécritures de contenu de page fine ont un impact plus important, donc ils vous sont toujours présentés pour approbation et ne sont jamais appliqués automatiquement, quel que soit le mode utilisé.

Managed-IA uniquement

L'implémentation automatique s'exécute sur l'IA gérée ; elle est bloquée lorsqu'un espace de travail utilise ses propres clés (BYOK).

Facturation

Les jetons AI facturent normalement comme vous les utilisez, plus un forfait par utilisation par session d'exécution automatique, tous deux tirés du même crédit Géré-AI.

Activez-la sur la page de configuration d'IA (carte Auto-Implement) et assurez-vous que le connecteur pour votre plateforme est connecté en premier.
Est-ce que ça change quelque chose sans demander?+

Non, chaque modification est prévisualisée en tant que diff de test et appliquée uniquement après avoir approuvé cette étape précise. Un instantané est sauvegardé avant chaque écriture afin que vous puissiez revenir en arrière.

Ai-je besoin d'un accès SSH?+

Pas sur WordPress, Shopify ou Webflow. Ceux qui travaillent par l'intermédiaire de leur APIs sans accès au shell. SSH est seulement l'un des deux chemins, utilisé lorsque vous voulez que l'agent modifie la configuration du serveur et les fichiers directement sur votre propre serveur.

Comment puis-je savoir si cela a fonctionné?+

Après avoir appliqué les correctifs approuvés, l'agent re-explore le site et affiche le nombre de problèmes ouverts avant et après, afin que vous puissiez confirmer que les corrections ont réduit les problèmes.

Est-ce qu'il réécrit ou publie le contenu de la page par lui-même?+

Les réécritures de contenu par IA sont désactivées jusqu’à ce que vous les activiez dans les options d’exploration, elles sont limitées à quelques pages minces par passage et chaque brouillon est affiché pour approbation côte à côte avant toute publication. Le contenu précédent est conservé, donc une réécriture peut toujours être annulée.

Puis-je l'utiliser avec mes propres clés AI?+

Non. La mise en œuvre automatique est uniquement disponible pour l’IA gérée et est bloquée sous BYOK. Elle facture les jetons d’IA normalement, plus des frais fixes par session et par utilisation, à partir du même crédit AI géré.

Croissance & engagement

Studio d'enquête

Survey Studio est l’espace de travail pour la création de sondages modifiables qui peuvent être diffusés sous forme d’une page autonome riche, d’un widget de site Web ou d’intégration en ligne. Le produit actuel fournit également des liens hébergés, des aperçus signés de brouillons, des invitations privées, le partage par code QR, la navigation dans les réponses et des analyses spécifiques au sondage.

⚠️
Limite actuelle par rapport à la cible: Connector Builder, l'expérience de création et d'aperçu premium survey Survey Studio a toujours besoin de l'architecture indépendante multi-déploiement, du jeton signé Survey Identity Gateway, du câblage cible/variable, du flux d'envoi CRM Outreach et des données typées pour les opérations de déploiement. surveys.* API.

Créer un sondage

1
Choisissez comment les gens vont le prendre

Le flux de cibles approuvé commence par le type d’enquête et ajoute plus tard les déploiements CRM par e-mail, liens privés et QR comme choix de première classe.

2
Choisissez le but

Choisissez NPS, CSAT, CES, commentaires sur les produits, post-achat, annulation, onboarding, site web, événement, webinaire, support, lead/démo, essai, témoignage, recherche, employé, accueil ou commentaires généraux.

3
Utiliser un modèle complet ou Commencer par le vide

Le choix d'un modèle crée un brouillon copié : modifier votre sondage ne change pas le démarreur ni aucun autre sondage, mais vous pouvez choisir de créer un nouveau sondage à partir du modèle.

4
Personnaliser ou Révision rapide

Personnaliser ouvre chaque question, conception, comportement et contrôle de livraison. La révision rapide ouvre le même brouillon lors du dernier contrôle de la vue client.

Choix de livraison et comportement actuel

Page & lien autonome

Une page personnalisée réactive avec son propre URL. Utilisez des invitations privées et une date d'expiration lorsque chaque destinataire a besoin d'un lien contrôlé.

Widget de site web

Il peut utiliser des règles de page, géographiques, d’appareil, de visiteur, de date, d'échantillonnage, de temps de rechargement, de visiter et de quota. Il est toujours pris en charge par le pont active-widget hérité pendant que l'architecture de déploiement est construite.

Intégration en ligne

Un sondage responsif placé à l'intérieur d'une page, d'un portail, d’un produit ou d' un centre d'aide.

Courriel

Aujourd’hui, le Studio peut générer des invitations HTML et des liens privés. L’envoi de bout en bout à partir de contacts/segments CRM, avec consentement, suppression, planification, réessai et corrélation des réponses, est la cible d’intégration approuvée de CRM Outreach.

Conception et prévisualisation d'entreprise

Les pages de sondage comprennent des thèmes et familles de mises en page propriétaires de Survey, des contrôles réactifs, une copie d’accueil et de remplissage ainsi qu’un aperçu du brouillon signé. L’aperçu du concepteur est pleine largeur sous l’éditeur, pas un rail latéral étroit, il utilise le véritable runtime hébergé dans un cadre sandbox et prend en charge les largeurs de bureau, tablette et téléphone; le trafic d’affichage n’écrit ni réponses ni analyses.

💡
Le ciblage, l'identité, les ressources, le rendu et les analyses en temps d'exécution doivent être la propriété de Survey. Le contenu promotionnel ne peut être réutilisé que par une copie/importation explicite unique qui crée des données de sondage distinctes ; les modifications ultérieures apportées à Promotion ne doivent pas avoir d'effet.

Le produit de forme complète

Déploiements indépendants

En direct

Un sondage peut avoir des déploiements de page, widget, intégration, e-mail CRM, lien privé et QR séparément en version, chacun avec son propre état, design, audience et analyse. Chaque sondage est suspendu, désactivé ou supprimé.

CRM Outreach et campagnes

En direct

Créez une audience vérifiée à partir de segments CRM et de connecteurs compatibles avec les sondages, figez-la en une version immuable, émettez une invitation signée pour chacune et envoyez-la via le connecteur d'email sortant épinglé avec preuve de livraison par invitation.

Kit de terrain et validation

En direct

Sliders, choix d'images, téléchargement de fichiers, signature, adresse, téléphone, en-têtes et texte riche, avec longueur min/max, email/URL/numéro prédéfini, texte d'erreur personnalisé et paramètres URL par question.

Logique, formules, résultats

En direct

Groupes de conditions ET/OU, règles de branchement, un moteur de formule sûr sur les réponses et des bandes de score qui portent leur propre page de résultat : un quiz noté atterrit sur son verdict.

Langue, kiosque, pré-remplissage

En direct

Une liste déroulante de langues pour les visiteurs ne répertoriant que des langues avec de vraies traductions, un mode kiosque pour tablettes partagées (cibles plus grandes, réinitialisation automatique, pas de redirections), un générateur de liens préremplissage et un badge sécurisé modifiable et du texte de pied de page.

Test de version A/B

En direct

Publiez une version challenger sur n'importe quel déploiement avec un partage du trafic. Les visiteurs sont assignés de manière collant, les réponses sont tamponnées avec la version réellement servie et le tableau comparatif affiche les réponse, l'achèvement et le score moyen par version.

Digest hebdomadaire

En direct

Un e-mail hebdomadaire contenant les KPI des derniers 7 jours de sondage, les sondages les plus occupés, l’impulsion Feedback et le dernier briefing sur l’IA, envoyé via le connecteur sortant épinglé. Configurez-le dans le Centre de diffusion, Automation.

Gouvernance

En direct

Les listes d’accès par sondage limitent les personnes pouvant modifier, publier ou supprimer un sondage. L’approbation de publication (quatre yeux) nécessite qu’un deuxième administrateur publie le brouillon exact ; la modification réinitialise l’appro btion.

Plateforme de développement

En direct

Connector Contract 2.2, enquêtes dactylographiées* et rétroaction* api/v1, événements d'enquête canonique.*, webhooks signés durables avec les formats de relais Slack et Google Sheets, et une réponse PDF export.

Croissance & engagement

Survey Analytics et Feedback sont des produits différents

Survey Analytics explique comment un sondage lui-même atteint les gens et fonctionne, tandis que Feedback explique ce que les clients ont dit à travers toutes les sources autorisées et ce que l’entreprise devrait faire à ce sujet. Les deux produits sont liés entre eux mais ne partagent pas ou n’écrasent pas la vérité analytique.

Analyse des enquêtes

Elle mesure l’éligibilité, l’exposition, le comportement des déclencheurs, les débuts, la fin, l'abandon, les frictions entre questions et branches, le timing, les résultats de déploiement/campagne/version et la fiabilité en temps d'exécution.

Vue d'ensemble & boîte de réception

Un flux chronologique avec permission pour les réponses aux sondages complétées, les commentaires des widgets existants, le chat et les CSAT de ticket, les retours sur les réponse de ticket et les évaluations des réponses d'IA du client.

Analyse des commentaires

Analyse la signification client: tendances de mesures originales, sujets/thèmes, sentiment, émotion, intention, urgence, demandes, plaintes, éloges, segments parcours/produit/service/équipe, détracteurs et résultats en boucle fermée.

Propriété des données

Les réponses au sondage restent autorisées dans le stockage du sondage. Le Feedback stocke une référence de source reconstructible et des signaux dérivés, puis charge les preuves autorisées à la demande.

⚠️
La page de commentaires actuelle dispose toujours d'un navigateur de réponses au sondage et d'une boîte de réception distincte pour le widget hérité, et ses totaux IA n'utilisent pas encore le modèle source normalisé complet.

Les indicateurs NPS, CSAT, CES, les étoiles, les notes et l’utilité doivent toujours conserver leur méthode originale, leur échelle, leur exemple, leur fenêtre de date et leur dénominateur, et ne jamais être combinés en une moyenne inexpliquée.

Croissance & SEO

Studio de promotion

Le Studio de Promotion transforme votre site en un moteur de conversion. Concevoir des pop-ups, bannières, slide-in, barres de haut/bas, prises de contrôle en plein écran, blocs en ligne et même des redirections par pays, puis montrer le bon message au bon visiteur au bon moment. OpsIQ widget déjà sur votre site, donc il n'y a rien de plus à installer. Vous concevez et enregistrez des campagnes à tout moment; elles ne montrent qu'une fois que vous les publiez et le studio est activé pour votre espace de travail.

Studio de promotion
Concepteur de Promotion StudioUn concepteur de campagne visuelle avec une palette de blocs, un pop-up sur la toile et un panneau de ciblage.Promotion Studio - Designer de modeBLOCSxBienvenue, {first_name}!Obtenez 15 % de réduction sur votre première commandeÉCONOMISEZ15Réclamer mon couponCiblagePaysÉtats-Unis, CADéclencheurIntention de sortieRépartition A/B50 / 50Publier1DESCRIPTIONFaites glisser des blocs sur la toile2CIBLEPays, page, audience3MESUREGagnant A/B + analyse de l'IA
Le concepteur visuel : une palette de blocs à gauche, votre campagne sur la toile (ici un popup coupon personnalisé avec un token {first_name}), et le panneau ciblage + publication à droite.

La vue d'ensemble

Campagne

Quoi?

Une promotion : pop-up, bannière, barre, diapo-in, plein écran, bloc en ligne ou géo-rédirect. Chacun a un objectif : vente, plomb, inscription, chat, sondage, annonce.

Conception et versions

Comment

Chaque sauvegarde crée une nouvelle version, donc vous pouvez toujours revenir en arrière. Rien n'est jamais perdu.

Ciblage

Qui

Qui le voit : pays, page, appareil, source de trafic, retour vs nouveau, horaire et (avec un connecteur) vos clients connectés.

Déclencheurs

Quand

Quand il apparaît: instantanément, sur retard, sur défilement, sur intention de sortie, en veille, sur un clic, après N pages ou à partir d'une conversation / activité de ticket.

Analytique

Résultats

Impressions en direct, clics, conversions, entonnoir de dépôt, séparations pays / page / appareil, gagnants A/B et un aperçu d'IA.

Lancez votre première promotion en. 5 étapes

1
Commencer à partir d'un modèle ou d'une page vierge

Ouvrez Promotion Studio et cliquez sur Nouvelle campagne, ou choisissez un design prêt à l'emploi dans la galerie Modèles.

2
Concevez-le

Faites glisser dans les blocs, les titres, le texte, les boutons, les images, les badges, les statistiques, les comptes à rebours, formulaires, coupons, vidéos, évaluations, spin-wheels. Couleurs de style, gradients et effets 3D avec les curseurs.

3
Personnalisez-le

Tapez des jetons comme {first_name}, {country} ou {company} Au moment du spectacle, ils deviennent les valeurs réelles du visiteur.

4
Cible & déclencheur

Choisissez qui la voit (pays, page, appareil, audience) et quand elle se déclenche (délai, défilement, intention de sortie). Laisser une règle vide pour signifier tout le monde.

5
Vérifiez, puis publiez

Cliquez sur Vérifier pour une analyse rapide avant le lancement, puis Publier. Il est mis en ligne en quelques secondes et commence à collecter des données analytiques.

Blocs que vous pouvez construire

Contenu

Nombre de base

En-tête, paragraphe, liste, citation, image, icône, badge, stat, diviseur et espaceur, les éléments constitutifs de tout message.

Appel à l'action

Nombre de base

Des boutons avec de vraies actions : ouvrir un lien, démarrer une conversation, créer un ticket, copier un coupon ou accéder à une page.

Urgence & capture

Prime

Compte à rebours, formulaires (email / téléphone / texte), révélations de coupon et intégration vidéo.

Gamification & feedback

Prime

Roues de spin-to-win, cartes à gratter, NPS / évaluations d'étoiles et entonnoirs multi-étapes.

Mise en page & effets

Prime

Colonnes, barres de progrès, partage social, cochés de preuve sociale, oui/non à deux étapes, quiz et effets 3D, inclinaison, lueur, parallax, verremorphisme.

Jetons de personnalisation

Tapez l'un de ces éléments dans les titres, paragraphes, boutons, badges, statistiques, listes ou citations et ils seront remplacés par les détails en direct du visiteur au moment où la promotion apparaît (toujours nettoyés pour plus de sécurité) :

Jetons disponibles
From the visit:   {country} {city} {device} {page_path} {utm_source} {referrer}
From your CRM:    {first_name} {last_name} {email} {company} {segment} {lifecycle_stage}
From a connector: {balance_due} {unpaid_invoices}   (logged-in customers only)

Référence de ciblage

Pays et localisation

Afficher uniquement dans (ou masquer de) les pays, villes ou fuseaux horaires choisis via GeoIP. Idéal pour des offres spécifiques à une région ou une géo-redirection.

Pages et URL

Limitez à certaines pages avec égal à / commence par / contient / expression régulière, et excluez également des pages.

Appareil

Bureau, tablette ou mobile, p. ex. une barre mince sur mobile, un mode de travail sur bureau.

Type de visiteur

Nouveau, récurrent, connu (dans votre CRM) ou anonyme; segments CRM, étape du cycle de vie, score de lead ou langue du navigateur.

Source de trafic

Par UTM (utm_source, utm _campaign) ou site de référence, par exemple uniquement les visiteurs d'une annonce spécifique.

Horaire & fréquence

Dates de début / fin, fenêtres d'heure du jour et fréquence à laquelle une personne peut la voir (par session, par jour, après qu'elle ait fermé / cliqué / converti).

Répartition du trafic A/B

Affichez à un pourcentage de visiteurs et exécutez des variantes en tête-à-tête ; la même personne voit toujours la même variante.

Audiences (en ligne)

Avec un connecteur activé, cible par l'état du compte en direct, par exemple les clients avec des factures impayées, ou les abonnés actifs.

Déclencheurs

Choisissez comment la promotion apparaît: Immédiatement, après un délai, sur la profondeur de défilement, sur l'intention de sortie, en mode inactif, sur un clic d'un élément, après une certain nombre de pages consultées, sur le formulaire abandonné ou à partir de l'activité du chat / ticket. window.OpsIQPromo.fire('event').

Ciblez les clients connectés (connecteurs)

C'est ce qui rend OpsIQ Spécial promotions: connectez une plateforme comme WHMCS (ou tout autre connecteur prenant en charge les audiences) et le studio peut cibler les visiteurs par l'état de leur compte actif.

1
Activer un connecteur d’audience

Sous Connectors, activez un système qui expose les faits de l'audience (WHMCS Les clients sont reconnus en toute sécurité lorsqu'ils sont connectés à cette plate-forme, OpsIQ jamais fait confiance à un email tapé.

2
Ajouter une règle d'audience

Dans le Ciblage > Audience de la campagne, exigez une connexion et ajoutez des règles comme les factures impayées >= 1, l'abonnement est en retard ou le crédit du compte > 0.

3
Personnalisez avec leurs données

Utilisez des jetons tels que {first_name} ou {balance_due}. Un rappel "Vous avez une facture en retard" s'écrit.

Le ciblage de l'auditoire est sûr : si le connecteur ne peut confirmer un fait (ou que le visiteur n'est pas connecté), la promotion ne s'affiche tout simplement pas, donc une offre ciblée sur la facturation n'arrive jamais à la mauvaise personne.

Le commerce connecté (la superpuissance des studios)

Cartes de produits depuis votre boutique

Données en direct

Un bloc produit tire des objets réels (nom, prix, prix de vente, image, lien) directement à partir WHMCS, WooCommerce, Shopify ou de votre OpsIQ Cochez "Continuez frais" et la carte met à jour son prix depuis la plate-forme toutes les heures pendant qu'elle est publiée.

Coupons fournis par le magasin

Coupons

Un bloc de coupon peut créer le vrai code de réduction dans votre boutique au moment où vous publiez, afin que le code révélé par un visiteur fonctionne toujours à la caisse.

Revenu de l'ordre-vérité

Montant alloué

Les commandes réelles de vos plateformes sont appariées à des campagnes horaires (par code promo utilisé ou par l'email du lead) donc les revenus que vous voyez proviennent des ventes réelles, pas des estimations.

Une vraie preuve sociale

Confiance

Le cocker social-proof peut mener avec de véritables commandes récentes ("Ada commandé Starter Plan · 2h year"), prénom et article seulement, jamais emails ou montants.

Expériences & voyages

Variantes A/B et gagnant automatique

Diviser le trafic entre les variantes de conception; laisser le studio promouvoir automatiquement le gagnant statistique, ou le trafic manuel à l'optimiseur de bandit qui déplace les visiteurs vers ce qui se convertit comme preuve.

Augmentation de la rétention

Réservez une tranche de visiteurs qui ne voient rien, afin que vous puissiez prouver que la campagne elle-même provoque le lift.

Variantes de segment

Différents contenus par public sur la campagne SAME (visiteurs mobiles, grands chariots, clients de retour), chaque segment obtient sa propre version.

Déclencher des expériences

Les variantes peuvent également tester QUAND apparaître: immédiate vs différée vs intention de sortie, mesurée en tête-à-tête.

Voyages (enchaînement)

Ciblez par ce que quelqu'un a fait avec une autre campagne («saw campagne A mais n'a pas converti») pour construire des séquences de promotion en plusieurs étapes.

Thésers

Une petite pilule permet aux visiteurs de rouvrir la campagne après sa fermeture, donc une pop-up fermée n’est jamais définitivement disparue.

Savoir ce qui s'est passé

Carte de chaleur des clics

Designer

Dans le concepteur, activez la carte thermique pour peindre les clics réels des visiteurs sur chaque bloc de votre design.

Entonnoir d'étapes

Entonnoirs

Les campagnes multi-étapes montrent exactement où les gens abandonnent, écran par écran.

Comparer les campagnes

Studio

Mettez jusqu'à quatre campagnes côte à côte (impressions, clics, conversions), meilleure valeur mise en évidence.

Histoire hebdomadaire & digest

IA

Chaque lundi, un résumé atterrit dans vos notifications; le bouton 📖 Weekly story écrit un résume en langage clair avec les prochaines étapes chaque fois que vous en voulez une.

Travailler confortablement

AI copilote & idées

Discutez avec le copilote de conception pour modifier la toile ("faire le titre urgent, ajouter un compte à rebours"), obtenir des idées de campagne à partir de vos propres données de trafic, traduire une campagne par pays ou corriger automatiquement un score de confection faible.

Marque Kit import

Une commande lit votre site web et propose les couleurs et polices de votre marque réelle; sauvegardez et chaque sélecteur mène avec eux.

Entonnoirs multi-écran

Les blocs d'étapes obtiennent une édition par écran véritable : onglets pour chaque écran, ajouter ou réorganiser des écrans, et l'aperçu suit.

Versions nommées & présence

Nommez les versions importantes (« candidat au lancement »), restaurez-les et recevez un avertissement lorsqu'un coéquipier modifie la même campagne.

Bande de dispositifs et règles

Affichez les ordinateurs de bureau, tablettes et mobiles côte à côte dans une seule vue ; basculez entre les règles en pixels pour un positionnement précis.

Page & canaux hébergés

Chaque campagne peut également être une page hébergée autonome pour les bios et les codes QR, une séquence de goutte à goutte d'emails pour les prospects capturés ou un brouillon web-push en un clic.

Sécurité de l'entreprise

Publiez des fenêtres de gel (périodes de gel des modifications), un commutateur d'urgence pour tout mettre en pause, les approbations, la piste d'audit et le retour à la version précédente.

Dois-je ajouter du code à mon site?+

Non, les promotions sont livrées par le même widget OpsIQ que vous avez déjà installé. Concevoir, publier, c'est fait.

Les visiteurs verront-ils la même fenêtre contextuelle encore et encore?+

Non. Réglez les bouchons de fréquence (par session / par jour, ou arrêtez-vous après que quelqu'un ferme, clique ou convertit).

Qui peut publier?+

Les fonctions de publication, d'interruption, d’archivage et de rétablissement sont limitées aux propriétaires d’espaces de travail et aux administrateurs complets.

Croissance & SEO

Designer de promotion

Promotion Designer est un éditeur de blocs réactif pour la création, l’examen, le versionnement et la publication d’une expérience de campagne.

Écran de produit
Designer de promotionLe concepteur combine une toile en direct, des aperçus d'appareils, des blocs, variables de personnalisation, commentaires et historique de version.Designer de promotionespace de travailVIEWPORTBureauVERSIONv12ETATBrouillonVUE DE L'ESPACE DE TRAVAIL EN DIRECTBloc de hérosTitre, média et CTAÉditerBloc d'offreRéduction et délaiÉditerPersonnalisationVariables de contact et de campagnePrêtVérification de lancementCommentaires et validationExamen1BUILD BLOCKSModifier la mise en page live2AVANTAGEOrdinateur de bureau, tablette, mobile3PUBLISHVersion de la version
Le concepteur combine une toile en direct, des aperçus d'appareils, des blocs, variables de personnalisation, commentaires et historique de version.

Utilisez des blocs pour composer l'expérience, prévisualiser chaque fenêtre prise en charge et insérer les variables de personnalisation approuvées. Passez en revue les commentaires et la provenance des médias d'IA avant le lancement.

Croissance & SEO

Modèles de promotion

Les modèles fournissent une galerie de départ classée et consultable pour les campagnes Promotion Studio.

Écran de produit
Modèles de promotionLa galerie de modèles filtre les mises en page premium et applique les couleurs de marque d'espace de travail lorsqu'un modèle devient un brouillon.Modèles de promotionespace de travailCATÉGORIEConversionRESULTS24GRANDEAppliquéeVUE DE L'ESPACE DE TRAVAIL EN DIRECTOffre de sortieModal avec urgence et CTAAperçuNouveau visiteur bienvenuBannière et liste des avantagesAperçuLancement de produitHéros, preuve et compte à reboursAperçuDemande de rétroactionInvite de sondage compacteAperçu1FILTERCatégorie et recherche2AVANTAGEInspecter la conception complète3USECréer un brouillon personnalisé
La galerie de modèles filtre les mises en page premium et applique les couleurs de marque d'espace de travail lorsqu'un modèle devient un brouillon.

Recherchez ou filtrez par catégorie, chargez des résultats supplémentaires, prévisualisez l'expérience complète, puis choisissez Utiliser le modèleLa nouvelle campagne reste un brouillon et peut être modifiée dans Promotion Designer avant sa publication.

Croissance & SEO

Analyse de la promotion

L'analyse des promotions relie les impressions et les clics aux conversions, au contexte de l'audience, aux résultats d'action du connecteur et à l'apprentissage de la campagne.

Écran de produit
Analyse de la promotionL'analyse de la promotion montre les performances des titres, l'audience et les déclencheurs, l’exportation de leads et les résultats d'actions connectées.Analyse de la promotionespace de travailIMPRESSIONS42.8kCTR6.4%CONVERSIONS814VUE DE L'ESPACE DE TRAVAIL EN DIRECTPaysRoyaume-Uni · 31%VentilationPage 10/pricing · 22%VentilationDéclencheurIntention de sortie · 44%VentilationAction de connecteurCoupon créé · 97% succèsRésultat1MESUREDes impressions à la conversion2SLICEPage, pays, appareil3LEARNAppliquer l'insight
L'analyse de la promotion montre les performances des titres, l'audience et les déclencheurs, l’exportation de leads et les résultats d'actions connectées.

Les résultats des actions du connecteur indiquent si le suivi promis de la promotion a réellement été effectué. Les informations tirées de l’IA et les résumés d’apprentissage doivent être traités comme des hypothèses à valider, pas comme une preuve automatique.

Croissance & SEO

Annonces

Les annonces publient un message dans la zone de notification du widget avec ciblage, planification et appel à l'action en option.

Écran de produit
AnnoncesL'éditeur d'annonces comprend le contenu, l'APC, l’audience, le segment, la règle de page, les dates actives et le style visuel.Annoncesespace de travailACTIF3AUDIENCESegmentANNEXESJuillet 22–29VUE DE L'ESPACE DE TRAVAIL EN DIRECTTitreEntretien planifiéPrêtContenumessage MarkdownPrêtCTALire la mise à jourFacultatifRègle 10Pages de tarification · clients actifsObjectif1WRITETitre et Markdown2CIBLEPublic, segment, page3ANNEXESFenêtre active
L'éditeur d'annonces comprend le contenu, l'APC, l’audience, le segment, la règle de page, les dates actives et le style visuel.

Choisissez tous les visiteurs, les visiteur connectés ou les nouveaux visiteurs; vous pouvez également affiner l'audience avec un segment de contact et une règle de page. Définissez des dates actives à partir/jusqu'à et un drapeau actif.

Croissance & SEO

Campagnes de push

Les campagnes push envoient des notifications de navigateur aux visiteurs abonnés après qu'ils aient quitté le site.

Écran de produit
Campagnes de pushLe compositeur de push affiche la portée, le contenu, les médias, les actions, les règles cibles et l'état du planning.Campagnes de pushespace de travailSUBSCRIBERS8,214ENVOYÉ31.6kCLICK RATE5.8%VUE DE L'ESPACE DE TRAVAIL EN DIRECTTitreVotre panier est videPrêtCorpsRetournez aujourd'hui pour une livraison gratuitePrêtCTAOuvrir le panierPrêtCalendrierEnvoyer maintenant ou planifiéBrouillon1PREPARE PUSHTitre, corps, icône2CIBLEPublic, segment, page3SENDMaintenant, programme ou projet
Le compositeur de push affiche la portée, le contenu, les médias, les actions, les règles cibles et l'état du planning.

Une campagne peut inclure le titre, le corps de l'e-mail, une icône, une image du héros, un badge, un CTA et jusqu'à deux boutons d'action.

Enregistrez un brouillon, planifiez-le ou envoyez-la immédiatement. Utilisez les statistiques d'abonnement et de clics pour évaluer la portée. HTTPS et un service worker correctement hébergé sont requis sur les sites tiers intégrés; voir Web Push sur les Sites tiers.

Croissance & SEO

Des messages proactifs

Les messages proactifs s'adressent automatiquement au moment où le comportement d'un visiteur correspond à une règle, avant de demander. Vous construisez chacun en règle générale avec trois parties: ce qui doit arriver, quand il devrait tirer, et combien de fois. OpsIQ widget déjà sur votre site.

Proactif
Des messages proactifsUn compositeur de règles proactives en trois parties: choisissez une action (chat, bannière, visite guidée, push, e-mail), ajoutez des conditions et définissez un délai de récupération de fréquence.Messages proactifsespace de travail1 · ActionMessage de chatBannièreVisitePoussezCourriel2 · Conditions généralespage = /pricingTemps sur la page > 20sretour3 · FréquenceUne fois par sessionStatut1ACTIONChat, bannière, email, push…2CONDITIONSPage, temps, score, retour3FRÉQUENCETemps de recharge par visiteur
Chaque règle proactive est composée de trois choix : ce qui se produit (chat, bannière, visite guidée, push, e-mail, webhook), quand (conditions) et à quelle fréquence (relâchement).

Les trois parties d'une règle

1
Ce qui devrait se passer (action)

Afficher une bulle de chat ou une bannière sur la page, commencer une visite guidée, envoyer un push web ou un courriel, assigner à un département, ou tirer un webhook.{{visitor_name}}et{{page_title}}devenir des valeurs réelles.

2
Quand il devrait se déclencher (conditions)

N'hésitez pas à le déclencher : page/URL, heure sur la page, profondeur du défilement, score de tête, retour vs nouveau, inactif. Sans conditions, la règle s'allume pour chaque visiteur. Ajoutez au moins une pour la cibler.

3
Combien de fois (fréquence)

Réglez un refroidissement pour que la même personne ne soit pas piétinée, par exemple une fois par session ou une fois/jour. Chaque règle a un statut d'on/off.

⚠️
L'espace de travail basculer "Run time/idle rules horaires" permet aux actions côté serveur (email, push, webhook, assigner) d'allumer sur un horaire pour les contacts connus qui ne sont pas actuellement sur la page, de sorte que vous pouvez "email tain hot leads" automatiquement. OpsIQ Laisse tomber si tu veux juste des punaises en direct.
Est-ce qu'il va tirer pour tout le monde?+

Ajoutez au moins une condition (page, lead score, retour…) pour cibler les bons visiteurs et vous assurer que votre campagne est efficace.

Comment ces derniers se rapportent-ils aux flux et aux circuits?+

Ils fonctionnent ensemble : une règle proactive peut déclencher un Guided Tour, et un Chatbot Flow peut être décLENCHE par une règle Proactive. Commencez avec une seule règle de message chat, puis superposez les autres.

Croissance & SEO

Les flux de chatbot

Chatbot Flows script branche les conversations dans votre widget de chat (greetings, mots clés, chemins guidés) sans code. Un flux est un ensemble d'étapes connectées (nodes): vous posez une question, le visiteur choisit une option, et le flux les envoie vers la branche correspondante. Seuls les flux actifs s'exécutent sur votre site.

Comment ça fonctionne
Les flux de chatbotUne toile de flux : un nœud de salutation en trois boutons d'option, chacun menant à une étape suivante, regarder l'ordre, ou de laisser à un humain.SalutationComment puis-je vous aider?Suivre ma commandeQuestion de facturationParlez à un humainRecherchez l'ordre→ Agent humainDéclencheurs: Salutation · Mot-clé · Manuel · Après les détails · Fin du chat
Les flux de chatbot

Flux par rapport à l'IA · quand utiliser

Utiliser un flux

Lorsque le chemin est prévisible et que vous voulez qu'il soit identique à chaque fois : les étapes de réservation, un assistant de retour, un choix "quel plan?", collecte d'un email avant la remise.

Utilisez l'IA

Lorsque les questions sont ouvertes, « cela fonctionne avec mon installation ? ». Le client Clavardage AI répond à partir de vos connaissances formées. Un flux peut se transmettre à l'IA (ou un humain) à n'importe quelle étape.

Déclencheurs

Salutation

S'exécute comme message d'ouverture lorsqu'un visiteur ouvre le chat pour la première fois.

Mot-clé

S'exécute lorsque le visiteur tape un mot que vous avez indiqué (par exemple, remboursement, prix, annulation).

Après les détails / Après le retard

Démarre une fois que les coordonnées du contact sont partagées, ou à un moment défini dans la conversation.

En fin de chat / Proactif

S'exécute à la fin du chat (par exemple, une évaluation) ou est déclenchée par une règle de message proactif.

Construisez-en un en quatre étapes

1
Créer le flux

Cliquez sur Nouveau flux, donnez-lui un nom, choisissez un type de déclencheur (et des mots clés si vous utilisez le mot clé), enregistrez.

2
Ouvrez la toile

Cliquez sur Modifier la toile. Le constructeur visuel où vous ajoutez des étapes (messages, questions avec boutons, branches) et connectez-les.

3
Ajouter des branches et un transfert

Pour chaque choix, dessinez une branche vers l'étape suivante. Finissez les chemins en résolvant, en remettant à l'IA ou en transférant à un humain.

4
Activez-le

Cliquez sur Activer. Le flux est immédiatement actif dans votre widget, vous pouvez le désactiver à tout moment sans perdre la conception.

Les flux remplacent-ils l’IA?+

Non. Ils courent côte à côte. Utilisez les flux pour des chemins prévisibles et l'IA pour des questions ouvertes; un flux peut toujours se transmettre à l'un ou l'autre.

Croissance & SEO

Visites guidées

Les visites guidées sont des présentations étape par étape qui pointent vers certaines parties de votre page avec des bulles et un projecteur, guidant le visiteur à travers l'intégration ou une nouvelle fonctionnalité. Elles sont entièrement thématiques et construites dans un concepteur visuel avec un aperçu en direct.

Comment ça fonctionne
Visites guidéesUne page grisée avec un anneau de projecteurs autour d'un bouton Ajouter une offre et une bulle de lecture thématique Étape 11of 4 avec un bouton Suivant.+ Ajouter une offreÉTAPE1DES4Créez votre première offreCliquez ici pour ajouter une offre à votre pipeline.Suivant →
Visites guidées

Comment une visite est construite

Étapes

Chaque étape cible un élément et affiche une bulle avec votre texte. Ajouter autant d'arrêts que la visite guidée a besoin et les ordonner.

Préréglages & thème

Commencez par un préréglage ou créez votre propre bulle (couleurs, dégradés, projecteurs) avec un aperçu en direct sur la droite.

Déclencheur

Vous pouvez éventuellement lier une règle proactive pour que la visite démarre automatiquement lorsque cette règle se déclenche (par exemple, lors de la première visite du tableau de bord d'un visiteur récurrent).

Toggle actif

Une visite n'est éligible à l'exécution que si Active est cochée. Décochez pour la supprimer sans la suppression.

Construisez-en un en quatre étapes

1
Nouvelle tournée

Cliquez sur Nouvelle visite guidée, donnez-lui un nom et éventuellement liez une règle proactive pour qu’elle démarre automatiquement.

2
Ajouter des étapes

Ajoutez chaque arrêt : choisissez l'élément vers lequel il pointe et écrivez le texte de la bulle, puis réorganisez jusqu'à ce que le chemin coule.

3
Concevez-le

Choisissez un préréglage ou stylez vous-même la bulle. L'aperçu en direct montre exactement ce que les visiteurs voient.

4
Activer

Cochez Active et sauvegardez. La tournée peut maintenant se dérouler, sur son propre déclencheur, ou démarrée par une règle Message Proactive.

Comment les visites guidées démarrent-elles ?+

Sur leur propre déclencheur, ou via une règle Message proactive "Visite guidée", vous décidez donc quels visiteurs voient la visite et quand.

Croissance & SEO

Objectifs de conversion

Les objectifs de conversion transforment une activité que vous aimez (un événement webhook entrant, un message de chat, une résolution de ticket) en une conversion enregistrée avec attribution complète. Lorsque l'activité s'enflamme, OpsIQ enregistre une conversion contre le contact et la relie aux campagnes, segments et sources qui y ont mené.

Comment ça fonctionne
Objectifs de conversionUn flux d'objectifs : un événement webhook payment. succeeded devient une conversion « achat » enregistrée d'une valeur de $49, attribuée à sa source et à sa campagne, avec des jetons prédéfinis de démarrage rapide ci-dessus.Démarrage rapideAchat par StripeDémo réservéeInscription à la newsletterpayment.succeededWebhook entrantConversion"achat" · $49AttribuéSource · campagne
Objectifs de conversion

Définir un objectif en trois étapes

1
Choisissez l'activité déclenchant

Cliquez sur Nouveau but de conversion. Choisissez le type d'activité qui compte comme une conversion, ou utilisez un préréglage Quick-start, achat Stripe, démo réservé, inscription à la newsletter ou abonnement démarré.

2
Nommez-le et définissez une valeur

Donnez un nom à la conversion (achat, démo_réservée, inscription) et éventuellement une valeur fixe et une fenêtre d'attribution.

3
Enregistrer

À partir de là, chaque fois que l'activité se déclenche, OpsIQ enregistre une conversion par rapport au contact avec attribution aux contacts précédents.

Les objectifs sont déjà câblés dans les webhooks entrants : tout objectif dont le déclencheur correspond au type d'événement entrant se déclencha automatiquement au moment où l'évéement atterrit. Utilisez la page Webhooks Inbound pour connecter Stripe, Calendly ou n'importe quel système pouvant POST JSON.
Qu’est-ce que la conversion?+

Toute activité enregistrée: un événement webhook entrant (paiement. succeed), une capture de chat par e-mail, une résolution de ticket, tout ce qui se trouve dans la timeline de contact.

Analytique

Tableaux de bord personnalisés

Les tableaux de bord personnalisés vous permettent d'obtenir votre propre vue des indicateurs importants, au lieu de compter uniquement sur l'aperçu standard. Ajouter les widgets que vous voulez, faites-les glisser et redimensionnez-les dans la disposition qui vous convient, enregistrez-la et partagez-la avec votre équipe.

Tableaux de bord personnalisés
Tableaux de bord personnalisésUn constructeur de tableau de bord avec des tuiles de widgets KPI et graphique, une zone de dépôt en pointillé et un bouton Ajouter-widget.Tableaux de bord personnalisésespace de travailMon tableau de bord+ Ajouter un widgetVISITES2,481REVENUS$8.2kTRAFICFaites glisser un widget iciTOP PAGES/pricing/docs/signup1ADD WIDGETSChoisir les indicateurs et les graphiques2ARRANGEFaites glisser & redimensionner3SHAREAvec votre équipe
Créez votre propre tableau de bord : ajoutez des KPI, des widgets de graphique et de liste, faites-les glisser et redimensionnez-les dans la disposition souhaitée, puis partagez-le avec l'équipe.

Construisez-en un en trois étapes

1
Ajouter des widgets

Cliquez sur Ajouter un widget, choisissez la mesure ou le graphique que vous souhaitez suivre et répétez l'opération pour tout ce que vous voulez ajouter au tableau.

2
Organiser la mise en page

Faites glisser des widgets pour repositionner et faites glisser leurs bords pour les redimensionner. KPIs à travers le haut, graphiques ci-dessous.

3
Enregistrer et partager

Enregistrez le tableau de bord et partagez-le avec votre équipe afin que tout le monde puisse consulter les mêmes chiffres.

Gardez des tableaux séparés pour des emplois distincts (un tableau de « coup d'œil quotidien » avec des comptes en direct, et un tableau de "revue mensuelle" avec des graphiques de tendances) afin que chaque reste concentré.
Croissance & SEO

Campagnes de sensibilisation

Outreach is OpsIQ's1:1Moteur d’emailing en masse et de messagerie personnalisée : composez un message personnalisé ou lancez une campagne vers un segment CRM, avec détection des réponses, contrôle du temps d’envoi, suivi des ouvertures/clics, pixel de traçage et désabonnement en un clic.

Sensibilisation
Campagnes de sensibilisationL'écran Outreach avec les onglets Composer/Campagnes/Modèles/Réponses et un tableau de campagne indiquant le taux d'envoi, d'ouverture et de réponse.Sensibilisationespace de travailCampagnesCompositeurModèlesRéponsesCAMPAGNEENVOYÉOUVERTRÉPONSESNewsletter de juin1,20048%7%Suivi des procès34062%14%Récupération82039%5%La détection de réponse arrête automatiquement les suivis · un clic pour se désinscrire à chaque envoi11:1 & BULKComposez ou faites campagne2TRACKEDOuvertures, clics, réponses3COMPLIANTDésabonnement intégré
Le moteur Outreach: envoyer1:1ou exécutez des campagnes pour un segment, suivez les ouvertures et les réponses et restez conforme avec la détection de désabonnement et de réponse intégrée.

Les quatre onglets

Compositeur

Écrire un commentaire1:1Envoyer un email avec {tokens} Du contact et du CRM.

Campagnes

Envoyez à un segment CRM, planifié ou immédiatement, avec des plafonds et le contrôle de l'heure d'envoi.

Modèles

Modèles de messages réutilisables pour une diffusion répétée.

Réponses

La détection de réponse enregistre les réponses et arrête automatiquement le suivi à toute personne qui a répondu.

Comment fonctionne une campagne

1
Choisissez un public

Choisissez un segment CRM (ou téléchargez une liste). La suppression et le consentement sont appliqués automatiquement.

2
Composer

Rédigez le message avec des jetons de personnalisation; prévisualiser contre un contact réel.

3
Planifier & envoyer

Envoyez maintenant ou au meilleur moment. Un pixel de suivi s'ouvre; les clics et les réponses sont attribués.

La sensibilisation est axée sur le consentement et la suppression, comprend un désabonnement en un clic à chaque envoi et suit CAN-SPAM / CASL.
Analytique

visualHtml

Rapports programmés envoyer par courriel un ensemble de mesures choisi aux destinataires choisis sur une liste (quotidienne, hebdomadaire ou mensuelle) sous forme d'étiquette blanche imprimable PDF. Réglez-le une fois et le rapport atterrit dans des boîtes de réception automatiquement à travers la OpsIQ Cron.

visualHtml
visualHtmlL'écran des rapports planifiés: un tableau de rapports avec leur calendrier, les destinataires et l'heure du dernier envoi, plus un bouton Enregistrer le rapport.Rapports programmésespace de travailvisualHtml+ Sauvegarder le rapportRAPPORTANNEXESRECEPTEURSDERNIÈRE ENVOYÉETrafic hebdomadaireMon 9:_00[email protected]2e annéeRapport client SEOMensuel[email protected]Juin 1Résumé des ventesQuotidien[email protected]todayLivré en marque blanche PDF via the OpsIQ cron1AUTOMATEDQuotidien · hebdomadaire · mensuel2LABEL BLANCPDF aux clients3RECEPTEURSEnvoyé par courriel sur le calendrier
Définir un rapport une fois (ensemble métrique, plage, calendrier, destinataires) et OpsIQ e-mails d'un label blanc PDF automatiquement sur votre cadence.

Créer un rapport

1
Choisissez ce que vous voulez envoyer

Choisissez l’ensemble de mesures (traffic, SEO, ventes, support…) et une plage de dates.

2
Définir le calendrier & les destinataires

Quotidiennement, hebdomadairement ou mensuellement, à l’heure de votre choix, à un ou plusieurs destinataires.

3
Enregistrer

Enregistrer et activer. Le rapport génère et s'envoie par courriel à l'horaire, pas d'étape manuelle.

💡
Les rapports prévus passent par OpsIQ cron, si un rapport n'arrive pas, confirme que le cron est en marche (voir Cron et automatisation).
Confidentialité

Confidentialité et conformité

La page Vie privée et Conformité est le seul endroit où afficher un auditeur que vous manipulez les données personnelles de manière responsable : le registre du consentement, le journal d'accès administratif, votre politique de résidence et de conservation des données, et une version prête à imprimer DPA, dans une vue tablée.

Confidentialité et conformité
Confidentialité et conformitéL'écran Confidentialité et conformité: onglets pour le grand livre de consentement, le journal d'accès, la résidence et DPA, avec un tableau du grand livre des accords et des révocation par canal.Confidentialité & conformitéespace de travailRegistre de consentementJournal d'accèsRésidenceDPACONTACTCANALACTIONDATE[email protected]EmailAccordéJuin 12[email protected]pushRévoquéJuin 10[email protected]marketingAccordéJuin 9Preuve consultable de chaque consentement accordé et révoqué, par canal1CONSENT LEDGERPreuve de chaque subvention2ACCESS LOGQui a touché les données3DPAModèle imprimable
Un écran prêt pour l'auditeur: un registre de consentement consultable (octrois/révocation par canal), un journal d'accès des personnes ayant touché les données, les paramètres de résidence/conservation et un DPA imprimable.

Les quatre onglets

Registre de consentement

Un enregistrement consultable de chaque autorisation de consentement et révoquer, par contact, canal (email, push, SMS, in-widget), action, source et date. Votre preuve un contact accepté (ou retiré).

Journal d'accès

Qui, dans votre équipe, a consulté, édité, exporté, effacé ou envoyé des messages aux données d'un contact, avec l'administrateur, le contact, l'action, la raison indiquée et IP. Exactement ce que demande un régulateur.

Résidence & rétention

Déclarez où se trouvent les données de cet espace de travail, définissez le nombre de jours pendant lesquels les lignes d'activité sont conservées (0 = pour toujours) et enregistrez votre contrôleur de données et DPO.

Modèle DPA

Un Addendum sur le traitement des données imprimable qui indique votre contrôleur, adresse, DPO, résidence et conservation. Imprimer ou enregistrer sous PDF.

Privacy & Compliance est associé au studio de consentement aux cookies (qui recueille le consentement) et à la page Exporter (qui produit la copie des données pour un DSAR). Voir aussi Cron et automatisation pour le nettoyage nocturne de rétention.
Connecteurs

Connectez vos plateformes

Lien des connecteurs OpsIQ vers des plateformes externes: magasins de commerce électronique, systèmes de facturation, processeurs de paiement, fournisseurs d'e-mail et sur mesure APIs. Une fois connectée, l'IA peut rechercher les commandes, les données client, les abonnements, et plus encore, et prendre des mesures avec votre approbation.

Comment ça fonctionne
Hub de connecteursOpsIQ noyau connecté à WHMCS, Shopify, Stripe, WooCommerce, SendGrid et Google Business Profile, chacun affichant un statut de connexion.WHMCSShopifyStripeWooCommerceSendGridGoogle BPOpsIQCORE1PLUG IN25+ connecteurs pré-construits2AI CONTEXTDonnées réelles de la plateforme3ACTIONSTerminé avec votre approbation
Connecteurs

Navires avec OpsIQ

Ceux-ci sont présents au moment où vous installez et n'ont besoin que de leurs identifiants.

WHMCS

Facturation

Facturation d'hébergement web: clients, services, tickets, factures, domaines, serveurs.

Shopify

Commerce électronique

Commerce électronique: commandes, clients, produits, inventaire, paiements, webhooks.

WooCommerce

Commerce électronique

WordPress e-commerce: commandes, clients, produits, coupons, expédition.

WordPress

CMS

Contenu et utilisateurs sur un site WordPress.

Carré

Paiements

Paiements et points de vente: commandes, clients, catalogue.

osCommerce

Commerce électronique

E-commerce traditionnel: commandes, clients, produits.

Hôtel Bottle

Pont

Un site d'hôtel Bottle CMS à travers la signatureOpsIQLa mise en œuvre de la référence pour une plate-forme sansAPI.

Zendesk

Appui

Helpdesk: tickets, utilisateurs, organisations, commentaires.

Profil d'entreprise Google

Commercialisation

Établissement local : avis, publications, questions-réponses, statistiques. Utilise OAuth.

Calendrier Google

Productivité

Calendriers et événements. Utilisations OAuth.

GmailetIMAP

Courriel

Boîtes aux lettres : courrier entrant et sortant, synchro-book.

SendGrid

Courriel

Envoi de courriels : envoyez des courriels et gérez des modèles.

Paramétrage

Courriel

Envoi d'e-mails: envoyer des e-mail via Mailgun.

Slack, Télégramme, LIGNE, X DM

Messagerie

Les canaux de messagerie pour les conversations entrantes et sortantes.

Métacanaux

Messagerie

Facebook Messenger, Instagram DM et WhatsApp.

Renseignements sur le site (GA4, Console de recherche)

Analytique

Données analytiques et de recherche pour la suite SEO.

enrichissement du site Web et importation CRM

CRM

L'enrichissement de l'entreprise et l'importation en vrac des clients.

Disponible sur le marché

Installez-en un depuis les connecteurs, Marketplace et il est copié dans le dossier des connecteurs en direct, après quoi il se comporte exactement comme ceux ci-dessus.

Stripe

Marché

Paiements: charges, clients, factures, abonnements, paiements, litiges.

Grand commerce

Marché

E-commerce: commandes, clients, produits, catégories, marques.

Magento 2

Marché

E-commerce: commandes, clients, produits, catégories, stock.

PrestaShop

Marché

E-commerce: commandes, clients, produits, règles de panier, transporteurs.

OpenCart

Marché

E-commerce: commandes, clients, produits, catégories.

Amazon SES, Postmark, Résoudre

Marché

Livraison transactionnelle par e-mail.

Jira, linéaire

Marché

Suivi des enjeux et des projets.

Zoom, calendrier Microsoft, Outlook Mail

Marché

Réunions, calendriers et courrier.

DocuSign, Apollo, SerpApi, Google Analytics

Marché

Signature, prospection, recherche et données analytiques.

Webflow, Wix, Squarespace

Marché

Plateformes de sites Web.

💡
La liste des connecteurs se déplace sous forme de paquets. La liste autorisée pour VOTRE installation est la page Connectors : ce qui est listé là est ce que l'exécution a découvert, et l'onglet Marketplace montre ce que vous pouvez ajouter.

Installation d'un connecteur

1
Accédez à Connecteurs

Accédez à Connecteurs dans la barre latérale d'administration.

2
Trouver le connecteur

Parcourez la liste ou effectuez une recherche. Les connecteurs sont regroupés par catégorie.

3
Activez-le

Cliquez sur le connecteur et activez/désactivez Activer.

4
Entrez les informations d'identification

Remplissez les champs obligatoires: API clé, URL Chaque connecteur a des exigences spécifiques documentées dans son panneau de paramètres.

5
Connexion de test

Cliquez sur « Test de connexion ». Un résultat vert signifie que le connecteur peut atteindre la plateforme externe, un résultat rouge indique l'erreur.

6
Configurer les fonctionnalités

Choisissez les fonctionnalités à activer : synchronisation des connaissances, synchronization de webhook, actions d'IA. Tous les connecteurs ne supportent pas toutes les fonctions.

Ce que les connecteurs vous donnent

Contexte de l &apos; IA

L’IA peut consulter les données des clients, les commandes, les abonnements et plus encore via le connecteur. Lorsque le client discute, l’IA dispose de données réelles de la plateforme pour se référer.

Contexte de l'IA (auteurs du connecteur)

Le ContextProvider de votre connecteur fournit à l’IA de tickets un résumé de compte en lecture seule du propriétaire du ticket. Identifiez le client par customer_id lorsque connu; sinon, sur le ticket répond automatiquement, où le drapeau ctx customer_trust_email est vrai, regardez le compte en haut customer_email (l'expéditeur du ticket vérifié). Les plateformes distantes exposent un /context/customer-by-email C'est ce qui fait que l'IA cite un solde/facture réel au lieu de dire « s'il vous plaît connectez-vous ». Honorer les bascules de classe de données de l'opérateur (customer_sections, customer_allow_credit) et rester strictement en lecture seule, ne jamais émettre de secrets.

Répertoire client (auteurs de connecteurs)

L'IdentityProvider de votre connecteur alimente trois recherches de tickets universelles : lookupCustomerById() (carte client), lookupCustomerServices() (tableau des produits/services), et listCustomers($query,$limit): le "Rechercher client ou taper email" sur le formulaire de Compose-New-Ticket natif. {id, external_id, name, email, company, phone, platform, platform_label}. Règle à distance: si vos clients vivent dans une autre base de données ou un autre service,API à l'intérieur de ces méthodes, ne jamais lire directement les tables de l'autre système (dans le OpsIQ DB ce sont des détenteurs de place vides, c'est pourquoi une lecture locale retourne un récupérateur vide. Gate le chemin distant sur votre configuré API URL; ne garder une lecture locale qu'en tant que retour en arrière de la même BD.

Billets, détection et routage par courriel (auteurs de connecteur)

Lorsque l'e-mail entrant devient un ticket natif, OpsIQ détecte l'expéditeur en appelant lookupCustomerById(0, ['email'=>$sender]) Le premier match "possède" le client et son environnement. platform le slug est apposé sur le ticket.created événement comme _pipe_owner_platform (vide = invité).WHMCS-l'email du client ouvre un ticket dans WHMCS (WHMCS Un expéditeur inconnu reste un invité natif. Si votre connecteur met en miroir les tickets natifs sur sa propre plateforme, votre ticket.created Le gestionnaire doit être gaté sur ceci: if (array_key_exists('_pipe_owner_platform',$payload) && $payload['_pipe_owner_platform'] !== '<your-slug>') return;. La clé est absente sur les tickets non pipé (chat/manuel/AI), de sorte que ceux miroir comme avant. Le contrôle par département vit sous Team & Departments → Ouvrir les ticketes par courriel (Toute personne / Clients seulement / Off).

Actions

L'IA peut effectuer des actions via le connecteur : créer des tickets, mettre à jour les commandes, annuler les abonnements, avec votre approbation par le biais du calque de confiance.

Connaissances

Les connecteurs contribuent à l'IA des articles de connaissances spécifiques à la plateforme.Shopifyconnecteur ajoute le dépannage e-commerce;WHMCSconnecteur ajoute la connaissance de l'hébergement.

Importation de la base de connaissances (auteurs du connecteur)

Si votre plateforme héberge une base de connaissances, déclarez un kb_capabilities Bloquer dans settings.json (type kb_source) et votre connecteur apparaît dans l'éditeur du Centre d'aide Importer KB → Importation à partir d'une application connectée déroulant chaque fois qu'il est activé et configuré dans l'espace de travail. Il est déclaratif, aucune méthode à mettre en œuvre: nom un intégré adapter (zendesk pour le centre d'aide exact-tree API, ou crawl (pour tout site KB) et un base_template tels que https://{subdomain}.zendesk.com, que OpsIQ remplit à partir des paramètres stockés de votre connecteur. Les informations d'identification ne quittent jamais le serveur ; le navigateur envoie uniquement la logique du connecteur (slug). opsiq_kb_<platform>_manifest() Référencez-le par son nom. Références complètes: connectors/PLATFORM_CONNECTORS.md §5.

Webhooks

Certains connecteurs enregistrent des webhooks avec la plateforme externe pour les notifications d’événement en temps réel (nouvelles commandes, mises à jour de tickets, etc.).

Suivi des ventes

Les connecteurs de commerce électronique alimentent les données de revenus dans le tableau de bord Sales pour l'attribution et l'analyse.

💡
Chaque espace de travail peut avoir des connecteurs différents activés avec des références différentes.WHMCSl'espace de travail utiliseWHMCSconnecteur;Shopifyl'espace de travail utiliseShopifyconnecteur.
Puis-je utiliser plusieurs connecteurs en même temps?+

Oui, vous pouvez utiliser Shopify pour les commandes et Stripe pour les paiements dans le même espace de travail. L'IA fusionne les données de tous les connecteurs activés.

Que faire si ma plateforme n'est pas répertoriée?+

Utilisez le Connector Builder pour créer un connecteur personnalisé pour n'importe quelle plateforme avec une interface REST API, ou consultez la Marketplace pour trouver des connecteurs créés par la communauté.

Les connecteurs fonctionnent-ils avec OpsIQ autohébergé?+

Oui. Les connecteurs fonctionnent de manière identique dans les éditions cloud et auto-hébergées.

Connecteurs

Contrat de connecteur de vente et facturation

WHMCS est l'implémentation de référence, mais les ponts SaaS, les magasins, les fournisseurs de paiement, les connecteurs de marché et les packages Connector Builder doivent obéir aux mêmes règles.

Ce que chaque connecteur commerce doit publier

Un grand livre faisant autorité

Publish realised economic events to opsiq_sales_events through CommerceEventRegistry::normalize(). Do not build a connector-specific Sales table or make core analytics query a remote platform directly.

Identité source stable

La plate-forme est la logique de registre du connecteur, telle que whmcs, shopify ou opsiq_saas. traffic_source contient l'attribution d'acquisition vérifiée lorsqu'elle est fournie; sinon, utilisez le même slug que la solution de secours. OpsIQ Résout le nom du connecteur convivial dans l'interface utilisateur.

Idempotence

Mapper au moins un order_ref, invoice_ref ou subscription_ref immuable afin que les réessais de webhook et le remplissage en arrière mettent à jour le même événement au lieu de créer des ventes en double. service_ref identifie l'instance du produit ou du service affecté lorsqu'il existe une instance.

Horodatage de la source

occurred_at est l'heure du paiement ou de l'événement économique signalé par la plateforme source. Ne remplacez jamais les dates historiques des paiements par l'horaire d'importation.

Monnaie et devises

Si le paramètre du connecteur active la conversion de devises OpsIQ, les rapports sont convertis dans la devise de l’espace de travail. Sinon, les reports conservent la devis de la boutique ou de la plateforme de facturation. Le code du connecteurs ne doit pas coder en dur une devise ou un taux de change pour les rapport.

Cycle de vie fondé sur des données probantes

Utilisez les champs Nouveau, Renouvellement, Mise à niveau, Remboursement, Crédit ou Inconnu. Classez par raison de facturation, relation d'abonnement ou de service, type d'élément de ligne ou autre champ de source faisant autorité.

Limite de vente

Les remboursements sont signalés par l'analyse des remboursés et du chiffre d'affaires net. Le crédit de compte, les rechargements de portefeuille, les jetons et les fonds ajoutés restent des événements de grand livre de facturation et ne sont jamais comptabilisés comme ventes, conversions, volume de commandes ou revenus de ventes.

Le CRM reste séparé

CRMLes transactions ne sont pas des ventes de plate-forme commerciale à moins qu'une plateforme de facturation ou de magasin connectée émette la commande ou la facture payée réalisée par le biais du présent contrat.

Projections dérivées

Les opsiq_conversions et les résumés de tableau de bord sont des projections de compatibilité reconstruites à partir du grand livre. Les connecteurs ne doivent pas traiter une projection comme la source financière de vérité. Les révisions de contrat peuvent réévaluer les lignes dérivées sans supprimer l'historique de facturation sous-jacent.

Délimitation de plate-forme distante

Un connecteur distant lit sa plateforme via le API authentifié configuré. Il ne doit jamais dépendre de tables de base de données du même serveur. La clé site_key exacte authentifiée du domaine est fournie par ConnectorRegistry et doit être appliquée à chaque écriture et remplissage de grand livre.

Exemple d'événement payant canonique

Événement commercial normalisé
{
  "event_id": "acme_store:invoice:INV-1042",
  "event_name": "invoice.paid",
  "platform": "acme_store",
  "order_ref": "ORDER-884",
  "invoice_ref": "INV-1042",
  "subscription_ref": "SUB-28",
  "service_ref": "SERVICE-91",
  "status": "paid",
  "lifecycle_type": "renewal",
  "amount": 129.00,
  "currency": "USD",
  "traffic_source": "acme_store",
  "occurred_at": "2026-07-23 08:30:27"
}

Mapping de Connector Builder

Lorsque la fonctionnalité Ventes et facturation est activée dans le Connector Builder, mappez le montant, la devise, l’état de la source et la date de la Source, ainsi qu’au moins une commande, une facture ou une référence d’abonnement. Mappez lifecycle_type lorsque API expose des preuves faisant autorité du cycle de vie. Le SalesIngest généré passe chaque ligne par le même normalisateur CommerceEventRegistry utilisé par les connecteurs intégrés et marketplace.

⚠️
Les crédits et les fonds d'ajout sont intentionnellement conservés pour l'historique de facturation, le contexte du solde client et l'analyse du grand livre. Les exclure des ventes ne les supprime pas; cela empêche seulement qu'ils gonflent la performance commerciale.

Le type de cycle de vie décide ce qui devient une affaire CRM

lifecycle_type n'est pas une étiquette analytique. OpsIQ lit pour décider si une vente entre dans le pipeline CRM, de sorte que chaque connecteur de vente prend une décision pipelinière qu'il ait l'intention ou non.

nouveau

Ouvre une transaction avec un client (nouvelle entreprise).

renouvellement et modernisation

Aucun accord de nouvelle entreprise — les renouvellements convertissent sur une courbe de probabilité différente et les mélangent corrompent les deux prévisions.

remboursement, crédit

Jamais ouvrir une offre, en aucun mode. L'argent retourné à un client n'est pas une victoire.

omis / inconnu

La vente est enregistrée mais n'a jamais atteint le pipeline.

Une vente, une rangée de grand livre : l'identité est la VENTE, pas l'événement

Ne pas correspondre à event_id et insérez-vous. event_id is platform:eventName:externalId, qui répond -Est-ce que nous avons déjà traité cette livraison et ne peut pas répondre -ont-nous déjà enregistré cette vente . Une plate-forme qui annonce un paiement deux fois — comme invoice.paid et encore comme payment.completed — deux cartes d'identité et deux cartes de crédit, sans rien à mettre en garde.

💡
Trouvé sur l'installation de référence : six factures avec trois lignes du grand livre chacune, à partir de trois chemins de code utilisant trois schémas event_id différents. Elles ont toutes porté 0.00 donc aucun total n'a semblé mal, et tout processus ultérieur de restauration des montants réels aurait compté un paiement trois fois.

Appelez plutôt l'écriture partagée. Core calcule l'identité commerciale de vente (sale_fingerprint), correspond à une ligne existante sur elle, conserve l'original event_id sur mise à jour et filtres aux colonnes réelles:

La seule façon d'écrire le registre des ventes
\OpsIQ\Commerce\CommerceEventContract::upsertSaleRow('opsiq_sales_events', $row);
Même vente, de nombreux événements

facture. payée, paiement. complété et vente. complete pour une facture partager une empreinte digitale et mettre à jour une ligne.

Les remboursements restent séparés

L'argent qui sort est un fait différent de l'argent en provenance. Un remboursement d'une facture conserve sa propre identité, donc il ne peut jamais écraser le paiement qu'il inverse.

Pas de référence, pas d'empreinte digitale

Une ligne ne portant aucune commande, facture, abonnement ou référence de service n'a aucune empreinte digitale du tout, donc deux lignes sans lien ne se heurtent jamais juste parce qu'elles manquent toutes deux un identificateur.

Priorité de référence

facture_ref, puis commande_ref et abonnement_ref. Ensuite service_ref — plus fort d'abord, une vente conserve une identité stable.

Le registre est en annexe seulement : ne jamais réécrire une vente

Un remboursement, une annulation ou une correction est nouvelle entrée datée. Ne mutez jamais la ligne qu'il corrige. Réécrire un paiement en remboursement semble rangé et casse trois choses à la fois:

Il détruit les recettes brutes

Le taux de vente et de remboursement brut cesse d'être séparable — et le taux de restitution est la mesure que l'inversion existe pour informer.

Il enregistre le renversement dans la mauvaise période

Un remboursement de mars d'une vente de janvier doit réduire Mars. Réécrire la rangée de janvier en silence répète une période fermée.

Il casse la piste de vérification

Un registre enregistre ce qui s'est passé à un moment donné. Les corrections sont des contre-engagements, ce qui est la façon dont la tenue de livres d'entrée double a fonctionné pendant cinq siècles.

Donc un connecteur signale l'inversion plutôt que de l'appliquer : retour refunded_at et refund_amount Le client peut aussi faire un rapport sur la vente, et le client doit écrire le remboursement comme sa propre ligne datée du moment où le remboursement a été effectué.

💡
Le même principe s'applique aux montants. Ne pas "réparer" un montant stocké à la valeur courante de la plateforme : une facture réglée à partir du crédit de compte enregistré légitimement 0 au moment du paiement, et l'argent était déjà enregistré lorsque le client a augmenté.

Le contrat de classification

OpsIQ décide du cycle de vie once, in \OpsIQ\Commerce\SaleLifecycleClassifier. Un connecteur ne déclare que lequel des sa propre plateforme les mots signifient ce que, en mettant en œuvre \OpsIQ\Connectors\SalesLifecycleConnectorInterface::salesLifecycleVocabulary(), puis appelle le classificateur partagé. Ne pas ré-appliquer le raisonnement.

Déclarez le vocabulaire, délèguez la décision
public static function salesLifecycleVocabulary(): array
{
    return [
        'credit'             => ['addfunds'],                  // adds balance, sells nothing
        'upgrade'            => ['upgrade'],                   // resizes an existing commitment
        'recurring'          => ['hosting', 'domainrenew'],    // continues something owned
        'acquisition'        => ['domainregister'],            // obtains something new
        'recurring_prefixes' => ['domainaddon'],               // families that grow over releases
    ];
}

$lifecycle = \OpsIQ\Commerce\SaleLifecycleClassifier::classify([
    'explicit'    => $platformSaidSo,     // wins outright when present
    'line_types'  => $types,              // your platform's own line/item types
    'vocabulary'  => self::salesLifecycleVocabulary(),
    'is_order'    => $cameFromANewOrder,
    'is_refunded' => $moneyWentBack,
]);
💡
La priorité est fixe et partagée : explicite, puis remboursé/annulé, puis crédit, puis mise à niveau, puis is_order, puis récurrent, puis acquisition, puis inconnu. Mise à jour se situe au-dessus de la vérification de commande car les plateformes soulèvent une commande pour des mises à niveau aussi; régular se trouve en dessous parce que la première facture d'un nouvel abonnement porte un type de ligne récurrent.

Déclarez la plateforme tout le vocabulaire

C'est l'échec qui coûte le plus cher et qui semble le moins faux.WHMCS connecteur assorti ['hosting','addon','domain'] — une liste qui se lit comme complète.WHMCS n'émet pas de nu Domain type pour les lignes de domaine réelles; il émet DomainRegister, DomainRenew, DomainTransfer, PromoHosting, PromoDomain, DomainAddon* et Upgrade. Tous sont tombés au-delà de la liste unknown: 1,288 factures, trois ans, aucune erreur et aucune ligne de journal.

Chaque nouveau client importe son histoire par un remblayage de connecteur, donc un bug de classification n'affecte pas un espace de travail — il affecte chaque espace de travailler qui jamais à bord à travers ce connecteur, au moment où ils regardent leur pipeline. prefix Ainsi, un frère et une sœur que personne n'a vus se classe avec ses proches au lieu de disparaître.

💡
Un bon connecteur de vente classe presque tout. Un flux constant d'inconnu est presque jamais les données que vous n'avez pas — c'est un vocabulaire que le connecteur n'a jamais appris à lire.

Réparation de l'historique importé

Chaque connecteur de vente expédié OpsIQ implémente ce — WHMCS, Shopify, WooCommerce, osCommerce, SaaS Bridge, Stripe, BigCommerce and Magento 2. Treat it as expected, not optional: a customer imports their old records on day one, so a classification fix that cannot reach that history only helps people who signed up afterwards. Implement \OpsIQ\Connectors\SalesLifecycleRepairInterface::reclassifySale() en utilisant n'importe quel fichier récupérer votre connecteur a déjà. tools/crm_backfill_sales_lifecycle.php puis répare votre connectique , sans code de connexion : sec par défaut, se recule et vérifie le nombre de lignes avant d'écrire, réversible à travers un registre défaire, et il n'écrit jamais une lecture ratée comme réponse.

💡
Si votre connecteur ne peut pas relire les enregistrements passés — un connecteur webhook seulement ne peut — ne pas piéger la méthode. Un stub retour inconnu est pire qu'aucune implémentation: un remblayage réécrirait de bonnes lignes comme non classifiées et rapporterait le succès. Implémentez l'interface vocabulaire uniquement.
💡
Les références détaillées des paquets restent disponibles dans connectors/CONNECTOR_EVENTS. md et connectors / PLATFORM_CONNECTORIS. md dans les distributions de sources auto-hébergées.
Connecteurs

Contrat d'événement de voyage

Journey Intelligence accepte une enveloppe d'événement neutre par rapport à la plateforme provenant du widget de navigateur, des connecteurs intégrés, du pont SaaS, des packages de marché et de la sortie de Connector Builder.

Isolation et limite de confiance

Clé de domaine pair exacte

Chaque événement est lié à la clé site_key du domaine authentifié. Un connecteur doit obtenir cette clé depuis ConnectorRegistry ou son point de terminaison authentificable, et jamais depuis un corps de requête non approuvé. Les domaines conservent des enregistrements distincts; un groupe de domaine n'est qu'un agrégat en lecture.

Identité indéterminée

Les retentatives, les webhooks et les remplissages de données effectuent la mise à jour d'un événement plutôt que de dupliquer un parcours ou une vente.

Nom natif plus nom canonique

Préservez source_event_name pour les besoins de la preuve et du dépannage, puis mappez-le sur event_name_canonical.

Le serveur gagne

L’observation du navigateur peut amorcer ou déduire un parcours. Les événements authentifiés du connecteur confirment l’inscription, la connexion, le paiement, l’achat, le renouvellement, le remboursement et d’autres résultats finaux. Un jeton de corrélation valide et lié au site constitue la jointure la plus fiable ; un jeton invalide est rejeté et les identifiants qu’il contient ne sont pas considérés comme fiables.

Confidentialité

Envoyez uniquement les identifiants et champs nécessaires au voyage déclaré. Respectez les paramètres de consentement, de masquage et de conservation Ne placez jamais d’identifiants, de données de carte, de secrets d’authentification ou de corps de message privé dans des propriétés.

Enveloppe canonique

Enveloppe d'événement de voyage
{
  "contract_version": 1,
  "event_id": "myshop:order:884:paid",
  "source": "myshop",
  "source_event_name": "order.paid",
  "event_name_canonical": "commerce.purchase.completed",
  "site_key": "exact_domain_site_key",
  "occurred_at": "2026-07-23T08:30:27Z",
  "visitor_id": "optional-browser-visitor",
  "session_id": "optional-browser-session",
  "journey_id": "optional-journey",
  "attempt_id": "optional-attempt",
  "correlation_token": "optional-signed-token",
  "customer_ref": "C-42",
  "user_email": "[email protected]",
  "object_type": "order",
  "object_ref": "884",
  "order_ref": "884",
  "outcome": "succeeded",
  "evidence_level": "server_confirmed",
  "confidence": 1,
  "properties": {"amount": 129, "currency": "USD"}
}

Taxonomie canonique

Les familles prises en charge incluent les événements de page d’engagement/CTA, l’inscription au compte, la connexion, l'authentification multifacteur et la réinitialisation du mot de passe, les étapes de prospect et de formulaire, le produit, le panier, la caisse, le paiement, l‘achat, l´abonnement, le renouvellement et le remboursement, les impressions et conversions de promotion, les activités liées aux centres d’aide, au chat et aux tickets, les évènements de sécurité et les opérations personnalisées dans des espaces de noms. account.signup.succeeded, account.login.succeeded, lead.form.succeeded, commerce.payment.succeeded, commerce.purchase.completed, commerce.subscription.renewed et commerce.refund.completed.

Inférence, confirmation et abandon du navigateur

Le widget peut fonctionner sans connecteur en observant la structure de la page, les actions du formulaire, les résultats DOM et le journal du parcours du visiteur. Cette preuve reste explicitement notée comme observée ou inférieure. Un connecteur ajoute une confirmation faisant autorité du serveur et peut la corréler à la même tentative de navigateur. L'abandon est d'abord stocké comme candidat; il devient abandonné seulement après la fenêtre d'inactivité définie dans l'interface utilisateur et uniquement lorsqu'il n'existe aucune récupération ultérieure ou aucun succès.

Attribution et revenus

L'attribution privilégie un jeton de corrélation signé valide, puis une référence exacte au parcours, à la tentative, à l'activité ou au commerce, puis le graphique d'identité acceptée et enfin une correspondance comportementale limitée. Les ventes non appariées restent sans attribution. Les pondérations du grand livre multi-touch doivent totaliser 1.

⚠️
Le modèle d'attribution, les fenêtres de rétroaction, la gestion du trafic direct, le niveau minimum de confiance, le délai d'abandon et les définitions d'entonnoir sont des règles d'interface utilisateur.

Connecteur manifeste et Builder

Déclaration de trajet du connecteur
{
  "capabilities": ["sales", "journey_events"],
  "journey_capabilities": {
    "journey_events": true,
    "payments": true,
    "subscriptions": false,
    "correlation_token": false,
    "backfill": true
  },
  "journey_event_mappings": [{
    "source_event_name": "order.paid",
    "event_name_canonical": "commerce.purchase.completed",
    "field_map": {
      "order_ref": "order.id",
      "customer_ref": "order.customer_id",
      "amount": "order.total",
      "currency": "order.currency",
      "occurred_at": "order.paid_at"
    }
  }]
}

Connector Builder valide le mappage et génère la même carte neutre par rapport à la plateforme utilisée par les packages propriétaires. L'ingestion de trajet accepte un événement ou un lot limité de 100 via le point de terminaison d'intégration authentifié généré.

💡
Le pont commerce-to-journey publie les résultats confirmés par le serveur et réconcilie l'attribution après la mise en avant du grand livre idempotent existant, de sorte qu'un paiement ne devient jamais deux ventes.
Connecteurs

Comment fonctionnent les actions d'IA

Chaque connecteur déclare un ensemble d'actions, c'est-à-dire des choses que l'IA peut faire via la plateforme externe. Les actions sont le pont entre ce que dit l'AI et ce qu'elle fait.

Actions d &apos; AI
Comment fonctionnent les actions d'IAUne demande client mappée à une carte d'action de type suppression, puis une liste de contrôle: permission vérifiée, vous confirmez, API appelé.Comment fonctionnent les actions d'IAespace de travail"Annuler mon abonnement"clientIAcancel_subscriptiondeleteConfirmer requisparams: subscription_id (à partir du contexte)TYPES D &apos; ACTIONreadwritedeleteAutorisation & rôle vérifiésVous confirmez l'actionAPI appelé · résultat signalé1DECLAREDChaque connecteur répertorie des actions2GATEDAutorisation + confirmer3THEN RUNAPI appel, retour du résultat
Une requête devient une action déclarée (lit/écrit/supprimé) qui est vérifiée, confirmée, puis exécutée et rapportée.

Le cycle de vie des actions

1
Le client demande quelque chose

"Annuler mon abonnement." L'IA identifie que cela nécessite l'action "cancel_subscription".

2
L'IA vérifie les autorisations

Cette action est-elle autorisée? Est-elle activée ; l'utilisateur actuel a-t-il le bon rôle?

3
L’IA recueille des paramètres

L’action nécessite un ID d’abonnement que l’IA recherche dans le contexte client ou demande au client.

4
Confirmation

Pour les actions destructrices ou à fort impact, l’IA demande une confirmation avant d’exécuter.

5
Exécution

L'action appelle la plateforme externe API.

6
Résultat

L’IA rapporte le résultat au client.

Types d &apos; action

Lire les actions

Recherchez des données sans rien modifier, par exemple list_orders ou get_customer. Sûre, aucune confirmation nécessaire.

Écrire des actions

Créer ou modifier des données. Exemples: create_ticket, update_order. Peut nécessiter une confirmation.

Supprimer les actions

Supprime les données. Exemples: annuler_abonnement. Toujours demander confirmation.

Actions HTTP

Déclaré dans les actes.json, générique API les appels définis de manière explicite.

Étiquettes de capacité

Champ facultatif de « capacité » par action dans les actions.json, une étiquette de classe neutre (p. ex. "tickets" pour une lecture/lookup de ticket, "tecket_create" pour ouvrir un ticket).OpsIQ permet à toute la classe d'accéder uniformément à chaque connecteur : le ticket lit les gouttes de l'IA lorsque l'opérateur désactive la sensibilisation au billet AI, et la création du ticket est réservée OpsIQ's propre compositeur (ainsi un outil de création de connecteur ne peut pas le reproduire).OpsIQ jamais besoin de connaître vos noms d'action. Le Constructeur de connecteurs l'expose comme un déroulant Capacité par action.

Actions du code

Implémenté en PHP dans la classe connecteur. Contrôle total sur la logique.

Exemple de définition d'action
{
  "lookup_order": {
    "label": "Look up an order",
    "description": "Find an order by ID or email",
    "method": "GET",
    "endpoint": "/admin/api/2024-01/orders.json",
    "params": {
      "order_id": { "type": "string", "label": "Order ID" },
      "email":    { "type": "email",  "label": "Customer email" }
    }
  }
}
Connecteurs

Construisez un connecteur

Le Connector Builder vous permet de créer un connecteur complet pour n'importe quelle plateforme avec une interface REST API. Aucun codage requis pour les connecteurs de base.

Construisez un connecteur
Constructeur de connecteursUn formulaire de connecteur sans code: nom, type d'authentification, base URL, un mappage d'action, un test de réussite et un bouton de publication.Constructeur de connecteursespace de travailConstructeur de connecteursNomMa plateformeResp.: Ministère de l'Economie et des FinancesOAuth 2.0(PKCE)Base URLhttps://api.example.com/v2DécisionGET/customers → liste des clientsTest réussiConnecteur de paquet1NO-CODENom, auth, base URL2ANY APIClé, porteur, de base, HMAC, OAuth3PUBLISHInto /connectors/<slug>/
Pointez le constructeur à n'importe quel REST API. Régler auth, base URL et les actions, testez-le, et publiez un connecteur de travail. Pas de code nécessaire.

Couverture complète du fournisseur API

Chaque généré API Le connecteur peut exposer des composants séparés.API Read and Native API Les actions sélectionnées restent préférées; les actions natives couvrent les points de terminaison du fournisseur ajoutés ultérieurement. L'exécution prend en charge REST, GraphQL, JSON, forme, XML, corps bruts et en plusieurs parties, pagination limitée,API-version des en-têtes et idempotence tout en conservant les informations d'identification dans les paramètres du connecteur de l'espace de travail.

⚠️
Les paquets du marché proviennent de. /marketplace_connectors ainsi que groupé /connectors. Augmentez la version du package, régénérez le contrat et la documentation, exécutez des tests de conformité, puis signez à nouveau et publiez la nouvelle version Marketplace.

Assistant Connector Builder

L'assistant comporte six étapes, affichées sous forme d'onglets en haut de l'écran. Enregistrer le brouillon Le bouton dans le pied de page garde votre travail à tout moment.

1
Identité et profil

Nom, limace, description et icône, puis choisir un profil de contrat: Standard API_, Commerce, Helpdesk, Mailbox, Site Intelligence, SaaS Bridge, Local PHP Platform, ou Plateforme avec noAPI lorsque la plate-forme ne sert rien d'appelable et que OpsIQ doit installer un pont. Le profil sélectionne un point de départ complet de la capacité; vous pouvez toujours ajuster les capacités individuelles.

2
Resp.: Ministère de l'Economie et des Finances

Choisissez le modèle d'authentification utilisé par la plateforme et remplissez ses champs. Entrez ici également les vraies informations d'identification de test. Elles sont utilisées pour le test de connexion à l'étape suivante, et ne sont pas stockées après la publication.

3
Essai

Entrez la API de base URL et un paramètre de vérification, puis exécutez un test de connexion en direct en utilisant les identifiants de l'étape 2. Faites ceci avant de définir des actions, si l'auth ou la base URL est faux, chaque action que vous écrivez après échouerait pour la même raison et vous débogez la mauvaise chose.

4
Actions

Définissez chaque opération: nom, méthode HTTP, chemin d'accès au point de terminaison, paramètres, mappage des champs de réponse et les paramètres de fiabilité décrits ci-dessous. Vous pouvez exécuter chaque action individuellement contre le API en direct à partir de cette étape.

5
Déclencheurs

Mappez les événements webhook que votre plateforme envoie sur des évéements OpsIQ, afin que les choses qui se produisent sur votre plate-forme puissent commencer à fonctionner dans _OpsIQ.

6
Relecture, contrat entreprise et publication

Review every action, trigger and capability. Enterprise profiles expose the generated queue, worker, hook, migration, ticket-mirror, attachment and conflict contract before publishing. Publishing writes the package into /connectors/<slug>/.

⚠️
Publier ne valide que le formulaire de l'assistant et émet des avertissements qui ne bloquent pas. La suite complète — manifeste, fichiers de capacité, contrat d'identité-ticket et la vérification bridge-snipet — fonctionne lorsque vous appuyez sur Dry-run, et encore à l'installation. Appuyez sur Dy-rune avant d'expédier, à chaque fois.

Que fait la publication que le formulaire ne vous montre pas

Cinq comportements du générateur surprennent les gens. Aucun n'est un bug; tous vous coûteront un après-midi si vous les rencontrez par accident.

Une question décide de la transmission : la plate-forme sert-elle un API ?

Répondez-le en un rien de temps1en sélectionnant le mode d'accès aux données (ou le "Platform avecAPI" profil " .APIle mode déclare native_api and emits the <slug>_api_call passthrough. Bridge mode declares platform_bridge et les STRIPS native_api même si une spécification plus ancienne la portait, de sorte que le manifeste, la classe générée et les documents d'expertise ne peuvent pas être en désaccord. ai_brain_aware est ajouté de toute façon.

SILENCE MENSUE "il a un API"

Le Constructeur suit votre réponse ; il ne fonctionne pas la vérité pour lui-même, et le défaut quand rien n'est dit estAPIDonc, un non-APIla plate-forme doit le dire ACTIVEMENT — choisissez la "Platform sansAPI" profil, accès aux données de la passerelle ou tic platform_bridge; any one of the three is enough and they cannot contradict each other. Skip the question on a platform with no API and you are back to the old failure: a dead <slug>_api_call the model keeps reaching for. This used to be stamped unconditionally, so the trap is now escapable rather than gone.

Le test de connexion par défaut pour GET /ping

Si vous laissez le chemin de vérification vide, le constructeur écrit /ping dans le connecteur généré et dans le profil.json's test block. Presque aucune plate-forme réelle ne sert cette route, donc Test Connection échoue avec HTTP404sur chaque installation et se lit comme une erreur de configuration du client plutôt qu'un défaut de paquet. Définissez un chemin de vérification que votre plateforme répond réellement. Pour un connecteur de pont, pointez-le à votre propre paramètre de diagnostic — cela prouve toute la chaîne en un seul appel: le pont est déployé, la clé correspond, et le pont peut atteindre la base de données.

Re-publier toujours écraser vos éditions main

Les capacités suivent maintenant la réponse data-access, de sorte que ceux qui ne dérivent plus. Tout le reste généré fait toujours: éditer ContextProvider. php ou tout autre fichier émis et publier suivant le remplace. La seule exception protégée est le fichier bridge — l'assistant écrase seulement un pont portant son propre marqueur, donc un manuscrit est laissé seul.

La publication des fichiers supprime

Désactivez une fonction et la publication suivante supprime son fichier fournisseur. Les modifications apportées à n'importe quel fichier généré — ContextProvider.php surtout — sont écrasées sans avertissement. Copiez d'abord les personnalisations ou prenez possession du paquet en supprimant .opsiq- Constructeur.json(après quoi l'assistant ne le gérera plus).

release_status est toujours prévisualiser

L'assistant n'a aucun contrôle pour elle. Un paquet destiné à expédier comme production doit avoir release_status changé à la main dans les paramètres.json— et que la modification rompt la signature, donc resigner ensuite.

La signature prouve l'intégrité, pas l'origine

Les paquets de constructeur sont signés avec la propre clé symétrique de cette installation. Cela détecte les manipulations. Il ne prouve pas qui a écrit le paquet, et toute installation tenant la même clé peut produire la même signature. Traiter un paquet signé localement comme autosigné.

Les collisions de boue ne sont vérifiées que dans un arbre

L'édition refuse une limace qui existe déjà sous/connectors/.Il ne regarde pas/marketplace_connectors/,Donc un paquet de première partie avec la même limace peut finir par shadowed.

💡
Un fichier de connaissances décrivant votre plateforme est généré pour vous à partir du nom, de la description, du type d’authentification et des actions que vous avez définis. Il est chargé dans l’IA lorsque le connecteur est activé. After the connector is enabled, it is loaded into the AI.

Définir une action (étape 4)

Seuls les quatre premiers paramètres sont requis, le reste est défini par l'utilisateur qui peut exécuter l'action et avec quel soin.

Clé et étiquette d'action

La clé est ce que l'IA appelle, et le label est ce qu'un humain lit. Les clés sont automatiquement associées à votre slug de connecteur. Deux connecteurs peuvent donc avoir tous deux un "list_orders" sans entrer en collision.

Méthode HTTP

GET, POST, PUT, PATCH ou DELETE.

chemin URL

Annexé à la base URL. Utilisation {name} Pour les espaces réservés, par exemple /opportunities/{id}/stage

Paramètres

Pour chaque paramètre, vous choisissez également où il va: corps, path, query ou en-tête. Un paramètre path remplit un. {placeholder}; un paramètre de requête est ajouté à la URL.

Cartographie des réponses

Dites quel champ de la réponse JSON signifie ce qui, qui est le nom du client, qui correspond au courriel, qui représente le total des commandes. C'est ce qui permet à l'IA de lire les données de votre plateforme plutôt que de deviner.

Qui peut l'utiliser

Votre équipe (IA d’administration), les clients connectés (chat client), les deux ou l’assistant de rédaction. Les actions client s’exécutent uniquement pour le client connecté, et les champs d’identité sont verrouillés automatiquement afin qu’un client ne puisse pas poser de questions sur un autre.

Nécessite confirmation

Un humain doit approuver avant que l'action ne s'exécute.

Destructif

Marque l'action comme supprimant ou changeant d'état. Utilisé pour avertir avant son exécution.

Permission requise

L'administrateur doit détenir cette autorisation pour que l'IA exécute l'action en son nom; les administrateurs complets passent toujours. Choisissez parmi get_integrations, geten_general, geat_billing, gate_sales_bridge, gesten_knowledge, gage_comportement, glean_permissions, manage_dangerzone, reply_to_chats, greating_to _ticket, send_agent_email ou aucun, ce qui signifie qu'il y a un administrateur authentifié.

Description / indice AI

Optionnel, mais il vaut la peine d'être écrit. Il indique à l'IA quand elle doit utiliser cette action, par exemple "Utiliser ceci lorsque l'administrateur demande de changer une étape du deal". Un bon indice est la différence entre une action que l'AI utilise correctement et celle qu'elle ignore.

Capacité

En option, les tickets (un ticket lu ou recherché) ou ticket_create (ouvre un ticket). Le marquage permet à OpsIQ de bloquer toute la classe en même temps, par exemple, le billet caché lit lorsqu'un opérateur désactive la sensibilisation au ticket AI.

Chemin de la liste

Pour les points de terminaison qui renvoient une liste, le chemin pointillé vers le tableau, par exemple data ou data. items

Chemin d'erreur

Facultatif. Un champ de corps dont la présence signifie que l'appel a échoué, par exemple error.message, utile pour APIs qui renvoie HTTP 200 en cas d'échec.

Exécutez-le

Chaque action peut être exécutée sur le API en direct à partir de cette étape, vous pouvez donc corriger un chemin ou nom de champ erroné avant que quelqu'un d'autre ne l'utilise.

⚠️
Toute action utilisant POST, PUT, PATCH ou DELETE nécessite au départ l'autorisation manage_integrations (voir la section sur les permissions de gestion des intégrations). et Une nouvelle action d'écriture échoue fermée plutôt que de laisser l'IA changer vos données sans supervision. Vous pouvez changer à la fois sur l'action, mais les changer sciemment.
💡
Pour être appelée depuis le chat client, une action doit être en lecture seule. Laissez les options Requires confirmation et Destructive décochées. Une action qu'un client peut déclencher qui change également l'état n'est pas quelque chose que l'assistant vous laissera expédier par accident.

Réception de webhooks (étape 5)

L'étape Triggers vous donne un webhook URL pour s'inscrire sur votre plateforme, et vérifie chaque requête qui arrive sur elle.

En-tête de signature

L'en-tête avec lequel votre plateforme signe, par exemple X-Hub-Signature-256.

Algorithme de signature

HMAC-SHA1, HMA C-SHA256 ou HMA-SHA512.

Système de signature

Simple, un hexagone simple ou une base64 digest.Stripe-style, le format t=...,v1=... utilisé parStripeet plusieurs plateformes qui l'ont copié.

Préfixe de signature

Certaines plateformes préfixent le digest, par exemple sha256=. Laissez-le vide si la vôtre ne l'a pas fait.

Mappings d'événement

Mapper chaque événement que votre plateforme envoie sur l'événement OpsIQ qu'elle devrait générer.

Enregistrement automatique du webhook

Si votre plateforme dispose d'un API Pour gérer ses propres webhooks, vous n'avez pas besoin d'enregistrer le. URL Fabriqué à la main. Ouvrir Enregistrer automatiquement ce webhook sur enable et pointez-le sur deux des actions que vous avez définies à l'étape 4:

Action Create-webhook

Vous donnez le nom du paramètre qui contient URL, éventuellement celui qui contiens la liste des évènements et le chemin dans la réponse qui contien l'identifiant du nouveau webhook.

Action Delete-webhook

Appelé lorsque le connecteur est désactivé, en utilisant l'identifiant capturé ci-dessus. La désactiver arrête donc également votre plateforme d'envoyer vers un point de terminaison mort.

Des fonctionnalités que vous pouvez activer

Les profils et les capacités sont définis par le contrat de connecteur 2.2. Les capacités générées et déclaratives sont émises directement; les capacité EnterpriseExtension.php Échafaudage avec câblage de cycle de vie.

Actions

Opérations que l’IA peut exécuter sur votre plateforme : liste des commandes, recherche d’un client, émission d’une facture.

Déclencheurs

Recevez des webhooks de votre plateforme et transformez-les en événements OpsIQ.

Billets AI

AI Triage et le copilote de réponse sur les tickets qui restent sur votre plateforme. Choisissez l'endpoint qui renvoie un ticket avec ses réponses et mappez les champs; OpsIQ lit le thread à travers lui.

Boîte aux lettres et contacts

Affichez le courrier d'un client sur sa timeline, envoyez à partir d'une offre et synchronisez votre carnet d'adresses dans l'application. OpsIQ CRM.

Importation de client

Parcourez votre liste de clients et importez chacun d'eux en tant que contact OpsIQ, c'est ce que fait le bouton Importer.

Contexte

Insérez les données en direct de votre plateforme dans chaque conversation d’IA.

Identité

Déterminez lequel de vos clients est un visiteur et affichez son profil et ses achats sur un ticket.

Ventes et facturation

Insérez les événements de revenu et les chiffres MRR dans les tableaux de bord OpsIQ.

Billets d &apos; entrée

Transformez les tickets et e-mails que votre plateforme livre par webhook en fils de support OpsIQ.

Réponses sortantes

Le staff de OpsIQ répond à la plateforme sur laquelle le fil a été créé.

Synchroniser les utilisateurs

Importez vos comptes de personnel dans les utilisateurs OpsIQ admin.

Synchroniser les départements

Importez vos services de support dans OpsIQ.

Ciblage promotionnel et flux de produits

Laissez Promotion Studio cibler les faits que vous connaissez sur une personne et affichez vos produits réels dans une promotion.

Fournisseur Survey Studio

Exposez les faits de l'enquête vérifiés par le serveur, les variables échappées et les pages des destinataires CRM Outreach délimitées via un fichier SurveyProvider. php dédié.

Blocage natif de IP

When OpsIQ blocs an IP, appelez le bloc propre à votre plateforme. API Donc le blocage est appliqué là aussi.

Événements de sécurité

Recevoir bloqué-IP Signaux de menace provenant de : OpsIQ.

Connaissance de la plateforme pour l’IA

Chaque connecteur que vous créez est livré avec une courte référence décrivant ce qu'est votre plateforme et ses actions. L'IA d'administration OpsIQ la lit chaque fois que votre connecteur est activé, de sorte qu'elle comprend votre plate-forme plutôt que de simplement voir une liste des noms d'actions.

API passage

Votre connecteur reçoit toujours un appel à usage général afin que l'IA puisse atteindre un point de terminaison pour lequel vous n'avez pas défini d'action typée. Utilisez des actions typées lorsque c'est possible; il s'agit du trapèze d'échappement.

Contrat de connecteur canonique 2.2 Référence

Contract version: 2.2 · 54 capabilities · 8 profiles.

Profils de connecteur

standard_api · Standard REST or GraphQL API

Actions, triggers, OAuth/API-key authentication and optional context/identity mappings. Capabilities: actions, triggers, native_api, ai_brain_aware.

commerce · Commerce and billing platform

Customers, orders, sales, subscriptions, billing, promotions and journey events. Capabilities: actions, triggers, journey_events, sales, billing, sync_orders, customer_import, survey, promo_audience, promo_feed, context, identity.

helpdesk · Helpdesk and ticket platform

Inbound tickets, outbound replies/notes, customer roster, AI triage and bidirectional ticket mirroring. Capabilities: actions, triggers, inbound_ticket, outbound_reply, outbound_note, ai_tickets, customer_import, survey, context, identity, ticket_mirror, attachment_bridge, conflict_resolution.

mailbox · Mailbox and email provider

Inbound/outbound mail, address-book sync, multi-account OAuth and CRM timeline integration. Capabilities: inbound_email, outbound_email, mailbox, email_mailbox, oauth, actions, customer_import, ai_reply.

site_intelligence · Site Intelligence data provider

SEO, analytics, search-console, local-search or monitoring provider with scheduled sync. Capabilities: actions, triggers, site_intelligence, seo, scheduled_workers, durable_queue.

saas_bridge · SaaS bridge

Deep two-way SaaS integration with customers, billing, identity, tickets, webhooks, queues, attachments and workers. Capabilities: actions, triggers, webhook, context, identity, customer_import, survey, journey_events, sales, billing, inbound_ticket, outbound_reply, ticket_mirror, attachment_bridge, durable_queue, scheduled_workers, database_migrations, conflict_resolution, enterprise_hooks, admin_assets.

no_api_bridge · Platform with no API (OpsIQ installs a bridge)

For a self-hosted PHP application that serves no callable API. The wizard generates a signed bridge file the operator drops into their own site, plus the typed actions that read and write through it. Capabilities: actions, platform_bridge, ai_brain_aware.

local_php_platform · Local PHP platform bridge

WHMCS-style local hooks, database access, two-way tickets, billing/customer sync, queues and migrations. Capabilities: actions, native_data, context, identity, customer_import, survey, journey_events, sales, billing, inbound_ticket, outbound_reply, ticket_mirror, attachment_bridge, durable_queue, scheduled_workers, database_migrations, conflict_resolution, enterprise_hooks, admin_assets.

Capacités canoniques

Mesures prises

Universal actions. Capability version: 1.0. Mode: generated. Runtime methods: registerActions. Package files: actions.json.

déclencheurs

Inbound event triggers. Capability version: 1.0. Mode: generated. Runtime methods: handleWebhook. Package files: actions.json.

webhook

Inbound webhook endpoint. Capability version: 1.0. Mode: generated. Runtime methods: handleWebhook.

journey_events

Universal Journey Event Contract mapping. Capability version: 1.1. Mode: generated. Interfaces: OpsIQ\Connectors\JourneyEventConnectorInterface. Package files: settings.json.

context

AI context providers. Capability version: 1.0. Mode: generated. Runtime methods: contextProviders. Interfaces: OpsIQ\Connectors\ContextConnectorInterface. Package files: ContextProvider.php.

guest_lookup

Guest record lookup without login (reference + proof match). Capability version: 1.0. Mode: generated. Runtime methods: contextProviders. Interfaces: OpsIQ\Connectors\ContextConnectorInterface. Package files: GuestLookupProvider.php.

identité

Admin/customer identity providers. Capability version: 1.0. Mode: generated. Runtime methods: identityProviders, detectAdmin, detectCustomer. Interfaces: OpsIQ\Connectors\IdentityConnectorInterface. Package files: IdentityProvider.php.

sales

Sales and revenue ingestion. Capability version: 1.1. Mode: generated. Interfaces: OpsIQ\Connectors\CommerceConnectorInterface. Package files: SalesIngest.php.

facturation

Cross-platform billing snapshot. Capability version: 1.0. Mode: generated. Runtime methods: billingProviders. Interfaces: OpsIQ\Connectors\BillingConnectorInterface. Package files: BillingProvider.php.

payments

Payment-provider capability bus. Capability version: 1.0. Mode: generated. Runtime methods: paymentsCapabilities.

inbound_ticket

External ticket/email to OpsIQ ticket ingestion. Capability version: 1.0. Mode: generated. Runtime methods: handleWebhook. Interfaces: OpsIQ\Connectors\TicketMirrorConnectorInterface.

outbound_reply

Reply mirroring to the external platform. Capability version: 1.0. Mode: generated. Runtime methods: pushReply. Interfaces: OpsIQ\Connectors\TicketMirrorConnectorInterface.

sync_users

Staff/customer synchronisation. Capability version: 2.0. Mode: generated. Runtime methods: listCustomers. Interfaces: OpsIQ\Connectors\CustomerImportConnectorInterface. Package files: SyncImport.php.

sync_departments

Department/team synchronisation. Capability version: 1.0. Mode: generated. Package files: SyncImport.php.

sync_orders

Order roster and order-event synchronisation. Capability version: 1.0. Mode: declarative. Interfaces: OpsIQ\Connectors\CommerceConnectorInterface.

sync_products

Product, catalog and inventory synchronisation. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

sync_projects

Project, issue and workspace synchronisation. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

customer_import

CRM customer roster import. Capability version: 2.0. Mode: generated. Runtime methods: listCustomers, backfillChunk. Interfaces: OpsIQ\Connectors\CustomerImportConnectorInterface.

security_events

Receive and emit security events. Capability version: 1.1. Mode: generated. Runtime methods: securityCapabilities, syncBlockedIp, removeBlockedIp. Interfaces: OpsIQ\Connectors\SecuritySyncConnectorInterface.

security_native_block

Native remote IP/CIDR blocking. Capability version: 1.0. Mode: generated. Runtime methods: syncBlockedIp, removeBlockedIp. Interfaces: OpsIQ\Connectors\SecuritySyncConnectorInterface.

survey

Survey identity, audiences, recipients and variables. Capability version: 1.0. Mode: generated. Runtime methods: surveyAudienceCatalog, surveyAudienceFacts, surveyVariableCatalog, surveyVariables, surveyRecipientPage. Interfaces: OpsIQ\Connectors\SurveyConnectorInterface. Package files: SurveyProvider.php.

reply_feedback

Ticket reply feedback mirror (platform reply ratings land via the portal write method). Capability version: 1.0. Mode: generated. Runtime methods: replyFeedbackCatalog, pullReplyFeedback. Interfaces: OpsIQ\Connectors\ReplyFeedbackConnectorInterface.

promo_audience

Promotion targeting facts. Capability version: 1.0. Mode: generated. Runtime methods: subscribers. Interfaces: OpsIQ\Connectors\PromotionConnectorInterface.

promo_feed

Promotion product/content feed. Capability version: 1.0. Mode: generated. Interfaces: OpsIQ\Connectors\PromotionConnectorInterface.

email_mailbox

Mailbox bus, outbound mail and address-book sync. Capability version: 1.0. Mode: generated. Runtime methods: emailAccounts. Interfaces: OpsIQ\Connectors\MailboxConnectorInterface.

inbound_email

Receive inbound email. Capability version: 1.0. Mode: declarative. Runtime methods: poll, handleWebhook. Interfaces: OpsIQ\Connectors\MailboxConnectorInterface.

outbound_email

Send outbound email. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions. Interfaces: OpsIQ\Connectors\MailboxConnectorInterface.

mailbox

Mailbox connector. Capability version: 1.0. Mode: declarative. Runtime methods: emailAccounts. Interfaces: OpsIQ\Connectors\MailboxConnectorInterface.

ai_tickets

AI triage and Inbox Copilot for remote tickets. Capability version: 1.0. Mode: generated. Runtime methods: loadTriageContext. Package files: AiOperations.php.

ai_reply

AI-assisted reply drafting. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

ai_brain_aware

Connector expertise supplied to Admin AI. Capability version: 1.0. Mode: generated. Package files: ai_expertise_admin.md, ai_api_reference.md.

native_api

Native API passthrough. Capability version: 1.0. Mode: generated. Runtime methods: registerActions.

platform_bridge

Signed platform bridge (for platforms with no API). Capability version: 1.0. Mode: generated. Runtime methods: registerActions. Package files: bridge/.

native_data

Local database/platform data adapter. Capability version: 1.0. Mode: declarative. Runtime methods: nativeDataProviders. Interfaces: OpsIQ\Connectors\NativeDataConnectorInterface.

CRM

CRM capability provider (calendar, enrichment, telephony or customer data). Capability version: 1.0. Mode: declarative. Runtime methods: crmCapabilities. Interfaces: OpsIQ\Connectors\CrmCapabilityConnectorInterface.

block_registry

Remote sender block-registry synchronisation. Capability version: 1.0. Mode: declarative. Runtime methods: blockSender, unblockSender, isSenderBlocked. Interfaces: OpsIQ\Platform\BlockRegistryInterface.

inbound_comment

Inbound comment ingestion. Capability version: 1.0. Mode: declarative. Runtime methods: handleWebhook.

outbound_note

Outbound private note. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

outbound_notification

Outbound notification delivery. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

oauth

OAuth 2.0 authorisation. Capability version: 1.0. Mode: generated.

reviews

Review ingestion and response. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

Local

Local search/location data. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

seo

SEO data and actions. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

site_intelligence

Site Intelligence provider. Capability version: 1.0. Mode: declarative. Runtime methods: siteIntelligenceProviders. Interfaces: OpsIQ\Connectors\SiteIntelligenceConnectorInterface.

analytics

Analytics data provider. Capability version: 1.0. Mode: declarative. Runtime methods: analyticsCapabilities.

comms

Communications/video-meeting provider. Capability version: 1.0. Mode: declarative. Runtime methods: commsCapabilities.

admin_assets

Connector-provided admin/account/public browser assets. Capability version: 1.0. Mode: generated. Runtime methods: adminAssets. Interfaces: OpsIQ\Connectors\AdminAssetConnectorInterface.

enterprise_hooks

Platform-native hooks and lifecycle callbacks. Capability version: 1.0. Mode: extension. Package files: EnterpriseExtension.php.

durable_queue

Durable outbox/inbox queue and retry policy. Capability version: 2.0. Mode: extension. Package files: EnterpriseExtension.php.

ticket_mirror

Bidirectional ticket mirror with conflict handling. Capability version: 2.0. Mode: extension. Interfaces: OpsIQ\Connectors\TicketMirrorConnectorInterface. Package files: EnterpriseExtension.php.

attachment_bridge

Attachment upload/download transfer. Capability version: 2.0. Mode: extension. Package files: EnterpriseExtension.php.

database_migrations

Connector-owned schema migrations. Capability version: 1.0. Mode: extension. Package files: EnterpriseExtension.php.

scheduled_workers

Connector-owned scheduled/background workers. Capability version: 1.0. Mode: extension. Package files: EnterpriseExtension.php.

conflict_resolution

Two-way sync conflict strategy. Capability version: 1.0. Mode: extension. Package files: EnterpriseExtension.php.

⚠️
Mettez des règles métier spécifiques à la plateforme dans les points d'extension générés; le cycle de vie du package, les files d'attente, les travailleurs, les migrations et les tests de conformité restent gérés par Builder.

Paramètres de fiabilité sur chaque action

Remboursements

Le nombre de fois où un appel échoué doit être réessayé, avec une mise en attente qui double chaque tentative. Seuls les délais d'attente, les erreurs 429s et 5xx sont réessayées. Une erreur 4xx est la faute de votre requête et répéter cette erreur ne ferait que brûler votre limite de débit.

Limite de taux

Un plafond par minute pour cette action, afin qu'un déclencheur occupé ne puisse pas marteler votre plateforme. Laissez-le à 0 pour aucune limite.

Délai

Combien de temps attendre pour votre plate-forme avant d'abandonner.

Confirmation

Exiger qu'un humain approuve l'action avant de la faire fonctionner. Utilisez-le pour tout ce qui est destructeur.

Types d'authentification

Étape 2 vous propose sept modèles. Choisissez celui qui correspond à votre plateforme API documentation, le générateur émet le bon client HTTP pour lui.

API clé dans l'en-tête

Une clé statique envoyée comme en-tête fixe, par exemple X-API Vous donnez le nom de l'en-tête et l'étiquette que le formulaire d'administration doit afficher. Ceci envoie la clé uniquement comme en-têtes; si votre API Si la requête attend que la clé soit un paramètre de requêtes, utilisez des en-têtes personnalisés ou un connecteur à code complet.

Jeton au porteur

Token sent as Authorization: Bearer <token>. Common for modern APIs.

Auth de base

Nom d'utilisateur et mot de passe, encodés en base64 dans l'en-tête Autorisation Vous choisissez les étiquettes que ces deux champs affichent sur le formulaire d'administration.

HMAC-signé

Une clé publique plus un secret, avec le corps de la requête signé Vous donnez l'en-tête de signature, l'entête de la clé et l'entier d'horodatage attendu par votre plateforme.

OAuth 2.0 (informations d'identification du client)

Serveur à serveur, sans interaction utilisateur ni redirection. Vous fournissez le jeton URL et une portée facultative; l'administrateur fournit un ID client et un secret. Utilisez-le lorsque votre plateforme émet des informations d'identification à une application plutôt qu'à une personne.

OAuth 2.0 (Bouton de connexion)

Le flux d'autorisation-code avec PKCE, pour Stripe, Shopify, Slack et des applications de style QuickBooks. Vous donnez l'autorisation URL, le jeton URL Après la publication, l'administrateur clique sur Connecter sur le connecteur, autorise votre plateforme et configure les paramètres de connexion. OpsIQ stocke le jeton de rafraîchissement et les jetons d'accès mints à la demande. URI Pour vous inscrire dans votre. OAuth L'application est affichée sur la page de paramètres du connecteur.

En-têtes personnalisés

A free-form JSON Utilisez la carte d'en-tête pour tout ce que les modèles ci-dessus ne couvrent pas, par exemple {"X-API-Key":"{api_key}","X-Locataire":"{tenant_id}"}. Chaque espace réservé devient un champ sur le formulaire d'administration.

💡
Le flux d'informations d'identification du client n'a pas de redirection et aucune étape utilisateur, PKCE ne s'y applique donc pas.

Styles de pagination

Déduction

Utilise les paramètres offset et limit. Exemple:?offset=100&limit=50.

Page 10

Utilise le numéro de page. Exemple:? page=3&per_page=_50.

curseur

Utilise un jeton de curseur de la réponse précédente.

En-tête de lien

Utilise l'en-tête de réponse Lien avec rel="next".

Avancé: code PHP personnalisé

connector. php REMURS une instance. Il ne déclare pas une classe nommée pour laquelle OpsIQ chasse. Les noms de méthode ci-dessous sont ceux requis par ConnectorInterface; obtenir un faux est fatal à la charge, pas un avertissement.

connector. php — le contrat réel, minimal et réalisable
<?php
/* connectors/myplatform/connector.php */
declare(strict_types=1);

use OpsIQ\Connectors\AbstractConnector;

require_once __DIR__ . '/Client.php';

return new class extends AbstractConnector {

    /* ── the three identity methods. NOT identifier()/label(). ── */
    public function slug(): string        { return 'myplatform'; }
    public function name(): string        { return 'My Platform'; }
    public function description(): string { return 'Orders and customers from My Platform.'; }

    public function capabilities(): array { return ['actions', 'context']; }

    public function settingsSchema(): array
    {
        $f = __DIR__ . '/settings.json';
        if (!is_file($f)) return [];
        $j = json_decode((string)file_get_contents($f), true);
        return is_array($j['settings'] ?? null) ? $j['settings'] : [];
    }

    /* ── NOTE THE ARGUMENT. testConnection() with no parameter is a fatal. ── */
    public function testConnection(array $settings): array
    {
        try {
            $resp = \OpsIQ\Connectors\MyPlatform\Client::callWithSettings($settings, 'GET', '/me', [], []);
            $code = (int)($resp['http_code'] ?? 0);
            return ($code >= 200 && $code < 300)
                ? ['success' => true,  'info'  => ['message' => 'Connection OK', 'http_code' => $code]]
                : ['success' => false, 'error' => "Verify endpoint returned HTTP $code"];
        } catch (\Throwable $e) {
            return ['success' => false, 'error' => 'Test failed: ' . $e->getMessage()];
        }
    }

    public function onEnable(array $settings): array  { return ['success' => true]; }
    public function onDisable(array $settings): array { return ['success' => true]; }

    public function handleWebhook(array $payload, array $headers, array $settings): array
    {
        return ['success' => true, 'note' => 'No triggers declared.'];
    }

    /* Inherited from AbstractConnector: reads actions.json for you.
     * Override only to ADD actions the manifest cannot express. */
    public function registerActions(array $settings): array
    {
        return parent::registerActions($settings);
    }
};
⚠️
Three things that fatal at class load rather than failing gracefully. The identity methods are slug(), name() and description() — not identifier() and label(). testConnection() TAKES an array of settings; a no-argument version is an incompatible signature. And there is no $this->http() or runAction() on AbstractConnector — HTTP goes through your own Client.php or through an action declared in actions.json.

Miroir des tickets dans le système de billetterie natif

Lorsque votre plateforme possède un ticket, faites-en une copie en miroir dans OpsIQ à partir de votre connecteur en utilisant l'assistant d'ingestion de tickets dont hérite votre connecteurs (créer pour un nouveau ticket, ajouter une réponse pour les suivis). subscribers() méthode, ticket.created, ticket.replied, ticket.updated, ticket.deletedLa réponse automatique, l'escalade, le SLA et le CSAT sont tous liés aux mêmes événements, vous pouvez donc en hériter sans code supplémentaire.

Dites qui a écrit le message d'ouverture

Un billet est toujours pour Le message d'ouverture peut être écrit par le client, mais staff: un agent qui ouvre un ticket pour le compte du client, ou qui s'adresse à lui de manière proactive. ticket.created Un contrat plutôt que quelque chose que chaque connecteur résout en privé.

author_type

client (par défaut) ou admin. Omettez-le et le client est supposé.

author_id

L'identifiant du personnel lorsque author_type=admin. Jamais l'identi fi de client.

author_name

Nom d'affichage de l'agent ou du service. Revient à « Personnel ».

author_email

L'adresse de l'agent. JAMAIS celle du client. Un message du personnel sous le courriel du client est une erreur de rapport et d'audit.

Ce n'est pas cosmétique. Les consommateurs lisent author_type Une ouverture écrite par le personnel est signalée comme étant la première. client laisse auto-répondre à un message écrit par votre propre agent, et fait l'écho de votre plateforme de cette ouverture ressemble à un nouveau message client, qui se pose alors comme un duplicata et retourne le ticket à answered. Mappez le signal de votre plateforme sur celui-ci dans les Normalisateur d'événements, jamais dans les consommateurs.

Blocage centralisé

Lorsqu'un agent bloque un expéditeur, cela s'applique à tous les every canal immédiatement (e-mail, chat, portail, widget et chaque connecteur jumeau) parce que le bloc est appliqué centralement, avant que n'importe quel connecteur voit le message. Votre connecteur hérite en ne faisant rien. Il n'y a pas de travail entrant pour implémenter et aucun moyen de se tromper.

La moitié facultative est outbound: indiquer à votre plateforme qu'un client a été bloqué ici, ne l'implémenter que si votre plate-forme peut exprimer quelque chose d'équivalent.

Capabilities()

Doit inclure block_registry ET la classe doit implémenter BlockRegistryInterface. Le drapeau est une revendication; l'interface est la garantie. Le registre nécessite les deux.

blockSender($b)

Récupère type (email|domaine|ip), valeur, raison, admin_id, expires_at, site_key. Retourne [résultat, détail?, référence_distant?].

unblockSender($b)

Même charge utile, inversée. Doit être idémpotente. Débloquer quelque chose qui ne soit jamais bloqué n'est pas une erreur.

isSenderBlocked($b)

Pour le rapprochement, la dérive est donc signalée plutôt que découverte par un client. Retourne [résultat, bloqué?].

Valeurs de résultat

Très bien.

Appliqué sur votre plateforme. Inclure remote_ref quand vous avez un id qui vaut la peine d'être enregistré.

noop

Déjà dans l'état demandé.

unsupported

Votre plateforme n'a pas de concept équivalent. PAS une erreur.

échoué

Vous auriez pu le faire et cela aurait mal tourné. Incluez les détails. Ils entreront dans la piste d’audit.

La réponse correcte est « décliner ». De nombreuses plateformes n'ont pas de concept de « blocage de cet expéditeur » et offrent uniquement la suspension du COMPTE, ce qui arrête la facturation, les connexions et les services plutôt que simplement le courrier d'assistance. En associant « un agent a bloqué une adresse spam » à « fermer le compte de ce client », vous permettrez qu'un seul clic erroné bloque les services d'un client payant. unsupported Et laissez-le tranquille.

Le refus couvre également le cas où la plateforme can Vous ne pouvez pas le faire, mais vous ne le laisserez pas. API, pas une fonctionnalité: un levier qui n'existe que dans l'interface d'administration de la plateforme est un lecteur dont votre connecteur ne dispose pas.

Exemple de travail · Zendesk (la mise en œuvre de référence)

Lire connectors/zendesk/connector.php alongside this. It is short, and every branch below is a decision you will face too.

Envoyer un email → ok

PUT /api/v2/users/{id} avec suspendu=true. Les nouvelles requêtes d'un utilisateur final suspendu se détournent vers les Billets Suspendus au lieu d'en ouvrir une, vraiment la même idée que de bloquer un expéditeur, et cela n'arrête pas la facturation parce que Zendesk utilisateurs finaux n'ont pas.

Domaine → non pris en charge

Zendesk PEUT suspendre un domaine entier, mais seulement à l’aide du mot clé suspend: dans la zone de texte de liste de blocage du Centre d’administration. Aucune valeur API n’écrit ce champ. La fonctionnalité existe, le levier non.

ip → non pris en charge

Aucun bloc IP n'existe au niveau du ticket.

Adresse inconnue → noop

Zendesk ne peut pas pré-suspendre une adresse qu’il n’a jamais vue. Rien ne faire n’est pas un échec. Le blocage local arrête toujours le ticket.

Agent ou administrateur → non pris en charge

REFUSÉ. Le personnel qui suspendrait un collègue serait enfermé hors du service d'assistance. Une adresse du personnel atteignant une liste de blocs est beaucoup plus susceptible d'être une erreur qu'une instruction, vérifiez le rôle avant d'agir sur elle.

Cette dernière ligne est celle qui vaut la peine d'être copiée. Le contrat ne peut pas vous empêcher de mapper un bloc sur quelque chose de destructeur, donc chaque connecteur doit décider par lui-même ce qu'il refusera. detail Un opérateur peut lire, battre l'obéissance.

Faites des rapports honnêtement. Remarquez combien peu de ces lignes sont ok. C'est le résultat correct, pas un trou : un bloc de domaine fonctionne encore (il est appliqué dans le noyau au moment où il est écrit); il ne peut tout simplement pas être reflété vers l'extérieur. ok pour une action que vous n’avez pas effectuée indiquerait à un opérateur que le blocage a atteint votre plateforme alors qu’il n’a jamais quitté OpsIQ.

Règles

Le bloc local gagne toujours

Il est écrit AVANT que vous soyez appelé et il reste en place quel que soit le résultat de votre appel.

Ne jamais jeter

Un lancer est traité comme non supporté et enregistré, le retour échoue avec un détail à la place pour que la raison survive.

Être idempotent

Le même bloc peut être annoncé plus d'une fois.

Retournez rapidement

Le travail lent de la file d'attente est préférable à maintenir la requête ouverte.

Ne pas rappeler dans

Ne jamais rebloquer dans OpsIQ depuis votre gestionnaire. Le registre ignore le connecteur d'origine, mais un deuxième saut serait en boucle.

Chaque annonce est écrite à opsiq_block_registry_log (opération, type, valeur, raison, admin, origine, connection slug, résultat, détail et timestamp) afin qu'un opérateur puisse voir un bloc arrivé de votre plateforme plutôt que d'un agent, et ce que chaque connecteur a fait à son sujet.

Pousser les pièces jointes correctement

Main attachments array to create()/addReply(). Chaque élément porte le fichier sous l'une des trois formes suivantes:

content_b64

Base64 des octets de fichier RAW, utiliser pour les fichiers derrière auth (la plupart des cas entrants). OpsIQ le décode et ré-héberge le fichier pour vous. La forme la plus portable.

url / source_url

Un https public URL (par exemple, une content_url Zendesk). Doit être https; passe un contrôle SSRF / allowlist avant d'être stocké.

stored_path

Une référence de fichier stockée que vous avez déjà écrite (ce que le compositeur natif produit).

Items also accept filename, mime_type and size_bytes. Caps: 12 MB/file, ~24 MB total, 10 files per call. Most platform read APIs return attachment Noms de fichier uniquement (pas d'octets), donc le motif fiable d'arrivée est: lire les octets où votre code fonctionne déjà (à l'intérieur de la plate-forme, ou à partir de la charge utile webhook), base64, et les expédier comme content_b64 sur l'événement.

Sortie (OpsIQ → votre plateforme). Lorsqu'un agent joint un fichier, le ticket.replied La charge utile vous donne les fichiers de la réponse stored_path au titre de la OpsIQ Lisez-les et appuyez dans le format de votre plateforme, et vérifiez les documents de la plate-forme, les questions d'encodage: WHMCS veut base64_encode(json_encode([[name,data]])) (JSON, ne pas sérialiser) ; Zendesk télécharge les octets bruts vers /uploads.json Pour un jeton puis définit comment.uploads; Gmail envoie un message RFC-822 multipart/mixte codé en base64url raw; Amazon SES inbound attachments need the S3 receive action (the SNS path caps at 150 KB).

Plateformes distantes: API + webhook, jamais les tables d'une autre application

Si votre plateforme est une Une application ou une base de données séparée (un SaaS hébergé, un WHMCS distant, une DB différente sur le même serveur), N'écrivez jamais ses tables directement: une base de données croisée écrit des terres sur n'importe quelle connexion est active et manque silencieusement les lignes réelles. Toujours: outbound = appeler le REST signé de la plateforme API (réponses, statuts, département, suppressions); inbound = la plateforme POST un webhook signé, votre handleWebhook() Vérifie et déclenche la correspondance ticket.* Pour arrêter une boucle miroir, marquez ce que vous poussez avec un marqueur d'origine (par ex. mirror_origin:'opsiq'); la plateforme fait écho à ce message sur le webhook et votre gestionnaire entrant ignore ses propres échos. OpsIQEvents::isMirroredEvent() Au sommet de chaque gestionnaire.

Statut, priorité et département du miroir

Une réponse déplace automatiquement le statut, agent Répondre → answered, a client Répondre → customer_replyPour des modifications explicites, abonnez-vous à la liste de diffusion. ticket.updated et lire : payload['changes'] (e. g. {status:'closed'}).

Statut : L'ensemble canonique de OpsIQ est open, customer_reply, answered, in_progress, pending, closedGardez une petite carte bidirectionnelle du vocabulaire de votre plateforme, et assurez-vous que votre colonne accepte réellement les valeurs que vous écrivez (un ENUM (L'absence d'une valeur est silencieusement abandonnée à vide par certaines bases de données). Département : des OpsIQ département id est sans sens de votre côté, Ne l'envoyez jamais. Envoyer le descripteur (name, email et slug) et résolvez-le contre vos propres départements par e-mail → nom → slug, de sorte que “Département de facturation” atterrit dans votre Département de facturation au lieu de général. Déclenchement sur les deux ticket.escalated et un department_id Changement en ticket.updated.

💡
La mise en miroir d'état / priorité / sujet / département / suppression est contrôlée par des bascules par connecteur (mirror_status_changes, mirror_priority_changes, Mirror_subject_change, Mirror Department Changes, Mirror Deletes) lues à travers le partage. OpsIQ\Connectors\MirrorOptions helper. Intégrez ce bloc dans vos paramètres.json et chaque connecteur ticket-miroir lit les bascules de manière identique.

Lier un ticket à un produit / service

Si le client a choisi un produit spécifique lors de l'ouverture du ticket, ajoutez une indication afin que l'agent voit une carte de service ciblée (avec un modal « voir d'autres produits » en un clic pour le reste).

related_service_id

Preferred: the service id exactly as it appears in your IdentityProvider::lookupCustomerServices() list (each service's id). Unambiguous match.

related_service_label

Un code de service de plateforme, par exemple WHMCS S396 (service396) / D11 (domaine11). OpsIQ décompose le type-lettre + id optionnel et fait correspondre votre liste de services, avec une protection de type afin qu'un code de domaine ne corresponde jamais à un produit du même id.

related_domain

Un nom de domaine; correspondant à une sous-chaîne par rapport au détail / domaine de chaque service.

💡
Construire la liste des pièces jointes une fois, dans la forme ci-dessus, et OpsIQ Gère le reste: hébergé URLs Vous n'avez jamais besoin d'écrire une gestion de fichiers par plate-forme.You never need to write per-platform file handling.
⚠️
Les touches d'action sont des lettres minuscules, des chiffres et des soulignements.3à80caractères et permet également des points; le magasin d'action accepte2à100Si vous ajoutez une action ne crée pas de route AJAX, il n'y a donc rien à régénérer — sauvez le connecteur et il est synchronisé.
Connecteurs

Connectez une plate-forme qui a NOAPI(le modèle de pont)

Beaucoup de plates-formes réelles ne sont pas navire RESTAPIUn CMS hôtel, un ancien système de facturation, un outil interne sur mesure.OpsIQconnecteur pour un: le connecteur expédie un seul fichier PHP que l'opérateur tombe dans leur propre webroot public, et ce fichier EST leAPI. Cette page est le modèle entier, avec les règles qui rendent sûr de courir et la raison derrière chaque règle.

La forme de celui-ci

Un connecteur normal appelle le API de quelqu'un d'autre. Un connecteur de pont apporte le sien. Rien d'autres ne change : les mêmes actions, les mêmes fournisseurs de contexte, le même contrat d'identité, la même disposition du paquet.

1
Vous écrivez un fichier PHP

It lives in your package at bridge/opsiq-<platform>-bridge.php. It talks to the platform's database directly, or boots the platform's framework, or both. It answers JSON.

2
L'opérateur le copie dans leur webroot

A côté de la plate-forme propre index. php. Aucun code de plate-formes n'est modifié, aucun plugin n'a été installé, rien à maintenir sur les mises à niveau de la plateforme.

3
Le panneau de connecteurs leur donne le fichier

Vos paramètres.json déclare webhook_help. snippet_template. La page de connecteur la rend comme un fichier copiable avec leurs paramètres en direct déjà substitués, il n'y a donc rien à modifier manuellement.

4
OpsIQ l'appelle serveur vers serveur

Votre Client.php envoie des requêtes GET avec la clé partagée dans un X-Opsiq- En-tête de la clé de pont.URLsetting est la racine du site de la plate-forme.

Le Constructeur de connecteurs peut générer ceci pour vous maintenant.API" profile (ou set data access to bridge) et il émet le fichier bridge, l'extrait de panneau correspondant et les actions dactylographiées qui lisent et écrivent à travers lui — pour une application Laravel lisant son .env, pourWordPressreading wp-config.php, or with identitys you colle in for anything. Hand-Author only when your platform is not there, or when you need behavior the generated bridge does not cover. Un pont manuscrit est sûr de l'assistant : il écrase seulement un fichier de ponts portant son propre marqueur.
💡
Everything on this page is shown in PHP against MySQL, because that is the reference implementation and the only combination the packaging pipeline fully supports. The pattern itself is language-agnostic and engine-agnostic: see "The bridge in other languages and other databases" for the gate in Node, Python, Go, Ruby, .NET and Java, the introspection query for PostgreSQL, SQL Server, SQLite and Oracle, and the MongoDB equivalent — along with the packaging constraint that decides how a non-PHP bridge reaches the operator.

Le modèle de sécurité, et pourquoi chaque règle est là

Ce fichier est situé dans une webroot publique derrière une clé partagée. Ce seul fait conduit chaque règle ci-dessous. Ne détendez aucun d'entre eux pour rendre votre pont plus simple.

L'appelant ne fournit jamais SQL

Pas une clause OÙ, pas un fragment ORDER BY, pas juste un paramètre de requête brute "une fois". L'appelant nomme une table, une colonne et une valeur; votre fichier construit l'instruction. Le moment où un appelant peut contribuer SQL texte, une clé partagée devient arbitraire exécution de base de données.

Les noms de tableau et de colonne sont validés en fonction du_schéma d'information

Les identifiants ne peuvent être liés en tant que paramètres, ils doivent donc être vérifiés à la place. Lisez la liste de tableaux et de colonnes réelles pour CE fichier et refusez tout ce qui n'y figure pas. Un identifiant qui n ́est pas un objet réel de ce schéma ne peut alors pas atteindre une requête du tout — ce qui rend sûr d ́exposer chaque table.

Chaque valeur est un paramètre lié

Sans exception, y compris les valeurs à l'intérieur d'une recherche. Les identifiants validés plus les valeurs limites sont la paire qui rend le total de surface et la surface d'injection nulle.

Les lectures sont universelles, les écrits sont listés

Voir le prochain bloc. C'est la règle que les gens veulent le plus sauter.

Les colonnes secrètes sont expurgées en lecture et refusées en écriture

Correspondance sur la colonne NOM: mot de passe, remember_token, secret, api_key, private_key et sel. Remplacer la valeur par un porte-places en sortie. Refuser l'écriture entièrement en cours de route — écrire un hash brut n'est pas une opération, c'est un pistolet de pied. Envoyer l'opérateur au flux de mot de passer propre à la plate-forme.

Les suppressions sont à une ligne, par clé primaire

Jamais un vrac supprimer, jamais un effacer par filtre. Un enlèvement en vrac est la façon dont une base de données meurt. Si quelqu'un a vraiment besoin d'un, ils peuvent le faire dans la plate-forme.

Les lectures sont en rangée

Fermez le paramètre limite avec un plafond dur. Une requête fugueuse ne doit pas pouvoir vider la base de données à travers un message de chat.

Échec fermé jusqu'à ce que la clé soit réglée

Un pont non configuré répond 403 à tout. Un pont qui est utile avant qu'il soit configuré est un pont qui a été utile à un étranger.

Comparaison des clés à temps constant, clé dans un en-tête

La clé est dans X-Opsiq_-Bridge-Key, pas la chaîne de requête, donc elle reste hors des journaux d'accès, des journaux proxy et des en-têtes de référencier.

Obtenir seulement

Une méthode, une forme, rien à faire entrer en contrebande dans un corps. Tout ce que fait le pont est expressible comme GET avec des paramètres validés, et OpsIQ est le seul appelant.

Lire universel, écrit permis-énuméré — et pourquoi

C'est la règle qui se dispute, alors voici le raisonnement en entier. L'assistant devrait être capable de VOIR toute la plate-forme: c'est ce qui la rend utile, et une lecture ne peut rien détruire. Les écritures sont différentes. Ce fichier est situé dans un webroot public derrière UNE clé partagée. Si cette clé fuit, une surface d'écriture sans restriction fait la fuite équivalente à un contrôle complet de base de données — un nouvel utilisateur admin, une table de réservation vidée. Une liste permis signifie qu'une clé divulguée ne peut toujours pas atteindre une table que l'opérateur n'a jamais activée.

⚠️
La carte d'approbation OpsIQ permet l'IA, pas la clé. L'administrateur cliquer Permettre sur une action destructrice est un contrôle sur l'assistant. Ce n'est pas un contrôle de celui qui détient la clé de pont. Ce sont deux menaces différentes, et la liste d'autorisation est la réponse à la seconde.
Le bouton de l'opérateur, depuis le pont Bottle
/* ── WRITE ALLOW-LIST — which tables the assistant may CHANGE here.
 *
 * READS are unrestricted: the assistant can see every table in the platform.
 * WRITES are limited to this list, because this file sits in a PUBLIC webroot
 * behind ONE shared key — an allow-list means that even a leaked key cannot
 * reach a table you never enabled (no new admin users, no emptied bookings).
 *
 * Comma-separated table names. Add tables as you need them — e.g. append
 * ',pages,posts' to let the assistant edit site content. Set it to '*' to
 * allow every table, deliberately. Empty falls back to the hotel defaults. ── */
const OPSIQ_WRITE_TABLES = 'ht_bookings,ht_booking_rooms,ht_booking_addresses,ht_rooms,ht_room_types,ht_customers,customers';

Deux détails dans le chèque ci-dessous sont faciles à corriger. Le nom de la table arrive déjà RESOLVED, en portant le préfixe de la tableau d'installation, tandis qu'un opérateur écrit la liste d'autorisation non préfixée car c'est ce qu'ils taperaient naturellement. Comparez les deux façons ou une installation préfixé permet silencieusement rien et chaque pause d'écriture. Et le refus doit s'expliquer, parce que la personne qui lit est un administrateur dans une fenêtre de chat, pas un développeur avec une trace de pile.

La vérification de la liste d'autorisation, à partir de marketplace_connectors/botble/bridge/opsiq-botble-bridge.php
/** Tables a WRITE may touch. Empty = the built-in defaults. */
$writeAllowed = static function (string $table) use ($prefix): bool {
    $raw = trim((string)(defined('OPSIQ_WRITE_TABLES') ? OPSIQ_WRITE_TABLES : ''));
    if ($raw === '') $raw = 'ht_bookings,ht_booking_rooms,ht_rooms,ht_customers,customers';
    if (trim($raw) === '*') return true;                     // explicit opt-in to everything
    $bare = ($prefix !== '' && stripos($table, $prefix) === 0) ? substr($table, strlen($prefix)) : $table;
    foreach (explode(',', $raw) as $t) {
        $t = trim($t);
        if ($t === '') continue;
        if (strcasecmp($t, $table) === 0) return true;
        if (strcasecmp($t, $bare)  === 0) return true;
        if ($prefix !== '' && strcasecmp($prefix . $t, $table) === 0) return true;
    }
    return false;
};

/** One refusal, one explanation — used by every write op. */
$requireWritable = static function (string $table) use ($writeAllowed): void {
    if ($writeAllowed($table)) return;
    opsiq_bridge_out(['success' => false, 'error' =>
        'write_not_allowed: "' . $table . '" is not in this bridge\'s write allow-list. '
        . 'Reads are unrestricted. To permit writes here, add the table to OPSIQ_WRITE_TABLES '
        . 'in opsiq-botble-bridge.php (or set it to "*" to allow every table).'], 403);
};

La porte, en entier

Quatre contrôles, dans cet ordre, avant que rien ne touche les données. Copier la commande ainsi que les contrôles.

Les quatre contrôles de porte, en ordre
<?php
declare(strict_types=1);

/* ── EDIT THIS: a long random secret (40+ chars). Empty = bridge OFF. ── */
const OPSIQ_BRIDGE_KEY = '';

header('Content-Type: application/json; charset=utf-8');
header('Cache-Control: no-store');

function opsiq_bridge_out(array $payload, int $code = 200): void
{
    http_response_code($code);
    echo json_encode($payload, JSON_UNESCAPED_SLASHES);
    exit;
}

/* 1. Fail closed. An unconfigured bridge answers nothing to anyone. */
if (OPSIQ_BRIDGE_KEY === '' || strlen(OPSIQ_BRIDGE_KEY) < 24) {
    opsiq_bridge_out(['success' => false, 'error' => 'bridge_not_configured'], 403);
}
/* 2. One method. */
if (strtoupper((string)($_SERVER['REQUEST_METHOD'] ?? '')) !== 'GET') {
    opsiq_bridge_out(['success' => false, 'error' => 'method_not_allowed'], 405);
}
/* 3. Constant-time key comparison, key from a header (never the query string). */
$given = (string)($_SERVER['HTTP_X_OPSIQ_BRIDGE_KEY'] ?? '');
if ($given === '' || !hash_equals(OPSIQ_BRIDGE_KEY, $given)) {
    opsiq_bridge_out(['success' => false, 'error' => 'forbidden'], 403);
}
/* 4. Only now read credentials and connect. */

Valider les identifiants en fonction du_schéma d'information

C'est la pièce qui transforme "l'assistant peut atteindre n'importe quelle table" en sécurité. Résolvez le nom de la table de l'appelant contre le schéma réel, tolèrez un préfixe de table manquant ou supplémentaire, et retournez nul pour tout le reste. Tout en aval fonctionne alors avec un nom qui existe probablement.

Validation et rédaction de l'identificateur, mot à mot du pont Bottle
/** Real tables in THIS database — the allow-list, straight from the DB. */
$allTables = static function () use ($pdo, $db): array {
    static $cache = null;
    if ($cache !== null) return $cache;
    $st = $pdo->prepare('SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = ? ORDER BY TABLE_NAME');
    $st->execute([$db]);
    return $cache = array_map('strval', $st->fetchAll(PDO::FETCH_COLUMN));
};

/** Resolve a caller-supplied table name to a REAL one, or null. */
$resolveTable = static function (string $name) use ($allTables, $prefix): ?string {
    $name = trim($name);
    if ($name === '' || !preg_match('/^[A-Za-z0-9_]+$/', $name)) return null;
    $tables = $allTables();
    foreach ($tables as $t) if (strcasecmp($t, $name) === 0) return $t;
    /* Tolerate a missing or extra table prefix. */
    foreach ($tables as $t) {
        if (strcasecmp($t, $prefix . $name) === 0) return $t;
        if ($prefix !== '' && strcasecmp($prefix . $t, $name) === 0) return $t;
    }
    return null;
};

/** Column introspection: table => [column => true]. Cached per request. */
function opsiq_bridge_columns(PDO $pdo, string $db, string $table): array
{
    static $cache = [];
    if (isset($cache[$table])) return $cache[$table];
    $stmt = $pdo->prepare('SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?');
    $stmt->execute([$db, $table]);
    $cols = [];
    foreach ($stmt->fetchAll(PDO::FETCH_COLUMN) as $c) $cols[strtolower((string)$c)] = true;
    return $cache[$table] = $cols;
}

/** Columns whose VALUES must never leave the platform. */
$secretCol = static function (string $c): bool {
    return (bool)preg_match('/(^|_)(password|remember_token|secret|api_key|private_key|salt|token)($|_)/i', $c);
};
/** Columns a write may never touch — auth material. */
$writeBanned = static function (string $c): bool {
    return (bool)preg_match('/(^|_)(password|remember_token)($|_)/i', $c);
};
/** Strip secret values from a row before it leaves the server. */
$redact = static function (array $row) use ($secretCol): array {
    foreach ($row as $k => $v) if ($secretCol((string)$k)) $row[$k] = '[redacted]';
    return $row;
};

Une opération de lecture et une op d'écriture, terminée

Notez ce qui est lié et ce qui a été validé. La colonne filtre est cochée sur la liste des colonnes réelles puis interpolée comme un identifiant; sa valeur est liée. La limite est serrée. Les lignes sont expurgées en sortant. La mise à jour refuse la clé primaire et toute colonne auth, et les timbres mis à jour_at lorsque la table en a une.

Lire n'importe quel tableau — identifiants validés, valeurs limites, lignes plafonnées
case 'query': {
    $t = $resolveTable((string)($_GET['table'] ?? ''));
    if ($t === null) opsiq_bridge_out(['success' => false, 'error' => 'unknown_table'], 404);
    $cols = opsiq_bridge_columns($pdo, $db, $t);
    if (!$cols) opsiq_bridge_out(['success' => false, 'error' => 'unknown_table'], 404);

    $sql = "SELECT * FROM `$t` WHERE 1=1";
    $args = [];

    /* Equality filter: column must be REAL, value is bound. */
    $wc = strtolower(trim((string)($_GET['where_column'] ?? '')));
    if ($wc !== '') {
        if (!isset($cols[$wc])) opsiq_bridge_out(['success' => false, 'error' => 'unknown_column: ' . $wc], 400);
        $sql .= " AND `$wc` = ?";
        $args[] = (string)($_GET['where_value'] ?? '');
    }
    /* Ordering: column validated, direction from a fixed pair. */
    $ob = strtolower(trim((string)($_GET['order_by'] ?? '')));
    if ($ob !== '' && isset($cols[$ob])) {
        $dir = strtoupper(trim((string)($_GET['order'] ?? 'DESC'))) === 'ASC' ? 'ASC' : 'DESC';
        $sql .= " ORDER BY `$ob` $dir";
    } elseif (isset($cols['id'])) {
        $sql .= " ORDER BY `id` DESC";
    }
    /* Hard row cap. */
    $lim = (int)($_GET['limit'] ?? 25);
    if ($lim < 1)   $lim = 25;
    if ($lim > 200) $lim = 200;
    $off = max(0, (int)($_GET['offset'] ?? 0));
    $sql .= " LIMIT $lim OFFSET $off";

    $st = $pdo->prepare($sql);
    $st->execute($args);
    $rows = array_map($redact, $st->fetchAll());
    opsiq_bridge_out(['success' => true, 'data' => [
        'table' => $t, 'returned' => count($rows), 'rows' => $rows,
    ]]);
}
Écrire une ligne — tableau en liste autorisée, colonnes auth refusées, ligne unique par clé primaire
case 'record.update': {
    $t = $resolveTable((string)($_GET['table'] ?? ''));
    if ($t === null) opsiq_bridge_out(['success' => false, 'error' => 'unknown_table'], 404);
    $requireWritable($t);                       // the allow-list, before anything else
    $cols = opsiq_bridge_columns($pdo, $db, $t);
    $pk   = $primaryKey($t);
    $id   = (string)($_GET['id'] ?? '');
    if ($id === '') opsiq_bridge_out(['success' => false, 'error' => 'id_required'], 400);

    $set = json_decode((string)($_GET['set'] ?? ''), true);
    if (!is_array($set) || !$set) opsiq_bridge_out(['success' => false, 'error' => 'set_json_required'], 400);

    $frag = []; $args = [];
    foreach ($set as $col => $val) {
        $col = strtolower(trim((string)$col));
        if (!isset($cols[$col]))  opsiq_bridge_out(['success' => false, 'error' => 'unknown_column: ' . $col], 400);
        if ($writeBanned($col))   opsiq_bridge_out(['success' => false, 'error' => 'refused: "' . $col . '" is auth material - change it through the platform own password flow, never by direct write.'], 400);
        if ($col === $pk)         opsiq_bridge_out(['success' => false, 'error' => 'refused: the primary key cannot be rewritten.'], 400);
        if (is_array($val) || is_object($val)) $val = json_encode($val, JSON_UNESCAPED_SLASHES);
        $frag[] = "`$col` = ?";
        $args[] = ($val === null) ? null : (string)$val;
    }
    if (isset($cols['updated_at']) && !isset($set['updated_at'])) $frag[] = '`updated_at` = NOW()';

    $before = $pdo->prepare("SELECT * FROM `$t` WHERE `$pk` = ? LIMIT 1");
    $before->execute([$id]);
    $prev = $before->fetch();
    if (!$prev) opsiq_bridge_out(['success' => false, 'error' => 'not_found'], 404);

    $args[] = $id;
    $up = $pdo->prepare("UPDATE `$t` SET " . implode(', ', $frag) . " WHERE `$pk` = ? LIMIT 1");
    $up->execute($args);
    opsiq_bridge_out(['success' => true, 'data' => [
        'table' => $t, 'id' => $id, 'changed' => $up->rowCount(),
        'before' => $redact(array_intersect_key($prev, $set)),
    ]]);
}

Différences de schéma de survie

Les versions de la plate-forme diffèrent. Les colonnes se déplacent, sont rebaptisées ou sont absentes. Un pont qui suppose qu'un schéma fonctionne sur une installation. Introspecter et s'adapter à la place : sélectionnez seulement les colonnes qui existent ici, tolèrez le préfixe de table, et essayez l'orthographe plausible d'une référence.

Tolérance au schéma, depuis le pont Botble
/* Only ever select columns that exist on THIS install. */
$pick = static function (array $cols, array $wanted, string $alias = 'b'): string {
    $out = [];
    foreach ($wanted as $c) if (isset($cols[$c])) $out[] = "`$alias`.`$c`";
    return $out ? implode(', ', $out) : "`$alias`.*";
};

/* References vary: stored with or without a leading "#", with or without an
 * operator-configured alpha prefix, or only as a numeric id. Try every
 * plausible form — the PROOF match is what actually gates disclosure, so
 * tolerant matching here is safe. */
$refCandidates = [$ref, '#' . $ref];
$digitsOnly = preg_replace('/\D+/', '', $ref);
if ($digitsOnly !== '' && $digitsOnly !== $ref) {
    $refCandidates[] = $digitsOnly;
    $refCandidates[] = '#' . $digitsOnly;
}
$refCandidates = array_values(array_unique($refCandidates));
💡
Donnez à votre bridge un op=diag qui ne rapporte que la STRUCTURE — quelles tables ont résolu, quelles colonnes la table principale a, et le SHAPE de la nouvelle référence avec chaque chiffre masqué. Il est clé-fait comme tout le reste, et il transforme "la recherche ne trouve rien" d'un ticket de support en une réponse dix secondes. Ne jamais laisser retourner des enregistrements réels.

Erreurs uniformes et piège de dénombrement

Une forme pour tout

Success is {"success":true,"data":{...}}. Failure is {"success":false,"error":"snake_case_reason"}. Your Client.php and every action then have exactly one response shape to handle.

Non-trouvé et sans correspondance doit être identique

Sur une surface de recherche, une référence qui n'existe pas et une référence dont la preuve ne correspond pas doit produire la réponse SAME. Différentes réponses transforment votre pont en un oracle qui confirme quelles références sont réelles, ce qui est une liste gratuite d'exportation pour tout patient.

Ne jamais divulguer la raison à un visiteur

Le pont peut être précis avecOpsIQ. Ce qui atteint un visiteur est décidé parOpsIQ, dans un refus fixe.

Le fichier copiable dans le panneau de connecteur

L'opérateur n'ouvre jamais votre dépôt. Ils ouvrent le panneau du connecteur dansOpsIQet appuyez sur Copie. Cette copie vient de paramètres.json, et il doit être le même programme que bridge/*.php.

paramètres.json — l'entrée du panneau pour un connecteur de pont
{
  "settings": [
    { "key": "base_url", "label": "API base URL", "type": "text", "required": true },
    { "key": "api_key",  "label": "Bridge key",   "type": "password", "required": true,
      "autogenerate": true,
      "help": "Auto-generated the moment you enable the connector. It must match OPSIQ_BRIDGE_KEY inside the bridge file; the copyable file below already carries this value once saved." }
  ],
  "webhook_help": {
    "title": "One file, three surfaces",
    "body": "This platform has no public REST API, so this ONE file IS the API. Copy it into the site PUBLIC webroot, keeping the filename.",
    "snippet_filename": "opsiq-yourplatform-bridge.php   (drop next to the site index.php)",
    "snippet_template": "<?php\n/* ... the whole bridge file ... */\nconst OPSIQ_BRIDGE_KEY = \u0027{{setting:api_key}}\u0027;\n..."
  }
}
{{setting:key}} carries live values

The connector panel substitutes {{setting:<key>}} in the snippet with that connector's saved value, so the copied file already contains the operator's generated bridge key and needs no hand-edit. An empty or unsaved setting leaves the token visible, so the operator can see exactly what is still missing.

D'autres détenteurs de place sont substitués côté serveur

Indépendamment de cela,{webhook_url}, {webhook_path}, {webhook_secret}, {site_key}, {base_url}et{slug}sont remplis avant que le panneau ne voit jamais l'extrait.

webhook_help peut être un objet ou une liste

Une liste vous donne plusieurs extraits dans un panneau, par exemple un fichier de pont et un crochet de relais séparé.

🚫
Ne pas maintenir l'extrait de pont à la main. Le fichier du pont et la copie du panneau sont deux copies d'un programme, et ils DIRECT — un pont a été amélioré et sa copie du tableau n'était pas, donc quiconque a réinstallé et copié du panneau installé l'ancien pont et a silencieusement perdu toutes les nouvelles capacités.
Gardez les deux copies identiques
# Regenerate every package's panel snippet from its bridge file
php tools/sync_connector_bridge_snippets.php --apply

# Show what would change, without writing
php tools/sync_connector_bridge_snippets.php

Drift is now a failing conformance check, not a support ticket: the verifier compares the two line by line (ignoring the {{setting:...}} placeholders, which are supposed to differ) and names the first line that differs. Run the sync tool as the last step before every release, right before signing.

Ce que le pont devrait exposer

Les opérations en forme et une surface de données universelles, ensemble. Les personnes en forme retournent des réponses ordonnées, conçues pour répondre aux questions que les gens posent réellement; les personnes en ligne couvrent tout le reste afin que l'assistant ne soit jamais coincé.

Lectures en forme

statistiques, la liste d'objets principale avec filtres, un objet avec ses lignes connexes, le catalogue de ce qui est vendu, recherche client avec l'historique. Ceux-ci donnent à l'IA une bonne réponse en un appel au lieu de cinq.

Écrits en forme

Les deux ou trois changements d'état qui comptent — définir le statut, annuler. Conserver les valeurs acceptées sur la liste.

Découverte universelle

les tableaux (avec nombre de lignes) et décrire (colonnes, types, clé primaire, plus des drapeaux lisibles et enregistrables par colonne). C'est ainsi que l'assistant apprend une plateforme que vous n'avez pas prévue.

Lecture et écriture universelles

requête, record. get, records. create, record . update, record, record_delete. Tous validés comme indiqué ci-dessus.

Identité, avant la porte de clé

Les sondes d'identité sont appelées par le ADMIN'S BROWSER, même origine, de sorte qu'elles ne peuvent pas envoyer un en-tête personnalisé. Leur authentification est la session de plate-forme elle-même. Mettez-les en avant de la porte clé, les tenir loin de toutes les données d'enregistrement, et ne jamais les laisser retourner un secret. Voir la page d'identification du connecteur.

Diagnostic

op=diag, structure only, masked.

💡
Un connecteur en lecture seule n'a pas besoin d'une liste d'autorisation. Si votre plateforme ne répond qu'à des questions, expédiez un pont sans écriture et toute la classe de risque d'écriture disparaît. Ajoutez les écrits lorsque quelqu'un vous les demande.

Liste de contrôle avant d'expédier un pont

Le pont refuse tout sans clé

Testez-le. Renommer la constante pour vider et confirmer chaque réponse op 403.

Une mauvaise clé est refusée en temps constant

hash_egals, et la clé lue depuis l'en-tête seulement.

Un nom de table maquillé est refusé

Et un vrai nom de table avec un faux préfixe résout encore.

Une colonne de mot de passe n'apparaît jamais dans une lecture

Et une écriture qui donne un nom à un est refusée avec une explication.

Un écrit à une table en dehors de la liste d'autorisation est refusé

Avec le message qui indique à l'opérateur comment l'élargir.

L'extrait de panneau correspond au fichier du pont

php tools/sync_connector_bridge_snippets. php le rapporte en étape.

La remise en service du connecteur n'est pas suffisante

Si votre paquet envoie un fichier de passerelle, un opérateur mettant à niveau le connecteur doit ALSO redéployer ce fichier dans leur webroot. Dites-le dans le corps du panneau et dans votre CHANGELOG, chaque version.

Connecteurs

La passerelle dans d'autres langues et autres bases de données

Le modèle de pont n'est pas un modèle PHP.OpsIQappels est un paramètre HTTP, de sorte que le fichier peut être Node, Python, Go, Ruby, .NET ou Java, et le magasin derrière il peut être n'importe quelSQLmoteur ouMongoDB. Ce qui est en forme de PHP est le pipeline d'emballage, et cette contrainte décide comment votre pont atteint l'opérateur. Lire la section de livraison d'abord : c'est la partie qui surprend les gens.

Ce que le connecteur nécessite réellement

Rien ne donne de nom à une langue.

1. Transports

HTTPS. Une requête GET par appel. Pas de corps, pas d'autre méthode.

Authentification

Un secret partagé dans le X-Opsiq-Bridge-Key request en-tête, comparé en temps constant. Pas un paramètre de requête, pas un cookie, pas Basic auth.

Paramètres

- C'est une corde de requête. op désigne la surface, do Nomme l'opération, le reste sont les arguments de cette opération.

Réponse

JSON. {"success":true,"data":{...}} ou {"success":false,"error":"snake_case_reason"}. Application de type contenu/json, et sans cache.

Codes d'état

200sur le succès.403clé non configurée ou incorrecte,404non trouvé,405mauvaise méthode,400Mauvais argument,501non supporté sur ce schéma.

C'est tout.

Pas de cadre, pas d'exécution, pas de bibliothèque OpsIQ de votre côté. S'il peut servir cela, il peut être un pont.

Livraison: ce qui peut vivre dans le pont/, et ce qui ne doit pas

Le paquet signé couvre une liste fixe d'extensions de fichiers, et un fichier en dehors de cette liste est laissé hors du ZIP. Un pont dans une langue la liste ne couvre donc pas ne peut pas expédier à l'intérieur du paquet — mais il ne peut plus disparaître sur vous non plus.26Août2026un fichier dans bridge/ que le paqueteur tomberait est une défaillance de conformité difficile, donc le paquet refuse de passer plutôt que d'installer sans pont dedans.

Comment un bridge/ dossier est traité au moment de la construction
bridge/bridge.php     ->  SHIPPED, and drift-checked against the panel snippet
bridge/server.js      ->  SHIPPED, and drift-checked against the panel snippet
bridge/bridge.py      ->  REFUSED at conformance: "Bridge files are packaged" FAILS
bridge/bridge.rb      ->  REFUSED at conformance
bridge/main.go        ->  REFUSED at conformance
bridge/Bridge.cs      ->  REFUSED at conformance
bridge/Bridge.java    ->  REFUSED at conformance
PHP and JavaScript — fully supported

Le fichier est livré dans le ZIP signé, et le vérificateur d'extrait de code contient votre copie de panneau octet-identique à elle, l'un des deux il est. La vérification de dérive lit chaque fichier dans bridge/, pas seulement les PHP, donc un pont mis à niveau avec une copie de tableau stale échoue la construction dans l'une ou l'autre langue.

Tout le reste — livrer par le panneau seulement

Le panneau snipet est un texte simple sans idée de la langue qu'il contient, donc il fonctionne pour n'importe quelle pile. Mettez le programme entier dans webhook_help. sniptepet_template, nomez le fichier dans snipset_filename, et ne laissez PAS une copie dans bridge/ — conformance refusera le paquet plutôt que de l'expédier creux. Dites clairement dans webHook_ Help. body que l'opérateur copie ce fichier plutôt que le récupérer du paquet.

Si vous avez vraiment besoin d'une autre langue dans le paquet

Widen PackageSigner::EXTENSIONS deliberately, then re-sign and re-seed. That is a decision about what executable code Nabtech distributes, so make it on purpose — do not discover it from a missing file.

💡
Nommer le fichier dans webhook_help.snippet_filename chaque fois que votre colis expédie plus d'un pont. C'est ainsi que le vérificateur sait à quel pont une copie de panneau appartient; sans elle, un appariement ambigu est signalé comme un avertissement de conformité et que l'extrait est laissé incoordonné.
⚠️
Le point de la vérification de dérive est qu'un fichier de pont et sa copie de panneau sont deux copies d'un programme et WILL divergent. Régénérer plutôt que main-modifier: php tools/sync_connector_bridge_snippets.php --apply, puis resignez le paquet.

La porte, en six langues

Mêmes quatre contrôles dans le même ordre partout : échec fermé sans clé, une méthode, comparaison de clé à temps constant depuis l'en-tête, puis connexion. Le seul vrai piège est la comparaison, et c'est un piège différent dans chaque langue.

⚠️
Comparer le SHA-256Il est correct dans chaque langue, et il écarte le fait que plusieurs comparateurs à temps constant lancent ou fuient sur une longueur inadapté — Le timing de NodeSafeEqual soulève un RangeError lorsque les tampons diffèrent en longueur, ce qui transforme une mauvaise clé en une500au lieu d'un403.
Node. js — la porte
// Node.js — no dependencies
const http = require("http"), crypto = require("crypto"), url = require("url");

const BRIDGE_KEY = process.env.OPSIQ_BRIDGE_KEY || "";   // empty = bridge OFF

const sameKey = (a, b) => {
  const ha = crypto.createHash("sha256").update(String(a)).digest();
  const hb = crypto.createHash("sha256").update(String(b)).digest();
  return crypto.timingSafeEqual(ha, hb);                 // equal lengths, always
};
const out = (res, payload, code = 200) => {
  res.writeHead(code, { "Content-Type": "application/json; charset=utf-8",
                        "Cache-Control": "no-store" });
  res.end(JSON.stringify(payload));
};

http.createServer(async (req, res) => {
  if (BRIDGE_KEY.length < 24)         return out(res, { success: false, error: "bridge_not_configured" }, 403);
  if (req.method !== "GET")           return out(res, { success: false, error: "method_not_allowed" }, 405);
  const given = req.headers["x-opsiq-bridge-key"] || "";
  if (!given || !sameKey(BRIDGE_KEY, given))
                                      return out(res, { success: false, error: "forbidden" }, 403);

  const q = url.parse(req.url, true).query;
  // ... dispatch on q.op / q.do exactly as the PHP bridge does
}).listen(process.env.PORT || 8787);
Python — la porte
# Python — Flask
import hashlib, hmac, os
from flask import Flask, request, jsonify

app = Flask(__name__)
BRIDGE_KEY = os.environ.get("OPSIQ_BRIDGE_KEY", "")      # empty = bridge OFF

def same_key(a: str, b: str) -> bool:
    return hmac.compare_digest(
        hashlib.sha256(a.encode()).digest(),
        hashlib.sha256(b.encode()).digest(),
    )

def out(payload, code=200):
    resp = jsonify(payload)
    resp.status_code = code
    resp.headers["Cache-Control"] = "no-store"
    return resp

@app.before_request
def gate():
    if len(BRIDGE_KEY) < 24:
        return out({"success": False, "error": "bridge_not_configured"}, 403)
    if request.method != "GET":
        return out({"success": False, "error": "method_not_allowed"}, 405)
    given = request.headers.get("X-Opsiq-Bridge-Key", "")
    if not given or not same_key(BRIDGE_KEY, given):
        return out({"success": False, "error": "forbidden"}, 403)
Go, Ruby, . NET et Java — la même comparaison
// Go
func sameKey(a, b string) bool {
    ha := sha256.Sum256([]byte(a))
    hb := sha256.Sum256([]byte(b))
    return subtle.ConstantTimeCompare(ha[:], hb[:]) == 1
}

func gate(next http.HandlerFunc) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Content-Type", "application/json; charset=utf-8")
        w.Header().Set("Cache-Control", "no-store")
        key := os.Getenv("OPSIQ_BRIDGE_KEY")
        if len(key) < 24 { out(w, 403, "bridge_not_configured"); return }
        if r.Method != http.MethodGet { out(w, 405, "method_not_allowed"); return }
        given := r.Header.Get("X-Opsiq-Bridge-Key")
        if given == "" || !sameKey(key, given) { out(w, 403, "forbidden"); return }
        next(w, r)
    }
}

// Ruby
def same_key?(a, b)
  OpenSSL.secure_compare(Digest::SHA256.digest(a.to_s), Digest::SHA256.digest(b.to_s))
end

// C# / .NET
static bool SameKey(string a, string b) =>
    CryptographicOperations.FixedTimeEquals(
        SHA256.HashData(Encoding.UTF8.GetBytes(a)),
        SHA256.HashData(Encoding.UTF8.GetBytes(b)));

// Java
static boolean sameKey(String a, String b) throws Exception {
    MessageDigest d = MessageDigest.getInstance("SHA-256");
    return MessageDigest.isEqual(d.digest(a.getBytes(UTF_8)), d.digest(b.getBytes(UTF_8)));
}

Validation des identifiants sur chaque moteur de base de données

La propriété de sécurité ne change pas : un nom de table ou de colonne que l'appelant fournit doit être vérifié par rapport au schéma réel avant qu'il soit interpolé, et chaque valeur doit être un paramètre lié. Seule la requête d'introduction, le caractère de citation et la clause de recherche diffèrent.

MySQLetMariaDB

Tableaux: SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = ?. Colonnes : même contre information_schema.COLUMNS avec AND TABLE_NAME = ?. Citation avec des backticks, doubler n'importe quel backtick à l'intérieur. Page avec LIMIT n OFFSET m.

PostgreSQL

Mêmes vues d'informations_schéma, noms en minuscules, WHERE table_schema = $1 (habituellement public). Citation avec des guillemets doubles, en double de n'importe quel guillemot à l'intérieur. LIMIT n OFFSET m. Regardez la règle de pliage : un identifiant non cité est replié sur le bas du boîtier, alors comparez la case avec l'insensibilité lorsque vous résolvez un nom.

Serveur SQL

Mêmes vues INFORMATION_SCHEMA. Citation avec crochets, en doublement de tout support de fermeture à l'intérieur. ORDER BY [id] DESC OFFSET @o ROWS FETCH NEXT @n ROWS ONLY.

SQLite

Tableaux: SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'. Colonnes : SELECT name FROM pragma_table_info(?) — utiliser cette forme de table, parce que la nu PRAGMA table_info(x) ne peut pas prendre un paramètre lié et inviter l'interpolation de la chaîne il y a exactement le trou que vous essayez de fermer. Citation avec des guillemets doubles. Page avec LIMIT n OFFSET m.

Oracle

Tableaux: SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = :owner; colonnes de ALL_TAB_COLUMNS. Citation avec guillemets doubles, et rappelez-vous un identifiant non cité plie dans le cas UPPER, le contraire de PostgreSQL. Page avec OFFSET :o ROWS FETCH NEXT :n ROWS ONLY les 12C et plus tard.

MongoDB

Non SQL, donc pas d'interpolation des identifiants et aucun paramètre lié — une discipline différente pour le même but. Voir ci-dessous.

La requête d'introduction par moteur
-- MySQL / MariaDB
SELECT TABLE_NAME  FROM information_schema.TABLES  WHERE TABLE_SCHEMA = ?;
SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?;

-- PostgreSQL
SELECT table_name  FROM information_schema.tables  WHERE table_schema = $1;
SELECT column_name FROM information_schema.columns WHERE table_schema = $1 AND table_name = $2;

-- SQL Server
SELECT TABLE_NAME  FROM INFORMATION_SCHEMA.TABLES  WHERE TABLE_SCHEMA = @schema;
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = @table;

-- SQLite
SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%';
SELECT name FROM pragma_table_info(?);

-- Oracle
SELECT TABLE_NAME  FROM ALL_TABLES      WHERE OWNER = :owner;
SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE OWNER = :owner AND TABLE_NAME = :tbl;
💡
Résolvez, puis utilisez le nom RESOLVED. Ne passez jamais l'orthographe de l'appelant à la requête même après la vérification — regardez le vrai nom dans la liste que vous avez lu du schéma et interpolez cela. Cela ne coûte rien et il comble l'écart entre "ce nom correspond quelque chose" et "c'est le nom que je suis sur le point d'exécuter".

MongoDB: les mêmes règles, sansSQL

Il n'y a pas de chaîne de requête à injecter, donc les gens supposent qu'il n'ya rien à garder. Il y a : le document filtre.JSONdirectement dans find() permet à un appelant d'envoyer {"$ne": null} ou {"$gt": ""} où vous attendiez une valeur, et sélectionnez tranquillement chaque document. Construisez le filtre vous-même.

MongoDB — liste de collecte autorisée, filtre scalaire, projection comme redaction
// Node + the official driver
const names = (await db.listCollections({}, { nameOnly: true }).toArray()).map(c => c.name);

function resolveCollection(given) {
  if (!/^[A-Za-z0-9_.-]+$/.test(given || "")) return null;
  return names.find(n => n.toLowerCase() === String(given).toLowerCase()) || null;
}

const coll = resolveCollection(q.collection);
if (!coll) return out(res, { success: false, error: "unknown_collection" }, 404);

// Build the filter from a validated field and a SCALAR value. Never spread
// caller JSON into it: {"$ne":null} would match every document.
const filter = {};
if (q.where_field) {
  if (!/^[A-Za-z0-9_.]+$/.test(q.where_field))
    return out(res, { success: false, error: "unknown_field: " + q.where_field }, 400);
  filter[q.where_field] = String(q.where_value ?? "");   // String() is the guard
}

// Projection is the redaction allow-list: drop secrets, never return them.
const projection = { password: 0, remember_token: 0, api_key: 0, secret: 0, token: 0 };

const limit = Math.min(Math.max(parseInt(q.limit ?? "25", 10) || 25, 1), 200);
const rows  = await db.collection(coll)
                      .find(filter, { projection })
                      .limit(limit)
                      .skip(Math.max(0, parseInt(q.offset ?? "0", 10) || 0))
                      .toArray();
Les noms de collection proviennent de listCollections

C'est votre information_schema. Résolvez l'orthographe de l'appelant contre lui et utilisez le nom résolu.

Forcer chaque valeur de filtre à un scalaire

Un String() ou un Number() autour de lui est la défense complète contre l'injection par l'opérateur. Un document où vous attendez une valeur est l'équivalent NoSQL d'une citation errante.

La projection est la règle de la rédaction

Exclut les champs en forme de secret dans la projection pour qu'ils ne quittent jamais le serveur, plutôt que de les supprimer du résultat par la suite.

Supprime rester un seul document par _id

deleteOne avec un _id résolu. Ne jamais supprimerBeaucoup, et jamais un filtre influencé par l'appelant.

Écrit rester sur la liste des permis

Même raisonnement que SQL : nommez les collections qu'un écrit peut toucher, et refusez le reste avec une explication.

Le paramètre d'identité dans les autres langues

La sonde d'identité est l'autre moitié d'un pont, et c'est HTTP aussi. Le bloc de signature est identique dans chaque langue : base64url la charge utile, HMAC-SHA256 cette chaîne, se joignent à un point.

N'écrivez pas cela à partir de zéro. Paramètres, Portail de support contient déjà un catalogue d'extraits de code prêt pour PHP, Laravel,WordPress, WHMCS, Noeud avec et sans dépendances, Flask et FastAPI, Django, .NET, Ruby on Rails, Java Spring Boot et Go. Prenez le signeur de la saveur qui correspond à votre pile.
Que changer lorsque vous le réutilisez?

Ces snippets ment un jeton PORTAL, qui est délibérément plus strict: il porte jti et single_use:true et vit autour120secondes parce qu'il voyage dans unURL. Un jeton d'identité de pont ou de widget ne porte aucun de ceux-ci et utilise un exp plus long, minutes à heures.

Ce qui reste le même

site_key, iat, exp et un haut niveau authentifié:true, plus un sujet administrateur ou client avec un id et un nom d'utilisateur ou email. Mêmes revendications, même signature, même secret.

Les deux formes de jeton vérifier

Un JWT en trois parties signé HS256 fonctionne, et la base en deux parties64url charge utile plus hex HMAC que la référence PHP émet. Utilisez la bibliothèque de votre langue qui rend naturel — une bibliothèque JWF est généralement le chemin plus court en dehors de PHP.

Ne jamais la laisser dans le navigateur

Vrai dans chaque langue. Signer côté client signifie envoyer le secret du site à chaque visiteur.

C'est honnête de choisir

La plateforme est PHP

Ecrivez le pont en PHP. Il est livré dans le paquet, il est vérifié par dérive, et il peut démarrer le propre cadre de la plate-forme pour lire une session en direct pour la sonde d'identité. Rien d'autre ne vous donne les trois.

La plateforme est Node

Un . js pont est expédié, signe et est vérifié de dérive exactement comme un PHP. Rien n'est abandonné.

La plateforme est Python, Ruby, Go, . NET ou Java

Livrez à travers l'extrait de panneau et dites-le dans le corps du panneau; ne laissez pas le fichier dans bridge/, où la conformité refusera le paquet. Le connecteur est autrement complètement normal: actions, fournisseurs de contexte, identité et recherche invités fonctionnent tous de même, car aucun d'eux ne se soucie de ce qui répond à l'appel HTTP.

Vous ne pouvez pas exécuter un processus sur l'hôte de la plateforme

Le modèle de pont n'est pas l'outil approprié. Un pont existe pour atteindre une plate-forme de l'intérieur de son propre hôte. Si vous ne pouvez l'atteindre que de l ́extérieur, vous écrivez un connecteur API ordinaire contre toute surface qu'il expose.

⚠️
Une contrainte supplémentaire mérite d'être planifiée : une sonde d'identité doit lire la session de connexion de la plateforme, ce qui signifie généralement fonctionner dans le processus propre de la plate-forme ou du moins sur son hôte avec accès à son magasin de session. Un pont écrit dans une langue différente de la plates-formes peut servir les données confortablement et peut encore lutter pour répondre op=admin_identity. Si c'est votre cas, expédiez le pont de données dans votre langue et la sonde d ́identité dans la plate‐forme.
Connecteurs

Donnez à l'assistant les deux moitiés: actions ET contexte

C'est la chose la plus commune manquante d'un connecteur qui « fonctionne mais est inutile ». Les actions laissent les choses AI DO. Sections de contexte le laisser SAVOIR des choses. Un connecteur a besoin à la fois, et la plupart des questions posées par un administrateur sont répondues par contexte, jamais par une action.

Les deux moitiés

Actions — Comment l'IA agit-elle?

Déclaré dans les actes.jsonou retourné par registerActions(). Le modèle en choisit un, remplit ses paramètres, etOpsIQLes actions sont pour les verbes : annuler cette réservation, ouvrir ce ticket, modifier ce statut.

Sections contextuelles — Comment l'IA sait les choses

Assemblé par un ContextProvider avant que le modèle ne tourne. "Combien de commandes ce mois-ci", "qui sont mes nouveaux clients", "qu'est-ce que nous vendons" tous résoudre à travers une recherche contextuelle, et ne jamais toucher une action du tout.

⚠️
Symptôme d'un fournisseur manquant: l'assistant répond "Aucun connecteur activé n'a fourni cette section contextuelle" pendant que le connecteur est installé, activé et passant son test de connexion. Rien n'est enregistré, rien d'erreur. Ce message signifie qu'aucun fournisseur n'avait revendiqué la section.

Le vocabulaire universel de la section

OpsIQ demande des sections par nom générique. Votre travail est de décider ce que chacun signifie sur votre plateforme et de répondre à elle. Une réservation d'hôtel EST la commande de l'hôtel; une chambre EST ce que l'établissement vend. Carte, ne pas inventer.

ordres / ordres_en attente

Quelle que soit la transaction sur votre plateforme : commandes, réservations, réservations et travaux. en attente_orders est la même liste filtrée aux non-finis.

clients

Le tableau des clients.

products

Ce que la plateforme vend : produits, chambres, plans, services.

facturation

Revenus et montants en forme d'argent, plus les comptes par État.

tickets, services, domaines, serveurs, activité

Utilisez-les quand votre plateforme les a réellement. Ne forcez pas une cartographie — une section sans réponse est meilleure qu'une mauvaise.

Tout ce que votre plateforme a d'autre

Un fournisseur qui déclare les sections() : ['licences','shipments'] a fusionné ceux-ci dans la liste d'autorisation de la recherche universelle, de sorte que les recherches spécifiques à la plateforme deviennent disponibles sans changement de base.

L'erreur qui coûte une journée

Un fournisseur de contexte DOIT implémenter l'interface. Le type de registre le vérifie, donc une classe qui simplement LOOKS droite est sautée — sans erreur, nulle part.

ContexteProvider. php — le contrat, du paquet de référence Bottle
use OpsIQ\Platform\ContextProviderInterface;

/* MUST implement ContextProviderInterface: ContextRegistry::collectAll()
 * type-checks it, so a provider that merely LOOKS right is skipped and every
 * section answers "No enabled connector supplied this context section" — the
 * exact symptom, with no error anywhere. */
final class ContextProvider implements ContextProviderInterface
{
    public function slug(): string  { return 'yourplatform_context'; }
    public function label(): string { return 'Your Platform (orders, customers, products)'; }
    public function priority(): int { return 30; }   // lower renders earlier

    /** ADMIN only. The guest surface has its own provider and its own rules. */
    public function surfaces(): array { return ['admin']; }

    /** The universal section names this connector can answer. */
    public function sections(): array
    {
        return ['orders', 'pending_orders', 'clients', 'products', 'billing'];
    }

    public function isAvailable(): bool
    {
        try {
            $s = \OpsIQ\Connectors\ConnectorRegistry::getSettings('yourplatform') ?: [];
            return trim((string)($s['base_url'] ?? '')) !== '' && trim((string)($s['api_key'] ?? '')) !== '';
        } catch (\Throwable $e) {
            return false;
        }
    }

    public function build(array $ctx): string
    {
        $section = strtolower(trim((string)($ctx['section'] ?? '')));
        $limit   = max(3, min(50, (int)($ctx['limit'] ?? 20)));
        $query   = trim((string)($ctx['query'] ?? ''));
        try {
            switch ($section) {
                case 'orders':
                case 'pending_orders': return $this->orders($limit, $query, $section === 'pending_orders');
                case 'clients':        return $this->customers($limit, $query);
                case 'products':       return $this->products($limit);
                case 'billing':        return $this->billing();
            }
        } catch (\Throwable $e) {
            return '';   // a provider must NEVER break prompt assembly
        }
        return '';
    }
}
Enregistrez-le depuis le connecteur

Implémenter ContextConnectorInterface et renvoyer vos fournisseurs de contextProviders(). La classe de connecteurs peut également implémente ContextProviderInterface directement et être enregistrée comme elle-même.

Retourner le texte clair, pas JSON

build() retourne un bloc de texte concaténé dans l'invite. Ecrivez-le pour un lecteur : un titre, puis une ligne par ligne.

Retourner '' plutôt que jeter

Un fournisseur qui lance est enregistré et ignoré, mais le retour '' est le contrat.

Le Constructeur ne peut pas écrire des sections() pour vous

Le ContextProvider. php généré envoie des sections(): array { return []; } et l'assistant n'a pas de champ pour cela. Remplissez-le à la main — et rappelez-vous que la réédition depuis l'Assistant SURVEILLANCE le fichier. Copiez vos modifications en premier.

⚠️
Indiquer le vrai TOTAL, pas le nombre de lignes que vous avez envoyées. Une page n'est pas un total. Un fournisseur qui liste vingt lignes sans dire ainsi obtient l'assistant en toute confiance répondre "vous avez20réservations" lorsque la plate-forme détient669. Une COUNT bon marché et une ligne explicite — "TOTAL au dossier:669(cette liste montre la plus récente20seulement)" — est toute la solution, et un compte confiantment faux est pire que pas de compte.
Un bloc de section qui ne peut pas être compté à tort
$lines = ['YOUR PLATFORM — ORDERS (live, newest first)'];
$lines[] = 'TOTAL orders on file: ' . (int)$total
         . ' (this list shows the newest ' . count($rows) . ' only — never count these rows to answer "how many")'
         . ' | by status: ' . $byStatus;
foreach ($rows as $r) {
    $lines[] = '#' . (int)$r['id'] . ' ' . $r['reference'] . ' | ' . $r['status']
             . ' | amount ' . $r['amount'] . ' | ' . substr((string)$r['created_at'], 0, 16);
}
$lines[] = 'Use yourplatform_get_order (order_id) for the full record.';
return implode("\n", $lines);

Nommez vos actions donc OpsIQ peut dire lectures à partir d'écritures

OpsIQ classifie une action de la WORDS dans son action_id, et elle est délibérément conservatrice : tout ce qu'elle ne peut reconnaître est traité comme un écrit et exige une carte d'approbation.

1
is_destructive ou requires_confirmation wins

Si l'un ou l'autre est réglé, l'action a toujours besoin d'approbation.

2
Un mot d'écriture n'importe où dans l'identifiant en fait un écrit

ajouter, créer, ouvrir, mettre à jour, modifier, modifier et supprimer, supprimer, détruire, annuler, rembourser, suspendre, terminer, activer, approuver, rejeter, envoyer, marquer, réinitialiser, capturer, vider, fermer, rouvrir, attribuer, révoquer, accorder, définir, basculer, activer ou désactiver, émettre, générer, appliquer, frais, payer, fournir, renouveler, mettre sur pied, fusionner, déplacer, transférer, exacerber, drapeau, enregistrer, synchroniser, pousser, importer, exécuter, déclencher, démarrer, arrêter, redémarrer et quelques autres.

3
Puis un mot de lecture fait une lecture

get, list, search, find, view, show, fetch, compt, lookup, décrivez, lire, exporter, preview, test, ping, status, summary, detail, recent, history, check, log, statistiques, métriques, panorama, revenus, ventilation, rapport, analytique, solde, utilisation, quota, snapshot, perspicacité, flux, brouillon, triage, classifier, suggérer.

4
Puis la méthode HTTP décide

GET, HEAD et OPTIONS sont lus.

5
Sinon c'est un écrit

Non reconnu signifie l'approbation requise.

⚠️
Les mots d'écriture sont vérifiés AVANT de lire les mots, donc un nom mixte comme get_and_sync_orders est classé comme un WRITE. Choisissez un verbe, mettez-le en premier et gardez-le propre : list_order, get _customer, search_bookings, annuling_booking, set_ordre_status.

Ne déclare native_api que si la plateforme en a vraiment une

The native_api capability registers a generic <slug>_api_call passthrough so the model can reach endpoints your typed actions do not cover. On a platform with no API it is worse than useless: the model keeps reaching for a tool that cannot succeed, instead of using the tools that can.

Le Constructeur décide de votre réponse data-access

Say the platform has an API and it declares native_api and emits the passthrough. Say it has none (bridge mode, or the "Platform with no API" profile) and it declares platform_bridge instead and strips native_api, so the two can never both be true. You no longer hand-edit this.

Les paquets à main doivent quand même être bien conçus.

Si vous écrivez le manifeste vous-même, déclarez exactement un de native_api ou plate-forme_bridge. La conformité traite plate-formes_bridge comme l'écoutille d'échappement qu'un connecteur de pont est censé avoir, et le constructeur refuse une spécification qui revendique plate- forme_bridge sur un connecteur API.

Gardez ai_api_reference. md honnête dans les deux sens

On a connector that declares native_api the admin brain heads that file with a line naming <slug>_api_call. Without native_api it is headed neutrally instead, so a bridge connector no longer advertises a tool it does not have. Describe your real surface — for a bridge, that is your op and do vocabulary, not a REST endpoint table.

Enseignez le cerveau de l'administrateur sur votre plateforme

Declare ai_brain_aware and ship two Markdown files. They are read from the INSTALLED package directory (opsiq/connectors/<slug>/) for ENABLED connectors only, and injected into the admin agent's system prompt.

_expert_admin. md

Ce que cette plateforme est, comment ses données sont façonnées, ce que ses objets sont appelés, et les rancoeurs qui autrement feraient l'assistant de deviner. Ecrivez-le pour un collègue compétent qui n'a jamais vu la plate-forme.

ai_api_reference. md

La surface callable. Pour un connecteur de pont, ceci est votre op et faire du vocabulaire avec leurs paramètres, pas une table de fin de ligne REST.

Budget

En gros6,000caractères conservés par connecteur, et environ24,000caractères pour l'ensemble du bloc sur chaque connecteur activé. Sur le bouchon par connecteur, votre fichier est tronqué; soyez concis avant que le troncateur ne soit.

La précision paie

Ces fichiers sont la différence entre l'assistant utilisant vos outils de table universels et répondre à partir de la mauvaise section parce que rien ne lui a jamais dit que ces outils existaient.

💡
Les deux fichiers doivent être dans le paquet INSTALLED, et non seulement dans l'arborescence de votre source. Ce sont des fichiers de paquets ordinaires, donc ils sont couverts par la signature et expédiés dans le ZIP — ce qui signifie également que l'édition après la signature casse le sceau.
Connecteurs

Identité par un connecteur: admin, client, portail

Un contrat de signature sert trois surfaces. La tâche du connecteur est de transformer "qui est connecté sur la plate-forme" en un jeton signéOpsIQpeut vérifier, puis présenter le sujet vérifié dansOpsIQ's forme. Le connecteur n'authentifie jamais personne — la plate-forme le fait, et la signature porte cette affirmation.

Les trois surfaces, un signeur

Admin — votre personnel, dans votre backend

Un sujet admin. Le widget se charge à l'intérieur du panneau admin de la plateforme et chaque membre du personnel est associé à son propre agent OpsIQ.

Client — un client connecté, dans le chat du client

Un sujet client. C'est ce qui permet à un client connecté d'obtenir son compte GLOBE au lieu d'une recherche anonyme: chaque commande, détail complet et toute action en libre-service que vous autorisez.

Portail — un lien profond vers le portail de support

Les mêmes revendications plus jti et single_use, avec120- la seconde vie, parce que le jeton voyage dans unURLet doit être dépensé une fois. Ne pas faire rouler celui-ci manuellement: Paramètres, Portail de support porte un extrait prêt par langue, et la plate-forme le ment pour vous lorsque la zone de compte fonctionne sur ce serveur.

Le contrat de charge utile

Ce sont les revendications que les vérificateurs vérifient. Rien ici n'est facultatif, quel qu'un exemple partiel ailleurs pourrait suggérer.

site_key

Niveau supérieur. Doit égaler la clé de site de la demande, ou le jeton est refusé.

iat et exp

Le niveau supérieur, unix secondes. exp doit être dans le futur et après iat. Un jeton plus d'une minute dans le future est refusé. Garder la vie courte — minutes à heures.

authentifié: vrai

Haut niveau, à côté de exp. L'affirmation de votre plateforme que un vrai humain est connecté.

plateforme

Niveau supérieur. Une limace courte qui désigne l'origine. Recommandée, et elle permet au fournisseur d'identité d'un connecteur de dire ses propres jetons depuis une autre plateforme.

administrateur ou client

Un objet qui nomme le sujet. Il doit porter un id non vide, et un nom d'utilisateur ou un courriel — la porte d'accès par administrateur correspond à ceux-ci. Inclure les deux lorsque vous avez les deux.

Minting, mot à mot du pont Bottle
$payload = [
    'site_key'      => $cfgSiteKey,
    'iat'           => time(),
    'exp'           => time() + 6 * 3600,
    'authenticated' => true,
    'platform'      => 'yourplatform',
    /* 'admin' or 'customer' — OpsIQ stamps the matching session identity
     * from whichever key is present. */
    $opsiqSubject   => $subjectPayload,
];
$payload64     = rtrim(strtr(base64_encode(json_encode($payload, JSON_UNESCAPED_SLASHES)), '+/', '-_'), '=');
$identityToken = $payload64 . '.' . hash_hmac('sha256', $payload64, $cfgSecret);

Les deux vérificateurs et l'échec qu'ils causent

OpsIQ a deux vérificateurs de jetons, et ils n'étaient pas identiques. Savoir cela vous sauve un après-midi, parce que le symptôme ne ressemble à rien à la cause.

Le widget d'administration a son propre vérificateur

opsiq/embed/admin_ajax. php porte un vérificateur local qui accepte le drapeau authentifié dans chaque position. La liste de conversations, l'historique et la lecture non-lue passent par elle, donc ils authentiment bien.

Le vérificateur partagé est plus strict

opsiq/inclus/customer_identity_token_verify.php se trouve derrière le flux de discussion et le noyau AJAXAPI. Il exigeait historiquement le drapeau au niveau TOP.

Le symptôme

L'historique et les conversations fonctionnent. Chaque chat tourne les réponses "Admin login required". Il se lit exactement comme un bug de session et n'est pas: le jeton est manquant le drapeau de haut niveau.

Ce que fait le noyau actuel

Il accepte maintenant le drapeau au niveau supérieur OU à l'intérieur du sujet, de sorte que le contrat est uniforme. Les cœurs plus anciens ne lisent que le niveau supérieur. Emit la forme canonique et votre paquet fonctionne sur chaque version.

Ceci est vérifié par la machine maintenant. Tout fichier dans votre paquet qui mints identité jetons est balayé statiquement contre le contrat, et une charge utile la plate-forme refuserait de ne pas se conformer au fichier exact et à la ligne. Exécutez-le vous-même: php tools/verify_identity_contracts. php.

Clients inscrits dans le chat client

Deux choses doivent être vraies. Core doit tamponner le client vérifié, et votre connecteur doit le présenter.

1
Votre pont ou endpoint menthe un jeton client

Même signataire que l'administrateur, avec un sujet client. Lisez le client de la propre session de la plateforme. Si votre plate-forme signe les clients sur un gardien différent de admins, lire le garde que vous voulez et ne jamais tomber sur des sujets — c'est ainsi qu'un client se verrait remettre un jeton d'administration.

2
Le noyau vérifie et appose

Sur un jeton valide, le sujet vérifié est inscrit dans la session. Votre fournisseur lit une identité prouvée; il n'authentifie jamais.

3
Votre fournisseur d'identité le présente

detectCustomer() retourne leOpsIQforme. Il DOIT implémenterOpsIQ\Platform\IdentityProviderInterface, ou le registre le saute silencieusement — le même piège que le fournisseur de contexte.

4
Vos actions client-scoped acceptent un client_id

Et OpsIQ le verrouille à l'identité vérifiée avant exécution. Le modèle ne peut pas le fournir.

IdentityProvider. php — lisez l'identité prouvée, présentez-la sous la forme de OpsIQ
use OpsIQ\Platform\IdentityProviderInterface;

final class IdentityProvider implements IdentityProviderInterface
{
    public function slug(): string  { return 'yourplatform_identity'; }
    public function label(): string { return 'Your Platform identity (bridge-signed identity_token)'; }
    public function priority(): int { return 25; }   // ahead of the generic session provider

    public function isAvailable(): bool
    {
        try {
            $s = \OpsIQ\Connectors\ConnectorRegistry::getSettings('yourplatform') ?: [];
            return trim((string)($s['base_url'] ?? '')) !== '';
        } catch (\Throwable $e) { return false; }
    }

    public function detectAdmin(): ?array
    {
        $row = $this->sessionRowFor('_opsiq_admin_identity');
        if (!$row || !$this->isOurs($row)) return null;
        return [
            'id'       => (int)($row['id'] ?? 0),
            'name'     => $this->displayName($row, 'Admin'),
            'email'    => (string)($row['email'] ?? ''),
            'username' => (string)($row['username'] ?? ''),
            'role'     => (string)($row['role'] ?? ''),
            'platform' => 'yourplatform',
            'source'   => 'yourplatform_identity_token',
        ];
    }

    public function detectCustomer(): ?array
    {
        $row = $this->sessionRowFor('_opsiq_customer_identity');
        if (!$row || !$this->isOurs($row)) return null;
        return [
            'id'       => (int)($row['id'] ?? 0),
            'name'     => $this->displayName($row, 'Customer'),
            'email'    => (string)($row['email'] ?? ''),
            'phone'    => (string)($row['phone'] ?? ''),
            'platform' => 'yourplatform',
            'source'   => 'yourplatform_identity_token',
        ];
    }

    /* A session identity stamped by ANOTHER platform's token must not be
     * claimed here. An empty platform is accepted because older bridges did
     * not stamp one, and the site key already scoped the token. */
    private function isOurs(array $row): bool
    {
        $p = strtolower(trim((string)($row['platform'] ?? '')));
        return $p === '' || $p === 'yourplatform' || $p === 'remote';
    }

    private function sessionRowFor(string $key): ?array
    {
        if (session_status() !== PHP_SESSION_ACTIVE) return null;
        $row = $_SESSION[$key] ?? null;
        return (is_array($row) && (int)($row['id'] ?? 0) > 0) ? $row : null;
    }
}

Actions à portée client : deux serrures, les deux nécessaires

Le modèle ne doit jamais choisir les données qu'il lit. OpsIQ force cela de son côté, et votre plateforme doit l'appliquer de l'autre côté aussi. Un verrou est un bug loin d'une fuite; deux verrous sont un contrat.

Verrouillage1 — OpsIQécrase les paramètres d'identité

Avant qu'une action de clavardage ne soit lancée, OpsIQ remplace chaque paramètre en forme d'identité par l'identifiant du visiteur VERIFIED : client_id, clientid, user_id userid, customer_id et compte_id prennent l'identification numérique vérifiée; client_identificateur, client_identifier, compte_identifiant le prennent comme une chaîne; email, client _email, client/email prennent l 'e-mail vérifié.

Verrouillez 2 — votre plateforme re-scopee chaque requête

Prenez l'id qui vous a été donné et ajoutez-le à la clause OÙ chaque lecture et chaque écriture sur cette surface. Ne faites jamais confiance à la référence dans la demande de lui-même. Un client connecté demandant au sujet de la commande d'un autre doit revenir vide, non interdit.

Nommez vos paramètres pour que le 1 puisse les trouver

Appeler customer_id, pas cust ou ref. Un paramètre OpsIQ ne reconnaît pas est un paramètre qu'il ne peut verrouiller.

⚠️
Donnez au client connecté sa surface d'exploitation OWN, séparée des opérations administratives, même lorsque le SQL semble similaire. Deux surfaces avec des règles différentes restent honnêtes; une surface avec un drapeau devient une fuite le jour où quelqu'un modifie la mauvaise branche.

Câble de page zéro : la sonde déclarée par le connecteur

You can spare the operator all page wiring. Add an admin_identity_probe_url setting (https only) pointing at your identity endpoint. The plain admin-widget loader from Remote Sites, Codes then works with no page attributes at all: the widget discovers the endpoint through the connector, calls it with the site key and widget token, and authenticates each admin individually. A page can still override with a data-identity-endpoint attribute or window.OpsIQAdminIdentityEndpoint.

paramètres.json — le réglage de la sonde
{
  "key": "admin_identity_probe_url",
  "label": "Admin identity probe URL",
  "type": "text",
  "placeholder": "https://your-site.com/opsiq-yourplatform-bridge.php?op=admin_identity",
  "help": "Set this to your bridge admin_identity endpoint and the plain admin-widget loader works with NO page wiring: the widget probes this URL by itself, the bridge answers with the signed identity of the CURRENTLY logged-in admin, and every admin is matched to their own OpsIQ agent. Leave empty to keep the admin embed off."
}
La sonde est appelée par le navigateur

Même origine, il ne peut donc pas porter un en-tête personnalisé. Son authentification est la session de plate-forme. Mettez-le AHEAD de votre porte-clé de pont, gardez-le loin des données d'enregistrement, et ne retournez rien du tout pour un visiteur connecté.

Il répond à une forme fixe

{"success":true,"authenticated":true,"admin":{...},"identity_token":"..."} — and {"success":false,"authenticated":false,"error":"..."} when nobody is signed in.

Aucun secret de longue durée dans la source des pages

Seulement le signe, expirant jeton.

La mise en œuvre complète du critère d'évaluation de Laravel,WordPress, WHMCS, Symfony et PHP simple, ainsi que les caractéristiques de Laravel et l'ordre de dépannage, sont sur la page du widget d'administration. Ils sont le même code pour un sujet client : changez le garde que vous avez lu et la clé du sujet que vous signez.

Connecteurs

Édition : l'édition du dossier n'est pas publiée

La façon la plus courante de perdre un après-midi est d'éditer un connecteur sous marketplace_connectors/, de le réinstaller et de ne rien trouver changé. Les installateurs ne lisent pas ce dossier. Ils tirent un ZIP signé du catalogue du marché. L'édition est la séquence qui met vos changements dans ce ZIP.

Pourquoi le montage n'a rien fait

marketplace_connectors/<slug>/ is the SOURCE

C'est là que vous travaillez. Rien ne s'installe à partir de lui.

Le catalogue contient une ZIP signée

Une installation télécharge que ZIP, vérifie la signature, et le décompresser. Jusqu'à ce que vous rebâtissez la ZIP , chaque installation continue à obtenir l'ancien paquet .

Le Constructeur de connecteurs publie ailleurs

It writes into /connectors/<slug>/ on this install. That is a local connector, not a marketplace release. The two paths do not overlap.

La séquence de libération

1
Bouffer la version dans les fichiers DEUX

paramètres.jsonet le contrat de raccordement.json. La conformité les compare et échoue si la limace, la version ou le jeu de capacités ne sont pas d'accord. Ajoutez une entrée CHANGELOG.md pendant que vous êtes là — c'est un fichier obligatoire.

2
Re-synchroniser l'extrait de pont

php tools/sync_connector_bridge_snippets.php --apply — only relevant if your package ships bridge/*.php, and mandatory if it does. Skipping it means the panel hands operators the previous bridge.

3
Resigner chaque paquet

php tools/resign_all_connectors. php — la signature couvre les hashes de fichier, donc toute modification l'invalide. Signer en dernier, après chaque fichier est final.

4
Exporter la clé de signature, puis les semences

Le semencier signe chaque paquet pendant qu'il construit le ZIP, et il fonctionne dans un contexte où la clé ne peut pas être lue à partir des paramètres — donc il doit venir de l'environnement.

5
Redéployez le fichier de passerelle, si vous en expédiez un

Réinstaller le connecteur met à jour le paquet. Il ne touche pas la copie assise dans le webroot de l'opérateur. Dites-leur, dans le panneau et dans le journal de changement.

Toute la libération, pour
# 2 — hold the panel copy identical to the shipped bridge
php tools/sync_connector_bridge_snippets.php --apply

# 3 — re-sign (do this last, after every file is final)
php tools/resign_all_connectors.php

# 4 — the seeder reads the signing key from the ENVIRONMENT only
export OPSIQ_CONNECTOR_SIGNING_KEY="$(php -r 'require "bootstrap/init.php"; echo opsiq_setting("connector_signing_key","");')"
php saas/scripts/maint/seed_marketplace_free.php --apply --only=<slug>

# verify before and after
php tools/verify_identity_contracts.php
php vendor/bin/phpunit tests/phpunit/Unit/Connectors
⚠️
Pourquoi l'exportation n'est pas optionnelle : le signant recherche la clé dans OPSIQ_CONNECTOR_SIGNING_KEY d'abord et le connecteur_signing_key setting second. Le semencier fonctionne sur le bootstrap SaaS et les outils/sign_connector. php ne boots du tout rien, donc dans les deux paramètres le lecteur n'existe pas — sans variable d'environnement il n'y a pas de clé, et vous obtenez "Aucune clé de signature disponible" ou chaque paquet signalé comme sign_failed. Seuls les outils / resign_all_connectors. php boots OpsIQ et peuvent trouver la clé seule.

Qu'est-ce qui est en fait un navire

Seulement les fichiers que couvre la signature

Le ZIP est construit à partir de la propre liste de fichiers du signataire, donc un fichier errant assis dans votre dossier de paquet n'est pas expédié. C'est délibéré: un fichier non signé utilisé pour voyager avec les clients.

Extensions couvertes

php,json, js,css, md, txt,html, sh, svg, png, jpg, jpeg, gif, webp, ico, yml, yaml — récursivement, y compris la signature du pont/ et des essais/.jsonelle-même est exclue des hachages et ensuite ajoutée au ZIP afin que les installs puissent vérifier.

Tout autre élément est déclaré comme non_empaqueté

Le semencier nomme chaque fichier qu'il a laissé derrière. Lire cette liste. Un fichier que vous prévoyez d'expédier apparaît là signifie une mauvaise extension ou un mauvais emplacement — pas un succès silencieux.

Modifier tout fichier couvert brise le sceau

Y compris un fichier Markdown.

Fichiers obligatoires dans un paquet distributable

connector.php

Doit renvoyer une instance de ConnectorInterface.

settings.json

Manifeste : slug, nom, version, manifeste_version, compatibilité, capacités, connecteur_contrat_version.

connector_contract.json

Le contrat lisible par machine. Son ensemble de limaces, de versions et de capacités doit être identique aux paramètres.json.

LIRE. md, DÉVELOPPEMENT. mD, CHANGELOG. mj

Tous les trois sont vérifiés pour l'existence ET la taille minimale. DEVELOPER. md a besoin de contenu réel, pas d'un talon.

Un fichier par capacité déclarée

Chaque fonction nomme le fichier qu'elle attend — ContextProvider. php pour le contexte, IdentityProvideer. php en identité, GuestLookupProvideR. php dans guest_lookup, etc. — à moins que le connecteur ne mette en œuvre la capacité en ligne.

Rien qui ressemble à un titre de créance

La conformité scanne les trois fichiers Markdown pour des valeurs en forme de secret et des clés privées, et échoue sur un coup.

Vérifiez avant de l'expédier

La suite pleine conformité est la même qu'une installation. Il vérifie le manifeste contre le contrat canonique, qui runtime et les capacités de manifeste conviennent, que chaque capacité déclarée a son fichier et ses méthodes, le contrat d'identité dans chaque fichier de menthe, le match bridge-snipet, l'hygiène de l'accueil des invités, l ́action unicité et la sécurité de confirmation, et la signature du paquet.

Exécutez les quatre avant chaque sortie
# conformance for every marketplace package
php tools/test_marketplace_connector_conformance.php

# the identity-token contract, statically, with file:line on failure
php tools/verify_identity_contracts.php

# the connector unit suite
php vendor/bin/phpunit tests/phpunit/Unit/Connectors

# the release gate
php tools/release_gate_connectors.php
💡
Un échec est attendu et n'est pas un problème : la vérification de signature du paquet signale un avertissement pendant que vous êtes encore en train d'éditer. Il efface le moment où vous resignez.
Connecteurs

Référence de pack et cycle de vie du connecteur

Il s'agit du contrat de niveau source pour la construction d'un connecteur que OpsIQ peut découvrir, configurer, valider, activer, exécuter, tester, signer et distribuer.

Référence du développeur
Paquet de connecteurUn package de connecteur a une implémentation et un manifeste de connecteurs requis, avec des actions facultatives, des recettes, des connaissances, des ressources et des métadonnées de signature.Paquet de connecteurdeveloperMANIFESTv1LIFECYCLEGéréESPACE DE TRAVAILDélimitéVUE DE L'ESPACE DE TRAVAIL EN DIRECTconnector.phpClasse de connecteur / usineRequissettings.jsonSchéma de manifeste et paramètresRequisactions.jsonDéfinitions des mesuresFacultatifsignature.jsonMétadonnées de signature du paquetPublication1DECLAREManifeste et capacités2IMPLEMENTCycle de vie et fournisseurs3VALIDATETest, signe, emballage
Un package de connecteur a une implémentation et un manifeste de connecteurs requis, avec des actions facultatives, des recettes, des connaissances, des ressources et des métadonnées de signature.

Forfait minimum

connectors/example_platform/
├── connector.php          # connector implementation / entry point
├── settings.json          # manifest + configuration schema
├── actions.json           # optional action catalogue
├── README.md              # setup, scopes, webhooks and limits
├── workflow_recipes.json  # optional reusable recipes
├── knowledge.json         # optional provider knowledge
├── profile.json           # optional connector profile
├── src/                   # optional client/provider classes
├── assets/                # optional admin assets
└── signature.json         # signed release metadata

Contrat manifeste

settings.json Utilise la version manifeste 1. Le validateur attend un slug, le nom, la version, manifest_version, compatibilité, description et les capacités. opsiq_min et opsiq_max. Le statut de la version est l'un des production, beta, prévisualiser ou templateLes paquets hérités peuvent être normalisés avec des avertissements, mais un nouveau paquet devrait passer sans aucun avertissant.

Interface de connecteur de noyau

  • Identité et configuration: slug(), name(), description(), capabilities(), settingsSchema(), testConnection().
  • Cycle de vie: onEnable() et onDisable(). La désactivation doit être non destructive ; la purge des données est une opération distincte et délibérée.
  • Entrée/synchronisation: handleWebhook(), poll(), backfill()Le sondage gère le travail incrémentiel; le remplissage importent l'historique et doivent être sûrs de répéter.
  • Support : pushReply() où la plateforme accepte les réponses.
  • Actions : registerActions() Fournit des contrats d'action exécutoires.
  • Sécurité : securityCapabilities(), syncBlockedIp(), removeBlockedIp(), testSecuritySync().

La base abstraite offre également un remplissage en morceaux optionnel, la liste des clients, la découverte/création de comptes e-mail, les abonnés, la détection d'administrateur/client, les fournisseurs de facturation/contexte/identité, l'extraction de réponses, le réessai des appels HTTP, l’accès au chemin JSON, le classement flou et les assistants de pagination.

Capacités et authentification

Les noms de fonctionnalité pris en charge incluent actions, déclencheurs, contexte, identité, ventes, facturation, inbound_ticket, outbound_reply, sync_users, sync_departments, security_events, customer_import, blocage_sécurité_natif, promo_audience, flux_promotion, boîte_mail, native_api, ai_brain_aware et ai_tickets. API clé, porteur, de base, HMAC,OAuth 2identifiants du client,OAuth 2Code d'autorisation et modèles d'authentification personnalisés.

Cycle de vie du registre

  1. La découverte charge le paquet et valide son manifeste.
  2. La configuration est stockée par espace de travail ; les secrets sont chiffrés.
  3. Le test de connexion vérifie les informations d'identification sans activer le connecteur.
  4. Activer les appels onEnable(), synchronise les définitions d'action et peut démarrer le remplissage initial.
  5. L'exécution de polling/webhook/abonné porte toujours le contexte d'espace de travail.
  6. Désactiver les appels onDisable() et arrête l'activité sans supprimer les données importées.
  7. La purge est une opération explicite distincte.

Règles de correction

  • Utilisez la clé de l'espace de travail/site dans chaque lecture, écriture, clé cache, cle de déduplication et recherche webhook.
  • Enregistrez un ID externe/un ID d’événement chaque fois que la plateforme en fournit un.
  • Pour les systèmes distants, utilisez leurAPI; ne jamais supposer que leurs tables de base de données existent dans leOpsIQconnexion.
  • Ne jamais exposer de secrets, traces brutes du fournisseur ou l'existence d'un autre espace de travail.
  • Déclarez uniquement les capacités que le paquet implémente réellement. actions.json Le catalogue ne rend pas une action utilisable tant que le connecteur n'est pas installé, activé, configuré et sa connexion valide.

Test et sortie

Exécutez le lint PHP, la validation du manifeste, les tests de connexion, les test des schémas d'action, les essais de signature/replay webhook, les Essais d'isolation de l'espace de travail, les Tests de répétition de remplissage en arrière-plan, les testes de connecteur désactivé et les tests d'échec/réessai. Un package marketplace doit ensuite être signé et vérifié, inclure la documentation sur la configuration/les permissions/le webhooku, et indiquer son statut de version réel.

Connecteurs

Recettes de connecteur

Des recettes étape par étape pour les configurations de connecteurs courantes.

Recettes
Recette de connecteurUne recette de configuration Shopify comme liste de contrôle: créer une application, accorder des champs d'application, coller un jeton et tester, activer les webhooks, passer une commande de test.Recette de connecteurShopifyRecette · Shopify avec des webhooksCréer une application personnalisée dans Shopify adminChamps d’application des aides: read_orders, read_customers…Collez le domaine de la boutique + jeton, cliquez sur TestActiver la synchronisation Webhook (enregistrement automatique des commandes)Passez une commande test → elle apparaît dans Ventes en 30 s1STEP BY STEPRecettes de copier-coller2REAL PLATFORMSShopify · WHMCS · Stripe · Livraison gratuite3VERIFYL'ordre de test est affiché dans 30s
Chaque recette est une liste de contrôle que vous suivez haut en bas, ici, Shopify avec des webhooks en temps réel, vérifiés par un ordre de test.

Recette: Shopify avec des webhooks en temps réel

Scénario :
Goal: Connect Shopify with automatic order sync and GDPR compliance.
Que faire:

1. Create a custom app in Shopify admin (Settings > Apps > Develop apps). 2. Grant scopes: read_orders, read_customers, read_products, write_customers. 3. Copy the Admin API access token. 4. In OpsIQ Connectors > Shopify, enter store domain and token. 5. Click Test Connection. 6. Enable Webhook sync, OpsIQ registers order/customer webhooks automatically. 7. GDPR webhooks register automatically (data_request, customers/redact, shop/redact). 8. Verify: place a test order, check it appears in OpsIQ Sales within 30 seconds.

Recette: WHMCS intégration

Scénario :
Goal: Connect WHMCS so AI can look up clients, services, tickets, and invoices.
Que faire:

1. In WHMCS admin, Setup > Staff Management > Manage API Credentials. Create a key. 2. In OpsIQ Connectors > WHMCS, enter URL, API identifier, and secret. 3. Click Test Connection. 4. Install the WHMCS module addon for ticket relay. 5. Verify: ask the admin AI "Find client [email protected]". WHMCS data should appear.

Recette: Paiements Stripe

Scénario :
Goal: Track Stripe payments and let AI look up transactions.
Que faire:

1. In Stripe Dashboard > Developers > API keys, create a restricted key (read: Customers, Charges, Invoices, Subscriptions). 2. In OpsIQ Connectors > Stripe, enter the restricted key. 3. Test Connection. 4. Add webhook endpoint in Stripe: copy the webhook URL shown on the connector's own settings page. It carries a per-connector token and looks like https://your-domain.com/api/connectors.php?slug=stripe&token=THE_TOKEN A URL without the token is rejected with "Missing slug or token". 5. Select events: charge.succeeded, invoice.paid, customer.subscription.updated. 6. Copy the webhook signing secret to OpsIQ. 7. Verify: make a test payment, check it in OpsIQ Sales.

Recette: Profil d'entreprise Google

Scénario :
Goal: Connect GBP for review management, posts, and insights.
Que faire:

1. Create a Google Cloud project, enable Business Profile API. 2. Create OAuth 2.0 credentials (Web application). 3. Set redirect URI: copy it from the connector's own settings page. Google and Microsoft connectors share one slug-less callback: https://your-domain.com/connectors.php?oauth=callback Everything else uses https://your-domain.com/connectors.php?slug=<slug>&oauth=callback OAuth redirect URIs must match EXACTLY, and a URI missing oauth=callback is read as a webhook and answered with "Missing slug or token". 4. In OpsIQ, enter Client ID and Client Secret. 5. Click Authorize, sign in, grant access. 6. Select your business location. 7. Verify: reviews, posts, and insights should appear.

Connecteurs

Étendre le CRM & Site Intelligence

OpsIQ Un connecteur peut brancher une nouvelle capacité dans le CRM ou le site Intelligence sans aucune modification à OpsIQ de base, via le registre des capacités de la plateforme (\OpsIQ\Platform\CapabilityRegistre). Déclarez la capacité, implémentez son petit ensemble de méthode, expédiez le connecteur,OpsIQ le découvre et l'insère dans l'interface utilisateur, le client 360 timeline et l'installation invite.

Extender CRM & SI
Capacités de la plateformeUn connecteur sur les bus de capacité d'alimentation gauche (CRM, Intelligence du site, Analytique) découvert par le Registre des capacités.Capacités de la plateformeespace de travailVotre connecteurdéclare ses capacitésCRMcalendrier · enrichissement · esign · paiements · boîte aux lettresIntelligence du siteLocal_listing · Classement des sitesAnalytiqueweb_analytics · rapport & ingestRegistre des capacitésDécouvre et câble l'interface utilisateur + la timeline1DECLAREDes capacités, pas des modifications de base2PLUG INCRM · SI · Bus d'analyse3AUTO-WIREDInterface utilisateur, chronologie, invites
Un connecteur déclare les capacités (calendar, enrichissement, données de classement, analytique...) et OpsIQ auto-connecte ces capacités dans CRM et Intelligence Site, aucun changement de cœur.

Déclarer les capacités

Déclarative (paramètres.json)

Ajouter un commentaire <domain>_capabilities tableau, le meilleur pour les connecteurs sans code/marché. crm, site_intelligence.

Dans le code (connector. php)

Mise en œuvre crmCapabilities() / siCapabilities() Retourner les mêmes descripteurs.

Déclarer un fournisseur de calendrier CRM (settings.json)

Scénario :
Goal: make a calendar connector appear in the CRM Schedule-meeting panel.
Que faire:

"crm_capabilities": [ { "type": "calendar", "label": "Calendar (Acme)", "actions": ["createEvent","listEvents","freeBusy"], "requires_auth": true } ]

Déclarer un fournisseur de Site Intelligence (settings.json)

Scénario :
Goal: feed local-listing data into Site Intelligence.
Que faire:

"site_intelligence_capabilities": [ { "type": "local_listing", "actions": ["listLocations","listReviews","getInsights"], "requires_auth": true } ]

Bus de capacité et leur surface de méthode

CRM / calendrier

createEvent($settings,$params) → {success,event_id,html_link,meet_link} ; listEvents; freeBusy. Propulsé par \OpsIQ\CRM\CalendarBridge.

GRC / enrichissement

enrich($settings,$params) → {success,traits}. Propulsé par \OpsIQ\CRM\EnrichmentBridge (s'exécute également automatiquement sur la création d'entreprise lorsqu'un fournisseur est connecté).

GRC / esign

sendForSignature($settings,$params) → {success,envelope_id,sign_url}. Propulsé par \OpsIQ\CRM\EsignBridge.

Site_intelligence / local_listing

listLocations, listReviews, getInsights. Livré via le connecteur Google Business Profile.

Site_intelligence / Rank_data

keywordRanks($settings,$params) → {success,ranks}. Propulsé par \OpsIQ\SiteIntelligence\RankDataBridge. Livré avec: connecteur SerpApi.

Analyse web / Web_analytics

report($settings,$params) (synchronisation / exportation) + ingest($settings,$events) (importation). Conduit par \OpsIQ\Analytics\WebAnalyseBridge. Navires: Google Analytics (GA4) connecteur. Données API pour les rapports, Protocole de mesure pour l'importation. L'analyse est ouverte pour les connecteurs comme CRM + Intelligence du site (domaine analytics / analytics_capabilities).

Paiements / fournisseur_de_paiement

listPayments, customerPayments, createPaymentLink. Conduit par \OpsIQ\Payments\PayementsBridge. Affichez les paiements d'un client sur le calendrier CRM + envoyez un lien de paiement sur une affaire. Expédie:StripeConnecteur de paiement. Domaine payments / payments_capabilities.

Boîte aux lettres / email_sync

listMessages + sendMessage. Conduit par \OpsIQ\Mailbox\MailBoxBridge. Les courriels d'un client sur le Client 360 timeline + envoyer un email à partir d'une offre. Expédiés: Gmail + Outlook/Microsoft 365 connecteurs. Domaine mailbox / mailbox_capabilities.

Partagé OAuth application + une redirection

Tous les connecteurs Google partagent ONE app via \OpsIQ\OAuth\SharedGoogleApp. Set google_oauth_client_id/_secret une fois et Calendrier, Analytics, Business Profile + Gmail tous les travaux (les champs par connecteur (optionnel) sont des surcharges). Ils partagent également UNE redirection URI, <site>/connectors.php?oauth=callback (pas de limace par connecteur), parce que Google expose non API pour ajouter rediriger les URIs vers une application; OpsIQ récupère le connecteur à partir de la signature OAuth state Enregistrer ce URI unique une fois et chaque connecteur Google (présent + futur) autorise sans autre configuration de la console. Retour SharedGoogleApp::resolve(...),S redirect_uri De votre intérieur oauthParams()Les connecteurs Microsoft font la même chose via \, mais ils ne sont pas compatibles avec les redirections per-slug.OpsIQ\OAuth\SharedMicrosoftApp (microsoft_oauth_*).

Les boutons d'importation sont fonctionnellement limités

Le Importation (remblai historique) et Clients d'importation boutons montrent SEULEMENT pour les connecteurs qui les implémentent réellement, détectés par la réflexion, donc il n'y a pas de drapeau à déclarer. backfill() ou backfillChunk() Pour gagner le bouton Importer; surcharger listCustomers() (return {email, first_name, …} pages) pour gagner des clients d’importation. AbstractConnector no-op et le bouton reste caché, de sorte que l'interface utilisateur n'offre jamais une importation qu'un connecteur ne peut pas effectuer.

L'IA sur les bus

L'agent CRM propose et enregistre les réunions hors de la portée des signaux (\OpsIQ\CRM\MeetingProposer → CalendarBridge), et enrichit automatiquement de nouveaux comptes, le -AI exploite la boucle CRM, exécutée sur les bus de connecteur.

Recherche de ticket client-chat (fetchTicket())

Deux niveaux, pas de changements fondamentaux

Lorsqu'un visiteur fait référence à un numéro de ticket dans le chat client ("quel est l'état du T-000123?"), OpsIQ Il le résout en deux niveaux. Niveau 1 lit la billetterie partagée OpsIQ, chaque connecteur avec inbound_ticket Le serveur de tickets y reflète ses tickets, donc les tickets synchronisés fonctionnent pour TOUS les connecteurs avec zéro code par connecteur. Niveau 2 C'est une solution de secours pour les anciens tickets qui n'ont jamais été mis en miroir: fetchTicket() sur chaque connecteur activé qui l'implémente. Il est duck-typed (découvert par method_exists(), comme contextProviders()/audienceCatalog()), de sorte que le signé ConnectorInterface Les connecteurs qui n'en ont pas besoin (sources de messagerie/chat créant des tickets en natif) l'omettent simplement.

⚠️
La propriété est obligatoire et vous devez l'appliquer. fetchTicket() reçoit l'identité du visiteur VÉRIFIÉ dans $ctx (client_id + client_email, la même identité vérifiée que le client chat AI utilise). Résolvez le client de plateforme de cette identité et demandez SEULEMENT que les billets du client, puis revérifiez la propriété sur l'enregistrement de détail. null sur une quelconque erreur, erreur ou manque, jamais les données d'un autre client. null se dégrade gracieusement en "n'ai pas pu trouver ce billet".
connector.php, le contrat fetchTicket() (référence: connecteurs/whmcs et connecteurs/zendesk)
<?php
// connector.php — OPTIONAL universal client-chat ticket resolver (Tier 2).
// Only add it if your platform keeps its OWN ticket store that may hold tickets
// not yet mirrored into OpsIQ. Return the normalised array below, or null.
//
// $ref      = ['mode' => 'id'|'tid', 'value' => string]  (from extract_ticket_ref)
// $ctx      = ['client_id' => int, 'client_email' => string]  (VERIFIED visitor)
// $settings = your connector settings
public function fetchTicket(array $ref, array $ctx, array $settings): ?array
{
    try {
        $email = trim((string)($ctx['client_email'] ?? ''));
        $cid   = (int)($ctx['client_id'] ?? 0);
        if ($cid <= 0 && $email === '') return null;            // no verified identity → refuse

        // 1) Resolve THIS visitor on your platform (by verified email/id).
        // 2) List ONLY their tickets and match $ref against the ticket number/id.
        // 3) Re-confirm ownership on the detail record before returning.
        //    On any miss/mismatch/error → return null (never leak).

        return [
            'tid'        => 'T-000123',     // the customer-facing reference
            'id'         => 123,            // your internal id
            'status'     => 'open',
            'subject'    => '…',
            'department' => 'Billing',     // '' if your platform has none
            'priority'   => 'high',
            'opened_at'  => '2026-06-29 10:00:00',
            'last_reply' => '2026-06-29 12:00:00',
            'message'    => 'opening message text',
            'replies'    => [               // oldest → newest; opening message may be first
                ['who' => 'You',   'date' => '…', 'message' => '…'],
                ['who' => 'Staff', 'date' => '…', 'message' => '…'],
            ],
        ];
    } catch (\Throwable $e) {
        error_log('[yourslug][fetchTicket] ' . $e->getMessage());
        return null;                                             // graceful degrade
    }
}

Comment la plateforme l’utilise

Découverte

CapabilityRegistry::providers($domain,$type) liste les fournisseurs avec le statut installé/activé/prêt (basé sur le système de fichiers; DB uniquement pour l'indicateur activé).

Sélection

CapabilityRegistry::active($domain,$type) retourne le premier fournisseur prêt avec son connecteur chargé et les paramètres. Bridges appellent cela au lieu de limaces de codage dur.

Notifier pour installer

Lorsqu'une fonctionnalité a besoin d'une capacité non encore connectée, l'interface utilisateur affiche une invite Connect/Installer un clic, jamais un contrôle mort.

Le guide complet

Voir connectors/PLATFORM_CONNECTORS.md (CRM + Site Intelligence) et connectors/CRM_CONNECTORS.md Dans le paquet.

Connecteurs

Recherches et remboursements en libre-service (créez votre connecteur pour le chat client)

Signed-in customers can ask the customer chat AI about their OWN account ("my balance", "my orders", "did support answer my ticket") and, if the business enables it, request refunds. All of it is powered by YOUR connector's declarations: no OpsIQ core changes, no platform hardcoding. The AI calls your lookups as native tools (it cannot invent one), identity is locked server-side to the verified customer, and results are automatically trimmed for the AI.

Déclarer une recherche de client

Dans votre esprit actions.json, une action en lecture seule devient appelable par le client avec ALL THREE: "scope":"client", "requires_confirmation":false, "is_destructive":false. Utilisation "scope":"both" quand la même recherche doit également être possible par votre équipe dans l'IA Admin. Le vocabulaire complet est admin, client, both et system (system n'atteigne ni AI — API et webhook seulement). Tout le reste est rejeté : la validation du paquet échoue et l'action ne s'installe pas. writing champ d'application — l'assistant à la rédaction est admin action set.

La règle d'identité (obligatoire)

Nommez votre paramètre d'identité à partir de la série standard. Verrouillé vers l'identifiant numérique vérifié: client_id, clientid, customer_id, user_id, userid, account_id. Verrouillé sur cette id comme une chaîne: client_identifier, customer_identifier, account_identifier. Verrouillé sur l'email vérifié: email, client_email, customer_email, user_emailOpsIQ verrouille et remplit automatiquement le nom du client connecté vérifié par la plateforme; l'IA ne voit ni ne choisit jamais d'identité. Un nom non standard échoue à se fermer (refusé, jamais divulgué).

Ce qui doit rester admin-only

Tout ce qui n'est pas dans la portée de cette identité: fetch-by-bare-id (order_id/ticket_id Les listes sont disponibles sur le site Web de l'OMPI, mais elles ne sont pas disponibles. "scope":"admin".

Formulation des résultats (clés porte-réponse)

Les résultats de recherche sont structuralement parés avant d'atteindre l'IA: les clés en forme secrète sont lâchées, les longues chaînes et les listes sont captées, les champs vides sont élagés, et une carte plate plus large que le capuchon de la clé garde sa d'abord, les clés porteuses de réponses, de l'argent (credit, balance, amount, total, due, paid), identité (email, *name, phone, company), état (status, active, expir*, renew*), dates, plan/produit/domaine/service/abonnement/commande/facture/champs de billet, monnaie, nombre et stats/summary/totals, avant tout siège restant aller à d'autres clés plus petite valeur-premier. Conseils pratiques: nommer vos champs avec ce vocabulaire standard et retourner les champs qui répondent à la question du client plutôt qu'un brut100-key plate-forme dump; un champ nommé en dehors du vocabulaire rivalise pour les sièges restants et peut être paré à partir de charges utiles très larges.

Remboursements · ce que votre connecteur fournit

Deux opérations brutes, sans politique: (1) une lecture de vérification de paiement filtrable par identité ET une référence de transaction (votre API doit ET les filtres), par ex. whmcs_get_transactions; (2) une action de remboursement exécuter (scope:"admin", requires_confirmation:true, is_destructive:true, jamais exposé au client), par exemple whmcs_refund_orderL'entreprise choisit les deux clés dans Paramètres → Chat client; OpsIQ re-vérifie le serveur de paiement, applique la boîte de politique de l'entrepreneur (montant maximum, fenêtre d'âge, limite mensuelle), émet des problèmes à l'intérieur de la boite et dépose un ticket d'examen pour tout le reste.

Routage par département selon le destinataire

L'éditeur d'action du Connector Builder dispose des mêmes contrôles: définissez « Qui peut l'utiliser » sur Clients connectés, laissez les deux cases à cocher d'écriture décochées et utilisez un nom de paramètre d'identité standard.

Implémentations de référence

Les entrées "Client Self-Service" dans connectors/whmcs/actions.json, woocommerce/actions.json, oscommerce/actions.json; contrat complet en connectors/README.md §8.1–8.2 et ConnectorInterface::registerActions().

Connecteurs

Recherches d'invités — laissez les visiteurs suivre une réservation, un envoi ou une commande SANS connexion (visiteur_lookup)

Les hôtels, les messageries et de nombreuses plateformes commerciales servent aux clients qui détiennent une référence mais pas de connexion: un client avec une confirmation de réservation, un destinataire avec un numéro de suivi. guest_lookup capacité (Connector Contract, mode: généré) permet à VOTRE connecteur de servir les visiteurs dans le chat client AI — nonOpsIQles modifications de base, pas de codage dur de la plate-forme. Votre connecteur déclare CE QUI prouve le droit et QUEL champs sont visibles;OpsIQforce les interrupteurs, les gaz et l'uniforme à nier.

Le modèle de confiance

Référence + preuve, jamais identité

Le visiteur fournit la référence de l'enregistrement (apparie par le regex que vous déclarez) plus la preuve que vous choisissez — normalement l'email sur l'album. Votre action de recherche récupère l'inscription SERVER-SIDE par référence; OpsIQ's generated provider compare la preuve avec l'entrée FETCHED. L'entrée du visiteur n'est jamais fiable, et aucune identité vérifiée n'a été créée: le match donne droit au visiteur aux champs autorisés d'un enregistrement, rien d'autre.

Naissance uniforme (pas d'oracle de dénombrement)

L'IA est explicitement chargé de ne jamais confirmer l'existence d'une référence et de n'inventer aucun détail. Les tentatives sont limitées par la vitesse par conversation + IP par cœur avant que votre connecteur soit consulté.

Double opt-in, les deux par défaut OFF

Rien ne sert aux clients jusqu'à ce que l'entreprise autorise les deux commutateurs: le contrôle de l'espace de travail dans Paramètres→Sécurité→"Invités à rechercher des enregistrements dans le chat client" (permission-gated ET toujours confirmé par mot de passe, même lorsque l'étape optionnelle est désactivée), et le propre connecteur guest_lookup_enabled Installer ou activer un connecteur seul n'ouvre jamais la surface du client.

La surface réservée aux invités

Les fournisseurs générés s'inscrivent dans le registre guest surface de contexte — structurellement séparée de admin et customer. Les fournisseurs de contexte existants ne sont jamais consultés pour les visiteurs anonymes, et le fournisseur invité n'est jamais consulté pour les personnes connectées. Le ctx qu'il reçoit porte le message de chat, l'identifiant du thread et le courriel de pré-chat affirmé (non vérifié) comme un candidat à la preuve — aucun champ d'identité.

La déclarer dans le constructeur

1
Définir l'action de récupération

À l'étape Actions, ajouter une action en lecture seule qui renvoie ONE record par sa référence (par exemple : GET /bookings/{booking_number}) et map ses champs de réponse avec alias: statut, arrivée, départ, room_type, customer_email...

2
Cochez "Vieilles de recherche"

Sur l'étape de la capacité, activer guest_lookup. Un panneau dédié apparaît : choisissez l'action de récupération, nomez le paramètre de référence, donnez le motif de référence (un corps régex tel que \bBK-[0-9]{4,10}\b) nom du dossier (réservation), et choisir la preuve — courriel sur le dossier (recommandé) ou aucun (seule référence, pour le suivi de messagerie statut-seulement).

3
Autoriser la liste des champs visibles

Cochez exactement les champs que peut voir un invité. Tout le reste est DRoppED — jamais expurgé. Le Constructeur refuse les champs en forme de PII (email, téléphone, adresse, paiement...) dans la licenselist, et la suite de conformité revérifie la même règle avant de publier, donc une spécification manuelle ne peut pas s'y glisser. Notez que la validation du temps d'installation couvre le manifeste et la signature seulement, alors exécutez la suite avant de livrer. Le champ de preuve lui-même ne peut jamais être affiché.

4
Publier et activer

Le constructeur émet GuestLookupProvider.php — la mise en œuvre renforcée canonique, identique pour chaque paquet généré — et ajoute guest_lookup_enabled l'entreprise arme les deux commutateurs et le chat AI commence à offrir la recherche lorsqu'un visiteur demande votre type d'enregistrement.

Règles du contrat

Champs en forme de statut seulement

Pensez à "ce qu'un messager imprimerait sur la page de suivi publique" : statut, dates, catégorie de chambre ou service, nombres. Les noms, les coordonnées, les adresses, les données de paiement et les notes en texte libre n'ont pas leur place dans une conversation anonyme — le Constructeur et la conformité les refusent tous deux.

L'AI répond SEULEMENT à partir du bloc

Le fournisseur généré termine sa sortie par une instruction de répondre uniquement à partir des champs listés et d'offrir un ticket pour tout autre chose. Detail non dans la licenselist est "pas disponible dans le chat" — par conception.

Les suivis continuent de fonctionner

Le fournisseur redessine la référence des messages récents du visiteur dans la même conversation, donc "et quand est check-out?" fonctionne sans retypage de la référence. La référence assortie et le courriel de preuve sont rappelés sur le thread de chat comme CANDIDATES, donc les suivis ne ré-redemandent pas. Ils sont candidats seulement: chaque tour refait toujours le côté serveur d'enregistrement et recompare la preuve avant de libérer un seul champ.

Paquets d'auteurs manuels

Un paquet de marché peut expédier son propre GuestLookupProvider.php implementing ContextProviderInterface avec surfaces(): ['guest']. Suivez le contrat du modèle généré exactement — récupérer par référence, côté serveur de correction, refus uniforme, sortie uniquement permiselist — et déclarer guest_lookup in capabilities. La conformité vérifie la surface de l'invité et scanne la liste des permis pour PII.

💡
Les recherches des clients sont en lecture seule pour le chat AI. Ils n'exécutent jamais d'actions, ne créent jamais d ́identités et ne déverrouillent jamais le chemin d'action du client en libre-service ci-dessus — ce chemin nécessite toujours un client connecté vérifié par plate-forme.
Connecteurs

Ciblage de l'audience promotionnelle (promo_audience)

Let the Promotion Studio target campaigns by LIVE client and billing state from YOUR platform: "has an unpaid invoice", "order pending", "subscription cancelled". Any connector (pre-installed, marketplace, or one you build yourself) joins by implementing two small methods. No OpsIQ core changes, no platform hardcoding: your connector appears as a platform in the studio Targeting tab with its own dropdown of facts, and several connectors can be enabled side by side.

Publicité
Ciblage de l'audienceUne identité vérifiée passée à un appel de connecteur audienceFlags produisant des faits qui entraînent une règle de ciblage, avec une note d'échec.Ciblage de l'audienceespace de travailConnectéIdentité vérifiéepublicDrapeaux()Choisissez votre connecteurFAITSunpaid_invoices = 2RÈGLEnon_payées ≥ 1Les spectacles de campagneFails closed: client inconnu ou toute erreur → la campagne reste cachée.1TWO METHODSCatalogue + Drapeaux2LIVE STATENon payé, en attente, statut3FAIL-SAFENe montre jamais à la mauvaise personne
Votre connecteur répond aux faits de facturation en direct pour le visiteur connecté; le studio cible sur eux, et échoue fermé ainsi une offre de facturation ne parvient jamais à la mauvaise personne.

Comment ça fonctionne

1
Déclarez vos faits

Implémentez audienceCatalog() sur votre classe de connecteur. Elle renvoie une étiquette et la liste des clés auxquelles votre plateforme peut répondre, chaque clé apparaissant dans le menu déroulant du studio sous le nom de votre plate-forme.

2
Réponse pour un client

Implement audienceFlags(array $identity). OpsIQ calls it at delivery time with the VERIFIED logged-in visitor identity (from the widget identity token, the same identity the client chat AI uses). Return a flat key => value map.

3
Fait

L'onglet Ciblage de Promotion Studio développe une section "Client et facturation" répertoriant votre plate-forme; les administrateurs créent des règles telles que "facture_non_payée >= 1"; chaque fait devient aussi une variable de personnalisation telle que {unpaid_invoices}.

connector. php, le contrat complet de promo_audience
public function audienceCatalog(): array
{
    return ['label' => 'My Billing Platform', 'keys' => [
        ['key' => 'unpaid_invoices', 'label' => 'Unpaid invoices (count)', 'type' => 'number'],
        ['key' => 'pending_orders',  'label' => 'Pending orders (count)',  'type' => 'number'],
        ['key' => 'client_status',   'label' => 'Client status',           'type' => 'text'],
    ]];
}

public function audienceFlags(array $identity): array
{
    // $identity = verified token payload: ['email' => ..., 'id' => ..., 'name' => ...]
    $email = strtolower(trim((string)($identity['email'] ?? '')));
    if ($email === '') return [];
    $client = $this->api('GetClient', ['email' => $email]); // your platform call
    if (!$client) return []; // unknown client -> return [] (fails CLOSED)
    return [
        'unpaid_invoices' => (int)$client['unpaid_count'],
        'pending_orders'  => (int)$client['pending_orders'],
        'client_status'   => (string)$client['status'],
    ];
}

Règles du contrat

Annoncer la capacité

Ajouter 'promo_audience' Ajouter à votre connecteur capabilities() Le tableau préinstallé est utilisé pour que la plateforme et le marché l'indiquent comme étant capable d'audience (la découverte fonctionne également à partir de la présence de méthode, mais sa déclaration est le signal propre). connectors/whmcs Le connecteur est l'implémentation de référence complète.

Nomination des clés

Petites lettres snake_case, 2-60 Les clés non déclarées retournées par audienceFlags() sont toujours utilisables dans les règles, mais déclarez tout ce que vous supportez afin que les administrateurs puissent le voir.

L'identité est vérifiée

The $identity array comes from the signed widget identity token issued by the customer site at login, never from client-supplied fields. If your platform cannot resolve the identity, return an empty array.

Échec fermé · toujours

En cas d'erreur (API down, client not found, timeout) renvoie []. Une règle dont le fait est manquant ne permet pas d'afficher la campagne. Un popup ciblé sur la facturation ne doit jamais atteindre la mauvaise personne ; OpsIQ Cela s'applique aussi dans le règle matcher.

Résultats

La fonction audienceFlags() est appelée au plus une fois par connecteur et par page vue, et UNIQUEMENT lorsqu'une campagne publiée utilise réellement les règles de votre plateforme. Les visiteurs anonymes ne vous coûtent aucun appel. 1-2 API les appels; OpsIQ Memoizes dans la requête.

Opérateurs fournis gratuitement

Les administrateurs combinent vos clés avec =, !=, >, >=, <, <=, contient, est défini, est vide, vous ne fournissez que des valeurs.

Jetons de personnalisation

Chaque fait double comme une variable dans le texte de la campagne: {unpaid_invoices}, {client_status}, plus les intégrations. {first_name} and {client_email}. Les valeurs sont désinfectées avant le rendu.

Connecteurs de marketplace sans code

Faits automatiques

Déclarative (JSON-seulement) les connecteurs de marketplace obtiennent promo_audience GRATUITEMENT: si votre connecteur déclare des ressources clients/utilisateurs, factures, commandes ou abonnements, OpsIQ Dérive les valeurs customer_status, unpaid_invoices, amount_due, pending_orders, active_subscriptions et subscription_status à partir de vos actions de recherche existantes.

Catalogue personnalisé (settings.json)

Ajouter un objet public_capabilities · {"label": "Ma Plateforme", "keys": [{"key":"open_carts", "label", "Open carts", "type": «nombre»}}, pour contrôler exactement quels faits (et étiquettes) apparaissent dans le menu déroulant du studio.

Testez votre fournisseur

1
Activer le connecteur

Connecteurs > votre connecteur > Activer. Puis ouvrez l'onglet Ciblage de toute campagne. Votre plateforme doit apparaître sous "Client & facturation (connecteurs)".

2
Créer une règle

Ajoutez: Votre plateforme · une clé · >= · 1 et définissez "Seuls les clients connectés".

3
Vérifiez les deux directions

Connectez-vous à votre plateforme en tant que client qui correspond à la règle (la fenêtre contextuelle doit être affichée) et comme un client qui ne le fait pas (la Fenêtre contextouel doit rester masquée).

Lancez une campagne à partir de votre propre code (déclencheur personnalisé)

Pourquoi?

Au-delà des déclencheurs intégrés (délay, défilement, intention de sortie, oisiveté, clic, pages vues, chat / activité ticket), vous pouvez lancer une campagne depuis n'importe où dans votre site ou le front-end connecteur, après une étape de caisse réussie, quand un chariot est abandonné, lorsque votre SPA change d'itinéraire, etc.

Comment

Définir le déclencheur de campagne Personnalisé avec un nom d'événement (p. ex. checkout_failed), puis appelez le hook global depuis votre page:

Ajouter un lien vers votre site / connecteur
// Any campaign whose Custom trigger event matches will be evaluated
// (it still respects targeting, frequency caps and audience rules).
window.OpsIQPromo && window.OpsIQPromo.fire('checkout_failed');
💡
Il ne libère que le -When. La campagne doit toujours passer toutes les règles (geo, audience, consentement, capsules) avant qu'elle ne se manifeste.
Le guide d'utilisation complet (conception, blocs, analyses, A/B, publication) est disponible dans le centre d'aide de l'application sous Engage → Promotion Studio - 10 ans. La capacité ici est découverte automatiquement à partir de n'importe quel connecteur ENABLED dans les connecteurs/ ou marketplace_connectors/. Il n'y a rien à enregistrer. Expédiez les deux méthodes, et le studio fait le reste.
Connecteurs

Capacité de connecteur d'enquête (Contrat 2.2)

Le survey La capacité de fournir des adaptateurs d'identité client vérifiés, des données sur l'audience, des variables sûres et des candidats destinataires à Survey Studio permet à n'importe quelle plateforme. promo_audience et ne donne pas à un connecteur la propriété des sondages, réponses, analyses ou livraison de courrier électronique.

💡
La création est terminée et utilisable aujourd'hui: Connector Contract 2.2, SurveyConnectorInterface, le panneau de construction dédié, généré SurveyProvider.php, les métadonnées du paquet et l'isolation de conformité tout le navire. La consommation n'est pas encore câblée: SurveyConnectorRegistry L’intégrité du fournisseur n’apparaît donc pas dans l’interface utilisateur d’administration et aucun package de connecteur publié ne déclare la fonctionnalité. La publication des jetons signés Survey Identity Gateway, le ciblage et l’intégration des variables, la matérialisation de CRM Outreach et les premiers mappages de fournisseurs expédiés restent des phases distinctes.

Responsabilités du fournisseur

Catalogue d'audience et faits

Les faits typiques incluent order_count, last_order_status, cancelled_order _count, customer_created_at, active_subscription_count et open_ticket_count. Les valeurs canoniques sont des données de type facts qui peuvent être utilisées pour résoudre les problèmes d'ordres ou de tickets.

Catalogue et valeurs des variables

Déclarez les variables client, compte, commande, abonnement et support avec le type, la sensibilité et le contexte autorisé.

Notification des destinataires

Énumérez en option les candidats pour la prospection CRM avec des ID externes stables, des pages limitées, des curseurs déterministes et des métadonnées liées au consentement.

Identité

Acceptez l’identité uniquement à partir de Survey Identity Gateway après la signature du jeton, l’expiration, le but, le connecteur et la vérification de l’espace de travail.

État d'exécution

SurveyConnectorRegistry est conçu pour signaler les fournisseurs compatibles, bloqués et indisponibles sans exposer les paramètres, chemins d'accès, identités brutes ou messages d'exception. Un fournisseur bloqué ne peut jamais être invoqué. La surface de reporting n'est pas encore exposée dans l'interface utilisateur d'administration : aujourd'hui un fournisseur bloque est simplement inerte.

Règles de fail-closed

Les clés non déclarées, les types incorrects, les valeurs surdimensionnées, les décalages de sujet, les temps d'attente des connecteurs et les identités inconnues sont rejetés. Une règle de ciblage qui nécessite un fait indisponible ne correspond pas.

Porte de dégagement du constructeur

Contrat 2.2 expédie l'entrée de registre de capacité, interface, panneau de cartographie d'enquête, généré SurveyProvider.php, version de la fonctionnalité, fichier README/référence du développeur et fiches de conformité. Les profils PHP locaux, les profils Commerce, Helpdesk, pont SaaS et les connecteurs standard API l'incluent.

💡
La copie de la promotion est uniquement importable : le constructeur peut traduire les mappages de promotion compatibles une fois, enregistrer une copie complète appartenant à l'enquête et enregistrer la provenance.
Connecteurs

Capacité de rétroaction (Contract 2.2)

Le reply_feedback La capacité reflète les propres cotes par réponse d'une plate-forme en OpsIQ. Une étoile un client donne une réponse du personnel à l'intérieur WHMCS L'espace client de's atterrit sur la MÊME réponse dans le OpsIQ Le fil d'administration, avec la même puce, le crédit de l'agent, l'entrée de page Feedback et le calcul Team & Performance comme une note donnée sur un OpsIQ Un stockage, une puce, un pipeline ; le connecteur ne fait que traduire.

Le chemin d'écriture unique

Il y a exactement deux chemins d'entrée et une vérité. OpsIQ Les tickets de portail écrivent nativement, les tickets de plateforme passent par le connecteur et chaque évènement du noyau arrive via ReplyFeedback::recordMirrored(): les mêmes colonnes, règle du staff-only, une évaluation par réponse des dernières années, sémantique, timbre espace de travail et l'indexation de la voix du client le portail écrire utilise. Un connecteur n'écrit jamais les lignes de rétroaction elle-même.

Conformité (quatre dossiers, puis signer à nouveau)

1
connector_contract.json

Ajouter l'entrée capabilities. reply_feedback: version 1.0, le ReplyFeedbackConnectorInterface, les méthodes replyFeed backCatalog et pullReplyFeedBack, implique inbound_ticket.

2
settings.json

Ajouter reply_feedback à la liste des capacités. C'est ce que lit la découverte de connecteurs.

3
spec.json

Déclarez reply_feedback. modes (poll et/ou webhook) et l'échelle de notation de la plateforme. C'est ce que lit la barrière de conformité.

4
Classe d'exécution

Implémentez l'interface, listez reply_feedback dans capabilities(), puis signez à nouveau le paquet.

Responsabilités du fournisseur

Catalogue

Déclarer les modes, l'échelle de notation propre à la plate-forme (le noyau normalise vers le 1-5), et tous les jetons de réaction. Le catalogue doit être conforme aux spécifications.json.

Traduction de Pull

pullReplyFeedback retourne des événements canoniques : id ticket plate-forme, id réponse plate-formes, note, réaction/comment optionnelle, temps soumis et un event_id stable. Il lit et traduit. Il n'écrit jamais.

Idempotence

event_id est stable par feedback STATE, donc un évènement rejoué n'est pas jouable et une modification de classement remplace (les dernières victoires, comme le portail).

Discipline du curseur

Les pages sont délimitées et déterministes. Un curseur qui n'avance pas met fin à l'exécution. Le remplissage historique s'écoule comme une fenêtre roulante, jamais en un seul mouvement géant.

Sécurité de la sonde

Sans configuration, retourner une page complète vide au lieu de lancer. Le coureur de conformité sondes avec des arguments vides.

Résolution de fail-closed

Le noyau résout chaque événement en une réponse locale par le marqueur miroir que le miroir de ticket est déjà marqué (<slug>:<ticket>:reply:<reply>). Un événement qui ne peut être résolu est abandonné, jamais deviné; les commentaires ne se rapportent qu'aux réponses du personnel; et le crédit d'agent provient toujours de l'auteur existant de la réponse. inbound_ticket ou ticket_mirror.

Exemple de travail: WHMCS

WHMCS stocke les évaluations par étoiles de la zone client par réponse tblticketreplies.rating. The WHMCS Le connecteur déclare le mode poll avec un. 1-5 à l &apos; échelle, ticket_reply_ratings La commande relay dans son fichier de pont, et traduit chaque ligne en un événement dont les ids correspondent aux whmcs:<ticket>:reply:<reply> Après avoir mis à niveau le connecteur, recopiez le fichier de bridge sur le serveur WHMCS afin que la nouvelle commande y existe.

💡
Contrat de développement complet avec l'interface, les formes d'événements, les règles de normalisation et la liste de contrôle de conformité: doc/contracts/TICKET_REPLY_FEEDBACK_CAPABILITY.md Dans la rue OpsIQ Acceptation : noter une réponse à l’intérieur de la plateforme, attendre le sondage horaire, et la même réponse dans.OpsIQ La page d'accueil montre le jeton, la page de rétroaction le liste et un événement rejoué ne change rien.
Connecteurs

Marché des connecteurs

Le Marketplace vous permet de découvrir, d’installer et de publier des connecteurs créés par la communauté.

Marché
Marché des connecteursUne grille de cartes de connecteur communautaire avec des catégories, des boutons d'installation et des évaluations en étoiles.Marché des connecteursespace de travailRecherche de connecteurs…CalendaireCalendrierInstaller★ 4.8HubSpotCRMInstaller★ 4.6Chimpanzé du courrierCourrielInstaller★ 4.7Livres rapidesComptabilitéInstaller★ 4.5TwilioSMSInstaller★ 4.9NotionDocumentsInstaller★ 4.41DISCOVERConnecteurs de la communauté2INSTALLATIONEn un clic3PUBLISHSignez & soumettez le vôtre
Parcourez les connecteurs communautaires, installez en un clic ou signez et publiez vos propres niveaux de recherche, préinstallés et de marché.

Trouver et installer des connecteurs

1
Parcourir

Accédez à Connecteurs > Marketplace. Recherchez par nom, catégorie ou plateforme.

2
Examen

Vérifiez la description, les actions prises en charge et les évaluations.

3
Installer

Le package de connecteur est téléchargé et installé dans le dossier marketplace_connectors/.

4
Configurer

Activez-le dans Connecteurs, entrez les informations d'identification API et testez.

Publier un connecteur

1
Construire et tester

Utilisez le Connector Builder. Vérifiez que toutes les actions fonctionnent.

2
Paquet

Générer un profil.json, actions.json, la connaissance.json, et les fichiers PHP.

3
Signer

Run php tools/sign_connector.php <slug> to sign ONE package (it also accepts a path). It does not boot OpsIQ, so give it the key: either --key=<secret> or the OPSIQ_CONNECTOR_SIGNING_KEY environment variable, otherwise it stops with "No signing key available". tools/resign_all_connectors.php re-signs EVERY package on the install and reads the key from settings by itself, but it can also mint a NEW install-wide signing key, so reach for it only when that is what you want.

4
Soumettre

Téléchargez-le via le flux de soumission du marché pour examen.

Deux niveaux de connecteur

connecteurs/ — ce qui fonctionne réellement

Tout est en direct : les connecteurs qui expédient avec OpsIQ, tout ce qui est installé sur le marché et tout ce que publie le Connector Builder sur cette installation.

marketplace_connectors/ — où les paquets sont créés

La SOURCE d'édition pour les paquets de marché de premier parti. Ce n'est pas une racine découverte: rien ici n'y est en direct jusqu'à ce qu'il soit emballé, signé, ensemencé dans le catalogue et installé, à quel moment une copie atterrit dans des connecteurs/.

💡
Regardez dans les deux endroits. Un paquet que vous avez écrit sous marketplace_connectors/ n'est pas la copie qui fonctionne — l'installation de copies dans des connecteurs/, et seulement cette copie est découverte à l'exécution.Stripe, BigCommerce, Magento2, PrestaShop, OpenCart, Amazon SES, Postmark et Resend sont tous des paquets de marché: installer un avant de s'attendre à le trouver dans Connectors.
Développeur

API et constructeur de webhook

The API et Webhook Builder vous permet de créer des.API Points de terminaison et écouteurs webhook à l'intérieur OpsIQ sans écrire du PHP brut.

API constructeur
API et constructeur de webhookUn constructeur qui choisit un type de déclencheur (webhook entrant, planning, événement, manuel) qui alimente une action configurable.API & constructeur de webhookespace de travailDÉCLENCHEURWebhook entrantHoraire (cron)OpsIQManuelDécisionMapper les champs entrants →Créer un ticket / notifier / appeler APIEnregistrer le point de terminaison1DÉCLENCHEURSWebhook · calendrier · événement · manuel2NO RAW PHPConstruit dans l'interface utilisateur3ACTIONMapper les champs, puis exécuter
Construire des paramètres sans PHP brut : choisissez un déclencheur (en ligne, calendrier, événement ou manuel), puis mapez les champs vers une action.

Déclencheurs

Événement

Courir quand quelque chose se passe dans. OpsIQ, ou lorsqu'un système externe affiche un évènement correspondant à votre webhook. URL. Tapez le nom de l'événement, par exemple ticket.created.

Calendrier

Utilisez l'un des événements d'intervalle intégrés comme nom de l'événement: cron. minutely, cron. hourly ou cron. daily L'écran Actions et déclencheurs a des boutons pour ceux-ci, donc vous n'avez pas à les retenir.

Phrase

Exécuter quand un administrateur demande à l'IA de le faire en langage clair. Ajouter la phrase qui devrait correspondre, par exemple trouver client.

Webhook entrant

Un système externe envoie un HTTP POST à votre OpsIQ Webhook URL Tout déclencheur à l'écoute de cet événement est activé.

Ne l'exécutez que parfois: conditions

Un déclencheur d'événement peut contenir des conditions, de sorte qu'il ne s'exécute que lorsque les données entrantes correspondent. Sans conditions, il s'exerce à chaque fois que l'évéement se déclenchait.

Champ

Un chemin d'accès aux données de l'événement. Utilisez un point pour les valeurs imbriquées, par exemple customer. email.

Correspond à tout ou n'importe quoi

Choisissez si toutes les règles doivent correspondre, ou seulement une d'entre elles.

Tests de texte

est égal, n'est pas égal à, contient, ne contient pas, commence par, est l'un de, n’est pas l'une de.

Tests de nombre

Les nombres écrits en tant que texte sont toujours comparés correctement. Les nombres de caractères sont toujours utilisés pour les comparaisons.

Tests de présence

est présent, est manquant, est vide, n'est pas vide.

Seul le page l'ingénieur sur appel pour les tickets urgents

Scénario :
Event ticket.created, with one rule: priority equals urgent.
Que faire:

L'action s'exécute pour les tickets urgents et est ignorée pour tout le reste. Aucun filtrage nécessaire de votre côté.

💡
Si vous laissez les règles vides, le déclencheur s'exécute sur chaque événement correspondant, ce qui est le même comportement qu'avant l'existence des conditions.

Actions

Envoyer un webhook

Envoyer HTTP POST à un URL externe avec une charge utile personnalisée.

Créer un ticket

Créez un ticket d'assistance avec le département, l'objet et le message spécifiés.

Envoyer un email

Envoyez un e-mail avec un modèle personnalisé.

Mettre à jour l'enregistrement

Mettre à jour un enregistrement client, ticket ou CRM.

Exécuter l'action de connecteur

Exécutez une action enregistrée à partir d'un connecteur activé avec ses règles d'autorisation et de confirmation du connecteur.

Run OpsIQ Général de l'armée française API action

Recherchez le nom complet General API Les champs, les étendues, les autorisations, la confirmation, l'idempotence et le support de test proviennent du contrat d'action en direct ; le flux de travail s'exécute dans son espace de travail enregistré et son contexte administrateur.

Envoyer une demande provider-native API

Utiliser un connecteur Native API Lu ou confirmé Native API Les informations d'identification restent à l'intérieur du connecteur et seuls les chemins de fournisseur relatifs sont acceptés.The credentials remain inside the connector and only relative provider paths are accepted.

Le constructeur d'Actions & Triggers, /api/v1.php, OpenAPI et Postman utilisent le même ActionContractRegistry, donc une action sélectionnable ne peut pas dériver de la documentation runtime.
Développeur

Livre de cuisine pour les triggers

Des recettes d'action de déclenchement prêtes à l'emploi pour les automatismes courants.

Comment ça fonctionne
Livre de cuisine pour les triggersUn flux de recette : un webhook uptime. down passe par un filtre de production, puis s’étend pour créer un ticket urgent et avertir Slack.uptime.downMonitor webhooksi produitfilterCréer un ticket urgentAvertir Slack #ops
Livre de cuisine pour les triggers

Créer automatiquement un ticket à partir de la surveillance

Scénario :
Monitoring system sends POST when server goes down.
Que faire:

Trigger: Inbound webhook Condition: payload.status = "down" Action: Create ticket · Dept: Technical, Subject: "Server {{payload.hostname}} down", Priority: Urgent

Notification Slack sur les commandes importantes

Scénario :
Slack message every time a customer places an order over $100.
Que faire:

Trigger: Event (order.completed) Condition: order.amount > 100 Action: Send webhook to Slack incoming webhook URL with order details

Digest hebdomadaire par courriel

Scénario :
Summary email to management every Monday at 9am.
Que faire:

Trigger: Schedule (Monday 09:00) Action: Send email with last week's stats pulled from the REST API

Escalade des tickets obsolètes

Scénario :
If a ticket has no reply for 24 hours, assign to team lead.
Que faire:

Trigger: Schedule (every hour) Condition: ticket.status = "Open" AND ticket.last_reply_age > 86400 Action: Assign to team-lead, add internal note

Développeur

Construire votre première action

Cette procédure crée une action de connecteur simple à partir de zéro.

Actions de construction
Construire une actionUn formulaire de définition d'action : name lookup_order, une requête GET à/orders/{id}, un paramètre dactylographié id et un passage200test.Nouvelle actionespace de travailNouvelle actionNomlookup_orderDemandeGET/orders/{id}Paramsid · chaîne200 · commande trouvée1DEFINENom, méthode, paramètre2PARAMSEntrées tapé3ESSAIRésultats en direct 200
Construisez une action à partir de zéro. Nommez-la, définissez la méthode et le paramètre, déclarez les paramètres dactylographiés, et testez-le à un live 200.

Deux types d'action

Avant de commencer, décidez lequel vous voulez utiliser. Les deux sont configurés dans le même écran.

Appelez un API externe

L'action envoie une requête HTTP à votre plateforme. Choisissez cette option lorsque OpsIQ a besoin de vous contacter et d'agir de votre côté.

Exécuter une action de connecteur

L'action exécute quelque chose qu'un connecteur installé fournit déjà. Choisissez cette option lorsque le travail est déjà disponible et que vous voulez simplement le déclencher. Vous choisissez l'action du connecteur dans une liste, donc il n'y a rien à câbler.

La deuxième option est de réutiliser tout ce que vos connecteurs peuvent déjà faire sans en créer à nouveau : lire un fil de discussion de ticket, rechercher un client, importer des contacts, etc. Choisissez l’action du connecteur dans la liste déroulante et vous avez terminé.
1
Planifier l'action

Exemple : "lookup_product". Cherchez un produit par son nom, son prix de retour, son stock et sa description.

2
Définir dans les actions.json

Ajouter la définition de l'action:

actions.json — la forme réelle manifeste
{
  "actions": [
    {
      "action_id": "lookup_product",
      "label": "Look up a product",
      "category": "Catalogue",
      "description": "Find a product by name and return price, stock and description.",
      "scope": "admin",
      "requires_confirmation": false,
      "is_destructive": false,
      "delivery_type": "http",
      "http_method": "GET",
      "http_url": "/api/products/search",
      "parameters": [
        { "name": "name", "type": "string", "required": true, "in": "query",
          "description": "Product name to search for" }
      ],
      "returns": [
        { "alias": "id",          "path": "data.id",             "type": "string" },
        { "alias": "name",        "path": "data.name",           "type": "string" },
        { "alias": "price",       "path": "data.price",          "type": "number" },
        { "alias": "stock",       "path": "data.stock_quantity", "type": "number" }
      ]
    }
  ]
}
⚠️
Trois choses qui font une action ne s'enregistrent pas du tout. action_id est REQUIS et doit être2à100Le manifeste est un objet avec une LIST "actions", non une carte clé par nom d'action. Et le mapping des réponses est "retourne" avec les chemins DOTTED (data.id), pas JSONPath ($.data .id) — il n'y a pas de "réponse_mapping", "méthode", "point d'arrivée" ou "params" dans le registre.
3
Essai avec essai à sec

Dans l'étape de révision du Constructeur de connecteurs, appuyez sur Dry run. Il exécute la liste complète de vérification de conformité contre votre paquet et, lorsque vous avez fourni des informations d'identification, fait un test de connexion réel.

4
Vérifier l'utilisation de l'IA

Demandez à l'IA d'administration: "Recherchez le produit Widget Pro." L'IA devrait trouver et exécuter l'action.

⚠️
Ajout d'une action aux actions.jsonne crée PAS de route AJAX, il n'y a donc rien à régénérer.OpsIQlorsque le connecteur est activé ou que ses paramètres sont sauvegardés: réenregistrer le connecteur et la nouvelle action apparaît. tools/gen_route_registry.php couvre l'expédition admin AJAX et n'a aucune incidence sur les actions de connecteur.
Développeur

Points de terminaison d'événement entrant

Les points de terminaison entrants acceptent JSON signé d'un autre système et le transforment en activité de contact dédupliquée pouvant alimenter les échéanciers, la notation et les flux de travail.

Écran de produit
Points de terminaison entrantsChaque source entrante a son propre URL, secret, mapping et résultat d'activité récente.Points de terminaison entrantsespace de travailSOURCES5ACCEPTED12.4kREJECTED18VUE DE L'ESPACE DE TRAVAIL EN DIRECTPlateforme de facturationÉvénements d'abonnementEn bonne santéAppli de produitÉvénements d'inscription et d'utilisationEn bonne santéID de l'événementprovider_event_idDédoublementSignatureX-OpsIQ-Signature entranteHMAC1CREATE SOURCEURL et secret2MAP PAYLOADE-mail, événement et ID3VERIFYHMAC puis ingérer
Chaque source entrante a son propre URL, secret, mapping et résultat d'activité récente.

Créez une source par système d'envoi. OpsIQ génère un URL/token et secret. Envoyer JSON avec Content-Type: application/json et signez le corps brut exact en utilisant HMAC-SHA256:

X-OpsIQ-Inbound-Signature: sha256=<hex hmac>

Mappent les chemins JSON pour l'e-mail du contact, le nom de l'événement et l'ID d'évéement optionnel. L'ID de l’événement est la clé de déduplication préférée. L'activité acceptée entre dans la chronologie des contacts et peut affecter le score des prospects, les segments, le cycle de vie et les workflows.

Rejetez les signatures non valides avant d'analyser les données métier. Rotation d'un secret en mettant à jour les deux côtés dans une fenêtre contrôlée; ne pas consigner le secret.

Développeur

Opérations de webhook sortantes

L'administration des webhook sortants crée des abonnements signés, teste les points de terminaison et surveille la livraison asynchrone et l'intégrité des réessais.

Écran de produit
Webhooks sortantsLa page webhook sortante répertorie les points de terminaison HTTPS, les abonnements à des événements, l’état de la livraison et un test signé en un clic.Webhooks sortantsespace de travailENDPOINTS7SUCCESS99.2%RENFORCEMENT4VUE DE L'ESPACE DE TRAVAIL EN DIRECTMiroir de CRMContactez-nous.* et faites une offre.*En bonne santéBus de soutienEnvoyer un ticket.* et chat.*En bonne santéEntrepôt de données*RéessayerTest de livraisonÉchantillon de charge utile signéPrêt1SUBSCRIBEHTTPS URL et les évènements2AUTHENTICATESignature HMAC3OBSERVERail de livraison et réessais
La page webhook sortante répertorie les points de terminaison HTTPS, les abonnements à des événements, l’état de la livraison et un test signé en un clic.

Les administrateurs complets créent un point de terminaison HTTPS, choisissent des événements spécifiques ou le caractère générique, stockent le secret en toute sécurité et envoient un test. OpsIQ Signe la charge brute avec HMAC-SHA256:

X-OpsIQ-Signature: sha256=<hex hmac>

La livraison est asynchrone et une nouvelle tentative de livraisons sera effectuée automatiquement après environ 10 minutes. 1minute, 5 minutes, 30 minutes,2heures et 12 HeuresUtilisez le rail de livraison récente pour inspecter l'état, le code de réponse et le nombre de tentatives.

Votre récepteur doit être idempotent car tout système asynchrone peut redélivrer une réponse 2xx uniquement après acceptation durable.

Développeur

Webhooks

Les webhooks permettent aux systèmes externes de notifier OpsIQ quand quelque chose se passe (inbound), et à _OpsIQ d'avertir les systèmes extérieurs lorsque quelque chose arrive en interne (outbound).

Webhooks
Webhooks sortantsL'écran des webhooks sortants: une table de points d'extrémité avec le nom, les événements abonnés, les points récents du statut de livraison et un bouton Send-test.Webhooks sortantsespace de travailPoints d &apos; extrémité+ Enregistrer le point de terminaisonNOMÉVÉNEMENTSLIVRAISONSlack #alerte-venteshttps://hooks.slack.com/…Création, vente et commerceEssaiMiroir de CRMhttps://api.acme.com/hookContactez-nous.*, ticket. createdEssaiZapierhttps://hooks.zapier.com/…chat.startedEssai1ENDPOINTSNom, événements, URL2SIGNEDHMAC + réessai automatique3SEND TESTVérifier les livraisons
L'écran de webhooks réel sortant : chaque point final avec ses événements, la santé de la livraison récente, et un seul clic Envoyer test, signé et retrié.

Webhooks sortants

Souscription

Allez dans Paramètres > Webhooks. Ajoutez un point de terminaison URL et sélectionnez les événements à recevoir.

Événements

ticket. created, ticket. replied, chat. started, message. chat, commande. complétée, crm. deal. stage_changed, contact. create, etc.

Réessayer

Les livraisons ont échoué avec un retour exponentiel. Après 15 échecs consécutifs, le point de départ est automatiquement désactivé.

Signature

Chaque requête inclut une signature HMAC dans X-OpsIQ-Signature. Toujours vérifier.

Protection de SSRF

OpsIQ N'enverra pas à privé/interne IPs (127.x, 10.x, 172.16.x, 192.168.x, 169.254.169.254).

Livraison asynchrone

Les webhooks sont livrés via la file d'attente des tâches, ne bloquant pas les opérations OpsIQ.

ID d'événement stable

Chaque événement possède un event_id unique qui reste le même lors des tentatives de déduplication.

Vérifier les signatures de webhook

PHP · vérifier la signature du webhook
<?php
$payload   = file_get_contents("php://input");
$signature = $_SERVER["HTTP_X_OPSIQ_SIGNATURE"] ?? "";
$secret    = "opsiq_whsec_your_secret";

$expected = hash_hmac("sha256", $payload, $secret);
if (!hash_equals($expected, $signature)) {
    http_response_code(401);
    exit(json_encode(["error" => "Invalid signature"]));
}

$event = json_decode($payload, true);
// Process the event...
http_response_code(200);
echo json_encode(["received" => true]);
Node. js, vérifier la signature webhook
const crypto = require("crypto");

app.post("/opsiq-webhook", (req, res) => {
    const payload  = JSON.stringify(req.body);
    const sig      = req.headers["x-opsiq-signature"];
    const expected = crypto.createHmac("sha256", "opsiq_whsec_xxx")
        .update(payload).digest("hex");

    if (!crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(sig || "")))
        return res.status(401).json({ error: "Invalid signature" });

    console.log("Webhook:", req.body);
    res.json({ received: true });
});
Comment tester les webhooks localement?+

Utilisez ngrok pour exposer votre serveur local. Définissez le point de terminaison du webhook sur votre ngrok URL.

Que faire si mon point de terminaison est temporairement en panne?+

OpsIQ Si votre point de terminaison récupère dans la fenêtre de réessai, aucun événement n’est perdu.

Développeur

Clés API

API Les clés authentifient les requêtes vers le. OpsIQ REST API. Chaque clé a des autorisations d'étendue.

Clés API
Clés APIL'écran des clés API: un panneau de problèmes avec les puces d'accès et de portée, à côté d'une liste de clés masquées existantes avec des boutons de révocation.Clés APIespace de travailÉmettre une cléAccèsLecture seuleRestreintPortéescontacts.readtickets.readevents.writeClé de questionVos clés en mainIntégration de Zapieropq_•••4f2aRévoquerApplication mobileopq_•••91c7RévoquerExportation de Analyticsopq_•••2db0Révoquer1SCOPEDEn lecture seule ou restreint2PER-ACTIONChoisir des portées exactes3REVOCABLEFaites pivoter à tout moment
L'écran de touches réel API : délivrez une clé en lecture seule ou restreinte en sélectionnant des champs exacts, et retirez n'importe quelle clé à tout moment.

Création d'une clé API

1
Allez dans Paramètres > API Touches

Accédez à la gestion des clés API.

2
Cliquez sur Créer une clé

Donnez-lui un nom descriptif.

3
Sélectionner les champs d'application

Les étendues sont fournies en paires de lecture et d'écriture par zone, de sorte qu'une intégration de rapports peut être autorisée à lire uniquement les données nécessaires.

Portées disponibles

Choisissez l'ensemble le plus étroit qui fait le travail. admin Il satisfait à tous les objectifs ci-dessous, alors n'utilisez-le que lorsque vous avez réellement besoin d'un accès étendu.

Création de crm. read / crm

Contacts, entreprises, offres, activités, segments, outreach, conversions, cycle de vie et webhooks CRM.

tickets. read / tickets. write

Listez et lisez les tickets et leurs messages; répondez, mettez à jour, ouvrez et exécutez des opérations de file d'attente en vrac.

conversations. read / conversations

Lisez les conversations en direct et l'historique des messages; envoyez des messages, assignez et modifiez le statut.

kb. read / kb. write

Entrées de la base de connaissances.

Chat. read / chat. write

Modèles de réponses sauvegardés.

connectors.read

Découvrez quels connecteurs sont installés, ce qu'ils peuvent faire et testez leurs informations d'identification.

automations.read

Voir vos actions, déclencheurs et leur historique d'exécution.

departments.read

Départements disponibles pour le routage.

notifications.read

Notifications pour un opérateur nommé.

analytics.read

Sections de rapport, exportations CSV et définitions de rapport planifiées.

Site_intelligence. read

Sites surveillés et leurs rapports SEO.

files.read

Liens de téléchargement signés pour les pièces jointes.

status.write

Composants de la page d'état et incidents.

writing

Aides à l’écriture d’IA: rédiger, résumer, traduire, réécrire, composer, analyser.

administrateur

Tout, y compris un petit nombre d'actions sensibles qui sont délibérément inaccessibles par une portée étroite: supprimer un contact, modifier les paramètres de confidentialité et lire le journal des accès.

💡
Appelez meta. actions avec votre clé pour voir exactement les actions qu'il peut exécuter sur votre installation, ce qui est toujours plus fiable que de travailler à partir d'une liste.

Niveaux d'accès

Tout

La clé peut appeler tout ce que ses portées permettent.

Lecture seule

Le choix le plus sûr pour les rapports, les tableaux de bord et tout ce qui ne devrait jamais modifier les données.

Restreint

Vous listez les actions exactes que la touche peut appeler, tout le reste est refusé, même dans un périmètre autorisé.

4
Copier la clé

Affichée une fois. Commence par "opq_". Stockez-la en toute sécurité.

🚫
Ne jamais partagerAPIclés en code public, côté clientJavaScript, ou contrôle de version. Utilisez des variables d'environnement.
Développeur

Connectez votre site web

The OpsIQ Le widget est un. JavaScript Un extrait de code que vous ajoutez à votre site Web pour le suivi, le chat AI, la création de tickets et l'identification des clients.

Comment ça fonctionne
Connectez votre site webUne balise de script d'une ligne sur la gauche et, à droite, une page Web avec la bulle de chat OpsIQ apparaissant dans le coin.<!-- paste before </body> --><script src="https://cdn.opsiq.io/w.js" data-site="ws_8a2f" async></script>
Connectez votre site web

Installation de base

Extrait de widget basique
<script src="https://your-opsiq-domain.com/widget.php"
  data-site-key="site_abc123"
  async></script>

Paste before the closing </body> tag. The script loads asynchronously and does not block page rendering.

Attributs de configuration

data-site-key

Obligatoire. Votre clé de site depuis Sites connectés.

data-mode

Facultatif. "chat" (par défaut), "tickets", ou "les deux".

data-position

Facultatif. "bottom-right" (par défaut) ou "botton-left".

data-color

Code hexadécimal de la couleur primaire.

data-greeting

Facultatif. Message de bienvenue initial.

data-language

Langue de l'interface utilisateur: "en", "es", "fr", "de", "pt", "ar", etc.

data-identity-token

Jeton d'identité signé généré par le serveur.

Soutien de SPA

Suivi manuel de l'itinéraire SPA
// Manually notify OpsIQ of a route change (for custom routers)
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["pageview", {
  url: window.location.href,
  title: document.title,
}]);

Règles du CSP

Règles CSP pour le widget
script-src 'self' https://your-opsiq-domain.com;
connect-src 'self' https://your-opsiq-domain.com;
frame-src https://your-opsiq-domain.com;
Le widget ralentit-il mon site?+

Non. Sous 15 KB gzipped, chargement asynchrone après le contenu de la page.

Puis-je personnaliser l'apparence?+

Utilisez data-color pour la couleur primaire. Contactez le support pour les options de remplacement CSS.

Développeur

Widget installer des recettes

Guides d'installation spécifiques à la plateforme.

Comment ça fonctionne
Widget installer des recettesCartes d'installation de plateforme pour WordPress, Shopify and Google Tag Manager, chacun disant où ajouter le widget.Groupe de travail des politiquesWordPressInstallez le plugin, entrezEntrez votre clé de site, enregistrez.BoutiqueShopifyCollez l'extrait danstheme.liquid avant /body.GTMGestionnaire de balisesBalise personnalisée HTML, toutes les pages.
Installer des recettes

WordPress

Scénario :
Add to all pages of a WordPress site.
Que faire:

Option 1: Edit theme footer.php, paste snippet before </body>. Option 2: Use "Insert Headers and Footers" plugin > Scripts in Footer. Option 3: Use a child theme footer.php to survive theme updates.

Shopify

Scénario :
Add to your Shopify store.
Que faire:

Online Store > Themes > Edit Code > Layout > theme.liquid. Paste before </body>. Save.

React / Next. js

Scénario :
Add to a React or Next.js app.
Que faire:

In Next.js, use next/script in app/layout.tsx: import Script from "next/script"; <Script src="https://your-opsiq.com/widget.php" data-site-key="site_abc" strategy="lazyOnload" />

WHMCS

Scénario :
Add to your WHMCS client area.
Que faire:

Sélectionnez Configuration > Paramètres généraux > Autre > Contenu du pied de page global. Collez l'extrait ou modifiez le fichier footer. tpl de votre modèle.

Google Tag Manager

Scénario :
Add via GTM.
Que faire:

Créer une balise personnalisée HTML, coller l'extrait. Déclencheur: Toutes les pages. Publier.

Développeur

Admin widget dans votre moteur de recherche (un contrat, n'importe quelle plateforme)

Embed the OpsIQ admin assistant — admin chat, ticket inbox and AI Writing — inside YOUR OWN platform's admin panel, so your team never leaves their tools. Like visitor identity and portal SSO, this is ONE generic contract implemented in ~15 lines of your platform's server code — the same pattern Zendesk, Intercom and Discourse use for SSO. There is no per-platform plugin to wait for: any stack that can compute an HMAC can do this today.

Étape 1 — la ligne d'intégration

De Sites éloignés→votre site→Codes, copiez la ligne de chargeur et ajoutez-la aux pages de votre panneau d'administration (y compris le pied de page, le modèle de mise en page ou une boîte JS personnalisée uniquement par admin) :

L'intégration d'une ligne
<script async src="https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=SITE_KEY&identity_token=TOKEN_FROM_STEP_2"></script>

Étape2— direOpsIQqui est connecté (serveur signé)

Seule votre application sait dans quel admin est connecté — ce n'est pas une lacune, c'est le modèle de sécurité. Votre serveur génère un jeton signé à courte durée de vie de votre propre session, exactement comme le jeton d'identité du visiteur, signé avec le même secret webhook site:

PHP · signe l'identité de l'administrateur depuis votre session
<?php
$secret  = "opsiq_whsec_your_site_secret";   // Remote Sites → Codes
$payload = json_encode([
    "site_key"      => "SITE_KEY",
    "iat"           => time(),
    "exp"           => time() + 6 * 3600,
    "authenticated" => true,          // REQUIRED, top level — see note below
    "platform"      => "your-platform",
    "admin"    => [
        "id"            => (string)$admin->id,      // from YOUR session
        "name"          => $admin->name,
        "username"      => $admin->username,
        "email"         => $admin->email,
        "role"          => $admin->role,
        "authenticated" => true,
    ],
]);
$payload64 = rtrim(strtr(base64_encode($payload), "+/", "-_"), "=");
$identityToken = $payload64 . "." . hash_hmac("sha256", $payload64, $secret);
// Put $identityToken into the embed line (identity_token=…), or expose it as
// window.OpsIQAdminIdentityToken before the loader script.
Accès par administrateur, automatiquement

Chaque administrateur qui se connecte à votre plateforme est assorti individuellement:OpsIQ's par-admin access gate résolve le nom d'utilisateur du jeton + email contre unOpsIQ(Page de l'équipe; utilisez la liste des «messages d'échange» de votre agent lorsque les courriels de la plate-forme diffèrent) et applique les permissions de cet agent dans son espace de travail, son département et sa boîte de réception.OpsIQ; aucun changement d'intégration.

Rôles

Quelle que soit la chaîne de rôle que votre plate-forme envoie est affichée sur leOpsIQpartie pour l'attribution; l'autorisation provient toujours de laOpsIQagent record, jamais du rôle affirmé.

Pourquoi ne pas lire notre cookie de connexion ?

Les navigateurs n'envoient jamais votre cookie d'administration à une autre origine — aucun fournisseur ne peut simplement détecter votre domaine de connexion. Chaque produit sérieux résout cela de la même manière: vos chèques de serveur, signé. C'est l'ensemble du contrat.

Mode simple (simple-boutiques administratifs)

Sauter l'étape2et utiliser le jeton statique des sites éloignés→Codes dans la ligne de chargeur (token=... au lieu d'identity_token =...).Le widget fonctionne avec l'identité partagée de l'espace de travail; la porte par administrateur peut rester imposée plus tard lorsque l'équipe grandit.

Le authenticated drapeau — mettre au niveau TOP

Ce drapeau est l'affirmation de votre serveur qu'un humain est vraiment connecté, etOpsIQrefuse tout jeton sans elle. "authenticated" => true beside site_key/iat/exp, PAS seulement à l'intérieur de admin objet. Current OpsIQ accepte dans l'une ou l'autre position, mais les versions plus anciennes ne lisent que le niveau supérieur — et l'échec est trompeur: liste de conversation, historique et non lu tout authentifiant bien pendant chaque chat tourner réponses "Accès administratif requis", qui ressemble à un bug de session et ne l'est pas. Si vous voyez exactement cette scission, cochez d'abord ce drapeau.

Hygiène symbolique

Se connecter sur le serveur seulement, jamais dans le navigateurJavaScript. Garder l'exp courte (minutes à heures);OpsIQles jetons périmés et à terme, et la signature lie le jeton à votre clé de site.

Implémentations de référence

LesWHMCSle module fait cela automatiquement à partir de laWHMCSsession d'administration; le fichier de bridge du connecteur Botble Hotel le fait à partir de la session Laravel (op=admin_identity). Tous deux sont juste ce contrat dans le dialecte de leur plateforme — copiez la plus proche de votre pile.

Câble à page zéro (sonde déclarée par le connecteur)

Lorsque votre connecteur OpsIQ stocke votre point de départ d'identité dans son admin_identity_probe_url la ligne PLAIN chargeur est toutes vos pages d'administration nécessaires: le widget découvre la sonde depuis le connecteur, l'appelle avec votre clé de site + jeton widnet, et authentifie chaque admin automatiquement. data-identity-endpoint attribut ou window.OpsIQAdminIdentityEndpoint.

Mise en œuvre du critère d'identité sur Laravel (notes hard-won)

Si votre plateforme est Laravel (Botble, Bagisto, applications personnalisées) et que votre terminal est un fichier autonome qui lance le cadre pour lire l'administration connectée, trois détails vous permettront de gagner des heures — chacun a produit une véritable défaillance de production avant qu'elle ne soit apprise:

Reliure la demande AVANT le bootstrap

Vos fournisseurs de services peuvent résoudre request du conteneur pendant la botte. Le cycle de vie de Laravel relie la requête capturée première chose à l'intérieur Kernel::handle() — de refléter cet ordre: $app->instance('request', Request::capture()) QUELLES SONT LES INFORMATIONS A CONNAITRE AVANT $kernel->bootstrap()ou tu as "La classe cible [demande] n'existe pas".

Le préfixe de la session-cookie est HMAC-clé

Laravel moderne préfixe les valeurs des cookies avec un HMAC calculé avec la clé de l'application (CookieValuePrefix) — une sha1(name."v2") ne peut jamais correspondre. CookieValuePrefix::validate($name, $decrypted, $keys), avec un recul structurel (40hexagonale + | en position40). Tell: une session id plus longue que40les caractères gras (81= préfixe toujours attaché) et une session qui ne se charge que _token dedans.

Où vit le login

Le timbre d'auth est login_<guard>_<sha1(guard class)> — pour le web guard par défaut: 'login_web_' . sha1(Illuminate\Auth\SessionGuard::class). Scanner n'importe quel login_* clé numérique comme un retour pour les gardes personnalisés.

Déboguer comme le pont

Navire a debug=1 mode qui nomme l'ÉTAPE défaillant et l'exception — un attrape-tout aveugle rendu un déploiement en direct non diagnostiqué. Le pont Botble (de v1._0.7) est la référence: marqueurs d'étape au noyau/bind/bootstrap/decrypt/session/auth/db.

Laravel · point final de l'identité complète (copie, définir les deux constantes, fait)
<?php
/* identity endpoint · LARAVEL (Botble, Bagisto, any Laravel admin)
 * Drop this in your PUBLIC web root, e.g. /opsiq-identity.php
 * Answers: {"success":true,"authenticated":true,"admin":{...},"identity_token":"..."} */
define("OPSIQ_SITE_KEY", "SITE_KEY");
define("OPSIQ_SITE_SECRET", "opsiq_whsec_your_site_secret");   // Remote Sites → Codes

header("Content-Type: application/json");
$step = "boot";
try {
    require __DIR__ . "/../vendor/autoload.php";
    $app = require_once __DIR__ . "/../bootstrap/app.php";

    $step = "bind";
    // ORDER MATTERS: bind the request BEFORE bootstrapping, or providers that
    // resolve "request" during boot throw "Target class [request] does not exist".
    $request = Illuminate\Http\Request::capture();
    $app->instance("request", $request);

    $step = "bootstrap";
    $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
    $kernel->bootstrap();

    $step = "session";
    $app["session"]->driver()->setId($request->cookie(config("session.cookie")));
    $app["session"]->driver()->start();

    $step = "auth";
    $user = auth()->guard("web")->user();   // use YOUR admin guard name
    if (!$user) {
        echo json_encode(["success" => false, "authenticated" => false, "error" => "no admin session"]);
        exit;
    }

    $step = "sign";
    $admin = [
        "id"            => (string)$user->id,
        "name"          => (string)($user->name ?? $user->username),
        "username"      => (string)($user->username ?? $user->email),
        "email"         => (string)$user->email,
        "role"          => (string)optional($user->roles->first())->name,
        "authenticated" => true,
    ];
    $payload = json_encode([
        "site_key"      => OPSIQ_SITE_KEY,
        "iat"           => time(),
        "exp"           => time() + 6 * 3600,
        "authenticated" => true,          // TOP LEVEL — required
        "platform"      => "laravel",
        "admin"         => $admin,
    ], JSON_UNESCAPED_SLASHES);
    $p64   = rtrim(strtr(base64_encode($payload), "+/", "-_"), "=");
    $token = $p64 . "." . hash_hmac("sha256", $p64, OPSIQ_SITE_SECRET);

    echo json_encode(["success" => true, "authenticated" => true,
                      "admin" => $admin, "identity_token" => $token]);
} catch (\Throwable $e) {
    // debug=1 names the failing STEP — never ship a blind catch-all
    $err = ($_GET["debug"] ?? "") === "1"
        ? get_class($e) . " at [" . $step . "]: " . $e->getMessage()
        : "identity unavailable";
    echo json_encode(["success" => false, "authenticated" => false, "error" => $err]);
}

Le même paramètre sur d'autres piles

Seul le "qui est connecté?" change de ligne — le bloc de signature est partout identique. Signez sur le serveur, jamais dans JavaScript.

WordPress · WHMCS· Symfony · PHP simple — échangez la recherche, gardez le signataire
<?php
/* The ONE helper every platform shares. Keep it verbatim. */
function opsiq_identity_token(array $admin, string $siteKey, string $secret, string $platform): string {
    $payload = json_encode([
        "site_key"      => $siteKey,
        "iat"           => time(),
        "exp"           => time() + 6 * 3600,
        "authenticated" => true,          // TOP LEVEL — OpsIQ refuses the token without it
        "platform"      => $platform,
        "admin"         => $admin + ["authenticated" => true],
    ], JSON_UNESCAPED_SLASHES);
    $p64 = rtrim(strtr(base64_encode($payload), "+/", "-_"), "=");
    return $p64 . "." . hash_hmac("sha256", $p64, $secret);
}

/* ── WORDPRESS ─────────────────────────────────────────────────────────── */
require_once ABSPATH . "wp-load.php";
if (!current_user_can("manage_options")) { /* not an admin → refuse */ }
$u = wp_get_current_user();
$admin = ["id" => (string)$u->ID, "name" => $u->display_name,
          "username" => $u->user_login, "email" => $u->user_email,
          "role" => implode(",", $u->roles)];

/* ── WHMCS (inside an addon/hook, admin area) ──────────────────────────── */
$aid = (int)($_SESSION["adminid"] ?? 0);
if ($aid <= 0) { /* not an admin → refuse */ }
$row = Capsule::table("tbladmins")->where("id", $aid)->first();
$admin = ["id" => (string)$row->id, "name" => trim($row->firstname . " " . $row->lastname),
          "username" => $row->username, "email" => $row->email, "role" => "administrator"];

/* ── SYMFONY ───────────────────────────────────────────────────────────── */
$u = $security->getUser();                    // Symfony\Bundle\SecurityBundle\Security
if (!$u) { /* not an admin → refuse */ }
$admin = ["id" => (string)$u->getId(), "name" => $u->getName(),
          "username" => $u->getUserIdentifier(), "email" => $u->getEmail(),
          "role" => implode(",", $u->getRoles())];

/* ── PLAIN PHP / your own app ──────────────────────────────────────────── */
session_start();
if (empty($_SESSION["admin_id"])) { /* not an admin → refuse */ }
$admin = ["id" => (string)$_SESSION["admin_id"], "name" => $_SESSION["admin_name"] ?? "",
          "username" => $_SESSION["admin_username"] ?? "", "email" => $_SESSION["admin_email"] ?? "",
          "role" => $_SESSION["admin_role"] ?? ""];

/* ── then, on EVERY stack ──────────────────────────────────────────────── */
$token = opsiq_identity_token($admin, "SITE_KEY", "opsiq_whsec_your_site_secret", "wordpress");
echo json_encode(["success" => true, "authenticated" => true,
                  "admin" => $admin, "identity_token" => $token]);

Quand cela ne fonctionne pas — diagnostiquez dans cet ordre

Widget n'apparaît jamais, la console dit "le jeton d'identité de l'administrateur signé est requis"

Votre point d'arrêt n'a pas été rendu identity_token. Ouvrez le paramètre URL directement dans le navigateur d'administration connecté avec &debug=1 — vous verrez l'étape défaillante. Sur Laravel, c'est presque toujours l'élément de requête ou de préfixe des cookies ci-dessus.

L'histoire et les conversations fonctionnent, mais chaque tour de chat dit "Accès administratif requis"

La division classique. Votre jeton manque le TOP-LEVEL authenticated flag — le paramètre propre au widget accepte le jeton, le vérificateur partagé derrière le flux de discussion refuse. "authenticated" => true beside exp.

"admin non fourni dans OpsIQ" (HTTP 401)

The token verified, but its username + email match no OpsIQ agent. Add the agent in OpsIQ → Team, or add the platform email to that agent's match-emails list when it differs from their OpsIQ email.

Tout 403s depuis le navigateur mais fonctionne avec curl

Un prévol CORS rejette un de vos en-têtes de requête. Votre point final doit répondre OPTIONS et faites écho à l'origine de la demande, ou évitez simplement les en-têtes personnalisés — le widget n'a besoin que du cookie.

Travaillé hier, échoue aujourd'hui

Vérifier exp: les jetons sont de courte durée par conception. Le widget re-probes automatiquement, donc cela signifie généralement que le point d'arrivée a cessé de voir la session — une rotation de clé app, un changement de pilote de session ou un changement du domaine des cookies.

💡
Le widget admin rend caché jusqu'à ce que l'identité se résout, et chaque appel chat/inbox/data est imposé côté serveur contre le correspondantOpsIQagent, peu importe ce que la page affirme. Le jeton déverrouille l'interface utilisateur; les permissions viennent toujours deOpsIQ.
Développeur

Identité du visiteur

Une fois identifié, OpsIQ relie l'historique de navigation, les discussions et les tickets au profil du client.

Comment ça fonctionne
Identité du visiteurUn flux : un utilisateur se connecte sur votre site, vous émettez un jeton d’identité signé et OpsIQ unifie ses sessions, chats et tickets en un seul profil.L'utilisateur se connecteSur votre siteJeton signéIdentité_jeton (HMAC)Un seul profilsessions+ chats+ billets d'entrée
Identité du visiteur

Deux niveaux d'identité, et quand chacun suffit

Niveau 1 — un indice non signé

Vous dites au widget qui est le visiteur avec une plaineJavaScriptobjet. Il remplit l'email et l'identifiant du client sur le journal des visiteurs, de sorte que votre tableau de bord affiche le trafic connecté et les sessions se joignent.OpsIQne publie jamais de données de compte sur la force de celui-ci.

Niveau 2 — un jeton d'identité signé

Votre serveur signe un jeton de courte durée avec le secret webhook site. OpsIQ vérifie la signature et seulement alors traite la personne comme un client éprouvé. C'est le niveau qui déverrouille les réponses de compte dans la conversation client et les recherches de connecteurs. Utilisez-le pour tout ce qu'un étranger ne doit pas voir.

⚠️
Niveau1est une commodité d'affichage.2est l'authentification. Si une question ne peut être répondue que pour le titulaire de compte réel, vous avez besoin de Niveau2.

Niveau 1 — l'indice non signé

Définir l'objet AVANT le script widget, ou appeler identif() plus tard une fois que votre application sait qui est connecté. Les deux formulaires sont lus; utilisez la meilleure de vos pages.

JavaScript · les deux formulaires supportés
<!-- Form A: set the global before the loader -->
<script>
  window.OpsIQClient = {
    id:    "cust_1001",
    email: "[email protected]",
    name:  "Jane Smith",
    plan:  "pro"
  };
</script>
<script async src="https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY"></script>

<!-- Form B: identify later, e.g. after a client-side login -->
<script>
  window.opsiq.identify({
    id:    "cust_1001",
    email: "[email protected]",
    name:  "Jane Smith",
    plan:  "pro"
  });
</script>
⚠️
Only these forms are read: the window.OpsIQClient global, window.opsiqConfig.user, and window.opsiq.identify(). There is no OpsIQ.push(['identify', ...]) queue and no OpsIQClientSignature global — if you find either in an old note, it does nothing.

Niveau 2 — le jeton d'identité signé par le serveur

Exactement le même contrat symbolique que le widget admin, avec un customer sujet au lieu d'un admin un. Signez-le sur votre serveur et passez-le au widget. Deux détails décident si il vérifie, et les deux sont faciles à faux:

LesHMACcouvre la chaîne BASE64URL, pas laJSON

Signer $payload64Pas $payload. Signer le brut JSON produit un jeton qui semble juste et est rejeté à chaque fois avec une erreur de signature.

base64url, non rembourrée

Traduire +/ à -_ et de retirer = rembourrage. Base plaine64 se trouve survivre aujourd'hui; base64url est le contrat et est ce que chaqueOpsIQle vérificateur et le connecteur de référence émettent.

Authentifié va au niveau TOP

A côté site_key, iat et exp. C'est votre affirmation qu'un vrai humain est connecté, etOpsIQrefuse le jeton sans lui.

client. id est obligatoire

Un jeton portant seulement un email vérifie comme une signature et est ensuite silencieusement abandonné. Toujours envoyer un id.

Garder l'exp courte

Minutes à heures. Le jeton est une affirmation de session, pas un titre de stockage.

PHP - signez un jeton d'identité client (ce code exact vérifie)
<?php
/* Server-signed customer identity. Runnable as-is: set the two constants. */
$siteKey = "YOUR_SITE_KEY";                        // Remote Sites -> Codes
$secret  = "opsiq_whsec_your_site_secret";         // Remote Sites -> Codes

$payload = json_encode([
    "site_key"      => $siteKey,
    "iat"           => time(),
    "exp"           => time() + 3600,
    "authenticated" => true,                       // TOP LEVEL - required
    "platform"      => "your-platform",
    "customer"      => [
        "id"            => (string)$user->id,      // REQUIRED
        "email"         => (string)$user->email,   // REQUIRED
        "name"          => (string)$user->name,
        "plan"          => (string)($user->plan ?? ""),
        "authenticated" => true,
    ],
], JSON_UNESCAPED_SLASHES);

/* base64url(payload) . "." . hex HMAC-SHA256 OF THAT STRING. */
$payload64 = rtrim(strtr(base64_encode($payload), "+/", "-_"), "=");
$token     = $payload64 . "." . hash_hmac("sha256", $payload64, $secret);

/* Hand it to the widget either way: */
printf(
    '<script async src="https://YOUR-OPSIQ/widget.php?site_key=%s&identity_token=%s"></script>',
    rawurlencode($siteKey),
    rawurlencode($token)
);
// or, if the loader is already on the page:
// echo '<script>window.opsiqConfig = window.opsiqConfig || {}; '
//    . 'window.opsiqConfig.identityToken = ' . json_encode($token) . ';</script>';
🚫
Signez sur le serveur seulement. Un jeton hissé dans le navigateur JavaScript signifie l'expédition du secret du site à chaque visiteur, qui donne à quiconque la possibilité d'imiter n'importe quel client.

Le même contrat, trois surfaces

Chat client sur votre site

sujet client, passé comme identité_token à widget. php. Couvert ci-dessus.

Admin chat dans votre moteur de recherche

sujet administrateur, passé àopsiq/embed/admin_widget.php. Même signeur, clé de sujet différente. Voir "Admin widget dans votre backend".

Liens profonds du portail de soutien

Une variante plus stricte: les mêmes revendications plus jti et single_use:true, et a120- la seconde vie, parce que le jeton voyage dans unURLet doit être dépenseable une fois. Ne pas la faire rouler manuellement. Paramètres, Portail de support a un extrait prêt pour votre langue, et la plate-forme la menthe pour vous lorsque votre zone de compte fonctionne sur ce serveur.

Que se passe-t-il si un visiteur efface ses cookies ?+

Ils deviennent anonymes jusqu'à ce qu'ils soient identifiés à nouveau. OpsIQ lie le nouvel enregistrement anonyme au profil client dès qu'un indice ou un jeton arrive.

Pourquoi mon jeton vérifie-t-il le journal des visiteurs, mais pas les questions de compte?+

C'est le niveau1/ Niveau2split. Un indice non signé remplit le journal des visiteurs et rien d'autre. Les réponses au compte nécessitent une signature vérifiée.

Développeur

Plugins et SDK

OpsIQ provides SDK Paquets et plugins pour les plateformes courantes.

Comment ça fonctionne
Plugins et SDKQuatre paquets: PHP SDK, Node.js SDK, WordPress plugin et WHMCS Module, chacun avec sa commande install.PHPPHP SDKLe compositeur requiert opsiq/sdkJSNode. js SDK- Non, pas de problème.opsiq/sdkGroupe de travail des politiquesWordPress pluginInstallation & connexion en un clicQUANDModule WHMCSAddon pour la facturation + relais de billets
Plugins & SDK
PHP SDK

Paquet Composer: génération de jetons d'identité, assistants d'action API, vérification de signature webhook.

JavaScript SDK

Côté navigateur: suivi, identité, événements personnalisés, contrôle du chat.

WordPress plugin

Injection de widget, identité à partir des sessions utilisateur WP, WooCommerce sync.

Module WHMCS

Intégration complète: widget, relais de billets, identité, IA d'administration.

Shopify extension de thème

Intégration d'application avec identité client automatique.

Démarrage rapide de PHP SDK

Exemple de PHP SDK
composer require opsiq/sdk

use OpsIQ\SDK\Identity;
$token = Identity::createToken(
    siteKey: "site_abc123",
    secret:  "opsiq_whsec_your_secret",
    customer: ["id" => "cust_1001", "email" => "[email protected]", "name" => "Jane"]
);

// Call any catalog action over the action API
$ch = curl_init("https://your-opsiq.com/api/v1.php");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer opq_your_key",
        "Content-Type: application/json",
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "action" => "crm.contacts.list",
        "status" => "lead",
        "limit"  => 25,
    ]),
]);
$contacts = json_decode(curl_exec($ch), true);
Développeur

Enquête API, évènements et automatisation sans connecteur

Survey Studio est conçu pour utiliser les mêmes types de données. API, exécuteur interne, bus d'événements et les opérations de webhook comme le reste de OpsIQ Cela permet aux développeurs d'intégrer de bout en bout sans créer un connecteur emballé.

⚠️
État de mise en œuvre: le catalogue live expose actuellement uniquement platform.get.survey.config et platform.save.survey.config. Les surveys.* et feedback.* Les familles ci-dessous sont le contrat cible approuvé et doivent retourner unknown_action jusqu'à ce que vous soyez enregistré.

Familles cibles d &apos; action

Types, modèles et lancement rapide

surveys.types.*, surveys.templates.* et surveys.quick_launch.* Liste, prévisualiser, instantier et valider les starters complets.

Enquêtes et versions

surveys.create|get|list|update|archive|duplicate Plus de version immuable, validation et actions de publication.

Déploiements et ciblage

surveys.deployments.*, surveys.links.*, surveys.audiences.*, surveys.triggers.* et surveys.variables.*.

Sensibilisation et réponses

surveys.invitations.*, surveys.campaigns.*, surveys.recipients.*, surveys.responses.*, exportations, rédaction et analyses.

Webhooks, importation et exportation

surveys.webhooks.*, surveys.imports.*, feedback.items.*, feedback.analytics.*, feedback.sources.* et feedback.analysis.*.

Flux sans connecteur

1
Créer et publier via General API

Les écritures déclarent les comportements d'autorisation, de risque, de confirmation, d'idempotence et d'exécution à vide.

2
Réceptionnez votre événement d'affaires

Envoyez un événement signé à un webhook entrant, par exemple une annulation de commande ou une étape d'intégration terminée.

3
Mappage dans Actions & Triggers

Choisir unOpsIQGénéralitésAPIdes mesures telles que l'émission d'une invitation au sondage ou la préparation d'un projet de campagne, puis la cartographie des champs à partir de la charge utile de déclenchement vérifiée.

4
S'abonner aux événements de sondage

Fournissez le sous-ensemble documenté du cycle de vie d'une enquête sécurisée* à votre point de terminaison avec signature, filtrage, réessai, journalisation et lecture autorisée.

Cible d’événement canonique

Le catalogue partagé couvrira l’état de publication des enquêtes et des déploiements, les décisions d’audience et de déclenchement, les invitations, ainsi que les événements d’affichage, de démarrage, de réponse partielle, de reprise, d’achèvement et d’abandon

Un connecteur est optionnel et ajoute la découverte de plateforme réutilisable, l'identité vérifiée, les faits, les variables et l'énumération des destinataires. Général API plus Actions & Triggers/webhooks reste le chemin d'intégration complet pour les développeurs qui n'ont pas besoin d'un connecteur empaqueté.
Développeur

API REST

The OpsIQ REST API vous permet d'accéder par programmation à toutes les fonctionnalités de la plateforme.

Comment ça fonctionne
API RESTUn terminal affichant un POST au. OpsIQ API Avec une clé de porteur, la liste des billets ouverts et le pageur JSON réponse.$ curl -X POST https://your-domain.com/api/v1.php \-H "Authorization: Bearer opq_..."200 OK{ "data": [{ "id": 4192, "ticket_number": "T-4192","subject": "Card declined", "status": "open" },... more tickets ...], "page": 1, "per_page": 50, "has_more": true }
API REST

Format de la demande

Envoyer la clé comme Authorization: Bearer opq_... ou X-OpsIQ-Key: opq_.... Utilisez un en-tête d'authentification, pas les deux.

API format de demande
POST https://your-opsiq-domain.com/api/v1.php
Authorization: Bearer opq_your_api_key
# Alternative header: X-OpsIQ-Key: opq_your_api_key
Content-Type: application/json

{
  "action": "endpoint.name",
  "site_key": "site_abc123"
}

Actions communes

Le API est basé sur l'action: envoyer un action Chaque opération d'administrateur enregistrée JSON a une action nommée stable. POST {"action":"meta.actions"} (aucune clé requise) pour la liste faisant autorité, par installation, le contrat de demande, les métadonnées de risque et l'étendue. platform.routes.* Le pont reste uniquement pour les intégrations plus anciennes.

crm.contacts.list

Liste des contacts CRM (scope crm. read). Paramètres: q, statut, source, tag, score de lead, limite.

crm.contacts.upsert

Résoudre ou créer un contact (scope crm. write). Paramètres: email plus champs, tags, notes.

crm.deals.list

Liste des offres CRM (étendue crm. read). Paramètres: status, stage_id, company_id.

crm.activities.record

Enregistrer un cycle de vie/une activité commerciale pour un contact (scope crm. write) Paramètres: email ou contact_id, event, value, currency.

crm.conversions.record

Enregistrer une conversion (scope crm. write). Paramètres: contact_id ou email, type_conversion, valeur, devise.

crm.events.list

Interroge le flux d'événements CRM (scope crm. read). Paramètres: limit.

tickets.list

Liste des tickets (scope tickets. read). Paramètres: page, par_page, trier, ordre, statut, priorité, department_id, assigned_admin_id.

tickets.get

Un ticket et ses messages (scope tickets. read). Paramètres: id_ticket ou numéro_de_tiquet, include_messages, messages_limit.

tickets.reply

Poster une réponse à un ticket (scope tickets. write). Paramètres: numéro_de_ticket ou id_tiquet, corps, type_auteur, nom_acteur, interne.

tickets.update

Mettre à jour un ticket (scope tickets. write). Paramètres: numéro_de_ticket ou id_du_tiquet, statut, priorité, sujet, identifiant_departement, identifiants_administrateurs assignés.

tickets.open

Ouvre un ticket de support (scope tickets. write). Paramètres: customer_email, customer_name, sujet, corps, priorité.

tickets.bulk

Exécute une opération de file d'attente en bloc (scope tickets. write). Paramètres: operation, ids.

conversations.list

Liste des conversations de chat en direct (scope conversations. read). Paramètres: page, per_page, status, assigned_admin_id, client_email, search.

conversations.get

Une conversation et ses messages (scope conversations. read). Paramètres: conversation_id ou thread_key, include_messages.

conversations.messages

Historique des messages paginés (étendue conversations. read). Paramètres: conversation_id, page, per_page, include_internal.

conversations.send

Envoyer un message dans une conversation (scope conversations. write). Paramètres: conversation_id, message, sender_type, internal.

conversations.update

Attribuer, re-status ou re-titre une conversation (scope conversations. write). Paramètres: conversation_id, status, assigned_admin_id.

Connecteurs. liste /. get /, test

Découvrez quels connecteurs sont installés, ce que chacun peut faire et si ses informations d'identification fonctionnent (scope connectors. read).

automations.actions.list

Les actions que votre générateur d'actions exécutera (scope automations. read).

automations.triggers.list

Ce qui se déclenche et dans quelles conditions (scope automations. read).

automations.runs.list

Historique d'exécution pour le débogage d'une intégration (scope automations. read). Paramètres: status, action_key.

departments.list

Les départements vers lesquels vous pouvez acheminer un ticket (étendue departments. read).

notifications.list

Notifications pour un opérateur (scope notifications. read). Paramètres: admin_id (requis), unread_only.

analytics.export

Une section de rapport sous la forme CSV (étendue analytics. read). Paramètres: section, preset, from, to. Appelez analytics. sections. list pour obtenir des valeurs valides.

Site_intelligence. sites. list /. reports. liste

Sites surveillés et leurs rapports SEO (scope site_intelligence. read).

files.get

Un lien de téléchargement signé et éphémère pour une pièce jointe (scope files. read). Paramètres: reference, ttl.

security.check

Demander si un IP Une adresse IP ou un e-mail est bloqué ou suspect ici (étendue security.read).IP Le pare-feu, la liste de blocage des spams et le verdict de l'IA de sécurité mis en cache. ip, email.

security.report

Enregistré comme un événement de sécurité, classifié immédiatement par l'IA de sécurité et les administrateurs sont alertés sur les verdicts à haut risque. Paramètres: ip, email, type, raison, source.

Ajouter / Modifier la liste de blocage

Gérer les règles de spam que le pipeline des tickets applique (scope security. write / security. read). Même stockage que la page Tickets "Bloquer l'expéditeur" contrôle. Paramètres: type (email, domaine, ip), valeur, raison, expires_hours.

💡
Il renvoie toutes les actions disponibles sur votre installation avec la portée dont chacune a besoin, de sorte que vous n'avez jamais à deviner ou coder cette liste.

Pagination, filtrage et tri

Chaque action de liste utilise les mêmes paramètres, vous ne les apprenez donc qu'une seule fois.

Page / par page

Numéro de page commençant par 1, et la taille de la page. 50, maximum 200. limite et décalage sont également acceptés si vous les préférez.

tri / ordre

Champ à trier, et asc ou desc (par défaut desc). Chaque action accepte un ensemble fixe de champs de tri. Tout le reste est ignoré plutôt que d'être considéré comme une erreur.

filters

Envoyer des filtres en tant qu'objet, ou passer un filtre comme paramètre de niveau supérieur. Les filtres inconnus sont ignorés.

Ce qui revient

Pour chaque page, utilisez les paramètres items, page, per_page, count, total et has_more.

Demande de liste paginée, filtrée et triée
POST /api/v1.php
Authorization: Bearer opq_your_api_key

{
  "action": "tickets.list",
  "status": "open",
  "priority": "urgent",
  "sort": "created_at",
  "order": "desc",
  "page": 1,
  "per_page": 50
}

Erreurs

Chaque défaillance renvoie la même forme, avec une code Ne pas correspondre sur le fichier lisible par l'homme. error texte, qui peut être reformulé.

Réponse d'erreur
{
  "success": false,
  "code": "missing_scope",
  "error": "API key missing required scope. Needed one of: tickets.read, admin",
  "request_id": "req_8f2c1a9d4b7e"
}
Clé_API_manquante / clé_API invalide

Aucune clé n'a été envoyée, ou la clé est incorrecte ou expirée. HTTP 401.

missing_scope

La clé est valide mais n'a pas la portée nécessaire à cette action. HTTP 403.

Clé en lecture seule / action_restricted

La clé est en lecture seule, ou cette action n'est pas dans sa liste d'autorisations. HTTP 403.

unknown_action

Aucune action. Appeler meta. actions pour la liste courante. HTTP 400.

Paramètre manquant / paramètre invalide

Un paramètre requis est absent ou une valeur n'est pas acceptée. HTTP 400.

not_found

L'enregistrement n'existe pas, ou il ne se trouve pas dans l'espace de travail que cette clé peut voir. 404.

rate_limited

La limite horaire de cette clé est épuisée. HTTP 429.

server_error

Quelque chose a échoué de notre côté. Le request_id identifie la tentative si vous devez le signaler. HTTP 500.

Retestages en toute sécurité

Si un temps d'écriture expire, vous ne pouvez pas savoir s'il a atterri. idempotency_key et une répétition du même appel retourne le résultat original au lieu de faire le travail deux fois.

Écrire l'idémpotent
{
  "action": "tickets.reply",
  "ticket_id": 4192,
  "body": "Thanks, that is now fixed.",
  "idempotency_key": "your-unique-id-for-this-attempt"
}
Combien de temps cela dure

Une clé est mémorisée pour 24 heures contre la même action et API clé.

Ce que vous obtenez en retour

La réponse originale, plus idempotent_replay: true pour que vous puissiez dire qu'il s'agissait d'une reprise.

Les échecs restent réessayables

Si un appel a échoué, le renvoyer avec la même clé l'exécute à nouveau, ce qui est ce que vous voulez.

Lire

Les lectures ignorent la clé. La répétition d'une lecture est inoffensive.

Testez sans rien changer

Ajouter dry_run: true Votre clé, vos champs d'application et vos paramètres sont tous vérifiés exactement comme d'habitude, puis l'appel s'arrête avant que quoi que ce soit ne soit créé ou modifié.

Essai: vérification des informations d'identification et de la charge utile en toute sécurité
{
  "action": "tickets.update",
  "ticket_id": 4192,
  "status": "closed",
  "dry_run": true
}

{
  "success": true,
  "dry_run": true,
  "would_execute": true,
  "message": "Authorised and validated. No write was performed because dry_run was set."
}
Utilisez dry_run pendant la construction, c'est le moyen le plus rapide de confirmer qu'une clé a les bons scopes et que votre charge utile est correctement formée, sans créer des données de test à nettoyer.

Limites de taux

Limite par clé

Une limite horaire configurable par API clé (par défaut 1000 Définissez-le par touche sous Paramètres, puis cliquez sur API Les clés.

Lorsque dépassé

HTTP 429 avec le code rate_limited, plus un en-tête Retry-After vous indiquant combien de secondes attendre. La limite est réinitialisée au début de l'heure d'horloge suivante.

Savoir où vous en êtes

Chaque réponse porte les valeurs X-RateLimit-Limit, X-Remaining et X-Resets (un horodatage Unix) Regardez Remaining et ralentissez avant de vous épuiser plutôt que d'attendre d'être refusé.

En disant 429 à partir 401

A 429 Cela signifie attendre et réessayer. A 401 signifie que la clé elle-même est incorrecte ou expirée, donc réessayer n'aidera pas tant que vous ne l'aurez pas corrigée.

Garde de brute-force pré-authentification

Essais répétés d'un seul coupIPLes clés valides ne font jamais ce voyage.

Meilleures pratiques

Reculez lorsque le reste est faible, et honorez Retry-After après un 429 au lieu de réessayer immédiatement.

Versions et stabilité

Version actuelle

v1. Chaque réponse porte X-OpsIQ-API- Version et X-OpsIQ-API-Situation pour que vous puissiez confirmer ce à quoi vous parlez.

Comment vous serez averti

Si une version est retirée, les réponses reçoivent des en-têtes standard Deprecation et Sunset, et meta. actions rapporte deprecated et sunset_at Vérifiez ces éléments dans votre monitoring et vous ne serez jamais surpris.

Ce qui ne changera pas

Les noms des actions existantes, leurs paramètres et leurs codes d'erreur. De nouvelles actions et de nouveaux champs optionnels peuvent être ajoutés à tout moment. Ignorez donc les champs que vous ne reconnaissez pas plutôt que de les échouer.

Une intégration complète, du début à la fin

C’est la boucle complète : trouver un travail, le lire, agir sur celui-ci et confirmer ce que vous avez fait.

Flux de travail complet des tickets sur le API
# 1. Discover what this install offers and what each action needs.
POST /api/v1.php
{"action":"meta.actions"}

# 2. Find the urgent open tickets.
POST /api/v1.php
Authorization: Bearer opq_your_api_key
{"action":"tickets.list","status":"open","priority":"urgent","per_page":25}

# 3. Read one, including its conversation history.
{"action":"tickets.get","ticket_id":4192}

# 4. Reply, safely enough to retry if the network drops.
{"action":"tickets.reply","ticket_id":4192,
 "body":"We have issued the refund.","idempotency_key":"reply-4192-attempt-1"}

# 5. Close it.
{"action":"tickets.update","ticket_id":4192,"status":"closed"}

# 6. Page through anything larger: keep going until has_more is false.
{"action":"tickets.list","page":2,"per_page":50}
💡
Tout ce qui précède fonctionne de la même manière pour les conversations : conversations. list, conversations,get, conversation. send et conversations-update suivent le même modèle, les mêmes paramètres et la même forme de réponse.

Chaque action, avec la portée dont elle a besoin

Cette liste est générée à partir du catalogue en cours, elle correspond donc toujours à la version que vous utilisez. meta.actions Retourne les mêmes informations que JSON.

1745 named actions: 588 reads, 1157 writes and 62 scopes. Every registered administrator JSON operation has a stable named action. OpenAPI: /api/v1/openapi.php. Postman: /api/v1/postman.php. Contract quality: declared_dynamic: 391; explicit: 92; route_inferred: 1146; source_inferred: 116.

administration (25)

administration.2fa.disable

Write. Scope: administration.write, admin. Contract: route_inferred. Admin 2fa Disable

administration.2fa.enable

Write. Scope: administration.write, admin. Contract: route_inferred. Admin 2fa Enable

administration.2fa.recovery.regenerate

Write. Scope: administration.write, admin. Contract: route_inferred. Admin 2fa Recovery Regenerate

administration.2fa.setup

Read. Scope: administration.read, admin. Contract: declared_dynamic. Admin 2fa Setup

administration.2fa.status

Read. Scope: administration.read, admin. Contract: declared_dynamic. Admin 2fa Status

administration.ai.train.from.reply

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Ai Train From Reply

administration.brain.cancel

Write. Scope: administration.write, admin. Contract: declared_dynamic. Admin Brain Cancel

administration.brain.view

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Brain View

administration.chat.access.check

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Chat Access Check

administration.chat.create.ticket.on.behalf

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Chat Create Ticket On Behalf

administration.chat.draft.ticket.from.thread

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Chat Draft Ticket From Thread

administration.conv.delete

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv Delete

administration.conv.get

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv Get

administration.conv.list

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv List

administration.conv.new

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv New

administration.conv.save

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv Save

administration.notification.prefs.get

Read. Scope: administration.read, admin. Contract: declared_dynamic. Admin Notification Prefs Get

administration.notification.prefs.save

Write. Scope: administration.write, admin. Contract: declared_dynamic. Admin Notification Prefs Save

administration.notifications.list

Read. Scope: administration.read, admin. Contract: route_inferred. Admin Notifications List

administration.notifications.mark.all.read

Read. Scope: administration.read, admin. Contract: declared_dynamic. Admin Notifications Mark All Read

administration.notifications.mark.read

Read. Scope: administration.read, admin. Contract: route_inferred. Admin Notifications Mark Read

administration.notifications.pulse

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Notifications Pulse

administration.online.list

Read. Scope: administration.read, admin. Contract: declared_dynamic. Admin Online List

administration.presence.ping

Write. Scope: administration.write, admin. Contract: declared_dynamic. Admin Presence Ping

administration.realtime.token

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Realtime Token

analytics (43)

analytics.add.widget

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Add Widget

analytics.analytics.connectors.catalog

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Analytics Connectors Catalog

analytics.analytics.data

Read. Scope: analytics.read, admin. Contract: route_inferred. Analytics Data

analytics.analytics.export

Read. Scope: analytics.read, admin. Contract: route_inferred. Analytics Export

analytics.analytics.export.csv

Read. Scope: analytics.read, admin. Contract: route_inferred. Analytics Export Csv

analytics.analytics.import

Write. Scope: analytics.write, admin. Contract: route_inferred. Analytics Import

analytics.analytics.report

Write. Scope: analytics.write, admin. Contract: route_inferred. Analytics Report

analytics.analytics.segments.delete

Write. Scope: analytics.write, admin. Contract: route_inferred. Analytics Segments Delete

analytics.analytics.segments.list

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Analytics Segments List

analytics.analytics.segments.save

Write. Scope: analytics.write, admin. Contract: route_inferred. Analytics Segments Save

analytics.analytics.status

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Analytics Status

analytics.clear.all

Write. Scope: analytics.write, admin. Contract: declared_dynamic. Replay Clear All

analytics.compute

Read. Scope: analytics.read, admin. Contract: route_inferred. Funnels Compute

analytics.create

Write. Scope: analytics.write, admin. Contract: route_inferred. Ab Test Create

analytics.create.route.dashboard.create

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Create

analytics.create.route.report.create

Write. Scope: analytics.write, admin. Contract: route_inferred. Report Create

analytics.delete

Write. Scope: analytics.write, admin. Contract: route_inferred. Ab Test Delete

analytics.delete.route.dashboard.delete

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Delete

analytics.delete.route.funnels.delete

Write. Scope: analytics.write, admin. Contract: route_inferred. Funnels Delete

analytics.delete.route.report.delete

Write. Scope: analytics.write, admin. Contract: route_inferred. Report Delete

analytics.events

Read. Scope: analytics.read, admin. Contract: route_inferred. Replay Events

analytics.export

Read. Scope: analytics.read, admin. Contract: source_inferred. Analytics Export

analytics.get

Read. Scope: analytics.read, admin. Contract: route_inferred. Dashboard Get

analytics.layout.get

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Dashboard Layout Get

analytics.layout.save

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Layout Save

analytics.list

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Ab Test List

analytics.list.route.dashboard.list

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Dashboard List

analytics.list.route.funnels.list

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Funnels List

analytics.list.route.report.list

Read. Scope: analytics.read, admin. Contract: declared_dynamic. Report List

analytics.remove.widget

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Remove Widget

analytics.rename

Read. Scope: analytics.read, admin. Contract: route_inferred. Dashboard Rename

analytics.results

Read. Scope: analytics.read, admin. Contract: route_inferred. Ab Test Results

analytics.save

Write. Scope: analytics.write, admin. Contract: route_inferred. Funnels Save

analytics.scheduled.list

Read. Scope: analytics.read, admin. Contract: explicit. List scheduled analytics reports for an operator Required fields: admin_id.

analytics.sections.list

Read. Scope: analytics.read, admin. Contract: explicit. List analytics report sections and date presets

analytics.send.now

Write. Scope: analytics.write, admin. Contract: route_inferred. Report Send Now

analytics.sessions

Read. Scope: analytics.read, admin. Contract: route_inferred. Replay Sessions

analytics.step.visitors

Read. Scope: analytics.read, admin. Contract: route_inferred. Funnels Step Visitors

analytics.timeline

Read. Scope: analytics.read, admin. Contract: route_inferred. Replay Timeline

analytics.toggle.shared

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Toggle Shared

analytics.update

Write. Scope: analytics.write, admin. Contract: route_inferred. Ab Test Update

analytics.update.route.report.update

Write. Scope: analytics.write, admin. Contract: route_inferred. Report Update

analytics.widget.data

Read. Scope: analytics.read, admin. Contract: route_inferred. Dashboard Widget Data

automations (6)

automations.actions.list

Read. Scope: automations.read, admin. Contract: explicit. List integration actions

automations.delete

Write. Scope: automations.write, admin. Contract: route_inferred. Workflow Delete

automations.list

Read. Scope: automations.read, admin. Contract: route_inferred. Workflow List

automations.runs.list

Read. Scope: automations.read, admin. Contract: explicit. List automation execution history

automations.save

Write. Scope: automations.write, admin. Contract: route_inferred. Workflow Save

automations.triggers.list

Read. Scope: automations.read, admin. Contract: explicit. List integration triggers

chat (34)

chat.call.start

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Call Start

chat.cobrowse.send

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Cobrowse Send

chat.feedback

Read. Scope: chat.read, admin. Contract: route_inferred. Chat Feedback

chat.feedback.digest

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Feedback Digest

chat.form.delete

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Form Delete

chat.form.get

Read. Scope: chat.read, admin. Contract: route_inferred. Chat Form Get

chat.form.list

Read. Scope: chat.read, admin. Contract: declared_dynamic. Chat Form List

chat.form.save

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Form Save

chat.form.set.default

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Form Set Default

chat.online.admins

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Online Admins

chat.permissions.list

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Permissions List

chat.permissions.revoke

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Permissions Revoke

chat.permissions.save

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Permissions Save

chat.permissions.upload.avatar

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Permissions Upload Avatar

chat.reaction.toggle

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Reaction Toggle

chat.saved_replies.add

Write. Scope: chat.write, admin. Contract: source_inferred. Chat Saved Replies Add Retry-safe with idempotency_key.

chat.saved_replies.list

Read. Scope: chat.read, admin. Contract: explicit. List workspace and personal saved replies

chat.saved_replies.save

Write. Scope: chat.write, admin. Contract: source_inferred. Chat Saved Replies Save Retry-safe with idempotency_key.

chat.set.persona

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Set Persona

chat.snooze.clear

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Snooze Clear

chat.snooze.set

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Snooze Set

chat.transfer.thread

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Transfer Thread

chat.transfer.unread

Write. Scope: chat.write, admin. Contract: declared_dynamic. Chat Transfer Unread

chat.typing.preview

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Typing Preview

chat.whisper.ai.summary

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper Ai Summary

chat.whisper.controls

Write. Scope: chat.write, admin. Contract: declared_dynamic. Chat Whisper Controls

chat.whisper.delete.room

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper Delete Room

chat.whisper.list

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper List

chat.whisper.mentions

Write. Scope: chat.write, admin. Contract: declared_dynamic. Chat Whisper Mentions

chat.whisper.rooms

Write. Scope: chat.write, admin. Contract: declared_dynamic. Chat Whisper Rooms

chat.whisper.save.controls

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper Save Controls

chat.whisper.send

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper Send

chat.whisper.targets

Write. Scope: chat.write, admin. Contract: declared_dynamic. Chat Whisper Targets

chat.whisper.unread

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Whisper Unread

communications (21)

communications.auth.check

Read. Scope: communications.read, admin. Contract: route_inferred. Email Auth Check

communications.campaign.delete

Write. Scope: communications.write, admin. Contract: route_inferred. Push Campaign Delete

communications.campaign.save

Write. Scope: communications.write, admin. Contract: route_inferred. Push Campaign Save

communications.campaign.send

Write. Scope: communications.write, admin. Contract: route_inferred. Push Campaign Send

communications.campaigns.list

Read. Scope: communications.read, admin. Contract: declared_dynamic. Push Campaigns List

communications.drafts.delete

Write. Scope: communications.write, admin. Contract: route_inferred. Email Drafts Delete

communications.drafts.list

Read. Scope: communications.read, admin. Contract: declared_dynamic. Email Drafts List

communications.drafts.save

Write. Scope: communications.write, admin. Contract: route_inferred. Email Drafts Save

communications.drafts.send

Write. Scope: communications.write, admin. Contract: route_inferred. Email Drafts Send

communications.mailboxes.delete

Write. Scope: communications.write, admin. Contract: route_inferred. Email Mailboxes Delete

communications.mailboxes.list

Read. Scope: communications.read, admin. Contract: route_inferred. Email Mailboxes List

communications.mailboxes.poll

Read. Scope: communications.read, admin. Contract: declared_dynamic. Email Mailboxes Poll

communications.mailboxes.save

Write. Scope: communications.write, admin. Contract: route_inferred. Email Mailboxes Save

communications.mailboxes.test

Read. Scope: communications.read, admin. Contract: declared_dynamic. Email Mailboxes Test

communications.pipe.regen.token

Write. Scope: communications.write, admin. Contract: declared_dynamic. Email Pipe Regen Token

communications.platform.list

Read. Scope: communications.read, admin. Contract: declared_dynamic. Email Platform List

communications.platform.send

Write. Scope: communications.write, admin. Contract: route_inferred. Email Platform Send

communications.settings.get

Read. Scope: communications.read, admin. Contract: declared_dynamic. Email Settings Get

communications.settings.save

Write. Scope: communications.write, admin. Contract: route_inferred. Email Settings Save

communications.settings.test

Read. Scope: communications.read, admin. Contract: route_inferred. Email Settings Test

communications.vapid.generate

Write. Scope: communications.write, admin. Contract: declared_dynamic. Push Vapid Generate

connector_builder (11)

connector_builder.export

Read. Scope: connector_builder.read, admin. Contract: explicit. Export a generated connector Required fields: slug.

connector_builder.generate

Write. Scope: connector_builder.write, admin. Contract: explicit. Generate a connector package Required fields: spec. Retry-safe with idempotency_key.

connector_builder.get

Read. Scope: connector_builder.read, admin. Contract: explicit. Load a Builder specification Required fields: slug.

connector_builder.import.curl

Write. Scope: connector_builder.write, admin. Contract: explicit. Import cURL into Connector Builder Retry-safe with idempotency_key.

connector_builder.import.openapi

Write. Scope: connector_builder.write, admin. Contract: explicit. Import OpenAPI into Connector Builder Retry-safe with idempotency_key.

connector_builder.import.postman

Write. Scope: connector_builder.write, admin. Contract: explicit. Import Postman into Connector Builder Retry-safe with idempotency_key.

connector_builder.list

Read. Scope: connector_builder.read, admin. Contract: explicit. List Builder connectors

connector_builder.profiles

Read. Scope: connector_builder.read, connectors.read, admin. Contract: source_inferred. List Connector Builder profiles and capability contracts

connector_builder.test

Write. Scope: connector_builder.write, admin. Contract: explicit. Run Builder conformance tests Required fields: slug. Retry-safe with idempotency_key.

connector_builder.update

Write. Scope: connector_builder.write, admin. Contract: explicit. Update a generated connector Required fields: slug, spec. Retry-safe with idempotency_key.

connector_builder.validate

Read. Scope: connector_builder.read, admin. Contract: explicit. Validate a Builder specification Required fields: spec.

connectors (49)

connectors.action

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Action

connectors.backfill

Write. Scope: connectors.write, admin. Contract: explicit. Start connector backfill Required fields: slug. Retry-safe with idempotency_key.

connectors.backfill.route.connectors.backfill

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Backfill

connectors.backfill.status

Read. Scope: connectors.read, admin. Contract: explicit. Read connector backfill status Required fields: slug.

connectors.backfill.status.route.connectors.backfill.status

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Backfill Status

connectors.builder.ai.actions

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Ai Actions

connectors.builder.ai.handler

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Ai Handler

connectors.builder.ai.map

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Ai Map

connectors.builder.delete

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Delete

connectors.builder.dry.run

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Dry Run

connectors.builder.generate

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Generate

connectors.builder.import.curl

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Import Curl

connectors.builder.import.openapi

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Import Openapi

connectors.builder.import.postman

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Import Postman

connectors.builder.list

Read. Scope: connectors.read, admin. Contract: declared_dynamic. Connectors Builder List

connectors.builder.load

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Load

connectors.builder.marketplace.apply

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Marketplace Apply

connectors.builder.marketplace.link

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Marketplace Link

connectors.builder.marketplace.status

Read. Scope: connectors.read, admin. Contract: declared_dynamic. Connectors Builder Marketplace Status

connectors.builder.marketplace.submit

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Marketplace Submit

connectors.builder.test

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Test

connectors.builder.test.action

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Test Action

connectors.builder.update

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Update

connectors.builder.validate

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Validate

connectors.contacts.import

Write. Scope: connectors.write, admin. Contract: route_inferred. Connector Contacts Import

connectors.contract

Read. Scope: connectors.read, connector_builder.read, admin. Contract: source_inferred. Read the canonical connector capability contract

connectors.customers.sync

Write. Scope: connectors.write, admin. Contract: explicit. Synchronize connector customers Required fields: slug. Retry-safe with idempotency_key.

connectors.disable

Write. Scope: connectors.write, admin. Contract: explicit. Disable a connector Required fields: slug. Retry-safe with idempotency_key.

connectors.disable.route.connectors.disable

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Disable

connectors.email.account.department

Read. Scope: connectors.read, admin. Contract: route_inferred. Connector Email Account Department

connectors.email.account.remove

Write. Scope: connectors.write, admin. Contract: route_inferred. Connector Email Account Remove

connectors.email.account.routing

Read. Scope: connectors.read, admin. Contract: route_inferred. Connector Email Account Routing

connectors.enable

Write. Scope: connectors.write, admin. Contract: explicit. Enable a connector Required fields: slug. Retry-safe with idempotency_key.

connectors.enable.route.connectors.enable

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Enable

connectors.get

Read. Scope: connectors.read, admin. Contract: source_inferred. Connectors Get

connectors.get.route.connectors.get

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Get

connectors.install

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Install

connectors.integrity.scan

Read. Scope: connectors.read, admin. Contract: declared_dynamic. Connector Integrity Scan

connectors.list

Read. Scope: connectors.read, admin. Contract: explicit. List installed connectors and capabilities

connectors.list.route.connectors.list

Read. Scope: connectors.read, admin. Contract: declared_dynamic. Connectors List

connectors.oauth.start

Write. Scope: connectors.write, admin. Contract: route_inferred. Connector Oauth Start

connectors.settings.get

Read. Scope: connectors.read, admin. Contract: explicit. Read connector settings Required fields: slug.

connectors.settings.save

Write. Scope: connectors.write, admin. Contract: explicit. Save connector settings Required fields: slug, settings. Retry-safe with idempotency_key.

connectors.shared.oauth.delete

Write. Scope: connectors.write, admin. Contract: route_inferred. Connector Shared Oauth Delete

connectors.sync.customers

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Sync Customers

connectors.test

Read. Scope: connectors.read, admin. Contract: source_inferred. Connectors Test

connectors.test.route.connectors.test

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Test

connectors.uninstall

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Uninstall

connectors.workflow.recipes

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Workflow Recipes

conversations (37)

conversations.ai.draft

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Ai Draft

conversations.ai.rewrite

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Ai Rewrite

conversations.archive

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Archive

conversations.assign

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Assign

conversations.assignees

Write. Scope: conversations.write, admin. Contract: declared_dynamic. Admin Client Chat Assignees

conversations.bulk

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Bulk

conversations.clear

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Clear

conversations.clear.all

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Clear All

conversations.customer.tickets

Write. Scope: conversations.write, admin. Contract: declared_dynamic. Admin Client Chat Customer Tickets

conversations.decline

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Decline

conversations.delete

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Delete

conversations.delete.last

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Delete Last

conversations.edit.last

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Edit Last

conversations.export

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Export

conversations.forget.visitor

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Forget Visitor

conversations.get

Read. Scope: conversations.read, admin. Contract: source_inferred. Conversations Get

conversations.history

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat History

conversations.list

Read. Scope: conversations.read, admin. Contract: source_inferred. Conversations List

conversations.messages

Read. Scope: conversations.read, admin. Contract: source_inferred. Conversations Messages

conversations.resolve

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Resolve

conversations.saved.replies

Write. Scope: conversations.write, admin. Contract: declared_dynamic. Admin Client Chat Saved Replies

conversations.saved.reply.add

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Add

conversations.saved.reply.ai.generate

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Ai Generate

conversations.saved.reply.delete

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Delete

conversations.saved.reply.save

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Save

conversations.send

Write. Scope: conversations.write, admin. Contract: source_inferred. Conversations Send Retry-safe with idempotency_key.

conversations.send.route.admin.client.chat.send

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Send

conversations.tags.set

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Tags Set

conversations.thread

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Thread

conversations.threads

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Threads

conversations.toggle

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Toggle

conversations.toggle.attachments

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Toggle Attachments

conversations.toggle.call.button

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Toggle Call Button

conversations.typing

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Typing

conversations.unarchive

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Unarchive

conversations.update

Write. Scope: conversations.write, admin. Contract: explicit. Update a conversation status, assignment or subject Retry-safe with idempotency_key.

conversations.upload

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Upload

CRM (260)

crm.ab.results

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Ab Results

crm.access.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Access Set

crm.access_log.list

Read. Scope: admin. Contract: source_inferred. Crm Access Log List

crm.account.health

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Account Health

crm.account.health.board

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Account Health Board

crm.account.health.refresh

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Account Health Refresh

crm.account.plan.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Account Plan Get

crm.account.plan.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Account Plan Save

crm.account.plans.due

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Account Plans Due

crm.account.timeline

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Account Timeline

crm.activities.list

Read. Scope: crm.read. Contract: explicit. List CRM contact activities

crm.activities.record

Write. Scope: crm.write. Contract: explicit. Record a CRM contact activity Required fields: contact_id, activity_type. Retry-safe with idempotency_key.

crm.activity.feed

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Activity Feed

crm.agent.toggle

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Agent Toggle

crm.ai.policy.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Ai Policy Get

crm.ai.policy.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Ai Policy Save

crm.ai.policy.simulate

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Ai Policy Simulate

crm.ai.trace

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Ai Trace

crm.approval.decide

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Decide

crm.approval.delegate.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Delegate Set

crm.approval.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Approval List

crm.approval.policy.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Policy Get

crm.approval.policy.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Policy Save

crm.approval.settings

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Settings

crm.approve.apply

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Approve Apply

crm.approve.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Approve List

crm.approve.reject

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Approve Reject

crm.approve.update

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Approve Update

crm.ask

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Ask

crm.assign.owner

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Assign Owner

crm.assignment.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Assignment Get

crm.assignment.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Assignment Save

crm.attachment.delete

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Attachment Delete

crm.attachment.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Attachment List

crm.attachment.upload

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Attachment Upload

crm.autobook.meeting

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Autobook Meeting

crm.autodeal.mode

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Autodeal Mode

crm.book.meeting

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Book Meeting

crm.booking.link.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Booking Link Save

crm.booking.links.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Booking Links List

crm.build.apply

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Build Apply

crm.build.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Build Get

crm.build.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Build List

crm.build.plan

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Build Plan

crm.build.rollback

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Build Rollback

crm.bulk

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Bulk

crm.bundle.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Bundle Set

crm.calendar.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Calendar Status

crm.capture.status

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Capture Status

crm.comm.policy.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Comm Policy Get

crm.comm.policy.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Comm Policy Save

crm.command.snapshot

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Command Snapshot

crm.companies.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Companies List

crm.company.hierarchy

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Company Hierarchy

crm.company.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Company Save

crm.company.set.parent

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Company Set Parent

crm.company.suggest.related

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Company Suggest Related

crm.connectors.catalog

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Connectors Catalog

crm.consent_log.list

Read. Scope: crm.read. Contract: source_inferred. Crm Consent Log List

crm.contact.churn

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Contact Churn

crm.contact.draft.email

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contact Draft Email

crm.contact.enrich

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contact Enrich

crm.contact.propose.email

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contact Propose Email

crm.contacts.detail

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts Detail

crm.contacts.erase

Write. Scope: admin. Contract: source_inferred. Crm Contacts Erase Retry-safe with idempotency_key.

crm.contacts.export

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts Export

crm.contacts.import.list

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts Import List

crm.contacts.import.run

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Import Run Retry-safe with idempotency_key.

crm.contacts.list

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts List

crm.contacts.next_action

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts Next Action

crm.contacts.open_chat

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Open Chat Retry-safe with idempotency_key.

crm.contacts.open_ticket

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Open Ticket Retry-safe with idempotency_key.

crm.contacts.resync

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Resync Retry-safe with idempotency_key.

crm.contacts.save

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Save Retry-safe with idempotency_key.

crm.contacts.send_email

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Send Email Retry-safe with idempotency_key.

crm.contacts.upsert

Write. Scope: crm.write. Contract: explicit. Crm Contacts Upsert Required fields: email. Retry-safe with idempotency_key.

crm.contract.amend

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contract Amend

crm.contract.price.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contract Price Set

crm.contract.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contract Save

crm.contract.usage

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contract Usage

crm.contracts.list

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contracts List

crm.conversation.intel

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Conversation Intel

crm.conversions.goals.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Conversions Goals Delete Retry-safe with idempotency_key.

crm.conversions.goals.list

Read. Scope: crm.read. Contract: source_inferred. Crm Conversions Goals List

crm.conversions.goals.save

Write. Scope: crm.write. Contract: source_inferred. Crm Conversions Goals Save Retry-safe with idempotency_key.

crm.conversions.list

Read. Scope: crm.read. Contract: source_inferred. Crm Conversions List

crm.conversions.record

Write. Scope: crm.write. Contract: source_inferred. Crm Conversions Record Retry-safe with idempotency_key.

crm.create.video.meeting

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Create Video Meeting

crm.customer.auto.sync

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Customer Auto Sync

crm.customer.auto.sync.status

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Customer Auto Sync Status

crm.customer.emails

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Customer Emails

crm.customer.payments

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Customer Payments

crm.data.steward.bulk.propose

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Data Steward Bulk Propose

crm.data.steward.inbox

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Data Steward Inbox

crm.data.steward.propose

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Data Steward Propose

crm.deal.advance

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Deal Advance

crm.deal.coach

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Deal Coach

crm.deal.coach.action

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Deal Coach Action

crm.deal.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Deal Get

crm.deal.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Deal Save

crm.deal.splits.get

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Deal Splits Get

crm.deal.splits.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Deal Splits Set

crm.deals.advance

Write. Scope: crm.write. Contract: explicit. Advance a CRM deal to another stage Required fields: deal_id, stage_id. Retry-safe with idempotency_key.

crm.deals.create

Write. Scope: crm.write. Contract: explicit. Create a CRM deal Required fields: title. Retry-safe with idempotency_key.

crm.deals.detail

Read. Scope: crm.read. Contract: explicit. Get one CRM deal Required fields: deal_id.

crm.deals.list

Read. Scope: crm.read. Contract: explicit. List CRM deals

crm.deals.list.route.crm.deals.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Deals List

crm.deals.update

Write. Scope: crm.write. Contract: explicit. Update a CRM deal Required fields: deal_id. Retry-safe with idempotency_key.

crm.detail

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Detail

crm.draft.outreach

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Draft Outreach

crm.enrich.account

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Enrich Account

crm.erase

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Erase

crm.events.catalog

Read. Scope: crm.read. Contract: explicit. List subscribable CRM domain events

crm.events.list

Read. Scope: crm.read. Contract: explicit. List durable CRM domain events

crm.export

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Export

crm.export.all

Read. Scope: crm.read, admin. Contract: route_inferred. Contact Export All

crm.field.add

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Field Add

crm.field.policy.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Field Policy Get

crm.field.policy.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Field Policy Save

crm.field.remove

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Field Remove

crm.fields.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Fields List

crm.forecast.board

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Forecast Board

crm.forecast.snapshot

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Forecast Snapshot

crm.form.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Form Save

crm.forms.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Forms List

crm.health.repair.catalog

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Health Repair Catalog

crm.health.smoke

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Health Smoke

crm.health.snapshot

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Health Snapshot

crm.home.persona.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Home Persona Set

crm.identity.rules.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Identity Rules Get

crm.identity.rules.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Identity Rules Save

crm.import.list

Read. Scope: crm.read, admin. Contract: route_inferred. Contact Import List

crm.import.run

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Import Run

crm.inbound.activity

Read. Scope: crm.read. Contract: source_inferred. Crm Inbound Activity

crm.inbound.endpoints.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Inbound Endpoints Delete Retry-safe with idempotency_key.

crm.inbound.endpoints.list

Read. Scope: crm.read. Contract: source_inferred. Crm Inbound Endpoints List

crm.inbound.endpoints.save

Write. Scope: crm.write. Contract: source_inferred. Crm Inbound Endpoints Save Retry-safe with idempotency_key.

crm.inbound.endpoints.test

Write. Scope: crm.write. Contract: source_inferred. Crm Inbound Endpoints Test Retry-safe with idempotency_key.

crm.leaderboard

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Leaderboard

crm.lifecycle.evaluate

Write. Scope: crm.write. Contract: source_inferred. Crm Lifecycle Evaluate Retry-safe with idempotency_key.

crm.lifecycle.rules.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Lifecycle Rules Delete Retry-safe with idempotency_key.

crm.lifecycle.rules.list

Read. Scope: crm.read. Contract: source_inferred. Crm Lifecycle Rules List

crm.lifecycle.rules.save

Write. Scope: crm.write. Contract: source_inferred. Crm Lifecycle Rules Save Retry-safe with idempotency_key.

crm.list

Read. Scope: crm.read, admin. Contract: route_inferred. Contacts List

crm.mailbox.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Mailbox Status

crm.meeting.book

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Meeting Book

crm.meeting.cancel

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Meeting Cancel

crm.meeting.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Meeting List

crm.meeting.reschedule.accept

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Meeting Reschedule Accept

crm.meeting.reschedule.reject

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Meeting Reschedule Reject

crm.merge

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Merge

crm.message.send

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Message Send

crm.messaging.provider.delete

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Messaging Provider Delete

crm.messaging.provider.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Messaging Provider Save

crm.messaging.provider.test

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Messaging Provider Test

crm.messaging.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Messaging Status

crm.next.action

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Next Action

crm.object.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Object Save

crm.objects.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Objects List

crm.offline.pull

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Offline Pull

crm.offline.push

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Offline Push

crm.open.chat

Read. Scope: crm.read, admin. Contract: route_inferred. Contact Open Chat

crm.open.ticket

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Open Ticket

crm.outreach.campaigns.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Campaigns Delete Retry-safe with idempotency_key.

crm.outreach.campaigns.list

Read. Scope: crm.read. Contract: source_inferred. Crm Outreach Campaigns List

crm.outreach.campaigns.save

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Campaigns Save Retry-safe with idempotency_key.

crm.outreach.campaigns.send

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Campaigns Send Retry-safe with idempotency_key.

crm.outreach.send

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Send Retry-safe with idempotency_key.

crm.outreach.templates.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Templates Delete Retry-safe with idempotency_key.

crm.outreach.templates.list

Read. Scope: crm.read. Contract: source_inferred. Crm Outreach Templates List

crm.outreach.templates.preview

Read. Scope: crm.read. Contract: source_inferred. Crm Outreach Templates Preview

crm.outreach.templates.save

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Templates Save Retry-safe with idempotency_key.

crm.payments.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Payments Status

crm.pipeline.data

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Pipeline Data

crm.price.resolve

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Price Resolve

crm.pricebook.entry.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Pricebook Entry Set

crm.pricebook.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Pricebook Save

crm.pricebooks.list

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Pricebooks List

crm.privacy_settings.get

Read. Scope: crm.read. Contract: source_inferred. Crm Privacy Settings Get

crm.privacy_settings.save

Write. Scope: admin. Contract: source_inferred. Crm Privacy Settings Save Retry-safe with idempotency_key.

crm.product.archive

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Product Archive

crm.product.revenue

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Product Revenue

crm.product.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Product Save

crm.products.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Products List

crm.propose.meeting

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Propose Meeting

crm.propose.outreach

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Propose Outreach

crm.prospecting.dashboard

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Prospecting Dashboard

crm.prospecting.icp.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Prospecting Icp Save

crm.prospecting.import

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Prospecting Import

crm.prospecting.research

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Prospecting Research

crm.prospecting.score

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Prospecting Score

crm.prospecting.sequence

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Prospecting Sequence

crm.qualification.checklist.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Qualification Checklist Get

crm.qualification.checklist.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Qualification Checklist Save

crm.quota.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Quota Save

crm.quote.get

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Quote Get

crm.quote.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Quote Save

crm.quotes.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Quotes List

crm.record.delete

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Delete

crm.record.fields.get

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Record Fields Get

crm.record.fields.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Fields Save

crm.record.get

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Record Get

crm.record.history

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Record History

crm.record.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Save

crm.record.share.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Share Set

crm.record.share.unset

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Share Unset

crm.record.shares

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Shares

crm.records.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Records List

crm.restore.email.consent

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Restore Email Consent

crm.resync.from.platform

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Resync From Platform

crm.retention.catalog

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Retention Catalog

crm.revert

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Revert

crm.runtime.policy.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Runtime Policy Get

crm.runtime.policy.remote.wipe

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Runtime Policy Remote Wipe

crm.runtime.policy.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Runtime Policy Save

crm.save

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Save

crm.scoring.rule.ai

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Scoring Rule Ai

crm.scoring.rule.delete

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Scoring Rule Delete

crm.scoring.rule.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Scoring Rule List

crm.scoring.rule.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Scoring Rule Save

crm.segments.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Segments Delete Retry-safe with idempotency_key.

crm.segments.list

Read. Scope: crm.read. Contract: source_inferred. Crm Segments List

crm.segments.members

Read. Scope: crm.read. Contract: source_inferred. Crm Segments Members

crm.segments.preview

Read. Scope: crm.read. Contract: source_inferred. Crm Segments Preview

crm.segments.save

Write. Scope: crm.write. Contract: source_inferred. Crm Segments Save Retry-safe with idempotency_key.

crm.segments.suggestions.accept

Write. Scope: crm.write. Contract: source_inferred. Crm Segments Suggestions Accept Retry-safe with idempotency_key.

crm.segments.suggestions.dismiss

Write. Scope: crm.write. Contract: source_inferred. Crm Segments Suggestions Dismiss Retry-safe with idempotency_key.

crm.segments.suggestions.list

Read. Scope: crm.read. Contract: source_inferred. Crm Segments Suggestions List

crm.semantic.search

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Semantic Search

crm.send.email

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Send Email

crm.send.email.route.crm.send.email

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Send Email

crm.send.for.signature

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Send For Signature

crm.send.payment.link

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Send Payment Link

crm.sequence.action

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Sequence Action

crm.sequence.runs

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Sequence Runs

crm.setup.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Setup Status

crm.sharing.rules.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Sharing Rules Get

crm.sharing.rules.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Sharing Rules Save

crm.subject.registry

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Subject Registry

crm.subscriptions.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Subscriptions List

crm.subscriptions.rollup

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Subscriptions Rollup

crm.subscriptions.sync

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Subscriptions Sync

crm.task.create

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Task Create

crm.tasks.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Tasks List

crm.team.parent.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Team Parent Set

crm.team.rules.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Team Rules Set

crm.team.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Team Save

crm.teams.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Teams List

crm.territory.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Territory Set

crm.video.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Video Status

crm.views.delete

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Views Delete

crm.views.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Views List

crm.views.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Views Save

crm.webhooks.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Webhooks Delete Retry-safe with idempotency_key.

crm.webhooks.list

Read. Scope: crm.read. Contract: explicit. List CRM outbound webhook endpoints and recent deliveries

crm.webhooks.save

Write. Scope: crm.write. Contract: source_inferred. Crm Webhooks Save Retry-safe with idempotency_key.

crm.webhooks.test

Write. Scope: crm.write. Contract: source_inferred. Crm Webhooks Test Retry-safe with idempotency_key.

crm.workflows.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Workflows Delete Retry-safe with idempotency_key.

crm.workflows.list

Read. Scope: crm.read. Contract: source_inferred. Crm Workflows List

crm.workflows.save

Write. Scope: crm.write. Contract: source_inferred. Crm Workflows Save Retry-safe with idempotency_key.

clients (44)

customers.analyze

Write. Scope: customers.write, journey.write, admin. Contract: explicit. Analyze a customer journey with AI Required fields: client_id. Retry-safe with idempotency_key.

customers.behaviour

Read. Scope: customers.read, admin. Contract: route_inferred. Cdp Behaviour

customers.behaviour.analyze

Write. Scope: customers.write, admin. Contract: route_inferred. Cdp Behaviour Analyze

customers.chat.embed.backfill

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Embed Backfill

customers.chat.embed.status

Read. Scope: customers.read, admin. Contract: declared_dynamic. Client Chat Embed Status

customers.chat.faq.ai.generate

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Ai Generate

customers.chat.faq.approve.all

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Approve All

customers.chat.faq.delete

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Delete

customers.chat.faq.delete.all

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Faq Delete All

customers.chat.faq.export

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Faq Export

customers.chat.faq.generate

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Generate

customers.chat.faq.import

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Import

customers.chat.faq.list

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq List

customers.chat.faq.save

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Save

customers.chat.faq.set.help

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Set Help

customers.chat.faq.set.help.all

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Set Help All

customers.chat.faq.status

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Status

customers.chat.grant.upload

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Grant Upload

customers.chat.help.set.slug

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Help Set Slug

customers.chat.knowledge.crawl.step

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Crawl Step

customers.chat.knowledge.delete

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Delete

customers.chat.knowledge.delete.all

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Knowledge Delete All

customers.chat.knowledge.delete.duplicates

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Knowledge Delete Duplicates

customers.chat.knowledge.duplicates

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Knowledge Duplicates

customers.chat.knowledge.export.json

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Knowledge Export Json

customers.chat.knowledge.import.json

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Import Json

customers.chat.knowledge.preview

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Preview

customers.chat.knowledge.recrawl

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Recrawl

customers.chat.knowledge.test.url

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Test Url

customers.chat.revoke.upload

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Revoke Upload

customers.chat.upload.agent.avatar

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Upload Agent Avatar

customers.chat.upload.ai.avatar

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Upload Ai Avatar

customers.chat.upload.icon

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Upload Icon

customers.client.analyze

Write. Scope: customers.write, admin. Contract: route_inferred. Cdp Client Analyze

customers.client.delete

Write. Scope: customers.write, admin. Contract: route_inferred. Cdp Client Delete

customers.client.export

Write. Scope: customers.write, admin. Contract: route_inferred. Cdp Client Export

customers.client.journey

Read. Scope: customers.read, admin. Contract: route_inferred. Cdp Client Journey

customers.client.prepare.outreach

Write. Scope: customers.write, admin. Contract: route_inferred. Cdp Client Prepare Outreach

customers.clients.list

Read. Scope: customers.read, admin. Contract: route_inferred. Cdp Clients List

customers.detail

Read. Scope: customers.read, admin. Contract: route_inferred. Client Detail

customers.get

Read. Scope: customers.read, crm.read, admin. Contract: explicit. Get a customer profile Required fields: client_id.

customers.journey

Read. Scope: customers.read, journey.read, admin. Contract: explicit. Get a complete customer journey Required fields: client_id.

customers.list

Read. Scope: customers.read, crm.read, admin. Contract: explicit. List known customers

customers.outreach.prepare

Write. Scope: customers.write, crm.write, admin. Contract: explicit. Prepare CRM outreach for a customer Required fields: client_id. Retry-safe with idempotency_key.

departments (1)

departments.list

Read. Scope: departments.read, admin. Contract: source_inferred. Departments List

engagement (164)

engagement.ab.autowinner

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ab Autowinner

engagement.ab.bandit

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ab Bandit

engagement.address.get

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Survey Address Get

engagement.address.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Address Save

engagement.ai.agent

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Agent

engagement.ai.analyze

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Analyze

engagement.ai.compile.profile

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Compile Profile

engagement.ai.copy

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Copy

engagement.ai.critique

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Ai Critique

engagement.ai.decide

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Decide

engagement.ai.design

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Design

engagement.ai.edit

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Edit

engagement.ai.generate

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Generate

engagement.ai.ideas

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Ai Ideas

engagement.ai.image

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Image

engagement.ai.image.edit

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Image Edit

engagement.ai.localize

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Localize

engagement.ai.logo

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Logo

engagement.ai.media.jobs

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Ai Media Jobs

engagement.ai.narrative

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Ai Narrative

engagement.ai.responsive

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Ai Responsive

engagement.ai.variants

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Variants

engagement.ai.video.start

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Video Start

engagement.ai.video.status

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Video Status

engagement.approval.decide

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Approval Decide

engagement.approval.request

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Approval Request

engagement.approvals.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Approvals List

engagement.asset.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Asset Delete

engagement.asset.upload

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Asset Upload

engagement.assets.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Assets List

engagement.audience.materialize

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Audience Materialize

engagement.audience.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Audience Save

engagement.audience.test

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Audience Test

engagement.audit.export

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Audit Export

engagement.autoresponder.get

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Autoresponder Get

engagement.autoresponder.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Autoresponder Save

engagement.bank.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Bank Delete

engagement.bank.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Survey Bank List

engagement.bank.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Bank Save

engagement.bank.used

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Bank Used

engagement.blackouts.get

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Blackouts Get

engagement.blackouts.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Blackouts Save

engagement.brand.kit.bootstrap

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Brand Kit Bootstrap

engagement.brand.kit.font.upload

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Brand Kit Font Upload

engagement.brand.kit.get

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Brand Kit Get

engagement.brand.kit.get.route.survey.brand.kit.get

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Survey Brand Kit Get

engagement.brand.kit.save

Write. Scope: engagement.write, admin. Contract: declared_dynamic. Promo Brand Kit Save

engagement.brand.kit.save.route.survey.brand.kit.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Brand Kit Save

engagement.campaign.archive

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Archive

engagement.campaign.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Delete

engagement.campaign.duplicate

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign Duplicate

engagement.campaign.get

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign Get

engagement.campaign.launch

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Campaign Launch

engagement.campaign.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign List

engagement.campaign.pause

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign Pause

engagement.campaign.preview

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign Preview

engagement.campaign.publish

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Publish

engagement.campaign.rollback

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Rollback

engagement.campaign.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Save

engagement.campaign.save.route.survey.campaign.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Campaign Save

engagement.campaign.toggle

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Toggle

engagement.campaign.versions

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign Versions

engagement.comment.add

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Comment Add

engagement.comments.add

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Comments Add

engagement.comments.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Comments Delete

engagement.comments.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Comments List

engagement.comments.list.route.survey.comments.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Comments List

engagement.comments.resolve

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Comments Resolve

engagement.connectors.catalog

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Connectors Catalog

engagement.coupon.providers

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Coupon Providers

engagement.coupons.clear

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Coupons Clear

engagement.coupons.stats

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Coupons Stats

engagement.coupons.upload

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Coupons Upload

engagement.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Announcement Delete

engagement.delete.route.tour.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Tour Delete

engagement.delivery.analytics

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Delivery Analytics

engagement.delivery.dashboard

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Delivery Dashboard

engagement.deployment.ab.promote

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Deployment Ab Promote

engagement.deployment.ab.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Deployment Ab Save

engagement.deployment.publish

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Deployment Publish

engagement.deployment.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Deployment Save

engagement.deployment.status

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Deployment Status

engagement.detail

Read. Scope: engagement.read, admin. Contract: route_inferred. Campaign Detail

engagement.digest.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Digest Save

engagement.feed.catalog

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Feed Catalog

engagement.feed.items

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Feed Items

engagement.geo.preview

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Geo Preview

engagement.idle.cron.set

Write. Scope: engagement.write, admin. Contract: route_inferred. Proactive Idle Cron Set

engagement.import.create

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Import Create

engagement.import.replay

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Import Replay

engagement.leads.export

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Leads Export

engagement.leads.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Leads List

engagement.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Announcements List

engagement.list.route.tours.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Tours List

engagement.module.set.ai.live

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Module Set Ai Live

engagement.module.set.custom.html

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Module Set Custom Html

engagement.module.set.enabled

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Module Set Enabled

engagement.module.status

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Module Status

engagement.onsite.preview

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Onsite Preview

engagement.pause.all

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Pause All

engagement.presence

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Presence

engagement.preview.share

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Preview Share

engagement.push.draft

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Push Draft

engagement.recipients.issue

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Recipients Issue

engagement.recipients.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Recipients List

engagement.recipients.revoke

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Recipients Revoke

engagement.response.detail

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Response Detail

engagement.responses.browse

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Responses Browse

engagement.rule.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Proactive Rule Delete

engagement.rule.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Proactive Rule Save

engagement.rule.stats

Read. Scope: engagement.read, admin. Contract: route_inferred. Proactive Rule Stats

engagement.rule.test

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Rule Test

engagement.rule.toggle

Write. Scope: engagement.write, admin. Contract: route_inferred. Proactive Rule Toggle

engagement.rules.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Proactive Rules List

engagement.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Announcement Save

engagement.save.route.tour.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Tour Save

engagement.stats

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Stats

engagement.stats.route.tour.stats

Read. Scope: engagement.read, admin. Contract: route_inferred. Tour Stats

engagement.studio.a11y

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio A11y

engagement.studio.ai.generate

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Ai Generate

engagement.studio.ai.insights

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Ai Insights

engagement.studio.ai.target

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Ai Target

engagement.studio.archive

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Archive

engagement.studio.assets

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Survey Studio Assets

engagement.studio.create

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Create

engagement.studio.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Delete

engagement.studio.duplicate

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Duplicate

engagement.studio.event

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Studio Event

engagement.studio.get

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Studio Get

engagement.studio.governance

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Governance

engagement.studio.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Survey Studio List

engagement.studio.preview

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Studio Preview

engagement.studio.preview.link

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Studio Preview Link

engagement.studio.publish

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Publish

engagement.studio.rename

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Rename

engagement.studio.revert

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Revert

engagement.studio.save.draft

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Save Draft

engagement.studio.save.targeting

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Save Targeting

engagement.studio.set.active

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Set Active

engagement.studio.set.status

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Set Status

engagement.studio.template.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Template Delete

engagement.studio.template.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Template Save

engagement.studio.tpl.preview

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Tpl Preview

engagement.studio.upload

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Upload

engagement.studio.webhook

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Webhook

engagement.targeting.simulate

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Targeting Simulate

engagement.template.apply

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Template Apply

engagement.template.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Template List

engagement.template.save.custom

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Template Save Custom

engagement.toggle

Write. Scope: engagement.write, admin. Contract: route_inferred. Announcement Toggle

engagement.toggle.route.tour.toggle

Write. Scope: engagement.write, admin. Contract: route_inferred. Tour Toggle

engagement.trigger.set.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Trigger Set Save

engagement.variant.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Variant Delete

engagement.variant.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Variant List

engagement.variant.promote

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Variant Promote

engagement.variant.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Variant Save

engagement.version.compare

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Version Compare

engagement.version.get

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Version Get

engagement.version.label

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Version Label

engagement.webhook.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Webhook Delete

engagement.webhook.replay

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Webhook Replay

engagement.webhook.run

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Webhook Run

engagement.webhook.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Webhook Save

engagement.widget.data

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Tour Widget Data

feedback (8)

feedback.analytics

Read. Scope: feedback.read, admin. Contract: source_inferred. Feedback Analytics

feedback.detractors

Read. Scope: feedback.read, admin. Contract: source_inferred. Feedback Detractors

feedback.get

Read. Scope: feedback.read, admin. Contract: source_inferred. Feedback Get

feedback.ingest

Write. Scope: feedback.write, admin. Contract: explicit. Ingest a feedback record or external review

feedback.list

Read. Scope: feedback.read, admin. Contract: source_inferred. Feedback List

feedback.overview

Read. Scope: feedback.read, admin. Contract: source_inferred. Feedback Overview

feedback.sources.list

Read. Scope: feedback.read, admin. Contract: explicit. List Voice of Customer feedback sources

feedback.update

Write. Scope: feedback.write, admin. Contract: source_inferred. Feedback Update Retry-safe with idempotency_key.

files (1)

files.get

Read. Scope: files.read, admin. Contract: source_inferred. Files Get

intent (6)

intent.clear

Write. Scope: intent.write, admin. Contract: declared_dynamic. Intent Clear

intent.funnel

Read. Scope: intent.read, analytics.read, admin. Contract: explicit. Read the intent funnel

intent.funnel.aggregate

Read. Scope: intent.read, admin. Contract: route_inferred. Intent Funnel Aggregate

intent.funnel.route.intent.funnel

Read. Scope: intent.read, admin. Contract: route_inferred. Intent Funnel

intent.summary

Read. Scope: intent.read, analytics.read, admin. Contract: explicit. Read intent summaries

intent.summary.route.intent.summary

Read. Scope: intent.read, admin. Contract: route_inferred. Intent Summary

kb (6)

kb.faq.delete

Write. Scope: kb.write, admin. Contract: source_inferred. Kb Faq Delete Retry-safe with idempotency_key.

kb.faq.generate

Write. Scope: kb.write, admin. Contract: source_inferred. Kb Faq Generate Retry-safe with idempotency_key.

kb.faq.import

Write. Scope: kb.write, admin. Contract: source_inferred. Kb Faq Import Retry-safe with idempotency_key.

kb.faq.list

Read. Scope: kb.read, read, admin. Contract: source_inferred. Kb Faq List

kb.faq.save

Write. Scope: kb.write, admin. Contract: source_inferred. Kb Faq Save Retry-safe with idempotency_key.

kb.faq.set_status

Write. Scope: kb.write, admin. Contract: source_inferred. Kb Faq Set Status Retry-safe with idempotency_key.

knowledge (77)

knowledge.analytics.get

Read. Scope: kb.read, admin. Contract: route_inferred. Help Analytics Get

knowledge.analytics.toggle

Write. Scope: kb.write, admin. Contract: route_inferred. Help Analytics Toggle

knowledge.article.ai.refine

Read. Scope: kb.read, admin. Contract: route_inferred. Help Article Ai Refine

knowledge.article.class.bulk

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Class Bulk

knowledge.article.delete

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Delete

knowledge.article.publish

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Publish

knowledge.article.save

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Save

knowledge.article.set.category

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Set Category

knowledge.article.set.public

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Set Public

knowledge.articles.ai.generate

Write. Scope: kb.write, admin. Contract: route_inferred. Help Articles Ai Generate

knowledge.articles.bulk.delete

Write. Scope: kb.write, admin. Contract: route_inferred. Help Articles Bulk Delete

knowledge.articles.count

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Articles Count

knowledge.articles.ids

Read. Scope: kb.read, admin. Contract: route_inferred. Help Articles Ids

knowledge.articles.list

Read. Scope: kb.read, admin. Contract: route_inferred. Help Articles List

knowledge.articles.set.public.all

Write. Scope: kb.write, admin. Contract: route_inferred. Help Articles Set Public All

knowledge.categories.ai.merge

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Categories Ai Merge

knowledge.categories.bulk.delete

Write. Scope: kb.write, admin. Contract: route_inferred. Help Categories Bulk Delete

knowledge.categories.list

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Categories List

knowledge.categories.merge.dupes

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Categories Merge Dupes

knowledge.category.delete

Write. Scope: kb.write, admin. Contract: route_inferred. Help Category Delete

knowledge.category.get

Read. Scope: kb.read, admin. Contract: route_inferred. Help Category Get

knowledge.category.save

Write. Scope: kb.write, admin. Contract: route_inferred. Help Category Save

knowledge.center.article.image.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Article Image Upload

knowledge.center.favicon.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Favicon Upload

knowledge.center.hero.dark.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Hero Dark Upload

knowledge.center.hero.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Hero Upload

knowledge.center.logo.dark.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Logo Dark Upload

knowledge.center.logo.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Logo Upload

knowledge.center.settings.get

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Center Settings Get

knowledge.center.settings.save

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Settings Save

knowledge.center.translate.estimate

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Translate Estimate

knowledge.center.translate.run

Write. Scope: kb.write, admin. Contract: route_inferred. Help Center Translate Run

knowledge.center.translate.status

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Center Translate Status

knowledge.center.translate.stop

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Translate Stop

knowledge.center.widget.icon.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Widget Icon Upload

knowledge.comments.deliver.notifications

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Comments Deliver Notifications

knowledge.comments.maintenance

Write. Scope: kb.write, admin. Contract: route_inferred. Help Comments Maintenance

knowledge.comments.moderate

Write. Scope: kb.write, admin. Contract: route_inferred. Help Comments Moderate

knowledge.comments.moderate.route.kb.comments.moderate

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Comments Moderate

knowledge.comments.moderation.list

Read. Scope: kb.read, admin. Contract: route_inferred. Help Comments Moderation List

knowledge.comments.moderation.list.route.kb.comments.moderation.list

Read. Scope: kb.read, admin. Contract: route_inferred. Kb Comments Moderation List

knowledge.comments.notification.run

Write. Scope: kb.write, admin. Contract: route_inferred. Help Comments Notification Run

knowledge.import.batches

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Import Batches

knowledge.import.connectors

Write. Scope: kb.write, admin. Contract: declared_dynamic. Kb Import Connectors

knowledge.import.csv.preview

Read. Scope: kb.read, admin. Contract: route_inferred. Kb Import Csv Preview

knowledge.import.preview

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Import Preview

knowledge.import.resync

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Import Resync

knowledge.import.run

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Import Run

knowledge.import.undo

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Import Undo

knowledge.insights.generate

Write. Scope: kb.write, admin. Contract: route_inferred. Help Insights Generate

knowledge.insights.get

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Insights Get

knowledge.mark.reviewed

Write. Scope: kb.write, admin. Contract: declared_dynamic. Kb Mark Reviewed

knowledge.missed.dismiss

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Missed Dismiss

knowledge.missed.draft.article

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Missed Draft Article

knowledge.missed.list

Read. Scope: kb.read, admin. Contract: route_inferred. Kb Missed List

knowledge.missed.mark.published

Read. Scope: kb.read, admin. Contract: route_inferred. Kb Missed Mark Published

knowledge.missed.refresh

Write. Scope: kb.write, admin. Contract: declared_dynamic. Kb Missed Refresh

knowledge.organize.descriptions

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Organize Descriptions

knowledge.organize.status

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Organize Status

knowledge.organize.step

Write. Scope: kb.write, admin. Contract: route_inferred. Help Organize Step

knowledge.publish

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Publish

knowledge.reformat.revert

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Reformat Revert

knowledge.reformat.status

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Reformat Status

knowledge.reformat.step

Write. Scope: kb.write, admin. Contract: route_inferred. Help Reformat Step

knowledge.review.queue

Read. Scope: kb.read, admin. Contract: declared_dynamic. Kb Review Queue

knowledge.search.gaps

Read. Scope: kb.read, admin. Contract: declared_dynamic. Kb Search Gaps

knowledge.set.featured

Write. Scope: kb.write, admin. Contract: route_inferred. Help Set Featured

knowledge.set.visibility

Write. Scope: kb.write, admin. Contract: declared_dynamic. Kb Set Visibility

knowledge.subdomain.allocate

Write. Scope: kb.write, admin. Contract: route_inferred. Help Subdomain Allocate

knowledge.subdomain.check

Read. Scope: kb.read, admin. Contract: route_inferred. Help Subdomain Check

knowledge.subdomain.release

Write. Scope: kb.write, admin. Contract: route_inferred. Help Subdomain Release

knowledge.taxonomy.organize

Write. Scope: kb.write, admin. Contract: declared_dynamic. Kb Taxonomy Organize

knowledge.taxonomy.status

Read. Scope: kb.read, admin. Contract: declared_dynamic. Kb Taxonomy Status

knowledge.taxonomy.step

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Taxonomy Step

knowledge.widget.categories

Read. Scope: kb.read, admin. Contract: route_inferred. Kb Widget Categories

knowledge.widget.publish

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Widget Publish

knowledge.widget.targets

Read. Scope: kb.read, admin. Contract: route_inferred. Kb Widget Targets

leads (6)

leads.delete

Write. Scope: leads.write, crm.write, admin. Contract: explicit. Delete a lead Required fields: lead_id. Retry-safe with idempotency_key.

leads.delete.route.lead.delete

Write. Scope: leads.write, admin. Contract: route_inferred. Lead Delete

leads.list

Read. Scope: leads.read, crm.read, admin. Contract: explicit. List leads

leads.stats

Read. Scope: leads.read, analytics.read, admin. Contract: explicit. Get lead statistics

leads.stats.route.leads.stats

Read. Scope: leads.read, admin. Contract: declared_dynamic. Leads Stats

leads.update

Write. Scope: leads.write, crm.write, admin. Contract: explicit. Update a lead Required fields: lead_id, status. Retry-safe with idempotency_key.

méta (4)

meta.action

Read. Scope: none. Contract: explicit. Get one General API action contract Required fields: name.

meta.actions

Read. Scope: none. Contract: explicit. List the complete General API contract

meta.me

Read. Scope: none. Contract: explicit. Describe the authenticated API key and active workspace

meta.scopes

Read. Scope: none. Contract: explicit. List API scopes and the actions protected by each scope

notifications (1)

notifications.list

Read. Scope: notifications.read, admin. Contract: source_inferred. Notifications List

plateforme (345)

platform.add.announcement

Write. Scope: platform.write, admin. Contract: declared_dynamic. Add Announcement

platform.add.kb.article

Write. Scope: platform.write, admin. Contract: route_inferred. Add Kb Article

platform.add.todo.item

Write. Scope: platform.write, admin. Contract: route_inferred. Add Todo Item

platform.ai.action.lookup

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Action Lookup

platform.ai.anomaly.detect

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Anomaly Detect

platform.ai.brain.add

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain Add

platform.ai.brain.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain Delete

platform.ai.brain.edit

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain Edit

platform.ai.brain.list

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain List

platform.ai.brain.pin

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain Pin

platform.ai.brain.status

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain Status

platform.ai.chat

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Chat

platform.ai.confidence.stats

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Confidence Stats

platform.ai.context.lookup

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Context Lookup

platform.ai.daily.brief

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Daily Brief

platform.ai.daily.brief.check

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Daily Brief Check

platform.ai.daily.brief.dismiss

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Daily Brief Dismiss

platform.ai.daily.brief.fetch

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Daily Brief Fetch

platform.ai.eval.control.summary

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Eval Control Summary

platform.ai.eval.feedback.queue

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Eval Feedback Queue

platform.ai.eval.kb.gap.queue

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Eval Kb Gap Queue

platform.ai.eval.load

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Eval Load

platform.ai.eval.replay.history

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Eval Replay History

platform.ai.eval.run

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Eval Run

platform.ai.eval.save

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Eval Save

platform.ai.eval.score.answer

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Eval Score Answer

platform.ai.eval.simulate

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Eval Simulate

platform.ai.feedback.analysis

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Feedback Analysis

platform.ai.feedback.stats

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Feedback Stats

platform.ai.history.archive

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Archive

platform.ai.history.clear.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Clear All

platform.ai.history.delete

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Delete

platform.ai.history.export.csv

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Export Csv

platform.ai.history.get

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Get

platform.ai.history.list

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History List

platform.ai.history.stats

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Stats

platform.ai.insight.clear

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Insight Clear

platform.ai.insight.history

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Insight History

platform.ai.insight.report.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Insight Report Delete

platform.ai.insight.report.get

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Insight Report Get

platform.ai.instructions.compress

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Instructions Compress

platform.ai.instructions.connector.templates

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Instructions Connector Templates

platform.ai.instructions.example

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Instructions Example

platform.ai.instructions.load

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Instructions Load

platform.ai.instructions.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Instructions Preview

platform.ai.instructions.reset

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Instructions Reset

platform.ai.instructions.save

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Instructions Save

platform.ai.page.insights

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Page Insights

platform.ai.popup.regen

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Popup Regen

platform.ai.quality.view

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Quality View

platform.ai.reasoning.chain.get

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Reasoning Chain Get

platform.ai.score.lead

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Score Lead

platform.ai.smart.alerts

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Smart Alerts

platform.ai.triage.accuracy

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Triage Accuracy

platform.ai.whmcs.chat

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Whmcs Chat

platform.ai.writing

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Writing

platform.api.keys.catalog

Read. Scope: platform.read, admin. Contract: declared_dynamic. Api Keys Catalog

platform.api.keys.create

Write. Scope: platform.write, admin. Contract: route_inferred. Api Keys Create

platform.api.keys.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Api Keys Delete

platform.api.keys.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Api Keys List

platform.api.keys.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Api Keys Revoke

platform.api.keys.update

Write. Scope: platform.write, admin. Contract: route_inferred. Api Keys Update

platform.audit.export

Read. Scope: platform.read, admin. Contract: route_inferred. Audit Export

platform.blocked

Write. Scope: platform.write, admin. Contract: route_inferred. Blocked

platform.campaigns

Read. Scope: platform.read, admin. Contract: declared_dynamic. Campaigns

platform.chart.browsers

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Browsers

platform.chart.countries

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Countries

platform.chart.devices

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Devices

platform.chart.hourly

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Hourly

platform.chart.new.returning

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart New Returning

platform.chart.os

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Os

platform.chart.sources

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Sources

platform.chart.visitors

Read. Scope: platform.read, admin. Contract: route_inferred. Chart Visitors

platform.chatbot.flow.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Flow Delete

platform.chatbot.flow.get

Read. Scope: platform.read, admin. Contract: route_inferred. Chatbot Flow Get

platform.chatbot.flow.save

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Flow Save

platform.chatbot.flow.stats

Read. Scope: platform.read, admin. Contract: route_inferred. Chatbot Flow Stats

platform.chatbot.flow.test.advance

Read. Scope: platform.read, admin. Contract: route_inferred. Chatbot Flow Test Advance

platform.chatbot.flow.test.start

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Flow Test Start

platform.chatbot.flow.toggle

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Flow Toggle

platform.chatbot.flows.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chatbot Flows List

platform.chatbot.flows.widget.data

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chatbot Flows Widget Data

platform.chatbot.node.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Node Delete

platform.chatbot.node.save

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Node Save

platform.chatbot.nodes.list

Read. Scope: platform.read, admin. Contract: route_inferred. Chatbot Nodes List

platform.clear.admin.chat.history

Write. Scope: platform.write, admin. Contract: declared_dynamic. Clear Admin Chat History

platform.command.center.view

Read. Scope: platform.read, admin. Contract: declared_dynamic. Command Center View

platform.complete.todo.item

Write. Scope: platform.write, admin. Contract: route_inferred. Complete Todo Item

platform.consent.log.list

Read. Scope: platform.read, admin. Contract: route_inferred. Consent Log List

platform.countries

Read. Scope: platform.read, admin. Contract: declared_dynamic. Countries

platform.country.detail

Read. Scope: platform.read, admin. Contract: route_inferred. Country Detail

platform.custom.code.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Custom Code Approve

platform.custom.code.disable

Write. Scope: platform.write, admin. Contract: route_inferred. Custom Code Disable

platform.custom.code.reject

Write. Scope: platform.write, admin. Contract: route_inferred. Custom Code Reject

platform.custom.code.rollback

Write. Scope: platform.write, admin. Contract: route_inferred. Custom Code Rollback

platform.custom.code.status

Read. Scope: platform.read, admin. Contract: route_inferred. Custom Code Status

platform.delete.todo.item

Write. Scope: platform.write, admin. Contract: route_inferred. Delete Todo Item

platform.devices

Read. Scope: platform.read, admin. Contract: declared_dynamic. Devices

platform.diag.check.resolutions

Read. Scope: platform.read, admin. Contract: declared_dynamic. Diag Check Resolutions

platform.diag.dismiss

Write. Scope: platform.write, admin. Contract: route_inferred. Diag Dismiss

platform.diag.recheck

Read. Scope: platform.read, admin. Contract: route_inferred. Diag Recheck

platform.diag.recheck.all

Read. Scope: platform.read, admin. Contract: declared_dynamic. Diag Recheck All

platform.diag.report

Write. Scope: platform.write, admin. Contract: route_inferred. Diag Report

platform.diag.unmute

Read. Scope: platform.read, admin. Contract: route_inferred. Diag Unmute

platform.dismiss.credit.alert

Write. Scope: platform.write, admin. Contract: route_inferred. Dismiss Credit Alert

platform.domain.knowledge.ai.generate

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Knowledge Ai Generate

platform.domain.knowledge.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Knowledge Delete

platform.domain.knowledge.list

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Knowledge List

platform.domain.knowledge.save

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Knowledge Save

platform.domain.knowledge.toggle

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Knowledge Toggle

platform.domain.verify.add

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Verify Add

platform.domain.verify.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Domain Verify List

platform.domain.verify.recheck

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Verify Recheck

platform.domain.verify.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Verify Remove

platform.dynamic.action.dispatch

Write. Scope: platform.write, admin. Contract: route_inferred. Dynamic Action Dispatch

platform.events.clear.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Events Clear All

platform.events.list

Read. Scope: platform.read, admin. Contract: route_inferred. Events List

platform.experiment.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Experiment Delete

platform.experiment.results

Read. Scope: platform.read, admin. Contract: route_inferred. Experiment Results

platform.experiment.save

Write. Scope: platform.write, admin. Contract: route_inferred. Experiment Save

platform.experiments.clear.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Experiments Clear All

platform.experiments.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Experiments List

platform.failed.logins.clear.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Failed Logins Clear All

platform.failed.logins.clear.history

Write. Scope: platform.write, admin. Contract: declared_dynamic. Failed Logins Clear History

platform.failed.logins.journey

Write. Scope: platform.write, admin. Contract: route_inferred. Failed Logins Journey

platform.failed.logins.list

Write. Scope: platform.write, admin. Contract: declared_dynamic. Failed Logins List

platform.failed.logins.unblock

Write. Scope: platform.write, admin. Contract: route_inferred. Failed Logins Unblock

platform.feedback.analysis.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Analysis Get

platform.feedback.analysis.run

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Analysis Run

platform.feedback.analytics.all

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics All

platform.feedback.analytics.detractors

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Detractors

platform.feedback.analytics.metrics

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Metrics

platform.feedback.analytics.overview

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Overview

platform.feedback.analytics.segments

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Segments

platform.feedback.analytics.sentiment

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Sentiment

platform.feedback.analytics.themes

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Themes

platform.feedback.analytics.trends

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Trends

platform.feedback.assignees.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Assignees List

platform.feedback.event.outbox.drain

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Event Outbox Drain

platform.feedback.exports.create

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Exports Create

platform.feedback.exports.get

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Exports Get

platform.feedback.external.review.ingest

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback External Review Ingest

platform.feedback.ingest.create

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Ingest Create

platform.feedback.items.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Assign

platform.feedback.items.evidence

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Items Evidence

platform.feedback.items.follow.up.complete

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Follow Up Complete

platform.feedback.items.follow.up.set

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Follow Up Set Required fields: bool.

platform.feedback.items.get

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Items Get

platform.feedback.items.list

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Items List

platform.feedback.items.mark.read

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Mark Read

platform.feedback.items.notes.add

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Notes Add

platform.feedback.items.set.priority

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Set Priority

platform.feedback.items.set.status

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Set Status

platform.feedback.items.tags.add

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Tags Add

platform.feedback.items.tags.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Tags Remove

platform.feedback.list

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback List

platform.feedback.reconciliation

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Reconciliation

platform.feedback.reports.delete

Write. Scope: platform.write, admin. Contract: declared_dynamic. Feedback Reports Delete

platform.feedback.reports.email

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Reports Email

platform.feedback.reports.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Reports Get

platform.feedback.reports.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Reports List

platform.feedback.satisfaction.advice.last

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Satisfaction Advice Last

platform.feedback.satisfaction.advise

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Satisfaction Advise

platform.feedback.satisfaction.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Satisfaction Overview

platform.feedback.sources.health

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Sources Health

platform.feedback.sources.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Sources List

platform.feedback.sources.rebuild

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Sources Rebuild

platform.feedback.sources.replay

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Sources Replay

platform.feedback.stats

Write. Scope: platform.write, admin. Contract: declared_dynamic. Feedback Stats

platform.fx.refresh.now

Write. Scope: platform.write, admin. Contract: declared_dynamic. Fx Refresh Now

platform.geoip.autodetect

Read. Scope: platform.read, admin. Contract: declared_dynamic. Geoip Autodetect

platform.get.admin.chat.history

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Admin Chat History

platform.get.ai.snapshot

Write. Scope: platform.write, admin. Contract: route_inferred. Get Ai Snapshot

platform.get.campaign.groups

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Campaign Groups

platform.get.client.chat.knowledge.overview

Write. Scope: platform.write, admin. Contract: declared_dynamic. Get Client Chat Knowledge Overview

platform.get.kb.categories

Read. Scope: platform.read, admin. Contract: route_inferred. Get Kb Categories

platform.get.live.health.snapshot

Read. Scope: platform.read, admin. Contract: route_inferred. Get Live Health Snapshot

platform.get.pwa.chat.prefs

Write. Scope: platform.write, admin. Contract: declared_dynamic. Get Pwa Chat Prefs

platform.get.servers

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Servers

platform.get.survey.config

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Survey Config

platform.get.ticket.options

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Ticket Options

platform.get.ticket.thread

Read. Scope: platform.read, admin. Contract: route_inferred. Get Ticket Thread

platform.get.todo.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Todo List

platform.get.whmcs.health.snapshot

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Whmcs Health Snapshot

platform.get.widget.advanced

Read. Scope: platform.read, admin. Contract: route_inferred. Get Widget Advanced

platform.groups.create

Write. Scope: platform.write, admin. Contract: route_inferred. Groups Create

platform.groups.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Groups Delete

platform.groups.list

Write. Scope: platform.write, admin. Contract: route_inferred. Groups List

platform.groups.rename

Write. Scope: platform.write, admin. Contract: route_inferred. Groups Rename

platform.groups.set.primary

Write. Scope: platform.write, admin. Contract: route_inferred. Groups Set Primary

platform.hc.preview.mint

Read. Scope: platform.read, admin. Contract: route_inferred. Hc Preview Mint

platform.hc.template.apply

Write. Scope: platform.write, admin. Contract: route_inferred. Hc Template Apply

platform.hc.template.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Hc Template Delete

platform.hc.template.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Hc Template Preview

platform.hc.template.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hc Template Save

platform.hc.templates.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hc Templates List

platform.hc.translation.review.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hc Translation Review Get

platform.hc.translation.review.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hc Translation Review List

platform.hc.translation.review.revert

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hc Translation Review Revert

platform.hc.translation.review.save

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hc Translation Review Save

platform.heatmap

Read. Scope: platform.read, admin. Contract: route_inferred. Heatmap

platform.inbound.activity.feed

Write. Scope: platform.write, admin. Contract: route_inferred. Inbound Activity Feed

platform.inbound.endpoints.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Inbound Endpoints Delete

platform.inbound.endpoints.list

Write. Scope: platform.write, admin. Contract: route_inferred. Inbound Endpoints List

platform.inbound.endpoints.save

Write. Scope: platform.write, admin. Contract: route_inferred. Inbound Endpoints Save

platform.inbound.endpoints.test

Write. Scope: platform.write, admin. Contract: route_inferred. Inbound Endpoints Test

platform.ip.classify

Read. Scope: platform.read, admin. Contract: route_inferred. Ip Classify

platform.js.errors.clear.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Js Errors Clear All

platform.js.errors.list

Read. Scope: platform.read, admin. Contract: route_inferred. Js Errors List

platform.js.issue.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Js Issue Assign

platform.js.issue.update

Write. Scope: platform.write, admin. Contract: route_inferred. Js Issue Update

platform.js.sourcemap.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Js Sourcemap Delete

platform.js.sourcemap.upload

Write. Scope: platform.write, admin. Contract: route_inferred. Js Sourcemap Upload

platform.js.sourcemaps.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Js Sourcemaps List

platform.leads

Read. Scope: platform.read, admin. Contract: route_inferred. Leads

platform.license.delete

Write. Scope: platform.write, admin. Contract: declared_dynamic. License Delete

platform.license.diagnostics

Read. Scope: platform.read, admin. Contract: declared_dynamic. License Diagnostics

platform.license.force.check

Read. Scope: platform.read, admin. Contract: declared_dynamic. License Force Check

platform.license.preflight

Read. Scope: platform.read, admin. Contract: declared_dynamic. License Preflight

platform.license.save

Write. Scope: platform.write, admin. Contract: route_inferred. License Save

platform.license.status

Read. Scope: platform.read, admin. Contract: declared_dynamic. License Status

platform.license.verify.now

Write. Scope: platform.write, admin. Contract: declared_dynamic. License Verify Now

platform.lifecycle.evaluate

Read. Scope: platform.read, admin. Contract: route_inferred. Lifecycle Evaluate

platform.lifecycle.rule.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Lifecycle Rule Delete

platform.lifecycle.rule.list

Read. Scope: platform.read, admin. Contract: route_inferred. Lifecycle Rule List

platform.lifecycle.rule.save

Write. Scope: platform.write, admin. Contract: route_inferred. Lifecycle Rule Save

platform.list.assignable.sites

Read. Scope: platform.read, admin. Contract: declared_dynamic. List Assignable Sites

platform.list.network.issues

Read. Scope: platform.read, admin. Contract: declared_dynamic. List Network Issues

platform.list.sites

Read. Scope: platform.read, admin. Contract: declared_dynamic. List Sites

platform.lookup.client.full

Read. Scope: platform.read, admin. Contract: route_inferred. Lookup Client Full

platform.mark.feedback.read

Write. Scope: platform.write, admin. Contract: route_inferred. Mark Feedback Read

platform.marketplace.local.install

Write. Scope: platform.write, admin. Contract: route_inferred. Marketplace Local Install

platform.marketplace.local.uninstall

Write. Scope: platform.write, admin. Contract: route_inferred. Marketplace Local Uninstall

platform.marketplace.session.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Marketplace Session Get

platform.marketplace.session.set

Write. Scope: platform.write, admin. Contract: route_inferred. Marketplace Session Set

platform.message.contact.locale

Write. Scope: platform.write, admin. Contract: route_inferred. Message Contact Locale

platform.message.outbound.convert

Write. Scope: platform.write, admin. Contract: route_inferred. Message Outbound Convert

platform.message.translate

Write. Scope: platform.write, admin. Contract: route_inferred. Message Translate

platform.message.translation.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Message Translation Delete

platform.message.translation.save

Write. Scope: platform.write, admin. Contract: route_inferred. Message Translation Save

platform.meta.channels.disconnect

Write. Scope: platform.write, admin. Contract: declared_dynamic. Meta Channels Disconnect

platform.onboarding.action

Read. Scope: platform.read, admin. Contract: declared_dynamic. Onboarding Action

platform.onboarding.readiness

Read. Scope: platform.read, admin. Contract: declared_dynamic. Onboarding Readiness

platform.open.network.issue

Read. Scope: platform.read, admin. Contract: declared_dynamic. Open Network Issue

platform.open.ticket

Read. Scope: platform.read, admin. Contract: route_inferred. Open Ticket

platform.operator.text.translate

Write. Scope: platform.write, admin. Contract: route_inferred. Operator Text Translate

platform.opsiq.backup.export

Read. Scope: platform.read, admin. Contract: declared_dynamic. Download a full backup in one request (retired)

platform.opsiq.backup.import

Write. Scope: platform.write, admin. Contract: route_inferred. Opsiq Backup Import

platform.opsiq.backup.import.start

Write. Scope: platform.write, admin. Contract: route_inferred. Opsiq Backup Import Start

platform.opsiq.backup.job.start

Write. Scope: platform.write, admin. Contract: route_inferred. Opsiq Backup Job Start

platform.opsiq.backup.job.status

Write. Scope: platform.write, admin. Contract: route_inferred. Opsiq Backup Job Status

platform.outreach.campaign.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Campaign Delete

platform.outreach.campaign.list

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Campaign List

platform.outreach.campaign.save

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Campaign Save

platform.outreach.campaign.send

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Campaign Send

platform.outreach.compose.send

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Compose Send

platform.outreach.replies.list

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Replies List

platform.outreach.reply.ai

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Reply Ai

platform.outreach.reply.mark

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Reply Mark

platform.outreach.reply.pref

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Reply Pref

platform.outreach.reply.send

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Reply Send

platform.outreach.reply.thread

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Reply Thread

platform.outreach.template.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Template Delete

platform.outreach.template.list

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Template List

platform.outreach.template.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Template Preview

platform.outreach.template.save

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Template Save

platform.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Overview

platform.overview.hub.view

Read. Scope: platform.read, admin. Contract: route_inferred. Overview Hub View

platform.overview.intelligence.graph

Read. Scope: platform.read, admin. Contract: declared_dynamic. Overview Intelligence Graph

platform.pages

Read. Scope: platform.read, admin. Contract: route_inferred. Pages

platform.paths.data

Read. Scope: platform.read, admin. Contract: route_inferred. Paths Data

platform.profile.change.password

Write. Scope: platform.write, admin. Contract: declared_dynamic. Profile Change Password

platform.profile.get

Read. Scope: platform.read, admin. Contract: route_inferred. Profile Get

platform.profile.reward.claim

Write. Scope: platform.write, admin. Contract: route_inferred. Profile Reward Claim

platform.profile.reward.claim.cancel

Write. Scope: platform.write, admin. Contract: route_inferred. Profile Reward Claim Cancel

platform.profile.save

Write. Scope: platform.write, admin. Contract: declared_dynamic. Profile Save

platform.profile.session.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Profile Session Revoke

platform.profile.sessions.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Profile Sessions List

platform.profile.sessions.revoke.others

Write. Scope: platform.write, admin. Contract: declared_dynamic. Profile Sessions Revoke Others

platform.profile.team.dispute.file

Write. Scope: platform.write, admin. Contract: route_inferred. Profile Team Dispute File

platform.purge

Write. Scope: platform.write, admin. Contract: route_inferred. Purge

platform.purge.all

Write. Scope: platform.write, admin. Contract: route_inferred. Purge All

platform.realtime

Read. Scope: platform.read, admin. Contract: route_inferred. Realtime

platform.realtime.test

Write. Scope: platform.write, admin. Contract: route_inferred. Realtime Test

platform.retention.data

Read. Scope: platform.read, admin. Contract: route_inferred. Retention Data

platform.routes.list

Read. Scope: admin. Contract: source_inferred. List every registered OpsIQ operation

platform.routes.read

Read. Scope: admin. Contract: explicit. Execute a registered read operation Required fields: route.

platform.routes.write

Write. Scope: admin. Contract: explicit. Execute a registered write operation Required fields: route, idempotency_key. Retry-safe with idempotency_key.

platform.run.ai.analysis

Write. Scope: platform.write, admin. Contract: route_inferred. Run Ai Analysis

platform.save.admin.chat.history

Write. Scope: platform.write, admin. Contract: route_inferred. Save Admin Chat History

platform.save.pwa.chat.prefs

Write. Scope: platform.write, admin. Contract: declared_dynamic. Save Pwa Chat Prefs

platform.save.survey.config

Write. Scope: platform.write, admin. Contract: route_inferred. Save Survey Config

platform.save.widget.advanced

Write. Scope: platform.write, admin. Contract: declared_dynamic. Save Widget Advanced

platform.scim.token.issue

Read. Scope: platform.read, admin. Contract: route_inferred. Scim Token Issue

platform.scim.token.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Scim Token List

platform.scim.token.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Scim Token Revoke

platform.segment.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Segment Delete

platform.segment.list

Read. Scope: platform.read, admin. Contract: route_inferred. Segment List

platform.segment.members

Read. Scope: platform.read, admin. Contract: route_inferred. Segment Members

platform.segment.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Segment Preview

platform.segment.save

Write. Scope: platform.write, admin. Contract: route_inferred. Segment Save

platform.segment.suggestion.accept

Write. Scope: platform.write, admin. Contract: route_inferred. Segment Suggestion Accept

platform.segment.suggestion.dismiss

Write. Scope: platform.write, admin. Contract: route_inferred. Segment Suggestion Dismiss

platform.segment.suggestion.list

Read. Scope: platform.read, admin. Contract: route_inferred. Segment Suggestion List

platform.send.campaign

Write. Scope: platform.write, admin. Contract: route_inferred. Send Campaign

platform.send.client.email

Write. Scope: platform.write, admin. Contract: route_inferred. Send Client Email

platform.send.ticket.reply

Write. Scope: platform.write, admin. Contract: route_inferred. Send Ticket Reply

platform.service.studio.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Service Studio Get

platform.set.active.site

Write. Scope: platform.write, admin. Contract: route_inferred. Set Active Site

platform.site.set.group

Write. Scope: platform.write, admin. Contract: route_inferred. Site Set Group

platform.sites.add

Write. Scope: platform.write, admin. Contract: route_inferred. Sites Add

platform.sites.edit

Write. Scope: platform.write, admin. Contract: route_inferred. Sites Edit

platform.sites.list

Write. Scope: platform.write, admin. Contract: route_inferred. Sites List

platform.sites.picker

Write. Scope: platform.write, admin. Contract: route_inferred. Sites Picker

platform.sites.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Sites Remove

platform.stats

Read. Scope: platform.read, admin. Contract: declared_dynamic. Stats

platform.stepup.verify

Write. Scope: platform.write, admin. Contract: declared_dynamic. Stepup Verify

platform.submit.agent.ai.feedback

Write. Scope: platform.write, admin. Contract: route_inferred. Submit Agent Ai Feedback

platform.submit.triage.feedback

Write. Scope: platform.write, admin. Contract: route_inferred. Submit Triage Feedback

platform.test.geoip

Read. Scope: platform.read, admin. Contract: route_inferred. Test Geoip

platform.top.pages

Read. Scope: platform.read, admin. Contract: route_inferred. Top Pages

platform.train.client.chat.knowledge

Write. Scope: platform.write, admin. Contract: route_inferred. Train Client Chat Knowledge

platform.triggers

Read. Scope: platform.read, admin. Contract: declared_dynamic. Triggers

platform.turn.pool.add

Write. Scope: platform.write, admin. Contract: route_inferred. Turn Pool Add

platform.turn.pool.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Turn Pool List

platform.turn.pool.pick.test

Write. Scope: platform.write, admin. Contract: route_inferred. Turn Pool Pick Test

platform.turn.pool.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Turn Pool Remove

platform.turn.pool.update

Write. Scope: platform.write, admin. Contract: route_inferred. Turn Pool Update

platform.update.lead.status

Write. Scope: platform.write, admin. Contract: route_inferred. Update Lead Status

platform.wa.embedded.signup.exchange

Write. Scope: platform.write, admin. Contract: route_inferred. Wa Embedded Signup Exchange

platform.warehouse.export.run

Read. Scope: platform.read, admin. Contract: declared_dynamic. Warehouse Export Run

platform.warehouse.exports.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Warehouse Exports List

platform.webhook.deliveries.list

Read. Scope: platform.read, admin. Contract: route_inferred. Webhook Deliveries List

platform.webhook.endpoint.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Webhook Endpoint Delete

platform.webhook.endpoint.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Webhook Endpoint List

platform.webhook.endpoint.save

Write. Scope: platform.write, admin. Contract: route_inferred. Webhook Endpoint Save

platform.webhook.endpoint.test

Write. Scope: platform.write, admin. Contract: route_inferred. Webhook Endpoint Test

platform.webhook.redeliver

Write. Scope: platform.write, admin. Contract: route_inferred. Webhook Redeliver

platform.weekly.digest.view

Read. Scope: platform.read, admin. Contract: route_inferred. Weekly Digest View

platform.whmcs.op.dispatch

Read. Scope: platform.read, admin. Contract: declared_dynamic. Whmcs Op Dispatch

platform.workspace.custom.domain.remove

Write. Scope: platform.write, admin. Contract: declared_dynamic. Workspace Custom Domain Remove

platform.workspace.custom.domain.set

Write. Scope: platform.write, admin. Contract: route_inferred. Workspace Custom Domain Set

platform.writing.json.knowledge.clear

Write. Scope: platform.write, admin. Contract: declared_dynamic. Writing Json Knowledge Clear

platform.writing.json.knowledge.count

Read. Scope: platform.read, admin. Contract: declared_dynamic. Writing Json Knowledge Count

platform.writing.json.knowledge.import

Write. Scope: platform.write, admin. Contract: route_inferred. Writing Json Knowledge Import

portal_studio (148)

portal_studio.add

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Domain Add

portal_studio.allocate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Subdomain Allocate

portal_studio.apply.kit

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Apply Kit

portal_studio.apply.theme

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Apply Theme

portal_studio.approval

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Approval

portal_studio.approve

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Approve

portal_studio.ask

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Ask

portal_studio.audience.explain

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Audience Explain

portal_studio.brand.generate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Brand Generate

portal_studio.brand.import

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Brand Import

portal_studio.cancel.schedule

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Design Cancel Schedule

portal_studio.certify

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Certify

portal_studio.check

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Host Check

portal_studio.check.route.portal.subdomain.check

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Subdomain Check

portal_studio.comment.add

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Comment Add

portal_studio.comment.resolve

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Comment Resolve

portal_studio.component.package.inspect

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Component Package Inspect

portal_studio.component.package.install

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Component Package Install

portal_studio.component.validate

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Component Validate

portal_studio.config

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Handoff Config

portal_studio.data.resolve

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Data Resolve

portal_studio.delete.theme

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Delete Theme

portal_studio.developer.contract

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Developer Contract

portal_studio.discovery.preview

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Studio Discovery Preview

portal_studio.discovery.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Discovery Save

portal_studio.document.load

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Load

portal_studio.document.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Save

portal_studio.form.archive

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Form Archive

portal_studio.form.catalog

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Form Catalog

portal_studio.form.create

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Create

portal_studio.form.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Delete

portal_studio.form.duplicate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Duplicate

portal_studio.form.evaluate

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Studio Form Evaluate

portal_studio.form.group.apply

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Group Apply

portal_studio.form.group.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Group Delete

portal_studio.form.group.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Group Save

portal_studio.form.publish

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Publish

portal_studio.form.restore

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Form Restore

portal_studio.form.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Save

portal_studio.form.template

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Template

portal_studio.form.test

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Studio Form Test

portal_studio.form.version.restore

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Version Restore

portal_studio.identity.discover

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Identity Discover

portal_studio.identity.load

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Identity Load

portal_studio.identity.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Identity Save

portal_studio.integration.activate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Activate

portal_studio.integration.install

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Install

portal_studio.integration.kill.switch

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Kill Switch

portal_studio.integration.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Integration List

portal_studio.integration.policy

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Integration Policy

portal_studio.integration.policy.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Integration Policy Save

portal_studio.integration.preflight

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Preflight

portal_studio.integration.revise

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Revise

portal_studio.integration.rollback

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Rollback

portal_studio.integration.transition

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Transition

portal_studio.journey.archive

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Archive

portal_studio.journey.catalog

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Journey Catalog

portal_studio.journey.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Delete

portal_studio.journey.duplicate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Duplicate

portal_studio.journey.evaluate

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Studio Journey Evaluate

portal_studio.journey.instantiate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Instantiate

portal_studio.journey.restore

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Restore

portal_studio.journey.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Save

portal_studio.kb.category.delete

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Kb Category Delete

portal_studio.kb.category.reorder

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Kb Category Reorder

portal_studio.kb.category.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Kb Category Save

portal_studio.kb.governance

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Kb Governance

portal_studio.kb.governance.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Kb Governance Save

portal_studio.kb.languages

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Kb Languages

portal_studio.kb.languages.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Kb Languages Save

portal_studio.kb.parity

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Kb Parity

portal_studio.kb.search.tuning

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Kb Search Tuning

portal_studio.kb.search.tuning.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Kb Search Tuning Save

portal_studio.kb.tree

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Kb Tree

portal_studio.knowledge.summary

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Knowledge Summary

portal_studio.list

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Domain List

portal_studio.load

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Analytics Load

portal_studio.load.route.portal.design.load

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Design Load

portal_studio.load.route.portal.form.load

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Form Load

portal_studio.lock

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Lock

portal_studio.migration.apply

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Apply

portal_studio.migration.approve

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Approve

portal_studio.migration.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Migration List

portal_studio.migration.reconcile

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Reconcile

portal_studio.migration.report

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Migration Report

portal_studio.migration.rollback

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Rollback

portal_studio.migration.rollout

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Rollout

portal_studio.migration.start

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Start

portal_studio.node.add

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Node Add

portal_studio.node.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Node Delete

portal_studio.node.duplicate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Node Duplicate

portal_studio.node.move

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Node Move

portal_studio.node.update

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Node Update

portal_studio.operations.control

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Operations Control

portal_studio.operations.record

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Operations Record

portal_studio.operations.summary

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Operations Summary

portal_studio.org.context

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Org Context

portal_studio.org.member.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Org Member Save

portal_studio.org.members

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Org Members

portal_studio.org.requests

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Org Requests

portal_studio.page.archive

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Archive

portal_studio.page.create

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Create

portal_studio.page.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Delete

portal_studio.page.duplicate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Duplicate

portal_studio.page.restore

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Restore

portal_studio.page.update

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Update

portal_studio.parity.accept

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Parity Accept

portal_studio.parity.capture

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Parity Capture

portal_studio.parity.compare

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Parity Compare

portal_studio.parity.create

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Parity Create

portal_studio.parity.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Parity List

portal_studio.presence

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Presence

portal_studio.preview

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Preview

portal_studio.preview.catalog

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Preview Catalog

portal_studio.publish

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Publish

portal_studio.quality

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Quality

portal_studio.redirect.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Redirect Delete

portal_studio.redirect.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Redirect Save

portal_studio.release.publish

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Publish

portal_studio.release.rollback

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Rollback

portal_studio.release.schedule

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Schedule

portal_studio.remove

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Domain Remove

portal_studio.request.changes

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Request Changes

portal_studio.restore.published

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Restore Published

portal_studio.revert

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Design Revert

portal_studio.review

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Review

portal_studio.review.link

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Review Link

portal_studio.rollback

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Rollback

portal_studio.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Save

portal_studio.save.route.portal.form.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Form Save

portal_studio.save.theme

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Save Theme

portal_studio.saved.section.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Saved Section Delete

portal_studio.saved.section.instantiate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Saved Section Instantiate

portal_studio.saved.section.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Saved Section Save

portal_studio.schedule

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Design Schedule

portal_studio.schedule.cancel

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Schedule Cancel

portal_studio.scim.config

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Scim Config

portal_studio.service.archive

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Archive

portal_studio.service.catalog

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Service Catalog

portal_studio.service.duplicate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Duplicate

portal_studio.service.reorder

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Reorder

portal_studio.service.restore

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Restore

portal_studio.service.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Save

portal_studio.service.template

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Template

portal_studio.sign.in.flow.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Sign In Flow Save

portal_studio.test.link

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Handoff Test Link

portal_studio.unlock

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Unlock

portal_studio.upload

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Image Upload

sales (14)

sales.ai.insight

Write. Scope: sales.write, admin. Contract: route_inferred. Sales Ai Insight

sales.analyze

Write. Scope: sales.write, analytics.write, admin. Contract: explicit. Analyze sales with AI Retry-safe with idempotency_key.

sales.chart

Write. Scope: sales.write, admin. Contract: route_inferred. Sales Chart

sales.compare

Read. Scope: sales.read, analytics.read, admin. Contract: explicit. Compare sales periods

sales.compare.route.sales.compare

Read. Scope: sales.read, admin. Contract: route_inferred. Sales Compare

sales.goal.delete

Write. Scope: sales.write, admin. Contract: route_inferred. Conversion Goal Delete

sales.goal.list

Read. Scope: sales.read, admin. Contract: route_inferred. Conversion Goal List

sales.goal.save

Write. Scope: sales.write, admin. Contract: route_inferred. Conversion Goal Save

sales.list

Read. Scope: sales.read, analytics.read, admin. Contract: explicit. List sales and conversions

sales.list.route.conversion.list

Read. Scope: sales.read, admin. Contract: route_inferred. Conversion List

sales.record

Write. Scope: sales.write, admin. Contract: route_inferred. Conversion Record

sales.stats

Read. Scope: sales.read, analytics.read, admin. Contract: explicit. Read sales statistics

sales.stats.route.sales.stats

Read. Scope: sales.read, admin. Contract: declared_dynamic. Sales Stats

sales.table

Read. Scope: sales.read, admin. Contract: route_inferred. Sales Table

sécurité (21)

security.ai.analyze

Write. Scope: security.write, admin. Contract: route_inferred. Security Ai Analyze

security.ai.ask

Write. Scope: security.write, admin. Contract: route_inferred. Security Ai Ask

security.ai.briefs

Read. Scope: security.read, admin. Contract: declared_dynamic. Security Ai Briefs

security.ai.chain.explain

Read. Scope: security.read, admin. Contract: route_inferred. Security Ai Chain Explain

security.ai.incident.action

Write. Scope: security.write, admin. Contract: route_inferred. Security Ai Incident Action

security.ai.incidents

Read. Scope: security.read, admin. Contract: route_inferred. Security Ai Incidents

security.ai.js.triage

Read. Scope: security.read, admin. Contract: route_inferred. Security Ai Js Triage

security.ai.policies

Read. Scope: security.read, admin. Contract: declared_dynamic. Security Ai Policies

security.ai.policy.action

Write. Scope: security.write, admin. Contract: route_inferred. Security Ai Policy Action

security.ai.verdicts

Read. Scope: security.read, admin. Contract: route_inferred. Security Ai Verdicts

security.blocklist.add

Write. Scope: security.write, admin. Contract: source_inferred. Add a spam rule (email, domain or IP) to the ticket blocklist Required fields: kind, value. Retry-safe with idempotency_key.

security.blocklist.list

Read. Scope: security.read, admin. Contract: explicit. List the current ticket spam rules

security.chain.reanchor

Write. Scope: security.write, admin. Contract: declared_dynamic. Security Chain Reanchor

security.check

Read. Scope: security.read, admin. Contract: source_inferred. Check an IP or email against the platform blocklists and Security AI verdicts

security.ip

Write. Scope: security.write, admin. Contract: route_inferred. Block Ip

security.ip.route.unblock.ip

Write. Scope: security.write, admin. Contract: route_inferred. Unblock Ip

security.list

Write. Scope: security.write, admin. Contract: route_inferred. Access Log List

security.overview.chains

Read. Scope: security.read, admin. Contract: declared_dynamic. Security Overview Chains

security.overview.data

Read. Scope: security.read, admin. Contract: declared_dynamic. Security Overview Data

security.report

Write. Scope: security.write, admin. Contract: source_inferred. Report abuse a connector observed (spam, login attack, scan, fraud) Retry-safe with idempotency_key.

security.visitor

Write. Scope: security.write, admin. Contract: route_inferred. Block Visitor

sessions (5)

sessions.detail

Read. Scope: sessions.read, admin. Contract: route_inferred. Session Detail

sessions.get

Read. Scope: sessions.read, analytics.read, admin. Contract: explicit. Get a session journey Required fields: session_id.

sessions.list

Read. Scope: sessions.read, analytics.read, admin. Contract: explicit. List sessions

sessions.merged

Read. Scope: sessions.read, admin. Contract: route_inferred. Sessions Merged

sessions.table

Read. Scope: sessions.read, admin. Contract: route_inferred. Sessions Table

settings (11)

settings.ai.eval.watchtower.config

Write. Scope: settings.write, admin. Contract: declared_dynamic. Ai Eval Watchtower Config

settings.get.client.chat.settings

Read. Scope: settings.read, admin. Contract: route_inferred. Get Client Chat Settings

settings.get.settings

Read. Scope: settings.read, admin. Contract: route_inferred. Get Settings

settings.opsiq.branding.clear

Write. Scope: settings.write, admin. Contract: route_inferred. Opsiq Branding Clear

settings.opsiq.branding.upload

Write. Scope: settings.write, admin. Contract: route_inferred. Opsiq Branding Upload

settings.privacy.settings.get

Read. Scope: settings.read, admin. Contract: declared_dynamic. Privacy Settings Get

settings.privacy.settings.save

Write. Scope: settings.write, admin. Contract: route_inferred. Privacy Settings Save

settings.save.ai.settings

Write. Scope: settings.write, admin. Contract: route_inferred. Save Ai Settings

settings.save.chat.widget.settings

Write. Scope: settings.write, admin. Contract: declared_dynamic. Save Chat Widget Settings

settings.save.client.chat.settings

Write. Scope: settings.write, admin. Contract: route_inferred. Save Client Chat Settings

settings.save.settings

Write. Scope: settings.write, admin. Contract: route_inferred. Save Settings

site_intelligence (221)

site_intelligence.action.audit.chain

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Action Audit Chain

site_intelligence.action.execute

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Action Execute

site_intelligence.action.preview

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Action Preview

site_intelligence.action.token

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Action Token

site_intelligence.agent.auto.bg

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Auto Bg

site_intelligence.agent.auto.bg.stop

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Auto Bg Stop

site_intelligence.agent.auto.step

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Auto Step

site_intelligence.agent.chat

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Chat

site_intelligence.agent.conn.delete

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Conn Delete

site_intelligence.agent.conn.get

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Conn Get

site_intelligence.agent.conn.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Conn Save

site_intelligence.agent.conn.test

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Conn Test

site_intelligence.agent.coverage

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Coverage

site_intelligence.agent.events

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Events

site_intelligence.agent.hosted.apply

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Apply

site_intelligence.agent.hosted.finalize

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Finalize

site_intelligence.agent.hosted.live.set

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Live Set

site_intelligence.agent.hosted.preview

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Preview

site_intelligence.agent.hosted.rollback

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Rollback

site_intelligence.agent.hosted.start

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Start

site_intelligence.agent.hosted.verify

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Verify

site_intelligence.agent.run.delete

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Delete

site_intelligence.agent.run.finalize

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Finalize

site_intelligence.agent.run.rollback

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Rollback

site_intelligence.agent.run.start

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Start

site_intelligence.agent.run.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Status

site_intelligence.agent.run.verify

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Verify

site_intelligence.agent.runs.list

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Runs List

site_intelligence.agent.set.mode

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Set Mode

site_intelligence.agent.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Status

site_intelligence.agent.step.apply

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Step Apply

site_intelligence.agent.step.skip

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Step Skip

site_intelligence.agent.turn.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Turn Status

site_intelligence.ai.activity

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Ai Activity

site_intelligence.ai.alert.enrich

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Alert Enrich

site_intelligence.ai.alerts

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Alerts

site_intelligence.ai.analyst

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Analyst

site_intelligence.ai.analyst.ask

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Analyst Ask

site_intelligence.ai.analyst.email

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Analyst Email

site_intelligence.ai.analyst.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Analyst Run

site_intelligence.ai.badges

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Badges

site_intelligence.ai.badges.portfolio

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Ai Badges Portfolio

site_intelligence.ai.badges.preview

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Badges Preview

site_intelligence.ai.bl.plan

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Bl Plan

site_intelligence.ai.bl.plan.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Bl Plan Run

site_intelligence.ai.brief

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Brief

site_intelligence.ai.brief.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Brief Run

site_intelligence.ai.comp.analyse

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Comp Analyse

site_intelligence.ai.comp.analyse.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Comp Analyse Run

site_intelligence.ai.content.get

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Content Get

site_intelligence.ai.content.list

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Content List

site_intelligence.ai.content.publish

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Content Publish

site_intelligence.ai.content.write

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Content Write

site_intelligence.ai.daily.digest

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Daily Digest

site_intelligence.ai.discover

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Discover

site_intelligence.ai.fix.apply

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Apply

site_intelligence.ai.fix.apply.bulk

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Apply Bulk

site_intelligence.ai.fix.dismiss

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Dismiss

site_intelligence.ai.fix.dismiss.bulk

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Dismiss Bulk

site_intelligence.ai.fix.generate

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Generate

site_intelligence.ai.fix.generate.all

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Generate All

site_intelligence.ai.fix.list

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix List

site_intelligence.ai.kw.coach

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Kw Coach

site_intelligence.ai.kw.coach.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Kw Coach Run

site_intelligence.ai.overview

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Overview

site_intelligence.ai.page.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Page Audit

site_intelligence.ai.page.audit.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Page Audit Run

site_intelligence.ai.portfolio

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Ai Portfolio

site_intelligence.ai.portfolio.history

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Ai Portfolio History

site_intelligence.ai.portfolio.run

Write. Scope: site_intelligence.write, admin. Contract: declared_dynamic. Si Ai Portfolio Run

site_intelligence.ai.probe

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Probe

site_intelligence.ai.prompt.add

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Prompt Add

site_intelligence.ai.prompt.history

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Prompt History

site_intelligence.ai.prompt.remove

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Prompt Remove

site_intelligence.ai.prompts

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Prompts

site_intelligence.ai.readiness

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Readiness

site_intelligence.ai.ready

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Ready

site_intelligence.alert.resolve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Alert Resolve

site_intelligence.alerts

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Alerts

site_intelligence.alerts.list

Read. Scope: site_intelligence.read, admin. Contract: explicit. List Site Intelligence alerts

site_intelligence.alerts.resolve

Write. Scope: site_intelligence.write, admin. Contract: explicit. Resolve a Site Intelligence alert Required fields: alert_id. Retry-safe with idempotency_key.

site_intelligence.analyze

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Analyze

site_intelligence.ask

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ask

site_intelligence.audit.hint

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Audit Hint

site_intelligence.backlink.disavow

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Backlink Disavow

site_intelligence.backlinks

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Backlinks

site_intelligence.backlinks.list

Read. Scope: site_intelligence.read, admin. Contract: explicit. List backlinks

site_intelligence.backlinks.refresh

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Backlinks Refresh

site_intelligence.billing.overview

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Billing Overview

site_intelligence.brand.get

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Brand Get

site_intelligence.brand.radar

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Brand Radar

site_intelligence.brand.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Brand Save

site_intelligence.cannibalisation

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Cannibalisation

site_intelligence.compare

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Compare

site_intelligence.competitor.add

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Competitor Add

site_intelligence.competitor.refresh

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Competitor Refresh

site_intelligence.competitor.remove

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Competitor Remove

site_intelligence.competitors

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Competitors

site_intelligence.competitors.list

Read. Scope: site_intelligence.read, admin. Contract: explicit. List competitors

site_intelligence.content.brief

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Content Brief

site_intelligence.content.decay

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Content Decay

site_intelligence.content.draft

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Content Draft

site_intelligence.crawl.budget

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Crawl Budget

site_intelligence.crawl.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Crawl List

site_intelligence.crawl.status

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Crawl Status

site_intelligence.crawls.list

Read. Scope: site_intelligence.read, admin. Contract: explicit. List Site Intelligence crawls

site_intelligence.crawls.status

Read. Scope: site_intelligence.read, admin. Contract: explicit. Get crawl status

site_intelligence.dashboard

Read. Scope: site_intelligence.read, admin. Contract: explicit. Read the Site Intelligence dashboard

site_intelligence.dashboard.route.si.dashboard

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Dashboard

site_intelligence.dashboard.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Dashboard Save

site_intelligence.diag.backfill

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Backfill

site_intelligence.diag.compare

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Compare

site_intelligence.diag.portfolio

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Diag Portfolio

site_intelligence.diag.recs.regen

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Recs Regen

site_intelligence.diag.thresholds

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds

site_intelligence.diag.thresholds.eval

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds Eval

site_intelligence.diag.thresholds.history

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds History

site_intelligence.diag.thresholds.profile

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds Profile

site_intelligence.diag.thresholds.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds Save

site_intelligence.diagnostics

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diagnostics

site_intelligence.exec.report

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Exec Report

site_intelligence.export

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Export

site_intelligence.ga4.connect

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 Connect

site_intelligence.ga4.list.properties

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 List Properties

site_intelligence.ga4.map

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 Map

site_intelligence.ga4.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 Status

site_intelligence.ga4.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 Sync

site_intelligence.gbp

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp

site_intelligence.gbp.draft.approve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Draft Approve

site_intelligence.gbp.draft.dismiss

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Draft Dismiss

site_intelligence.gbp.draft.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Draft Sync

site_intelligence.gbp.drafts

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Drafts

site_intelligence.gbp.locations

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Gbp Locations

site_intelligence.gbp.map

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Map

site_intelligence.gbp.post.draft

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Post Draft

site_intelligence.gbp.post.publish

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Post Publish

site_intelligence.gbp.qa

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Qa

site_intelligence.gbp.qa.approve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Qa Approve

site_intelligence.gbp.qa.dismiss

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Qa Dismiss

site_intelligence.gbp.qa.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Qa Sync

site_intelligence.gbp.site.prefs

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Site Prefs

site_intelligence.gbp.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Sync

site_intelligence.google.truth.schedule.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Google Truth Schedule Save

site_intelligence.growth

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Growth

site_intelligence.gsc.connect

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Connect

site_intelligence.gsc.list.properties

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc List Properties

site_intelligence.gsc.map

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Map

site_intelligence.gsc.opportunities

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Opportunities

site_intelligence.gsc.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Status

site_intelligence.gsc.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Sync

site_intelligence.image.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Image Audit

site_intelligence.internal.links

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Internal Links

site_intelligence.issue.history

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Issue History

site_intelligence.issues

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Issues

site_intelligence.issues.list

Read. Scope: site_intelligence.read, admin. Contract: explicit. List Site Intelligence issues

site_intelligence.keyword.add

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Keyword Add

site_intelligence.keyword.remove

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Keyword Remove

site_intelligence.keyword.research

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Keyword Research

site_intelligence.keywords

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Keywords

site_intelligence.keywords.list

Read. Scope: site_intelligence.read, admin. Contract: explicit. List tracked keywords

site_intelligence.local

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Local

site_intelligence.local.grid

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Local Grid

site_intelligence.local.grid.scan

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Local Grid Scan

site_intelligence.log.ingest

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Log Ingest

site_intelligence.log.summary

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Log Summary

site_intelligence.metadata.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Metadata Audit

site_intelligence.overview

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Overview

site_intelligence.page

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Page

site_intelligence.page.experience

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Page Experience

site_intelligence.page.optimize

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Page Optimize

site_intelligence.pages

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Pages

site_intelligence.pages.list

Read. Scope: site_intelligence.read, admin. Contract: explicit. List Site Intelligence pages

site_intelligence.pagespeed.bridge.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Pagespeed Bridge Status

site_intelligence.portfolio.export

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Portfolio Export

site_intelligence.provider.health

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Provider Health

site_intelligence.rank.check

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Rank Check

site_intelligence.rec.action

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Rec Action

site_intelligence.recommendations

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Recommendations

site_intelligence.redirect.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Redirect Audit

site_intelligence.report

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Report

site_intelligence.report.generate

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Report Generate

site_intelligence.reports

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Reports

site_intelligence.reports.list

Read. Scope: site_intelligence.read, admin. Contract: source_inferred. Site Intelligence Reports List

site_intelligence.reset.google.oauth

Write. Scope: site_intelligence.write, admin. Contract: declared_dynamic. Si Reset Google Oauth

site_intelligence.revenue

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Revenue

site_intelligence.revenue.portfolio

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Revenue Portfolio

site_intelligence.save.shared.google.oauth

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Save Shared Google Oauth

site_intelligence.scan.run

Write. Scope: site_intelligence.write, admin. Contract: explicit. Start a Site Intelligence analysis Retry-safe with idempotency_key.

site_intelligence.schedule.delete

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schedule Delete

site_intelligence.schedule.run.now

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schedule Run Now

site_intelligence.schedule.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schedule Save

site_intelligence.schedules.list

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schedules List

site_intelligence.schema.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schema Audit

site_intelligence.server.engineer

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Server Engineer

site_intelligence.settings.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Settings Save

site_intelligence.sites.list

Read. Scope: site_intelligence.read, admin. Contract: explicit. List Site Intelligence monitored sites

site_intelligence.speed

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed

site_intelligence.speed.progress

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed Progress

site_intelligence.speed.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed Run

site_intelligence.speed.v2

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2

site_intelligence.speed.v2.build.task

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2 Build Task

site_intelligence.speed.v2.collect

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2 Collect

site_intelligence.speed.v2.read

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2 Read

site_intelligence.speed.v2.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2 Run

site_intelligence.start.crawl

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Start Crawl

site_intelligence.task.approve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Approve

site_intelligence.task.assign

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Assign

site_intelligence.task.bulk.apply

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Bulk Apply

site_intelligence.task.bulk.assign

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Bulk Assign

site_intelligence.task.bulk.deadline

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Bulk Deadline

site_intelligence.task.bulk.dismiss

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Bulk Dismiss

site_intelligence.task.deadline

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Deadline

site_intelligence.task.note

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Note

site_intelligence.task.proof

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Proof

site_intelligence.task.reject

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Reject

site_intelligence.task.review

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Review

site_intelligence.topical.map

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Topical Map

site_intelligence.webhook.delete

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Webhook Delete

site_intelligence.webhook.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Webhook Save

site_intelligence.webhooks.list

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Webhooks List

site_intelligence.workflow

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Workflow

statut (6)

status.component.save

Write. Scope: status.write, admin. Contract: declared_dynamic. Status Component Save

status.components.save

Write. Scope: status.write, admin. Contract: explicit. Create or update a public status component Required fields: name. Retry-safe with idempotency_key.

status.incident.create

Write. Scope: status.write, admin. Contract: declared_dynamic. Status Incident Create

status.incident.resolve

Read. Scope: status.read, admin. Contract: route_inferred. Status Incident Resolve

status.incidents.create

Write. Scope: status.write, admin. Contract: explicit. Create a status-page incident Required fields: title. Retry-safe with idempotency_key.

status.incidents.resolve

Write. Scope: status.write, admin. Contract: source_inferred. Status Incidents Resolve Retry-safe with idempotency_key.

enquêtes (22)

surveys.analytics.get

Read. Scope: surveys.read, admin. Contract: source_inferred. Surveys Analytics Get

surveys.audiences.list

Read. Scope: surveys.read, admin. Contract: explicit. List survey audiences

surveys.audiences.materialize

Write. Scope: surveys.write, admin. Contract: source_inferred. Surveys Audiences Materialize Retry-safe with idempotency_key.

surveys.campaigns.create

Write. Scope: surveys.write, admin. Contract: explicit. Create or update a survey campaign Required fields: deployment_id. Retry-safe with idempotency_key.

surveys.campaigns.launch

Write. Scope: surveys.write, admin. Contract: source_inferred. Surveys Campaigns Launch Retry-safe with idempotency_key.

surveys.campaigns.list

Read. Scope: surveys.read, admin. Contract: explicit. List survey campaigns

surveys.deployments.list

Read. Scope: surveys.read, admin. Contract: explicit. List survey deployments

surveys.deployments.set_status

Write. Scope: surveys.write, admin. Contract: source_inferred. Surveys Deployments Set Status Retry-safe with idempotency_key.

surveys.get

Read. Scope: surveys.read, admin. Contract: source_inferred. Surveys Get

surveys.imports.create

Write. Scope: surveys.write, admin. Contract: explicit. Create and run a survey import Required fields: kind. Retry-safe with idempotency_key.

surveys.imports.process

Write. Scope: surveys.write, admin. Contract: source_inferred. Surveys Imports Process Retry-safe with idempotency_key.

surveys.invitations.list

Read. Scope: surveys.read, admin. Contract: explicit. List survey invitations

surveys.links.create

Write. Scope: surveys.write, admin. Contract: source_inferred. Surveys Links Create Retry-safe with idempotency_key.

surveys.list

Read. Scope: surveys.read, admin. Contract: explicit. List survey definitions

surveys.responses.get

Read. Scope: surveys.read, admin. Contract: source_inferred. Surveys Responses Get

surveys.responses.list

Read. Scope: surveys.read, admin. Contract: explicit. List survey responses

surveys.triggers.list

Read. Scope: surveys.read, admin. Contract: explicit. List survey trigger sets

surveys.types.list

Read. Scope: surveys.read, admin. Contract: explicit. List supported question types and Studio templates

surveys.versions.list

Read. Scope: surveys.read, admin. Contract: source_inferred. Surveys Versions List

surveys.webhooks.delete

Write. Scope: surveys.write, admin. Contract: source_inferred. Surveys Webhooks Delete Retry-safe with idempotency_key.

surveys.webhooks.list

Read. Scope: surveys.read, admin. Contract: explicit. List survey webhook subscriptions

surveys.webhooks.save

Write. Scope: surveys.write, admin. Contract: explicit. Create or update a survey webhook subscription Required fields: url. Retry-safe with idempotency_key.

team (63)

team.delete

Write. Scope: team.write, admin. Contract: route_inferred. Admin Users Delete

team.delete.route.departments.delete

Write. Scope: team.write, admin. Contract: route_inferred. Departments Delete

team.list

Read. Scope: team.read, admin. Contract: route_inferred. Admin Users List

team.list.route.departments.list

Read. Scope: team.read, admin. Contract: declared_dynamic. Departments List

team.perf.activity

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Activity

team.perf.ai.compare

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Ai Compare

team.perf.ai.review

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Ai Review

team.perf.availability

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Availability

team.perf.award.finalize

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Award Finalize

team.perf.award.history

Read. Scope: team.read, admin. Contract: route_inferred. Team Perf Award History

team.perf.award.void

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Award Void

team.perf.claim.pay

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Claim Pay

team.perf.claim.recover

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Claim Recover

team.perf.claim.reject

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Claim Reject

team.perf.clear

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Clear

team.perf.coaching.action.item.add

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Action Item Add

team.perf.coaching.action.item.complete

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Action Item Complete

team.perf.coaching.evidence.pin

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Evidence Pin

team.perf.coaching.evidence.unpin

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Evidence Unpin

team.perf.coaching.session

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Session

team.perf.coaching.session.create

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Session Create

team.perf.coaching.session.update

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Session Update

team.perf.coaching.sessions

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Sessions

team.perf.coaching.status

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Coaching Status

team.perf.data

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Data

team.perf.heatmap

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Heatmap

team.perf.history

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf History

team.perf.pay.all.claims

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Pay All Claims

team.perf.qa.calibration.record

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Qa Calibration Record

team.perf.qa.dispute.resolve

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Qa Dispute Resolve

team.perf.qa.disputes

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Qa Disputes

team.perf.qa.evaluation.submit

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Qa Evaluation Submit

team.perf.qa.overview

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Qa Overview

team.perf.qa.scorecard.publish

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Qa Scorecard Publish

team.perf.qa.scorecard.save

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Qa Scorecard Save

team.perf.quest.record

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Quest Record

team.perf.quest.save

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Quest Save

team.perf.quest.status

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Quest Status

team.perf.quests

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Quests

team.perf.recognition

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Recognition

team.perf.recognition.settings.save

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Recognition Settings Save

team.perf.recognition.streak.history

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Recognition Streak History

team.perf.recognition.streaks.record

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Recognition Streaks Record

team.perf.reward.budget.authorize

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Reward Budget Authorize

team.perf.reward.claims

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Reward Claims

team.perf.reward.pay

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Reward Pay

team.perf.reward.payouts

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Reward Payouts

team.perf.reward.period.finalize

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Reward Period Finalize

team.perf.reward.period.history

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Reward Period History

team.perf.reward.period.preview

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Reward Period Preview

team.perf.reward.period.reverse

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Reward Period Reverse

team.perf.reward.period.void

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Reward Period Void

team.perf.reward.save

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Reward Save

team.perf.reward.state

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Reward State

team.perf.trends

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf Trends

team.perf.v2.data

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf V2 Data

team.perf.v2.export

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf V2 Export

team.perf.v2.live

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf V2 Live

team.perf.v2.reward.sheet

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf V2 Reward Sheet

team.perf.v2.settings

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf V2 Settings

team.perf.v2.settings.save

Write. Scope: team.write, admin. Contract: route_inferred. Team Perf V2 Settings Save

team.save

Write. Scope: team.write, admin. Contract: route_inferred. Admin Users Save

team.save.route.departments.save

Write. Scope: team.write, admin. Contract: route_inferred. Departments Save

billets (75)

tickets.ai.summary

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Ai Summary

tickets.analytics

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Analytics

tickets.approval.decide

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Approval Decide

tickets.approval.request

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Approval Request

tickets.approvals.pending

Read. Scope: tickets.read, admin. Contract: declared_dynamic. Ticket Approvals Pending

tickets.assignment.rule.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Assignment Rule Delete

tickets.assignment.rule.list

Read. Scope: tickets.read, admin. Contract: declared_dynamic. Ticket Assignment Rule List

tickets.assignment.rule.save

Write. Scope: tickets.write, admin. Contract: declared_dynamic. Ticket Assignment Rule Save

tickets.assignment_rules.delete

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Assignment Rules Delete Retry-safe with idempotency_key.

tickets.assignment_rules.save

Write. Scope: tickets.write, admin. Contract: explicit. Create or update a ticket assignment rule Required fields: name. Retry-safe with idempotency_key.

tickets.bulk

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Bulk Retry-safe with idempotency_key.

tickets.bulk.route.tickets.bulk

Write. Scope: tickets.write, admin. Contract: route_inferred. Tickets Bulk

tickets.calendar.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Sla Calendar Delete

tickets.calendar.save

Write. Scope: tickets.write, admin. Contract: declared_dynamic. Sla Calendar Save

tickets.claim

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Claim

tickets.embed.load

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Embed Load

tickets.embed.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Embed Save

tickets.embed.secret

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Embed Secret

tickets.field.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Field Save

tickets.follower.add

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Follower Add

tickets.follower.remove

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Follower Remove

tickets.get

Read. Scope: tickets.read, admin. Contract: source_inferred. Tickets Get

tickets.kb.deflection

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Kb Deflection

tickets.kb.draft

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Kb Draft

tickets.kb.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Kb Save

tickets.kb.version.restore

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Kb Version Restore

tickets.kb.versions

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Kb Versions

tickets.link.add

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Link Add

tickets.link.remove

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Link Remove

tickets.list

Read. Scope: tickets.read, admin. Contract: source_inferred. Tickets List

tickets.open

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Open Retry-safe with idempotency_key.

tickets.open_guest

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Open Guest Retry-safe with idempotency_key.

tickets.ops.summary

Read. Scope: tickets.read, admin. Contract: declared_dynamic. Ticket Ops Summary

tickets.policy.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Sla Policy Delete

tickets.policy.list

Read. Scope: tickets.read, admin. Contract: declared_dynamic. Sla Policy List

tickets.policy.save

Write. Scope: tickets.write, admin. Contract: declared_dynamic. Sla Policy Save

tickets.presence.leave

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Presence Leave

tickets.presence.ping

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Presence Ping

tickets.quick.replies

Write. Scope: tickets.write, admin. Contract: declared_dynamic. Ticket Quick Replies

tickets.quick.reply.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Quick Reply Save

tickets.relations.get

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Relations Get

tickets.reply

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Reply Retry-safe with idempotency_key.

tickets.reply.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Delete

tickets.reply.edit

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Edit

tickets.reply.outbound.convert

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Outbound Convert

tickets.reply.translate

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Translate

tickets.reply.translation.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Translation Delete

tickets.reply.translation.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Translation Save

tickets.rule.compose

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Rule Compose

tickets.side.ai.draft

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Side Ai Draft

tickets.side.assign.department

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Side Assign Department

tickets.side.create

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Side Create

tickets.side.list

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Side List

tickets.side.mention

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Side Mention

tickets.side.recipients

Read. Scope: tickets.read, admin. Contract: declared_dynamic. Ticket Side Recipients

tickets.side.reply

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Side Reply

tickets.sla.delete

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Sla Delete Retry-safe with idempotency_key.

tickets.sla.save

Write. Scope: tickets.write, admin. Contract: explicit. Create or update an SLA policy Required fields: name. Retry-safe with idempotency_key.

tickets.split

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Split

tickets.split.candidates

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Split Candidates

tickets.tag.add

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Tag Add

tickets.tag.list

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Tag List

tickets.tag.remove

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Tag Remove

tickets.tags.add

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Tags Add Retry-safe with idempotency_key.

tickets.tags.list

Read. Scope: tickets.read, admin. Contract: source_inferred. Tickets Tags List

tickets.tags.remove

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Tags Remove Retry-safe with idempotency_key.

tickets.update

Write. Scope: tickets.write, admin. Contract: source_inferred. Update a ticket status, priority, subject, department or assignment Retry-safe with idempotency_key.

tickets.view.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket View Delete

tickets.view.list

Read. Scope: tickets.read, admin. Contract: declared_dynamic. Ticket View List

tickets.view.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket View Save

tickets.views.delete

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Views Delete Retry-safe with idempotency_key.

tickets.views.save

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Views Save Retry-safe with idempotency_key.

tickets.worklog.add

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Worklog Add

tickets.worklog.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Worklog Delete

tickets.worklog.list

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Worklog List

todos (1)

todos.add

Write. Scope: todos.write, admin. Contract: source_inferred. Todos Add Retry-safe with idempotency_key.

visitors (3)

visitors.block

Write. Scope: visitors.write, security.write, admin. Contract: explicit. Block a visitor Required fields: visitor_id. Retry-safe with idempotency_key.

visitors.list

Read. Scope: visitors.read, analytics.read, admin. Contract: explicit. List visitors

visitors.table

Read. Scope: visitors.read, admin. Contract: route_inferred. Visitors Table

writing (6)

writing.analyze

Write. Scope: writing. Contract: source_inferred. Writing Analyze Retry-safe with idempotency_key.

writing.compose

Write. Scope: writing. Contract: source_inferred. Writing Compose Retry-safe with idempotency_key.

writing.reply

Write. Scope: writing. Contract: source_inferred. Writing Reply Retry-safe with idempotency_key.

writing.rewrite

Write. Scope: writing. Contract: source_inferred. Writing Rewrite Retry-safe with idempotency_key.

writing.summarize

Write. Scope: writing. Contract: source_inferred. Writing Summarize Retry-safe with idempotency_key.

writing.translate

Write. Scope: writing. Contract: source_inferred. Writing Translate Retry-safe with idempotency_key.

OpenAPI et Postman sont-ils disponibles?+

Oui. OpenAPI généré 3.0 le document est à /api/v1/openapi.php, la collection Postman générée est à /api/v1/postman.php, et les docs développeurs lisibles par l'homme sont à /api/docs/.

Comment puis-je travailler avec plus d'un espace de travail?+

Envoyez site_key dans le corps de la requête pour choisir un espace de travail. Une clé émise pour un espace reste épinglée à celui-ci. Une clef avec contexte admin peut sélectionner n'importe quel espace qu'elle est autorisée à voir, et elle est refusée pour tous ceux qui ne l'est pas.

Quelles actions peut appeler une touche en lecture seule?+

Toute action marquée comme une lecture. Définissez le mode des permissions sur la clé à read_only et toute écriture est refusée avec read_Only_Key, de sorte qu'une intégration de rapport ne peut rien changer même par erreur.

Pourquoi ai-je reçu not_found pour quelque chose que je peux voir dans l'administration?+

Les enregistrements dans les autres espaces de travail renvoient not_found plutôt qu'une erreur d'autorisation, donc le API ne confirme jamais si quelque chose existe ailleurs.

Développeur

Sécurité API

Un contrat de sécurité pour chaque connecteur et intégration: demanderOpsIQce qu'il sait sur unIPou expéditeur, et de nourrir l'abus que votre propre système voit.

OpsIQ Le monde se défend déjà : IP Le pare-feu bloque les attaquants, le pipeline de tickets filtre le spam et l'IA de sécurité classe les contrevenants et propose des règles de blocage. API Une plateforme de facturation, un portail client ou une application personnalisée peut vérifier un visiteur avant de lui faire confiance et rapporter ce qu'elle a observé afin que l'ensemble de l'installation apprenne à partir de chaque surface.

Ce que vous pouvez faire

Vérifiez avant de faire confiance

security. check répond avec l'état du pare-feu, toute règle de spam correspondant à l'expéditeur et le verdict d'IA mis en cache pour IP. Un appel, une opinion consolidée.

Signaler ce que vous avez vu

security.report enregistre l'observation comme un événement de sécurité, fait classer le IP Les rapports répétés sont regroupés en incidents, exactement comme les attaques : ils ne peuvent pas être traités séparément. OpsIQ Il voit directement.

Règles de partage du spam

security. blocklist. add et security. bloklist. list lisent et écrivent les mêmes règles de spam que la page Tickets, donc un expéditeur bloqué dans un système est bloqué partout.

Signaler un abus à partir d'un connecteur
POST /api/v1.php
Authorization: Bearer opq_your_api_key
Content-Type: application/json

{
  "action": "security.report",
  "ip": "203.0.113.7",
  "kind": "spam",
  "reason": "Sent 40 junk tickets in 10 minutes",
  "source": "whmcs:example.com"
}

Portées et sécurité

security.read

Nécessaire pour security. check et security. blocklist. list. Sécurisé pour donner une intégration de rapports.

security.write

Nécessaire pour security. report et security. blocklist. add Donnez-le uniquement aux systèmes dans lesquels vous voulez alimenter des règles et rapports.

Rien n'est détruit silencieusement

Un expéditeur bloqué se retrouve toujours dans la vue Spam où le ticket peut être lu et restauré.

La plateforme se protège elle-même

Le serveur lui-même IP Ces adresses ne peuvent jamais être bloquées ou signalées via ce. API, de sorte qu'une intégration mal configurée ne peut pas faire tomber la plate-forme.

💡
Créez une clé sous Integrations, puis API Keys et donnez-lui uniquement les champs de sécurité dont elle a besoin. Le contrat complet des requêtes pour chaque action se trouve dans meta. actions et le document OpenAPI.
Mes connecteurs existants l'utilisent-ils automatiquement?+

La synchronisation sortante est déjà automatique: lorsque vous bloquez uneIP, les plates-formes connectées sont racontées par la synchronisation de sécurité du connecteur.APIest la moitié entrante. Pointez votre connecteur ou code personnalisé à ces quatre actions avec une clé portant les champs de sécurité.

Où se trouvent les règles antispam ?+

Le contrôle de blocage d'expéditeur sur la page Tickets, l'IA du spam dans les Paramètres et ce API fonctionnent tous contre la même liste de blocages, donc il y a exactement un endroit où regarder.

Développeur

Événements API

Envoyez des événements personnalisés depuis votre serveur ou site Web vers OpsIQ pour les analyses, les expériences, le déclenchement de CRM et les conditions webhook.

Comment ça fonctionne
Événements APIUn appel track() envoyant un événement demo_booked personnalisé dans OpsIQ, qui alimente les objectifs de conversion, les segments et les déclencheurs.OpsIQ. track("démo_réservée", {valeur: 0, plan: "pro"});Objectifs de conversionSegmentsDéclencheurs & webhooksLe navigateur (OpsIQ.track) ou POST côté serveur /v1/events
Événements API

Événements côté navigateur

Suivi des événements du navigateur
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "button_clicked", {
  button: "signup",
  page: "/pricing",
  variant: "green"
}]);

Événements côté serveur

Côté serveur, enregistrez les activités et conversions par rapport à un contact via l'action API. Utiliser crm.activities.record pour le cycle de vie/l &apos; activité commerciale et crm.conversions.record Il n'y a pas de conversions. events.send Le récepteur de l'événement CRM entrant vit à /v1/inbound.php?t=<token> Pour les systèmes tiers qui poussent des événements.

Activité côté serveur (action API)
POST /api/v1.php
Authorization: Bearer opq_your_key
Content-Type: application/json

{
  "action": "crm.activities.record",
  "site_key": "site_abc123",
  "email": "[email protected]",
  "event": "subscription.upgraded",
  "value": 50,
  "currency": "USD"
}

Convention de dénomination

Notation par points

"order. completed" et non pas "orderCompleted".

Passé

"button. clicked" et non pas "buttons. click".

Soyez spécifique

"pricing. plan_selected" et non pas "user_action".

Développeur

Comment les données circulent à travers OpsIQ

Comprendre le flux de données vous aide à déboguer les intégrations et à optimiser les performances.

Comment ça fonctionne
Comment les données circulentLes données proviennent du widget et de la balise vers. OpsIQ Core (CDP, graphe d'identité, cerveau de l'IA, analyses, CRM) puis via des webhooks et le REST API.Widget& baliseOpsIQ de baseCDP · Graphique d'identitécerveau IAAnalyse · CRMLes accroches de Web sont éteintesAPI REST
Flux de données

Flux de données entrant

1
Widget balise

The JavaScript Le widget envoie des pages vues, clics et messages de chat à. /beacon.php.

2
Ingestion d'événements

Événements stockés dans opsiq_events avec site_key, type d'événement, client et propriétés.

3
Assemblée de session

Le constructeur de sessions regroupe les pages vues en sessions (via cron).

4
Résolution de l'identité

Une fois identifiés, les dossiers anonymes sont liés au profil du client.

5
Connecteur de synchronisation

Les connecteurs extraient des données de plateformes externes et les stockent dans le cache du connecteur.

6
Contexte de l &apos; IA

L'IA assemble le contexte à partir de l'historique des visiteurs, du profil client, des données de connecteur, de la base de connaissances et de l’invite.

Flux de données sortantes

1
Incendies d &apos; événements

Les événements internes se déclenchent (ticket. created, chat. message, order. completed).

2
File d'attente de tâches

Événement placé dans la file d'attente de tâches asynchrones.

3
Envoi de Webhook

Le répartiteur signe le message et l’envoie à tous les points de terminaison abonnés.

4
Réessayer en cas d'échec

Les livraisons échouées ont été réessayées avec un recul exponentiel.

Paramètres

Référence des paramètres

Tout ce qui est indiqué ci-dessous s'applique à l'espace de travail dans lequel vous êtes, afin qu'un seul compte puisse gérer plusieurs marques avec des identités, des comportements de chat et des règles de conservation différents.

Trouver un cadre

Il y a environ six cents contrôles individuels dans les paramètres, répartis sur onze onglets regroupés sous quatre menus. Vous n'êtes pas censé parcourir pour eux.

Paramètres de recherche (Ctrl + K)

Appuyez sur Ctrl + K, ou Commande + K sur un Mac, n'importe où dans la page Paramètres. Tapez des mots simples et appuyez sur Entrée pour accéder directement au contrôle. La recherche tolère les petites fautes de frappe et comprend les mots connexes, donc le planificateur trouve Cron et la confidentialité trouve les contrôles de suivi.

Espace de travail et plan

Général et Licence.

IA et support client

Assistant d'IA, Chat client, OpsIQ Portail de rédaction et de support.

Données et gouvernance

Suivi et confidentialité, autorisations et sécurité.

Système

Configuration de Cron (auto-hébergé uniquement) et Danger Zone.

Sauvegarde

Chaque onglet est sauvegardé séparément avec son propre bouton Sauvegarder. Client Chat et OpsIQ Writing épinglent leur onglet à l'écran, les modifications ne sont pas transférées entre les onglets.

Liens profonds

L'onglet actif est écrit dans l'adresse de la page, donc un onglet peut être mis en favoris ou envoyé à un collègue.

Général: Identité d'entreprise

La carte la plus importante de la page. L’IA lit ces valeurs à chaque réponse, chaque rapport et chaque briefing quotidien.

Nom de l'entreprise

Utilisé dans les rapports d'IA, les briefings quotidiens et le libellé destiné aux clients.

Industrie des affaires

Adapte l’analyse IA, le scoring des prospects, les briefings et les modèles d’enquête. Choisissez parmi hébergement web, e-commerce, SaaS, immobilier, agence, conseil, santé, éducation, finance ou entreprise générale.

Langue du système

La langue affichée à tous ceux qui n'ont pas choisi la leur, chaque agent peut l'annuler dans son profil.

Utiliser la langue du navigateur

Une fois que quelqu'un a choisi une langue, son choix l'emporte et cela ne le remplace jamais. This never overrides it.

Fuseau horaire du système

La zone dans laquelle l'ensemble du système fonctionne: les dates, les rapports, les plannings et le cron en arrière-plan. Utilisez votre fuseau horaire d'opérations, pas vos clients.

Général: GeoIP et suivi

Chemin de la base de données GeoIP2

Détection automatique au premier chargement sur cPanel, Plesk, DirectAdmin, Cloudways, Docker et Linux ou Windows ordinaire. Ajoutez GeoLite2-ASN. mmdb dans le même dossier que celui du fournisseur d'accès Internet du visiteur.

Mode de source géographique

GeoLite2 uniquement, Geo Lite 2 avec une Cloudflare fallback, or Cloudflare only.Cloudflare Les modes nécessitent que le site soit proxy via.Cloudflare, avec les en-têtes de localisation des visiteurs activés pour le détail de la ville et de la région.

Délai d'attente de la session (s)

L'inactivité avant la fin d'une session de visiteur est considérée comme terminée. Par défaut 14400, soit quatre heures.

Intervalle de rafraîchissement en direct (s)

Fréquence de rafraîchissement du flux en direct. Par défaut 30 secondes.

Seuil actif (min)

Durée pendant laquelle un visiteur est considéré comme en direct après le chargement de sa dernière page. Par défaut, 2 minutes.

Conservation des données (jours)

Supprime les enregistrements collectés et générés après cette date : analyse, chat, tickets, commentaires, transactions, télémétrie d’IA, journaux d’intégration et activité CRM. 0 conserve tout pour toujours : paramètres, contenu créé et reçus de consentement ne sont jamais supprimés.

Lorsqu'un chat est supprimé

Choisissez la quantité de conversation supprimée qui reste enregistrée : le disque complet, le disque sans conversation ou la partition seulement. La suppression cache toujours le chat dans la boîte de réception et l'historique du visiteur. Conservation programmée et Oubliez le visiteur toujours effacer complètement quoi que ce soit.

Suivre le trafic des bots

Laissez-le ; il gonfle le nombre de visiteurs et fausse chaque rapport.

Popup de sondage de retour activé

Séparé des sondages de chat sous Chat client, Flux d'assistance. Separate from the chat surveys under Client Chat, Support Flow.

Général: Fonctionnalités AI

Tous sont activés par défaut et enregistrés par espace de travail.

AI Triage sur les billets

Classe chaque ticket par catégorie, priorité et sentiment, et écrit un résumé du fil en haut du ticket.

Résumé du hover AI Triage

Affiche les balises de triage et le résumé dans une info-bulle lorsqu’un agent passe la souris sur une ligne de la liste des tickets.

Copilot (compositeur)

Ajout des boutons Brouillon de réponse IA, Plus chaleureux, Plus court, Plus formel et Apologie sous la zone de réponse du ticket.

Ask-OpsIQ Copilote

Le copilote flottant sur chaque page d'administration sait quel client, facture ou ticket est ouvert.

Matin brief

Lors de la première ouverture du jour, le copilote présente les tickets urgents, les réponses en retard et les chats en attente.

Général: argent, image de marque, sauvegarde

OpsIQ monnaie de base

Chaque montant total dans l'administration est converti en cette devise pour affichage. Les connecteurs stockent leur propre devise source; définissez-la par connecteur.

Taux de FX auto-synchronisés

Actualise les taux toutes les six heures à partir d'un flux public gratuit sans clé API. Vous pouvez ajouter des taux manuels qui remplacent le flux. Avec la synchronisation automatique désactivée, les devises sans un taux manuel ne sont pas converties.

Activer les fonctionnalités Commerce et Facturation

Si vous l'activez, la page Ventes et conversions, les cartes de revenu du tableau de bord et le flux Live Intelligence s'affichent. Lorsqu'elle est désactivée, toutes les surfaces de prix sont masquées et la page Vente quitte le menu.

Vocabulaire du commerce

Enseigne à OpsIQ votre formulation: si vous faites des renouvellements, le mot pour renouveler, ce que vous vendez et comment les acheteurs sont appelés.

Branding et logos

Deux téléchargements, un pour les arrière-plans clairs (barre latérale d'administration) et l'autre pour les sombres (page de connexion). PNG, JPG, WebP ou SVG jusqu'à 3 MB.

Agent de renseignements sur le site, autoriser les cibles SSH privées

L'agent SEO d'implémentation automatique se connecte sur SSH. Les adresses privées, de boucle et réservées sont bloquées par défaut comme mesure anti-SSRF. Activez uniquement pour les installations autohébergées qui doivent atteindre un serveur local.

OpsIQ Sauvegarde / Restauration

Exporte tous les paramètres et OpsIQ-propriétaire de la table plus les fichiers téléchargés.OpsIQ Configuration et enregistrements seulement; il ne touche jamais les clients, factures, tickets, services, domaines, commandes ou transactions.

⚠️
Prenez une sauvegarde avant d'utiliser quoi que ce soit dans Danger Zone. La sauvegardes est dans General et les actions de suppression sont dans Dangers Zone, il est donc facile d'atteindre le bouton de supprimer sans avoir exporté au préalable.
Paramètres

Paramètres: Sécurité et confidentialité

Protection de la connexion d'administrateur, des comptes de votre personnel et des données collectées par OpsIQ La connexion du client au portail de support est configurée séparément.

Protection de connexion

Google reCAPTCHA

Arrête les bots et le bourrage d'informations d'identification lors de la connexion administrateur. Choisissez v3 (invisible, avec score) ou v2 (case à cocher), définissez le seuil de score v3 et fournissez le site et les clés secrètes. Ces mêmes clés sont réutilisées par le formulaire de demande du portail d'assistance.

Verrouillage automatique après échec de connexion

Bloque une adresse après un certain nombre d'échecs dans une fenêtre, pendant un certain numéro d'heures. Vous pouvez personnaliser le message de page verrouillée et afficher une petite distraction sur l'écran d'attente.

Login Durcissement

Politique de mot de passe avec une longueur minimale, rejet des mots de passe trouvés dans les violations connues, verrouillage par compte contre le bourrage d'informations d'identification, deux facteurs obligatoires pour chaque administrateur, saisie à nouveau du mot de passer avant les actions dangereuses et alertes de connexion sur un nouvel appareil.

Authentification unique (OIDC)

Nécessite l'émetteur URL, l'ID client et le secret du client. Les domaines à approvisionnement automatique, un par ligne, créent des utilisateurs automatiquement lors de la première connexion.

Authentification unique (SSO)SAML 2.0)

Pour les fournisseurs qui parlent SAML. OpsIQ Fournit la réponse ACS.URL Vous fournissez l'ID de l'entité IdP, vous connectez URL, optional sign-out URL et X.509 Les champs d'attribut E-mail et Nom ne sont nécessaires que pour les noms d’attributi non standard.

Provisionnement SCIM

Création, mise à jour et désactivation de.OpsIQ des comptes.OpsIQ Fournit le. SCIM Base URL; vous générez des jetons étiquetés ici afin qu'un peut être révoqué sans casser le reste.

Menaces, blocage et collecte

Liste d'autorisations de sortie

Restreint les hôtes externes que ce connecteur d'espace de travail peut appeler. Compagnon du contrôle cible SSH dans General.

Notation des menaces et blocage automatique

Bloque un visiteur lorsque son score de menace dépasse votre seuil. 0 le désactive. Suivez la page Aperçu de la sécurité pendant une semaine avant de choisir un numéro.

Bloquer la page Message

Le message qu'un visiteur bloqué voit, en texte brut ou votre propre écran de blocage personnalisé HTML.

Core Web Vitals de vrais visiteurs

Mesure LCP, INP et CLS à partir de sessions réelles.

Distribution d'événements par lots, sécurisée

Les événements personnalisés sont mis en file d'attente dans le navigateur et diffusés par lots avec des réessais, ce qui réduit les pertes sur les connexions mobiles médiocres.

Balises de suivi signées

Les widgets intégrés réels contiennent un jeton cryptographique rotatif afin que les données de suivi falsifiées puissent être rejetées. Désactivé par défaut. L'activation modifie la façon dont les intégrations s'authentifient, donc testez d'abord.

Alertes de sécurité

Désactivé par défaut, la détection et le blocage s'exécutent indépendamment. Cette carte contrôle si vous êtes informé de l'aide apportée par l'IA et dans quelle mesure.

Activer les alertes de sécurité

Interrupteur principal pour cette carte.

Seuil de vague d’échecs de connexion

Combien de connexions ayant échoué sur une courte période comptent comme une vague qui mérite d'être signalée.

IP Intelligence de réputation

Ajoute un score de menace pour les visiteurs apparaissant dans des flux d'abus publics.

Montre du site

Vérifications horaires de disponibilité et d'expiration TLS, alerte avant l'expinction d'un certificat.

Analyste de sécurité IA et résumés d'incidents IA

Ajoute un verdict explicable à une activité suspecte et regroupe les attaques connexes en un seul incident lisible plutôt qu'en un flux d'événements.

Pilote automatique de politique

Il agit de lui-même, transformant ce qu'il apprend d'un incident en une règle proposée ou appliquée. Laissez tomber jusqu'à ce que vous ayez examiné ses propositions et acceptez avec eux.

Résumé quotidien de sécurité et conseiller hebdomadaire en posture

Un résumé quotidien sur la page Aperçu de sécurité et une liste de contrôle hebdomadaire montrant ce qui est protégé et ce qui reste ouvert.

Expiration automatique des propositions obsolètes

Une règle de bloc proposée sur laquelle vous n'avez jamais agi expire d'elle-même au lieu de s'accumuler.

Replay de la session DOM

Activer la lecture de session DOM

Enregistre les sessions des visiteurs pour la lecture. Lorsque désactivé, la bibliothèque de replay n'est jamais chargée, donc il n'y a pas de coût à le laisser désactiver. Les enregistrements sont échantillonnés et masqués en matière de confidentialité, et sont vus sur la page Session Replay sous Analytics.

Fréquence d'échantillonnage, capture maximale, rétention

Quelle part des sessions enregistrer, combien de temps un seul enregistrement peut durer et combien d'enregistrements sont conservés.

⚠️
Gardez le taux d'échantillonnage et la rétention aussi bas que possible, afin de répondre à votre question, et divulguez-le dans votre avis de confidentialité.
Paramètres

Paramètres: Suivi et confidentialité

Ce que OpsIQ peut collecter, et combien de temps chaque type d'enregistrement survit.

Exclusions

Gammes exclues IPs et CIDR

Adresses jamais suivies, une par ligne, adresses exactes ou plages de CIDR. La façon la plus propre d'exclure votre équipe de vos analyses, car elle couvre tous les utilisateurs à cette adresse plutôt que seulement les administrateurs connectés.

Chemin d'accès URL exclus

Les modèles de page ne sont jamais suivis, un par ligne, les caractères génériques avec un astérisque. Par exemple /admin/* garde tout le back office hors du journal des visiteurs.

Politique de conservation des données

Séparez-le du paramètre de conservation des données global dans Général et de la purge de zone dangereuse.

Journaux d'interaction avec l'IA

La télémétrie de confiance conserve des aperçus courts de la requête et de la réponse. Par défaut, 90 jours. Cette option contient le plus de texte client, alors raccourcissez-le en premier lorsque vous resserrez les paramètres de confidentialité.

Événements d'utilisation de l'IA

Compte par jeton d'appel pour le rapport de coûts. Par défaut 90 jours. Numéros uniquement, pas de contenu du message.

Piste d'audit des actions

Le journal des actions et de la sécurité à l'évidence d'altération. Par défaut 365 jours.

Diagnostic

Enregistrements de l'état du système. Par défaut 30 jours.

Questions sans réponse

Les groupes de questions auxquelles l'IA n'a pas pu répondre. Par défaut 90 jours, passez-les en revue sur la page Questions manquées par l'AI avant qu'elles ne soient expirées.

Chiens de garde et exportations

Alertes d'anomalie métrique

Comparaison quotidienne de la journée d'hier avec la base récente, en vous avertissant lorsqu'une mesure dépasse votre seuil. Par défaut 35 pour cent.

Exportation d'entrepôt

Des vidages nocturnes des sessions, visiteurs, pages vues et tables associées pour votre propre pile de BI, dans un format que vous choisissez, conservés pendant un certain nombre de jours.

Paramètres

Paramètres: Admin AI Assistant

L'assistant flottant que votre personnel utilise dans l'administration, avec un accès en lecture directe aux clients, factures, tickets, serveurs et journaux cron. Un assistant différent de celui qui est face au client sous Client Chat.

Activer le widget d'IA OpsIQ

Affiche le bouton assistant sur chaque page d'administration. Off le cache pour tout le monde.

Mise en page et comportement

Position de coin, largeur du panneau (320 to 600 px), hauteur maximale (400 to 900 px), rayon d'angle (0to 24), la taille de police, et un flou en verre dépoli derrière le panneau.

Afficher les Quick Chips

Boutons de raccourci en un clic sous l'en-tête. La façon la plus rapide pour la plupart des membres du personnel.

Afficher les informations du modèle

Affiche le modèle qui a répondu et combien de temps cela a pris. Utile lors du réglage des coûts, bruit pour une utilisation quotidienne.

Portail d'accès par administrateur

Affiche l'assistant uniquement à un administrateur connecté dont le nom d'utilisateur et l'adresse e-mail correspondent tous deux à un agent OpsIQ affecté à cet espace de travail. Utilisez le bouton Vérifier mon accès avant d'activer ou vous pouvez verrouiller votre propre équipe.

Personne de l'IA

Nom d'affichage, slogan de l'en-tête et message de bienvenue personnalisé affiché à l'ouverture du panneau.

Puces intelligentes à action rapide

Modifiez l'étiquette et l'invite sous-jacente pour chaque raccourci, ajoutez la vôtre ou réinitialisez les valeurs par défaut. L'étiquettes est ce que le personnel voit, l'Invite est ce qu'il reçoit.

Couleurs et formes

Forme de puce (pilule, arrondi, carré), couleurs de puces, thème de carte et forme du lanceur (rond, squircle, carrée), avec un aperçu en direct.

Mémoire de conversation

L'assistant se souvient de l'historique de chaque personne à travers les sessions du navigateur, jusqu'aux messages 120, stockés dans votre propre base de données.

Paramètres

Paramètres: Chat client

Le widget de chat que vos clients utilisent et la plus grande zone des Paramètres Six sous-onglets, avec le commutateur principal et Enregistrer épinglés en haut de l'onglet.

Parcourez les sous-onglets dans l'ordre sur une nouvelle installation: Identité et copie, Apparence, Comportement, Flux de support, Formation aux connaissances.

Identité et copie

Identité de marque

Nom du widget, slogan, nom de l’IA, nom utilisé pour les notifications système et d’inactivité, ainsi que la manière dont apparaissent les noms des agents.

Salutation dans le chat

Deux salutations, une pour tous les visiteurs et une autre pour ceux qui ont été identifiés. Une question déclenche plus de conversations qu’une déclaration.

Découpe-poupée

Le message flottant avant l’ouverture du chat, avec son propre nom, sa taille de police et ses couleurs. L’IA peut écrire les teasers, avec des contrôles pour le nombre à générer, combien d’afficher par visite et l’espace entre eux.

Invites et Handoff

Le script complet : demander un nom et une adresse e-mail, confirmations, demande d’un humain, aucun agent disponible, ticket créé ou annulé, remise en attente… Environ deux douzaines de lignes individuelles dans un panneau rétractable.

Avis d'état et d'inactivité

Trois messages visibles par le client : l’agent ferme la conversation, le visiteur est passé au silence et l’ agent remet les clés à l’IA.

Compositeur et Suggestions

Trois bonnes suggestions détournent plus de tickets qu’une page d’articles, et vous pouvez les utiliser pour créer des questions d’ouverture.

Lanceur, Icône et Avatars

Icône du lanceur, une icône différente en option lorsqu'elle est ouverte, taille du lanceurs et images pour l'agent humain et l'IA.

Apparence

Thème et verre

Mode Thème, un préréglage de couleur premium, intensité et opacité du flou, ainsi que des bascules pour les animations, les lignes de séparation, le masquage de la ligne d'état, le masquer la carte de boîte de message et le masque de bouton de fermeture.

Couleurs principales

Le lanceur, l'en-tête, le panneau d'aide, les liens, les boutons, les notifications système et le composeur, chacun avec une couleur de début et de fin pour les dégradés. Utiliser l'option par défaut du verre ignore ces éléments et conserve la finition transparente.

Panneau, bulles et copeaux

Une trentaine de sélecteurs couvrant le panneau, la bordure, le texte, la zone de saisie et chaque type de bulle (visiteur, IA, agent, saisie, système) ainsi que les puces de suggestion et leur état de survol.

Mise en page et forme

La largeur et la hauteur du panneau, le rayon des coins, la taille de police, la position de l'écran, la forme du lanceur, le style de bulle et si les avatars s'affichent.

Comportement

L'IA répond automatiquement

Désactivé signifie que chaque message attend un humain pour répondre.

Suivi humain et double-texting naturel

Un suivi doux lorsqu'un visiteur se tait, et un deuxième message court optionnel comme une personne en enverrait un. Réglé avec le nombre maximum de suivis par silence, le premier délai, le multiplicateur plus tard, la fenêtre de présence et la fenêtre de séquence maximale.

Réponses à la machine à écrire et rythme de réponse

Si les réponses sont tapées mot par mot, et à quelle vitesse l'assistant répond, par préréglage ou votre propre délai minimum et maximum en millisecondes. Un petit délai est plus humain qu'une réponse instantanée.

Traduction en direct

Chaque agent lit et écrit dans sa propre langue tandis que le visiteur lit la sienne.

Retour à l'IA après que l'agent est inactif

Minutes d'inactivité de l'agent avant que l'IA ne reprend la conversation.

Ouvrir automatiquement le chat

Secondes avant que le widget ne s'ouvre.0Intrusive sur mobile; quittez à 18h00.0à moins d &apos; avoir été testé.

Des réponses plus intelligentes

Planifier à l’avance pour des réponses en une seule fois, réfléchir en profondeur, un modèle séparé optionnel pour les réponses de l’agent, montrer le raisonnement aux visiteurs, tolérer les fautes d’orthographe, la mémoire de longue conversation, restreindre l’assistant à votre entreprise seulement, les prix dans la devise du visiteur et comment apparaissent les liens.

Économie de coûts

Saute la recherche de connaissances pour les salutations telles que bonjour et merci, et limite la réponse la plus longue en jetons.

Langues

Quelles langues le widget prend en charge et comment il choisit une pour un visiteur.

Réponses du compte client

Les réponses sont fournies par le compte d'un client connecté, consultées en direct si nécessaire et chargées uniquement au besoin. En lecture seule dans tous les cas. Le chargement lorsque nécessaire réduit sensiblement les coûts.

Remboursements

Demandes de remboursement assisté où l’assistant recueille les détails et remet le dossier à une personne.

Conversation et Widget

Conserver les conversations passées, continuer un chat sur vos sites connectés, fenêtre glissante, demander aux invités de recevoir un e-mail et laisser votre équipe transformer un chat en ticket.

Caractéristiques du widget

Sélecteur d’émoticônes, pièces jointes avec un mode optionnel de collage uniquement, compréhension des images par IA, icônes intégrées, microphone, bouton « Parlez à l’agent », sons du visiteur, aperçu des pièces attachées, bouton d’appel vocal et isolation de la session.

Boîte de réception, notifications et fenêtre contextuelle d'accueil

La fenêtre contextuelle de bienvenue du visiteur, ainsi que vos alertes d’agents : sons de boîte de réception, notifications sur le bureau, murmure sonore, si les murmures privés bipent et l’intervalle de sondage de la boîte à lettres.

Soutien du flux

Délivrance de l ' aide humaine

Comment les demandes d’une personne sont attribuées, le nombre de secondes qu’un agent doit répondre, si un refus renvoie le chat à l’IA et si l’AI reprend lorsque le délai expire. Configurez ceci avant la mise en ligne ou un visiteur qui demande une personne attend simplement.

Heures de travail

Horaires d'ouverture, fuseau horaire et le message de fermeture. En dehors de ces heures l'IA ne proposera pas un humain. Un calendrier distinct des heures d'affaires du billet sous OpsIQ Writing.

Réponse lorsque l'IA est désactivée

La première réponse à un nouveau message, la réponse quand quelqu'un est déjà dans la file d'attente et le temps avant de répéter.

Formulaire hors ligne

Affiche un formulaire de contact au lieu du chat.

Recherche de tickets et notifications du département

Connaissance du ticket d'IA, de sorte qu'un visiteur citant un numéro de ticket obtient son statut réel et les services vers lesquels l'IA peut être acheminée. Un panneau intégré affiche les destinataires réels pour chaque service, résolus de la même manière que le notifiant les résout.

Centre d'aide dans le widget de chat

Permet aux visiteurs de parcourir les articles publiés sans quitter le chat. Vous choisissez l’emplacement du point d’entrée, l’étiquette et l’icône de la barre inférieure, ainsi que si vous souhaitez proposer un lien vers le centre d’aide complet.

Évaluation de la conversation

Notation en étoiles déclenchée lorsqu’un agent ferme le chat, à la fin d’une transmission ou après une période d’inactivité que vous définissez. Choisissez un ou deux déclencheurs, pas tous.

Sondage post-chat

Un court sondage lorsque le visiteur ferme la discussion, avec votre question, le délai, la règle de synchronisation et un plafond par visite. Les visiteurs peuvent également envoyer ou télécharger la transcription.

Sondage par e-mail post-chat

Un sondage de suivi par e-mail après la fin de la conversation, éventuellement dans la langue du visiteur, avec contrôle sur le délai, l'objet, l’intro, la question, les deux étiquettes de bouton et la ligne de remerciement.

Avis sur les réponses

Les pouces vers le haut et les pouces en bas sur chaque réponse d'IA, alimentant les tableaux de bord de qualité.

Archive de conversation

L'archivage automatique après quelques jours, la résolution automatique au bout de quelques minutes de silence et la suppression des conversations archivées après plusieurs jours.

Formation en connaissance

Ce que l'assistant sait réellement. Rien d'autre dans le chat client n'a autant d'importance.

Formation sur la connaissance du site Web

Crawls votre site afin que l'assistant puisse répondre à partir de celui-ci. Jusqu'à dix liens de départ, une limite de page, une profondeur de lien et des dossiers exclus. Un seul URL peut être testé avant le crawling complet.

Embedures

La clé et le modèle API qui transforment les pages en signification consultable plutôt que des mots-clés correspondants.

Organisateur de connaissances AI

Un clic et l'IA lit chaque FAQ et page explorée et les trie en catégories.

FAQs, réponses vérifiées

Paires de questions et réponses traitées comme la source prioritaire, chacune avec un statut, un poids et une catégorie. Elles sont consultables, importables depuis un fichier JSON, et l’IA peut les rédiger à partir d’une description de votre activité. Lorsque l’assistant se trompe, écrivez une FAQ : elle prime sur les pages explorées, la correction est donc immédiate.

Avancé

Performances et limites

Intervalle de sondage, limite du débit des messages et fenêtre, taille maximale des pièces jointes, tentatives de pièces attachées par fenêtre et extensions de fichier autorisées. La liste d'extensions est un contrôle de sécurité; gardez-la serrée.

Livraison en temps réel

La diffusion de messages instantanés et d’états au lieu du polling, via Pusher, Ably ou Firebase, avec un intervalle de polling de secours.

Notifications push

Alertes d'appareil pour les agents via Pusher Beams ou OneSignal, avec un intérêt pour l'appareil.

Push Web (VAPID)

Poussée par navigateur en utilisant vos propres clés générées sans fournisseur tiers, générées ici et non dans Danger Zone.

Voix, vidéo et partage d'écran

TURN les informations d'identification pour que les appels se connectent à travers des réseaux restrictifs, en utilisant Cloudflare ou vos identifiants Twilio ou votre propre TURN URL, nom d'utilisateur et identifiant.

Flux de travail de boîte de réception

Paramètres de l’espace de travail des agents plutôt que les paramètres du visiteur: SLA de première réponse en quelques minutes, vues de file d’attente enregistrées, raccourcis clavier et palette de commandes, recherche dans la conversation et tickets client dans l’inspecteur.

Canaux de messagerie

WhatsApp, SMS, Facebook Messenger, Instagram, Telegram, X direct messages et LINE, chacun avec son propre commutateur de réponse automatique par IA, ainsi qu’un commutador de politique pour les actions d’IA sur les canaux, un déblocage des réponses et le modèle de réengagement WhatsApp. Chaque canal se retrouve dans la même boîte de réception que le chat Web.

Un aperçu en direct du widget au bas de l'onglet est mis à jour lorsque vous modifiez, utilisez-le plutôt que de recharger votre site Web pour vérifier une modification.
Paramètres

Paramètres: OpsIQ Écriture

Les tickets répondus par écrit: réponses automatiques, le système de ticket natif, l'escalade, les heures d'ouverture, le routage et les e-mails adressés au client.

Auto-réponse

Afficher les boutons d'écriture OpsIQ

Ajoute les boutons d'aide à l'écriture pour vos agents dans le panneau d'administration.

Activer la réponse automatique aux tickets

Met en file d’attente les nouveaux tickets et répond à ceux-ci après un délai. Commencez par le mettre hors service et passez en revue les brouillons pendant une semaine, puis les remboursements, annulations et modifications d’accès devraient toujours arriver à une personne.

Départements de réponse automatique

Tout ce qui n'est pas répertorié est laissé pour un humain, ce qui constitue la valeur par défaut sécurisée.

Calendrier de délai de réponse (minutes)

Une réponse instantanée est considérée comme un robot, quelques minutes sont considérées comme une équipe rapide et la durée de l'attente peut varier selon les situations.

Nombre maximal de réponses AI par ticket et service

Un plafond par département, par exemple Billing 1 and Support 3. Sans capuchon, un fil confus peut se boucler.

Longueur, statut et identité de la réponse

Le nombre maximum de jetons d’écriture, le statut du ticket après une réponse et après une escalade, ainsi que le compte administrateur auquel les réponses automatiques sont attribuées. Utilisez un compte clairement nommé afin que le personnel puisse distinguer les réponset AI des réponses humaines.

Opérations de ticket natives

Système de tickets natif

Le système de tickets intégré à OpsIQ, pour les installations sans un helpdesk externe.

Pipeline des e-mails entrants vers les tickets natifs

Transforme l'email entrant en tickets.OpsIQfournit le point finalURL, auth token, script path et PHP binaire. Tout ce qui peut poster à ce paramètre peut créer des tickets, donc garder le jeton secret.

Réponse multi-tours, délai et debounce

Si l’IA continue de répondre au fur et à mesure que la conversation se poursuit, et s’il attend une fenêtre silencieuse afin que trois messages rapides reçoivent une réponse considérée. La fenêtre tranquille est le meilleur paramètre unique pour faire en sorte que les réponses automatisées semblent considérées.

Portail de soutien public

Une page client où tout le monde peut soulever et suivre un ticket, avec une ligne de bienvenue optionnelle. Son adresse et son apparence sont configurées dans l'onglet Portail d'assistance.

Format du numéro de billet

Nombre de lettres aléatoires apparaissant dans les numéros de ticket générés.

Envoyez des e-mails à vos clients dans leur propre langue

Les e-mails du personnel ne changent jamais de langue : les notifications, les alertes des départements, les briefings et les rapports planifiés restent dans la langue de votre système.

Remerciements et confirmations

Un accusé de réception fixe sur les nouveaux tickets, ainsi que des messages de confirmation lorsqu’un ticket est ouvert, lorsque des commentaires sont laissés et lorsqu’il est fermé. Chacun d’eux comporte un aperçu en direct. Il existe également une boîte à outils globale pour le modèle d’e-mail et le lien derrière le bouton « Afficher votre ticket ».

filtrage des spams AI

Filtre les tickets provenant d'expéditeurs inconnus, et peut éventuellement déplacer le spam suspect de lui-même. Laissez le mouvement automatique désactivé jusqu'à ce que vous ayez regardé son jugement.

Fermer automatiquement les tickets inactifs

Ferme un ticket après un certain nombre de jours tranquilles. Dites au client dans le message de clôture comment rouvrir.

Heures d'ouverture (calendrier SLA)

Fuseau horaire, heures d'ouverture et de fermeture, jours ouvrables et jours fériés pour les minuteries du premier intervenant et de la résolution.

Attribuer automatiquement de nouveaux tickets

Affectation automatique, en option uniquement aux agents qui sont en ligne, avec des compétences d'agent et une sensibilité de correspondance pour le routage basé sur les compétences.

Suggérer des tickets en double

Repère quand un client ouvre un ticket proche d'un autre qu'il a déjà, avec une sensibilité de correspondance réglable.

Enquête de satisfaction après la clôture

Envoie un sondage par courriel le jour suivant la clôture. Les résultats apparaissent sur la page CSAT.

Avertir le département par courriel

Les destinataires sont les membres de ce service, et non l’adresse de la boîte aux lettres du service, qui est l’ adresse d’arrivée des tickets.

Ce que l'IA peut lire

Accès aux données client AI

Un commutateur principal et des autorisations individuelles en lecture seule pour le résumé du profil client, les factures, les transactions, le solde de crédit, les produits et services, les domaines, les serveurs liés et un aperçu général du compte. Commencez par le résume du profil et ajoutez des catégories au fur et à mesure que les réponses en ont besoin.

Escalade et connaissance

Activer l’escalade des tickets par l’IA

Déplace un ticket vers un service plus approprié avant de répondre. Vous choisissez les services autorisés, le délai de vérification et vous pouvez écrire vos propres instructions d'avis d'escalade. Activez la note d'escalade interne afin que votre équipe puisse voir pourquoi un ticket a été déplacé.

Paramètres de connaissances

Si les réponses utilisent le langage du client, si elles s’appuient sur des liens crawlés et des FAQ, si l’IA lit les images et PDF Les pièces jointes, le mode de réponse à la connaissance, JSON Utilisez les liens crawlés et la FAQ doit être activée, sinon l'IA devinera ce que vous avez écrit.

Arrêter la réponse automatique après une réponse humaine

Une fois que le personnel répond, l'IA cesse de répondre à ce ticket et peut parler par-dessus votre propre agent.

Instructions pour les tickets et e-mails

Des instructions en texte libre qui façonnent le ton et le contenu de chaque réponse, avec un exemple de travail pouvant être chargé.

Importer les connaissances de JSON

Téléchargez ou collez un fichier de connaissances JSON pour l'assistant d'écriture.

Studio de bouton

Un concepteur complet pour le bouton client: style d'affichage, taille, étiquette, icône, forme, largeur minimale, style d’arrière-plan avec couleurs primaires et secondaires, angle de dégradé, bordure, rayon des angles, ombre, typographie, remplissage, animation au repos, mouvement et couleurs du curseur, bague de mise au point, plus une boîte personnalisée CSS pour tout ce que les contrôles ne couvrent pas.

Paramètres

Paramètres: Portail de support

Le site client où les utilisateurs soumettent et suivent des tickets et lisent vos articles d'aide. Cet onglet contrôle la façon dont il est accessible et dont les clients se connectent. Sa conception visuelle est réalisée dans le Studio du portail de support.

Portal Studio ou Embedded Ticket Portal : lequel dois-je choisir?

Ce sont deux produits différents et les gens les mélangent constamment. Ils résolvent des problèmes différents, et il est normal de les exécuter ensemble.

Support Portal Studio : un lieu où vous envoyez des clients

Le Studio conçoit un Site de support complet que OpsIQ héberge pour vousIl a sa propre adresse Web, ou votre propre domaine, et il porte toute l'expérience de libre-service: articles d'aide avec recherche, le formulaire de demande, historique des tickets, connexion client et assistant. Choisissez un modèle, travaillez à travers Thème, Navigation, Mise en page, Connaissances, Pied de page, Marque, Tickets, Assistant, Formulaire et CSS, prévisualiser sur les tailles de bureau, tablette et téléphone, puis publier.

Utilisez-le quand Vous voulez une destination de marque que vous pouvez diriger vers chaque client, et vous préféreriez ne pas construire ou maintenir un espace d'assistance à l'intérieur de votre propre site Web.

Portail de billets embarqués: billets à l'intérieur de votre propre site

L'intégration met Uniquement l'expérience de billet sur une page de votre propre site WebLes clients ouvrent, suivent et répondent aux demandes d'assistance sans jamais quitter vos pages. Votre propre en-tête, navigation et design restent exactement tels qu'ils sont Définissez la mise en page, l'apparence et les règles d’accès dans le constructeur de widgets, prévisualisez le résultat, puis copiez l'extrait intégré sur votre page.

Utilisez-le quand Vous avez déjà un site Web ou une application avec sa propre conception et vous souhaitez que le support se déroule à l'intérieur de celui-ci plutôt que de remettre le client à une adresse différente.

La version courte

Le Studio construit Un endroit où vous envoyez vos clients. L'intégration apporte des billets Où vos clients sont déjà. De nombreuses entreprises utilisent les deux, en incorporant le widget de ticket dans leur zone de compte pour des demandes contextuelles tout en conservant le portail hébergé comme destination libre-service complète avec articles et recherche.

Adresse et accès

Mode d'accès

Que le portail soit ouvert à tous ou restreint aux clients connectés, les portails ouverts reçoivent plus de tickets et plus de spam.

Choix de mise en page

Si le portail et le centre d’aide partagent un héros ou utilisent deux, la navigation et le pied de page apparaissent sur les deux surfaces, ainsi que l’étiquette de section de navigation.

Adresse du portail

Choisissez un nom et OpsIQ affichera le portail résultant ainsi que les adresses de centre d'aide correspondantes. Si vous modifiez ce nom ultérieurement, les liens déjà envoyés seront interrompus.

Votre propre domaine

Serve le portail à partir d'un domaine dont vous êtes propriétaire, tel que support. votredomaine. com.

Portail de tickets intégré

Active le widget déroulant décrit ci-dessus, et ouvre l'éditeur d'intégration où vous choisissez la mise en page, l'apparence et les règles d'accès, prévisualisez le résultat et copiez l'extrait pour votre page. Ce n'est pas le Studio du portail: le Studio conçoit le portail hébergé, ce qui met des tickets dans votre propre site.

Comment les clients se connectent

La connexion du personnel est configurée sous Paramètres, Sécurité. The staff login is configured under Settings, Security.

Méthodes de connexion

Quelles options apparaissent sur la page de connexion. Connecteur et e-mail fonctionnent automatiquement.

Connexion par réseau social

Fournisseurs de comptes consommateurs, chacun ayant besoin d'un identifiant client et d'une adresse secrète, avec l'adresse de redirection fournie par OpsIQ pour s'inscrire auprès de ce fournisseur.

Authentification unique (OIDC)

Connexion du client via un fournisseur d'identité, avec émetteur URL, ID de client, secret et une liste facultative des domaines e-mail autorisés.

Client SAML 2.0

The SAML equivalent. OpsIQ Fournit la réponse ACS.URLVous fournissez l'ID de l'entité IdP, la connexion et la déconnexion URLs, X 509 Noms de certificat et d'attribut facultatif. Turn SAML Dans Méthodes de connexion ou il n'apparaîtra pas.

Connexion transparente depuis votre application

Un lien profond signé afin qu'un client déjà connecté à votre application atterrisse dans le portail sans se reconnecter. OpsIQ Fournit le secret de signature, portail URL Utilisez le générateur avant d'écrire n'importe quel code.Use the generator before writing any code.

Se déconnecter partout

La déconnexion du portail permet également de déconnecter le client de votre application.

Prise et protection

Champs du formulaire de demande

Chaque champ supplémentaire entraîne une perte de soumissions, alors demandez uniquement ce dont vous avez besoin pour trier les données.

Protection contre le spam et les abus

Un honeypot et une limitation de taux protègent toujours le formulaire public. En plus, vous pouvez bloquer les adresses e-mail jetables, ajouter vos propres domaines bloqués et ajouter un CAPTCHA en utilisant Google reCAPTCHA ou Cloudflare Turnstile.

Analyse du portail

Un résumé en lecture seule de l'activité du portail au cours des trente derniers jours.

Paramètres

Paramètres: Permissions, Licence, Cron et Zone de Danger

Le groupe Système, ainsi que les contrôles d’accès de l’équipe qui décident qui peut voir quel onglet Paramètres.

Accès et autorisations de l'équipe

Permissions par administrateur

Chaque administrateur reçoit un ensemble explicite d'autorisations, qui couvre l'accès à la boîte de réception du chat, les sections des paramètres qu'il peut modifier et ses services. Toute personne ayant le rôle d'administrateur complet dispose toujours de toutes les autorisations.

Licence

Affiche votre permis actuel, ce à quoi il vous donne droit et son statut.

Configuration de Cron

Sur le cloud OpsIQ, les tâches planifiées s'exécutent pour vous et l'onglet est caché. Une ligne de crontab pilote chaque tâche planifiée: réponse automatique aux tickets, routage d'escalade, actualisation du taux de change, interrogation des boîtes aux lettres et synchronisation des connecteurs.

1
Copier la ligne

L'onglet montre la ligne crontab exacte pour votre serveur avec le binaire PHP correct déjà choisi.

2
Ajouter à crontab

Exécutez crontab -e en tant qu'utilisateur exécutant PHP et collez la ligne unique, sur cPanel utilisez l'outil Cron Jobs à la place.

3
Vérifier

Utilisez Exécuter maintenant pour tester immédiatement plutôt que d'attendre, puis cliquez sur Suivant.

Le panneau de pulsation montre la dernière exécution, sa durée et ce qui a été traité pour la file d'attente de réponse automatique ainsi que le sondage par e-mail et connecteur. Il avertit lorsque la dernière opération provient du bouton Web manuel plutôt qu'un vrai cron serveur, et quand une pulsation est devenue obsolète.

Zone de danger

Supprimer toutes les données de suivi

Wipes everything OpsIQ Les paramètres et la configuration du site, les adresses bloquées, tout ce que votre équipe a écrit (base de connaissances, FAQ, traductions, conceptions de portails, définitions d'actions) et les reçus de consentement sont tous conservés.

Purger les données plus anciennes que

Le même balayage limité aux enregistrements plus anciens que 30, 60, 90 ou 180 Pour la conservation continue automatique, utilisez les valeurs de rétention dans Général et Suivi à la place et laissez la tâche planifiée le faire.

🚫
Exportez une sauvegarde depuis Paramètres, Général avant d'utiliser quoi que ce soit dans Danger Zone. Ces actions ne peuvent pas être annulées.
Paramètres

Gérer votre équipe

Invitez les membres de l'équipe et assignez des rôles pour contrôler qui peut accéder à quoi.

Équipe
Équipe & départementsL’écran de l’équipe : un tableau des administrateurs avec contact, badge de rôle (Propriétaire, Full Admin, Agent) et les départements auxquels chacun peut accéder.Équipe & départementsespace de travailÉquipe & départements+ Sauvegarder l'utilisateur adminCONTACTRÔLEDEPARTEMENTSAO[email protected]Ada OwusuPropriétaireToutKM[email protected]Kojo MensahAdmin completToutRT[email protected]Rita TettehAgentFacturationSB[email protected]AgentAppui1TEAMInviter & gérer les administrateurs2ROLESPropriétaire · Administrateur complet · Agent3SCOPEDAccès par département
L'écran de l'équipe réelle : chaque administrateur avec son contact, son rôle et les départements qu'il peut atteindre, agents visés, propriétaires pleins.

Rôles

Propriétaire

Accès complet, y compris la licence, la facturation et la zone de danger. Un par installation.

Admin complet

Accès complet sauf licence et zone de danger. Peut gérer les administrateurs.

Agent

Limité aux services affectés. Tickets, chats et analyse uniquement.

Inviter des membres d'équipe

1
Aller à l'équipe

Accédez à Équipe dans la barre latérale.

2
Cliquez sur Inviter

Entrez l'adresse e-mail du membre de l'équipe.

3
Définir le rôle

Choisissez Propriétaire, Administrateur complet ou Agent.

4
Attribuer des départements

Pour les agents, sélectionnez les départements accessibles.

5
Envoyer une invitation

Ils reçoivent un e-mail avec un lien de configuration.

Paramètres

Performance de l'équipe

L'accès est autorisé, non par rôle : la permission de visionner ouvre la page, la permission d'utiliser la gestion déverrouille les cibles, l'AQ et la lecture du confrère-identifiant, et la permission récompense-financier est ce qui ajoute l'onglet Récompenses. Une direction d'équipe peut être donnée à n'importe lequel de ces éléments sans devenir un administrateur complet.

Performance de l'équipe
Performance de l'équipeL’écran de performances d’équipe : les agents sont classés par une barre de score composite, CSAT et un solde de récompense avec un bouton Payer par ligne.Performance de l'équipeespace de travailPerformance de l'équipeAGENTSCORECSATBALANCERTRita Tetteh4.8$42PayerSBSam Boateng4.5$28PayerKMKojo Mensah4.2$15PayerAOAda Owusu4.9$51Payer1SCOREDPerformance composite2CSAT & LOADNotes + volume3REWARDSSoldes des agents payeurs
L’écran de performances d’équipe réel: chaque agent a obtenu un score sur le volume et CSAT, avec un solde de récompense que vous pouvez payer par ligne.

Comment la page est organisée

Le rendement d'équipe est de cinq onglets. Chaque réponse à une question différente, et ils sont ordonnés par la façon dont ils ont besoin de vous.

01 Centre de commandement

État de file d'attente en direct, résultats clients par rapport à vos cibles, comment la capacité a été dépensée, situations nécessitant une décision, et l'indice par équipière corrigé des preuves.

02 coéquipiers

Le classement, la reconnaissance (les plus améliorées et les plus striées), les quêtes et le contrôle opt-in pour qui peut voir le classement.

03 Qualité

Cartes de pointage, évaluations enregistrées, entente avec les examinateurs ayant corrigé leur chance, dérive des évaluateurs et différends relatifs aux preuves.

04 Récompenses

Valeur symbolique, demandes de paiement et répartition de la période régie : autoriser un plafond financé, revoir l'aperçu, finaliser.

05 Historique

Comment l'espace de travail a évolué au fil du temps : les métriques de tendance avec un graphique, et une carte thermique 28-jour montrant quand l'équipe travaillait réellement. Chaque carte se cache jusqu'à ce qu'il y ait suffisamment d'historique pour la dessiner.

Non noté n'est pas zéro

Un coéquipier sans volume suffisamment manipulé — ou dont les dimensions portent des preuves additionnent jusqu'à la moitié du poids configuré — est montré comme non-correspondant. Leur score, grade et bande sont vides et leur répartition est cachée. Ceci est délibéré : rendre une mesure absente comme zéro place quelqu'un au bas d'un classement pour avoir une semaine tranquille.

Les deux seuils de preuve font des tâches différentes et il est utile de les garder à part. Minimum géré décide si quelqu'un est noté du tout. La note minimale n'affecte pas la note: elle décide l'admissibilité à la récompense et à la prime. Ainsi, un coéquipier peut être pleinement noté et classé et toujours inéligible pour cette période, parce que trop peu de clients les ont notés.

💡
Chaque figure est portée sur l'espace de travail que vous regardez et la plage de temps que vous choisissez. Un coéquipier travaillant dans deux espaces de travail distincts a un enregistrement indépendant dans chacun d'eux. Deux exceptions méritent d'être connues : un site GROUP est un espace de travail, donc ses domaines membres sont mesurés ensemble; et la vue Tous les sites mesure délibérément tout à la fois.

L'indice de performance

Un composite de cinq dimensions, chacune mesurée par rapport à une cible que vous définissez plutôt qu'à des collègues, puis tiré vers le milieu lorsque la preuve derrière elle est mince. Notez la direction : l'ajustement déplace la figure vers 70, donc un score excellent fin est retiré et un faible score maigre est relevé. Une mauvaise première semaine sur quatre conversations n'est pas non plus un verdict réglé.

Qualité

Satisfaction des clients à la suite de commentaires vérifiés.

Réactivité

Les premiers temps de réponse aux percentiles P50 et P90, par rapport à vos cibles.

Résolution

Temps de résolution et taux de résolution à un toucher.

SLA

Atténuation contre le SLA que vous avez configuré, plus les nombres à risque et violés.

Intendance

Réouvrir et transférer les taux — le travail qui revient.

💡
Les poids sont configurables et relatifs; ils n'ont pas à totaliser 100. Les preuves manquantes ne peuvent que baisser l'indice, jamais le soulever — le poids configuré reste dans le dénominateur.

Capacités et temps de production

L'occupation, le temps productif, résolu par heure productive et la part en ligne de la fenêtre. L'utilisation n'est pas volontairement signalée: il a besoin d'heures programmées comme dénominateur, OpsIQ n'a ni liste ni source de changement, et un dénominateur substitué serait une supposition portant un signe de pourcentage. Il se lit comme indisponible avec cette raison jointe.

⚠️
L'occupation dit comment le temps a été passé, jamais comme il était bien passé, et il ne finance jamais, ne porte pas ou taille un paiement. Un coéquipier sans preuve de la manipulation du temps se lit comme indisponible, jamais aussi zéro.

Assurance qualité

Une carte de pointage est la note des examinateurs de la rubrique des conversations réelles contre. Seule une version publiée peut recevoir une évaluation, et publier une nouvelle version ne réécrit jamais ce qui a déjà été noté. Un examen est preuve d'une conversation, pas un verdict sur une personne.

Accord avec l'examinateur

Reporté comme une statistique corrigée par hasard (Kappa de Cohen et Fleiss), pas un pourcentage d'accord brut. Deux évaluateurs qui passent tout sont d'avis 100% du temps tout en ne portant aucune information.

Dérivation de l'examinateur

Que l'évaluateur note systématiquement plus ou moins que ses collègues sur la même conversation — une comparaison par rapport au reste du groupe, pas une tendance dans le temps. Il faut examiner une interaction de façon indépendante plus d'une fois.

Différends

Un coéquipier peut contester officiellement les preuves enregistrées à leur sujet. Un différend ouvert bloque la finalisation de la période de récompense jusqu'à ce qu'elle soit résolue.

Auto-examen

Un coéquipier ne peut pas se soumettre à une évaluation.

⚠️
Les évaluations classées par AI ne peuvent influencer le salaire tant qu'un calibrage n'est pas publié, montrant que le modèle est suffisamment en accord avec les évaluateurs humains, mesuré par kappa contre un échantillon minimum.

Reconnaissance

Le classement seul a documenté les modes d'échec: jeu métrique, burnout, et public hanting de qui est le dernier. Trois alternatives s'assoient à côté.

Plus amélioré

Mesuré contre le propre record d'un coéquipier, jamais contre ses collègues, avec un rétrécissement donc un petit dénominateur ne peut pas acheter une victoire.

Éparpillements

Les périodes consécutives répondant à une barre fixe et déclarée — cote moyenne, volume manipulé, nombre de cotes et taux de rétroaction négatif, tous les chiffres absolus. Chacun peut tenir une série simultanément, donc il ne crée aucun classement, et un collègue ayant un mois exceptionnel ne peut pas briser le vôtre.

Classement en mode «opt-in»

Off par défaut. Un coéquipier voit toujours son propre index; s'ils voient des collègues est une décision d'espace de travail. Les bandes de pourcentage peuvent être publiées au lieu de positions absolues.

💡
La reconnaissance ne touche jamais l'argent. Une série ne peut pas financer un paiement ou casser un, et la plupart des améliorations n'est pas une catégorie de prix.

Quests

Une cible vers laquelle l'équipe travaille, mesurée par rapport à une barre fixe déclarée plutôt que l'un contre l'autre — afin que chacun puisse dégager la même quête dans la même période.

Portée et cadence

Individuel ou en équipe; unique, répétable ou saisonnier avec une fenêtre explicite.

Critères

Conversations gérées, cotes reçues, journées actives, cote moyenne ou taux de rétroaction négatif. Tout est absolu — aucune mesure dont la valeur dépend de ce que les collègues ont fait.

Garde de qualité

Requis sur toute quête avec une cible de volume. Affecter le nombre alors que la qualité tombe sous le plancher retient la quête plutôt que de la compléter, et il est montré comme retenu, pas inachevé.

Répéter les limites

Un plafond par période, entraîné par le critère le plus lent, plus un refroidissement facultatif avant qu'une répétition ne puisse compter.

Recherches en équipe

Les progrès partagés sans attribution par équipe sont publiés, de sorte qu'une quête d'équipe ne peut pas devenir un classement.

Séances d'entraînement

Une séance d'encadrement est un disque, pas une conversation. Il a un entraîneur, un coéquipier étant entraîné, un temps prévu, des points de discussion convenus, et un résumé écrit après. De vrais chats, billets et évaluations d'AQ sont épinglés à elle comme preuve, donc la conversation est ancrée au travail qui s'est réellement passé plutôt qu'à une impression rappelée.

Points à traiter

Convenu avant la session, donc le coéquipier n'est pas en train de se lancer dans une surprise.

Preuves

Chats, tickets et évaluations d'AQ attachés à la session. Une broche stocke une référence — un type et un id — pas une copie, donc elle pointe toujours au live record.OpsIQ ne vérifie pas l'identité avant de l'accepter.

Points à traiter

Chacun d'eux a un propriétaire et une date limite. Un élément qui dépasse sa date est indiqué comme étant en retard — un état dérivé, pas un statut que quelqu'un doit se rappeler de définir.

Note privée

Le coéquipier qui est entraîné ne peut jamais le lire, pas en tant qu'agent, ni en tant que gestionnaire, ni comme propriétaire. Ce chèque court avant chaque autre autorisation et ne peut être dépassé.

Qui peut voir une session

L'entraîneur, le coéquipier et toute personne ayant la permission de gérer les performances de l'équipe. Personne d'autre, y compris les autres coéquipiers du même département.

Vérification des comptes

Chaque création, mise à jour, pin, décrochage et achèvement est enregistré avec ce qui a changé, par qui.

💡
L'entraînement est délibérément séparé de la notation et de l'argent. Une session ne change l'index de personne, ne porte pas une récompense, et n'apparaît pas sur le classement.

Récompenses et récompenses

L'activité enregistrée se convertit en jetons avec une valeur en espèces que vous définissez. Le chemin vers un paiement est délibérément lent et chaque étape est enregistrée.

1
Définir la valeur du jeton

Combien de jetons sont égaux à combien d'argent, et ce que chaque activité vaut.

2
Autoriser le plafond financé

Pour une période civile fermée, un administrateur complet indique le montant maximum qu'il peut payer. L'enregistrement du formulaire de paramètres n'autorise pas un budget et ne peut modifier un plafond qui a déjà été autorisé.

3
Revoir l'aperçu

Les bénéficiaires, les réserves et la raison pour laquelle tout le monde n'est pas admissible.

4
Finalisation

La répartition est enregistrée de façon permanente avec les preuves derrière elle. Une période qui n'a rien attribué ne peut être annulée et ré-exécutée sans équivoque. Celle qui a émis des jetons doit d'abord être inversée : OpsIQ écrit une entrée compensatoire contre chaque portefeuille et ne supprime jamais l'original, donc le registre montre toujours ce qui s'est passé et pourquoi, et seulement alors la période libérée.

⚠️
L'admissibilité exige une rétroaction vérifiée de la clientèle. Les cotes de qualité de l'IA peuvent compléter ce jugement mais ne jamais le remplacer, et un coéquipier indiqué comme non noté n'est pas admissible. Chaque contributeur est plafonné à 25% au-dessus de sa part prévue de la période, de sorte qu'un mois très important ne peut absorber l'ensemble du budget.
💡
Le propriétaire du compte ne prend pas part aux récompenses ou aux récompenses symboliques, sans changement : il autorise le plafond financé et finalise chaque allocation, et il n'y a personne au-dessus d'eux pour approuver ce qu'ils paieraient eux-mêmes. Leur travail est mesuré, noté et classé sur le tableau exactement comme tout autre.

Tous les autres participent par défaut, les chefs d'équipe et les copropriétaires inclus. Pour laisser quelqu'un dehors, ouvrez-les dans Team & Departments et éteindre l'option Prendre part aux récompenses et récompenses. Leur travail est toujours marqué et montré; ils cessent d'être un candidat à partir de ce moment-là, et rien n'est touché.

⚠️
Personne n'approuve l'argent pour lui-même. Parce que les gens qui peuvent prendre part sont aussi les personnes qui peuvent approuver les paiements,OpsIQ refuse un paiement ou un crédit dans votre propre portefeuille, payant votre propre réclamation, finalisant une période pendant laquelle vous seriez payé, et finalisant un prix que vous gagneriez. Un autre administrateur complet ou le propriétaire doit le faire.

Qui peut voir et faire quoi

Voir les performances de l'équipe

Le conseil, l'état en direct, la capacité et la qualité de l'espace de travail.

Gérer les performances de l'équipe

Objectifs et notation, exportations, cartes de pointage et évaluations de l'AQ, coaching, quêtes et lectures qui contiennent des données identifiant les collègues comme l'historique par administrateur et l'histoire des prix.

Voir les finances de récompense d'équipe

Soldes, valeurs en espèces, notes de réclamation et références au paiement — séparément des éléments de preuve du rendement parce qu'il est lié à la paie.

Administrateur complet seulement

Toute mutation monétaire : paiement d'une récompense, paiement ou rejet d'un sinistre, autorisation d'établir un budget, finalisation, annulation ou inversion d'allocation, fixation du taux de jeton à la caisse.

L'utiliser équitablement

L'indice de performance est une preuve de la direction, et non une décision d'emploi automatique. Ouvrez les conversations sources derrière un nombre avant d'agir sur elle, et peser la complexité des cas, les horaires, les congés et les besoins d'accessibilité.

Paramètres

Vos sites (espaces de travail)

Les sites (espaces de travail) vous permettent de gérer plusieurs sites Web à partir d'une installation OpsIQ, chacun disposant de son propre suivi, IA, connecteurs et accès d'équipe.

Sites
Vos sites webL'écran des sites : une liste d'espaces de travail, chacun avec son domaine, son type, son connecteur, son badge d'état et un bouton Ouvrir, ainsi que Add-new-site.Vos sites webespace de travailVos sites web+ Ajouter un nouveau siteSshop.acme.comCommerce électronique · Connecteur ShopifyActifOuvertHhost.acme.comHébergement · Connecteur WHMCSActifOuvertBblog.acme.comContenu · pas de connecteurÉtapesOuvert1MULTI-SITEUn espace de travail par site2ISOLATEDLes données ne se mélangent jamais3PER-SITEParamètres & connecteurs propres
L'écran des Sites réels : chaque site est son propre espace de travail isolé (domaine, connecteur et paramètres), ajouté et ouvert depuis une liste.

Créer un site

1
Aller aux sites connectés

Accédez à Sites connectés.

2
Ajouter un nouveau site

Entrez le nom, le domaine et la description.

3
Copier la clé du site

Chaque site reçoit une clé unique (site_xxx) pour l'extrait de code du widget.

4
Configurer indépendamment

Chaque site a sa propre IA, ses connecteurs et ses paramètres.

Combien de sites puis-je avoir?+

Dépend de votre plan de licence. Vérifiez les détails de votre licence.

Paramètres

Licence et plan

Votre licence OpsIQ contrôle les fonctionnalités, les limites du site et le solde de crédit AI.

Licence
Centre de licencesLe OpsIQ License Center: plan, un badge d'état actif, la clé de licence masquée, un compteur de crédit AI et un bouton Force-remote-check.Centre de licencesespace de travailOpsIQ Centre de licencePlanEntrepriseStatutActifCléOPSIQ-•••–••Crédits d &apos; IA$68 reste à faireForcer le contrôle à distance1PLAN & STATUSActive, en un coup d'œil2KEYHMAC-caché localement3CREDITSBalance & limites de l'IA
Le vrai License Center: votre plan et statut actif, la clé masquée, votre solde de crédit AI et une revérification forcée en un clic.
Clé de licence

Entrez dans Paramètres > Licence. Validé par le serveur de licences OpsIQ.

Heartbeat / validation de licence

OpsIQ Utilisez Forcer la vérification à distance lorsque vous avez besoin d'un résultat immédiat ; Diagnostics identifie les licences qui ont été validées par le client. DNS, HTTPS ou des problèmes d'heure du serveur.

Plan

Détermine la disponibilité et les limites des fonctionnalités.

Limite de site

Nombre maximal d'espaces de travail.

Crédits d &apos; IA

Si vous utilisez Managed AI, votre solde de crédit est affiché ici.

Expiration

Renouvelez avant l'expiration pour éviter une interruption du service.

Que se passe-t-il lorsque ma licence expire?+

Le suivi, les tickets et le CRM continuent. Les fonctionnalités d’IA sont suspendues jusqu’au renouvellement.

Paramètres

Profil, mot de passe et authentification à deux facteurs

Chaque administrateur peut conserver sa propre identité, ses préférences de travail, son mot de passe et l'authentification à deux facteurs.

Écran de produit
Mon profil -La page de profil sépare les détails personnels, la langue/le fuseau horaire, l'avatar/la signature, le mot de passe et l'authentification à deux facteurs.Mon profil -espace de travailPROFILCompletTIMEZONEEurope/Athènes2FAActivéVUE DE L'ESPACE DE TRAVAIL EN DIRECTNom et adresse électroniqueIdentité personnelleÉditerLangue et fuseau horaireDates et interfaceÉditerAvatar et signatureRéponses et présence de l’équipeÉditerMot de passe et 2FAProtection de compteSécurisé1UPDATE PROFILEIdentité et localisation2SECURE LOGINMot de passe et 2FA3SAVEAppliquer à cet administrateur
La page de profil sépare les détails personnels, la langue/le fuseau horaire, l'avatar/la signature, le mot de passe et l'authentification à deux facteurs.

Les paramètres de profil appartiennent à l’administrateur connecté et ne modifient pas la marque de l’espace de travail. Utilisez un mot de passe unique et activez l’authentification à deux facteurs : la modification d’un paramètre d’adresse e-mail ou d’authentification peut nécessiter une nouvelle vérification ou une nouvelle connexion.

Paramètres

Préférences de notification

Les préférences de notification contrôlent les événements opérationnels qui parviennent à un administrateur dans le produit ou par courrier électronique.

Écran de produit
Préférences de notificationLa page de notification fournit des choix par événement dans l'application et par e-mail, ainsi qu'une liste de notifications récentes.Préférences de notificationespace de travailIN-APPActivéÉMAILSélectifUNREAD4VUE DE L'ESPACE DE TRAVAIL EN DIRECTBillet attribuéIn-app et emailActivéLe client a réponduDans l'applicationActivérisque SLAIn-app et emailActivéApprobation de l &apos; AIIn-app et emailActivé1CHOOSE EVENTSSeuls les signaux utiles2CHOOSE CHANNELIn-app ou par e-mail3EXAMENNotifications récentes
La page de notification fournit des choix par événement dans l'application et par e-mail, ainsi qu'une liste de notifications récentes.

Les préférences couvrent l’attribution de tickets, les réponses aux clients, les avertissements SLA, le transfert par chat et les événements d’approbation de l’IA.

Paramètres

Vue d'ensemble de la sécurité

La vue d'ensemble de la sécurité est le premier écran pour l'évaluation des blocages, les attaques de connexion, les sessions de menaces, les tendances de sécurité et l'intégrité des événements.

Écran de produit
Vue d'ensemble de la sécuritéSecurity Overview combine les cartes de risque actuelles, une tendance 14-jour, la liste des attaquants, le flux d'événements et l'état d'intégrité.Vue d'ensemble de la sécuritéespace de travailACTIVE BLOCKS18FAILED LOGINS42HIGH THREAT3VUE DE L'ESPACE DE TRAVAIL EN DIRECTAuto-bloqué7-jour total et sourceTendanceLes derniers attaquantsIP, pays et raisonExamenÉvénements de sécuritéRisque et résultat de l'actionAlimentationIntégrité de la chaîne de hachageChaîne d'événements Tamper-evidentValide1READ HEADLINEExposition actuelle2OPEN EVIDENCEAttaquants et événements3ACTEBloquer, enquêter, exporter
Security Overview combine les cartes de risque actuelles, une tendance 14-jour, la liste des attaquants, le flux d'événements et l'état d'intégrité.

Utilisez les cartes de titre pour le triage, puis ouvrez l'onglet Audit, Failed Logins, Blocked. IPs ou JavaScript Page d'erreurs pour le travail au niveau de l'enregistrement. 14 Les sessions à risque élevé doivent être examinées par rapport aux preuves de visiteur, de requête et d'authentification avant qu'un blocage permanent ne soit appliqué.

Paramètres

Journal d'audit à l'évidence de toute manipulation

Le journal d’audit enregistre qui a fait quoi, quand, sur quel objet, à quel niveau de risque et si cela a réussi.

Écran de produit
Audit d'activitéLa page d'audit fournit une activité interrogeable et inviolable avec action, acteur, risque, cible et résultat.Audit d'activitéespace de travailÉVÉNEMENTS18.2kHIGH RISK21INTEGRITYValideVUE DE L'ESPACE DE TRAVAIL EN DIRECTConnecteur activé[email protected] · ShopifySuccèsClé API révoquée[email protected] · clé 19SuccèsLes paramètres ont changé[email protected] AISuccèsPermission refusée[email protected] · exportationBloqué1FILTERAction, risque et acteur2EN CE QUI CONCERNEObjectif et résultat3EXPORTCSV ou JSON
La page d'audit fournit une activité interrogeable et inviolable avec action, acteur, risque, cible et résultat.

Filtrer par action, risque et acteur; exporter CSV ou JSON La chaîne de hachage permet de détecter les lignes d'audit manquantes ou modifiées, mais elle ne remplace pas les sauvegardes protégées et l'accès restreint à la base de données. Traitez les exportations d'audits comme sensibles car elles peuvent identifier des utilisateurs, des enregistrements et des actions de sécurité.

Opérations

Diagnostic

Diagnostics transforme les vérifications de sous-système en résultats d'intégrité clairement définis et en actions suivantes directes.

Écran de produit
DiagnosticLes diagnostics regroupent les vérifications de l’intégrité du widget, de l'IA, des tickets, des intégrations, de la Site Intelligence, des tâches en arrière-plan, de le CRM automatisé, des licences et du stockage.Diagnosticespace de travailSAINE13WARNING2FERMÉS1VUE DE L'ESPACE DE TRAVAIL EN DIRECTWidgetPoints de terminaison Beacon et ChatEn bonne santéTâches de fondCron heartbeat tardifAvertissementCourrielTest sortant a échouéÉchouéConnecteursRegistre et réception des événementsEn bonne santé1REFRESHExécuter les vérifications courantes2OPEN WARNINGLire les preuves3FIX AND RETESTConfirmer la récupération
Les diagnostics regroupent les vérifications de l’intégrité du widget, de l'IA, des tickets, des intégrations, de la Site Intelligence, des tâches en arrière-plan, de le CRM automatisé, des licences et du stockage.

La page vérifie la vitesse du site, le classement/mot-clé/lien de retour/données locales, l’IA et la passerelle d’action, les tickets, les robots d’exploration/audits, l'intégration/l'entrée des événements, les tâches en arrière-plan, les automatismes CRM, la licence, le widget et les services produits associés.

Après un changement, actualisez et confirmez que le sous-système affecté est de nouveau en bon état. Une page verte de diagnostics est nécessaire mais pas suffisante pour le lancement. Remplissez également la liste de contrôle préalable au lancement

Paramètres

Sécurité et accès

OpsIQcomprend plusieurs couches de sécurité pour protéger votre administrateur, vos données etAPIaccès.

Comment ça fonctionne
Sécurité et accèsUn bouclier de sécurité à côté des contrôles activés: deux facteurs, OIDC SSO, SCIM 2.0, OAuth2 PKCE, CSRF/CSP, IP Un pare-feu, des limites de débit et un coffre secret.Deux facteurs (TOTP)SSO OIDCSCIM 2.0OAuth2 PKCECSRF + CSPIP Pare-feuLimites de tauxCoffre-fort des secrets
Sécurité

Caractéristiques de sécurité

Authentification d'administrateur

Email/mot de passe avec 2FA optionnel.

Login verrouillage

Verrouillage temporaire après trop de tentatives infructueuses.

IP blocage

Bloquer les plages IPs ou CIDR d'accéder aux sites suivis.

Notation des menaces

Les visiteurs présentant un risque élevé peuvent être bloqués automatiquement.

Application du HTTPS

Requis pour toutes les connexions. HTTP redirige vers HTTPS.

En-têtes HSTS

La sécurité de transport stricte empêche les attaques de déclassement.

Protection de CSRF

Tous les formulaires d'administration incluent des jetons CSRF.

Protection contre XSS

Toutes les entrées de l'utilisateur sont échappées. Les en-têtes CSP restreignent l'exécution du script.

Protection de SSRF

Les webhooks sortants bloquent les adresses IP privées/internes.

Configuration recommandée

1
Activer la 2FA

Pour tous les comptes d'administrateur.

2
Des mots de passe forts

Minimum 12 caractères, mixte.

3
Examen des comptes

Supprimer l'accès pour les anciens membres de l'équipe.

4
Surveiller les connexions ayant échoué

Vérifiez chaque semaine pour les modèles suspects.

5
Restez à jour

Appliquez rapidement les mises à jour pour les correctifs de sécurité.

Paramètres

Rôles et autorisations

Le contrôle d'accès basé sur les rôles vous permet de contrôler ce que chaque membre de l'équipe peut faire.

Rôles & permissions
Rôles et autorisationsUne matrice de rôle par capacité: le propriétaire a tout; l'administrateur complet manque de facturation et de zone de danger; l’agent n’a que des tickets étendus.Rôles & permissionsespace de travailPARAMÈTRESFACTURATIONDANGERBILLETSPropriétaireAdmin completAgentscoped13 ROLESPropriétaire · Administrateur complet · Agent2GRANULARPar page + par département3DEFAULT-DENYLes itinéraires oubliés bloqués
La matrice de rôle en un coup d'œil: Propriétaire obtient tout, Full Admin tout sauf la facturation et la zone de danger, Agent seulement leurs tickets étendus.

Rôles par défaut

Propriétaire

Tout, y compris la licence, la zone de danger et la gestion des installations.

Admin complet

Tout sauf licence et zone de danger. Peut gérer l'équipe.

Agent

Répondez aux tickets et chats des services affectés, consultez les analyses. Aucun accès de paramètres, d'équipe ou de sécurité.

Puis-je créer des rôles personnalisés?+

Pas actuellement. Trois rôles intégrés et l'affectation de départements offrent un contrôle granulaire.

Paramètres

Bloqué IPs

Gérer les adresses IP bloquées d'accéder à vos sites suivis.

Bloqué IPs
Bloqué IPsLe blocage...IPs Écran: un bloc-an-IP/CIDR forme à côté d'une table Adresses bloquées avec chaque entrée, date, raison et un bouton Débloquer.Bloqué IPsespace de travailBloquer un IP / CIDR203.0.113.0/24Votre raison (facultatif)BlocAdresses bloquées203.0.113.912 · force bruteDébloquer45.12.0.0/1610 · messages indésirablesDébloquer102.89.6.29 · abusDébloquer1BLOQUERIP ou plage CIDR2LISTQui et quand, avec le motif3UNBLOCKEn un clic
Le vrai Blocked IPs écran: bloquer un seul IPou une plage de CIDR, et gérer la liste, chacun avec sa date, raison et un clic déblocage.

Comment bloquer

1
Allez dans Sécurité > Bloqué IPs

2
Ajouter une plage IP ou CIDR

Exemple : 203.0.113.42 ou 203.0.113.0/24

3
Ajouter une raison

Documentez pourquoi: spam, abus, scraping, etc.

Le blocage affectera-t-il les utilisateurs légitimes?+

Si les clients partagent un compte d'entreprise IP ou VPN, bloquant ce IP Utilisez des blocs étroits.

Paramètres

Échec des connexions

Toutes les tentatives de connexion infructueuses à votre OpsIQ admin.

Échec des connexions
Échec des connexionsL'écran des connexions ayant échoué : un tableau de comptes/IPs avec le nombre d'échec, l'heure de la dernière tentative et un bouton Bloquer par ligne.Échec des connexionsespace de travailTentatives de connexion ayant échouéIPFERMÉSDERNIÈREACTION[email protected] · 41.62.10.47Il y a 2mBloc[email protected] · 102.89.6.23Il y a 18 ansBlocInconnu · 45.12.9.712Il y a 26 ansBloc[email protected] · 88.21.4.921h il y aBloc1WATCHTentatives de connexion ayant échoué2COUNTSPar compte / IP3ACTEBloquer de la rangée
L'écran de connexion réel Failed: chaque compte/IP avec son compte d'échec et sa dernière tentative, bloquez une source de force brute directement à partir de la rangée.

Ce que chaque entrée montre

Date/heure

Quand la tentative a eu lieu.

Courriel

Adresse e-mail utilisée.

IP adresse

Source de la tentative.

Pays

10. Situation géographique.

Raison

Mot de passe incorrect, verrouillé ou non trouvé.

Signes d'avertissement

Plusieurs tentatives, même email

Assurez-vous que l'authentification à deux facteurs est activée.

Plusieurs tentatives, différents emails

Attaque automatisée. Bloquer la source IP.

Pays inhabituels

Si votre équipe est locale, les tentatives étrangères sont probablement des attaques.

Paramètres

analyste de sécurité IA

Une couche d’analyse opt-in sur les pages de sécurité : verdicts, résumés des incidents, un résumé quotidien, une vérification hebdomadaire de la posture, Ask Security et politiques de blocage du jeton 0.

Chaque page de sécurité enregistre ce qui s'est passé, mais la lecture nécessite toujours un jugement. L'analyste de sécurité IA ajoute ce jugement en place et il est conçu pour ne dépenser presque rien : il n'est jamais dans le chemin de connexion ou de balise, les règles déterministes réglent les cas évidents sans appel d'IA, les verdicts sont mis en cache et la meilleure sortie de l'analysateur est une règle déterministe qui s’applique ensuite à perpétuité avec zéro jeton. Paramètres → Sécurité; tous par défaut off.

Ce qu'il ajoute

Chips de verdict + Expliquer

Blocked IPs Les lignes Connexions réussies et Échecs de connexion montrent une puce bénigne / suspecte / hostile avec un score de confiance. Expliquer ouvre le raisonnement, les faits utilisés et les actions Bloquer / Libérer en un clic. 24h, so re-viewing an IPL'accès est gratuit.

Briefs d'incidents

Les événements connexes sont regroupés en un seul incident (vague de connexion, analyse URL, rafale de blocage automatique) avec une chronologie en anglais clair et une étape suivante recommandée.

Résumé quotidien

Un résumé par jour: hier par rapport à votre baseline, les blocages, les incidents et la seule chose à faire. Les jours calmes envoient un all-clear déterministe avec zéro jeton.

Vérification hebdomadaire de la posture

Une checklist de durcissement du lundi (lacunes 2FA, seuil de verrouillage par rapport au volume d’attaque réel, alertes désactivées) avec une sévérité, un effort et une solution exacte par élément.

Demandez à la sécurité

Une boîte de question sur la vue d'ensemble de sécurité qui répond à partir de votre état de sécurité en direct. Les questions profondes du serveur sont transmises au chat de l'ingénieur administrateur plutôt que deviné.

Propositions de politique + pilote automatique

L'analyste propose des règles de bloc concret comme cartes d'approbation / rejet; les règles approuvées s'appliquent à zéro jeton avec un compteur de succès en direct. Le pilote automatique optionnel n'approuve que les règler les plus sûres automatiquement.

Paramètres

Analyste de sécurité IA (security_ai_enabled)

Commutateur maître. Active les puces de verdict, explique et demande la sécurité. Seulement ambigu IPs atteindre le modèle, loté en un seul appel.

Résumés d'incidents (security_ai_incident)

Regroupe les événements en incidents et écrit chaque nouvelle histoire sur le cron de sécurité horaire existant.

Résumé quotidien (security_ai_digest)

Un résumé de sécurité par jour sur la cloche et l'aperçu. Les jours tranquilles ne coûtent rien.

Contrôle hebdomadaire de la posture (security_ai_posture)

La liste de contrôle du durcissement du lundi sur l'aperçu. La liste est entièrement déterministe.

Pilote automatique de politique (security_ai_autopilot)

Permet à l'analyste d'activer ses propositions les plus sûres sans surveillance: blocs réversibles limités dans le temps uniquement, unique IPs ou des fourchettes ne dépassant pas. /24, Jamais partagé/mobile/privé, plafonné 10 par heure, toujours audité et réversible.

💡
Chaque appel est marqué security_ai avec son propre plafond mensuel dans AI Config → Cost Guardrails (jetons par défaut 300k). Si le bouchon est touché, les fonctionnalités dégradent pour des lectures déterministes. Bloquer, lock-out et alertes ne dépendent jamais de ce budget. L'analyste ne peut jamais supprimer les données, modifier les paramètres, toucher le registre d'audit, ou faire une interdiction permanente.
Opérations

Cron et automatisation

OpsIQ utilise un planificateur de produit pour exécuter le sondage par e-mail, l'automatisation des tickets, les agrégats d'analyse, la rétention, les files d'attente IA, le travail CRM, les rapports et les tâches de connecteur.

Écran de produit
Cron et automatisationUne entrée cron produit fournit le battement du cœur; OpsIQ décide quels travaux internes sont dus.Cron et automatisationserveurBATTERIEÀ chaque minuteRUNNERcron/all.phpHEALTHParamètresVUE DE L'ESPACE DE TRAVAIL EN DIRECTCourroie de produits unifiéeopsiq/cron/all.phpRequisFiles d'attente de tickets et e-mailTravail à courte duréeActifAnalyse et rétentionCadence interneProgramméConnecteur abonnésÉvénements cron déclarésDélimité1INSTALL ONE LINEExécutez le planificateur de produits toutes les minutes2CHECK CRON SETUPConfirmer les battements du cœur CLI3USE DIAGNOSTICSEnquêter sur les travaux en retard ou manqués
Une entrée cron produit fournit le battement du cœur; OpsIQ décide quels travaux internes sont dus.

Entrée cron du produit requise

Ajoutez cette ligne unique au crontab pour le même serveur et environnement PHP qui exécute OpsIQ:

OpsIQ Entrée de crontab du produit
* * * * * php /path/to/opsiq/opsiq/cron/all.php >> /tmp/opsiq-cron.log 2>&1

Remplacer /path/to/opsiq Utilisez le chemin complet de l'interface à ligne de commande PHP lorsque l'hôte en requiert un, par exemple /usr/bin/php8.4.

N'utilisez pas le niveau supérieur /cron.php Pour le travail de produit. Dans ce référentiel, le coureur appartient à un service distinct non-produit en dehors de ce manuel. OpsIQ Le produit runner est opsiq/cron/all.php.

Ce que le planificateur unifié conduit

Files d’attente des tickets et de l’IA

Traite les réponses automatiques, les escalades, les approbations et autres travaux de produits en attente.

Courriel entrant

Les boîtes aux lettres configurées pour les sondages où le sondage est la méthode d'entrée sélectionnée.

Analyses et sessions

Assemble les sessions et actualise les agrégats planifiés lorsqu'ils sont dus.

CRM et engagement

Exécute les tâches de notation, cycle de vie, workflow, campagne et rapport planifié qui sont activées.

Conservation et entretien

Effectue le nettoyage, l'archivage, l’expiration et l'intégrité des travaux.

Connecteurs

Envoie les abonnés cron du connecteur et interroge uniquement pour les connecteurs installés, activés et configurés.

Vérifier le cron

  1. Ouvert Paramètres - Configuration de Cron et confirmez que le produit existe.
  2. Utilisation Courir maintenant Une fois, puis confirmez la mise à jour des battements de cœur d'administration et de sondage.
  3. Vérifier Diagnostic pour un problème de heartbeat tardif, PHP CLI, base de données ou chemin de fichier.
  4. Inspecter /tmp/opsiq-cron.log ou le chemin de journal que vous avez sélectionné lorsqu'une exécution manuelle échoue.

Faites des synchronisations longues par lots et stockez un curseur/point de contrôle afin que la prochaine exécution puisse se poursuivre en toute sécurité.

🚫
Lorsque le cron du produit s'arrête, le travail OpsIQ basé sur le temps s'interrompt ou devient tardif même si les pages d'administration ordinaires peuvent toujours se charger.
Opérations

Opérations de déploiement hébergées

Un déploiement OpsIQ hébergé utilise les mêmes écrans et flux de travail que le produit, tandis que l'opérateur d'hébergement gère la couche serveur. Les procédures commerciales d'inscription, de planification, de facturation et de portail de compte sont en dehors du présent manuel.

Écran de produit
Déploiement hébergéL'opération hébergée change qui maintient l'infrastructure; elle ne change pas la façon dont les clients utilisent OpsIQ.Déploiement hébergéespace de travailPRODUCT UIMême OpsIQINFRASTRUCTUREGéré par l &apos; opérateurWORKSPACE DATAIsoléVUE DE L'ESPACE DE TRAVAIL EN DIRECTExécution d'applicationPHP, serveur web et base de donnéesGéréProduit cronPlanifié par l'opérateur d'hébergementVérifierSauvegardes et mises à jourPolitique et preuves du fournisseurExamenOpsIQ paramètresSites, IA, équipe et connecteursVotre équipe de travail1OPERATE OPSIQ NORMALLYUtilisez la même navigation de produit2VERIFY SERVICE HEALTHUtilisation Diagnostics et preuve d'état3KNOW RESPONSIBILITYSéparation des paramètres du produit et de l'hébergement
L'opération hébergée change qui maintient l'infrastructure; elle ne change pas la façon dont les clients utilisent OpsIQ.

Ce que l'hébergeur gère normalement

  • Serveur Web, PHP runtime, service de base de données, TLS et stockage.
  • Le cron du produit unifié et ses journaux au niveau du serveur.
  • Mises à jour des applications, surveillance de l’infrastructure et processus de sauvegarde défini par le contrat d’hébergement.

Ce qu’un administrateur OpsIQ continue de gérer

  • Installation de sites Web et widgets, paramètres d'IA, connaissances, boîtes aux lettres et workflows de support client.
  • Accès des équipes, départements, contrôles de sécurité, clés API, connecteurs, automatismes et paramètres de rétention des données.
  • Vérification du produit par le biais de diagnostics, d’un journal d’audit, de tests de connecteurs et de vérifications réelles de bout en bout.

Contrôles opérationnels

Ne présumez pas qu'un service géré signifie que chaque intégration de produit est saine. Confirmez les dernières preuves de sauvegarde et la politique de conservation avec l'opérateur d'hébergement, et utilisezOpsIQDiagnostics après les changementsDNS, e-mail, fournisseurs d'IA, sites Web ou connecteurs.

L'intégration commerciale, les abonnements, la facturation et l'administration des comptes clients restent en dehors du manuel OpsIQ.

Opérations

Hébergement en self-catering OpsIQ

A self-hosted OpsIQ Vous êtes responsable de l'environnement d'exécution, de la base de données, du TLS, cron produit, sauvegardes, mises à jour et surveillance.

Écran de produit
Auto-hébergementL'auto-hébergement donne le contrôle de l'infrastructure et rend votre équipe responsable de chaque dépendance d'exploitation.Auto-hébergementserveurPHP8.4+DATABASEMySQL 5.7+SCHEDULERÀ chaque minuteVUE DE L'ESPACE DE TRAVAIL EN DIRECTExtensions d'exécutionjsonRequisExtensions supplémentairesxml, en anglais, OpenSSL, Livre de poche, NouveauRequisBase de données alternativeMariaDB 10.3+ avec InnoDBAppuyé1. TransportsAccès HTTPS et fournisseur sortantVérifier1PREPARE THE SERVERConformité aux exigences d'exécution2INSTALL AND CONFIGUREUtilisez une base de données dédiée et HTTPS3ADD PRODUCT CRONExécutez opsiq/cron/all. php
L'auto-hébergement donne le contrôle de l'infrastructure et rend votre équipe responsable de chaque dépendance d'exploitation.

Contrat minimum de logiciel

PHP

PHP 8.4 ou plus récent. Extensions obligatoires : boucle, pdo_mysql, mbstring, json, xml, ouvre, zip, intl et gd.

Base de données

MySQL 5.7+ ou MariaDB 10.3 Créez une base de données dédiée et un utilisateur d'application le moins privilégié.

Serveur Web

Apache ou Nginx configuré pour le contrôleur frontal OpsIQ, les ressources statiques et les réécritures requises.

HTTPS

Requis pour les sessions d'administration, le trafic de widget, les clés API, les webhooks et les appels au fournisseur.

Accès sortant

Autorisez l’accès DNS et HTTPS aux points de terminaison d’IA, de messagerie électronique, de connecteur et de licence que vous activez réellement.

Accès aux fichiers

Les utilisateurs Web et CLI doivent pouvoir lire les fichiers d'application et écrire uniquement dans les emplacements de stockage/d'exécution documentés.

Cron

Exécutez le planificateur de produits OpsIQ toutes les minutes avec la même configuration d'application et l'accès à la base de données que le processus Web.

Séquence d'installation

  1. Chargez la version à la racine du document prévu et conservez la structure de répertoire fournie.
  2. Créez l'utilisateur de base de données et d'application, puis entrez la base de donnée, le URL canonique et les paramètres de licence.
  3. Exécutez le processus d'installation et créez le premier compte propriétaire.
  4. Activez HTTPS et vérifiez les redirections, les cookies et le chemin public du widget/API.
  5. Ajouter le cron unifié du produit OpsIQ:
Cron de produit auto-hébergé
* * * * * php /path/to/opsiq/opsiq/cron/all.php >> /tmp/opsiq-cron.log 2>&1
  1. Ouvrez Paramètres - Configuration et diagnostics de Cron; exécutez le planificateur une fois et résolvez toutes les dépendances échouées.
  2. Configurez les procédures de sauvegarde, de restauration des tests, de conservation des journaux et de mise à jour avant d'ajouter des données de production.

Mettre à jour en toute sécurité

  1. Lisez les notes de version et vérifiez les extensions PHP/Firefox requises avant de modifier des fichiers.
  2. Sauvegardez la base de données et les fichiers d'application/configuration, puis prouvez que la sauvegarde peut être restaurée dans un emplacement de test.
  3. Déployez les nouveaux fichiers sans supprimer la configuration spécifique à l'installation ou les données d'exécution.
  4. Exécutez le processus de migration/preflight fourni et vérifiez la connexion, le suivi des widgets, les tickets, l’e-mail, l'IA, les connecteurs et le cron.
  5. Gardez la version précédente et la sauvegarde de base de données disponibles pour la fenêtre de restauration documentée.
🚫
Le dépôt de haut niveau /cron.php Ce n'est pas le. OpsIQ Pointez l'automatisation du produit uniquement à. opsiq/cron/all.php.
⚠️
Ne supprimez pas. schema_cache.json pour des raisons de maintenance courante, mais uniquement lorsque les instructions du produit exigent explicitement une reconstruction du cache schema.
Opérations

Guide de production

Liste de contrôle et meilleures pratiques pour exécuter OpsIQ en production.

Guide de production
Guide de productionUne checklist de mise en ligne: domaine personnalisé et SSL, IA entraînée, connecteurs et cron, sauvegardes et rétention, et rôles d'équipe.Liste de contrôle Go-liveespace de travailAvant de passer en directDomaine personnalisé + SSL configuréUne IA formée sur votre contenuConnecteurs testés · cron en cours d'exécutionSauvegardes planifiées · ensemble de rétentionRôles d'équipe assignés et examinés1GO-LIVEListe de contrôle préalable au lancement2VERIFYDomaine · SSL · sauvegardes3CONFIDENTNavire quand il est vert
Une checklist de mise en ligne pour que rien ne soit manqué: domaine + SSL, IA entraînée, connecteurs et cron testés, sauvegardes et rétention, et rôles d'équipe.

Avant de passer en direct

HTTPS configuré

SSL installé, redirections HTTP, HSTS activé.

Cron en cours d'exécution

Vérifiez via la page de diagnostics.

AI testé

Discutez en tant que client. Vérifiez l'exactitude et le ton.

Widget installé

Sur toutes les pages du site. Vérifier avec le flux en direct.

Sauvegarde configurée

Sauvegardes quotidiennes automatisées de la base de données et des fichiers.

Enregistrement des erreurs

Le journal d'erreurs PHP est activé et surveillé.

Équipe invitée

Tous les membres ont des comptes avec les rôles corrects.

Base de connaissances remplie

Au moins 5-10 Articles.

Quotidiennement: Vérifiez le tableau de bord, effacez la file d'attente des tickets, vérifiez les conversations AI.

Hebdomadaire: Examiner les informations sur l'IA, mettre à jour la base de connaissances, vérifier les performances de l'équipe, examiner la sécurité.

Mensuellement : Examinez les tendances d’analyse, vérifiez les connecteurs, mettez à jour la formation en IA et vérifier les sauvegardes.

Opérations

Liste de contrôle préalable au lancement

Exécutez les sources gates et effectuez des vérifications de produit réelles avant une sortie ou un premier lancement en production. Le fait qu'une commande soit disponible ne prouve pas qu'elle a été validée dans votre environnement.

Écran de produit
Vérification de la libérationLa vue de libération montre les portes requises pour fonctionner; elle ne les pré-étiquette pas comme passées.Vérification de la libérationserveurMontantPHP 8.4SOURCE GATESExécuter localementOUTCOMEFondé sur des preuvesVUE DE L'ESPACE DE TRAVAIL EN DIRECTExtensions requisesVérifiez avant la suitePorteBalayage de la syntaxe PHPTous les fichiers PHP du projetPorteÉvaluation de l'IA et PHPUnitExécuter lorsque des dépendances sont présentesPorteVérifications statiques et de navigateurExécuter lorsque configuréPorte1RUN THE CHECKSCapturez la sortie réelle2FIX EVERY REQUIRED FAILURENe remplacez pas les preuves par des hypothèses3TEST THE PRODUCTVérifiez les parcours réels des utilisateurs
La vue de libération montre les portes requises pour fonctionner; elle ne les pré-étiquette pas comme passées.

Portes de source et de libération

Exécutez les vérifications du dépôt à partir de la racine d'installation et conservez leur sortie complète avec l'enregistrement de version.

Portail primaire de preflight
php tools/preflight.php
Porte de libération prolongée
php tools/release_gate.php

Le preflight vérifie l'environnement d'exécution PHP 8.4 et les extensions requises, effectue un balayage de la syntaxe PHP, exécute le ship gate d'évaluation AI et la suite complète PHPUnit, et exécut des vérifications PHPStan/Node lorsque ces outils sont installés. Le gate étendu comprend également des contrôles smoke, clean-install/schema et navigateur de bout en bout lorsque leur environnement est configuré.

Enregistrez la raison pour laquelle il n'était pas disponible, installez les dépendances manquantes ou exécutez-le dans l'environnement de CI/Staging approprié avant sa publication.

Contrôles de produits

1. Authentification et rôles

Connectez-vous en tant que chaque rôle prévu; vérifiez les pages/actions autorisées et refusées.

2. Widget et suivi

Chargez un vrai site dans un navigateur privé; vérifiez le trafic de balise, le flux en direct, les enregistrements des visiteurs et des sessions.

3. Chat et IA

Poser des questions représentatives; vérifier l'ancrage des connaissances, la sécurité, l'escalade et l'historique de l'IA.

4. Billets

Créez, assignez, répondez, transférez, fermez et rouvrez chaque chemin d'entrée activé.

5. Courriel

Testez la remise sortante et chaque chemin de boîte aux lettres entrante ou webhook configuré.

6. CRM et analyses

Créez un contact/affaire/conversion contrôlé et vérifiez les tableaux de bord, entonnoirs, scores et rapports.

7. Connecteurs

Exécutez des tests de connexion, une lecture, un safe write/dry run et des chemins webhook/polling pour chaque connecteur activé.

8. API Webhooks et webhook

Vérifiez les portées étroites, les limites de débit, les réessais idempotents, les signatures et la gestion des doublons.

9. Cron

Exécutez le planificateur de produit unifié et confirmez tous les battements requis dans Cron Setup/Diagnostics.

10. Sécurité

Vérifiez l'authentification à deux facteurs, les contrôles CSRF/de session, les entrées d'audit, la révocation de clés et l'isolation des espaces de travail.

11. Sauvegarde et restauration

Restaurez une sauvegarde récente dans un environnement de test distinct, puis vérifiez les données et la configuration.

12. Observabilité et retour en arrière

Confirmez les journaux/alertes, conservez les ID de requête et prouvez la procédure de rétablissement.

⚠️
Déployez uniquement après que chaque porte requise et parcours critique ait des preuves actuelles pour la version exacte et l'environnement.
Développeur

Web Push sur des sites tiers

Notifications de poussée du navigateur (y compris OpsIQ Push Campaigns) ont besoin d'un travailleur de service servi de l'ORIGINE DU MÊME comme page.OpsIQ widget charges de votre OpsIQ déploiement, de sorte qu'un site tiers ne peut pas enregistrer OpsIQ's worker directly. Hôte un petit fichier sur le propre domaine du site pour permettre de pousser là-bas. Campagnes livrer par les deux méthodes prises en charge.

Comment ça fonctionne
Pousser sur le WebUne notification push de style OS au-dessus de deux cartes de méthode de livraison: VAPID intégré et Pusher Beams.Votre boutique en ligneVotre panier est en attente · 10% dés aujourd'huimaintenantIntégré (VAPID)Aucun tiersHébergez un fichierPoutre de pousseurUtilisez votre compteAccueillir le travailleur
Pousser sur le Web

Pourquoi cela est nécessaire

Navigateurs laissez seulement une page enregistrer un travailleur de service de sa propre origine. Le widget charge cross-origin de votre OpsIQ déploiement, donc il ne peut pas installer le travailleur push sur un site client, jusqu'à ce que vous hébergez le travailleur sur l'origine de ce site, le widget saute silencieusement push (pas d'erreur, aucun abonnement). Vous avez deux options ci-dessous;OpsIQ Push Campaigns publie les deux.

Option A · Push Web auto-organisé (VAPID, aucun tiers)

1. Téléchargez le worker depuis votre déploiement OpsIQ: https://YOUR-OPSIQ/opsiq/opsiq-push-sw.js

2. Téléchargez-le sur votre ordinateur Web root Il est donc accessible à https://yoursite.com/opsiq-push-sw.js. Le widget Détecte automatiquement ce chemin sur l'origine de la page et l'enregistre, aucun changement d'extrait nécessaire. (Il utilise une portée étroite, donc il ne remplace jamais un travailleur de service que vous avez déjà exécuté.)

Facultatif: Si vous devez l'héberger sur un chemin non standard, pointez le widget dessus avant l'extrait de code. Il est seulement accepté quand même origine:

Optionnel · seulement si le fichier n'est PAS à la racine web
<script>window.OpsIQ=window.OpsIQ||{};window.OpsIQ.pushSwUrl="/custom/opsiq-push-sw.js";</script>

3. Dans OpsIQ, générer des clés VAPID (Paramètres → Client Chat AI → Avancé → Web Push) Le widget demande ensuite aux visiteurs l’autorisation de notification et les y abonne.

Derrière un CDN/Cloudflare? Assurez-vous /opsiq-push-sw.js retourne HTTP 200 (supprimer le cache si c'était 404 avant que vous n'envoyiez une copie; un cache 404 bloquera l'enregistrement).

Option B · Pousser les faisceaux (fournisseur géré)

1. Dans les paramètres OpsIQ, définissez le fournisseur de push à Poutre de pousseur Entrez vos Beams Numéro d'instance et Clé secrète.

2. Hébergez le service worker Beams sur la racine du site en tant que /service-worker.js. Copie https://YOUR-OPSIQ/opsiq/pusher-beams-service-worker.js, ou fusionnez cette ligne dans votre worker root existant:

Travailleur des faisceaux, hôte à https://yoursite.com/service-worker.js
importScripts("https://js.pusher.com/beams/service-worker.js");

3. Le widget charge automatiquement les Beams SDK et abonne chaque visiteur à l'intérêt par site. opsiq-site-<your-site-key>. Aucun autre câblage nécessaire.

Comment les campagnes fonctionnent-elles?

Les campagnes Push publient via both Les visiteurs sur le worker VAPID auto-hébergé reçoivent la Web Push chiffrée, et les visiteurs abonnés via des faisceaux de poussée obtiennent les faisceau publiés. Chaque visiteur est atteint par celui auquel il s'est abonné. Vous pouvez donc exécuter un VAPI D d'origine commune sur certains sites et des fasceaux d'autres sources sur d'autre sites.

HTTPS est requis pour les service workers et les notifications Web Push (localhost est exempté pour les tests). La boîte de réception du chat administrateur utilise déjà le même mécanisme d’intérêt Beams pour les alertes des opérateurs

Opérations

Dépannage

Problèmes courants et comment les résoudre.

Généralités

Page blanche+

Causes: ancien PHP (nécessite 8.4+), extension manquante, connexion à la base de données a échoué, permissions de fichier incorrectes.

Le tableau de bord affiche des zéros+

Vérifiez: widget installé? Cron en cours d'exécution? plage de dates correcte? IP exclus?

IA

L'IA ne répond pas+

Vérifiez: fournisseur configuré? API clé valide (utiliser la connexion de test)? budget épuisé? configuration d'IA de l'espace de travail correcte?

L’IA donne de mauvaises réponses+

Vérifiez : la base de connaissances est-elle à jour ? L’instruction est-elle claire ? Les recherches du connecteur renvoient-elles les bonnes données ? Réexaminez la conversation dans l’historique IA.

L'IA est lente+

Dépend de: la vitesse du fournisseur API, la taille du contexte (grand KB = plus de jetons = moins rapide), la latence réseau.

Suivi

Widget manquant+

Vérifiez: script dans la source de la page? erreurs JS dans la console? blocage CSP? bloqueur d'annonces?

Pays inconnu+

Utilisez Cloudflare (automatique) ou la base de données MaxMind GeoLite2.

Billets

Les e-mails ne créant pas de tickets+

Vérifiez: boîte aux lettres connectée? Cron en cours d'exécution? IMAP Les paramètres sont corrects?

La réponse automatique ne fonctionne pas+

Vérifiez: activé? Département autorisé? IA configurée? Cron en cours d'exécution?

Connecteurs

La connexion a échoué+

Vérifier: les informations d'identification sont-elles correctes? API Accessible depuis le serveur? Base URL C'est correct?

Connecté mais pas de données+

Vérifiez: API portée de la clé? Webhook sync activé? Cron en cours d'exécution?

Résultats

Pages lentes+

Vérifiez: performances de la base de données (SHOW PROCESSLIST), mémoire PHP (augmentez à 1GB), activer l'opcache, réduisez la période de rétention.

Opérations

Widget ne consignant pas les visites

Utilisez cette vérification ciblée lorsque le widget se charge incorrectement ou que Live Feed reste vide.

Lorsque le Le widget n'enregistre pas les visites, vérifiez la clé du site, chargez la page dans un navigateur privé, vérificez les panneaux Réseau/Console du navigateur pour vérifier si des requêtes de balises ou de widgets ont été bloquées, consultez la politique de sécurité du contenu et les bloqueurs d'annonces, confirmez que le site est actif dans OpsIQ et ouvrez Diagnostics.

Référence

Glossaire

Définitions des termes utilisés dans OpsIQ.

Décision

Quelque chose que l’IA peut faire via un connecteur ou la plateforme.

Agent

Un membre de l’équipe avec un accès limité ou un agent d’IA.

BYOK

Apportez votre propre clé, vous fournissez votre propre clef AI API.

Connecteur

Un plugin intégrant une plateforme externe avec OpsIQ.

CSAT

Score de satisfaction client.

Marché conclu

Une opportunité de revenus dans le CRM.

Département

Une catégorie de ticket pour le routage et le contrôle d'accès.

Escalade

Déplacer un ticket vers un autre service ou de l’IA à l’humain.

GéoIP

Détection de l'emplacement du visiteur à partir de l’adresse IP.

Délivrance

Transférer une conversation de l’IA à l’humain.

Jeton d'identité

Jeton signé identifiant un visiteur du site Web.

Base de connaissances

Articles que l'IA utilise pour répondre aux questions.

Plomb

Un visiteur montrant une intention d'achat.

Score du prospect

0-100 Nombre indiquant la probabilité de conversion.

Étape du cycle de vie

Où un client est: Lead, prospect, client, à risque, churned.

IA gérée

AI fournie dans le cadre de votre plan OpsIQ.

Pipeline

Tableau visuel des étapes de l'opération.

RBAC

Contrôle d'accès basé sur les rôles.

Séance

Une série de pages vues dans une fenêtre d'expiration.

Clé de site

Identifiant unique pour un site Web suivi.

SLA

Accord sur le niveau de service, délais de réponse cibles.

Jeton

Unité de texte d'IA. 4 caractères = 1 token.

Couche de confiance

Système de sécurité contrôlant l’autonomie de l’IA.

Couvertures Web

Rappel HTTP pour les notifications d'événements.

Widget

Code JavaScript incorporé sur votre site Web.

Espace de travail

Un site avec son propre suivi, IA, connecteurs et équipe. Même que "site".

Référence

Obtenir plus d'aide

Si cette documentation ne répond pas à votre question:

Admin IA

Cliquez sur "Ask OpsIQ" dans l'administration. A accès à cette documentation et vos données de plateforme.

Ticket de support

Inclure: ce que vous avez essayé, ce qui s'est passé, ce à quoi vous vous attendiez et les messages d'erreur.

Courriel

Envoyez un e-mail au support avec votre clé de licence et la description du problème.

Conseils pour des demandes de support efficaces

Inclure la page

Quelle page d'administration (URL ou nom).

Inclure le paramètre

Nom exact du réglage et valeur actuelle.

Inclure l'erreur

Message d'erreur exact avec des codes.

Inclure les étapes

Ce que vous avez fait, étape par étape.

Inclure les prévisions par rapport aux chiffres réels

Ce qui devrait se passer par rapport à ce qui s’est réellement passé.

💡
Plus votre demande est spécifique, plus la réponse sera rapide. « Cela ne fonctionne pas » nécessite une enquête. « Cliquer sur Enregistrer dans Configuration de l'IA donne le code d'erreur 502» obtient une réponse directe.