OpsIQ Documentazione

Costruisci, opera e proroga OpsIQ.

Questa è la documentazione completa per OpsIQ. Impostare il prodotto, eseguire il supporto, configurare AI, gestire CRM, installare il widget, costruire connettori, chiamare il REST API, ricevere webhooks, applicazioni del mercato dei pacchetti e operare distribuzioni self-hosted.

Guida clientiGuida all'amministrazioneGuida agli sviluppatoriCRMConnettore SDKRESTAPIAuto-hosted
Ambito

Volume di questo manuale

Tutto OpsIQ fa, in un unico luogo: come ogni schermo funziona, come collegare i propri sistemi e come costruire su di esso. Inizia ovunque, le sezioni seguono lo stesso ordine della barra laterale dell'amministratore.

Ambito
Carta dei documentiIl manuale è organizzato intorno al prodotto OpsIQ, seguendo lo stesso ordine della barra laterale di amministrazione.Carta dei documentiOpsIQ prodottoAUDIENCEOperatoriBUILDSviluppatoriRUNAmministratoriLIVELLI DI LAVOROUso OpsIQSchermi e flussi di lavoro del prodottoInclusoEsame OpsIQConnettori, APIs e widgetInclusoOperare OpsIQSicurezza, cron e distribuzioneInclusoRiferimentoPacchetto, API e contratti webhookIncluso1CHOOSE AUDIENCEOperatore o sviluppatore2FOLLOW THE UISezioni specchio OpsIQ3USE SOURCE TRUTHLo stato viene da costruire
Il manuale è organizzato intorno al prodotto OpsIQ, seguendo lo stesso ordine della barra laterale di amministrazione.
Portal Studio guida sul campo

Utilizzare l'amministratore e la guida per lo sviluppatore dedicato per l'architettura del portale, pagine, componenti, anteprima, Centro assistenza, identità, SCIM, versioni regolamentate, estensioni, migrazioni e certificazione.

Aprire la guida Portal Studio

Cosa c'è qui dentro

Eseguire il prodotto

Ogni schermo dell'amministratore: analisi, live chat, biglietti, CRM, base di conoscenza, Site Intelligence, promozioni e il portale clienti.

Collegare i sistemi

Il widget del sito, mailbox e-mail, webhooks in entrata e in uscita, e la libreria di connettori per piattaforme come Shopify, WooCommerce, WHMCS, Zendesk, Stripe, Slack e Gmail.

Costruisci il tuo

Il Connettore Builder per connettori senza codice, Azioni & Triggers se si preferisce non utilizzare connettori affatto, e il REST API con ogni azione, portata e codice di errore.

Operarlo

Ruoli e autorizzazioni, sicurezza, cron, diagnostica, backup, e sia ospitato che self-hosted distribuzione.

Dove cominciare

1
Se scappi OpsIQ giorno per giorno

Leggi le sezioni dello schermo in ordine laterale. Ognuno si apre con ciò che la pagina è per, quindi puoi smettere non appena hai quello di cui hai bisogno.

2
Se lo amministrate

Aggiungi Impostazioni, Sicurezza, Diagnostica, Cron e Produzione. Queste sono le sezioni che decidono se tutto il resto continua a funzionare.

3
Se stai costruendo un'integrazione

Avviare ai Connettori, poi al Connettore Builder, quindi il REST API e webhooks. Leggi quelli in ordine e si avrà visto ogni modo OpsIQ può parlare con un altro sistema.

💡
Le autorizzazioni nascondono pagine che il tuo ruolo non può aprire, quindi una sezione qui descritta potrebbe mancare dalla barra laterale. Chiedi ad un amministratore di controllare il tuo posto e i connettori portano un'etichetta di scadenza di Produzione, Beta, Anteprima o Template; la build in esecuzione e il suo manifesto di connettore sono l'autorità su cui hai, non questa pagina.
Inizia qui

Cosa? OpsIQ fa per il tuo business

OpsIQ sostituisce la tua piattaforma di analisi, live chat, helpdesk, CRM, SEO toolkit, middleware di integrazione e sviluppatore con un unico amministratore unificato dove ogni strumento condivide lo stesso contesto del cliente. 8-12 prodotti SaaS separati, si installa OpsIQ una volta e operare tutto da uno schermo.

La piattaforma
OpsIQ piattaforma unificataUn cervello AI centrale collegato a chat dal vivo, CRM, biglietti, Site Intelligence, promozioni e analisi.Chat dal vivoPromozioniAICRMSito web IntelBigliettiAnalisiOpsIQCERVELLO AI1ONE WORKSPACEOgni strumento in un amministratore2SHARED BRAINUn contesto cliente3ANYWHERECloud o self-hosted
OpsIQ è una piattaforma con un contesto cliente condiviso, ogni strumento si alimenta e viene alimentato da, lo stesso cervello AI.

Tutto OpsIQ fa · in dettaglio

Analisi del sito web e informazioni sui visitatori

Inseguimento dei visitatori in tempo reale

Ogni pagina carica, clicca, scorre e l'evento di navigazione viene catturato in tempo reale. Scopri chi è sul tuo sito in questo momento, quali pagine visualizzano, quanto spendono e da dove vengono, il tutto senza cookie di terze parti.

Registro e sessioni dei visitatori

Storia completa di ogni visitatore con dispositivo, browser, sistema operativo, paese, città, referrer, parametri UTM, pagina di atterraggio e risoluzione dell'identità.

Riproduzione della sessione

Riproduzione in stile timeline delle sessioni dei visitatori catturate. Scopri esattamente ciò che gli utenti hanno fatto: movimenti del mouse, clic, rotazioni, transizioni di pagina e interazioni della forma. Utilizzalo per diagnosticare i problemi UX, capire punti drop-off e verificare i flussi di conversione.

Alimentazione dal vivo

Guarda le viste delle pagine, inizia la chat, invia i moduli e segnala l'intento di aggiornare ogni pochi secondi. Filtro per paese, dispositivo o referrer per concentrarsi su segmenti specifici del traffico.

Pagine in alto

Pagine classificate per visite, tempo di fidanzamento, tasso di rimbalzo, conversioni e attività di supporto.

Geo intelligenza

Ripartizione di paese, città e regione con mappe. Distribuzione di dispositivi e browser, analisi delle sorgenti del traffico, monitoraggio dei referrer del motore di ricerca e approfondimenti della penetrazione del mercato.

Imbuto intenzionale

Tracciare i segnali di intenti dei visitatori (precise visite alla pagina, ritorni ripetuti, modelli di navigazione della documentazione e interazioni di supporto) per identificare i visitatori che sono in grado di acquistare, churn o bisogno di aiuto.

Esperimenti A/B

Eseguire test di divisione sul tuo sito web direttamente da OpsIQ. Creare varianti, impostare l'allocazione del traffico, definire gli obiettivi di conversione e misurare il significato statistico.

JavaScript monitoraggio degli errori

Capture client-side JavaScript errors from your website automatically. See error messages, stack traces, affected browsers, frequency counts, and which pages trigger them. Debug frontend issues without separate error monitoring.

Eventi

Ogni evento tracciato (pagina di vista, eventi personalizzati, interazioni chat, sottomissioni dei moduli, acquisti) in un registro ricercabile e filtrabile con metadati completi.

Vendite e conversioni

Traccia gli ordini, i ricavi, i rimborsi, i rinnovi di abbonamento e attribuisci le conversioni a fonti di traffico, campagne e viaggi dei visitatori.

Piombo

Visitatori ad alto contenuto identificati dai modelli di comportamento. Il punteggio si basa sulle visite di pagina, il tempo sul sito, la frequenza di ritorno, le interazioni di supporto e i segnali personalizzati.CRMConduttura.

Intelligenza del sito (SEO e analisi dei contenuti)

Strisce del sito

crawling automatizzato del tuo intero sito web per scoprire pagine, rilevare collegamenti interrotti, trovare meta tag mancanti, controllare il testo dell'immagine alt, convalidare i canonici URLs, e mappare la struttura del sito. Pianifica crawls per eseguire ogni giorno, settimana o su richiesta.

Audit tecnico SEO

Analisi tecnica completa: punteggi di velocità pagina, reattività mobile, Core Web Vitals, stato del certificato SSL, catene reindirizzanti, rilevamento dei contenuti duplicati, analisi della profondità striscia e convalida dei dati strutturati.

Controllo dei contenuti

Valuta ogni pagina per qualità dei contenuti, conteggio delle parole, punteggio di leggibilità, densità della parola chiave, struttura intestata, rapporto di collegamento interno/esterno e freschezza.

Ricerca potenziata dall'IA

Ricerca semantica su tutto il contenuto del sito. Fai domande di lingua naturale sul tuo contenuto e ottieni risposte sintetizzate dall'IA con riferimenti alla pagina di origine.

SERP di tracciamento

Monitorare le classifiche dei motori di ricerca per parole chiave di destinazione su Google e altri motori. Controllare i cambiamenti della posizione nel tempo, confrontare contro i concorrenti, e vedere quali pagine si posizionano per quali termini.

Ricerca della Parola chiave

Scopri le opportunità di parole chiave in base ai tuoi contenuti, analisi dei concorrenti e dati del volume di ricerca.

Analisi dei collegamenti

Controlla il tuo profilo di collegamento in entrata. Vedi quali siti ti collegano, traccia i link nuovi e persi, analizza la distribuzione del testo dell'ancoraggio e identifica le opportunità di link-building.

Rete locale SEO

Per le aziende con posizioni fisiche: visualizza la tua visibilità di ricerca locale in una griglia geografica. Scopri come i tuoi ranking variano per posizione, distanza dal tuo business e intenti di ricerca.

Google Business Profile sincronizzazione

Collegare il tuo profilo aziendale di Google OpsIQ. Sync recensioni, post, Q&A, foto e informazioni aziendali. Gestisci il tuo elenco GBP dall'interno OpsIQ. Rispondere a recensioni, pubblicare messaggi e monitorare intuizioni.

Rapporti programmati

I report automatizzati SEO e analytics generati nel vostro programma (daily, settimanale, mensile). I rapporti includono modifiche di classifica, tendenze del traffico, problemi tecnici trovati e prestazioni dei contenuti.

Supporto per l'intelligenza artificiale

Clienti AI chat

AI risponde alle domande dei clienti sul tuo sito web 24/7 utilizzando la vostra base di conoscenza, i dati della piattaforma collegati (ordini, account, abbonamenti), e le richieste di formazione personalizzate.Anthropic), GPT-4o (OpenAI), Gemini (Google), e Grok (xAI).

Admin AI assistente

Un copilota AI all'interno del pannello di amministrazione che ti aiuta a scrivere le risposte dei biglietti, a redigere comunicazioni dei clienti, analizzare le tendenze di supporto, cercare i dati dei clienti su piattaforme connesse e eseguire azioni attraverso il sistema di connettori.

Impianto di conoscenza dell'IA

L'IA è fondata nei tuoi articoli di base della conoscenza, le voci delle FAQ, la documentazione del prodotto e i dati collegati della piattaforma. Non allucinare. Risponde alle informazioni aziendali o all'escalation quando incerte.

Auto-handoff agli esseri umani

Quando l'IA non riesce a risolvere una domanda, rileva la frustrazione o il cliente chiede un essere umano, automaticamente si consegna al vostro team con pieno contesto di conversazione.

Segreteria di formazione AI

Scrivere istruzioni separate per l'intelligenza artificiale e la gestione di AI. Controllo tono, confini, regole di escalation, argomenti vietati e comportamento specifico per il business.

Storia e audit dell'AI

Ogni conversazione AI è collegata con i dettagli della richiesta / risposta completa, l'uso del token, il monitoraggio dei costi, il fornitore utilizzato e la versione di modello.

Intuizioni dell'IA

Analisi automatizzata dei modelli di conversazione AI. Consultare le domande comuni, i tassi di risoluzione, la frequenza di consegna, la soddisfazione del cliente per argomento e aree in cui l'IA ha bisogno di una migliore formazione.

Configurazione AI per workspace

Ogni sito/spazio di lavoro collegato può utilizzare il proprio fornitore AI, modello, temperatura, budget token e richieste di formazione. Un'azienda SaaS può usare Claude per il prodotto principale e GPT-4o per un marchio secondario.

AI gestita e BYOK

Due modalità AI: Managed AI (incluso nel tuo piano, no API chiave necessaria) o Portare la propria Chiave (utilizzare il proprio OpenAI/Anthropic/Google/xAI API chiave per il controllo completo sulla selezione e sui costi del modello). Entrambe sono di prima classe, ogni funzione funziona con entrambe le modalità.

Bilanci e controlli sui costi

Impostare i bilanci mensili, limiti di per-conversazione e avvisi a basso equilibrio. Traccia le spese per provider, per spazio di lavoro e per conversazione.

Biglietti e helpdesk

Sistema di biglietti nativo

Full helpdesk con dipartimenti, priorità (basso/medio/alto/urgente), stati, tracciamento SLA, note interne, risposte dei clienti, allegati file e conversazioni filettate.

Triage AI e auto-riparazione

Impiega automaticamente i biglietti in arrivo per reparto e priorità. Abilita auto-riparazione per dipartimenti sicuri. L'AI elabora e invia una risposta dopo un ritardo configurabile (default: 2 minutes) così gli esseri umani possono intervenire prima.

Ingestione e-mail

Collegare una casella di posta (Gmail, IMAP o provider-specific) per creare automaticamente i biglietti da email in entrata. Risposte alle e-mail di notifica del biglietto aggiornano il file di ticket.

Portale dei biglietti incorporato

I clienti possono presentare i biglietti, visualizzare la loro storia, rispondere ai biglietti aperti e controllare lo stato, tutti marchiati per il vostro design.

Confluenza dei biglietti

Unisci i biglietti duplicati in un unico thread. Mostra biglietti di merito [Merged] sulla riga dell'oggetto. Tutta la cronologia delle conversazioni è conservata nel biglietto sopravvissuto.

Torna a AI

Dopo che un agente umano prende il controllo di un biglietto, utilizzare "Ritorno all'IA" per lasciare che l'intelligenza artificiale riprenda automaticamente su quel biglietto. Utile quando la parte richiesta dall'uomo viene risolta ma il cliente ha domande successive che l’AI può gestire.

Copilota di posta in arrivo

Il copilota suggerisce risposte, riassume la cronologia delle conversazioni, raccomanda incarichi prioritari/dipartimenti e può eseguire azioni su piattaforme collegate.

Supporto chat e in tempo reale

Posta in arrivo

In tempo reale, la chat dei clienti è gestita da una casella di posta unificata. Vedi tutte le conversazioni attive, l'identità del cliente, la cronologia delle conversazioni e i suggerimenti dell'IA.

Regole di chat proattive

Messaggi di chat Trigger basati sul comportamento dei visitatori: tempo su pagina, specifico URL visitato, profondità di scorrimento, numero di visita di ritorno, intento di uscita o eventi personalizzati. Esempio: mostrare un messaggio d'aiuto dopo 60 secondi sulla pagina dei prezzi.

widget di Chat

Supporta chat AI, live agent chat, ticket presentation, Knowledge Base e identità dei visitatori. Responsive, accessibili e brandable.

Indagini CSAT

Raccogliere i rating di soddisfazione dei clienti dopo le interazioni chat e biglietti. Progettare sondaggi con le proprie domande, scale di valutazione e richieste di follow-up.

Sondaggio email post-chat

Dopo una chat termina, i visitatori con un'email conosciuta possono ricevere una mail di marca con un riassunto AI di ciò che è stato gestito e un clic su "Sei facile?" Sì/No. Una volta per thread, link firmati a uso singolo, ogni messaggio registrato, e il risultato atterra sulla pagina Feedback come suo segnale accanto alle stelle in-chat.

Feedback loop identità

Ogni elemento di feedback che trasporta una persona li mostra: nome, e-mail, un click-through al loro viaggio completo del cliente e contatto CRM, e risposte one-click Email o AI-draft radicate nella loro storia reale.

Scrivere AI

Assistente di scrittura AI separato per comporre bozze e-mail, le risposte dei biglietti, gli annunci e le comunicazioni dei clienti. Utilizza il proprio prompt (non il cervello della chat) per la scrittura professionale degli affari.

AI-Primo CRM

CRM Centro di comando

Una singola schermata che mostra l'intero stato CRM: valore della pipeline, velocità dell'affare, attività imminente, offerte a rischio, attività agente e raccomandazioni AI.

Contatti e aziende

Gestisci i contatti con i clienti con profili completi: nome, email, telefono, azienda, tag, fase del ciclo di vita, cronologia delle conversazioni, storia dei biglietti, storia dell'acquisto e campi personalizzati.

Trattamenti e tubazioni

Gestione di transazioni in stile Kanban con fasi personalizzabili. Trascina le offerte tra stadi, imposta i valori, assegnare i proprietari, tracciare date ravvicinate e vedere il valore della pipeline in ogni fase.

AI accordo di coaching

L'IA analizza ogni accordo e fornisce coaching: segnali di rischio (andare tranquillo, concorrente menzionato, problemi di bilancio), raccomandazioni future-best-action, probabilità di vittoria, e tempistiche suggerite di follow-up.

Previsioni e relazioni

Le previsioni dei ricavi basate sui dati delle pipeline, i tassi storici di chiusura e la velocità degli accordi. I report includono il gasdotto per fase, dal proprietario, dalla fonte, i prezzi di conversione, la dimensione media dell'affare e la lunghezza del ciclo di vendita.

Agente di controllo (SDR)

Prospezione potenziata dall'IA che identifica i potenziali clienti dai dati dei visitatori, dai segnali di piombo e dalle attività della piattaforma collegata.

Sequenze di follow-up

Sequenze di follow-up automatizzate multi-step: e-mail, attesa, email, risposta del controllo, escalate. Definire le sequenze per nuovi lead, offerte in bancarella, check-in post-acquisto e campagne di ri-engagement.

Ciclo di vita e ritenzione

Traccia le fasi del ciclo di vita dei clienti (percorso, prospettiva, cliente, churned) con transizioni automatizzate. L'agente di ritenzione monitora per i segnali di mandrino e suggerisce interventi.

Agente di gestione dati

Agente AI che pulisce e arricchisce continuamente i dati CRM: deduplica contatti, riempie campi mancanti, convalida le email, standardizza i nomi delle aziende e le bandiere stale record.

Costruisci il mio CRM

Configurazione CRM di linguaggio naturale: racconta all'AI quale sia il tuo processo di vendita e costruisce le tue fasi pipeline, campi personalizzati, modelli di accordi e regole di automazione.

Controllo della salute CRM

Controllo automatizzato della qualità dei dati CRM: contatti duplicati, offerte senza passi successivi, linee di stallo, informazioni di contatto mancanti e la completezza dei dati.

Fiducia di quadrante

Controllo dell'autonomia a tre livelli per ogni agente AI CRM: Autopilot (AI agisce indipendentemente), Copilota (AI suggerisce, approva l'uomo) e Manuale (AI osserva solo).

Quattro agenti dell'IA

Il CRM gestisce quattro agenti AI specializzati: Steward (qualità dati), SDR (prospettiva), Retention (prevenzione di catalogo) e Analyst (relazione e intuizioni).

Connettori e integrazioni

Connettori pre-costruiti

Connettori pronti all'uso per Shopify, WooCommerce, BigCommerce, Magento 2, PrestaShop, OpenCart, osCommerce, WordPress, WHMCS, Zendesk, Stripe, Amazon SES, Postmark, Resend, SendGrid, Mailgun, Gmail, IMAP, Slack e Google Business Profile. Ogni connettore porta le azioni AI specifiche della piattaforma, la conoscenza e sincronizzazione dei dati.

Costruttore di Connettori

Costruire connettori personalizzati per qualsiasi piattaforma, nessun codice, AI-assisted o codice completo. Il costruttore supporta REST e GraphQL APIs, OAuth codice di autorizzazione flusso, webhook auto-registrazione con Stripe e semplici schemi di firma, impaginazione (offset, pagina, cursore e link-header), elenco/error trasforma, contesto multi-azione, e imballaggio mercato.

Connettore assistita dall'IA che autorizza

The ConnectorBuilderAI helps you build connectors: describe what you want and it suggests actions, writes request handlers, and maps API responses. Handles authentication, pagination, and error handling automatically.

OAuth flusso per qualsiasi connettore

Generico in-app OAuth Il supporto PKCE, la gestione dello stato con un'ottica del sito, il rinfresco automatico dei gettoni.OAuth parametri e OpsIQ gestisce il flusso.

Bus di capacità (estensione a livello piattaforma)

I connettori non solo aggiungono le azioni della piattaforma. Possono alimentare le funzioni del core attraverso la capacità "bus". Un connettore dichiara una funzionalità (calendar, arricchimento, esign in CRM; local_listing, rank_data in Site Intelligence; web_analytics in Analytics; payment_provider in Payments; email_sync in Mailbox; video_meeting in Comms) e implementa il suo piccolo set di metodi; OpsIQ lo scopre tramite CapabilityRegistry e la collega all'interfaccia utente, il Cliente 360 timeline, e le azioni AI. Diversi connettori possono offrire la stessa capacità senza blocco. Vedere connettori/PLATFORM_CONNECTORS.md.

Preinstallato vs tier di mercato

I connettori preinstallati (connessioni/) sono attivati dal registro di sistema, mantenuti in sospeso solo il riferimento keyless e il provider più utilizzato per funzionalità (ad esempio Google Calendar, Gmail, Google Business Profile). 365 Calendario, Outlook, DocuSign, Stripe, GA4, SerpApi, Zoom. Ogni ponte supera un elenco di mercato in modo che l'interfaccia utente e l'intelligenza artificiale possano richiedere "installare dal mercato" (notificare-installare) quando una capacità non ha fornitore pronto, mai un pulsante rotto.

Connettore mercato

Pubblica i tuoi connettori al OpsIQ mercato. Connettori di pacchetto con profilo.json, conoscenza.json, workflow_recipes.json, e gli archivi firmati. Marketplace supporta connettori gratuiti e a pagamento con fatturazione multi-source.

Connettore firma

Tutti i connettori sono firmati crittograficamente per la verifica dell'integrità. La registrazione viene controllata al momento dell'installazione.

SmartLooking

Declarative fuzzy-matching system for connector actions. Define lookup rules and OpsIQ matches user queries to platform entities using fuzzyScore and smartRank algorithms. Example: find_country("germ") matches Germany with 88.9% confidence.

Contratti di azione

Il generale OpsIQ API pubblicazioni 1,312 azioni nominate, mentre i pacchetti di connettori dichiarano le proprie azioni del fornitore con parametri digitati, requisiti di autenticazione, regole di impaginazione e la risposta si trasforma attraverso l'ActionExecutor unificato.

Ricette del connettore

Esempio: "Quando un nuovo ordine entra in Shopify, crea un biglietto, aggiorna il CRM e invia una notifica Slack."

Sincronizzazione della conoscenza

I connettori dichiarano argomenti di conoscenza che si sincronizzano con la base delle conoscenze AI. Gli articoli di aiuto specifici della piattaforma, le guide di configurazione e i passaggi di risoluzione dei problemi sono automaticamente disponibili all'IA senza l'entrata manuale della conoscenza.

Piattaforma di sviluppo

RESTAPI

Un nome JSON API copre ogni amministratore registrato JSON funzionamento, conAPI-autenticazione chiave, isolamento dello spazio di lavoro, ambiti, limitazione dei tassi, scritture idempotent, OpenAPI e una raccolta Postman generata.

Webhook

Webhooks in uscita per tutti i principali eventi: ordini, fatture, abbonamenti, biglietti, chat, lead, registrazioni utente e abbandono del carrello. Consegna asincense tramite coda di lavoro, retry backoff esponenziale, protezione SSRF e auto-disabilitazione dopo 15 fallimenti consecutivi.

Webhook firma

Ogni webhook in uscita è firmato con HMAC-SHA256. Verificare le firme sul vostro fine di ricezione per garantire l'autenticità del webhoOK.

WidgetSDK

JavaScript SDK per il widget di tracciamento con risoluzione dell'identità, monitoraggio degli eventi personalizzati, controllo della chat programmatica e configurazione specifica della pagina. WordPress, Shopify, e statico HTML.

Plugin e SDK

SDKs lato server e plugin per framework comuni. WordPress plugin, WHMCS modulo e librerie generiche di integrazione PHP/Node.js.

Eventi API

Premi eventi personalizzati in OpsIQ dal tuo backend: acquisti, iscrizioni, utilizzo delle funzionalità, errori o qualsiasi evento aziendale.

Triggers libro di cucina

Costruisci flussi di lavoro automatizzati innescati da eventi: nuovo biglietto, chat iniziato, visitatori identificati, affare fase cambiato, o evento personalizzato.

API costruttore

Visuale API Configurare endpoint, richieste di test, ispezionare risposte e debug integrazioni senza lasciare OpsIQ.

Team e amministrazione

Controllo dell'accesso basato sul ruolo

Tre ruoli: Proprietario (accesso completo, fatturazione, zona di pericolo), Amministratore pieno (tutte le operazioni tranne la zona di fatturazione e pericolo), e agente (solo reparti assegnati, nessun accesso alle impostazioni). Tutte le pagine sensibili sono difficili da raggiungere per ruolo.

Dashboard delle prestazioni del team

dashboard proprietario e amministratore completo che mostra tempi di risoluzione, distribuzione del carico di lavoro, profondità della maniglia, ripartizione dei canali, analisi delle tendenze, conformità SLA, CSAT da agente, tariffe riaperte, rotazioni di squadra e ore più affollate.

Presenza di amministratore e tracciamento online

widget in tempo reale di chi è online nella navigazione dell'amministratore.60- Secondo ping, 300-secondo estenso, auto-prune dopo 120 giorni). Vedere quali amministratori sono attualmente attivi e su quali pagine.

Impostazioni per spazio di lavoro

Ogni sito connesso (spazio di lavoro) può avere la propria configurazione AI, le impostazioni dei connettori, i reparti dei biglietti, il branding e le regole operative.

Gestione multi-sito

Gestisci più siti da un amministratore OpsIQ. Ogni sito ha il proprio tracciamento snippet, dati dei visitatori e configurazione.

Sistema di template e-mail

Modelli di posta elettronica basati sul Registro per tutte le comunicazioni automatizzate: notifiche dei biglietti, trascrizioni della chat, email di benvenuto, reimpostazioni delle password e avvisi di sistema. HTML modelli con anteprima live, chip variabili ({{customer_name}}, {{ticket_id}}), e il controllo globale del layout.

Importazione ed esportazione

Importare contatti, biglietti e articoli di conoscenza da CSV/JSON. Esportare dati dei visitatori, report di analisi e record CRM. Portabilità dei dati per la migrazione tra i sistemi.

Sicurezza, conformità e operazioni

Impresa SSO

OIDC (OpenID Connetti) single sign-on con tempo pieno di esecuzione: scoperta, autorizzare, callback, verifica firma JWKS, userinfo, elenco dei permessi di dominio, provisioning JIT e guardie dello stato. SAML supporto di configurazione.

GDPR e la conformità dei dati

Costruito DSAR Gestione (Data Soggetto Richiesta di accesso): esportare ed eliminare i dati dei clienti in tutti i sistemi. Cancellazione dei dati a livello di contatto che copre sessioni, biglietti, chat, record CRM e registri delle email.

IP Protezione da blocco e forza brute

Blocco specifico IPs o spazia dall'accesso al tuo sito o all'amministratore. Bloccaggio automatico dopo tentativi di login non riusciti configurabili.IP, timestamp e user agent.

HSTS e intestazioni di sicurezza

Sicurezza dei trasporti, intestazioni di autorizzazioni-Policy e configurazione sicura dei cookie. Le implementazioni self-hosted possono aggiungere le intestazione CSP tramite la configurazione del server.

Indurimento di webhook in uscita

SSRF blocca webhooks a privato / dati IP ranges. La consegna asincrona impedisce agli endpoint lenti di bloccare l'applicazione. 15 fallimenti consecutivi previene lo spreco di risorse su endpoint morti.

Isolamento del lavoro

Visitatori, biglietti, chat, registri CRM e conversazioni AI sono indirizzate al loro spazio di lavoro. Le perdite dei dati traspazio-lavoro vengono evitate allo strato di query.

Gestione del ciclo di fatturazione

Supporto per cicli di fatturazione mensili, trimestrali, semestrali, annuali, biennali e a vita. Normalizzazione delle valute per gateway multivaluta. Conversione FX sulla ricevuta di pagamento per una segnalazione accurata dei ricavi.

Cron e automazione programmata

Sistema di cron integrato per le attività programmate: generazione report, pulizia dei dati, rinnovo degli abbonamenti, aggiornamenti dell'allenamento AI, sincronizzazione dei connettori e retries webhook.

Criteri di conservazione dei dati

Configurare le sessioni di visite lunghe, i trascritti delle chat, la cronologia delle conversazioni AI e i registri degli eventi sono conservati.

Diagnostica e salute

dashboard di salute del sistema che mostra lo stato del cron, la connettività del database, lo stato dell'AI provider, la salute dei connettori, i tassi di consegna webhook e l'utilizzo dello storage.

Chi? OpsIQ è per

Negozi di e-commerce

Negozi

Tenere traccia di ogni visitatore dall'atterraggio per l'acquisto. Lascia rispondere AI "Dove è il mio ordine?" utilizzando live Shopify/WooCommerce Gestisci i biglietti di supporto con l'AI auto-reply. Esegui un accordo per il commercio all'ingrosso e B2B conduce. Attribuisci le entrate alle fonti di traffico e campagne. Monitora l'abbandono del carrello con i flussi di lavoro di recupero.

SaaS e società software

Saa

Monitorare le iscrizioni di prova e l'adozione delle funzionalità con la riproduzione della sessione. API docs. Gestisci le offerte di entrate e di espansione dell'abbonamento nel CRM. Connetti la tua piattaforma di fatturazione (Stripe, WHMCS) per il monitoraggio MRR in tempo reale. Utilizzare l'agente CRM ciclo di vita per rilevare e prevenire churn.

Agenzie e freelance

Agenzia

Traccia i siti client multipli da un amministratore. Utilizzare il canale CRM per gestire le prospettive e i lead del progetto. Costruire connettori personalizzati per piattaforme client utilizzando il Connettore Builder. Generare report SEO marcati con l'Intelligenza del sito. Resell connettori di mercato come servizi ad alto valore.

Hosting e infrastrutture

Hosting

Profondo WHMCS integrazione con 80+ AI azioni per ricerca ordine, gestione dei servizi, DNS, e provisioning. Risponde automaticamente alle domande di hosting comuni utilizzando gli articoli base della conoscenza. Traccia l'impegno della pagina dello stato del server. Gestisci i biglietti di supporto tecnico con il triage AI. Utilizzare la scala del ciclo di fatturazione per piani di hosting mensili attraverso la vita.

Imprese di sostegno

Supporto

Difensore 40-70% Tracciare le prestazioni del team con i tempi di risoluzione, la conformità SLA e CSAT da parte dell'agente. Utilizzare la scrittura AI per la redazione di risposta professionale. Monitorare le tendenze di supporto con gli insight AI.

Squadre di marketing e SEO

Commercializzazione

Suite di intelligenza del sito completo: crawls, audit tecnici SEO, analisi dei contenuti, monitoraggio della posizione SERP, ricerca delle parole chiave, monitoraggio backlink e griglia locale SEO. Gestione di Google Business Profile. Report pianificati white-label per i clienti.

Fondatori soli e piccole squadre

Avviamento

Iniziare con solo monitoraggio e chat, gratuito da aggiungere. Quindi aggiungere i biglietti quando si ottiene il volume di supporto. Accendere il CRM quando si inizia a vendere. OpsIQ scale da una persona che fa tutto a un 50- squadra di operazioni persona con RBAC, reparti e monitoraggio delle prestazioni per-agent.

Imprese e multi-brand

Enterprise

Impresa SSO Con OIDC per l'autenticazione centralizzata. Isolamento multi-workspace per marchi o divisioni separate. Configurazione AI per lo spazio di lavoro con diversi fornitori e modelli. Sviluppo del connettore personalizzato con distribuzione sul mercato. GDPR strumenti di conformità e politiche di conservazione dei dati.

Cosa OpsIQ sostituisce

Google Analytics + Hotjar + Plausibile

Analisi completa del sito web con monitoraggio dei visitatori, ripetizione delle sessioni, classifica di pagine, geointelligenza, imbuti intenti, attribuzione della conversione, eventi, esperimenti A/B e monitoraggio degli errori JS, tutti privacy-friendly, tutto in una piattaforma.

Interfono + Drift + Tidio

chat clienti alimentata con la conoscenza messa a terra, supporto AI multi-provider, auto-handoff per gli esseri umani, regole di chat proattive, cronologia delle conversazioni, sondaggi CSAT e creazione dei biglietti da chat.

Zendesk + Freshdesk+ Help Scout

Sistema di ticket nativo con reparti, priorità, triage SLA, AI, auto-riparazione con ritardo configurabile, ingestione e-mail, biglietto incorporato, fusione dei biglietti, copilota casella postale e possibilità di ritorno alla AI.

HubSpot + Pipedrive + Salesforce

AI-first CRM con quattro agenti AI specializzati (Steward, SDR, Retention, Analyst), controllo dell'autonomia del Trust Dial, bordo pipeline, coaching di accordi, previsione, sequenze, gestione del ciclo vitale e configurazione CRM linguaggio naturale.

Ahrefs + SEMrush + Moz

Intelligenza del sito con crawls automatizzati, audit tecnici SEO, analisi dei contenuti, ricerca AI, monitoraggio di rango SERP, ricerca delle parole chiave, analisi backlink, griglia locale SEO e report white-label programmati.

Zapier + Fare + middleware personalizzato

Connettore SDK con 25+ connettori pre-costruiti, Connector Builder (no-code/AI-assisted/full-code), OAuth flusso, webhook auto-registrazione, un ampio catalogo di definizioni d'azione del connettore che diventano eseguibili solo quando il relativo connettore è installato, abilitato, configurato e convalidato, SmartLookup, mercato e pacchetti firmati.

Google Business Profile Manager

Connettore GBP completo: gestione delle recensioni, post-editoria, gestione di Q&A, upload fotografici, sincronizzazione delle informazioni aziendali, tracciamento approfondimenti e risposte di recensione alimentate con AI, tutte dall'interno OpsIQ.

Strumenti di modello email separati

Modelli di posta elettronica basati sul Registro con editor visivo, anteprima dal vivo, chip variabili, controllo globale del layout e personalizzazione dell'evento per tutte le comunicazioni automatizzate.

dashboard di gestione del team

Prestazioni del team integrate: tempi di risoluzione, carico di lavoro, conformità SLA, CSAT da agente, riapertura dei tassi, ore più affollate, monitoraggio della presenza in tempo reale e guasti per-dipartimento.

GDPR strumenti di conformità

Gestione nativo DSAR, cancellazione dei dati su tutti i sistemi, gestione del consenso, politiche di conservazione e percorsi di audit, incorporati nella piattaforma, non bulloni.

Due edizioni

Distribuzione hosted

OpsIQ il funzionamento del prodotto è lo stesso; l'infrastruttura, gli aggiornamenti e i backup sono gestiti dall'operatore di hosting.OpsIQ runtime piuttosto che i flussi di conto commerciali o di marketing.

Modulo auto-hosting

Installazione OpsIQ sul proprio server per il pieno controllo dei dati, del branding, degli aggiornamenti e delle integrazioni. 8.4+, MySQL 5.7+ o MariaDB 10.3+, HTTPS e il OpsIQ unified cron. Supporti WHMCS integrazione come modulo addon.

Ordine di lettura consigliato

1
Avvio rapido

Segui la guida di configurazione 30-minute per ottenere monitoraggio, chat e AI di base che lavorano sul tuo sito web.

2
Dashboard e analisi

Scopri come leggere i dati dei visitatori, impostare la riproduzione di sessione, identificare i lead e comprendere i modelli di traffico.

3
Intelligence del sito

Eseguire il primo strisciamento SEO, controllare la salute tecnica e impostare il tracciamento del grado SERP per le parole chiave di destinazione.

4
Biglietti e supporto

Impostare i reparti, configurare l'auto-riparazione con AI, collegare l'ingestione e-mail e formare la vostra intelligenza artificiale per gestire le domande comuni.

5
CRM

Organizzare contatti, costruire il vostro pipeline, configurare gli agenti AI, impostare livelli di Trust Dial e lasciare che l'IA coach le vostre offerte.

6
Connettori e strumenti di sviluppo

Collegare la piattaforma di e-commerce/billing, costruire connettori personalizzati, configurare webhooks e integrare tramite il REST API.

💡
Nuovo a OpsIQ? Iniziare con la guida di avvio rapido qui sotto. È possibile avere monitoraggio e chat AI di base in esecuzione sotto 30 minuti.
Inizia qui

Avvio rapido in 30 minutes

Follow these steps in order to get OpsIQ running. Each step builds on the previous one. By the end, you will have visitor tracking, AI chat, and basic ticket support.

Impostazione
Checklist di avvio rapidoUna lista di controllo guidata configurazione che mostra widget install, la connessione della piattaforma, l'allenamento dell'IA, il team invita e go-live, con un 60 per cento barra di progresso.IniziaresetupInstallare il OpsIQ widgetDCollegare una piattaforma (WHMCS, Shopify...)DAllena la tua AI sui tuoi contenutiDInvita la tua squadraControlla e vai in direttaProgredienza di configurazione3 di 5 · 60%1STEP 1Installare il widget2STEP 2Collegamento e treno AI3STEP 3Invitare e andare in diretta
Il percorso 30-minute: installare il widget, collegare una piattaforma, formare la tua AI, invitare il team, quindi andare in diretta.

Il 30- installazione di minuti

1
Attiva la licenza

Entra nella chiave di licenza nell'amministratore OpsIQ. Vai a Impostazioni, inserisci la chiave di autorizzazione fornita per questa installazione e fai clic su Attiva.

2
Impostare la tua identità aziendale

Vai a Impostazioni e riempi il tuo nome aziendale, industria, fuso orario, valuta predefinita e ore di supporto. Queste informazioni vengono utilizzate dall'IA quando rispondi alle domande dei clienti e da analisi per report timezone-aware.

3
Scegli un fornitore di AI

Vai alla configurazione AI e seleziona il tuo provider. Opzioni: Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google), o Grok (xAI). Inserisci il tuo API chiave se si utilizza la propria chiave, o utilizzare l'IA gestita se disponibile sul piano.

4
Installare il widget di tracciamento

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
Collega la tua piattaforma

Se si utilizza Shopify, WooCommerce, WHMCS, o un'altra piattaforma supportata, vai a Connettori, trova la tua piattaforma, inserisci le credenziali e fai clic su Connessione Test.

6
Invita la tua squadra

Vai al Team, fai clic su Invite, inserisci la loro e-mail e il ruolo (Owner, Full Admin o Agent). Gli agenti possono accedere solo ai dipartimenti a cui li assegna.

Il percorso più veloce possibile (5 minuti)

Passo 1: Installare widget

Copia il frammenti dai Siti Collegati e incollalo sul tuo sito web, questo ti dà la possibilità di tracciare immediatamente.

Passo 2: Abilita AI

Vai alla configurazione dell'intelligenza artificiale, scegli un fornitore, inserisci la tua chiave e salva. La chat AI è ora attiva sul tuo sito web.

Fatto

Ora hai il monitoraggio dei visitatori e la chat AI. È possibile aggiungere i biglietti, CRM e connettori più tardi.

Giorno 2: Rendere utile

Aggiungi la conoscenza

Vai alla Knowledge Base e aggiungi 5-10 articoli sulle vostre domande più comuni. L'IA utilizza questi per rispondere ai clienti con precisione.

Creare dipartimenti

Vai ai biglietti e crea almeno i dipartimenti 2 (ad esempio, "Sales" e "Supporto").

Scrivi il tuo prompt AI

Vai all'AI Training e scrivi un prompt AI del cliente che descrive le tue regole di business, tono e escalation.

Prova una conversazione

Apri il tuo sito web in un browser privato e chatta con l'IA come cliente. Controlla che le risposte siano accurate e tono è giusto.

Settimana 1: Costruisci le tue operazioni

Collegare l'email

Impostare una casella di posta (Gmail, IMAP o un connettore del fornitore) in modo che le email dei clienti creino automaticamente i biglietti.

Impostare la rimodellatrice automatica

Abilitare il biglietto auto-ripararsi per i reparti sicuri. Impostare un ritardo 2-minuto in modo che gli esseri umani possano intervenire prima.

Analisi recensione

Controllare Dashboard ogni giorno. Guarda il conteggio dei visitatori, la velocità di rimbalzo, le pagine superiori e le vendite se il monitoraggio è collegato.

Avviare il CRM

Aprire AI CRM e lasciare contatti di importazione OpsIQ dalle piattaforme collegate.

Mese 1: Ottimizzazione

Recensione storia dell'AI

Controllare la storia dell'IA settimanale. Cerca risposte sbagliate, domande perse e opportunità di aggiungere conoscenza.

Aggiungere regole proattive

Crea una regola: se un visitatore è nella pagina dei prezzi per 60+ secondi, mostra un messaggio di chat che chiede se hanno bisogno di aiuto.

Costruire un connettore

Se si utilizza una piattaforma che non dispone di un connettore incorporato, utilizzare il Connettore Builder per crearne uno.

Impostare i webhooks

Collegare OpsIQ ai vostri strumenti interni utilizzando webhooks in uscita per i biglietti, chat e eventi di vendita.

Posso saltare l'IA e usare solo il monitoraggio?+

Sì. Il fornitore di AI è facoltativo. OpsIQ funziona come una piattaforma di analisi e ticketing pura senza AI. È possibile abilitare l'IA più tardi quando si è pronti.

Posso saltare i connettori e aggiungerli più tardi?+

Sì. I connettori arricchiscono l'IA con dati specifici per la piattaforma, ma OpsIQ funziona senza di loro. Iniziare con il monitoraggio e chat, quindi collegare le piattaforme quando necessario.

E se non avessi ancora un sito web?+

È ancora possibile utilizzare OpsIQ per i biglietti, CRM e collaborazione di squadra. Il widget di tracciamento è facoltativo.

Come faccio a sapere se il widget è installato correttamente?+

Visita il tuo sito web in un browser privato/incognito. OpsIQ Nutrire dal vivo. Si dovrebbe vedere la vostra visita appaiono all'interno 15 se non, controlla: (1) è il ceppo incollato correttamente, (2) è la chiave del sito corretta, (3) sono bloccanti pubblicitari o intestazioni CSP che bloccano lo script.

Inizia qui

Mappa completa del prodotto

OpsIQ non è una funzione. Si tratta di un amministratore operatore, un widget del sito web, uno strato di supporto AI, un sistema di ticket/helpdesk, un CRM completo con quattro agenti dell'AI, una suite di intelligenza del sito, una piattaforma di connessione con il mercato e una superficie dello sviluppatore.

Amministratore di operatore

Dashboard, live feed, registro visitatori, sessioni, riplay di sessione, pagine top, geo intelligenza, imbuto intento, log eventi, A/B esperimenti, JS errore tracking, vendite e conversioni, lead, AI CRM (comand center, contatti, aziende, offerte, forum pipeline, trading coaching, previsione, prospezione, sequenze, lifecycle, data steward, Costruire il mio CRM, CRM config, CMR salute, Crm, CSR API), biglietti, chat inbox, regole proattive, sondaggi CSAT, bozze di posta elettronica, caselle di posta, configurazione AI, formazione AI, storia dell'IA, approfondimenti della intelligenza, connettori, Connettore Builder, mercato, siti collegati, gestione del team, prestazioni del team e impostazioni, diagnostica e licenza.

Superfici di rivestimento del cliente

widget di tracciamento del sito (analytics beacon + chat + ticket incorporato + ricerca base della conoscenza), client AI chat, portale di presentazione dei biglietti, gestione dei gettoni dell'identità dei visitatori, caricamenti dei file, widget di indagine CSAT e centro di assistenza rivolto al cliente.

AI-Primo CRM

Centro di comando, contatti, aziende, offerte, bordo pipeline con drag-and-drop, AI accordo coaching (segnari di rischio, prossima migliore azione, probabilità di vittoria), previsione delle entrate, agente di prospezione (SDR), sequenze di follow-up automatizzate, gestione del ciclo di vita e della ritenzione, agente steward dei dati (dedup, arricchire, convalidare), Costruire il mio CRM (impostazione lingua naturale), Configurazione CRM, controllo CRM CRMC, Controllo sanitario CRM API con webhooks.

Suite di intelligenza del sito

Scambi di siti automatizzati, audit tecnico SEO (velocità, mobile, vitali web core, SSL, reindirizzamenti, dati strutturati), audit dei contenuti (conto delle parole, leggibilità, densità di parola chiave, struttura intestata), ricerca semantica potenziata dall'IA, tracciamento del grado SERP attraverso i motori, ricerca delle parole chiave con opportunità di punteggio, analisi e monitoraggio backlink, visualizzazione della griglia locale SEO, sincronizzazione di Google Business Profile (reviews, post, Q&A, foto, approfondimenti), report programmati (daily/weekly/al mese) e white-label PDF produzione per le agenzie.

AI e automazione

Customer AI chat (multi-provider: Claude, GPT-4o,Gemini, Grok), assistente di amministrazione dell'IA, messa a terra della conoscenza dell'intelligenza AI, auto-handoff con revert configurabile, configurazione per spazio di lavoro AI, AI gestito eBYOKmodalità, budget token e controlli dei costi, percorso di audit della storia dell'AI, analisi delle intuizioni dell'IA, triage del biglietto AI, auto-riparazione del biglietto con ritardo, scrittura dell'intelligenza artificiale (separato prompt), e copilota di posta elettronica di amministrazione.

Connettori e integrazioni

25+ connettori pre-costruiti (Shopify, WooCommerce, BigCommerce, Magento2, PrestaShop, OpenCart, osCommerce, WordPress, WHMCS, Zendesk, Stripe, Amazon SES, Postmark, Resend, SendGrid, Mailgun, Gmail, IMAP, Slack, Google Business Profile), Connettore Builder (no-code/AI-assisted/full-code), generico OAuth flusso con PKCE, mercato dei connettori con distribuzione a pagamento, firma del connettore e verifica, SmartLookup fuzzy matching, un ampio catalogo di definizioni d'azione HTTP la cui disponibilità dipende dall'installazione del connettore, dal abilitazione, dalla configurazione e dalla convalida, dalla sincronizzazione delle conoscenze e dalle ricette del flusso di lavoro.

Piattaforma di sviluppo

RESTAPI(visitori, eventi, biglietti, contatti, impostazioni, connettori), OpenAPI spec,API gestione delle chiavi, webhooks in uscita (asincrona, firmata, ritrattata, SSRF-guardato, autodisabili), EventiAPI per ingestione di eventi personalizzati, widget SDKcon risoluzione dell'identità, innesca il libro di cucina, contratti d'azione, connettore SDK, imballaggio di mercato, SDKs lato server (PHP, Node.js), WordPress plugin, e WHMCS modulo.

Impostazioni e operazioni

Identità aziendale, configurazione dell'IA per workspace, impostazioni di tracciamento, sicurezza (HSTS, Permissions-Policy, blocco IP, protezione da forza bruta), RBAC (proprietario / amministratore completo / agente), gestione del team e inviti, dashboard delle prestazioni del team, monitoraggio della presenza dell'amministratore, sistema di modelli di email (controllato dal registro, editor visivo, chip variabili), progettista di sondaggi, conoscenza del dominio, configurazioni di incorporamento dei ticket, branding, politiche di conservazione dei dati, gestione del ciclo di fatturazione (mensile a vita), normalizzazione valutaria, importazione/esportazione, diagnostica, automazione cron e zona pericolosa.

Sicurezza e conformità

Impresa SSO (OIDC con verifica JWKS, provisioning JIT), SAML configurazione, GDPR/DSAR gestione (esportare ed eliminare attraverso tutti i sistemi), cancellazione dei dati per contatto, gestione del consenso, isolamento dello spazio di lavoro (strict query-layer scoping), percorsi di audit, monitoraggio del login fallito, IP blocco, webhook outbound guardia SSRF e le politiche di conservazione dei dati.

Ponte del fornitore

IA gestita prossi attraverso OpsIQ fornitore URL, Chiamate del fornitore dell'Intelligence del sito, convalida della licenza, rapporti sanitari, PDF rendering, e le esportazioni di dati, tutti indirizzati attraverso il endpoint del fornitore configurato, non direttamente venditore API chiamate dal server.

Ogni pagina di amministrazione

Dashboard

Core

Centro di comando giornaliero: panoramica del traffico, conteggio dei visitatori dal vivo, sommario delle vendite, profondità della coda di supporto, avvisi sull'attività dell'IA e scorciatoie a rapida azione.

Alimentazione dal vivo

Analisi

Streaming di visitatori in tempo reale: le viste della pagina, la chat inizia, i sottoscritti dei moduli e i segnali intenti che aggiornano ogni pochi secondi con filtri paese, dispositivo e referrer.

Registro dei visitatori

Analisi

Registrazioni di visita completa: dispositivo, browser, OS, paese, città, referrer, param UTM, pagina di atterraggio, identità e cronologia della visualizzazione a pagina intera.

Sessioni

Analisi

Vista in gruppo: flusso di pagina, tempo a pagina, profondità del rotolo, percorso di conversione e pagina di uscita per ogni sessione dei visitatori.

Riproduzione della sessione

Analisi

Riproduzione timeline di eventi catturati: movimento del mouse, clic, pergamene, transizioni della pagina e interazioni forma per la diagnosi UX.

Pagine in alto

Analisi

Classifica delle prestazioni della pagina: visite, tempo di fidanzamento, tasso di rimbalzo, conversioni, interazioni di supporto e direzione di tendenza.

Geo intelligenza

Analisi

Report geografici: ripartizione paese/città con mappe, distribuzione dei dispositivi, condivisione del browser, fonti di traffico e penetrazione del mercato.

Imbuto intenzionale

Analisi

Monitoraggio degli intenti comportamentali: visite dei prezzi, frequenza di ritorno, navigazione del documento, interazioni di supporto e segnali personalizzati con probabilità di conversione.

Eventi

Analisi

Storia degli eventi ricercabili: pagine, eventi personalizzati, chat, acquisti, sottomissioni di moduli con metadati completi e filtraggio.

Esperimenti A/B

Analisi

Test divisi: creare varianti, allocare il traffico, definire gli obiettivi, misurare il significato e dichiarare i vincitori, tutti dall'interno OpsIQ.

Errori JS

Analisi

Acquisizione di errore Frontend: messaggi, tracce stack, browser interessati, frequenza, pagine interessate e monitoraggio della tendenza.

Vendite

Vendite

dashboard delle entrate: ordini, rinnovi, rimborsi, attribuzione per fonte, performance di campagna, confronto dei periodi e analisi della tendenza.

Piombo

Vendite

Gestione dei lead: punteggio, attribuzione sorgente, stato CRM, dettagli di contatto, segnali comportamentali e routing pipeline.

AICRM

CRM

CRM completo: centro di comando, contatti, aziende, offerte, forum pipeline, coaching, previsione, prospezione, sequenze, ciclo vitale, data steward e salute.

Biglietti

Supporto

Posta di supporto: reparti, priorità, tracciamento SLA, triage AI, auto-rippo, note interne, allegati file, fusione e gestione dello stato.

Posta in arrivo

Supporto

Conversazioni dal vivo: AI e chat umana, handoff, collaborazione, storia della conversazione, identità dei clienti e collezione CSAT.

Bozze email

Supporto

Gestione e-mail: posta in entrata per i biglietti, composizione risposta assistita da AI, selezione dei modelli e configurazione della casella di posta.

Configurazione AI

AI

Configurazione del provider: selezionare Claude/GPT-4o/Gemini/Grok, entra API chiave o abilitare AI gestito, impostare modello, temperatura e gettoni budget per spazio di lavoro.

Formazione AI

AI

Autorizzante prompt: richieste di assistenza clienti e di amministrazione, regole di scalamento, linee guida tono, argomenti vietati e configurazione dei confini.

Storia dell'intelligenza

AI

Controllo di conversazione: log completo della richiesta / risposta, utilizzo del token, costo per conversazione, fornitore, versione del modello e risultato della risoluzione.

Intuizioni dell'IA

AI

Analisi dei modelli: domande comuni, tassi di risoluzione, frequenza di consegna, soddisfazione per argomento e identificazione del gap formazione.

Base di conoscenza

AI

Contenuto di formazione AI: articoli, voci FAQ, documenti di prodotto, conoscenze dei connettori e voci personalizzate.

Connettori

Integrazioni

hub di integrazione: connettori installati, stato della salute, inventario delle azioni, gestione delle credenziali, browser del mercato e Connector Builder.

Siti collegati

Impostazioni

Gestione del sito: tracciamento snippet, chiave del sito, configurazione dei widget, impostazioni di dominio e isolamento dello spazio di lavoro per-sito.

Squadra

Impostazioni

Gestione utente: invitare i membri, assegnare ruoli (Owner/Full Admin/Agent), impostare l'accesso del reparto e gestire le autorizzazioni.

Performance del team

Impostazioni

Ops metrics: tempi di risoluzione, workload, conformità SLA, CSAT da agente, riaprire tariffe, ore più affollate e analisi della tendenza.

Impostazioni

Impostazioni

Configurazione: identità aziendale, configurazione AI, monitoraggio, sicurezza, branding, ritenzione, modelli di posta elettronica, fatturazione, importazione / esportazione, diagnostica e zona pericolo.

Licenza

Impostazioni

Gestione del piano: stato della licenza, caratteristiche di pianificazione, metriche di utilizzo, data di rinnovo e opzioni di aggiornamento/downgrade.

Inizia qui

Guidati a bordo

Il viaggio di bordo trasforma una nuova installazione in uno spazio di lavoro OpsIQ e può essere lasciato e ripreso senza perdere i progressi.

Schermo del prodotto
A bordoL'Onboarding mostra ogni area di configurazione, il suo stato attuale e l'azione successiva per completare.A bordospazio di lavoroPROGRESS60%COMPLETED6PROSSIMOWidgetLIVELLI DI LAVOROLicenzaConvalida la licenza del prodottoFattoFornitore di AISelezionare il fornitore e la chiave di provaFattoMarcaIdentità e tono di affariFattoSito webAggiungi il sito e installa widgetIl prossimo1COMPLETE BASICSLicenza, marca, AI2CONNECT DATASito e connettore3VERIFY LAUNCHTeam, email, assegni
L'Onboarding mostra ogni area di configurazione, il suo stato attuale e l'azione successiva per completare.

Sequenza raccomandata

  1. Licenza: convalidare la licenza e confermare che lo spazio di lavoro è attivo.
  2. Intenditore di intelligenza artificiale: scegliere il provider/modello, inserire le credenziali ed eseguire il test di connessione. L'IA può essere ignorata se lo spazio di lavoro inizialmente utilizzerà solo analisi e biglietti.
  3. Identità aziendale: impostare il nome, l'industria, la descrizione, i dettagli del tono e del marchio di cui si parla il widget e l'IA.
  4. Connettore: abilitare almeno una piattaforma esterna quando OpsIQ ha bisogno di ordini, clienti, biglietti, e-mail o altro contesto della piattaforma.
  5. Sito e widget: creare il sito/spazio di lavoro, copiare la chiave del sito e verificare una visita privata-browser in Live Feed.
  6. Squadra e routing: invitare amministratori/agenti, creare dipartimenti, impostare il routing e-mail e confermare le preferenze di notifica.
  7. Controlli di andata e ritorno: chat di prova, un biglietto, sincronizzazione del connettore, cron, e-mail in uscita, webhooks e intestazioni di sicurezza.

Il completamento dei negozi di viaggio per spazio di lavoro. Ritorno a bordo dovrebbe mostrare i passaggi completati piuttosto che forzare un riavvio.

Inizia qui

Interrompere la navigazione e le autorizzazioni

La barra laterale OpsIQ è un'opzione di autorizzazione, che spiega dove vive ogni area operativa e perché una pagina non possa essere visibile ad ogni amministratore.

Schermo del prodotto
OpsIQ navigazioneI gruppi sidebar OpsIQ per area di lavoro; i singoli link appaiono solo quando il ruolo attuale può utilizzarli.OpsIQ navigazionespazio di lavoroGROUPS8PAGAMENTOConcentrazione di autorizzazioniSEARCHDisponibileLIVELLI DI LAVOROSupportoBiglietti, email, CSAT, conoscenzaAprireCRMContatti, pipeline, offerte, prospezioneAprireAutomazioneFlussi di lavoro, regole, obiettiviAprireSicurezza e privacyPanoramica, audit, consenso, blocchiAmministrazioni1PICK A GROUPAbbina la barra laterale2CHECK ROLEI mezzi nascosti3USE PAGE HELPAprire la sezione corrispondente
I gruppi sidebar OpsIQ per area di lavoro; i singoli link appaiono solo quando il ruolo attuale può utilizzarli.
Supporto

Biglietti, la piattaforma di posta elettronica del team, CSAT, il Centro assistenza e i flussi chatbot.

CRM

Le superfici di vendita quotidiane: CRM Home, Centro Comando, contatti, pipeline, previsione, ciclo vitale, prospezione, segmenti, classificatore, approvazioni dei contratti, data steward, strumenti di crescita e il flusso di attività.

Automazione

Flussi di lavoro, regole del ciclo di vita e obiettivi di conversione.

Commercializzazione

Avvicinamento, messaggi proattivi, annunci, Studio Promozione, Studio di Sondaggio, campagne push e visite guidate.

Analisi

Prima di tutto: analisi Hub, approfondimenti AI, vendite, clienti, lead, imbuti, test A/B, riplay di sessione, dashboard personalizzati e report programmati - con il visitatore raw, sessione, pagina, geografia e log eventi in una sotto-sezione Raw Data.

Pagine standalone

Intelligenza del sito, Performance e Feedback di squadra siedono fuori dei gruppi come voci dirette.

Integrazioni

Connettori, azioni e trigger, caselle di posta, bozze, impostazioni e-mail, endpoint in entrata, webhooks in uscita e chiavi API.

Sicurezza e privacy

Panoramica della sicurezza, privacy e conformità, consenso dei cookie, attività di audit, login falliti, bloccatoIPseJavaScripterrori.

Impostazioni

Base di Workspace (generale, team, siti, lingue), poi sottosezioni pieghevole: AI Brain (istruzioni, configurazione, valutazione, storia), CRM Setup (builder, campi personalizzati, punteggio piombo, salute), Dati & Salute (diagnostica, esportazione) e Iniziare (a bordo, aiuto).

Le pagine che un ruolo non può aprire sono nascoste dalla barra laterale. Pagine il piano corrente non include rimanere visibile con un Aggiornamento tag e aprire una schermata di aggiornamento in-app.

I percorsi diretti sono ancora controllati sul lato server. La codifica di un link laterale non è il limite di sicurezza: ogni azione protetta deve passare i suoi controlli per il permesso e lo spazio di lavoro.

Analisi

hub di analisi

L'hub di Analytics porta supporto, chat, AI, visitatore e agente che segnalano in uno spazio lavorativo filtrato con risultati esportabili.

Schermo del prodotto
hub di analisiAnalytics Hub mostra un intervallo di date, schede metriche e schede per il supporto, chat, AI, Visitatore e prestazioni dell'agente.hub di analisispazio di lavoroTICCHIKES184AI RESOLVE63%CSAT4.7LIVELLI DI LAVOROSupportoCreato, chiuso, in attesa, SLASchedaChatRisultati AI/umani e tempo di gestioneSchedaAIConfidenza, feedback, utilizzo tokenSchedaAgenteVolume, velocità e soddisfazioneScheda1CHOOSE DATESPreimposta o personalizzato2CHANGE TABSupporto per agente3EXPORTScarica CSV
Analytics Hub mostra un intervallo di date, schede metriche e schede per il supporto, chat, AI, Visitatore e prestazioni dell'agente.

Filtri e controlli

  • Utilizzare una preimpostazione o un'usanza da/per gamma, quindi Rifiutare per ricostruire ogni carta e grafico per lo stesso periodo.
  • Esportazione CSV esporta la vista analitica attiva piuttosto che uno screenshot.
  • Lo scoping dello spazio di lavoro è automatico; il cambiamento dei siti cambia l'insieme dei dati sottostanti.

Quali misure ciascuna scheda

  • Supporto: Ticket creati/chiusi/in sospeso, prima risposta, risoluzione, risolvere al primo contatto, SLA e priorità/dipartimento/ripartizione dello stato.
  • Chat: sono iniziate sessioni, risoluzioni AI, escalation, abbandono, tempo di gestione, messaggi per sessione, e AI/human/all CSAT.
  • AI: fiducia media, bassa fiducia, accuratezza delle triage, feedback, deflettore della conoscenza, utilizzo token/cache e gli elementi che hanno bisogno di revisione.
  • Visitatore: andamento del traffico e dell'impegno per il periodo selezionato.
  • Agente: misure di carico, velocità, chiusura e soddisfazione per l'agente.

Usate l'Hub di analisi per la revisione cross-team; utilizzate le pagine dedicate ai visitatori, biglietti, CSAT, storia dell'intelligenza artificiale e performance del team quando avete bisogno di un'indagine a livello record.

Analisi

Il Dashboard

Il Dashboard è il vostro centro di comando giornaliero, che mostra traffico, vendite, carico di supporto, attività AI e indicatori di conversione in una sola vista.

Dashboard
Panoramica del cruscottoThe Overview screen led by an OpsIQ Intelligence AI panel (with Daily brief, Smart alerts, Forecast), KPI widget tiles and a seven-day traffic widget, plus a Reset layout control.Panoramicaspazio di lavoroOPSIQ INTELLIGENZAScegli un'analisi e OpsIQ lo scriveBrevetto giornalieroAvvisi intelligentiPrevisioniRipristinare il layoutVISITATORI2,481+12%REVENZIONE$8.2k+5%TICCHI143SLATraffico · ultimo 7 giorni1AI-FIRSTOpsIQ Pannello di intelligenza2WIDGETSpiastrelle KPI arrangiamento3A teRipristina il layout in qualsiasi momento
La schermata panoramica reale: il pannello di intelligenza OpsIQ (picca un'analisi e lo scrive) sopra i widget KPI che si organizzano.

Carte dashboard spiegate

Visitatori dal vivo

Il numero di persone sul tuo sito web al momento. Questo aggiorna ogni 15 un visitatore è "attivo" se ha caricato una pagina all'interno della soglia attiva (default: 90 secondi).

Visitatori unici

Quante persone diverse hanno visitato il tuo sito web nell'intervallo di date selezionato. OpsIQ identifica i visitatori con una combinazione di impronte digitali del browser, cookie e (se disponibili) identità autenticata.

Nuovo vs ritorno

I visitatori che hanno visitato il sito sono stati visti per la prima volta. Un alto rapporto di ritorno significa che i contenuti riportano le persone. Un rapporto di restituzione molto basso potrebbe significare che non si sta mantenendo interesse.

Tasso di rimbalzo

La percentuale di visitatori che hanno lasciato dopo aver visto una sola pagina. Una velocità di rimbalzo sopra 70% sulle pagine di atterraggio significa solitamente la pagina non è soddisfare le aspettative dei visitatori, il contenuto sbagliato, il carico lento o scarsa esperienza mobile.

Tempo medio a pagina

I tempi brevissimi (sotto 10 _secondi) sulle pagine dei contenuti suggeriscono che il contenuto non è coinvolgente.

Minacce bloccate

IPindirizzi che OpsIQ identificato come potenzialmente dannoso in base a minaccia di punteggio, brute tentativi di forza o blocchi manuali. IPs lista.

Vendite oggi / questa settimana / questo mese

Entrate da fonti di vendita collegate (Shopify, WooCommerce, Stripe, ecc.). Se le vendite mostrano zero, controlla che il connettore della piattaforma sia collegato e sincronizzato.

Grafico della tendenza

Cercare modelli: picchi di traffico (campagni, menzioni stampa), tuffi (weekends, vacanze) e tendenze sostenute.

Fonti principali

Dove i tuoi visitatori provengono da: diretto, Google, social media, campagne e-mail, siti di riferimento.

I migliori browser

Chrome, Safari, Firefox, Edge e altri. Se un browser ha insolitamente alto tasso di rimbalzo, si potrebbe avere una CSS o JavaScript problema di compatibilità.

Calore orario

Una griglia che mostra l'attività dei visitatori per ora di giorno e giorno della settimana. Utilizzare questo per decidere quando programmare i turni di supporto, quando inviare annunci, e quando eseguire le promozioni.

Visitatori recenti

Gli ultimi visitatori con paese, pagina, dispositivo e fonte. Utile per i controlli rapidi durante le campagne.

Utilizzo del filtro dell'intervallo di date

Fare clic sulla data picker in alto a destra del Dashboard. Preimpostazioni: Oggi, Ieri, Ultimo 7 giorni, Ultimi 30 Tutte le schede e i grafici del cruscotto si aggiornano quando si modifica l'intervallo. L'intervallo di date è nella zona temporale configurata (impostazioni).

Esempi di lavoro

Risultato tasso di indagine picco

Scenario:
Your bounce rate jumped from 45% to 78% this week. What happened?
Cosa fare:

Check:1) Ha cambiato una pagina di sbarco specifica? Vai a Pagine Top e ordina per tasso di rimbalzo. (2) Una campagna ha inviato il traffico alla pagina sbagliata? Controllare Top Sources per nuovi referrers. (3) Il sito si è rotto sul cellulare? Controllare la ripartizione del browser per il tasso di rimbalzo mobile. (4) È traffico bot? Controllare il contatore Threats e i dettagli dei visitatori per modelli sospetti.

Visitatori zero sul cruscotto

Scenario:
The dashboard shows 0 live visitors even though your website is getting traffic.
Cosa fare:

Check:1) Il widget di tracciamento è installato? Visualizza il codice sorgente del tuo sito web e cerca OpsIQ script. (2) La chiave del sito è corretta? Confrontare la chiave-sito-chiave nello script con la chiave in Siti Collegati. (3) È un CDN o una cache che serve una pagina stante senza lo script?4) È un blocco di annunci o intestazione CSP che blocca lo script? Controllare la console del browser per le richieste bloccate.

Leggere la mappa di calore oraria

Scenario:
Your heatmap shows heavy activity between 10am-2pm on weekdays but nothing on weekends.
Cosa fare:

Questo è un modello di traffico B2B. I visitatori sono professionisti del lavoro che navigano durante le ore di lavoro. Implicazioni: (1) Programmare il personale di supporto per le ore di lavoro della settimana. (2) Inviare campagne email martedì-martedì mattina. (3) Finestre di manutenzione del fine settimana sono sicure. (4) Considerare l'offerta live chat solo durante le ore di punta.

Piccole di traffico da fonte sconosciuta

Scenario:
You see a sudden spike of 500 visitors in one hour from an unknown referrer.
Cosa fare:

Vai ai Visitatori e filtra dalla finestra del tempo. Verifica: (1) Sono veri visitatori o bot? Guarda la durata della sessione, le pagine visualizzate e la diversità del browser.2) Se reale, su quale pagina stanno atterrando? (3) Controllare il referrer URL. Qualcuno potrebbe aver legato a voi da Reddit, Hacker News, o un blog popolare. (4) Se si tratta di traffico bot, controllare Minacce e considerare il blocco del IP gamma.

Perché il mio numero di visitatori differisce da Google Analytics?+

OpsIQ Conta i visitatori in modo diverso. Utilizza l'impronta digitale del browser e i cookie, mentre GA utilizza un modello di cookie diverso. Filtraggio Bot, tassi di blocco degli annunci e ordine di caricamento dello script possono anche causare differenze. 10-20% la varianza è normale.

Posso inserire il cruscotto in un altro strumento?+

Il cruscotto è progettato per OpsIQ admin. Per la segnalazione esterna, utilizzare il REST API per tirare i dati di analisi e visualizzarlo nel proprio cruscotto o strumento BI.

Cosa significa il contatore "scontro"?+

Conta. IP indirizzi che OpsIQ ha contrassegnato o bloccato in base al punteggio delle minacce, ai login falliti ripetuti o blocchi manuali.

Analisi

Registro dei visitatori

Ogni riga è un carico di una pagina da un visitatore. Utilizzare per indagare il comportamento dei visitatori, trovare il traffico delle campagne e diagnosticare i problemi di tracciamento.

Registro dei visitatori
Registro dei visitatoriUna tabella dei visitatori con una barra filtro (data, ricerca IP/email/città, sorgente, dispositivo) e colonne per IP/email, posizione, fonte, dispositivo e tempo, con una riga di minaccia flagged.Registro dei visitatoriyoursite.com7 giorniRicerca IP, e-mail, città...Fonte▾Dispositivo▾IP/ EMAILLOCAZIONEFONTEDIVICEDOGANA[email protected]Stati Uniti · New YorkgoogleDesktop241.62.10.4Regno Unito · LondradirectMobile6m[email protected]DE · Berlinoutm:adsMobile14m203.0.113.9NG · LagosreferralDesktopthreat1–25 di 3,402Sessione →1FILTERData · ricerca · fonte · dispositivo2REAL COLUMNSIP/email · posizione · dispositivo · minaccia3DRILL INAprire la sessione completa
Il vero Registro Visitatori: filtrare per data, ricerca e dispositivo, quindi leggere ogni visita da IP/email, posizione, fonte, dispositivo e tempo, minacce contrassegnate in rosso.

Che ogni riga mostra

IP

Il visitatore IP indirizzo. Anonimo se IP l'anonimizzazione è abilitata in Impostazioni. Clicca per vedere tutte le visite da questa IP.

Paese e città

Rilevato dalIP indirizzo utilizzando i dati GeoIP. Richiede il database MaxMind GeoLite2 o Cloudflare Mostra "Unknown" se GeoIP non è configurato.

Pagina URL

La pagina caricata dal visitatore. Clicca per vedere il pieno URL. Lungo URLs sono troncati nella vista della tabella.

Referrer

"Direct" significa nessun referrer (segnalibri, digitati URLs, alcuni link app).

Dispositivo e browser

Tipo di dispositivo del visitatore (desktop, mobile, tablet) e browser (Chrome, Safari, Firefox, ecc.). Parsed dall'intestazione User-Agent.

Data e ora

Quando la pagina è stata caricata, nel fuso orario configurato.

Identità del cliente

Se il visitatore viene identificato (tramite l'identità di token o login), appare il nome o la posta elettronica.

Filtri

Gamma di date

Filtra le visite a un determinato periodo di tempo. 7 giorni.

Ricerca

Ricerca per IP indirizzo, pagina URL, referrer, paese o email del cliente.

Fonte

Filtra per fonte di traffico: Diretto, Organico, Sociale, Referral, Paid, Email.

Dispositivo

Filtra per Desktop, Mobile o Tablet.

Solo

Mostra solo i visitatori di prima volta che non sono mai stati visti prima.

Esempi di lavoro

Trova i visitatori da una specifica campagna

Scenario:
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?
Cosa fare:

Nel registro visitatori, utilizzare il campo di ricerca e digitare "summer-sale".URLs e pagina URLs, così i parametri UTM si abbinano. È anche possibile filtrare da Fonte = Pagato per restringere ulteriormente.

Trova un cliente che ha segnalato un problema

Scenario:
A customer emailed saying "your checkout page was broken yesterday around 3pm." How do you find their session?
Cosa fare:

Se sono stati registrati, apparirà la loro identità. Impostare l'intervallo di date a ieri. Cerca le visite alle pagine di controllo intorno alle 3pm. Clicca sulla sessione per vedere il flusso di pagina completo e gli errori JavaScript.

Rileva un pinzetto o un raschietto

Scenario:
You notice an IP address has 500+ visits in one hour, all to the same page.
Cosa fare:

Questo è probabilmente un bot, raschietto o script rotto. Vai al Registro Visitatori e la ricerca da questo IP. Check: (1) Tutte le visite alla stessa pagina? (2) L'utente è un bot noto? (3) La durata della sessione è sempre 0 Se confermato come bot, vai alla Sicurezza e blocca il IP.

registro visitatori vs Sessions vs Live feed

Registro dei visitatori

Una riga per pagina visualizza. Meglio per: indagare pagine specifiche, trovare il traffico da fonti specifiche, diagnosticando problemi di tracciamento.

Sessioni

Una riga per sessione di visita. Il meglio per: comprensione del flusso dell'utente, durata della sessione di misura, identificazione dei percorsi di conversione.

Alimentazione dal vivo

Attività in tempo reale. Mostra i visitatori attualmente sul tuo sito. Il meglio per: campagne di monitoraggio in corso, avvistamento dei visitatori ad alto contenuto, guardando opportunità di supporto.

Perche' vedo le mie visite nel registro?+

OpsIQ Per escludere il proprio traffico, aggiungi le tue tracce IPindirizzo all'escluso IPs elenco in Impostazioni > Tracciamento.

Perché un visitatore mostra "Unknown" paese?+

GeoIP ricerca richiede o Cloudflare geo header (automatico se utilizzato Cloudflare) o un file di database MaxMind GeoLite2. Controllare Impostazioni > GeoIP Path per garantire che il file del database esista ed è leggibile.

Quanto tempo sono conservati i dati dei visitatori?+

I dati dei visitatori vengono conservati per il periodo di conservazione configurato in Impostazioni (default: 90 days). Dopodiché, i vecchi record vengono automaticamente ripuliti dal processo di ritenzione del cron.

Analisi

Sessioni

Se il registro visitatori mostra i carichi di pagine individuali, le sessioni mostrano come la gente si sposta attraverso il tuo sito dall'atterraggio all'uscita.

Sessioni
SessioniLa tabella di registro sessione con IP, paese, dispositivo, origine, durata e colonne delle pagine, e una riga di minaccia flagged.Sessioniyoursite.comPaese (NG)Log sessioneIP(S)PAESEDIVICEFONTEDURATAPAGAMENTO41.62.10.4Regno UnitoDesktopgoogle3 12s6102.89.6.2NGMobiledirect1 05s388.21.4.9DEDesktoputm:ads7m48s11203.0.113.9Stati UnitiMobilereferral0 42s21SESSION LOGViaggi di gruppo2COLUMNSPaese · dispositivo · fonte · durata3THREATSessioni di Risky contrassegnate
Il vero e proprio registro di sessione: ogni viaggio del visitatore come fila (IP, paese, dispositivo, fonte, durata e pagine) con sessioni rischiose contrassegnate in rosso.

Come funziona la sessione

Una sessione inizia quando un visitatore carica la prima pagina. Continua mentre naviga in più pagine. Una sessione termina quando il visitatore è inattivo per il periodo di timeout della sessione (default: 30 minutes) o chiude il browser. La stessa persona che ritorna dopo l'orario crea una nuova sessione.

Che ogni sessione mostra

Prima pagina

La pagina di atterraggio, dove il visitatore è entrato nel vostro sito. Questo vi dice che i contenuti sta attirando le persone.

Ultima pagina

Se la pagina di uscita è spesso la pagina dei prezzi, i visitatori potrebbero confrontarti con i concorrenti.

Conteggio della pagina

Quante pagine il visitatore ha visto in questa sessione. Più pagine di solito significa più impegno, ma può anche significare che il visitatore è perso.

Durata

Tempo totale dal carico della prima pagina all'ultima attività. Le sessioni con i secondi 0 sono rimbalzi (vista singola pagina, non ulteriore interazione).

Fonte

La fonte di traffico per questa sessione (Direttore, Google, sociale, referral, ecc.).

Paese

Detected country from the visitor's IP address.

Rimbalzo

Se il visitatore ha lasciato dopo aver visto una sola pagina. Le sessioni rimbalzate hanno un indicatore rosso.

Conversione

Se il visitatore ha completato un evento di conversione tracciato (acquisto, registrazione, presentazione del modulo) durante questa sessione.

Filtri

Ricerca

Ricerca per IP, email, pagina URL, o referrer all'interno di sessioni.

Tipo di

Filtra da nuovi visitatori (prima sessione mai) o visitatori di ritorno.

Fonte

Filtra per fonte di traffico.

Paese

Filtra per paese per vedere sessioni da una specifica regione.

Minacce/Bounced

Filtra per mostrare solo sessioni rimbalzate o sessioni contrassegnate come minacce.

Esempi di lavoro

Profilo di un cliente ad alto valore

Scenario:
A customer just made a large purchase. You want to understand their journey before buying.
Cosa fare:

Cerca la loro email in Sessioni. Guarda tutte le sessioni: (1) Quante volte hanno visitato prima dell'acquisto? (2) Quali pagine hanno visto? (3) Hanno usato chat o aprire un biglietto? (4) Qual è stato il tempo totale dalla prima visita all'acquisto? Questo vi dice il tipico viaggio di acquisto per clienti ad alto valore.

Rilevamento di login da una nuova posizione

Scenario:
A customer usually logs in from Nigeria but you see a session from Russia.
Cosa fare:

Se una sessione appare improvvisamente da un paese insolito, potrebbe essere un viaggio legittimo o un account compromesso.1) C'era un tentativo di login fallito prima del successo? (2) L'ho fatto IP se sospetto, lo bandi per la recensione.

Qual è la differenza tra una sessione e un visitatore?+

Un visitatore è una persona (o un browser). Una sessione è una visita da quella persona. Lo stesso visitatore può avere molte sessioni nel tempo. Le sessioni scadono dopo il periodo di timeout.

Come fa OpsIQ a identificare i visitatori che ritornano?+

OpsIQ utilizza una combinazione di cookie, impronte digitali del browser e token di identità autenticati. Se un visitatore cancella i propri cookies e non è connesso, apparirà come nuovo visitatore.

Analisi

Alimentazione dal vivo

Il Live Feed mostra i visitatori attualmente sul tuo sito web in tempo reale. Si aggiorna automaticamente ogni 15 secondi (configurabile). Utilizzalo durante campagne, lanci di prodotto e periodi di supporto impegnativi per vedere cosa sta accadendo ora.

Alimentazione dal vivo
Alimentazione dal vivoUn flusso di attività in tempo reale che mostra un conteggio live online-visitor e un feed delle recenti azioni dei visitatori per paese.Alimentazione dal vivoyoursite.com37visitatori online oraAttività dal vivoOraStati Uniti · visualizzazione /pricing2sRegno Unito · ha iniziato a chattare5sDE · aggiunto al carrello9sCA · acquisizione completata1RIGHT NOWVedere chi è in loco2AUTO-REFRESHAggiorna ogni 15s3ATTIVITÀSalta in una chat dal vivo
Vedere chi è sul tuo sito questo secondo e quello che stanno facendo, rinfrescando automaticamente ogni 15 secondi.

Come funziona

Ogni riga mostra un visitatore attualmente sul tuo sito: la pagina corrente, il paese, il dispositivo, la fonte, la durata della sessione e il numero di pagine.

Impostazioni

Intervallo di rifrazione

Quante volte gli aggiornamenti di feed dal vivo. 15 secondi. Valori più bassi (5-10s) fornire aggiornamenti più rapidi, ma utilizzare più risorse del server.30-60s) sono più facili sul server ma meno in tempo reale.

Soglia attiva

Quanto tempo un visitatore è considerato "attivo" dopo il loro carico di ultima pagina. 90 secondi. Se un visitatore carica una pagina e poi la legge per 2 minuti senza fare clic, scompaiono dal feed live dopo la soglia.

Pulsante di pausa

Clicca su Pause per interrompere la ri-rifresca automatica. Utile quando si desidera leggere i dettagli senza l'aggiornamento della lista.

Esempi di lavoro

Fare un hot lead durante una campagna

Scenario:
You are running a product launch. A visitor just viewed your homepage, then features, then pricing, and is now on the checkout page.
Cosa fare:

Questo è un comportamento ad alto contenuto. Nel Live Feed: (1) Fare clic sul visitatore per vedere la loro sessione. (2) Se iniziano una chat, l'IA avrà il loro contesto di viaggio completo. (3) Se lasciano senza comprare, diventano un vantaggio nella pagina dei Leads. (4) Considerare la creazione di una regola proattiva per mostrare un messaggio di chat quando i visitatori raggiungono il checkout.

Troppi visitatori della stessa IP

Scenario:
You see 20 visitors from the same IP address, all on different pages.
Cosa fare:

Questo potrebbe essere: (1) Un ufficio con internet condiviso. Verificare se le visite assomigliano a esseri umani reali (pagine diverse, durata di sessione ragionevoli).2) Un bot o un raschietto. Verifica se le sessioni sono molto brevi (0-1secondi) o colpire le pagine sistematicamente. (3) Un test di carico. Se si esegue test automatizzati, escludere IP dal tracciamento.

Perché il live feed show 0 visitatori quando il mio sito ha traffico?+

Check:1) Lo script widget è installato sul tuo sito? (2) La chiave del sito è corretta? (3) La soglia attiva è passata? (4) I visitatori che utilizzano blocchi pubblicitari aggressivi bloccano lo script di tracciamento?

Posso filtrare il feed live per paese o dispositivo?+

Per le viste filtrate, utilizzare le pagine del registro visitatori o delle sessioni con le opzioni di filtro. Il feed live è intenzionalmente semplice per il monitoraggio in tempo reale.

Analisi

Pagine in alto

Le pagine Top mostrano quali pagine del tuo sito web hanno il maggior numero di traffico, classifica le pagine tramite visite, impegno, conversioni e attività di supporto.

Pagine in alto
Pagine in altoUna lista classificata delle pagine più visitate con barre e conteggi di visita orizzontali.Pagine in altoyoursite.comPagine più visitate/pricing3,402/2,910/docs1,740/blog/seo-guide980/signup6401RANKEDPagine più visitate2SIGNALSVisite e conversioni3FINDPagine che guidano i biglietti
Le tue pagine classificate per traffico e impegno, in modo da poter individuare i contenuti e le pagine top che generano supporto.

Che ogni pagina mostra

Pagina URL

Il pieno URL Le pagine simili (per esempio, varianti di prodotto) sono raggruppate se il raggruppamento è abilitato.

Visite

Numero totale di volte questa pagina è stata caricata nell'intervallo di date selezionato.

Visitatori unici

Quante persone diverse hanno visto questa pagina (una persona che vede la stessa pagina due volte conta come 1 unico).

Tasso di rimbalzo

Percentuale di visitatori che hanno lasciato il sito dopo aver visto solo questa pagina. High rimbalzare sulle pagine di atterraggio = problema.

Tempo medio

Quanto tempo i visitatori spendono in media su questa pagina. Molto breve = non lettura. Molto lungo su una pagina di forma = confusione.

Avviare la chat

Quante conversazioni di chat sono state avviate da questa pagina. La chat alta inizia in una pagina del prodotto significa che la descrizione del prodotto potrebbe essere poco chiara.

Biglietti di supporto

Quanti biglietti di supporto sono stati creati dai visitatori che erano in questa pagina.

Esempi di lavoro

Trova pagine che supportano l'unità

Scenario:
Your support team keeps getting questions about shipping. Which page is failing?
Cosa fare:

Cercare pagine di prodotto o spedizione con alti conti. La pagina con le domande più supportate probabilmente ha informazioni poco chiare. Fissa il contenuto della pagina e controlla se le domande di supporto diminuiscono.

Trova pagine con alta velocità di uscita

Scenario:
You want to know where people leave your site most often.
Cosa fare:

Ignora le pagine che sono naturalmente punti di uscita (pagine di ringraziamento, pagine di conferma). Concentrati sulle pagine in grado di mantenere i visitatori coinvolti: pagine dei prodotti, prezzi, funzionalità.

Perché una pagina mostra 0 visualizzazioni anche se so che ottiene traffico?+

Check:1) Il widget di tracciamento è installato su quella pagina specifica? Le app di singola pagina potrebbero non sparare le viste della pagina sulle modifiche del percorso. (2) La pagina è esclusa nelle impostazioni di tracciamento? (3) È un CDN che serve una versione cache senza lo script di tracciamento?

Analisi

Geo intelligenza

Geo Intelligence mostra dove i visitatori provengono da paese, città, dispositivo e fonte. Utilizzare per capire i vostri mercati geografici, decidere sul supporto linguistico, pianificare il marketing regionale e rilevare modelli di traffico sospetti.

Geografica
Geo intelligenzaUna mappa di luoghi per i visitatori accanto a una classifica bar per paese.Geo intelligenzayoursite.comVisitatori per posizioneStati UnitiRegno UnitoDECANG1MARKETSPaese, città, dispositivo2PLANLingue e regioni3WATCHTraffico strano
Dove i vostri visitatori provengono da (per paese, città e dispositivo) a mercati di dimensioni e spot traffico insolito.

Cosa vedi

Grafico della barra dei paesi

I paesi più importanti classificati dal numero di visitatori. Fai clic su un paese per effettuare il trapano verso i dati a livello di città.

Ciambella di campagna

Ripartizione visiva del traffico per paese.

Tabella di campagna completa

Ogni paese con i visitatori nel periodo selezionato, mostrando il conteggio dei visitatori, il numero di sessione, la velocità di rimbalzo e il tasso di conversione.

- Esercizio della città

Fai clic su un paese per vedere quali città all'interno di quel paese hanno più visitatori.

Come funziona il rilevamento GeoIP

OpsIQ rileva la posizione dei visitatori in due modi: (1) Cloudflare geo headers. Se il tuo sito è dietro Cloudflare, il rilevamento del paese è automatico e preciso. (2) Database MaxMind GeoLite2. Scaricare il database gratuito e configurare il percorso in Impostazioni. Il rilevamento a livello di città richiede il database GeoLiti2-City, non solo il database Country.

Traffico VPN e 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.

Esempi di lavoro

Traffico di paese inaspettato

Scenario:
You run a US-only business but 30% of traffic is from India.
Cosa fare:

Check:1) Questi veri visitatori? Guarda la durata della sessione e le pagine visualizzate. Sessioni molto brevi con alto rimbalzo = probabili bot. (2) Ti trovano attraverso Google? Controlla il referrer. (3) Potrebbero essere potenziali clienti in un nuovo mercato? Se il traffico è genuino e impegnato, prendere in considerazione l'aggiunta di prezzi o contenuti specifici dell'India.

Decidere sul supporto linguistico

Scenario:
You want to know if you should translate your site into Spanish.
Cosa fare:

Se i paesi di lingua spagnola (Spagna, Messico, Colombia, Argentina, ecc.) insieme rappresentano più di 10% del vostro traffico con bassi tassi di rimbalzo, la traduzione vale la pena considerare.

Pianificazione dei turni di sostegno regionale

Scenario:
You need to decide support team hours for different time zones.
Cosa fare:

Use the hourly heatmap (on Dashboard) combined with Geo Intelligence. If 40% of your traffic is from Europe and 35% from the US, you need coverage for both time zones. The heatmap shows exactly when each region is most active.

Paese con visite ma senza ordini

Scenario:
Germany shows 500 visitors this month but zero sales.
Cosa fare:

Indagazione: (1) Stanno rimbalzando sulla pagina dei prezzi? Forse il vostro prezzo non è competitivo per quel mercato. (2) spedisci in Germania? Verifica se la tua pagina di spedizione menziona la Germania. (3) Il tuo checkout è disponibile in EUR? La cattiva valuta causa i controlli abbandonati. (4) Questi visitatori di un'unica fonte che potrebbe essere il traffico a basso contenuto?

Perché un visitatore mostra "Unknown" paese?+

GeoIP non è configurato. Impostare Cloudflare (che aggiunge automaticamente le intestazioni geo) o scaricare il database MaxMind GeoLite2 e impostare il percorso del file in Impostazioni > GeoIP Path.

Posso bloccare il traffico da paesi specifici?+

OpsIQ non blocca per paese. Utilizzare il server web o Cloudflare regole firewall per il blocco basato sul paese.OpsIQ si concentra sulla visibilità, non sul controllo dell'accesso a livello di rete.

Analisi

Imbuto intenzionale

Il Intent Funnel classifica le sessioni dei visitatori con ciò che sembrano provare a fare: navigare, ricercare, confrontare, acquistare, ottenere supporto o lasciare.

Imbuto intenzionale
Imbuto intenzionaleUn imbuto da Sfoglia a Ricerca per Confrontare con l'acquisto di conteggi, più supporto e lasciando chip.Imbuto intenzionaleyoursite.comSfoglia · 8,200Ricerca · 4,100Confronta · 1,650Acquisto · 520Supporto 6%Lasciare 11%1CLASSIFYCosa vogliono i visitatori2STAGESSfoglia per acquistare3FISSOTrova il drop-off
Sessioni classificate per intento (browse, ricerca, confrontare, comprare) in modo da poter vedere esattamente dove le persone cadono.

Categorie intenzionali

Navigatore

Visitatori casualmente guardando intorno. sessioni brevi, poche pagine, nessun obiettivo specifico rilevato.

Ricerca

Visitatori che leggono pagine di prodotto/caratteristiche, documenti o contenuti del blog. Tempo più lungo a pagina, pagine di contenuto multiple.

Comparazione

I visitatori che guardano i prezzi, il confronto dei piani o le tabelle delle caratteristiche.

Comprare

Visitatori su checkout, carrelli o pagine di registrazione. Alto intento: queste sono le tue opportunità di conversione.

Ricerca di supporto

I visitatori su pagine di aiuto, pagine di contatto o chat di partenza.

Bouing

I visitatori che hanno lasciato dopo una pagina.

Come leggere l'imbuto

Interpretare il vostro imbuto

Scenario:
1,000 visitors viewed Pricing. 270 opened chat. 92 started checkout. 64 paid. 18 opened support tickets.
Cosa fare:

La pagina dei prezzi è abbastanza forte da creare intenti. Chat è importante nel percorso di acquisto: 27% i biglietti di supporto dopo il checkout possono indicare l'attivazione o la confusione di pagamento. Azione: (1) Assicurare AI chat risponde domande di prezzi bene. (2) Investigare il 18 biglietti di supporto post-checkout per problemi comuni.

Filtri del tempo

Utilizzare il filtro della gamma di date per confrontare i modelli di intenti attraverso periodi. Ad esempio, confronta la settimana del Venerdì Nero a una settimana normale. Si dovrebbe vedere un picco in "Buying" intento e possibilmente "Support-seeking" se le vostre promozioni hanno creato confusione.

Come si fa a classificare l'intento OpsIQ?+

OpsIQ guarda la pagina URLs, comportamento di sessione e modelli di tempo. L'intento di confronto del segnale delle pagine di acquisto. Le pagine di controllo indicano l'intenzione di acquisto del segnale.

Posso personalizzare le categorie di intenti?+

Attualmente non è presente. Le categorie sono integrate in base a schemi di comportamento web comuni. La classificazione degli intenti personalizzati è sulla roadmap.

Analisi

Funi, ritenzione e percorsi

Costruisci viaggi personalizzati da pagina o passi evento, misura la ritenzione di coorte e scopri i percorsi che più spesso si intraprendono attraverso un sito.

Schermo del prodotto
ImbutiUn imbuto personalizzato visualizza ogni passaggio pagina/evento, i visitatori rimanenti e la percentuale di conversione.Imbutispazio di lavoroSTEPS4CONVERSION28.4%WINDOW72hLIVELLI DI LAVOROPrezzi visualizzati1,420 visitatori100%Pianifica selezionato780 visitatori54.9%Inizio del checkout530 visitatori37.3%Ordine completato403 visitatori28.4%1DEFINEScegli 2–8 passi2MISUREImpostare la finestra di conversione3MIGLIORAMENTOTrova la più grande goccia
Un imbuto personalizzato visualizza ogni passaggio pagina/evento, i visitatori rimanenti e la percentuale di conversione.

Imbuti

Creare un imbuto con nome 2 a 8 Impostare la finestra di conversione in ore; un visitatore conta solo quando i passaggi ordinati si verificano all'interno della finestra. Utilizzare la goccia tra le fasi per scegliere dove controllare ripetizioni, errori, velocità pagina o messaggistica.

Retenzione

I visitatori del gruppo di detenzione in coorte settimanali e mostra quanti ritorno. 6, 8 o 12 orizzonte della settimana. Mantenere la definizione di coorte stabile quando si confrontano i comunicati o le campagne.

Sentieri

Percorsi elenca le sequenze di pagina più comuni. Scegliere una lunghezza del percorso da 2 a 5 utilizzarlo per trovare deviazioni inaspettate, uscite comuni e contenuti che precedono più volte la conversione.

Imbuti personalizzati sono definizioni analitiche, non automazioni. Per reagire ad un passo completato, creare un obiettivo di conversione, segmento, trigger o flusso di lavoro.

Analisi

Riproduzione della sessione

Session Replay ti permette di guardare una linea temporale di ciò che un visitatore ha fatto sul tuo sito: quali elementi hanno cliccato, come sono scorretti, dove si sono invertiti e cosa hanno digitato (con campi sensibili mascherati).

Riproduzione della sessione
Riproduzione della sessioneUn giocatore di riproduzione che mostra una pagina viewport con un cursore, un pannello informazioni sessione e uno scrubber timeline.Riproduzione della sessioneyoursite.comAcquista oraSESSIONEDurata 3m 12s14 clicStati Uniti · DesktopChrome1241WATCHClic, scorrimento, tipo2MASKEDCampi sensibili nascosti3DIAGNOSEVerificare i report dei bug
Riproduci esattamente ciò che un visitatore ha fatto: clic, pergamene, digitando (campi sensibili mascherati), su uno scrubber timeline.

Trovare la sessione giusta

Dalla pagina Sessioni, cerca sessioni con problemi segnalati, l'alta pagina conta senza conversione o sessioni da parte di clienti che hanno archiviato i biglietti di supporto.

Quali sono gli spettacoli di replay

Tempo

Una barra orizzontale che mostra eventi nel tempo. Clicca ovunque sulla timeline per saltare a quel momento.

Pagina di navigazione

Ogni carico di pagina appare come un segmento sulla timeline. È possibile vedere il percorso esatto che il visitatore ha preso.

Cliccare

Fare clic sugli eventi vengono visualizzati come punti sulla timeline e come evidenzia nella ricostruzione della pagina.

Scorrelazione

La profondità dello scorrimento è tracciata in modo da poter vedere quanto lontano il visitatore legge.

Interazione del modulo

Gli eventi di messa a fuoco e digitazione del campo sono registrati. L'ingresso del testo in password e campi sensibili è mascherato per impostazione predefinita.

Privacy e mascheramento

Maschera di sessione campi di forma sensibili per impostazione predefinita. Campi di password, ingressi della carta di credito e campi contrassegnati con i dati-opsiq-maschera non viene mai registrato. È possibile configurare regole di mascheramento aggiuntive in Impostazioni > Tracking. Se la politica di conformità lo richiede, è possibile disattivare completamente il riplay.

Diagnosi di un checkout rotto

Scenario:
A customer says "I tried to buy but the button did nothing."
Cosa fare:

Trova la loro sessione nella pagina Sessioni (cerca per e-mail). Aprire la riproduzione. Guarda il segmento della pagina di checkout.1) Hanno fatto clic sul pulsante destro? (2) Ha fatto JavaScript si verificano errori? (Controlla la pagina degli errori JS per quel tempo.) (3) La pagina ha ricaricato o mostrato un messaggio di errore? (4) Era vuoto un campo richiesto? La riproduzione mostra esattamente ciò che è successo.

Quanto spazio di archiviazione utilizza la sessione?+

Utilizzare le impostazioni di ritenzione per pulire automaticamente i vecchi dati di riproduzione. Per i siti ad alto traffico, considerare un periodo di conservazione più breve (ad esempio, 30 giorni) per gestire lo storage.

I visitatori possono optare per la riproduzione?+

Se "Respect Do Not Track" è abilitato in Impostazioni, i visitatori con intestazioni DNT non sono registrati e possono anche escludere pagine specifiche da rigiocare nelle impostazioni di tracciamento.

Analisi

Eventi

Il Log Eventi mostra ogni evento che OpsIQ ha registrato: pagine viste, click, chat start, creazioni di biglietti, vendite e eventi personalizzati. Utilizzalo per debug integrazioni, verificare la consegna webhook e capire la sequenza delle azioni.

Eventi
EventiUn registro eventi cronologico con distintivi di tipo codificato a colori: pageview, chat, sale, webhook e personalizzato.Eventiyoursite.compageviewStati Uniti · /pricing12:04:01chat.startUK · widget aperto12:04:09vendita$49.00 · ordine 104212:05:22webhookpayment.succeeded12:05:23customdemo_booked12:06:101EVERYTHINGOgni evento registrato2DEBUGVerificare la consegna webhook3ORDERVedere la sequenza esatta
Una linea temporale di tutto OpsIQ record (visualizzazioni, chat, vendite, webhooks, eventi personalizzati) per il debugging e l'audit.

Eventi integrati (automatici)

pageview

Inclusi URL, titolo, referrer e timestamp.

chat.started

Avvertito quando un visitatore apre il widget di chat e invia il loro primo messaggio.

chat.message

Avvertito per ogni messaggio in una conversazione di chat (sia visitatori che AI/agent).

ticket.created

Avvertito quando viene creato un nuovo biglietto di supporto (da chat, email, widget o admin).

ticket.replied

Avvertito quando una risposta viene aggiunta a un biglietto.

order.completed

Avvertito quando un acquisto è completato attraverso una piattaforma collegata.

form.submitted

Avvertito quando viene presentato un modulo tracciato (se è abilitata la tracciatura del form).

identify

Fuochi quando un visitatore viene identificato tramite un token di identità.

sicurezza. login_failed

Avvertito quando un tentativo di login fallisce.

Eventi personalizzati

È possibile inviare eventi personalizzati dal tuo sito web o server a OpsIQ. Gli eventi personalizzati sono utili per le azioni di monitoraggio specifiche del vostro business: clic del pulsante, utilizzo delle funzionalità, video giochi, download, ecc

JavaScript · evento personalizzato dal browser
// Send a custom event from the browser
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "plan_selected", {
  plan: "pro",
  billing: "annual",
  value: 99
}]);
PHP · registrare un'attività di contatto dal server
// 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);

Filtra eventi

Tipo di evento

Filtra con nomi specifici degli eventi: pageview, chat. started, ticket. created, ecc

Gamma di date

Mostra eventi da un periodo di tempo specifico.

Ricerca

Cerca i dati degli eventi per parola chiave (URL, e-mail, valori di proprietà degli eventi).

Quanto tempo sono tenuti gli eventi?+

Gli eventi seguono la politica di conservazione impostata in Impostazioni. Predefinito: 90 giorni. Gli eventi ad alto valore (acquisti, eventi di sicurezza) possono essere configurati con una maggiore ritenzione.

Posso usare gli eventi in esperimenti A/B?+

Quando si crea un esperimento, si sceglie un evento di conversione. Qualsiasi evento integrato o personalizzato può essere utilizzato come obiettivo di conversione .

Analisi

Esperimenti A/B

Gli esperimenti consentono di testare due versioni di una pagina o di una funzione e misura che si esegue meglio. OpsIQ tracce impressioni, conversioni e significato statistico.

Esperimenti A/B
Esperimenti A/BDue carte varianti che confrontano i tassi di conversione, con un badge vincitore e un significato sulla variante principale.Esperimenti A/Byoursite.comVariante A4.2%conversione · 1,020 vista panoramicaVariante BINFORMAZIONI6.8%conversione · 1,005 vista panoramica+62% ascensore · 96% significativo1TESTDue varianti testa a testa2MISUREConversioni & significato3DECIDEDichiara un vincitore
Eseguire due varianti, guardare le conversioni e il significato statistico, e dichiarare il vincitore.

Come funzionano gli esperimenti

1
Creare un esperimento

Dagli un nome, definisci la tua metrica primaria (evento di conversione), e imposta le varianti (controllo e test).

2
Corri!

OpsIQ assegna casualmente ai visitatori le varianti e traccia il loro comportamento.

3
Leggi i risultati

Una volta raccolti dati sufficienti, controllare il livello di confidenza. 95% fiducia significa che si può essere _95% sicuri che la differenza sia reale e non casuale.

Statistiche di sperimentazione

Progetto

Creato ma non ancora iniziato. È possibile modificare le varianti e metriche.

Correre in esecuzione

Assegnare attivamente i visitatori alle varianti. Non modificare durante l'esecuzione.

Completato

Significato statistico raggiunto o è stato interrotto manualmente. I risultati sono finali.

Archiviato in:

I risultati sono stati esaminati e l'esperimento non è più necessario nell'elenco attivo.

Migliori pratiche

Definire la metrica prima del lancio

Decidi cosa stai misurando prima di iniziare. Scegliendo una metrica dopo aver visto i risultati introduce bias.

Escluso il traffico interno

Add your team's IP addresses to the exclusion list so staff visits do not skew results.

# Andatevene abbastanza a lungo #

Non interrompere un esperimento dopo i visitatori 100 _. Hai bisogno di centinaia o migliaia di visitatori per variante per risultati affidabili.

Prova un cambiamento alla volta

Se si cambia la titolo e il colore del pulsante, non saprai quale cambiamento ha causato il miglioramento.

Registra la tua decisione

Dopo la fine dell'esperimento, annota quale variante ha vinto e perché hai scelto di implementarlo.

Quanti visitatori mi servono per un esperimento valido?+

Dipende dal tasso di conversione della linea base e dalla dimensione dell'effetto che si desidera rilevare. 500 visitatori per variante per una 20% Per gli effetti più piccoli, avete bisogno di migliaia.

Posso eseguire più esperimenti contemporaneamente?+

Se due esperimenti influiscono sulla stessa pagina, i risultati possono interagire. È più sicuro eseguire esperimenti su diverse pagine o funzioni contemporaneamente.

Analisi

JavaScript errori

JavaScript Errori raccolgono errori lato client dai visitatori del tuo sito web. Un pulsante rotto, un errore API Chiamare, o una risorsa mancante si presenta qui. Usalo per trovare e correggere bug che interessano i clienti reali.

Errori JS
JavaScript erroriUn elenco di errori front-end catturati con punti di gravità, file sorgente, browser e conteggi di occorrenza.JavaScript erroriyoursite.comErrori recentiTipoError: non può leggere x di non definitocheckout.js:42· Chrome×214404 carico di carico /assets/app.cssindice · Safari×88Non cogliato (in promessa) NetworkErrorapi.js:17· Firefox×51Avvertenza di deprecazione: evento di scaricovendor. js · Edge×331CAPTUREErrori sul lato cliente2IMPACTContatori e browser3FISSOSquash veri bug
I visitatori reali che colpiscono la superficie del codice rotto qui (messaggio, fonte, browser e quanto spesso) in modo da poter risolvere ciò che conta.

Ciò che ogni errore mostra

Messaggio di errore

Il testo di errore JavaScript (ad esempio, "TipoError: Non è possibile leggere le proprietà di non definita").

Pagina URL

In quale pagina si è verificato l'errore.

Browser e dispositivo

Qualche errore è stato visto dal tipo di browser e dispositivo. Alcuni errori sono specifici per il browser.

Traccia di stack

La posizione del codice in cui si è verificato l'errore. Clicca per espandere la traccia completa stack.

Prima vista

Quando questo errore è apparso per la prima volta.

Ultimo accesso

Quando questo errore si è verificato più recentemente.

Conte

Quante volte questo errore è stato registrato.

Sessioni colpite

Quante sessioni di visitatori hanno sperimentato questo errore.

Prevenire errori

Non tutto JavaScript gli errori hanno bisogno di un'attenzione immediata.1) errori nelle pagine critiche (checkout, signup, login), (2) errori con conteggi di sessione elevati, (3) errori apparsi di recente (possibile regressione da un cambiamento del codice), (4) errori sul proprio codice (non script di terze parti).

Fissare un pulsante di spunta rotto

Scenario:
The JS Errors page shows "TypeError: Cannot read properties of undefined (reading submit)" on /checkout, affecting 45 sessions this week.
Cosa fare:

Questo significa 45 veri clienti non potrebbero completare il checkout. Passi: (1) Aprire la pagina nella stessa combinazione di browser/dispositivo. (2) Aprire la console del browser e riprodurre l'errore. (3) Controllare la traccia dello stack per trovare l'esatta linea di codice. (4) Fissare il bug, distribuire e monitorare il conteggio di errore che va a zero.

OpsIQ cattura errori da script di terze parti?+

Si'. OpsIQ cattura tutti JavaScript errori nella pagina, compresi gli errori da script di analisi, widget di chat e script pubblicitari. URL nella traccia stack per concentrarsi sul proprio codice.

Come escludo errori innocui conosciuti?+

Non è possibile sopprimere errori specifici OpsIQ, ma è possibile filtrare l'elenco per pagina URL o messaggio di errore. Fissare o ignorare gli errori dalle estensioni del browser (spesso mostrano come errori da fonti sconosciute).

Vendite

Vendite e conversioni

Il tracciamento delle vendite collega il vostro negozio o la piattaforma di fatturazione a OpsIQ Ogni acquisto viene attribuito ad un viaggio di visita, quindi conosci quali pagine, campagne e canali guidano le entrate.

Vendite
VenditeLa schermata di vendita: un fatturato totale con un controllo del periodo di tempo, una ricerca e una tabella degli acquisti recenti (data, cliente, piattaforma, importo, fonte).Venditeyoursite.comREVENZIONE$42,180+18%Tutto il tempo▾Cerca email, IP, ID ordine...Acquisti recentiDATICUSTOPIATTAFORMAAMOUFONTEJun3[email protected]Shopify$49googleJun3[email protected]WooCommerce$129directJun2[email protected]Stripe$480Annunci1REVENZIONEOrdini e rinnovi2RECENT PURCHASESData · cliente · importo3ATTRIBUTEDAlla fonte del traffico
La schermata di vendita reale, il fatturato in alto, poi gli acquisti recenti (data, cliente, piattaforma, importo), ciascuno attribuito alla sua fonte di traffico.

dashboard di vendita

Le vendite di oggi

Entrate dagli ordini completati oggi. Rifiuti con ogni nuovo evento di ordine dalla vostra piattaforma collegata.

Questa settimana / questo mese / totale

I ricavi sono aggregati nel periodo; i rimborsi vengono sottratti da questi totali.

Grafico della tendenza

grafo di linea che mostra il fatturato giornaliero sulla gamma data selezionata. Cercare picchi (promozioni, campagne) e tuffo (problemi, stagionali).

Principali fonti di conversione

Quali fonti di traffico portano al maggior numero di acquisti. "Diretto" acquirenti spesso segnalibro il tuo sito. "Google" compratori trovati attraverso la ricerca.

Acquisti recenti

Gli ultimi ordini con e-mail del cliente, importo, valuta e gli articoli acquistati.

Guide di configurazione della piattaforma

Shopify

Vai ai connettori >Shopify. Creare un'app personalizzata nella tua Shopify admin (Impostazioni > App e canali di vendita > Sviluppare applicazioni). Sconti: read_orders, read_customers, read. API accesso a gettone. In OpsIQ, inserire il dominio del tuo negozio (ad es. your-store.myshopify.com) e il token di accesso. Fare clic su connessione di prova. In caso di successo, abilitare la sincronizzazione webhook per le notifiche in tempo reale dell'ordine.

WooCommerce

Vai ai connettori >WooCommerce. Nel tuo WordPress admin, vai a WooCommerce> Impostazioni > Avanzate > REST API. Creare una chiave con il permesso di lettura / scrittura. Copia la chiave del consumatore e segreto dei consumatori. OpsIQ, inserisci il tuo sito URL, chiave di consumo e segreto del consumatore.

BigCommerce

Vai a Connettori > BigCommerce. Nel tuo amministratore di BigCommerce, vai su Impostazioni avanzate >API Conti. Creare un V2/V3 API Conto con campo di lettura per ordini, clienti e prodotti. Copia il token di accesso, ID client e API percorso. Inserirli OpsIQ e prova.

Magento2

Vai a Connettori > Magento. Nel tuo amministratore Magento, vai alle Integrazioni System > . Creare una nuova integrazione con API accesso alle risorse a Vendite, Clienti e Catalogo. Attivare l'integrazione e copiare il token di accesso. OpsIQ con la vostra base Magento URL.

Prestazioni

Vai a Connettori > PrestaShop. Nel tuo amministratore di PrestaSHop, vai su Advanced Parameters > Webservice. Abilita il servizio web e crea una nuova chiave. Concedi l'accesso agli ordini, ai clienti e ai prodotti. OpsIQ con il tuo negozio URL.

Aprire la finestra

Vai a Connettori > OpenCart. Generare API credenziali dal pannello di amministrazione OpenCart. Inserisci API URL, nome utente e chiave in OpsIQ. Il connettore utilizza il REST di OpenCart API per ordine e dati dei clienti.

osCommerce

Vai a Connettori > osCommerce. Configurare l'accesso del database o API le credenziali come documentate nelle impostazioni del connettore. L'integrazione di osCommerce richiede tipicamente l'accesso diretto al database o una personalizzato API modulo.

Stripe

Vai a Connettori > Stripe. Copia la striscia ristretta API chiave della Stripe Dashboard (sviluppi >API chiavi). La chiave ha bisogno di leggere l'accesso ai clienti, spese, fatture e abbonamenti. OpsIQ. Configurare webhook endpoint per eventi in tempo reale.

Personale / altre piattaforme

Utilizzare il REST API o webhooks per inviare eventi di vendita da qualsiasi piattaforma. Inviare ordine.completo eventi con e-mail del cliente, importo, valuta e articoli.API sezione per il formato payload.

Capire il vostro imbuto di vendita

Principali fonti di conversione

Mostra quali canali portano i clienti paganti. Se Google porta 1000 visitatori e 50 vendite, che è un5% tasso di conversione. Se e-mail porta 200 visitatori e 30 vendite, cioè 15%. L'email è più efficace per il visitatore.

Rimborsi

Gli ordini rimborsati vengono monitorati separatamente, riducono i totali delle entrate nette. Se le tariffe di rimborso sono elevate da una specifica fonte, il traffico potrebbe essere di bassa qualità.

Gestione della valuta

OpsIQ memorizza la valuta e l'importo delle transazioni originali. Le aziende multivaluta vedono i ricavi in ogni valuta.

Esempi di lavoro

100 visitatori, zero vendite

Scenario:
Your pricing page gets 100 visitors per day but zero conversions.
Cosa fare:

Indagazione: (1) Utilizzare Session Replay sui visitatori della pagina dei prezzi. Guarda come interagiscono con la tabella dei prezzi . (2) Controllare le Pagine Top per il tasso di rimbalzo della pagina dei prezzi e time-on-page. (3) Controllare le conversazioni Chat dai visitatori delle pagine dei prezzi. Quali domande fanno? (4) Confronta la tua pagina dei prezzi ai concorrenti. (5) Prova un esperimento A/B con diversi layout di prezzi.

Attribuzione di una campagna di marketing

Scenario:
You sent an email campaign with UTM tags. How do you measure its revenue impact?
Cosa fare:

Vai a Vendite e filtrare per fonte. Cerca il parametro UTM della campagna. Vedrai: (1) Quanti visitatori sono venuti dall'e-mail. (2) Quanti sono convertiti in vendite. (3) Totale delle entrate attribuite alla campagna. (4) Rispetto allo stesso periodo prima della campagna.

Perché le vendite mostrano zero anche se il mio negozio ha ordini?+

Check:1) Il connettore della piattaforma è collegato e sano? Vai ai connettori e controlla lo stato. (2) La sincronizzazione webhook è abilitata? Se si utilizza il polling, è in esecuzione il lavoro del cron? (3) Il connettore ha il diritto API per il Shopify Ti serve leggere_ordini.

Come si fa OpsIQ attribuire una vendita a un visitatore?+

Quando un ordine entra tramite il connettore, OpsIQ corrisponde all'e-mail del cliente a un visitatore noto. Se il visitatore è stato rintracciato prima dell'acquisto, la vendita viene attribuita al loro viaggio di visita, compresa la fonte di traffico, la pagina di atterraggio e la cronologia delle sessioni.

Posso aggiungere manualmente le vendite?+

È possibile inviare eventi di vendita tramite il REST API o webhooks da qualsiasi sistema. Il formato dell'evento è documentato negli Eventi API sezione.

Vendite

Piombo

I lead sono visitatori o clienti che mostrano l'intenzione di acquisto o supporto.OpsIQrileva automaticamente i lead in base al comportamento: le visite alla pagina dei prezzi, le visite di ritorno, le interazioni della chat, l'avvio del checkout e l'alto impegno.CRMConduttura.

Piombo
PiomboLa schermata Leads: una tabella ricercabile con IP/email, posizione, dispositivo, colonne sorgente e time-on-site, e top source e paese.Piomboyoursite.comRicerca IP, città, paese...Top source: google · Paese superiore: Stati UnitiIP/ EMAILLOCAZIONEDIVICEFONTETEMPO41.62.10.4Regno Unito · LondraMobilegoogle4 12s[email protected]Stati Uniti · New YorkDesktopdirect7m02s[email protected]DE · BerlinoMobileutm:ads5. 40s203.0.113.9CA · TorontoDesktopgoogle3 28s1DETECTEDVisitatori ad alto contenuto2TOPFonti di piombo e paesi3ENRICHEDIP, posizione, dispositivo, tempo
Il vero schermo Leads, visitatori ad alto contenuto come una tabella ricercabile (IP/email, posizione, dispositivo, fonte, tempo sul sito) con fonti e paesi principali.

Cosa rende una pista

Visite di pagina di prezzi

I visitatori che visualizzano la pagina dei prezzi o dei piani stanno attivamente considerando un acquisto.

Visite di ritorno

I visitatori che ritornano più volte sono impegnati ma non ancora convertiti.

Interazioni di chat

I visitatori che iniziano una chat sono attivamente alla ricerca di aiuto, pre-acquisto o post-acquisto.

Inizio checkout

I visitatori che raggiungono la pagina di checkout ma non completano l'acquisto.

Presentazioni del modulo

I visitatori che presentano un modulo di contatto, una richiesta demo o un modulo d'iscrizione.

Ingaggio di pagine elevate

I visitatori che vedono molte pagine con una lunga durata della sessione sono profondamente ricercati.

Pannello di dettaglio piombo

Fare clic su qualsiasi piombo per vedere il loro profilo completo:

Identità

Nome, e-mail, azienda se conosciuta. Anonimo porta mostra IP e la posizione.

Sessioni

Tutte le sessioni da questo piombo con flusso di pagina, durata e sorgente.

Pagine visualizzate

Ogni pagina che hanno visitato, ordinata per recienza.

Fonte

Come ti hanno trovato: organico, pagato, sociale, referral, diretto.

Punteggio di piombo

A0-100 punteggio basato sull'intensità del comportamento, la recenza e l'intento della pagina.

Stato di CRM

Se questo piombo è stato aggiunto al CRM come contatto o accordo.

Suggerimento vendite

Suggerimento generato dall'IA su cosa fare successivo (ad esempio, "Prezzi visitati 3 times · consideri l'eccessiva proattiva").

Tassello di piombo ad alto valore

Conduce con un punteggio superiore 80 ottenere un distintivo "High Value"; queste sono le tue prospettive più calde. Priorizzarli per l'accesso outreach, chat proattiva o CRM pipeline.

Esempi di lavoro

Lavorare un hot lead

Scenario:
A lead viewed your pricing page 3 times in 2 days, started a chat asking about enterprise plans, but has not purchased.
Cosa fare:

Questo è un piombo ad alto contenuto. Passos: (1) Controllare i loro dettagli principali per le informazioni aziendali e sul ruolo. (2) Verificare la trascrizione di chat per esigenze e obiezioni specifiche. (3) Creare un accordo nel CRM con le informazioni raccolte. (4) Assegnare un compito di follow-up per un membro del team di vendita. (5) Se ritornano alla pagina dei prezzi, la regola della chat proattiva può attivare un messaggio personalizzato.

La conversione di contatti anonimi porta a contatti CRM

Scenario:
You have 50 anonymous leads with high scores but no email addresses.
Cosa fare:

Opzioni:1) Creare una regola proattiva che offre uno sconto o un download di risorse in cambio di e-mail su pagine ad alto contenuto. (2) Utilizzare il widget di chat per chiedere e-mail quando i visitatori anonimi iniziano una conversazione. (3) Aggiungi un token di identità alle tue pagine di login/iscrizione in modo che i visitatori restituiti vengano identificati automaticamente.

Come viene calcolato il punteggio di piombo?+

Il punteggio considera: la recency delle visite (recent = più alto), la frequenza di visite (più = superiore), le pagine visualizzate (precing/checkout = maggiore), la durata della sessione (più lungo = più elevato), le interazioni con la chat (engaged = più alta) e le visite di ritorno (multiple sessioni = più alte).

Posso personalizzare le regole di punteggio al piombo?+

Sì. Nella configurazione CRM, è possibile aggiungere regole di lead-scoring che aumentano il punteggio in base a parole chiave specifiche, eventi, fonti o schemi pagina.

CRM

Il tuo CRM · iniziare qui

OpsIQ spedisce un AI-first CRM completo che cattura la verità del cliente, pulisce i dati, segna le parti, gli allenatori si occupano di affari, previsioni entrate e atti, con l'intelligenza del sito web, supporto, biglietti, prodotti e pagamenti come un grafico live.

AICRM
Panoramica AI CRMUn Trust Dial impostato su Copilot accanto a quattro carte di agente AI: Steward, Prospector, Retention e Analyst.AICRMspazio di lavoroFiducia di quadranteManualeCopilotaPilota automaticoQuanto l'IA fa da soloDSStewardDedupe, arricchire,convalidare i datiDSPProspettoreTrova e punteggionuove impreseRTRetenzioneSpot churn,rinnovi di guidaANNOAnalistaPrevisionispiega i numeri1AI-FIRSTQuattro agenti specializzati2YOU DECIDEAutonomia del Trust Dial3TRUSTEDFonte e reversibile
Un AI-first CRM gestito da quattro agenti specializzati, e un Trust Dial che decide quanto fanno per conto proprio.

Panoramica delle pagine CRM

AI CRM (Centro di gestione)

Inizia qui

La schermata iniziale quotidiana: impulso di entrate, quello che l'IA ha trovato, ciò che ha fatto, coda di approvazione, prossime mosse, salute agente e ROI.

Contatti

Core

Persone e aziende del CRM. Ricerca, filtrare, segnare e gestire i profili.

Pipeline

Core

Scheda di affari visiva con le fasi drag-and-drop, la probabilità di vittoria e l'allenatore AI.

Previsioni e relazioni

Core

Previsione di livello del consiglio: impegnati, probabilmente, il miglior caso, con intervalli di fiducia e monitoraggio della precisione.

Il ciclo di vita

Core

Dove ogni cliente si trova: attivo, a rischio, espansione pronta, rinnovo dovuto o churning.

Costruisci il mio CRM

Configurazione

Descrivi la tua configurazione CRM in inglese normale. OpsIQ genera un piano reversibile e lo applica all'approvazione.

CRM Salute

Ops

Pagina di autocontrollo: schema, agenti, percorsi, azioni AI e conteggi dati dal vivo.

Come OpsIQ ti tiene al sicuro

Chiedi prima di agire

Le proposte dell'IA vanno alla coda di approvazione. Approvi, ridichi o rifiuti ciascuno.

Non sovrascrivi mai

Quando l'IA suggerisce un cambiamento, mostra il valore attuale e il valore proposto.

Tutto è reversibile

Ogni azione AI viene registrata nel diario, è possibile annullare qualsiasi cambiamento con un clic.

Spiegabile

Ogni raccomandazione dell'IA mostra il suo ragionamento e le fonti di dati che ha usato.

Nuovissimo? Inizia qui

1
Aprire AI CRM

Fare clic su AI CRM nella navigazione a sinistra. Il Centro di comando mostra il tuo stato attuale.

2
Controllare la salute CRM

Aprire la CRM Salute per verificare lo schema, gli agenti e le rotte sono pronti.

3
Importa contatti

Se un connettore è attivo (Shopify, WHMCS, ecc.), i contatti vengono importati automaticamente. CSV o creare manualmente.

4
Creare un canale

Vai a Pipeline e crea il tuo primo conduttivo con le fasi (ad esempio, Lead, Qualified, Proposta, Negoziazione, Won, Lost).

5
Aggiungi il tuo primo accordo

Crea un accordo da un contatto, imposta la quantità e il palco, e lasciare che il Deal Coach guida.

Devo usare il CRM?+

No. Il CRM è opzionale. OpsIQ funziona perfettamente come un monitoraggio + supporto + piattaforma AI senza il CRM. Abilita quando sei pronto a gestire le vendite e i rapporti con i clienti.

Il CRM può funzionare senza connettori?+

Sì. È possibile creare contatti e offerte manualmente. I connettori arricchiscono il CRM con i dati della piattaforma (ordini, abbonamenti, biglietti) ma non sono necessari.

Qual è il livello di fiducia?+

Il Trust Layer è il sistema di sicurezza che controlla ciò che l'IA può fare. Modalità Copilot (default): AI propone, approva l'uomo. Modalità pilota automatico (opt-in): l'intelligenza artificiale agisce automaticamente su operazioni a basso rischio e reversibili.

CRM

La schermata iniziale di AI CRM

Il Centro Comando è il vostro briefing quotidiano. Aprilo ogni mattina per vedere cosa è successo, che ha bisogno di attenzione e cosa fare dopo.

Centro di comando
CRM Centro di comandoLa casa CRM con le impostazioni di previsione/Win-rate/Pipeline, un KPI preeletto e una coda di proposta AI con Approve e Dismiss su ogni riga.CRM Centro di comandospazio di lavoroPrevisioniTasso di vincitaPipelineFORCEAST · QUESTO Q$74k87%AI proposte · approvare la codaCreare un accordo · Acme $24kda una chat con l'acquirenteApprovoOggettoSpostare Nimbus → Propostarisposta positiva rilevataApprovoOggettoRegistra attività · segui il picconessuna attività in 7 giorniApprovoOggetto1TOGGLEPrevisioni · tasso di vincita · Pipeline2AI PROPOSESAccordi, fasi, compiti3YOU DECIDEApprovazione o licenziamento
Il vero Command Center: passare tra la previsione, il tasso di vincita e Pipeline, e lavorare la coda proposta AI, approvare o respingere le offerte, i movimenti del palco e le attività che suggerisce.

Cosa mostra il Centro Comando

I numeri di oggi

Valore Pipeline, offerte vinte / perduta, nuovi lead, offerte attive e trend di ricavi, una snapshot del vostro stato attuale.

Cosa? OpsIQ trovato

Intuizioni scoperte dall'IA: offerte in bancarella, conti a rischio, nuove opportunità, problemi di qualità dei dati e segnali di mercato.

Cosa? OpsIQ l'ha fatto

Azioni che l'IA ha preso (in Autopilot) o proposto (in Copilot): progressi di fase, aggiornamenti punteggio, arricchimento dei contatti e creazione delle attività.

Necessità di approvazione

Le proposte AI in attesa della vostra decisione, ognuna mostra l'azione proposta, il ragionamento e le prove.

Prossimo movimento

Elenco classificato AI della 10 cose più importanti da fare oggi: seguire su un affare caldo, controllare un conto a rischio, la ricerca di una nuova pista, ecc.

Stato di aiuto

Salute degli agenti dell'IA: Cattura, Data Steward, Deal Intelligence, Deal Coach, SDR, Retention. Green = in esecuzione, ambra = ha bisogno di attenzione, rosso = errore.

Risultati

Monitoraggio ROI: offerte influenzate dall'IA, tempo salvato, precisione delle previsioni e confronto al lavoro manuale CRM.

Flusso di lavoro per l'informatizzazione del mattino

1
Leggi i numeri di oggi

Controllare la salute delle tubazioni e il trend di ricavi. Sei in pista questo mese?

2
Cancellare la coda di approvazione

Verificare ogni proposta AI. Approva azioni sicure, modificare dove necessario, rifiutare i suggerimenti cattivi.

3
Controllare cosa OpsIQ trovato

Leggi le informazioni sull'intelligenza artificiale. Ci sono offerte a rischio?

4
Lavorare la lista delle mosse successiva

Inizia con la massima priorità. L'IA ha classificato questi per urgenza e impatto potenziale.

Prendere dopo il tempo libero

Scenario:
You were away for a week. What happened while you were gone?
Cosa fare:

Aprire il Centro di Comando e controllare: (1) "Cosa"OpsIQ ha fatto" mostra tutte le azioni AI durante la vostra assenza. (2) "Needs approvazione" mostra proposte in attesa della vostra recensione. (3) "Cosa"OpsIQ trovato" mette in evidenza gli elementi urgenti. (4) Impostare l'intervallo di date del cruscotto al periodo di assenza per vedere la tendenza.

CRM

Contatti, aziende e offerte

Il CRM organizza le relazioni commerciali in quattro oggetti: Contatti (persone), Aziende (organizzazioni), Offerte (opportunità di guadagno) e Compiti (azioni successive).

Oggetti CRM
Oggetti CRMUn record di contatto collegato agli oggetti Azienda, Deal e Task in un grafico connesso.Oggetti CRMspazio di lavoroContattopersona · e-mail · telefonoSocietàaccountsAffare fattoopportunità di guadagnoCompitiazione di follow-up1OBJECTSContatti, aziende, offerte2LINKEDUn grafico collegato3TASKSSeguito allegata
Quattro oggetti di base (contatti, aziende, offerte e attività) collegati in un unico grafico cliente collegato.

Contatti

Che cosa è un contatto

Una persona nel CRM. Potrebbero essere un cliente, una prospettiva, un partner o un lead. I contatti hanno un email, nome, società, tag, fase del ciclo di vita e punteggio di hotness.

Trovare contatti

Utilizzare i filtri: fase del ciclo di vita, punteggio principale, fonte, paese, ultima data di attività, proprietario assegnato.

Profilo di contatto

Fai clic su un contatto per vedere il loro profilo completo: informazioni personali, società, offerte, attività, biglietti, chat, visite al sito web, punteggio di piombo e intuizioni AI.

Punteggio di calore

A0-100 punteggio calcolato da segnali di comportamento: visite al sito web, impegno e-mail, interazioni chat, cronologia dell'acquisto e recency.

Aziende

... più biglietti...
Collegamento di contatto-azienda

I contatti sono collegati alle aziende tramite dominio e-mail o assegnazione manuale. Una società può avere molti contatti.

Offerte

Che cosa è un affare

Le offerte hanno un titolo, importo, pipeline, stadio, probabilità di vincita, data di chiusura, proprietario assegnato e contatti/azienda associati.

Vincere la probabilità

Impostare manualmente o calcolata dall'IA in base ai dati storici di vincita.

Salute

Verde (sano), ambra (a rischio), o rosso (rischiato). Basato su recency di attività, durata della fase e segnali di fidanzamento.

Compiti

Che cosa è un compito

Le attività hanno un titolo, data di scadenza, priorità, tipo (call, email, meeting, altro), e contatto/deal collegato.

Attività generate dall'IA

L'IA crea automaticamente i compiti quando rileva qualcosa ha bisogno di attenzione: seguire un accordo bloccato, rispondere a un account a rischio, ricercare un nuovo vantaggio.

Trovare i cavi caldi

Scenario:
You want to see all high-score contacts in the UK who have not been contacted recently.
Cosa fare:

Vai a Contatti. Filtro da: punteggio di piombo > 80, Paese = Regno Unito, Ultima attività > 7 giorni fa. Ordina per punteggio di piombo che scende, questi sono i tuoi più caldi trascurati lead, priorità outreach.

Creare un accordo da un contatto

Scenario:
A contact just expressed interest in your enterprise plan during a chat.
Cosa fare:

Apri il profilo di contatto. Fai clic su "Crea accordo". Inserisci il titolo dell'offerta (ad esempio, "Acme Corp - Enterprise Plan"), quantità, pipeline e stadio (ad es. "Qualified"). Imposta la data vicina e assegnala a te stesso. L'Incaricato del Deal inizierà a tracciare questa opportunità.

CRM

Il gasdotto (il vostro consiglio di amministrazione)

La Pipeline è una scheda visiva dove le offerte si muovono attraverso fasi da sinistra a destra. Trascinare e rilasciare carte per avanzare offerte. Ogni carta mostra la quantità di affare, vincere probabilità e stato di salute.

Pipeline
Condotto CRMLo schermo con canali aperti, valore aperto, datato ponderato e statistiche di distribuzione attribuita, un pulsante Nuova-deal, una coda dell'Approva AI e la scheda Lead/Qualified/Won.Pipelinespazio di lavoroOfferte aperte23Valore aperto128 dollariPrevisioni ponderate$74kOfferte attribuite12+ Nuovo affareApprofondisci la coda2 per la revisioneLEADERVolt Inc- Si'.Luce- Che cosa?QUALIFILIFICATONimbus- 30.Picco- Che cosa?WONOrbita- No.1LIVE STATSValore aperto e previsioni ponderate2AI QUEUEApprofondimento delle offerte proposte3BOARDDrag offerte per fase
Lo schermo reale delle tubazioni: statistiche dal vivo (valore aperto, previsioni ponderate), una coda di Approvo AI per le offerte proposte e la scheda drag-and-drop.

Utilizzo della scheda di tubazione

1
Visualizza le tue offerte

Il gasdotto mostra tutte le offerte attive come carte disposte in colonne (staggi). Ogni intestazione della colonna mostra il valore totale delle offerte in quella fase.

2
Trascinare per avanzare

Se la mossa non riesce (errore di valutazione), la scheda si ricollega alla sua posizione originale.

3
Controllare i badge della carta

Tasse verde = sano (attività di recente, in pista). Amber = a rischio (sbagliamento, ha bisogno di attenzione). Rosso = bloccato (nessuna attività per troppo tempo).

4
Clicca per i dettagli

Fare clic su una carta per aprire il pannello dettagli affare con contatti, attività, Deal Coach breve e azioni rapide.

La coda di approvazione

Le proposte dell'IA appaiono nella coda di approvazione in cima alla pagina delle tubazioni. Ogni proposta mostra ciò che l'AI vuole fare, perché e le prove.

Approvo

Accettare la proposta come-is. L'azione passa attraverso il livello di fiducia e viene registrato nel giornale.

Modifica

Modificare la proposta prima di approvare. Ad esempio, modificare la fase suggerita o regolare l'importo.

Rifiuti

La AI impara dai rifiuti per dare migliori suggerimenti in futuro.

Vincere probabilità spiegato

Quando l'intelligenza artificiale lo calcola, utilizza un modello addestrato sulle proprie offerte chiuse (basso e perso). Se non hai abbastanza dati storici, l'IA usa la probabilità di default del palco. La probabilità guida le previsioni ponderate: una $10,000 accordo 30% la probabilità contribuisce $3,000 alla previsione "similmente".

Trasferire un accordo a Won

Scenario:
A customer signed the contract and paid.
Cosa fare:

Trascinare la scheda di contratto nella fase "Won". OpsIQ (1) Contrassegnare l'affare come "chiuso".2) Aggiornare le previsioni. (3) Aggiungi un'attività "Won" alla timeline. (4) Se configurato, attivare un evento webhook (crm.deal.won).5) Aggiornare la fase del ciclo di vita di contatto a "Customer".

Scogliera offerte bloccate

Scenario:
You want to find deals that have been in the same stage for too long.
Cosa fare:

Cercare badge rossi (rimossa) sulla scheda pipeline. Queste offerte non hanno avuto attività per più tempo della soglia di rotazione configurata (impostata nella configurazione CRM > Pipelines). Fare clic su ogni affare bloccato per vedere la raccomandazione del Deal Coach per la riattivazione.

Posso avere più tubazioni?+

Si. Vai alla configurazione CRM > Pipeline per creare ulteriori pipeline. Casi di utilizzo comuni: condotte separate per nuove attività vs rinnovo, o per diversi prodotti / servizi.

Cosa succede quando trascino un accordo per "Lost"?+

L'accordo è contrassegnato come chiuso-perso. Vi verrà chiesto una ragione di perdita. L'affare viene rimosso dalla scheda attiva, ma può essere trovato nel filtro offerte chiuso. Il contatto rimane nella CRM.

CRM

Insegnare a fare il coaching

Il Deal Coach analizza ogni affare e ti dà una breve con stato di salute, segnali di rischio, persone chiave, una lista di controllo delle qualifiche, prep riunione e ha suggerito le prossime azioni. Tutto è fonte. L'allenatore mostra da quale biglietto, chat o attività ogni rivendicazione viene.

In autobus
In autobusUna carta di accordo che elenca i segnali di rischio con fonti di prova, accanto a una raccomandazione AI e un pulsante di posta elettronica.In autobusspazio di lavoroCorpa d'Acme · $24,000Fase: Proposta · 60% winSEGNI RISCHINessuna risposta in 10 giorniIl campione è andato tranquilloCompetitor citato in chatFonti: biglietto #482 · chat 6/12 · thread di e-mailAI raccomandaRiattivare l'economiaacquirente con un ROI ricapitolae un piano di chiusura 7-day.Elaborare l'e-mail1SIGNALSPerché un accordo può scivolare2SOURCEDOgni pretesa cita prove3AZIONEUn clic passo successivo
Il coach bandiere perché un accordo potrebbe scivolare (ogni segnale cita la sua fonte) e ti consegna la prossima mossa da prendere.

Cosa ti dice l'allenatore

Spiegazione della salute

Segnali specifici: giorni in fase, ultima data di contatto, frequenza di attività, citazioni dei concorrenti, schemi di opposizione.

Segnali

Categorized in: obiezioni sollevate, cita il concorrente, discussioni sui prezzi, indicatori di rischio di supporto, segnali di rinnovo/espansione.

Mappa del campione e del blocco

Chi sta aiutando l'accordo (campione) e chi resiste (bloccante), sulla base di analisi dell'interazione e ruoli di contatto.

Elenco di controllo delle qualifiche

Elenco di controllo MEDDICC o BANT (configurabile) che mostra quali criteri di qualificazione sono soddisfatti e che mancano.

Prepazione di riunione

Prima di una riunione programmata, l'allenatore genera un breve: agenda, punti chiave da coprire, domande da porre, rischi per affrontare e materiali da preparare.

Rispondi e call plan

Suggerito il prossimo messaggio o lo script di chiamata in base allo stato attuale dell'affare e alle interazioni recenti.

Prove timeline

Ogni richiesta che il coach fa collegamenti a una fonte: un numero di biglietto, un documento di chat trascrizione, la data di attività o la visita del sito.

Come utilizzare il coach

1
Leggi il brief

Apri qualsiasi accordo e scorrere nella sezione Deal Coach. Leggi lo stato di salute e i segnali chiave.

2
Chiudere le lacune di qualificazione

Se manca "Economic Buyer", programma di identificare e coinvolgere il titolare del bilancio.

3
Atto sui suggerimenti

Clicca per creare un'attività, redigere una e-mail o pianificare un incontro, tutto instradato attraverso la coda di approvazione.

Prepararsi per un grande incontro

Scenario:
You have a meeting with a prospect tomorrow about a $50,000 deal.
Cosa fare:

Aprire l'affare e leggere la sezione Prep Meeting. Mostra: (1) Punti chiave di conversazione basati sulle interazioni recenti. (2) Obiezioni che hanno sollevato in chat la settimana scorsa. (3) Competitore citato in un biglietto di supporto. (4) Domande da porre sulla loro linea temporale. (5) Fattori di rischio per affrontare in modo proattivo. Utilizzare questo breve per preparare un'agenda focalizzata e basata sulle prove.

Capire perché un accordo è a rischio

Scenario:
The pipeline shows a red badge on a deal you thought was going well.
Cosa fare:

Fare clic sull'affare e leggere la spiegazione sanitaria Deal Coach. Si potrebbe dire: "Questo accordo è stato in fase di Proposta per 22 giorni (sentire: 14). Ultimo contatto è stato 11 giorni fa, il contatto principale ha aperto un biglietto di supporto per le preoccupazioni sulla migrazione dei dati 5 giorni fa (ticket #T-892). Suggerimento: affrontare la preoccupazione della migrazione e pianificare una chiamata di follow-up." Ora sapete esattamente cosa risolvere.

CRM

Previsioni e relazioni

Previsione di livello del consiglio con una gamma defensibile, spiegazioni dei cambiamenti a livello degli accordi e monitoraggio della precisione in modo da poter dimostrare e spiegare i vostri numeri.

Previsioni
PrevisioniUn numero di previsione trimestrale con bande Commit, Best-case e Pipeline e una nota di accuratezza.Previsionispazio di lavoroFORCEAST · Questo QUARTER312k87% per il golImpegnoMiglior casoPipelineAI-peso da affare salute e storia · accuratezza tracciata nel tempo1CATEGORIImpegno a gasdotti2AI-WEIGHTEDPer quanto riguarda la salute3PROVABLEAccuratezza rintracciata
Impegnati, best-case e pipeline a colpo d'occhio, ponderati con l'AI per la salute dell'affare, con precisione tracciata in modo da poterlo difendere.

Previsioni

Impegnata

Si occupa di 80% o maggiore probabilità di vincita, queste sono le tue vincite più probabili.

Ipotizzabile

Tutte le offerte aperte ponderate dalla loro probabilità di vittoria AI-calcolata. Questa è la previsione più realistica di ciò che si chiuderà.

Miglior caso

Tutte le offerte aperte a pieno valore. Questo è il massimo reddito possibile se tutto va perfettamente ( raramente lo fa).

Intervallo di fiducia

An 80% Esempio: "È probabile che chiuderai tra 10 e 25 punti". $45,000 e $72,000 In questo trimestre."

Cosa è cambiato e perché

Le previsioni includono l'attribuzione del cambio settimana-settimanale. $15,000, il rapporto spiega esattamente quali accordi hanno causato la modifica: "Deal A è scivolato al prossimo trimestre ($8,000), Deal B perso ($5,000), Deal C ridotto in valore ($2,000)."

Monitoraggio dell'accuratezza

Previsioni

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.

Calibrazione delle probabilità di vincita

Punteggio Brier che misura quanto bene le probabilità di vincita corrispondono ai risultati effettivi.70% Probabilità di vincere effettivamente.70% La maggior parte del tempo, la calibrazione è buona.

Scattamenti settimanali

OpsIQ cattura una snapshot delle tue previsioni ogni settimana (via cron). Nel corso del tempo, puoi vedere come migliora la tua precisione di previsione.

Avvertenze e rotazioni

Conversione per stadio

Quante offerte si spostano da ogni fase all'altra. Se 80% passare da Qualified a Proposta ma solo 20% andare da Proposta a Negoziazione, le vostre proposte potrebbero aver bisogno di lavoro.

Tasso di vincita per risorsa

Quali fonti di piombo producono più vittorie, investono di più in sorgenti ad alto tasso.

Per-proprietà

Come ogni membro del team di vendita sta eseguendo: offerte vinte, valore pipeline, dimensione media delle transazioni, tasso di vincita.

Avvertenze

Sandbagging (probabilità irrealisticamente bassa), sovracommissione (in realismo elevato), e impegnata-a rischio (affare di alta probabilità che mostra segnali di stallo).

Capire una caduta di previsione

Scenario:
Your quarterly forecast dropped from $180,000 to $155,000 since last week.
Cosa fare:

Aprire la pagina Previsione e controllare "Che cosa è cambiato." Il rapporto mostra: "Acme Corp affare ($15,000) spostato a Lost, concorrente scelto.$8,000) data di chiusura spinta al prossimo trimestre. Nuovo accordo con Gamma LLC ($3,000) aggiunto questa settimana." Il cambiamento netto è:$20,000 + $3,000 = -$17,000, spiegando la goccia da $180K a $163K (con il restante $8K spiegato dalle regolazioni di probabilità su altre offerte).

CRM

Trovare nuovi business

Descrivi il tuo cliente ideale, aggiungi aziende di destinazione e lascia che la ricerca AI, punteggio e progetti di outreach di primo-touch.

Prospettive
ProspettiveUn elenco di aziende prospettive basate sull'intelligenza artificiale con note, punteggi e un pulsante abbozzo.Prospettivespazio di lavoroProspettive riscontrate dall'agente SDRNorthwind LtdSaaS · 50 personale · supporto di assunzione88Progetto di superamentoCobalto MfgProduzione · 200 personale74Progetto di superamentoMesa RetaileCommerce · 30 personale69Progetto di superamentoVega saluteAssistenza sanitaria · 80 personale63Progetto di superamento1FINDI conti target delle fonti di intelligenza2PUNTEGGIOFit & intent classificato3DRAFTPrimo tocco scritto per te
L'agente SDR trova le aziende di destinazione, li segna in forma e prepara la prima tocca per la tua recensione.

Configurazione una volta

1
Descrivi il tuo cliente ideale

Vai aCRMDescrivi il tuo profilo clienti ideale (ICP): industrie di destinazione, dimensioni aziendali, titoli di lavoro, focus geografico, termini di prodotto e punteggio minimo in forma. Esempio: "B2B SaaS aziende con50-500dipendenti negli Stati Uniti/Regno Unito, che vendono strumenti di sviluppo, con un VP di Vendite o Capo della Crescita come il contatto primario."

2
Aggiungere le aziende target

Immettere domini aziendali o nomi che si desidera ricercare. È inoltre possibile lasciare che l'IA suggerisca le aziende in base al vostro PIC.

3
Risultati della ricerca

L'AI arricchisce ogni azienda con dati disponibili: dimensione, industria, stack tecnico, notizie recenti e fit punteggio con spiegazione.

4
Approvo l'accesso

Per le aziende di buona prestazione, l'IA elabora un messaggio personalizzato in primo piano.

Misurare il punteggio

Ogni prospettiva ottiene un0-100 misura punteggio basato su cinque fattori:

Adattamento ICP

Quanto bene l'azienda corrisponde al tuo profilo clienti ideale (industria, dimensione, posizione).

Segnali di urgenza

Ci sono prove che hanno bisogno del vostro prodotto ora? Posti di lavoro, cambiamenti tecnologici, reclami sui concorrenti.

Delegazione di bilancio

Le dimensioni dell'azienda, la fase di finanziamento e gli indicatori di reddito suggeriscono la disponibilità del bilancio.

Corrispondenza del prodotto

Quanto è rilevante il vostro prodotto per la loro attività basata sull'industria e sulla tecnologia.

Supporto per la forma

Che tu possa servire efficacemente questo cliente (zona temporale, lingua, complessità).

Ricerca di un'azienda target

Scenario:
You want to evaluate whether acme.com is worth pursuing.
Cosa fare:

Aggiungi acme.com alla lista di prospezione. L'AI restituisce: Punteggio di Fit 78/100 Motivi: B2B SaaS, 120 dipendenti, basati sugli Stati Uniti, hanno recentemente assunto un VP di Vendite (segno di agenzia), utilizza il concorrente X (campione prodotto). [email protected] (VP di Vendite). Riferimenti abbonati le loro recenti visite alla pagina di assunzione e prezzi.

CRM

Sequenze di follow-up automatiche

Sequences automatizza il follow-up multi-step: un mix di email, attesa, compito, chiamata e passi webhook che vengono eseguiti automaticamente dopo aver approvato l'invio iniziale.

Sequenze
Sequenze di follow-upUn flusso di sequenza orizzontale: Email, attendere tre giorni, E-mail, quindi un compito, con rilevamento delle risposte.Sequenze di follow-upspazio di lavoroDopo aver approvato il primo invio →EmailIntroduzioneAspetta.3 giorniEmailSeguitoCompitiChiamataI passaggi possono essere e-mail, attendere, attività o webhook. Una risposta auto-ferma la sequenza.1AUTOMATESeguito multi-step2STEPSEmail · attendere · compito · webhook3YOU APPROVEIl primo invio è recintato
Seguito multi-step automatizzato (email, attesa, email, attività) che si approva prima e una risposta si ferma automaticamente.

Come funzionano le sequenze

1
Creare una sequenza

Definire i passaggi: e-mail, attendere 3 giorni, e-mail, aspetta 5 giorni, attività (chiamare se non risponde), e-mail. Ogni passo email ha un modello che è possibile personalizzare.

2
Iscriversi contatti

Aggiungete i contatti alla sequenza. L'AI può anche proporre l'iscrizione ai risultati delle prospezioni.

3
Esecuzione automatica

Se un contatto risponde in qualsiasi punto, la sequenza si ferma automaticamente.

4
Risultati della traccia

Vedere tassi aperti, tassi di risposta, tassi e snodi per passo. Utilizzare questo per ottimizzare la sequenza.

Rispondi a comprensione

Quando un contatto risponde, l'IA classifica la risposta:

Positivo

Interessato, vuole parlare. Sequence si ferma, compito creato per il follow-up.

Obiezione

Ha preoccupazioni ma non rifiutando. Sequence si ferma, compito creato con dettagli di opposizione.

Annullare

Vuole smettere di ricevere messaggi. Il contatto viene soppresso in modo permanente.

Non ora.

Interessato ma il tempo è sbagliato. La sequenza si ferma, snooze compito creato.

Persona sbagliata

Non il contatto giusto. Sequence si ferma, contattare contrassegnato per la recensione.

Supporto

Una domanda di supporto, non una risposta alle vendite. Sequence si ferma, biglietto creato.

Protezione antispam

Movimentazione ottimale

Le richieste di cancellazione sono onorate immediatamente e il contatto viene soppresso da tutte le sequenze future.

Tappo di invio giornaliero

Workspace-level daily limit (default: 1,000 emails). Prevents mass sends that trigger spam filters.

Limite di contatto

Massima 1 messaggio per contatto al giorno. Previene schiacciante persone individuali.

Gestione overcap

I passaggi che superano il tappo giornaliero sono deferiti al giorno successivo, non vengono mai abbandonati o saltati.

Cosa succede se un contatto apre un biglietto di supporto durante una sequenza?+

Il supporto prende la priorità rispetto all'esternalizzazione. La sequenza può essere ripresa manualmente dopo che il problema di supporto viene risolto.

Posso eseguire la sequenza di test A/B?+

Non direttamente all'interno di sequenze, ma è possibile creare due sequenze con messaggi diversi e confrontare i loro risultati.

CRM

Strumenti di crescita

Una pagina sotto CRM che detiene il motore di crescita: entrate ricorrenti (MRR/ARR), catalogo prodotti, moduli lead-capture, link di prenotazione e routing piombo. Tutto qui scrive direttamente nel CRM, quindi una presentazione del modulo o una chiamata prenotata è un contatto con la storia, non una riga in un foglio elettronico.

Che cosa vive nella pagina

Entrate ricorrenti

Entrate

Le iscrizioni sono raggruppate da pagamenti per piattaforma, il ciclo di fatturazione viene differito dalle lacune di pagamento e un abbonamento decade quando un pagamento è in ritardo rispetto al passato1.5tempi il suo ciclo. I clienti collegano aCRMcontatti automaticamente quando il registro ha la loro e-mail.

Catalogo dei prodotti

Catalogo

Una fonte di verità per quello che si vende. I quotati tirare il nome e il prezzo dell'elenco dal catalogo, e le citazioni accettate rotolano in entrate da prodotto.

Forma di captazione del piombo

Cattura

Ogni modulo riceve una pagina ospitata più un codice iframe incorporato per il tuo sito. Le sottomissioni diventano contatti, il proprietario ottiene una notifica e le regole di routing assegnano il comando.

Collegamenti di prenotazione

Pianificazione

Condividere un link, lasciare prospettive scegliere una slot gratuita. Slot rispettare le ore di lavoro dell'organizzatore, la fucina temporale e gli incontri esistenti. Una prenotazione crea l'incontro, invia una mail alla prospettiva una conferma e notifica all'organizzatore.

Routing di piombo

Instradamento

Le regole del territorio vengono eseguite prima, poi le regole sul campo (match a field such as country o source), quindi la rotondità attraverso il tuo pool di rep. Si tratta di percorsi CONTACTS E DEALS allo stesso modo, qualunque sia lo stato dell'affare: un accordo vinto ha ancora bisogno di un proprietario per l'attribuzione della commissione, responsabilità del conto e follow-up, e in modalità di visibilità del team o proprietario è invisibile a tutti i record ma un manager.

Crea il tuo primo modulo

1
Strumenti di crescita aperti

Vai a CRM, poi Strumenti di crescita, quindi la sezione Moduli Lead-capture.

2
Nome e scegli campi

Digitare un nome e una lista di campo separata da virgola, ad esempio il nome, la posta elettronica, il telefono, il messaggio.

3
Condividi o incorporato

Copia il link ospitato per condividerlo ovunque, o copiare il codice incorporato e incollarlo in qualsiasi pagina del tuo sito web.

4
Guarda i comandi

Ogni presentazione è un contatto CRM con un form. attività submessa, una notifica del proprietario e routing automatico.

💡
Le pagine di acquisizione pubblica utilizzano l'indirizzo del proprio spazio di lavoro.opsiq.help), quindi il link risolve sempre i dati giusti.

Protezione integrata

Bots vede il successo, non vedi niente

Un campo di miele nascosto scarta silenziosamente le sottomissioni del bot.

Tasso di tasso

Dieci invio all'ora per IP indirizzo attraverso i moduli e le prenotazioni.

Il consenso rimane onesto

L'invio di un modulo non concede il consenso al marketing, ma è una casella di controllo esplicita.

Nessuna prenotazione doppia

Una slot viene rivalutata contro un controllo di disponibilità fresco al momento della prenotazione.

Da dove provengono i dati di fatturato ricorrenti?+

Dalla stessa pagina di commercio ha registrato l'utilizzo della tua pagina di vendita, alimentata da connettori di fatturazione.

Posso usare i moduli senza un sito web?+

Ogni modulo ha una pagina ospitata sul proprio indirizzo che funziona autonomamente, con o senza JavaScript.

CRM

Messaging Hub (SMS e WhatsApp)

Collegare i provider SMS e WhatsApp che si utilizzano, contrassegnarne uno come predefinito e sceglierne uno quando si scrive un contatto. Il consenso viene controllato dal CRM prima che qualsiasi gateway venga contattato.

Impostalo.

1
Abilitare il connettore

Nella pagina Connettori, aprire Messaging Hub (SMS e WhatsApp) e abilitarlo.

2
Aggiungi un fornitore

Nello stesso cassetto, o in Strumenti di Crescita CRM, scegli un gateway dal menu a tendina (Twilio, Vonage, Termii, Meta WhatsApp Cloud, Infobip e altro), incolla le credenziali API e collega. Puoi aggiungere diversi, tra cui lo stesso gateway due volte con account differenti.

3
Filare il webhook

Ogni voce del fornitore mostra il proprio webhook URL Incollalo nelle impostazioni di consegna-report e messaggio in entrata per ottenere lo stato di consegna e risponde nuovamente all'interno OpsIQ.

4
Invia da un contatto

Se più di un provider supporta il canale, un selettore ti consente di scegliere; altrimenti viene utilizzato il default.

Il consenso viene prima

Consenso concesso solo

Un consenso sconosciuto non è il consenso. L'invio di rifiuti a meno che il consenso SMS non sia esplicitamente concesso.

Il non-contatto vince sempre

Una bandiera non-contatta blocca ogni canale, indipendentemente da ciò che altro è impostato.

Suppressione onorata

I contatti sulla lista di soppressione non sono mai stati inviati.

I rifiuti chiamano loro ragione

Un'invio bloccato ti dice esattamente perché, in modo da poter correggere i dati invece di indovinare.

Per gli sviluppatori: il contratto webhook

URL forma

https://your-address/opsiq/cron/messaging_webhook.php?sk=SITE_KEY&e=ENTRY_ID&t=TOKEN. Il token per-entry viene coniato quando il provider è collegato e non ruota mai su modifica.

Formati compresi

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":"..."}.

Effetti

I rapporti di consegna timbrano la riga del registro che porta il messaggio del fornitore id come consegnato o rimbalzato. I messaggi in entrata corrispondono al contatto per numero di telefono all'interno dello spazio di lavoro, atterrare come un messaggio. attività ricevuta e contrassegnare la conversazione risposto.

Modalità di fallimento

Le risposte di token sbagliato o mancanti 403. I carichi non noti vengono contati e ignorati, mai fatali, quindi un gateway non configurato non può rompere l'endpoint.

Quali gateway sono supportati?+

Twilio, Vonage, Plivo, MessageBird, Sinch, Infobip, Telnyx, ClickSend, Termii, Africa's Talking, BulkSMS, Textlocal, Meta WhatsApp Cloud, 360dialog, SMSAPI, Gupshup, Kaleyra, D7 Networks, Hubtel e un webhook HTTPS personalizzato per qualsiasi altra cosa.

Le credenziali sono sicure?+

Le credenziali vengono memorizzate crittografate nelle impostazioni del connettore e non sono mai riecheggiate al browser.

L'IA può inviare messaggi?+

Sì, attraverso azioni registrate che richiedono la conferma e l'esecuzione dello stesso cancello di consenso. L'IA può anche elencare i fornitori collegati per spiegare ciò che è disponibile.

CRM

Mantenere e crescere i clienti

La gestione del ciclo di vita ti aiuta a proteggere i ricavi esistenti. Ogni account ottiene un punteggio di rischio churn, un punteggio per la salute, un risultato di espansione e un gioco raccomandato di successo.

Il ciclo di vita
Scheda di ciclo di vitaUna scheda del ciclo di vita del cliente (Onboarding, Active, At-risk, Renewal) con barre sanitarie su ogni carta di conto.Il ciclo di vitaspazio di lavoroSULL'INTERNOAcmesalute 40ACCETTAZIONEGlobexsalute 88Iniettosalute 76AT-RISKSoylentsalute 28RENEWUmbriaitalyprovince. kgmrinnova in 12despansione + $8k1STAGESImbarcarsi per il rinnovo2SCOREDSalute e espansione3PLAYBOOKPromuovi la prossima mossa
I clienti si muovono attraverso l'accensione, il funzionamento attivo, il rischio e il rinnovo, ciascuno ha segnato per la salute e l'espansione con un playbook.

Il bordo del ciclo di vita

Mappa dello stadio

Scheda visiva che mostra dove ogni account è: Piombo, Prospect, Opportunità, Cliente, Espansione, Rinnovo, A Risk, Churned.

Conti a rischio

I conti sono contrassegnati con un alto rischio di churn. Ciascuno mostra il driver superiore (spunto di supporto, inattività, guasto di pagamento) e una partita di salvataggio consigliata.

Opportunità di espansione

Account che mostrano segnali di disponibilità per acquistare di più: alto utilizzo, richieste di funzionalità, indagini di piano.

Due di rinnovo

Conti con le prossime date di rinnovo. Ordinato per livello di rischio e valore del fatturato.

Come OpsIQ rileva il rischio di churn

Il rischio di Churn è calcolato da più segnali fusi insieme:

Segnali CRM

Trattare la salute, l'inattività, le perdite recenti, il coinvolgimento in declino.

Segnali di supporto

Conto biglietti aperti, punte volume biglietto, sentimento negativo, escalations.

impegno del prodotto

Frequenza di accesso, utilizzo delle funzioni, visite alle pagine, chiamate API.

Segnali di fatturazione

Pagamenti non risolti, fatture in ritardo, richieste di downgrade, visite alla pagina di cancellazione.

Libri di gioco

Salva gioco

Per i conti a rischio: raggiungere in modo proattivo, affrontare la preoccupazione, offrire supporto, escalare se necessario.

Gioco di rinnovamento

Per i prossimi rinnovi: confermare soddisfazione, rivedere l'utilizzo, il valore attuale, offrire incentivi se del caso.

Gioco di espansione

Per i conti pronti a lanciare: le opzioni di aggiornamento presenti, condividere storie di successo, dimostrare ROI.

Gioco di adozione

Per i conti sottoutilizzati: offrire formazione, condividere le migliori pratiche, abilitare caratteristiche che non utilizzano.

Spotting churn prima che accada

Scenario:
A customer who normally logs in daily has not logged in for 2 weeks, and they opened 3 support tickets this month.
Cosa fare:

La scheda Lifecycle contrassegna questo account come "A Risk" con i driver: inattività (14 giorni dall'ultimo login) e supporto picco (3x gioco consigliato: chiamata di outreach proattiva per capire che cosa sta accadendo. C'è un problema del prodotto? Stanno valutando i concorrenti? L'intervento precoce può salvare il conto.

CRM

Mantenere i dati puliti

L'agente Data Steward trova e risolve automaticamente i problemi di qualità dei dati: duplicati, campi mancanti, incongruenze e record stanti.

Destinazione dei dati
Destinazione dei datiUn elenco di problemi di qualità dei dati (duplica, mancante, stallo, formato), ciascuno con un'azione risolutiva di un clic.Destinazione dei datispazio di lavoroI dati emessi dall'agente Steward trovatiDuplicare[email protected] e [email protected]UnisciMancato12 contatti non hanno alcuna aziendaArricchisciScaduti38 offerte incontaminate per 90+ giorniRecensioneFormatonumeri di telefono in 4 formatiFissare tutti1CATCHESDupe, lacune, stallo2EXPLAINSPerché si è schiantato ciascuno3FIXESSulla vostra approvazione
L'agente Steward mantiene il CRM pulito, trovando duplicati, lacune, record stanti e formati danneggiati, fissandosi sull'approvazione.

Cosa cattura

Duplicare contatti

Registrazioni multiple per la stessa persona (ad esempio, [email protected] e [email protected]). Lo steward propone di fonderli.

Dati mancanti

Contatti senza e-mail, offerte senza importi, aziende senza domini. Suggerisce il riempimento da fonti disponibili.

Registrazioni non collegate

Si occupa senza contatti associati, contatti senza aziende. Propone il collegamento in base al dominio e al contesto di posta elettronica.

Incongruenze

Un accordo in "Won" con probabilità 20% _, un contatto contrassegnato "Customer" senza offerte, una società con industria mismatched.

Stadi di rotazione

Trattamenti che sono stati nella stessa fase per troppo tempo o contatti la cui fase del ciclo di vita non corrisponde alla loro attività.

Come usare

1
Aprire la lista steward

Vai a CRM e trova la sezione Data Steward (o aprila da CRM Health).

2
Approva correzioni di sicurezza

Gli elementi verdi sono sicuri: duplicati chiari, dati mancanti evidenti. Approva questi in massa.

3
Rivedere il resto

Gli oggetti ambrati hanno bisogno del tuo giudizio: possibili duplicati con lievi differenze, cambiamenti di fase proposti, collegamento aziendale.

Pulire contatti duplicati

Scenario:
The steward found "John Smith ([email protected])" and "J. Smith ([email protected])": same email, different display names.
Cosa fare:

Lo steward propone unione: mantenere il record con più attività, fondere le offerte e le attività dell'altro disco. Rivedere la proposta, regolare il nome del display sopravvissuto se necessario, e approvare.

CRM

Costruisci il mio CRM

Build My CRM consente di descrivere la configurazione CRM in inglese semplice. OpsIQ genera un piano convalidato e reversibile e lo applica sull'approvazione.

Costruisci il mio CRM
Costruisci il mio CRMUna descrizione in lingua naturale sulla sinistra che produce un piano CRM generato di fasi, campi e segmenti a destra.Costruisci il mio CRMspazio di lavoroDescrivi il tuo businessSiamo un'agenzia web designvendita di manutentori mensili eprogetti one-off a piccoliimprese.Costruisci il mio CRMPiano generatoStage: Piombo → RetainerTipi di offerta: manutentore, progettoCampo: valore mensileSegmenti: SMB, agenziaSequenza: onboardingApprovo &amp; applicazione1DESCRIBEPlain English in inglese2AI PLANSStage, campi, segmenti3APPROVEApplicato · nessun codifica
Descrivi la tua attività in inglese semplice;OpsIQabbozzi tuttoCRM(staggi, campi, segmenti) e lo applica sull'approvazione.

Come funziona

1
Descrivi ciò che vuoi

Digitare una descrizione in inglese della configurazione CRM _. Esempio: "Crea un pipeline di rinnovo con le fasi: Prossima, Contattata, Negoziazione, Rinnovato, Perso. Score porta più alto quando visualizzano i prezzi due volte."

2
Recensione del piano

OpsIQ mostra un'anteprima di ciò che creerà: pipeline, fasi, probabilità di stadio, regole di punteggio, regole del ciclo di vita.

3
Applicare

Fare clic su Applica per eseguire il piano. Ogni modifica viene registrata come un bundle che puoi annullare in un solo click.

4
Ripiegare se necessario

Se qualcosa non è giusto, fare clic su Annulla per ripristinare l'intero pacchetto. Il CRM ritorna al suo stato precedente.

Cosa puoi costruire

Linee e fasi

Creare pipeline nominate con fasi personalizzate, probabilità di default e soglie rotanti.

Regole di punteggio

Aumenta i punteggi dei lead in base al comportamento: "Score più alto quando visualizzano i prezzi", "S core più basso quando visitano la pagina delle carriere".

Regole del ciclo di vita

Avanzare automaticamente le fasi del ciclo di vita: "Movi a SQL quando chiedono una demo," "Movi al cliente quando l'affare è vinto."

Campi personalizzati

Aggiungi campi a contatti, offerte o aziende: testo, numero, data, selezionare, casella di controllo, URL E-mail.

Elenco di controllo delle qualifiche

Definire la lista di controllo MEDDICC o BANT i gradi Deal Coach contro.

Impostazione di un nuovo canale

Scenario:
You manage SaaS subscriptions and need a pipeline for renewals.
Cosa fare:

Tipo: "Crea una pipeline di rinnovo. Fasi: 90 Giorni fuori (in inglese)10%), 60 Giorni fuori (in inglese)25%), Contattato (40%), Negoziazione (60%), Rinnovato (100%), Churned (0%). Impostare la soglia di rotazione a 14 giorni."OpsIQ genera il piano, lo riesamina e fai clic su Applica. La pipeline appare immediatamente sulla tua pagina Pipeline.

E se descrivessi qualcosa che non è possibile?+

Se chiedete qualcosa al di fuori delle sue capacità (ad esempio, "Integrare con la mia consuetudine API"), respingerà la richiesta e spiegherà cosa può fare invece.

Posso annullare i cambiamenti?+

Sì. Ogni azione di CRM è catturata come un fascio reversibile. Vai a CRM Salute > Cambiare Storia per vedere tutti i bundle e annullare qualsiasi di loro.

CRM

Impostare il CRM a modo tuo

La configurazione manuale CRM per le squadre che preferiscono fare clic su come digitare. Tutte le impostazioni che Build My CRM può creare sono disponibili anche come campi di forma tradizionali.

Linee e fasi

Creare, rinominare, reordinare ed eliminare le tubazioni e gli stadi. Impostare la probabilità di vincita predefinita per fase. Imposta la soglia di rotazione (giorni senza attività prima che un accordo sia contrassegnato "stabilizzato").

Campi personalizzati

Tipo di campo: testo, numero, data, selezionare (dropdown con opzioni predefinite), checkbox, URL, email. Campi personalizzati appaiono sul profilo dell'oggetto e nei filtri.

Elenco di controllo delle qualifiche

Definire la lista di controllo che il Deal Coach utilizza per valutare le offerte. Scegliere MEDDICC, BANT o un insieme personalizzato di criteri.

Regole di fase del ciclo di vita

Definire le transizioni di fase automatiche: quando un contatto incontra una condizione (visualizza i prezzi, invia un modulo, effettua un acquisto), la loro fase del ciclo di vita avanza automaticamente.

Regole di lead-scoring

Aumentare o ridurre i punteggi di piombo in base al comportamento. Esempi: "Pagina dei prezzi vista = +15 punti," "Scaricato whitepaper = +10 punti," "Visited carriers page = -5punti." Il conteggio minimo può essere impostato (ad esempio, "deve visualizzare i prezzi almeno 2 tempi).

Vista salvata

Crea combinazioni di filtri + assortimento per contatti, offerte o aziende. Condividi le viste con il tuo team. Impostare una vista predefinita per tipo di oggetto.

Aggiungere una regola di punteggio del piombo

Scenario:
You want contacts who view your pricing page twice or more to get a higher score.
Cosa fare:

Vai a Configurazione CRM > Regole di punteggio di piombo. Fare clic su Aggiungi regola. Impostare: Evento = "vista pagina", URL contiene = "/pricing", conteggio minimo =2, aumento del punteggio = +20. Save. La prossima volta che il punteggio viene eseguito, i contatti corrispondenti a questa regola otterranno +20 al loro punteggio principale.

CRM

CRM Controllo della salute

CRM Health è una pagina autodiagnostica che verifica il CRM viene impostato correttamente e funziona senza problemi.

Controllo della salute
CRM Controllo della saluteUn anello di punteggio per la salute 92 accanto a una lista di controllo dei controlli di configurazione del passaggio e dell'avviso.CRM Controllo della salutespazio di lavoro92SANITÀStadi di tubatura configuratiConnettore collegato & importazioneAgenti AI abilitati!Nessuna sequenza di follow-up attiva!12 contatti azienda mancante1AUDITVerifica la configurazione2FLAGSCiò che manca3PUNTEGGIOUn numero complessivo
Un controllo CRM di una pagina: un punteggio generale della salute più una lista di controllo di ciò che è impostato a destra e quello che ancora ha bisogno di attenzione.

Che cosa controlla

Schema

Le tabelle di database esistono e hanno le colonne corrette. Se una migrazione è mancata, CRM Health lo mostrerà.

Agenti di AI

Tutti gli agenti CRM (Captura, Data Steward, Deal Intelligence, ecc.) sono registrati e sani. Verde = in esecuzione, ambra = ha bisogno di attenzione, rosso = errore.

Itinerari

Le vie CRM API e gli endpoint AJAX sono registrati e callable.

Azioni di AI

Il catalogo di azione CRM è registrato nel Registro d'azione. Se le azioni sono mancanti, CRM Salute self-heals da re-registrarli.

Contazioni di dati in tempo reale

Contatti, aziende, offerte, attività e eventi. Utile per verificare le importazioni e la cattura dei dati in corso.

Dopo il controllo di configurazione

Dopo la prima configurazione CRM, aprire CRM Salute e verificare tutti i controlli sono verdi. Se uno è ambra o rosso, fare clic sull'elemento per una spiegazione diagnostica e suggerito fix.

Quanto spesso dovrei controllare CRM Salute?+

Controllare dopo l'impostazione iniziale, dopo gli aggiornamenti principali e ogni volta che il comportamento CRM sembra sbagliato. CRM Salute si sente molti problemi (come le registrazioni di azione mancante) solo aprendo la pagina.

CRM

Collegamenti CRM per sviluppatori

Il CRM espone un REST pubblico completo API e webhooks in uscita così si adatta a qualsiasi stack senza esportazioni manuali.

Punti finali API

Autenticazione

API chiave (Autorizzazione: Cuscinetto opq_...) con campo di applicazione crm.read o chrm.write. POST a /api/v1.php con azione e site_key.

Contatti

crm. contacts. list (ricerca + filtro), crm,contactes. detail (per ID), cRM. contattis. upsert (creare o aggiornare), crme. contattas. save.

Offerte

crm. deals. list, crm . deals, detail, crme. deals. create, cRM. deAL. update, crma. dels. advance (tutti attraverso il livello di fiducia).

Attività

crm. activities. list (linea temporale per un contatto/deal), crm,activities,record (logare una nuova attività).

Eventi

crm. events. list (alimentatore di cambiamento con cursore since_id), crm,event. catalog (elenco dei tipi di eventi disponibili).

Creare un accordo tramite 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
}

Eventi webhook

crm.contact.created

Avvertito quando un nuovo contatto viene aggiunto al CRM.

crm. deal. stage_changed

Sparato quando un accordo si sposta in una fase diversa.

crm.deal.won

Sparato quando un accordo è chiuso come vinto.

crm.deal.lost

Sparato quando un accordo è chiuso come perso.

crm.task.created

Avvertito quando viene creato un nuovo compito (manuale o generato dall'IA).

crm.outreach.reply

Avvertito quando una prospettiva risponde a un'e-mail di sequenza.

crm. agent. proposal_created

Avvertito quando un agente dell'IA crea una proposta per la coda di approvazione.

Tutti gli eventi webhook sono firmati e riattivati da HMAC. Iscriviti a URL in Impostazioni > Webhooks, o poll crm. events. list con since_id per un feed di cambiamento durevole.

Sincronizzazione dei contatti CRM a Google Sheets

Scenario:
You want every new CRM contact to appear in a Google Sheet for your marketing team.
Cosa fare:

Impostare un abbonato webhook per crm. contact. created. Puntarlo ad una app Web di Google Apps Script o a Zapier webhoOK URL Il payload include il nome del contatto, l'email, la società, il punteggio principale e la fonte.

CRM

Segmenti

I segnali salvano i filtri di contatto riutilizzabili per le viste CRM, l'accesso, le promozioni e altri strumenti di approfondimento.

Schermo del prodotto
SegmentiL'editor Segment combina le condizioni, mostra il conteggio delle partite in diretta e consente all'operatore di scegliere un filtro live o una snapshot pinned.Segmentispazio di lavoroMODELLOViviLOGICTUTTOMATCHES1,248LIVELLI DI LAVOROFase del clienteuguale cliente attivoArticoloUltima attivitàall'interno 30 giorniArticoloPaeseuguale Regno UnitoArticoloAlto intentopunteggio almeno 70Articolo1CHOOSE MODELive o snapshot2ADD RULESTUTTO o NESSUN3REUSECampagne e CRM
L'editor Segment combina le condizioni, mostra il conteggio delle partite in diretta e consente all'operatore di scegliere un filtro live o una snapshot pinned.

A segmento live ricalcola i dati correnti ogni volta che viene utilizzato. snapshot pinizzata congela l'elenco dei membri corrente, che è utile quando un pubblico di outreach non deve cambiare dopo l'approvazione.

Scegli TUTTO quando ogni condizione deve corrispondere o QUALI Quando una condizione è sufficiente. Verificare il conteggio live prima di salvare. I segmenti del sistema possono essere visibili ma protetti da modifiche ordinarie.

CRM

Scoring di piombo

Le regole di lead-scoring trasformano i segnali del comportamento e del profilo in un punteggio coerente che le vendite e l'automazione possono utilizzare.

Schermo del prodotto
Scoring di piomboIl punteggio di piombo mostra regole attive, la finestra di rotolamento e il cambiamento positivo o negativo ogni regola si applica.Scoring di piombospazio di lavoroREGOLE12SCORED8,412HOT LEADS286LIVELLI DI LAVOROAttività di prezzi3+ visite in 14 giorni+20Acquistare la parola chiavecontiene migrazione o impresa+15Rischio di supportoevento di denuncia 30 giorni-10Fonte attendibilereferral partner+121DESCRIBE RULEUsare l'inglese semplice2REVIEW FIELDSSegnale, finestra, punti3RESCOREApplicare sul workspace
Il punteggio di piombo mostra regole attive, la finestra di rotolamento e il cambiamento positivo o negativo ogni regola si applica.

Il costruttore di regole AI può trasformare un'istruzione in una regola strutturata in inglese. Ogni regola deve essere ancora riesaminata prima dell'attivazione: confermare l'attività o la parola chiave, il conteggio minimo, la finestra di rotolamento e il cambiamento del punteggio.

Le regole positive e negative possono coesistere. Spazio di lavoro rescoperto dopo le modifiche della regola del materiale, i contatti esistenti vengono valutati sotto il nuovo modello. I punteggi possono alimentare segmenti, routing, prospezione e condizioni di flusso di lavoro.

CRM

Leadership di vendita

La classifica compara i rappresentanti utilizzando il raggiungimento delle quote, le entrate vinte, la commissione e l'open pipeline per il mese selezionato.

Schermo del prodotto
Leadership di venditaLa classifica mensile rappresenta i rappresentanti delle vendite mantenendo le entrate, la commissione e l'oleodotto aperto visibili.Leadership di venditaspazio di lavoroPERIODLuglioTEAM QUOTA82%WON£184kLIVELLI DI LAVOROAmina.104% quote · £62k ha vinto1stBen.88% quote · £51k won2ndRita.76% quote · £43k ha vinto3rdConduttura aperta£312k in tutta la squadraRecensione1CHOOSE MONTHConfrontare un periodo2CHECK QUOTAContenimento per rap3COACHUtilizzo del contesto pipeline
La classifica mensile rappresenta i rappresentanti delle vendite mantenendo le entrate, la commissione e l'oleodotto aperto visibili.

Il raggiungimento del Quota è significativo solo quando ogni rappresentante ha una quota corrente e le offerte hanno il proprietario, la quantità, la valuta e lo stato di chiusura corretto. Utilizzare la classifica per l'allenatore e il riconoscimento, non come unica misura di qualità; abbinarlo con salute affare, attività e precisione delle previsioni.

CRM

Approvazioni di contratto

Le approvazioni di contratto richiedono il sign-off del manager prima che le offerte ad alto valore possono essere contrassegnate.

Schermo del prodotto
Approvazioni di contrattoLa politica di approvazione definisce due soglie di valore e la coda mostra decisioni in sospeso, approvate e respinte.Approvazioni di contrattospazio di lavoroPOLICYAbilitatoWAITING6OLDEST3hLIVELLI DI LAVOROLivello 1Offerte da £10,000ManagerLivello 2Offerte da £50,000SeniorRistrutturazione delle imprese£72,000 · richiesto da BenFinanziamentiProgetto di migrazione£18,500 · richiesto da RitaApprovazione1SET THRESHOLDS0 disabilita un livello2REQUESTRep presenta l'accordo3DECIDEApprova o rifiuta
La politica di approvazione definisce due soglie di valore e la coda mostra decisioni in sospeso, approvate e respinte.

Abilitare la politica e impostare livello 1 e livello 2 soglie. Una soglia 0 quando un non-manager cerca di vincere un accordo a o sopra la soglia, OpsIQ crea una richiesta di approvazione invece di cambiare silenziosamente il palco.

I gestori e gli amministratori completi non sono bloccati dalla policy, ogni decisione deve mantenere il richiedente, l'approvazione, il tempo e la ragione per l'auditability.

CRM

Regole del ciclo di vita

Le regole del ciclo di vita spostano automaticamente i contatti tra le fasi in cui i dati attuali corrispondono a una condizione salvata.

Schermo del prodotto
Regole del ciclo di vitaLe regole del ciclo di vita sono valutate per priorità; la prima regola corrispondente cambia la fase di contatto.Regole del ciclo di vitaspazio di lavoroACCETTAZIONE7RUNSNottePRIORITYPrimoLIVELLI DI LAVOROPiombo → Qualificatipunteggio ≥ 60 e attività recentiPriorità 100Qualifica → Clienteevento di acquisto esistePriorità 90Clienti → A rischionessuna attività per 60 giorniPriorità 70A rischio → Clientinuovo acquisto o rispostaPriorità 601PICK STAGESDa e per2DEFINE FILTERSegment-styleJSON3ORDER RULESPrima partita vince
Le regole del ciclo di vita sono valutate per priorità; la prima regola corrispondente cambia la fase di contatto.

Ogni regola ha una fase di origine, la fase di destinazione, bandiera attiva, priorità e filtro a segmento. Il lavoro del ciclo di vita programmato valuta le priorità più elevate prima e si ferma dopo il primo match per un contatto.

Le regole dovrebbero essere reciprocamente comprensibili. Evitare due regole attive che possono spostare lo stesso contatto in direzioni opposte durante la stessa corsa.

CRM

Flusso di attività CRM

Il flusso di attività del workspace combina eventi operativi e clienti in modo che i team possano indagare su ciò che è successo senza aprire ogni modulo.

Schermo del prodotto
Attività CRMIl flusso di attività interleve chat, biglietto, e-mail, webhook, conversione e eventi anomali con filtri e paginazione.Attività CRMspazio di lavoroEVENTI2,804CUSTOMERS1,126ANOMALIES14LIVELLI DI LAVOROChat risolta[email protected]· AIOraBiglietto ha rispostoT.1048 · Fatturazione4Evento in entratasubscription.upgraded12mConversioneOrdine 7788 · £14919m1FILTEREvento e cliente2OPEN CONTEXTVai al record3PAGE RESULTSTenere le indagini legate
Il flusso di attività interleve chat, biglietto, e-mail, webhook, conversione e eventi anomali con filtri e paginazione.

Filtra per tipo di evento, data, contatto o stato del cliente (compreso il pagamento dei clienti). Il feed è un modello di lettura dell'attività registrata; non sostituisce il biglietto sorgente, la conversazione, l'affare o il record di connettore.

CRM

Flussi di lavoro

I flussi di lavoro rispondono a un evento e gestiscono una serie ordinata di azioni, tra cui passi ritardati riprese da cron.

Schermo del prodotto
Flussi di lavoroUn flusso di lavoro mostra il suo trigger, le azioni completate, ritardo di attesa e passo successivo.Flussi di lavorospazio di lavoroACCETTAZIONE9RUNNING42FAIENTE1LIVELLI DI LAVOROAttivacontact.createdIniziaPasso 1Invia email di benvenutoFattoRitardoAspetta. 2 giorniAspettarePasso 2Creare attività di venditaIl prossimo1CHOOSE TRIGGERL'evento inizia la corsa2ORDER STEPSAzioni e ritardi3MONITORRiprendi il cron
Un flusso di lavoro mostra il suo trigger, le azioni completate, ritardo di attesa e passo successivo.

Creare un flusso di lavoro scegliendo il trigger, aggiungendo passaggi in ordine e abilitandolo. I relè vengono memorizzati, non tenuti da una richiesta del browser; il cron unificato riprende i due flussi di lavoro.

I modelli di partenza incorporati includono benvenuto dopo la registrazione, il ringraziamento post-acquisto e la conferma demo.

Le azioni di progettazione da idempotent. Un retry non deve inviare duplicate richieste di movimento del denaro o creare record duplicati.

Supporto

Biglietti

I biglietti sono il vostro canale di supporto formale. Hanno reparti, priorità, obiettivi SLA, allegati, note interne e la discussione completa della conversazione. OpsIQ admin, modulo di biglietto / letto, ingestione e-mail, chat escalation, connettore o API.

Biglietti
Dettaglio bigliettoUn biglietto con una meta sidebar (priorità, dipartimento, SLA, stato), il thread di conversazione e AI bozza e rimborsi azioni.Bigliettospazio di lavoroT...12345PrioritàAltoDipartimentoFatturazioneSLA3h 12m sinistraStatoAprireSono stato accusato due volte per il mioabbonamento a giugno 3.AIConfermato il duplicatoaddebito, trattamento dei rimborsi.AI bozzetto di rispostaRimborso1THREADEDconversazione completa + note2SLA & ROUTINGPriorità, dept, timer3AI DRAFTRispondi per te
Ogni biglietto porta la sua priorità, dipartimento, timer SLA e filo completo, e l'IA può redigere la risposta per voi.

Come scorre un biglietto

1
Biglietto arriva

Un cliente invia un messaggio via e-mail, chat escalation, ticket incorporati o l'amministratore crea uno. Il biglietto ottiene un ID unico (ad esempio, T-12345).

2
Triage

L'intelligenza artificiale legge il soggetto e il corpo, assegna la priorità (Low/Normal/High/Urgent), suggerisce un dipartimento e rileva il sentimento.

3
Rispondi

Un agente apre il biglietto, legge il contesto (profilo cliente, dati della piattaforma da connettori, biglietti precedenti), e scrive una risposta.

4
Chiudere

Quando il problema viene risolto, l'agente chiude il biglietto. Il cliente è avvisato; se il cliente risponde dopo la chiusura, il biglietto riapre automaticamente.

Azioni per il cliente

Dipartimento di Cambiamento

Spostare il biglietto in un reparto diverso (ad esempio, dal generale alla fatturazione). Utile quando l'instradamento iniziale era sbagliato.

Assegnare all'agente

Assegnate il biglietto a un membro del team specifico, l'agente assegnato vede il biglietto nella vista "I miei biglietti".

Aggiungi nota interna

Scrivere una nota visibile solo al personale. Utilizzare per: i risultati delle indagini, motivi di rimborso, contesto ingegneristico, impegni precedenti.

Biglietti di unisciti

Combina i biglietti duplicati dello stesso cliente, il biglietto fuso riceve un tag [MERGED]. Tutti i messaggi di entrambi i biglietti sono conservati nel biglietto sopravvissuto.

Risposta in scatola

Inserire un modello di risposta prescritta. Variabili come {{customer_name}} e {{ticket_id}} vengono automaticamente sostituiti.

Riscrittura dell'AI

Lascia che l'IA migliori la tua risposta a progetto: regola il tono, accorcia/lunghezza, fissa grammatica o traduci.

Cambiare la priorità

Impostazione a basso, normale, alto o urgente. Priorità colpisce timer SLA e ordine di selezione.

Cambia lo stato

Impostare per aprire, in attesa, il cliente, risolti o chiusi.

Esempio di lavoro: gestione di un cliente infelice

E-mail del cliente: "Sono stato addebitato due volte per il mio abbonamento"

Scenario:
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.
Cosa fare:

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.

Dipartimenti

Dipartimenti comuni: Generale, fatturazione, tecnico, vendite, abuso, onboarding. Ogni reparto può avere diverse regole di risposta automatica, conoscenze dell'IA e incarichi del team.

Risposte in scatola

Crea modelli di risposta riutilizzabili in Impostazioni > Biglietti > Risposte in scatola. Buone risposte in scatola includono:

Esempio modello di risposta in scatola
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}}

Biglietti di fusione

Quando un cliente invia la stessa domanda più volte (via e-mail e chat, o due email separate), è possibile unire i duplicati. Vai al biglietto, fare clic su Unisci, selezionare l'altro biglietto per fondersi. Il biglietto sopravvissuto ottiene tutti i messaggi da entrambi i biglietti. L'oggetto del biglietto fuso riceve un tag [MERGED] per indicare che era combinato.

Priorità e SLA

Basso

Domande non urgenti, richieste di funzionalità, feedback generale. Target prima risposta: 24 ore.

Normale

Domande di supporto standard. Prima risposta obiettivo: 8 ore.

Alto

Impatto dell'attività del cliente. Prima risposta: 4 ore.

Urgente

Servizio in calo, incidente di sicurezza, perdita dei dati, errore di fatturazione. 1 Ora.

I timer SLA iniziano quando il biglietto viene creato e si fermano quando lo stato è "Attenti al Cliente". Se l'obiettivo SLA non viene raggiunto, il biglietto è evidenziato e a scelta aumentato.

I clienti possono vedere le note interne?+

Le note interne sono strettamente personali, non appaiono nel portale dei biglietti del cliente, nelle notifiche via email o in qualsiasi superficie di contatto con il cliente.

A cosa succede quando viene risposto un biglietto chiuso?+

Il biglietto riapre automaticamente e ritorna alla coda attiva. Il team viene notificato la nuova risposta.

Posso bloccare un biglietto per evitare ulteriori risposte?+

Sì. Utilizzare l'opzione Blocca filettatura per impedire sia al cliente che all'IA di aggiungere nuove risposte.

Supporto

Service Studio: SLA, stato flusso e qualità

La sala di controllo per il modo in cui si comporta l'operazione di supporto: le politiche SLA con scale di escalation, i calendari delle ore lavorative, un flusso di stato forzato, le impostazioni CSAT e gli switch della funzione enterprise.

Politiche SLA

Ogni nuovo biglietto ottiene una prima risposta e una scadenza di risoluzione dalla politica attiva più specifica: reparto + priorità batte il dipartimento, batte la priorità, supera il default.

Scale di escalation

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.

Ore di lavoro e calendari

Con orario di lavoro in, gli orologi SLA bruciano solo durante il tempo di lavoro, quindi un biglietto aperto Venerdì sera non è violato da Sabato. I calendari nominati (zona temporale, giorni, ore, vacanze) possono essere attaccati alle politiche individuali per le squadre in diverse regioni.

Flusso di stato

A da/a matrice limitando quale stato cambia gli amministratori possono fare, con una preimpostazione in stile Zendesk. L'automazione, l'email in entrata e le risposte dei biglietti orientate al cliente sono sempre esenti, quindi una matrice rigorosa non può mai inceppare il gasdotto.

Approvazioni

Gli agenti richiedono il segnale di un biglietto (rimborsi su una soglia, eccezioni politiche). Un approvatore nominato o qualsiasi amministratore completo decide con una nota; i richiedenti non possono mai approvare la propria richiesta.

Relazioni con i bambini

Link biglietti come relativi, duplicati, genitori/bambini o blocchi; split risponde a un nuovo biglietto collegato (il rovescio di unione, senza e-mail al cliente); seguire i biglietti per le notifiche in-app, e facoltativamente gli indirizzi email del seguatore CC sulle risposte in uscita.

Posta in diretta e collisioni

Con la casella di posta in tempo reale abilitata, i nuovi biglietti e le risposte appaiono per gli agenti entro pochi secondi attraverso il flusso di notifica esistente. Su un biglietto, gli agenti vedono chi altro sta visualizzando e riceve un banner di avviso quando un compagno di squadra sta già scrivendo una risposta.

Instradamento AI-Aware

Le regole di routing possono essere abbinate ai segnali di triage AI: priorità, categoria, rischio di sentimento e di escalation, oltre a valori personalizzati digitati dal modulo di richiesta del portale.

💡
Ogni interruttore aziendale si spegne. Accendere uno in Service Studio → Qualità & Automation è l'opt-in; lasciandoli fuori mantiene il comportamento identico a prima dell'aggiornamento.
Perché un cliente può ancora riaprire un biglietto chiuso quando la mia matrice proibisce di chiudere → aperto?+

La matrice governa solo le azioni ADMIN. Le risposte, le risposte e-mail e l'automazione orientate al cliente sono deliberatamente esentate in modo che una politica rigorosa non possa mai bloccare i clienti fuori o rompere il gasdotto.

Le scale SLA sostituiscono la vecchia azione di violazione?+

No. Le politiche salvate con un'unica azione di violazione continuano a funzionare invariata, una scala sostituisce l'azione singola solo sulle politiche in cui si definiscono i passaggi.

Supporto

Autoriparazione ed escalation dei biglietti

Auto-reply consente all'AI di rispondere automaticamente ai nuovi biglietti. Escalation sposta i biglietti in un dipartimento diverso quando l'IA rileva le esigenze specifiche. Entrambe le funzionalità lavorano attraverso biglietti nativi e biglietti creati via email.

Autoriparazione
Risposta automatica ai ticketUn flusso: nuovo biglietto, un ritardo di due minuti, AI risponde da conoscenza e contesto, poi inviato o salvato come progetto.Autoriparazionespazio di lavoroQuando arriva un nuovo bigliettoNuovo bigliettoqualsiasi fonteRitardo2 minAI rispondeKB + contestoSent.o progettoSe un umano risponde durante il ritardo, l'auto-riparazione viene annullata. Intent può escalare in un altro dipartimento prima.1DELAYGli umani hanno la prima occasione2AI REPLIESDa KB + contesto3OR ESCALATEPercorso per intento
I nuovi biglietti ottengono un breve ritardo (così gli esseri umani possono saltare in), poi una risposta AI dalla vostra conoscenza, inviato o in coda come un progetto.

Come funziona l'auto-riparazione

1
Approfondimento del biglietto

Un nuovo biglietto viene creato da qualsiasi fonte (email, chat, portale, API).

2
Risposta programmata

OpsIQ aspetta il ritardo configurato (default: 2 Ciò dà agli agenti umani la possibilità di rispondere prima.

3
La prima risposta vince

Se un agente umano risponde durante il ritardo, l'auto-riparazione viene annullata. In caso contrario, l’IA genera una risposta.

4
Generare e inviare

L'IA legge il biglietto, controlla la base di conoscenza, il contesto del connettore e la cronologia dei clienti, poi scrive una risposta. La risposta viene inviata (o in coda come un progetto per la revisione, a seconda delle impostazioni).

Come funziona l'escalation

1
Configurare i dipartimenti

Impostare quali dipartimenti possono ricevere escalation (ad esempio, Billing può essere aumentato dal generale, tecnico può essere scalato dal generale).

2
Classificare il biglietto

Prima di auto-riparare, l'IA classifica l'intento del biglietto: fatturazione, tecnica, rimborso, abuso, ecc.

3
Spostarsi se necessario

Se l'intento del biglietto corrisponde a un reparto di escalation, il biglietto viene spostato.

4
Generare in nuova voce

La risposta viene generata utilizzando la conoscenza del dipartimento di destinazione e l'addestramento AI.

Riferimento

Autoriparazione abilitata

Accendi il pulsante per attivare l'autoriparazione AI per i biglietti.

Dipartimenti ammessi

Quali dipartimenti possono ricevere auto-risposte. Iniziare con i reparti a basso rischio (Generale, Vendite) prima di consentire la fatturazione.

Ritardo

Quanto tempo aspettare prima che l'IA risponda (in secondi). 120 secondi (2minuti). Impostare per0per risposte istantanee.

Orari di apertura

Opzionalmente impostare diversi ritardi per le ore di lavoro vs. dopo ore.

Stop alla risposta di amministratore

Se un agente umano risponde prima, annullare l'auto-rippola.

Escalation abilitato

Abilitare il routing automatico del reparto basato sull'intento dei biglietti.

Reparti di escalation

A quali dipartimenti possono essere aumentati i biglietti.

Stato di escalation

Quale stato impostare quando escalating (ad esempio, Open, Pending).

Nota di escalation

Se aggiungere una nota interna che spiega la ragione di escalation.

Biglietti creati via email

I biglietti creati da posta elettronica (tramite la spedizione di posta o MX-piped) seguono le stesse regole di auto-riparazione e di escalation. La risposta AI viene inviata come risposta email al cliente.

L'AI si ricollegherà automaticamente alle domande di fatturazione?+

Solo se si abilita auto-riparazione per il dipartimento di fatturazione. Si consiglia di iniziare con auto-replicarsi fuori per la fatturazione e consentendo solo dopo aver addestrato l'IA con una conoscenza completa di fatturaggio e testato accuratamente.

E se l'IA rispondesse male?+

Se un cliente risponde dicendo che la risposta è sbagliata, un agente umano dovrebbe intervenire. Review AI Storia per capire perché l'intelligenza ha dato la risposta sbagliata, quindi aggiornare la base di conoscenza o formazione AI per impedirlo di nuovo accadere.

Posso rivedere le auto-risposte prima che vengano inviate?+

Sì. Impostare la modalità di consegna in "Draft" invece di "Invia automatica". Le bozze a risposta automatica appariranno nella coda dei Draft per la revisione umana prima dell'invio.

Supporto

Portale dei biglietti incorporato

Il portale dei biglietti incorporato consente di aggiungere un'interfaccia di gestione dei biglietti a qualsiasi sito web. I clienti possono visualizzare i loro biglietti, creare nuovi e rispondere, il tutto senza entrare nell'amministratore OpsIQ.

Come funziona
Portale dei biglietti incorporatoUn portale di supporto incorporato in un sito web che mostra ai propri clienti i biglietti e il pulsante new-ticket.yoursite.com/supportCentro di supportoNuovo bigliettoI tuoi occhiali#1042 · Domanda di rimborsoAprire#1038 · Aiuto di configurazioneRisolto#1031 · Copia della fatturaFinanziamenti1EMBEDAggiungi a qualsiasi sito2SELF-SERVEI clienti vedono i loro biglietti3NO LOGINIdentità gestita in modo sicuro
Portale dei biglietti incorporato

Tre sapori embed

Incorporamento inline

Renders il portale dei biglietti all'interno di un tuffo nella tua pagina. Il portale prende la larghezza completa del suo contenitore.

widget di galleggiamento

Mostra un pulsante galleggiante che apre il portale dei biglietti in un pannello.

Autentico

Richiede un gettone di identità firmato. I clienti vedono solo i propri biglietti.

Installazione

Biglietto embed snippet
<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>

Identità token generazione

Per la modalità autenticata, il server deve generare un token di identità firmato. Questo token dice a OpsIQ che il cliente è in modo da vedere solo i propri biglietti.

PHP · generare token di 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 gancio · token di 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, generare l'identità token
// 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;
}

Caratteristiche Widget

Lista dei biglietti

Una lista "aspettando" evidenzia i biglietti che la squadra ha risposto.

Conversazione filettata

Vista conversazione completa con testo ricco, allegati e timestamp.

Risparmio di auto

Le risposte del progetto di cliente sono auto-saldate in modo da non perdere lavoro se si navigano via.

Inquinamenti dal vivo

Il widget sonda per nuove risposte ogni ~12 secondi.

Risolvere / riaprire

I clienti possono risolvere o riaprire i propri biglietti con un clic.

Le note interne del personale non sono mai mostrate ai clienti nel biglietto incorporato.
Supporto

Posta in arrivo

Chat Inbox è dove il vostro team gestisce conversazioni dal vivo dei clienti. Mostra chat attive, conversazioni assegnate, chat con AI e cronologia archiviata.

Posta in arrivo
Posta in arrivoUn agente di tre parti chat in arrivo: elenco conversazione, la conversazione dal vivo con un chip AI Draft e un pannello contestuale visitatore / CRM.Posta in arrivospazio di lavoroJDJane.dove è il mio ordineMOMensahDomanda di fatturazioneRTRita.AI gestitoDov'è il mio ordine?Spedito oggi · UPSAI pronto per il progettoRispondi...VISITAJane Doe - 1980Stati Uniti · Chrome3 ordini passatiLTV$480CRMFase: cliente1UNIFIEDOgni chat live2CONTEXTVisitatore + pannello CRM3AI ASSISTProgetto e riscrittura
Una casella di posta per ogni chat dal vivo, elenco conversazione, il thread con AI draft sul tap e pieno contesto visitatore + CRM.

Gestione delle conversazioni

Chat attive

Conversazioni attualmente in corso. Green dot = cliente sta digitando o recentemente attivo.

Gestito da IA

Conversazioni in cui l'IA sta rispondendo, puoi prendere il controllo in qualsiasi momento cliccando su "Unisciti".

Mi hai dato il permesso

Conversazioni assegnate a voi in particolare.

Aspettare

Conversazioni in cui il cliente sta aspettando una risposta.

Archivio

Conversazioni completate. Ricercabile per parola chiave, data e cliente.

Consegna dall'IA all'uomo

Quando si prende il controllo di una conversazione dall'IA, seguire queste tre regole:

1
Saluta personalmente

"Ciao, questa e' Sarah della squadra di supporto."

2
Contesto di riferimento

Mostrati di leggere la conversazione: "Posso vedere che hai chiesto del tuo stato d'ordine."

3
Impostare le aspettative

Di' al cliente cosa succede dopo: "Ora sto cercando di rispondere e ti risponderò tra qualche minuto".

Accendere/disattivare l'AI per conversazione

Quando l'intelligenza artificiale è attiva, l'IA genera risposte. Quando spenta, solo gli agenti umani possono rispondere. L'AI ricorda il contesto di conversazione anche quando si spegne e torna indietro.

Modalità di uscita / fuori orario

Configurare gli orari di lavoro in Impostazioni. Al di fuori delle ore lavorative, l'IA può: (1) Continua a rispondere ai clienti, (2) Mostrare un messaggio "vicino" e creare un biglietto per il follow-up, o (3) Disattivare la chat completamente e mostrare il modulo del biglietto. Scegli il comportamento che si adatta al modello di supporto.

Gestione di conversazioni dure

1
Stai calmo.

Non corrispondere all'intensità emotiva del cliente, riconoscerne la frustrazione senza essere difensiva.

2
Raccogliere i fatti

Prima di rispondere, raccogliere le informazioni pertinenti: dettagli dell'ordine, stato del conto, biglietti precedenti.

3
Escalate presto

Se la situazione comporta rimborsi, minacce legali, abusi o sicurezza, escalate a un membro del team senior piuttosto che cercare di gestirlo da solo.

Posso avere chat di squadra (agente)?+

Sì. Utilizzare note interne all'interno di una conversazione per comunicare con altri agenti, queste note non sono mai visibili al cliente.

Cosa succede quando chiudo una chiacchierata?+

Se il cliente invia un nuovo messaggio in seguito, viene creata una nuova conversazione.

Supporto

Canali di messaggistica

Collegare WhatsApp, Facebook Messenger, Instagram DM, Telegram e LINE in modo che i clienti di messaggi già inviare si arriva nella stessa casella di posta in arrivo come la chat del sito web, risposto dallo stesso assistente AI.

Ogni canale si comporta in modo identico una volta connesso: un messaggio cliente diventa una conversazione nella casella di posta in chat, il tuo assistente AI risponde utilizzando le stesse conoscenze e istruzioni della chat del sito web, e qualsiasi agente può prendere il sopravvento.

Che cosa si collega

Facebook Messenger & Instagram

Un clic. Connettori aperti→Facebook Messenger & Instagram DM, fare clic su Connetti, accedi con l'account Facebook che gestisce la tua pagina e scegliere la pagina. Instagram viene fornito con esso quando la tua Pagina ha un account professionale di Instagram collegato.

WhatsApp

Un clic dove il tuo provider lo offre: aprire il connettore Messaging Hub e utilizzare Connect WhatsApp, quindi seguire l'accesso guidato di Meta per selezionare o creare il tuo numero WhatsApp Business.20gateways.

Telegramma

Due minuti. Messaggio @BotPadre in Telegramma, inviare/newbot,scegliere un nome e un nome utente che termina in "bot", e incollare il token che ti dà nel connettore Telegram.OpsIQregistra il webhook per voi.

LINE

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

Aggiungi un provider (Twilio, Vonage, Termii e altri) nel Messaging Hub con le sue credenziali e numero di mittente.

Ogni connettore mostra le proprie istruzioni passo per passo all'interno del cassetto, tra cui esattamente cosa copiare e dove. Non hai mai bisogno di credenziali dello sviluppatore per le opzioni di un clic.

Accendere un canale

Collegare un canale non lo avvia. Vai a Settings → Client Chat → Advanced → Messaging Channels, accendere il master toggle e poi il canale individuale. Ogni canale ha un proprio AI auto-rippo di commutazione, in modo da poter pilotare su uno prima di aprire il resto.

1
Collegare il canale

Nei connettori, utilizzando le istruzioni nel cassetto del connettore.

2
Testare la connessione

Fare clic su Test. Fa una vera chiamata al fornitore e ti dice cosa c'è di sbagliato se qualcosa è.

3
Abilitare i canali di messaggistica

Impostazioni delle impostazioni→Chat client→Avanzato. Accendere l'interruttore principale, poi il canale.

4
Inviati un messaggio

Da un altro account, inviare la tua pagina, il numero o il bot. Dovrebbe apparire nella casella di posta in chat entro pochi secondi e ottenere una risposta AI.

Rispondi a:

Le piattaforme di messaggistica limitano quanto tempo un'azienda può rispondere dopo che un cliente scrive. OpsIQ mostra il tempo rimanente su ogni conversazione e applica la regola per voi.

WhatsApp

24 ore dall'ultimo messaggio del cliente. Dopo di che si può inviare solo un modello approvato, che si configura nella stessa scheda Avanzate.

Messenger & Instagram

24ore per risposte normali; gli agenti possono rispondere7giorni dopo, sotto l'indennità di Meta.

Telegramma, LINE, SMS

Nessuna finestra impostata sulla piattaforma.

⚠️
Se una risposta fallisce perché la finestra è chiusa, la conversazione mostra il motivo. Questa è una regola della piattaforma, non un limite OpsIQ.

Questioni comuni

I clienti vedono che una AI ha risposto?+

Solo se gli dici che la risposta viene dalla tua pagina, dal numero o dal bot esattamente come una risposta umana. Le tue istruzioni per l'intelligenza artificiale controllano il tono e si identificano da solo.

Un agente può prendere il controllo di metà conversazione?+

Si. Apri la conversazione nella casella di posta in chat e fai clic su Unisciti. L'IA si ferma, digiti, e il cliente vede un filo continuo sul loro lato.

E se scollegassi un canale?+

Utilizzare Disconnect sul connettore. La cronologia dei messaggi viene mantenuta; nuovi messaggi semplicemente smettere di arrivare, e la piattaforma è detto di interrompere l'invio.

Possono due spazi di lavoro utilizzare la stessa pagina Facebook?+

No. Una pagina appartiene a uno spazio di lavoro alla volta. Collegarlo altrove lo muove, e il primo spazio di lavori smette di ricevere messaggi, quindi scollegare deliberatamente piuttosto che riconnettersi altrove.

Supporto

conversazioni di chat reali

Questi esempi mostrano come un'intelligenza artificiale clienti dovrebbe gestire scenari comuni, utilizzarli per testare la tua formazione AI e identificare le lacune.

10 esempi di conversazione

1. Il cliente di ritorno chiede dell'ordine

Scenario:
Customer: Hi, I placed an order 3 days ago and haven't received any shipping notification yet. Order #ORD-5523.
Cosa fare:

L'AI dovrebbe: (1) Guarda su ordine #ORD-5523 attraverso il connettore. (2) Se disponibile, segnalare lo stato attuale e le informazioni di tracciamento. (3) Se l'ordine è ritardato, riconoscere il ritardo e fornire una linea temporale stimata. (4) Non inventare uno stato di spedizione se il connettore non ne ha uno.

2. Prospect chiede circa i prezzi

Scenario:
Customer: How much does your Pro plan cost? Do you offer annual billing?
Cosa fare:

L'AI dovrebbe: (1) Risposta dalla base di conoscenza con i prezzi correnti. (2) Spiegare la differenza tra fatturazione mensile e annuale. (3) Se la risposta non è nella base di conoscenza, dire così e offrire per collegarli con le vendite. (4) NON inventare i prezzi che non è nella base di conoscenza.

3. Rimborso richiesto dal cliente

Scenario:
Customer: This is ridiculous! Your product does not work and I want my money back NOW.
Cosa fare:

L'AI dovrebbe: (1) Riconoscere la frustrazione con calma. (2) Chiedere il numero di ordine o l'e-mail dell'account. (3) Spiegare il processo di rimborso. (4) Creare un biglietto di supporto o escalare ad un agente umano. (5) Non promettere un rimborso, che richiede l'approvazione umana.

4. Doppio caso bordo di fatturazione

Scenario:
Customer: I was charged twice this month. My bank shows two charges of $29.99.
Cosa fare:

L'AI dovrebbe: (1) Riconoscere la preoccupazione. (2) Raccogliere i dettagli pertinenti (email, date di addebito). (3) Spiegare che le questioni di fatturazione richiedono una revisione umana. (4) Creare un biglietto del dipartimento di fatturazione con i dettagli. (5) Impostare la priorità verso l'alto.

5. Cliente multilingua

Scenario:
Customer: Bonjour, je voudrais savoir si vous livrez en France?
Cosa fare:

L'AI dovrebbe: (1) Rispondere nella lingua del cliente se tale lingua è supportata. (2) Rispondere alla domanda sulla consegna in Francia dalla base di conoscenza. (3) Se la lingua non è supportata, rispondere nella lingua predefinita e menzionare quali lingue sono disponibili.

6. conversazione dopo ore

Scenario:
Customer: Hello, is anyone there? I need help with my account.
Cosa fare:

L'AI dovrebbe: (1) Se configurato per l'intelligenza artificiale dopo ore, rispondere e assistere. (2) Se dopo-ore crea i biglietti, dire: "Il nostro team è attualmente offline. Ho creato un biglietto di supporto per voi e qualcuno seguirà durante le ore di lavoro." (3) Fornire il numero del biglietto.

7. Confronto preacquisto shopper

Scenario:
Customer: How does your product compare to [Competitor X]?
Cosa fare:

L'AI dovrebbe: (1) Descrivi i punti di forza del tuo prodotto in realtà. (2) Non peccare il concorrente. (3) Se c'è una pagina di confronto nella base della conoscenza, collegarsi ad essa. (4) Se il cliente chiede le caratteristiche che non avete, siate onesti.

8. Il cliente desidera una raccomandazione

Scenario:
Customer: I run a small online store with about 100 orders per month. Which plan is right for me?
Cosa fare:

L'AI dovrebbe: (1) Fare domande di chiarimento se necessario (ad esempio, quali caratteristiche più importanti).2) Raccomandare un piano basato sulla base della conoscenza. (3) Spiegare perché questo piano si adatta alle loro esigenze. (4) Menzione che possono iniziare con un piano più piccolo e l'aggiornamento dopo.

9. Il cliente cerca di ottenere uno sconto non autorizzato

Scenario:
Customer: I saw online that you give 50% discounts. Can I have one?
Cosa fare:

L'AI dovrebbe: (1) Spiegare politicamente le promozioni attuali se esiste. (2) NON creare o promettere sconti che non sono nella base di conoscenza. (3) Se il cliente persiste, offrire di collegarli con il team di vendita.

10. Il cliente ha bisogno di aiuto con una caratteristica

Scenario:
Customer: How do I export my data? I can't find the export button.
Cosa fare:

L'AI dovrebbe: (1) Fornire istruzioni passo-passo dalla base di conoscenza. (2) Includere il percorso esatto della pagina e la posizione del pulsante. (3) Se la funzione richiede un piano specifico, menzionarlo. (4) Se la funzione non esiste, essere onesti e suggerire alternative.

Supporto

Routing di chat escalation

Quando una chat dal vivo ha bisogno di una persona reale, l'IA risponde a due domande: quale squadra possiede questa conversazione e chi dovrebbe essere detto. Entrambi sono configurati in Impostazioni, Chat client, flusso di supporto, sotto i reparti di routing AI.

Scegliere quali dipartimenti l'AI può utilizzare

I due box su quel pannello sono una whitelist, i dipartimenti spostati a destra sono gli unici che l'IA può indirizzare o aprire biglietti. Tutto ciò che rimane sulla sinistra è invisibile ad esso, anche se il dipartimento esiste e è staffato.

💡
Se nessun dipartimento è abilitato, OpsIQ rientra nel routing legacy in ogni reparto che può trovare.

Chi riceve l'escalation

Quando l'IA escala una chat, OpsIQ invia le email alle persone che si agganciano a quel dipartimento. Gestisci quella lista una volta, sulla pagina Team and Departments, ed entrambi i ticket escalation di chat lo seguono.

I membri del team

Ogni amministratore attivo allegato al dipartimento riceve la propria copia.

Amministratore primario

Usato quando nessun membro del team è attaccato, quindi un'escalation raggiunge ancora qualcuno.

Nessuno ha attaccato

La consegna non è possibile. Il pannello di routing segna che il dipartimento in rosso e l'IA non dice al visitatore un umano è stato notificato.

⚠️
L'indirizzo email di un dipartimento non viene deliberatamente usato come destinatario, l'indirizzo è la casella postale del dipartimento, la posta in arrivo si abbina a quella per aprire i biglietti.

Il reparto di catch-all

Esattamente un dipartimento porta il segno catch-all. Riceve chat che l'IA non poteva tranquillamente posizionare, ed è un ultimo resort piuttosto che il percorso normale.

1
Segnali chiari vincere

Billing wording va a un dipartimento di fatturazione, hosting e l'errore formulazione ad uno tecnico, acquisto di parole alle vendite.

2
Il classificatore AI prova il prossimo

Se le parole chiave sono inconclusive, il modello legge la conversazione e sceglie dai dipartimenti abilitati.

3
Allora il catch-all

Solo quando entrambi vengono fuori vuoto fa il reparto catch-all ricevere la chat.

4
La guardia di vendita

Se il catch-all è un reparto di vendita e il visitatore non ha mostrato alcun segnale d'acquisto, OpsIQ cerca invece un supporto o dipartimento tecnico, quindi le domande di supporto ordinarie non si accumulano nelle vendite.

Cosa viene detto al visitatore

Se l'email di escalation va fuori, l'IA dice al visitatore che il team è stato avvisato. Se non può uscire, l’intelligenza artificiale dice qualcosa di onesto e li invita a lasciare il messaggio nella chat invece.

Il pannello dice "Nessuno da avvisare" per un dipartimento+

Aprire Team e Dipartimenti, allegare almeno un amministratore attivo, quindi ricaricare la pagina delle impostazioni. Il pannello legge in diretta.

La chat può andare da qualche parte oltre la squadra?+

Un indirizzo personalizzato precedentemente salvato per un dipartimento ancora sovrascrive l'elenco del team. Le nuove impostazioni dovrebbero collegare le persone al reparto, quindi c'è un unico posto da mantenere.

Perche' la mia cattura e' saltata?+

Se è così, e il visitatore non ha mostrato alcun segnale di acquisto, OpsIQ percorsi per un supporto o reparto tecnico di proposito.

Supporto

Email mailbox e bozze

OpsIQ può connettersi a mailbox per creare automaticamente i biglietti da posta in arrivo e inviare risposte come email.

Email
Email al bigliettoAn IMAP mailbox on the left feeding incoming emails into a threaded ticket with an AI-drafted reply on the right.Emailspazio di lavoro[email protected] · IMAPRichiesta di rimborso[email protected]Non riesco a accedere[email protected]Copia della fattura[email protected]Biglietto 1042da e-mail · BillingVorrei un rimborso per ilCarica duplicata...Progetto AIRecensione &amp; invia risposta1INGESTIMAP & inoltro2TO TICKETSFilato automaticamente3AI DRAFTSRisposte per la recensione
Estrarre l'email in over IMAP (o inoltro), trasformate ciascuno in un biglietto filettato, e lasciate che l'IA progetti la risposta per la revisione.

Collegamento di una casella di posta

Protocollo

IMAP (la maggior parte dei fornitori), Gmail API (Google Workspace), o Microsoft Graph (Outlook 365).

Impostazioni necessarie

Host, porta, crittografia (SSL/TLS), nome utente, password o password app, cartella (di solito INBOX).

Mappatura del Dipartimento

Mappa la casella di posta per un servizio di biglietti. [email protected] creare i biglietti nel dipartimento "Supporto".

Impostazione Gmail (passo per passo)

1
Abilita 2-Step Verification

Vai a Google Account > Sicurezza > 2-Step Verificazione e abilitarlo.

2
Creare una password di app

Vai a Google Account > Sicurezza > Password dell'app. Selezionare "Mail" e "Altri (OpsIQ)". Copia 16- password di caratteri.

3
Entrare OpsIQ

Vai all'indirizzo e-mail > Mailboxes > Add. Impostare l'host: imap.gmail.com, porto: 993, crittografia: SSL, nome utente: [email protected], password: la password dell'app.

4
Test di prova

Se riuscite, OpsIQ inizierà a inquinare per nuove email all'intervallo configurato.

Outlook 365 configurazione

1
Controllare IMAP è abilitato

Nelle impostazioni di Outlook > Mail > Sync e-mail, assicurarsi IMAP è abilitato.

2
Usare password app o auth moderno

Se MFA è abilitato, creare una password dell'app. Altrimenti, utilizzare la password normale.

3
Entrare OpsIQ

Host: outlook.office365.com, porto: 993, crittografia: SSL, nome utente: [email protected].

cPanel configurazione webmail

1
Trova IMAP impostazioni

In cPanel > Account e-mail, fare clic sul tuo account email per IMAP impostazioni.

2
Entrare OpsIQ

Host: di solito mail.yourdomain.com o il tuo server hostname, porta: 993 (SSL) o 143 (STARTTLS), nome utente: indirizzo email completo.

E-mail di AI

Quando l'auto-riparazione è impostata in modalità "Draft", l'IA genera bozze di risposta che appaiono nella coda dei Draft.

Recensione

Leggi il progetto e verifica la precisione.

Modifica

Modificare il testo, tono o contenuto prima dell'invio.

Invia

Approva il progetto e lo invii come risposta email.

Discorso

Eliminare il progetto se non è appropriato.

Invio automatico

Se la fiducia è sufficientemente elevata e l'invio automatico è abilitato, i bozzetti vengono inviati automaticamente dopo un ritardo configurabile.

Perché le email non vengono convertite in biglietti?+

Check:1) La casella di posta è collegata e sana? Cerca lo stato verde in Email > Mailboxes. (2) Il lavoro di cron è in esecuzione? Email polling richiede cron. (3) L'e-mail viene filtrata o spostata in una cartella diversa da INBOX?

Posso usare più cassette postali?+

Ogni casella postale può essere mappata in un reparto diverso. [email protected] va a Supporto, [email protected] va a Billing.

Supporto

Soddisfazione del cliente (CSAT)

CSAT misura il biglietto e la soddisfazione della chat, supera le risposte infelice e confronta i risultati AI e umani.

Schermo del prodotto
Soddisfazione del clienteLa pagina CSAT combina schede di punteggio, follow-up detractor, commenti, guasti del reparto e degli agenti, e feedback della chat.Soddisfazione del clientespazio di lavoroRISPOSTE386AVERAGE4.6POSITIVE91%LIVELLI DI LAVOROSeguito del detratore12 risposte valutate1–2RecensioneSondaggi per bigliettiInviare 24h dopo la chiusuraAutomaticoRecensione di chatAI 4.5 · Umano 4.7ConfrontaVista dell'agentePunteggio e conteggio rispostaCoach1WATCH AVERAGEUtilizzare la tendenza, non un punteggio2FOLLOW DETRACTORSLeggi il commento3COMPARE FAIRLYAI e umano
La pagina CSAT combina schede di punteggio, follow-up detractor, commenti, guasti del reparto e degli agenti, e feedback della chat.

I sondaggi dei biglietti sono programmati dopo la chiusura (normalmente 24 ore dopo). Una risposta positiva è un punteggio di4o 5. Utilizzare la coda del detratore per i punteggi di 1 o2e leggere il biglietto/conversazione prima di contattare il cliente.

Il feedback di chat viene segnalato separatamente per conversazioni risolte e maneggiate dall'intelligenza artificiale, non devono essere utilizzati formati a basso campione per classificare agenti o modelli.

Supporto

Trasmissioni di email del team

La pagina della piattaforma e-mail consente all'operatore autorizzato di inviare un messaggio una volta a tutti gli agenti attivi, agenti selezionati o un dipartimento e rivedere la cronologia dell'invio.

Schermo del prodotto
Piattaforma di posta elettronicaIl compositore di posta elettronica del team mostra il pubblico, l'argomento, il messaggio e la storia della consegna passata.Piattaforma di posta elettronicaspazio di lavoroRECIPIENTI12DELIVERED11FAIENTE1LIVELLI DI LAVOROAudizioneTutti gli agenti attiviSelezionatoOggettoSupporto di luglio rotaProntiMessaggioNote di pianificazione e di escalationProntiStoriaTrasmissioni e risultati precedentiVista1CHOOSE PEOPLETutti, selezionati o di squadra2WRITE CLEARLYOggetto e messaggio3REVIEW HISTORYConfermare il risultato
Il compositore di posta elettronica del team mostra il pubblico, l'argomento, il messaggio e la storia della consegna passata.

Questa pagina è per i messaggi operativi interni, non marketing del cliente. Scegli il più piccolo pubblico corretto, nomi di anteprima e indirizzi, quindi inviare. Consegna utilizza il percorso di posta elettronica in uscita configurato e registra il risultato.

Supporto

Mailbox, consegna e email in entrata

Configure how OpsIQ sends email, turns inbound messages into tickets and proves the sending domain is ready.

Schermo del prodotto
Impostazioni e-mailLe impostazioni di posta elettronica combinano il routing in uscita, dall'identità, l'ingestione della casella di posta, i controlli di consegna e l'e-mail di prova.Impostazioni e-mailspazio di lavoroQUESTOSMTPMAILBOXES3DOMINIOPassaggioLIVELLI DI LAVOROConnettore preferitoSMTP / connettore del fornitoreConfiguratoDall'identitàSupport <[email protected]>ProntiIMAP casella postale[email protected]· INBOXSondaggioLiberabilitàProtezione SPF · DKIMPassaggio1CHOOSE OUTBOUNDConnettore o SMTP2CONNECT INBOXIMAP o tubo3TESTInviare e verificare
Le impostazioni di posta elettronica combinano il routing in uscita, dall'identità, l'ingestione della casella di posta, i controlli di consegna e l'e-mail di prova.

E-mail di uscita

Gli amministratori completi possono scegliere il connettore e-mail preferito; OpsIQ torna indietro a configurato SMTP/mail consegna se del caso. Impostare un riconoscibile Dal nome/indirizzo, inviare un test e controllare 24- ore di successo / metriche infallibili.

Posta elettronica

Una casella di posta IMAP ha bisogno di un nome, indirizzo e-mail, dipartimento target, host, porta, modalità di sicurezza, username, password, cartella, stato di inquinamento e scelta di certificazione-valida. Poll ora per verificare l'ingestione prima di aspettare cron.

Pipa istantanea

Nello stesso server, un tubo di posta può passare direttamente il messaggio RFC822 grezzo. Un server di posta remota può POST il messaggio raw al endpoint protetto in entrata utilizzando il suo token. Entrambi i percorsi entrano nella stessa pipeline di deduplicazione, filettatura e bigliettazione.

Liberabilità

Il controllo SPF/DKIM/DMARC è una prova di consulenza per il dominio configurato. Un controllo verde non garantisce la posizione in arrivo, ma un guasto deve essere risolto prima dell'invio dei messaggi di produzione.

Supporto

Supporto Portal Studio

Support Portal Studio progetta e pubblica l'esperienza di supporto orientata al cliente senza richiedere risorse immagini esterne.

Schermo del prodotto
Supporto Portal StudioPortal Studio mostra un'anteprima reattiva accanto a tema, navigazione, conoscenza, biglietto, assistente, forma, piè di pagina e CSS controlli.Supporto Portal Studiospazio di lavoroTEMPLATEModernoPREVIADesktopSTATOProgettoLIVELLI DI LAVOROTemaColori e tipologia di marcaModificaNavigazioneConoscenza, biglietti, assistenteModificaModulo di bigliettoCampi, routing e copiaModificaPubblicazioneConvalida e viviRecensione1CHOOSE TEMPLATEPartenza dalla struttura2PREVIEW SIZESDesktop a mobile3PUBLISH SAFELYRecensione e rilascio
Portal Studio mostra un'anteprima reattiva accanto a tema, navigazione, conoscenza, biglietto, assistente, forma, piè di pagina e CSS controlli.

Utilizzare il modello come punto di partenza, quindi configurare tema, layout, navigazione, ricerca della conoscenza, modulo del biglietto, assistente, piè di pagina, marca, comportamento dei biglietti, personalizzato CSS Preview desktop, tablet e mobile prima di pubblicare.

Supporto

La conoscenza si trova in una situazione di crisi.

La coda di conoscenza-gap raccoglie le domande dei clienti che l'IA non poteva rispondere con fiducia in modo che il team possa migliorare la copertura.

Schermo del prodotto
La conoscenza si trova in una situazione di crisi.La coda di gap si pone in domande mancate o a bassa fiducia e traccia se la squadra li ha risolti.La conoscenza si trova in una situazione di crisi.spazio di lavoroOPEN GAPS28REPEATED9RESOLVED116LIVELLI DI LAVOROLimiti di migrazioneDomanda 14 volteAltoSupporto per il weekendDomanda 8 volteMezzo medioTempi di rimborsoDomanda 6 volteMezzo medioAPI regioneDomanda 3 volteBasso1REVIEW QUESTIONVedi contesto di conversazione2CHOOSE FIXArticolo o richiesta3RESOLVEVerificare la risposta successiva
La coda di gap si pone in domande mancate o a bassa fiducia e traccia se la squadra li ha risolti.

Aprire un gap per leggere la domanda originale e la conversazione vicina, quindi scegliere il corretto fix: aggiornare un articolo esistente, creare un nuovo articolo di conoscenza, aggiungere un fatto commerciale, correggere i dati del connettore o modificare le istruzioni di escalation.

Supporto

Amministrazione pagina di stato

La pagina di amministrazione dello stato comunica la salute del servizio e gli incidenti utilizzando componenti, stati attuali e aggiornamenti.

Schermo del prodotto
Amministrazione dello statoL'amministrazione di stato elenca componenti e incidenti in modo che gli operatori possano pubblicare informazioni chiare e tempestive sui servizi.Amministrazione dello statospazio di lavoroOVERALLOperativoCONCORRENZA7INCIDENTS1LIVELLI DI LAVOROSito webOperativoVerdeAPIPrestazioni degradateGuardaIngestione e-mailOperativoVerdeincidente attualeAPI indagine di latenzaAprire1UPDATE COMPONENTScegli lo stato chiaro2POST INCIDENTAggiornamenti tempestivi3RESOLVEChiudere con il riassunto
L'amministrazione di stato elenca componenti e incidenti in modo che gli operatori possano pubblicare informazioni chiare e tempestive sui servizi.

Quando un incidente colpisce i clienti, pubblicare un avviso iniziale, aggiungere aggiornamenti time-stamped come i fatti cambiano, e chiudere con una sintesi di risoluzione concisa. Non utilizzare la pagina di stato come registro debug interno; la diagnostica sensibile appartiene in OpsIQ e log del server.

AI

Impostare la tua AI

Configurazione dell'intelligenza artificiale è dove si sceglie il tuo fornitore, modello e controlli dei costi. OpsIQ supporta più fornitori: Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google), e Grok (xAI). È possibile utilizzare il proprio API chiave (BYOK) o AI Gestito se disponibile sul tuo piano.

Impostare AI
Configurazione dell'intelligenzaUn pannello delle impostazioni dell'IA: un provider Managed-AI / BYOK, un selettore di modello e un metro token-budget mensile.Configurazione dell'intelligenzaspazio di lavoroConfigurazione dell'intelligenzaFornitoreAI GestitaLa tua chiave (BYOK)Modelloclaude · bilanciatoBilancio mensile AI62%1TWO MODESAI gestito o BYOK2PICK A MODELVelocità e profondità3BUDGETSTappi di gettone e controllo dei costi
Scegliere l'intelligenza artificiale o la propria chiave, scegliere un modello per velocità vs profondità e cap mensile spendere con un bilancio gettone.

Scegliere un fornitore

Claude (in inglese)Anthropic)

Forte ragionamento, attento con fatti, buono a seguire istruzioni complesse. Modelli: claude-sonnet-4-20250514- No.3.5-sonnet. Migliori per: conversazioni di supporto, domande tecniche, analisi dettagliate.

GPT-4o (OpenAI)

Modelli: gpt-4o, gpt4o-mini. Il meglio per: risposte rapide, scrittura creativa, domande di conoscenza ampia.

Gemini(Google)

Buone a domande di fatto, supporto multilingua. Modelli:gemini-2.0- Cavolo.gemini-1.5-pro. Migliore per: supporto multilingua, lookup di fatto.

Largo (xAI)

Modelli: grok-3_mini-fast. Il meglio per: risposte rapide, tono casual.

BYOKvs Managed AI

BYOK (Porta la tua chiave)

Fornite il vostro API chiave dal provider. Paga direttamente il fornitore. Controllo completo sulla selezione e sull'utilizzo del modello.

AI Gestita

AI è fornito come parte del vostro OpsIQ No. API L'uso è misurato contro il saldo di credito AI del vostro piano.

Impostazione passo-passo

1
Vai alla configurazione dell'AI

Nell'amministratore OpsIQ, naviga in Impostazioni > Configurazione AI.

2
Seleziona fornitore

Scegli il tuo fornitore di AI dal menu a tendina.

3
Inserisci API chiave

If using BYOK, enter your API key. For Managed AI, this is handled automatically.

4
Scegli il modello

Seleziona il modello specifico da utilizzare. I modelli più piccoli sono più veloci e economici. I più grandi modelli danno risposte di qualità migliori.

5
Connessione di prova

Fare clic su "Connessione di prova" per verificare il tasto e il modello API.

6
Salva

Fare clic su Salva per attivare la configurazione AI.

Controlli dei costi

Bilancio mensile

Quando il budget è raggiunto, l'IA presenta con grazia degrado (rispondenze più corte, nessun auto-rimpetto) piuttosto che fermarsi completamente.

Limite di token per conversazione

Token massimi per singola conversazione. Previene conversazioni in fuga dal consumo di crediti eccessivi.

Avviso di bilanciamento basso

Quando il saldo di credito AI scende sotto la soglia (default: 50,000 tokens), un avviso appare nell'amministratore.

Configurazione per spazio di lavoro

Se gestisci più siti, ogni spazio di lavoro può utilizzare un provider diverso, un modello e un budget. Lo spazio di lavorazione eredita i default globali a meno che non siano sovrascritti. Per configurare per spazio di Lavoro: passare allo spazio di lavorare, quindi vai alla configurazione dell'IA e salva le impostazioni lì.

Ottenere API chiavi

Anthropic (Claude)

Vai a console.anthropic.com > API Chiavi > Crea chiave. Copiare il tasto che inizia con "sk-ant-".

OpenAI(GPT)

Vai a platform.openai.com > API Creare una nuova chiave segreta. Copia la chiave che inizia con "sk-".

Google (in inglese)Gemini)

Vai a aistudio.google.com > ottenere API Key. Crea una chiave per il tuo progetto. Copia la chiave.

xAI (Greco)

Vai a console.x.ai > API Keys. Crea e copia la chiave.

Testare la configurazione dell'intelligenza artificiale

Scenario:
After entering your API key, click "Test connection." You should see a green checkmark and a sample response from the AI.
Cosa fare:

Se il test fallisce: (1) Controllare che API la chiave è corretta (senza spazi extra). (2) Controllare che il tuo account abbia effettuato la fatturazione con il provider. (3) Controllare che il nome del modello sia valido. (4) Se si utilizza Managed AI, verificare che la licenza sia attiva.

Quale fornitore è il migliore?+

Claude è eccellente per le conversazioni di supporto. GPT-4o è veloce e versatile. Gemini gestisce bene più lingue. Provate ciascuno e vedere quali producono i migliori risultati per la vostra specifica custodia d'uso.

Posso cambiare i fornitori dopo?+

Sì. Cambia il provider e la chiave API in qualsiasi momento. La storia della conversazione esistente è preservata. L'IA utilizzerà il nuovo fornitore per tutte le conversazioni future.

Cosa succede quando scappo di crediti?+

L'AI si degrada con grazia: le risposte diventano brevi, automaticamente pause e l'amministratore mostra un avviso di basso equilibrio.CRMcontinuare a lavorare senza AI.

AI

chat clienti più intelligente e conveniente

Un insieme di controlli opt-in che rendono la vostra chat cliente più intelligente (ci sono motivi attraverso un account del cliente come un agente umano) o meno (invierà l'IA in meno, o risposte in meno passaggi). Ogni controllo è spento per impostazione predefinita e indipendente, accendendo uno su non cambia mai alcun altro comportamento.

Risposte più intelligenti (modalità di età)

Un normale chatbot risponde a una domanda da un'occhiata. Con Modalità agente Su, l'assistente può effettuare diversi controlli di sola lettura in un solo turno e trasversale loro, ad esempio "ho biglietti aperti ed è il mio saldo sufficiente per il mio prossimo rinnovo?" viene risposto in una risposta con i calcoli fatti.

Modalità agente

Fino a poche ricerche di sola lettura per turno, cross-riferite prima di rispondere. Accendere quando si dispone di una piattaforma collegata (WHMCS, Shopify, Stripe, Zendesk, ecc.). Off = il comportamento di un singolo-lookup odierno, invariato.

Pensare la profondità per le risposte degli agenti

Quanto duramente il modello motivi su curve complesse (basse/medium/high). Iniziare su Low; la maggior parte delle domande di supporto sono gestite bene là.

Modello agente

Perde un modello più forte solo per l'agente complesso gira, quindi la chat di tutti i giorni rimane su un modello leggero, economico e solo le curve dure pagano per profondità.

Pianificare avanti · risposte one-pass (beta)

Un piccolo passo di pianificazione decide quali lookup da tirare e se la base di conoscenza è necessaria, quindi risponde in UNA chiamata principale invece di diversi passaggi. Una sub-toggle sotto modalità agente. Non può essere abilitata a meno che la modalità Agente non sia attiva. Stessa qualità della risposta, meno chiamate su domande multi-part.

Conversazione e comprensione

Memoria a lunga conversazione (beta)

Mantiene un breve riassunto in esecuzione dei messaggi più vecchi (nomi, numeri di biglietto/fattura, importi, decisioni) così l'assistente rimane coerente tra le chat molto lunghe senza dover reinviare l'intera trascrizione.

Tolleranza del tipo

Legge piccoli tipi ("le mie biglietti aperte", "voce non pagate") come le parole previste in modo che le informazioni giuste siano trovate invece di mancare. Funziona con ogni piattaforma collegata. Off per impostazione predefinita; utile per chat mobile-heavy.

contesto di account

Solo allega l'istantanea del conto del cliente quando la domanda è in realtà circa il loro account (equilibrio, fatture, biglietti, servizi), saltando su domande generali.

Risparmio di costi

Salta la ricerca di conoscenze per i saluti (beta)

"Ciao", "grazie" e "ok" non attivano una ricerca di base della conoscenza, quelle risposte non lo usano mai.

Risposta più lunga consentita (tokens)

Caps how long a single reply can be. Reply length is the most expensive part of a call, so a sensible cap (around 500 for support) is the single most effective chat cost control. Only lowers your global limit, never raises it.

Su Impostare la vostra AI

Pensare la profondità (customer & admin chat)

Quanto pensa il modello prima di rispondere (minimo ad alto). Mantenere la chat del cliente su minimo / basso per velocità; riservare impostazioni più alte per l'analisi e il copilota amministratore.

Per-AI modello (per lavoro)

Ogni superficie AI (live chat, bozze di biglietti, sintesi, analisi, copilota amministratore, promozioni, Site Intelligence e altro ancora) può essere eseguita sul proprio modello.

Admin chat costi controlli

Il copilota di amministrazione può mantenere una memoria di lavoro limitata e caricare solo gli strumenti di cui ha bisogno una domanda (utensili magre) invece che ogni utensile ogni volta.

In treno la tua AI

Istruzioni per il compressione

Your instructions are sent on every turn, so their length is a recurring cost. The Compress button rewrites a slot to say the same thing in fewer words. It refuses the rewrite if it would drop any {variable} or rule, and reports what it protected, so it never silently changes meaning.

"Ciò che è già nel cervello" (ℹ️)

Mostra ciò che OpsIQ già sa circa il vostro business per slot, in modo da poter eliminare qualsiasi cosa si stava ripetendo nelle proprie istruzioni.

💡
Per il supporto breve chat l'ingresso (istruzioni + dati del conto + storia, inviato ogni giro) di solito costa più della risposta corta, caching e contesto magra aiuto la maggior parte là. Per i contenuti generati a lungo domina l'output. Il tappo di lunghezza di risposta e una profondità di pensiero inferiore pagano fuori lì.
Questi cambiano come la chat risponde già?+

No. Ogni controllo è disattivato per impostazione predefinita e indipendente, accendendo uno aggiunge solo il suo comportamento; spegnendolo restituisce la chat a come ha funzionato prima.

Che ordine dovrei accenderli?+

Eseguire chat quotidiana su un modello di luce e pin un modello agente più forte. Quindi, se si dispone di una piattaforma collegata, attivare la modalità Agent, quindi pianificare avanti, poi Long-conversation memoria. Poi contesto magra, skip-KB-for-greetings, e un tappo di risposta. Infine comprimere le istruzioni.

Il kit agente di amministrazione: ricerca web, runbooks, missioni, trasferimento file

La chat di Admin AI è un ingegnere del lavoro, non solo una casella di domanda. Può la ricerca corregge sul web, mantenere una libreria delle procedure operative, pattugliare i server su un programma e spostare i file. La maggior parte di questo è guidato chiedendo in chat; l'unica cosa che si configura davanti è quale provider di ricerca Web utilizza, sulla Impostazione della pagina dell'AI.

Ricerca web

Costruito in

L'agente cerca il web per i documenti, messaggi di errore e informazioni correnti mentre funziona. Fuori dalla casella questo utilizza DuckDuckGo, che non ha bisogno di chiave e nessuna configurazione.

Libri di corsa

In chat

Una libreria salvata delle vostre procedure ("come facciamo X qui"). L'agente scrive una giù dopo aver inchiodato un lavoro difficile e la segue la prossima volta, quindi il know-how sopravvive alla fine della chat.

Missioni

Programmato

"Ogni mattina, controlla lo spazio del disco e i registri di errore e dimmi." I risultati arrivano sulla tua campana dell'amministratore.

Trasferimento file

In chat

Chiedere un file di registro e ottenere un link di download privato, o avere un file copiato da un server connesso a un altro. Entrambi incappucciati su 5 MB.

Ricerca web dell'agente di amministrazione (sul Impostare la tua AI)

Fornitore di ricerca

Quello che utilizza l'agente di ricerca web. Il default è DuckDuckGo: keyless, free, funziona su ogni installazione. Serper.dev (risultati Google) di solito restituire risultati migliori, ma ogni esigenza API Se un fornitore chiave non riesce per alcun motivo (cattivo chiave, quota utilizzata, problemi di rete), che la ricerca torna a DuckDuckGo automaticamente, quindi la ricerca non va mai al buio.

Ricerca API chiave

La chiave per il tuo fornitore scelto, necessaria solo per Brave, Tavily o Serper. Una volta salvato è mascherato e non mostrato mai più sulla pagina; incollare un nuovo per sostituirlo. Un provider keyed diventa attivo solo quando sia il fornitore che la sua chiave vengono salvati.

Libri di corsa

Quando l'agente ha appena lavorato attraverso un lavoro che si desidera fare di nuovo lo stesso modo, dire "salvare che come un runbook chiamato pulizia notturna". Da allora in poi vede il runbook per nome in ogni sessione, e quando si chiede il lavoro per nome (o descriverlo) tira i passaggi e li segue. È possibile chiedere a esso di elencare, aggiornare o eliminare runbooks in qualsiasi momento.

💡
Quando l'agente segue uno, ogni passo che cambierebbe un server passa ancora attraverso la modalità di autorizzazione corrente e mostra le carte di approvazione abituali.

Missioni

Una missione è un lavoro ricorrente che l'agente corre da solo: ogni ora, ogni giorno ad una set-ora o settimanale in un determinato giorno. Le missioni sono lette solo per disegno. Possono leggere server, dati e web, ma non possono mai cambiare nulla; indagano e riferiscono. Quando una missione termina, i risultati atterrare come una notifica sulla campana di amministrazione. Dite "correre la pattuglia del mattino adesso" per attivare uno in pausa richiesta, o chiedere all'agente di elencare.

⚠️
Le missioni corrono dal cron OpsIQ, quindi deve essere impostato (vedi Cron e l'automazione). Un "run it now" di un solo-off dalla chat funziona anche tra i cron che si esibiscono sulla maggior parte dei server.

File di trasferimento

Chiedere un file ("portami il registro di errore di oggi dal server web") e l'agente lo sta e risponde con un link privato per scaricare. Il collegamento funziona solo per amministratori firmati e scade dopo circa un giorno. I file sono bloccati a 5 MB; per qualcosa di più, chiedere all'agente di comprimerlo o trim sul server prima.

L'agente può anche copiare un singolo file tra due server collegati, di nuovo fino a 5 MB. La scrittura sulla destinazione è trattata come qualsiasi altra modifica che fa: in modalità richiesta si ottiene una carta di approvazione prima, il file esistente viene eseguito il backup e la copia è reversibile. Per sicurezza, il contenuto del file viene ri-letto dalla fonte al momento della applicazione della copia, non preso dalla chat.

AI

Allena la tua AI

Imparare l'intelligenza artificiale è dove si insegna OpsIQ come comportarsi. Scrivere suggerimenti che definiscono la personalità, i confini, il focus della conoscenza e le regole di escalation. Pensate a esso come scrivere un manuale di formazione per un nuovo agente di supporto.

Allenatore AI
Allena la tua AIUn editor di istruzioni AI con schede Clienti/Admin e tono semplice-inglese, sempre e mai regole.Allena la tua AIspazio di lavoroCliente AIAdmination AITonoAmichevole, conciso, mai spinoso.SempreOffri un'offerta umana per le controversie di fatturazione.MaiPrometti un rimborso senza controllare l'account.1TWO MANUALSClienti e amministratori AI2PLAIN ENGLISHTono, sempre, mai3GROUNDEDPiù la vostra base di conoscenza
Allena l'IA come un nuovo noleggio, manuali del cliente e dell'amministratore scritti in inglese semplice (tono, sempre, mai), messo a terra nella tua KB.

Due aree di formazione

Richiesta di assistenza clienti

Controlla come l'intelligenza artificiale parla ai tuoi clienti nel widget di chat. Questo è il prompt più importante per ottenere a destra.

Avviso AI

Controlla come l'IA assiste il tuo team di amministrazione nel cruscotto dell'operatore, che gestisce le query interne e l'esecuzione delle azioni.

Scrivere un grande cliente AI prompt

Il tuo cliente AI prompt dovrebbe coprire queste aree:

1
Identità

Chi è l'IA? Dagli un nome, un ruolo e una personalità. Esempio: "Tu sei Luna, un assistente di assistenza clienti amichevole e competente per Acme Store".

2
Tono e stile

Esempio: "Sii professionale ma caldo. Usa il linguaggio semplice. Evitare il gergo. Tenere le risposte concise (2-3 paragrafi max)."

3
confini della conoscenza

Esempio: "Si sa dei nostri prodotti, prezzi, spedizione e politica di ritorno. Non si conosce sui prodotti concorrenti o le decisioni aziendali interne."

4
Regole di escalation

Quando si dovrebbe consegnare a un umano? Esempio: "Escalate ad un agente umano quando: il cliente chiede un rimborso, menziona l'azione legale, segnala un problema di sicurezza, o pone la stessa domanda tre volte."

5
Cose da non fare

Esempio: "Non si promuovono i rimborsi, non condividono mai formule di prezzi interni. Non inventare mai le caratteristiche del prodotto che non esistono.

Esempio di richieste

Esempio di cliente AI prompt · negozio online
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
Esempio cliente AI prompt · hosting company
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

Rifinire il prompt nel tempo

1
Avviare con le basi

Inizia con i confini dell'identità, del tono e della chiave. Non cercare di coprire tutto il giorno uno.

2
Recensione AI Storia settimanale

Leggi le conversazioni in cui l'IA ha dato risposte sbagliate o suboptimali.

3
Aggiornare il prompt

Esempio: se l'IA continua a promettere i rimborsi, aggiungete "Non promettete mai un rimborso. Dite che vi aumenterete al team di fatturazione".

4
Aggiungi la conoscenza

Se l'IA non può rispondere a una domanda, aggiungere la risposta alla Base di Conoscenza piuttosto che cercare di adattare tutto nel prompt.

⚠️
Tenere il vostro prompt sotto 2,000 parole. I suggerimenti per un periodo di tempo eccessivo possono confondere l'IA e aumentare i costi di token.
Qual è la differenza tra il prompt e la base di conoscenza?+

Il prompt definisce personalità, confini e regole. La base di conoscenza fornisce informazioni di fatto (informazioni sui prodotti, prezzi, politiche). L'IA legge entrambi, ma il comportamento delle forme rapide mentre la KB fornisce risposte.

Posso avere richieste diverse per diversi dipartimenti?+

Se avete bisogno di un comportamento AI diverso per diversi reparti, usate la base di conoscenza per fornire informazioni specifiche del reparto e menzionare il contesto del dipartimento nel vostro prompt.

AI

Storia dell'intelligenza

La storia dell'intelligenza artificiale mostra ogni conversazione che l'IA ha avuto con i clienti e gli amministratori.

Storia dell'intelligenza
Storia dell'intelligenzaUn registro di AI si gira con i distintivi di tipo, la domanda e risposta, il tempo di risposta ed il risultato.Storia dell'intelligenzaspazio di lavoroOgni volta dell'IA, registratochatD: dov'è il mio ordine?A: spedito oggi, tracciamento UPS...0.9sansweredticketProgetto di risposta per T-12345rimborso riconoscimento redatta1.4sdraftedadminSommatizzi i biglietti di questa settimana12-line riassunto riportato2.1sFattochatD: annullare il mio pianotramandato a un umano0.7sescalated1EVERY TURNPrompt, risposta, azione2SEARCHABLEFiltro e esportazione3OWNER-ONLYSentiero di audit completo
Ogni volta AI (chat, bozza dei biglietti, azione di amministrazione) ha effettuato l'accesso con il prompt esatto, la risposta, la durata e l'esito.

Che ogni conversazione mostra

Data e ora

Quando e' successo la conversazione.

Identità del cliente

Nome e email se noto, altrimenti IP e paese.

Canale

widget di chat, biglietto auto-riparazione, bozza e-mail o admin AI.

Messaggi

Trascrizione completa della conversazione: messaggi dei clienti e risposte dell'IA.

Utilizzo di Token

Quanti gettoni la conversazione consumata. L'uso di alto token può indicare l'IA sta dando risposte eccessivamente verbalizzate o la conversazione è andata in cerchio.

Azioni adottate

Qualsiasi azione l'IA eseguita durante la conversazione (ha preso ordine, creato il biglietto, ecc.).

Valutazione

Se CSAT è abilitato, il rating di soddisfazione del cliente per questa conversazione.

Trovare problemi

Ricerca per parola chiave

Cerca argomenti specifici per vedere come l'IA li gestisce. Esempio: cercare "il rimborso" per verificare se l'AI sta seguendo la tua politica di rimborso.

Filtra per valutazione

Mostra solo conversazioni a basso rating per concentrarsi su clienti insoddisfatti.

Filtra per canale

Mostra solo biglietti auto-risposte a audit risposte automatizzate separatamente dalla chat.

Ordina per uso token

Le conversazioni ad alto tono possono indicare problemi: l'intelligenza artificiale, andare in cerchio o non rispondere alla domanda.

Regolamentazione di revisione settimanale

1
Controllare conversazioni a basso tasso

Leggi la trascrizione completa. Che cosa è andato storto? Era un gap di conoscenza, un problema di tono, o una risposta sbagliata?

2
Controlla conversazioni ad alto contenuto

Questi potrebbero indicare confusione, l'intelligenza artificiale si ripeteva? Non ha capito la domanda?

3
Aggiornamento della formazione

Per le lacune di conoscenza, aggiungi articoli alla Knowledge Base. Per i problemi di comportamento, aggiorna il prompt AI. Per rispondere alle risposte sbagliate ricorrenti, aggiungere regole di correzione esplicite.

Trovare lacune di conoscenza

Scenario:
You search AI History for "installation" and find 15 conversations where the AI said "I do not have specific installation instructions for this product."
Cosa fare:

Crea articoli di base per le conoscenze per ogni fase di installazione del prodotto. Dopo averli aggiunti, prova facendo domande sull'installazione AI.

AI

Intuizioni dell'IA

AI Insights analizza automaticamente i modelli di conversazione e le superfici risultati attuabili: domande comuni, tendenze di soddisfazione, lacune di conoscenza e schemi di escalation.

Intuizioni dell'IA
Intuizioni sull'intelligenza (Intelligence Hub)L'Intelligence Hub: uno strumento AI Today's Brief, Smart Alerts, uno Score-a-Lead / Analyse-a -Page e un grafico 14-Day Traffic Pattern.Intuizioni dell'IAspazio di lavoroIl BRIEF di oggiTraffico su 12%; 3 cavi caldi;2le offerte hanno bisogno di seguire.Avvisi intelligentiErrori di checkout in spuntoRimbalzare su /pricingNuovo hot lead da USEntrate in attesa della settimana scorsaPunteggio di un piombo / Analizzare una paginaIP o URL…Corri!14-Modello di traffico giornaliero1Il BRIEF di oggiAI scrive il riassunto del mattino2SMART ALERTSAnomalie superficiali3ON DEMANDScore a lead · analizzare una pagina
Il vero e proprio centro di intelligenza: un AI-scritto Today's Brief, Smart Alerts per anomalie, il punteggio in-demand piombo e l'analisi della pagina, e il modello di traffico 14-day.

Quali intuizioni mostrano

Domande principali

Se "Come reimpostare la mia password?" è #1, la vostra base di conoscenza ha bisogno di una guida di ripristino password prominente.

Tendenze di soddisfazione

CSAT scores over time. Is AI satisfaction improving or declining? Sudden drops may indicate a knowledge base change that broke something.

Tasso di risoluzione

Qual è la percentuale di conversazioni che l’IA risolve senza intervento umano? 70% Il servizio è buono. 50% Questo significa che l'IA ha bisogno di più allenamento.

Motivi di escalation

Perché le conversazioni vengono consegnate agli esseri umani. motivi comuni: il cliente ha richiesto l'uomo, AI non poteva rispondere, argomento sensibile, problema di fatturazione.

La conoscenza si trova in una situazione di crisi.

Argomenti in cui l'IA dice spesso "non so" o dà risposte a bassa fiducia.

Media lunghezza di conversazione

Quanti messaggi per conversazione. Conversazioni molto lunghe (10+ messaggi) potrebbe indicare che l'IA non sta comprendendo la domanda.

Utilizzo di insight per migliorare

Scenario:
AI Insights shows that 23% of escalations are "Customer asked about warranty" and the AI could not answer.
Cosa fare:

Questo è un chiaro divario di conoscenza. Passos: (1) Scrivere un articolo di garanzia completo nella Knowledge Base che copre tutti i termini di garanzia, il processo di reclamo e le esclusioni. (2) Aggiornare il prompt AI per le informazioni sulla garanzia di riferimento. (3) Monitorare l'intelligenza artificiale la settimana prossima per vedere se le escalation di garanzia diminuiscono.

AI

Playbook di amministrazione AI

L'Amministratore AI (Ask OpsIQ) aiuta il vostro team a gestire OpsIQ dall'interno del cruscotto di amministrazione. Potete chiederlo per cercare i dati, spiegare le funzionalità, riassumere i biglietti e eseguire azioni della piattaforma.

Admination AI
Playbook di amministrazione AILa casella di comando Ask-OpsIQ con una scheda d'azione della piattaforma proposta dall'IA che mostra i parametri e conferma/cancella.Chiedere OpsIQspazio di lavoroChiedere OpsIQSospendere il servizio per conto indebito 4821AIAzione proposta: suspend_service#4821 (sovvenzione) $120)piattaforma: WHMCS · reversibile · verificatoConfermaAnnullamento1ASK ANYTHINGComandi Plain-English2PROPOSE FIRSTAzione mostrata prima che si esaurisca3YOU CONFIRMScoperto e audit
Dite all'AI amministratore ciò che volete in inglese semplice; propone l'azione esatta (scope, reversibile, audited) e attende la conferma.

Cosa può fare l'amministratore AI

Cercare i dati

Chiedi: "Mostrami tutti i biglietti da [email protected]" o "Qual è lo stato dell'ordine #ORD-5523?"

Riassumere

Chiedi: "Summarize the last 10 _" o "Quali sono i problemi di supporto più importanti questa settimana?"

Caratteristiche di spiegazione

Chiedere: "Come faccio a configurare auto-riparazione?" o "Che cosa significa la carta di frequenza di rimbalzo?"

Esegui azioni

Chiedi: "Crea un biglietto per [email protected] su fatturazione o "Close ticket T-12345"

Domande sulla piattaforma

Chiedi: "Quanti visitatori abbiamo ricevuto ieri?" o "Qual è il nostro fatturato questo mese?"

Esempio di conversazioni

Ricerca di un cliente

Scenario:
Admin asks: "Find customer [email protected] and show me their recent activity"
Cosa fare:

L'IA cerca il cliente attraverso tutte le fonti di dati connesse: sessioni dei visitatori, biglietti, conversazioni chat, ordini e contatti CRM.

Ottenere un riepilogo giornaliero

Scenario:
Admin asks: "What happened today?"
Cosa fare:

L'AI riassume: "Oggi avevi 245 visitatori (in alto) 12%), 8nuovi biglietti (3 risolto da AI),2nuovi ordini totalizzanti $198 e1chat escalation su un ritardo di spedizione."

Esecuzione di un'azione

Scenario:
Admin asks: "Change ticket T-5523 priority to Urgent"
Cosa fare:

L'IA conferma: "Sto cambiando il biglietto T-5523 La priorità da Normal a Urgent. Questo influenzerà il timer SLA. Confermare?" Lei conferma, e l'azione viene eseguita.

💡
L'Admin AI esegue solo azioni registrate nel Registro di Azione, non può inventare azioni o sistemi di accesso al di fuori OpsIQ.
AI

Scenari AI clienti

Questa sezione copre scenari AI comuni orientati al cliente con i suggerimenti di comportamento e formazione previsti.

Cliente AI
Scenari AI clientiUna libreria di domande del cliente abbinato al comportamento AI previsto e un tag risultato per ciascuno.Scenari AI clientispazio di lavoroBiblioteca di scenario · comportamento AI previsto"Dove è il mio ordine?"Controlla l'ordine tramite connettore, da tracciareRisolvere"Voglio un rimborso"Riconoscimento, mai promessa · mano a un umanoManifestazione"Il servizio è a terra?"Stato di controllo, stato attuale del rapportoStato"Cancella il mio account"Confermare l'intenzione, poi passare a un umanoConferma1SCENARIOSQuestioni comuni2EXPECTEDCome l'intelligenza dovrebbe rispondere3TESTTrovare lacune di formazione
Una biblioteca di domande reali dei clienti e esattamente come l'IA dovrebbe gestire ciascuno, per testare la vostra formazione e trovare lacune.

Biblioteca dello scenario

Richiesta stato dell'ordine

Scenario:
Customer: "Where is my order #12345?"
Cosa fare:

Comportamento AI previsto: (1) Guarda l'ordine attraverso il connettore della piattaforma. (2) Rapporto dello stato attuale (processo, spedito, consegnato).3) Includi il numero di tracciamento se disponibile. (4) Se l'ordine è ritardato, riconoscere e fornire la timeline stimata. (5) Non inventare mai informazioni di tracciamento.

Richiesta di ripristino password

Scenario:
Customer: "I forgot my password and cannot log in"
Cosa fare:

Comportamento AI previsto: (1) Fornire i passaggi di reset della password dalla base di conoscenza. (2) Includere il link di reset o percorso pagina. (3) Menzione che l'e-mail di reset può richiedere alcuni minuti. (4) Suggerisci di controllare la cartella spam. (5) Se il cliente non riesce ancora a reimpostare, escalate verso un umano.

Richiesta di disponibilità

Scenario:
Customer: "Can you add dark mode to the mobile app?"
Cosa fare:

Comportamento AI previsto: (1) Grazie per il suggerimento. (2) Spiegare come vengono gestite le richieste di funzionalità (legate, revisionate, priorità).3) Non promettere che la funzione sarà costruita. (4) Se esiste una caratteristica simile, menzionarla.

Concorso di fatturazione

Scenario:
Customer: "I was charged but my service is not working"
Cosa fare:

Comportamento AI previsto: (1) Riconoscere la frustrazione. (2) Controllare lo stato del servizio se possibile. (3) Escalate al dipartimento di fatturazione con tutti i dettagli. (4) Non promettere un rimborso. (5) Impostare la priorità del biglietto per l'Alto.

Domanda off-topic

Scenario:
Customer: "What is the weather like in London today?"
Cosa fare:

Comportamento AI previsto: (1"Sono il tuo assistente di supporto [Società] e può aiutare con domande sui nostri prodotti e servizi. Per informazioni meteo, prova un servizio meteo." (2) Chiedi se hanno una domanda di prodotto.

Come faccio a testare il comportamento AI del cliente?+

Apri il tuo sito web in un browser privato/incognito e chatta con l'IA come cliente. Prova domande comuni, casi di bordo e scenari avversari. Verifica che l'AI segue le tue regole richieste e utilizza correttamente i contenuti della base delle conoscenze.

AI

Base di conoscenza AI

La Knowledge Base è una libreria di articoli che l'IA utilizza per rispondere alle domande. Quando un cliente fa qualcosa, l'intelligenza ricerca la base di conoscenza per gli articoli pertinenti e li usa per generare una risposta accurata e messa a terra.

Base di conoscenza
Base di conoscenzaFonti che si nutrono in un negozio di conoscenze, poi una AI generando una risposta messa a terra e citata.Base di conoscenzaspazio di lavoroFontiSito web crawlArticoli di aiutoDomande frequentiDocumenti importatiConoscenzasemantico + parola chiaveAIRisposta a terracon una fonte citata."Rimborsi di fondi 3–5giorni lavorativi."1INGESTCrawl, FAQ, importazione2RETRIEVESemantic + parola chiave3GROUNDEDRisposte dal tuo contenuto
Scatena il tuo sito e importa documenti nella base di conoscenza; l'IA recupera i pezzi giusti e le risposte, messa a terra e citata.

Come funziona

1
Il cliente fa una domanda

"Qual è la tua politica di ritorno?"

2
AI cerca la base di conoscenza

OpsIQ trova l'articolo "Return Policy" abbinando parole chiave e significato semantico.

3
AI genera una risposta

L'IA legge l'articolo e scrive una risposta in lingua naturale basata sul contenuto dell'articolo.

4
Il cliente riceve una risposta accurata

La risposta è fondata nella vostra politica reale, non i dati di formazione generale dell'IA.

Creazione di buoni articoli

Un argomento per articolo

Scrivere un articolo separato per ogni argomento: politica di ritorno, tariffe di spedizione, configurazione account, reset password.

Scrivi come una FAQ

Inizia con la domanda che i clienti chiedono, quindi fornire la risposta. Questo aiuta le domande AI match agli articoli.

Si tratta di

"I ritorni devono essere avviati entro i giorni di consegna 30" è meglio di "Abbiamo una politica di ritorno".

Includere i casi di bordo

Che dire dei ritorni internazionali? Cosa circa i prodotti digitali? Che cosa circa gli articoli acquistati in vendita? Coprire le eccezioni.

Tienilo aggiornato

Aggiornare i prezzi, le politiche e le procedure quando cambiano.

Articoli di avvio si dovrebbe scrivere

Spedizione e consegna

Spese di spedizione, tempi di consegna, tracciamento, spedizione internazionale e ritardi di gestione.

Resi e rimborsi

Finestra di ritorno, condizioni, processo, timeline di rimborso e eccezioni.

Gestione contabile

Ripristino della password, cambiamento di posta elettronica, cancellazione dell'account e l'esportazione dei dati.

Prezzi e fatturazione

Descrizione del piano, ciclo di fatturazione, metodi di pagamento, fatture e valuta.

Guide del prodotto

Come utilizzare ogni prodotto o funzione. Istruzioni passo-passo con screenshots.

Risoluzione dei problemi

Problemi e soluzioni comuni. Messaggi di errore e loro correzioni.

Informazioni di contatto

Ore di lavoro, canali di supporto, tempi di risposta e percorsi di escalation.

Legale e conformità

Riepilogo della politica sulla privacy, termini di riepilogo dei servizi, GDPR richieste di dati.

Conoscenza del connettore

Ogni connettore può contribuire alla conoscenza dell'intelligenza artificiale. Quando un connettore è abilitato, i suoi articoli di conoscenze incorporati (catalogo del prodotto, domande comuni, risoluzione dei problemi specifici della piattaforma) sono automaticamente disponibili per l'IA. È possibile attivare o disattivare la conoscenza del connettore per connettore nelle impostazioni del Connettore.

Bilancio tosto

La base di conoscenza ha un soffitto a token configurabile (default: 32,000 _) che controlla quanto contesto di conoscenza viene inviato all'IA per conversazione. Se la vostra base di conoscenze è molto grande, l'AI seleziona gli articoli più rilevanti all'interno di questo bilancio. Aumentare il massimale se l'intelligenza artificiale non trova articoli pertinenti; diminuirlo se si desidera ridurre i costi di gettone.

Quanti articoli dovrei avere?+

Iniziare con5-10 aggiungere di più quando si identificano le lacune attraverso la storia dell'AI e l'intelligenza artificiale. 20-50 articoli per una copertura completa.

Posso importare articoli da un altro sistema?+

Attualmente, gli articoli sono creati manualmente in OpsIQ. È possibile copiare il contenuto da FAQ, centri di aiuto o documenti esistenti.

In che formato dovrebbero essere gli articoli?+

Il testo normale funziona meglio. L'intelligenza artificiale comprende il linguaggio naturale meglio che strutturato HTML o markdown. Scrivere come si spiegherebbe a un cliente.

AI

Valutazione dell'AI e Torre di Guardia

I set di valutazione trasformano le domande critiche dei clienti in test ripetibili per la qualità delle risposte, citazioni, escalation e sicurezza dell'azione.

Schermo del prodotto
Valutazione dell'AILa valutazione dell'IA elenca i casi di prova dorati, i comportamenti richiesti, gli ultimi risultati e le piste programmate della torre di avvistamento.Valutazione dell'AIspazio di lavoroSETS6CASES84PASS RATE96%LIVELLI DI LAVOROPolitica di spedizioneCitazione richiestaPassaggioRichiesta di rimborsoConferma obbligatoriaPassaggioPrestito non supportatoAzione proibitaPassaggioDomanda di migrazioneFonte prevista mancanteFile1CREATE CASESInput e regole dorate2RUN SAFELYCorsa asciutta o evasione live3WATCHOrari giornaliero o settimanale
La valutazione dell'IA elenca i casi di prova dorati, i comportamenti richiesti, gli ultimi risultati e le piste programmate della torre di avvistamento.

Gli amministratori completi possono creare set di valutazione con un'etichetta sorgente pronta e attesa, citazioni richieste, regole di conferma dell'uomo, aspettative di escalation e azioni proibite.

Torre di avvistamento programma i controlli giornalieri o settimanali tramite cron e gestisce un numero limitato di casi (fino a otto per passaggio programmato).

AI

Lingue e traduzione

Le lingue gestiscono il testo di riferimento del cliente tradotto e il comportamento usato quando OpsIQ segue la lingua del cliente.

Schermo del prodotto
LingueLa pagina Lingue mostra la lingua di origine, le lingue tradotte, il comportamento del progetto/live state e della lingua del cliente.Linguespazio di lavoroFONTEIngleseLANGUAGES4LIVELLO3LIVELLI DI LAVOROFranceseInterfaccia e contenutoViviGermaniaInterfaccia e contenutoViviSpagnoloProgetto di traduzioneProgettoSeguire il clienteRispondi in lingua rilevataSu1SET SOURCELingua originale dell'operatore2ADD LANGUAGETraduci in background3PUBLISHProgetto o live
La pagina Lingue mostra la lingua di origine, le lingue tradotte, il comportamento del progetto/live state e della lingua del cliente.

OpsIQ translates operator-entered customer-facing text. Set the source language correctly before creating translations, add target languages, then review drafts before publishing. “Follow customer language” controls response language; translating the widget interface controls its buttons, labels and system text.

Non si basa sulla traduzione automatica per il testo legale, di rimborso, di sicurezza o di sicurezza senza revisione umana.

Ogni luogo che detiene la propria formulazione è elencato con il suo numero di messaggi: messaggi di chat client, promozioni, messaggi proattivi, flussi di chat, visite guidate, annunci, bolle teaser e Indagini e forme. La superficie del sondaggio copre ogni indagine pubblicata completamente: titolo, ogni domanda, ogni opzione di risposta, pulsanti, benvenuto e ringraziamento copia, pagina cromata e pagine dei risultati. Le chiavi sono legate alla domanda ID e il valore dell'opzione, in modo da riordinare le domande o opzioni non perde mai una traduzione, e riparlare un messaggio ri-traduci solo quel messaggio.

Il sondaggio post-chat segue la lingua in cui il visitatore ha effettivamente parlato, a condizione che la lingua sia una che offrite qui; altrimenti utilizza la vostra lingua di sistema. I suoi sei campi modificabili sono tradotti anche su questa pagina e il comportamento ha un proprio interruttore nelle impostazioni della Chat del cliente.

Messaggi di biglietti e portali copre il tipo di operatori di testo fisso una volta e ogni cliente riceve poi in quella lingua: il riconoscimento dei biglietti, le conferme aperte, chiuse e feedback, i contrassegni per-dipartimento e la linea di benvenuto del portale. (L'AI auto-rimply non ha bisogno di nulla di questo, già risponde nella lingua del cliente). Clienti di posta elettronica nella propria lingua abilitato in OpsIQ Scrivendo, l’e-mail dei biglietti risolve la lingua del destinatario in questo ordine: la lingua che hanno scelto nel portale o Centro assistenza (consegnato sul biglietto), il locale sul loro record di contatto, quindi la lingua in cui hanno scritto, rilevata localmente da intervallo di script e parole marcatori, senza alcuna chiamata esterna. HTML L'involucro di posta elettronica non è deliberatamente tradotto: è markup, non prosa. E-mail di fronte al personale (notifiche, avvisi di dipartimento, slip analisti, rapporti programmati, il digestivo settimanale) usa sempre la lingua del sistema.

Supporto

Centro assistenza

Il tuo Centro assistenza è un sito di aiuto self-serve costruito dagli articoli che pubblichi. I clienti possono leggere e cercare sulla sua pagina pubblica, e proprio all'interno del widget di chat, in modo da poter trovare risposte da soli prima che aprissero mai una conversazione. Tutto ciò che proviene dalla vostra base di conoscenza, così lo stesso contenuto che motiva la tua AI alimenta anche il vostro aiuto pubblico.

Dove i tuoi clienti lo vedono

La sua pagina pubblica

Un sito di aiuto pulito e ricercabile /help.php. I clienti sfogliano per categoria, ricerca e aprire qualsiasi articolo. È possibile dar loro il proprio nome e stile.

All'interno del widget di chat

Un link di aiuto nel widget chat in modo che i clienti possono cercare i tuoi articoli senza lasciare la chat. Se hanno ancora bisogno di una persona, sono un tocco lontano da iniziare una conversazione.

Accendilo.

1
Apri la pagina Centro assistenza

Vai a Config, then Help Center nel tuo amministratore e accendere Abilita il Centro di assistenza pubblico.

2
Dagli un nome e uno sguardo

Impostare il nome Centro assistenza, che mostra nell'intestazione e nella scheda del browser, e scegliere uno stile visivo. È possibile disattivare la navigazione superiore per una pagina pulita senza menu.

3
Pubblica alcuni articoli

Niente mostra fino a quando non si pubblicano articoli ad esso. La parte successiva copre come.

Pubblica articoli al Centro di Aiuto

Gli articoli vivono nella vostra base di conoscenza. Un articolo appare nel Centro assistenza una volta che è pubblicato e contrassegnato pubblico.

Pubblica un articolo

Aprire l'articolo, contrassegnarlo pubblicato e attivare la possibilità di mostrarlo nel Centro assistenza.

Pubblica tutto in una sola volta

Utilizzare Pubblica tutto pulsante per spingere l'intero set pubblicato al Centro di assistenza in un clic, invece di farlo uno alla volta.

Trasformare le FAQ in articoli

Hai già delle FAQ? Usa Pubblica tutto per aiutare per trasformarli in articoli di aiuto, così siedono accanto a tutto il resto.

Importare una base di conoscenza esistente

Trasferirsi da un'altra scrivania? Importazione di KB pulsante sulla scheda Articoli porta una base di conoscenza esistente per voi. Hai tre modi per puntarlo al tuo contenuto:

Incolla un URL

Se riconosce la piattaforma (ad esempio Zendesk) legge l'albero di categoria esatto da quella piattaforma. Altrimenti striscia il sito e ricostruisce la struttura dalle pagine, importando solo i veri articoli e saltando le pagine di login, prezzi e contatti.

Scegli un'app collegata

Se una piattaforma è già collegata a questo spazio di lavoro e possiede una base di conoscenza, si presenta in un menu a tendina sotto Importa da un'app collegata. Selezionare e importare, no URL o password necessaria. L'app è elencata solo una volta che è collegato e impostato.

Caricare CSV

Nessun sito live a puntare? Carica un foglio di calcolo con title, categorye body colonne. Mettere Parent / Child nella colonna di categoria per costruire categorie nidificate.

In qualunque modo tu scelga, ottieni un anteprima: gli articoli trovati, raggruppati per categoria, ciascuno con una casella di controllo in modo da poter cadere qualsiasi cosa non si desidera. Nulla viene salvato fino a fare clic su Import. Successivamente è possibile Annulla l'intera importazione in un clic, o Resync a URL o importazione di app collegata in seguito per tirare in nuovi e cambiati articoli.

💡
Sviluppatori: qualsiasi connettore può pubblicizzare la sua base di conoscenza a questo dropdown dichiarando un kb_capabilities il suo blocco settings.json (Tipo) kb_source# Con un'altra # adapter e un base_template). Consultare la sezione Connettori e il riferimento del connettore della piattaforma.

Organizzare con AI

Un centro di aiuto ordinato è facile da navigare e più facile da cercare. Organizzare con AI In un clic legge i tuoi articoli pubblicati, li ordina in categorie sensibili e aggiunge tag. Crea una categoria quando ne ha bisogno, riutilizza una categoria che già si adatta, e salta tutto ciò che hai già organizzato, in modo da poterlo eseguire di nuovo ogni volta che aggiungi nuovi articoli. Accendere Lascia che l'IA organizzi sottocategorie nelle impostazioni del Centro di Aiuto e può anche file articoli sotto nidificato Parent / Child categorie, che è utile subito dopo l'importazione di una base di conoscenza che aveva sottosezioni.

💡
Le categorie danno ai clienti un modo per navigare, e tags affilare la ricerca sia sulla pagina pubblica che nel widget. È possibile rinominare o spostare le cose dopo. L'intelligenza artificiale ti dà un punto di partenza forte, non una configurazione con cui sei bloccato.

Il Centro di assistenza all'interno del widget della chat

Puoi mostrare il Centro assistenza proprio all'interno del widget di chat in modo che le persone ricercano risposte prima che ti messaggino. Nelle impostazioni del widget della chat, scegliere dove appare il link di aiuto:

In testa

Una piccola icona di aiuto nella parte superiore del widget.

In fondo

Un link di testo sotto la casella del messaggio, per esempio "Centro aiuto Sfoglia". È possibile modificare la formulazione.

Entrambi i posti

Mostralo nell'intestazione e in basso per la maggior visibilità.

Il link di aiuto ha il proprio controllo del colore sotto le impostazioni dell'aspetto widget. Nessuno per abbinare il colore del lanciatore, o scegliere un Solido colore o Gradiente. L'intera esperienza di aiuto segue il vostro tema widget, quindi sembra sempre parte del tuo marchio.

Metti il tuo centro di assistenza sul tuo indirizzo web

Fuori dalla scatola il vostro centro di aiuto ha già un indirizzo pulito e condivisibile del proprio (ad esempio /help/your-help-center). Puoi andare un passo avanti e servirlo sotto il tuo dominio, così i clienti e motori di ricerca lo vedono come parte del vostro marchio, per esempio yourdomain.com/help o help.yourdomain.com. Tutto continua a lavorare sul tuo dominio: link, immagini, ricerca e valutazioni dell'articolo.

Sotto il tuo sito principale

In Configurazione, poi Centro di aiuto# Apri il tuo cuore # Incorpora scheda e trovare "Mostra il tuo centro di aiuto sul proprio indirizzo web".Cloudflare, Nginx o Apache), copia il blocco pronto e incollalo nel tuo sito. Guida all'installazione pulsante accanto ad esso con i passaggi esatti.

Su un sottodominio

Preferito help.yourdomain.com? Lo stesso pannello ha un'opzione sottodominio. Cloudflare un sottodominio è il percorso più affidabile, e ti dà un indirizzo pulito con nulla dopo di esso.

💡
Utilizzo Cloudflare? Funziona solo il suo Worker su un indirizzo che è proxied attraverso Cloudflare(la nube arancione). Il tuo dominio principale spesso punta direttamente sul tuo sito web, quindi una regola posta sul dominio principale non può tranquillamente fare nulla. help.yourdomain.com. La guida di configurazione ti accompagna attraverso il record DNS e la rotta.
Buon per teSEO. Una volta che il centro di assistenza è sul proprio dominio, i motori di ricerca indicizzano i tuoi articoli sotto il tuo marchio. Ogni pagina dichiara il suo indirizzo corretto e la mappa del sito li elenca, quindi lo stesso articolo non viene mai indicizzato due volte.
💡
Usando il collegamento di aiuto in-widget troppo? Nelle impostazioni del widget di chat "Apri nel centro di assistenza", set Dove il link va a Il tuo dominio centro di aiuto e inserire lo stesso indirizzo. Quindi anche questi link di articolo si aprono sul tuo dominio, non sull'indirizzo OpsIQ.

Vedi come sta andando il tuo centro di aiuto

Oltre i voti a un solo articolo, il Centro assistenza ha una propria analytics. Accendere nelle impostazioni del Centro di assistenza e registra tranquillamente come le persone utilizzano il vostro aiuto: gli articoli più visualizzati, quello che cercano, e ricerche che sono tornati vuoti (un elenco di scrittura pronto), lavorando paese visitatori e dispositivo da solo, in modo da non ha bisogno del widget di chat installato per segnalare. both visualizza il tuo aiuto, la pagina pubblica e l'aiuto in-widget, così come combinato, in modo da poter vedere quanto ciascuno è effettivamente utilizzato.

💡
L'analisi rimane spenta fino a quando non lo si accende e si può avere visitatori IP indirizzi anonimi.

Scegli cosa appare in ogni parte della pagina

Ogni sezione del Centro assistenza (le categorie nella home page, gli articoli popolari, l'elenco degli articoli su una pagina di categoria e più) ha la sua regola semplice. Per ognuno è possibile mostrarlo o nasconderlo, e mostrare all oggetti, un numero di set, the più recenteo solo quelli che hai feature Quando una regola porta un elenco, i clienti ancora ottenere un link "Mostra tutto", quindi niente è veramente fuori portata.

Si decide anche come i voti disponibili sembrano: nascosto, un rapporto amichevole come "12 di 14 ha trovato questo utile", o i pollici semplici conta. Un'impostazione minima-vota ferma un nuovo articolo che mostra un imbarazzante "0fuori dal0".

Vedi gli articoli che funzionano

Ogni articolo mostra un E' stato d'aiuto? Ogni sì o no è contato per articolo, quindi puoi vedere a colpo d'occhio quali articoli rispondono bene alle domande e quali hanno bisogno di una riscrittura.

Testo e etichette

Puoi cambiare le voci e le etichette del Centro assistenza per abbinare la tua voce. Lascia un campo vuoto e torna a un predefinito ragionevole, quindi modifica solo la formulazione che vuoi modificare.

Ogni articolo che pubblichi qui è lo stesso contenuto che l'IA usa per rispondere a chat e biglietti, quindi migliorare uno migliora l'altro.

Questioni comuni

Devo scrivere contenuti separati per il Centro assistenza?+

No. È costruito dagli stessi articoli di base della conoscenza che l'IA già utilizza. Pubblica un articolo una volta e può servire entrambi.

Posso tenere degli articoli interni?+

Si', solo gli articoli che pubblichi e contrassegnano il pubblico appaiono nel Centro di Aiuto.

I clienti potranno ancora raggiungere una persona?+

Sì. Il widget aiuto collegamento siede un rubinetto lontano da iniziare una conversazione, così self-serve non intrappola mai nessuno.

Crescita e SEO

Intelligenza del sito (SEO suite)

L'Intelligenza del Sito è la suite SEO integrata di OpsIQ_ e la funzione di visualizzazione della ricerca. Striscia il tuo sito come un motore di ricerca, traccia dove ti posiziona, cerca parole chiave, guarda backlinks e concorrenti, scansiona la tua presenza sulla mappa locale, controlla la velocità della pagina e trasforma tutto in rapporti pronti al cliente, con un analista AI che spiega cosa correggere e può redigere le correzioni.

Intelligence del sito
dashboard di Site IntelligenceUna dashboard SEO che mostra un punteggio di salute del sito, il tracciamento delle parole chiave e una tendenza al traffico.Intelligence del sitoyoursite.com86SALUTE DI SITO3 problemi criticiParola chiave di ricercaIdee di aiuto#3chat live saas#7crm per le agenzie#12Scatti organici1CRAWLTrova problemi tecnici2TRACCIARanks, parole chiave, backlinks3AI ANALIZZAZIONESpiega e bozze correzioni
La panoramica di Site Intelligence: un punteggio di sito-health dall'ultima striscia, live keyword rank tracking, una tendenza di clic organici e il loop a tre fasi: strisciare, tracciare, lasciare che l'IA progetti le correzioni.

Scappare un gatto · iniziare qui

Un crawl è OpsIQ visitando le tue pagine il modo in cui un motore di ricerca avrebbe, per trovare problemi tecnici: link rotti, titoli mancanti, contenuto sottile, pagine lente, problemi di indicizzazione.

1
Iniziare il gatto

On the Overview, click to start a crawl. OpsIQ queues it and works through your pages in the background; a status indicator shows progress.

2
Leggi i report

Quando finisce, apri i problemi e la lista delle pagine. Ogni problema è raggruppato per gravità in modo da affrontare le più grandi vittorie prima.

3
Lasciare l'IA aiuto

L'analista AI produce un breve in lingua semplice di ciò che è sbagliato e perché conta, e può generare correzioni suggerite si esamina prima di applicare.

Quali tracce di Site Intelligence

Cresci & salute del sito

Scansiona le tue pagine per problemi tecnici SEO e elenca ogni pagina con i suoi problemi. Ri-correre in qualsiasi momento, o programmarlo.

Tracciamento casuale

Aggiungi le parole chiave a cui tieni; OpsIQ controlla dove il tuo sito si posiziona e traccia movimento nel tempo.

Ricerca della Parola chiave

Scopri nuove idee chiave per puntare, con l'allenatore di parole chiave AI per aiutare a prioritizzare.

Indietro

Vedere chi ti collega, aggiornare la lista e disavogliare i link che non si desidera associati al tuo sito.

Competitori

Aggiungi i domini concorrenti e confronta la tua visibilità contro il loro, con un'analisi concorrente AI.

Rete locale (mappa)

Scansiona la visibilità dell'elenco locale su una griglia geografica per vedere dove ti presenti sulla mappa, oltre agli strumenti di Google Business Profile.

Velocità di accesso

Eseguire controlli di velocità pagina in modo da poter correggere le pagine lente che fanno male graduatorie e conversioni.

Contenuto dell'intelligenza

Generare i brief e le bozze di contenuti finalizzate alle parole chiave che si sta rivolgendo.

Relazioni

Costruisci report stampabili e pronti al cliente di tutto ciò che è sopra.

Collegare Google per dati accurati

Due connettori di Google trasformano le stime in numeri reali:

Google Search Console

Ricerca

Estrarre le domande esatte, clic e impressioni Google report per il tuo sito, mappare la tua proprietà e superficie graduatorie opportunità direttamente dai propri dati di Google.

Google Analytics 4

Traffico

Portate i dati di traffico e di engagement insieme ai vostri dati SEO, quindi le relazioni mostrano visibilità e comportamento.

Aggiornamenti programmati & report white-label

Non è necessario eseguire tutto a mano. Aggiornamenti programmati ri-run crawls, controlli di rango, parole chiave, backlink rinfreschi, scansioni locali-grid e report generazione su una cadenza (daily o settimanale a seconda del piano e del volume). OpsIQ Cron, vedi la sezione Cron e automazione. Generati rapporti esportare come documenti stampabili e pronti al cliente: le agenzie inviano ad ogni client un aggiornamento SEO regolare, e perché i dati di ogni dominio sono separati, ogni client vede solo il proprio.

Alcune funzionalità di Site Intelligence chiamano fornitori di dati esterni e AI attraverso OpsIQ Il fornitore configurato, quando la suite è abilitata per il vostro piano, e se non viene eseguito un aggiornamento, confermate l'esecuzione del programma.OpsIQ cron è in esecuzione (vedi Cron e automazione).
Devo aggiungere qualcosa al mio sito per il monitoraggio SEO?+

Crawls, tracciamento di rango, ricerca delle parole chiave e backlink funzionano senza toccare il tuo sito. Per traffico ed i dati di ricerca precisi, collegare Google Search Console e GA4.

Posso monitorare più di un dominio?+

Sì. Aggiungere ogni dominio separatamente; i loro crawls, classifiche e rapporti rimangono completamente isolati l'uno dall'altro.

Quante volte dovrei strisciare?+

Settimanale è abbondanza per la maggior parte dei siti; strisciare su richiesta dopo un grande contenuto o cambiamento di struttura.

Crescita e SEO

Auto-Implementazione (Agente SEO)

Auto-Implement è la parte di Site Intelligence che effettivamente applica le correzioni l'analista crawl e AI consiglia, invece di solo consigliare. L'agente funziona rigorosamente da ciò che il Sito Intelligence già trovato (non può mai inventare un cambiamento) e cammina ogni fix attraverso lo stesso ciclo sicuro: una anteprima a secco, la vostra approvazione per passo, la scrittura dal vivo, un'istantanea automatica e un ri-schio che dimostra il conteggio appare in uscita.

Auto-Implementazione
Auto-Implementazione agente SEOUn flusso che mostra le correzioni SEO consigliate che si muovono attraverso l'anteprima, l'approvazione e una scrittura dal vivo, con un ri-crawl dimostrativo.Auto-Implementazioneyoursite.comRaccomandazioniAdd missing <title>approvatoFissare robot. txtapprovatoInvia la mappa del sito.xmlreviewANTEPRIMA DRY-RUN (DIFF)+ <title>AI Helpdesk - OpsIQ</title>+ <meta name=description ...>- <title>Home</title>ApprovoSkipperPROVE it - RE-CRAWLProblemi aperti 124Istantanee salvate1PREVIADiffusore a secco di ogni correzione2APPROVAZIONE & WRITESSH o ospitato API3PROVA & ROLLBACKRi-crawl + istantanea
Come funziona una sessione: l'agente elenca le correzioni di Site Intelligence già consigliato, mostra un diff a secco di ciascuno, applica quelli che approvate sopra SSH o un ospite API, istantanee prima di ogni scrittura e ri-crawls per dimostrare il conteggio open-issue caduto.

Cosa può cambiare

L'agente applica solo correzioni che l'Intelligence del Sito (o l'analista AI) già consigliato per quel dominio.

Configurazione server

sitemap.xml, robots. txt e redirect, canonico e intestazione regole in . htaccess (Apache / LiteSpeed) o la configurazione nginx.

Catene redirette

Colpa una catena di redirect multi-hop fino a un singolo hop dritto alla finale URL, all'interno dello stesso blocco .htaccess gestito, in modo da velocità e valore di collegamento smettere di perdere attraverso il luppolo supplementare.

Page <head>

Titoli di pagina mancanti o deboli, meta descrizioni, tag canonici e blocchi strutturati-dati (schema).

WordPressSEO

Yoast, Rank Math e SEOPress titoli & meta, e immagine alt testo, applicato attraverso WP-CLI sul SSH percorso o il REST API sul percorso ospitato.

WordPress dati strutturati

Aggiunti JSON-LD (schema) a pagine che lo mancano. SSH percorso un piccolo helper gestito (un plugin must-use) stampa il markup in modo che funziona con o senza un plug-in SEO; sul percorso ospitato il tuo plugin SEO lo trasporta.

Collegamenti interni

Adds one relevant internal link inside existing WordPress content to rescue orphan pages and connect related posts. One link per page, never inside a heading, an existing link or a shortcode, and always approved by you first.

Riscrive il contenuto di Thin-page

Si tratta di un contenuto completo di sostituzione per pagine sottili (già attivate da una opzione a scansione, vedi sotto). Ogni bozza viene rivisto e approvato dall'utente prima che tutto pubblichi, e il vecchio contenuto viene mantenuto in modo tale da poter essere ripristinato.

Memoria di pagina (WordPress)

Attiva cache della pagina di Cache W3 quando il crawl trova problemi di velocità e che il plugin è installato, quindi le pagine servono più velocemente.

ShopifySEO

Prodotto e collezione SEO titoli & descrizioni, pagina e blog-article SEO, plus 301 riorienta, attraverso il Shopify Amministrazioni API.

WebflowSEO

Titolo SEO per pagina e meta descrizione attraverso Webflow Dati API V2.

Preparare le correzioni automaticamente (due opzioni di strisciamento)

Il pannello Configure di Site Intelligence per un dominio (le sue impostazioni di crawl) ha due opzioni che decidono quanto l'agente si dirige in anticipo. Entrambi sono spenti per impostazione predefinita e entrambi utilizzano il credito AI, quindi lo si accende solo quando si desidera che quel lavoro fatto per voi.

Auto-preparare AI correzioni dopo ogni striscia

Ogni striscia scrive anche il contenuto di correzione del calcestruzzo (titoli, meta descrizioni, testo alt, schema, reindirizzamenti) per quello che ha trovato, in modo da le correzioni sono pronti a rivedere e applicare il momento in cui la striscia finisce invece di essere generato più avanti su richiesta.

Riscritture del contenuto dell'IA (pagine sottili)

L'agente può redigere contenuti di sostituzione completi per pagine sottili. Nulla è mai pubblicato da solo: ogni bozza appare come un cambiamento che si esamina fianco a fianco e approva o rifiuta, il contenuto precedente viene mantenuto in modo da è reversibile, ed è limitato ad alcune pagine per passaggio.

💡
Entrambe le opzioni si preparano e si distinguono per il lavoro, ogni cambiamento continua a passare attraverso la stessa approvazione, l'istantanea e il rollback come qualsiasi altra soluzione, quindi accendendole non mette mai nulla in vita da solo.

Due modi per connettersi

SSH / SFTP sentiero

Autogestito

Per i siti sul proprio server, l'agente si collega SSH/SFTP utilizzando le credenziali memorizzate, modifica direttamente i file di configurazione e di pagina del server ed esegue WP-CLI per WordPress. Migliore quando si dispone di accesso shell e desidera il pieno controllo dei file.

Hosted...API sentiero (no SSH)

Nessuna shell

Per piattaforme che non permettono SSH, l'agente lavora interamente attraverso un funzionario API connettore, WordPress (REST + password di applicazione), Webflow (Data)API v2) e Shopify (Admin)API). Nulla è installato sull'host.

💡
Wix e Squarespace non hanno SEO-write API, così su quelle piattaforme l'esecuzione automatica in modalità di consulenza: mostra la modifica esatta da fare (il titolo preciso, meta o impostazione) per voi da applicare a mano. Tutto il resto è solo in lettura e sicuro.

Accendere i connettori

L'agente raggiunge ogni piattaforma attraverso un connettore:

Costruito in

Shopify e WordPress connettori nave con OpsIQ, basta abilitarli sotto Connettori e aggiungere il negozio / credenziali del sito.

Dal Mercato

Webflow, Wix e Squarespace install from Connectors → Marketplace, quindi collegare lo stesso modo.

Come funziona una sessione

1
Scegli le correzioni

Aprire l'applicazione automatica (rocket) dalla sezione di intelligenza del sito. E elenca i problemi che l'Intelligenza del sito ha già trovato che può risolvere su questo dominio.

2
Anteprima ogni cambiamento

Per ogni correzione l'agente mostra un diff a secco (esattamente che cosa scriverà) prima che qualcosa tocchi il sito dal vivo.

3
Approvo passo dopo passo

Approvi (o salti) ogni cambiamento singolarmente, nulla viene applicato senza che il tuo esplicito go-ahead su quel passaggio.

4
Scrive, poi istantanee

Su approvazione l'agente fa il cambiamento dal vivo sopra SSH o l'ospite API e salva prima un'istantanea, in modo che qualsiasi cambiamento possa essere rirottato.

5
Provalo, vivi

Poiché si applica ogni cambiamento l'agente ricontrolla immediatamente che la pagina esatta e mostra un verdetto “fisso dal vivo” per passo, quindi si guarda ogni terra fissa sulla pagina in diretta come accade. Alla fine ri-crawls tutto il sito e conferma il conteggio di tessuto aperto è caduto.

Sicurezza e fatturazione

Solo SEO

L'agente può fare solo ciò che l'Intelligenza del Sito consigliato per quel dominio.

Approvazione per passo

Ogni scrittura è prevista come diff e applicata solo dopo aver approvato quel passo specifico.

Istantanea &amp; rollback

Una snapshot viene salvata prima di ogni scrittura, in modo che qualsiasi cambiamento possa essere ritorto.

Prova di prova per passo

Ogni pagina modificata viene ricontrollata l'istante in cui è scritto e ottiene un verdetto "fisso dal vivo", quindi una correzione viene confermata contro la pagina live subito, non solo nel ri-crawl di chiusura.

I contenuti non sono mai auto-pubblicati

I link interni e riscritture di contenuti di pagina sottile sono più efficaci, quindi vengono sempre mostrati per l'approvazione e non vengono mai applicati automaticamente, in qualsiasi modo si esegue.

Solo Managed-AI

Auto-Implementazione funziona su Managed AI; è bloccato quando uno spazio di lavoro sta usando il proprio (BYOK) chiavi.

Fatturazione

I gettoni AI fatturano normalmente come li usi, più una tassa per uso piatto per sessione di auto-implementazione, entrambi estratti dallo stesso credito Managed-AI.

L'implementazione automatica è disattivata per impostazione predefinita. Abilita sulla pagina di configurazione AI (carta di esecuzione automatica) e assicurarsi che il connettore per la vostra piattaforma sia collegato prima.
Non cambia niente senza chiederlo?+

No. Ogni cambiamento è previsto come un diff a secco e applicato solo dopo aver approvato quel passo esatto. Una snapshot viene salvata prima di ogni scrittura in modo da poter tornare indietro.

Mi serve l'accesso SSH?+

Non su. WordPress, Shopify o Webflow. Quei lavori attraverso il loro ufficiale APIs senza accesso alla shell. SSH è solo uno dei due percorsi, utilizzati quando si desidera che l'agente di modificare la configurazione del server e i file direttamente sul proprio server.

Come faccio a sapere che ha funzionato?+

Dopo aver applicato le correzioni approvate l'agente ri-crawls il sito e mostra il conteggio di tessuto aperto prima e dopo, in modo da poter confermare i corretti ridotto i problemi.

Riscriverà o pubblicherà il contenuto della pagina da solo?+

No. I riscritture dei contenuti AI sono spenti fino a quando non li si accende nelle opzioni di strisciamento, sono limitati ad alcune pagine sottili per passaggio e ogni bozza è mostrata per l'approvazione laterale prima che qualcosa pubblichi. Il contenuto precedente viene mantenuto, in modo da una riscrivitura può sempre essere ritorto.

Posso usarlo con le mie chiavi AI?+

No. L'implementazione automatica è Managed-AI solo ed è bloccata sotto BYOK. Si fattura i token AI normalmente più una tassa per uso piatto per sessione, dallo stesso credito Managed - AI.

Crescita e impegno

Studio di indagine

Survey Studio è lo spazio di lavoro per la creazione di sondaggi modificabili che possono essere consegnati come una ricca pagina standalone, widget del sito web o inline embed. Il prodotto attuale fornisce anche link ospitati, bozzette firmate, inviti privati, condivisione QR, navigazione delle risposte e analisi con un'indagine-scoped.

⚠️
Confine di corrente-contro-target: l'esperienza di creazione e anteprima premium, Connector Builder survey Indagine Studio ha ancora bisogno dell'architettura indipendente multi-deployment, il gateway di identità firmata Survey, l'obiettivo/la connessione a distanza, il flusso di invio CRM Outreach e la digitazione surveys.* API.

Creare un sondaggio

1
Scegli come la gente lo prenderà

L'attuale procedura guidata offre la pagina standalone e il link, il widget del sito Web e l'incorporazione Inline. Il flusso di destinazione approvato inizia con il tipo di indagine e aggiunge poi email CRM, collegamenti privati e implementazioni QR come scelte di prima classe.

2
Scegli lo scopo

Scegli il NPS, CSAT, CES, feedback dei prodotti, post-acquisto, cancellazione, onboarding, sito web, evento, webinar, supporto, lead/demo, prova, testimonial, ricerca, dipendente, assunzione o feedback generale.

3
Utilizzare un modello completo o Avviare vuoto

La scelta di un modello crea una bozza copiata: cambiare il vostro sondaggio non cambia l'avviamento o un altro sondaggio.

4
Personalizza o recensione rapida

Personalizza ogni domanda, design, comportamento e controllo di consegna. La recensione rapida apre la stessa bozza al check finale della vista cliente. Nulla pubblica o invia automaticamente.

Scelte di consegna e comportamento presente

Pagina standalone & link

Una pagina responsive con il proprio URL. Utilizzare inviti privati e la scadenza quando ogni destinatario ha bisogno di un link controllato.

widget del sito web

Può usare le regole di pagina, geografia, dispositivo, visitatore, data, campionamento, cooldown, visita e quota. È ancora supportato dal ponte attivo-widget legacy mentre l'architettura di distribuzione è costruita.

Incorporamento inline

Un'indagine reattiva posta all'interno di una pagina, un portale, un prodotto o un centro assistenza.

Email

Oggi lo Studio può generare invito HTML L'invio finale da contatti/segmenti CRM, con il consenso, la soppressione, la pianificazione, la referenza e la correlazione di risposta, è l'obiettivo di integrazione CRM Outreach approvato.

Design aziendale e anteprima

Le pagine di indagine hanno temi e famiglie in possesso di Survey, controlli reattivi, copia di benvenuto e completamento, e una bozza firmata. L'anteprima del progettista è piena larghezza sotto l'editor, non una stretta rotaia laterale. Utilizza il tempo reale ospitato runtime in un telaio sandboxed e supporta le larghezze desktop, tablet e telefono; la anteprima del traffico non scrive risposte o analisi.

💡
L'obiettivo, l'identità, i beni, il rendering e l'analisi devono essere forniti da Survey. I contenuti promozionali possono essere riutilizzati solo attraverso una copia/importazione esplicita di una volta che crea dati di sondaggio distaccati; successivamente le modifiche della Promozione non hanno effetto.

Il prodotto completo della forma

Distribuzioni indipendenti

Vivi

Un sondaggio può avere separatamente versioned page, widget, embed, CRM email, private-link e le implementazioni QR, ciascuno con il proprio stato, design, pubblico e analytics.

CRM Avviamento e campagne

Vivi

Costruire un pubblico verificato da segmenti CRM e connettori di Survey-capable, congelarlo in una versione immutabile, rilasciare un invito firmato ciascuno, e inviare attraverso il connettore di posta elettronica in uscita pinned con prova di consegna per-invitation.

Kit di campo e validazione

Vivi

Slider, scelta immagine, caricamento di file, firma, indirizzo, telefono, intestazioni e testo ricco, con lunghezza minima/max, email/URL/Preimpostazioni numeriche, testo di errore personalizzato e prefill per richiesta URL parametri.

Logica, formule, risultati

Vivi

E/OR gruppi di condizioni, regole di ramo, un motore di formula sicuro sulle risposte e bande di punteggio che portano la loro pagina dei risultati: un quiz segnato atterra sul suo verdetto.

Lingua, chiosco, preriempimento

Vivi

Una lingua di visita elenco a discesa solo lingue con traduzioni reali, modalità kiosk per compresse condivise (soggetti più grandi, auto-riimposta, nessun reindirizzamento), un link builder prefill e testo di avvio sicuro e footer modificabile.

Test di versione A/B

Vivi

Pubblica una versione del sfidante su qualsiasi distribuzione con un traffico diviso. I visitatori sono assegnati in modo appiccicoso, le risposte vengono timbrate con la versione effettivamente servita e la tabella di confronto mostra risposte, completamento e punteggio medio per versione.

Digerimento settimanale

Vivi

A weekly email with the last 7 days of survey KPIs, the busiest surveys, the Feedback pulse and the latest AI briefing, sent through the pinned outbound connector. Configure it in Delivery Centre, Automation.

Governance

Vivi

L'approvazione di pubblicazione (quattro occhi) richiede un secondo amministratore per rilasciare il progetto esatto; la modifica reimposta l'approvazione.

Piattaforma di sviluppo

Vivi

Contratto di collegamento 2.2, sondaggi digitati.* e feedback.* azioni sulle api/v1, indagine canonica.* eventi, duraturo firmato webhooks con Slack e Google Fogli formati di relè, e una risposta PDF esportazione.

Crescita e impegno

Analisi e feedback sono prodotti diversi

Survey Analytics spiega come un sondaggio sta raggiungendo le persone e svolgendo, il feedback spiega cosa i clienti hanno detto in tutte le fonti consentite e cosa dovrebbe fare l'azienda. I due prodotti si collegano tra loro ma non condividono o sovrascrivere la verità analitica.

Analisi dei dati

Entrato dal sondaggio individuale in Survey Studio, non dalla navigazione laterale globale. Misura l'ammissibilità, l'esposizione, il comportamento di trigger, inizia, completa, abbandona, domanda e attrito ramo, tempistica, risultati di distribuzione/campagne/versione e affidabilità runtime.

Panoramica dei feedback & Inbox

Un feed cronologico di autorizzazione-consapevole per le risposte complete del sondaggio, feedback dei widget legacy, chat e biglietto CSAT, feedback della risposta dei biglietti, valutazioni AI-answer del cliente, voti utili della base delle conoscenze e fonti esterne/custom approvate.

Analisi dei feedback

Analizza il significato del cliente: tendenze metriche originali, argomenti/temi, sentimento, emozione, intento, urgenza, richieste, reclami, lode, segmenti di viaggio / prodotto/servizio/team, detrattori e risultati a ciclo chiuso.

Proprietà dei dati

Le risposte dell'indagine rimangono autorevoli nella memorizzazione di Survey. Il feedback memorizza un riferimento sorgente ricostruibile e i segnali derivati, quindi carichi consentiti prove su richiesta. Una risposta completa del sondaggio diventa alla maggior parte di un elemento Feedback.

⚠️
La pagina Feedback corrente ha ancora un browser di risposta Survey e una casella di posta separata del widget legacy, e i suoi totali AI non utilizzano ancora il modello sorgente normalizzato completo.

NPS, CSAT, CES, stelle, pollici e disponibilità devono sempre mantenere il loro metodo originale, scala, campione, data window e denominatore.

Crescita e SEO

Studio Promozioni

The Promotion Studio turns your website into a conversion engine. Design pop-ups, banners, slide-ins, top/bottom bars, full-screen takeovers, inline blocks and even country-based redirects, then show the right message to the right visitor at the right moment. Everything is delivered through the OpsIQ widget already on your site, so there is nothing extra to install. You design and save campaigns any time; they only show once you Publish them and the studio is switched on for your workspace.

Studio Promozioni
Promozione Studio designerUna designer di campagne visive con una tavolozza dei blocchi, un pop-up sulla tela e un pannello di destinazione.Promozione Studio - DesignerBLOCCHIxBenvenuto. {first_name}!Get 15% off il tuo primo ordineSAVE15Pretendiamo il mio couponRICERCAPaeseUSA, CAAttivaEsecuzioneA/B diviso50 / 50Pubblicazione1Designazione delle merciTrascinare i blocchi su tela2TARGETPaese, pagina, pubblico3MISUREVincitore di A/B + Intuizione AI
Il visual designer: una tavolozza di blocchi a sinistra, la tua campagna sulla tela (qui un pop-up coupon personalizzato utilizzando un token {first_name}), e il targeting + pubblicare pannello a destra.

Il grande quadro

Campagna

Cosa?

Una promozione: pop-up, banner, bar, slide-in, full-screen, blocco in linea o georedirect. Ciascuno ha un obiettivo: vendite, lead, sign-up e chat, sondaggio, annuncio.

Design &amp; versioni

Come?

Ogni salvataggio crea una nuova versione, in modo da poter sempre tornare indietro. Nulla è mai perso.

Obiettivo

Chi?

Chi lo vede: paese, pagina, dispositivo, fonte di traffico, ritorno vs nuovo, programma e (con un connettore) i vostri clienti registrati.

Trigger

Quando

Quando appare: istantaneamente, in ritardo, su scorrimento, in uscita-intent, quando idle, su un clic, dopo N pagine, o da chat / attività del biglietto.

Analisi

Risultati

Impressioni dal vivo, click-through, conversioni, un imbuto drop-off, country / pagina / dispositivo si divide, A/B vincitori e una panoramica AI.

Avvia la tua prima promozione in 5 passi

1
Avviare da un modello o da uno spazio vuoto

Aprire lo Studio Promozione e fare clic su Nuova campagna, o scegliere un design pronto dalla galleria Modelli.

2
Disegnalo

Trascina in blocchi, intestazioni, testo, pulsanti, immagini, distintivi, statistiche, conto alla rovescia, moduli, coupon, video, valutazioni, spin-wheels. Colori di stile, gradienti e effetti 3D con i cursori. Anteprima Desktop / Tablet / Mobile, e utilizzare Free spostare per posizionare qualsiasi cosa ovunque.

3
Personalizzalo

Tipo gettoni come {first_name}, {country} o {company} in qualsiasi testo, allo show-time diventano i valori reali del visitatore.

4
Obiettivo &amp; trigger

Scegliere chi lo vede (paese, pagina, dispositivo, pubblico) e quando si accende (delay, scroll, out-intent).

5
Verificare, quindi pubblicare

Fare clic su Controllare per una scansione rapida pre-lancio, quindi Pubblica. Va in diretta in pochi secondi e inizia a raccogliere analisi.

Blocchi che puoi costruire

Contenuto

Core

Testa, paragrafo, elenco, citazione, immagine, icona, distintivo, statistiche, divisore e distanziatore, i blocchi di costruzione di qualsiasi messaggio.

Chiamata all'azione

Core

Pulsanti con azioni reali: aprire un link, avviare una chat, creare un biglietto, copiare un coupon, o saltare a una pagina.

Urgenza e cattura

Premio

Timer conto alla rovescia, moduli (email / telefono / testo), coupon rivela e incorpora video.

Gamified &amp; feedback

Premio

Ruote a doppia ruota, gratta e vinci, rating NPS/star e imbuti multi-step.

Layout & Effetti

Premio

Colonne, barre di progresso, social share, ticker di prova sociale, sì/no due fasi, quizze e effetti 3D, inclinazione, bagliore, parallax, vetromorfismo.

Token di personalizzazione

Digitare una di queste in rubriche, paragrafi, pulsanti, distintivi, statistiche, liste o preventivi. Sono sostituiti con i dati dal vivo del visitatore nel momento in cui la promozione mostra (sempre puliti per sicurezza):

Token disponibili
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)

Riferimenti mirati

Paese e posizione

Mostra solo in (o nascondino) paesi, città o fusi orari prescelti tramite GeoIP. Ottimo per le offerte specifiche della regione o un geo-redirect.

Pagine &gt; URLs

Limitare a determinate pagine utilizzando uguali / start-with / contiene / regex, e escludere le pagine anche.

Dispositivo

Desktop, tablet o mobile, ad esempio una barra sottile su cellulare, un modal sul desktop.

Tipo di visita

Nuovo, di ritorno, noto (nel tuo CRM) o anonimo; segmenti CRM, fase del ciclo di vita, punteggio principale o lingua del browser.

Fonte del traffico

Per UTM (utm_source, utm/campaign) o per il sito di riferimento, ad esempio solo i visitatori provenienti da un annuncio specifico.

Orari e frequenza

Date di inizio / fine, finestre del tempo della giornata e quante volte una persona può vederlo (per sessione, al giorno, dopo che si chiudono / fare clic / convertire).

A/B traffico diviso

Mostra a una percentuale di visitatori e le varianti di esecuzione testa a testa; la stessa persona vede sempre la stessa variante.

Audiences (in allegato)

Con un connettore abilitato, obiettivo da stato di account live, ad esempio clienti con fatture non pagate o abbonati attivi.

Trigger

Scegli come appare la promozione: Immediatamente, dopo un ritardo, sulla profondità del rotolo, su intenzione di uscita, quando idle, su un clic di un elemento, dopo una serie di pagine visualizzate, su form-abandon, o da chat / attività dei biglietti. window.OpsIQPromo.fire('event').

Clienti registrati target (connessioni)

Questo è ciò che rende OpsIQ promozioni speciali: collegare una piattaforma come WHMCS (o qualsiasi connettore che supporta il pubblico) e lo studio può indirizzare i visitatori dal loro stato di account live.

1
Abilitare un connettore del pubblico

Sotto Connettori, abilitare uno che espone i fatti del pubblico (WHMCS i clienti sono riconosciuti in modo sicuro quando si è effettuato l'accesso a quella piattaforma, OpsIQ non si fida mai di un'e-mail digitata.

2
Aggiungi una regola del pubblico

Nell' Audience Targeting > della campagna, richiedere l'accesso e aggiungere regole come fatture non retribuite >= 1, l'abbonamento è in ritardo o il credito del conto > 0.

3
Personalizza i propri dati

Utilizzare gettoni come {first_name} o {balance_due}. Un promemoria "Hai una fattura in ritardo" si scrive.

L'obiettivo dell'audit è sicuro: se il connettore non può confermare un fatto (o il visitatore non è registrato), la promozione semplicemente non mostra, quindi un'offerta di fatturazione-targeted non raggiunge mai la persona sbagliata.

Commercio collegato (il superpotere studio)

Carte di prodotto dal tuo negozio

Dati in tensione

Un blocco prodotto tira oggetti reali (nome, prezzo, prezzo di vendita, immagine, link) direttamente da WHMCS, WooCommerce, Shopify o il tuo OpsIQ Fatturazione. Tick "Keep fresco" e la carta aggiorna il suo prezzo dalla piattaforma ogni ora mentre viene pubblicato.

Buoni previsti dal negozio

Buoni

Un blocco coupon può creare il codice sconto reale nel tuo negozio al momento della pubblicazione, in modo che il codice un visitatore rivela sempre funziona al checkout.

Entrate in vigore

Attribuzione

Gli ordini reali dalle tue piattaforme sono abbinati alle campagne orariamente (per codice coupon utilizzato o per e-mail del piombo) in modo che il reddito che vedi sia da vendite effettive, non stime.

Reali prove sociali

Fiducia

Il ticker antisociale può condurre con veri e propri ordini recenti ("Ada ordinato Piano Starter · 2h fa"), nome e voce solo, mai email o importi.

Esperimenti e viaggi

Varianti A/B e auto-winner

Spaccare il traffico attraverso le varianti di design; lasciare che lo studio promuova automaticamente il vincitore statistico, o il traffico a mano al bandit ottimista che sposta i visitatori verso ciò che converte come prova entra in.

Carrello di supporto

Prenotate una fetta di visitatori che non vedono nulla, così potete dimostrare la campagna stessa provoca l'ascensore.

Varianti di segmento

Diversi contenuti per pubblico sulla campagna SAME (visitatori mobili, grandi carri, clienti di ritorno), ogni segmento ottiene la sua versione.

Esperimenti di trionfante

Varianti possono anche testare WHEN per apparire: immediato vs ritardato contro intentato, misurato testa a testa.

Viaggi (catenazione)

Obiettivo per quello che qualcuno ha fatto con un'altra campagna ("paese di salvataggio A ma non si è convertito") per costruire sequenze di promozione multi-step.

Tesori

Un piccolo visitatore della pillola può riaprire dopo aver chiuso la campagna, quindi un pop-up chiuso non è mai andato per il bene.

Sappi cosa è successo

Fare clic su mappa di calore

Designer

Nel designer, attivare la mappa di calore per dipingere veri visitatori clicca su ogni blocco del tuo design.

Imbuto di passo

Imbuti

Le campagne multi-step mostrano esattamente dove le persone cadono, schermo per schermo.

Confrontare le campagne

Studio

Metta fino a quattro campagne fianco a fianco (impressioni, click, conversioni), miglior valore evidenziato.

Storia settimanale & digest

AI

Ogni lunedì un digest arriva nelle tue notifiche; il pulsante 📖 Weekly story scrive un riepilogo in linguaggio semplice con i prossimi passi ogni volta che ne vuoi uno.

Lavorare comodamente

Copilota AI &amp; idee

Chatta con il copilota di progettazione per modificare la tela ("fai l'intestazione urgente, aggiungi un conto alla rovescia"), ottieni idee di campagna dai tuoi dati del traffico, traduci una campagna per paese, o auto-fissa un punteggio basso di design.

Importazione di Kit di Marca

Un comando legge il tuo sito web e propone i tuoi colori e font di marca reali; salva e ogni raccoglitore porta con sé.

Imbuti multi-schermo

I blocchi di passaggi ottengono la modifica per schermo vera: le schede per ogni schermata, aggiungere o riordinare le schermi e l'anteprima segue.

Versioni e presenza nominate

Nominare le versioni importanti ("candidati di lancio"), ripristinare uno qualsiasi di loro e vedere un avviso quando un compagno di squadra sta modificando la stessa campagna.

Strisce e righelli di dispositivo

Vedere desktop, tablet e lato mobile da una parte in una vista; attivare i righelli pixel per un posizionamento preciso.

Pagina e canali host

Ogni campagna può anche essere una pagina ospitata standalone per i codici bio e QR, una sequenza di gocciolamento email per i lead catturati, o un solo clic web-push draft.

Sicurezza delle imprese

Pubblicare le finestre di blocco (periodo di congelamento dei cambi), un interruttore di emergenza, approvazioni, percorso di audit e rollback versione.

Devo aggiungere codice al mio sito?+

No. Le promozioni sono consegnate dallo stesso widget OpsIQ che hai già installato.

I visitatori vedranno lo stesso pop-up più e più volte?+

No. Impostare i tappi di frequenza (per sessione / al giorno, o fermarsi dopo che qualcuno si chiude, clicca o converte).

Chi può pubblicare?+

Pubblicazione, pausing, archiviazione e roll back sono limitati ai proprietari di spazi di lavoro e agli amministratori completi.

Crescita e SEO

Designer di promozione

Promotion Designer è un editor di blocchi reattivo per la costruzione, la revisione, la versione e la pubblicazione di una esperienza campagna.

Schermo del prodotto
Designer di promozioneIl designer combina una tela live, anteprime dei dispositivi, blocchi, variabili di personalizzazione, commenti e cronologia delle versioni.Designer di promozionespazio di lavoroVIEWPORTDesktopVERSIONEv12STATOProgettoLIVELLI DI LAVOROblocco eroeHeadline, media e CTAModificaBlocco offertaSconto e scadenzaModificaPersonalizzazioneVariabili di contatto e campagnaProntiControllo del lancioOsservazioni e convalidaRecensione1BUILD BLOCKSModificare il layout dal vivo2PREVIADesktop, tablet, cellulare3PUBLISHVersione in uscita
Il designer combina una tela live, anteprime dei dispositivi, blocchi, variabili di personalizzazione, commenti e cronologia delle versioni.

Utilizzare blocchi per comporre l'esperienza, visualizzare in anteprima ogni viewport supportato e inserire variabili di personalizzazione approvate.

Crescita e SEO

Modelli di promozione

I modelli forniscono una galleria di partenza per campagne promozionali, classificate e ricercabili.

Schermo del prodotto
Modelli di promozioneLa galleria di modelli filtra i layout premium e applica colori del marchio workspace quando un modello diventa una bozza.Modelli di promozionespazio di lavoroCATEGORIAConversioneRESULTS24BRANDAApplicatoLIVELLI DI LAVOROOfferta di uscitaModal con urgenza e CTAAnteprimaNuovo benvenuto ai visitatoriElenco dei banner e beneficiAnteprimalancio del prodottoEroe, prova e conto alla rovesciaAnteprimaRichiesta di feedbackPronti di indagine compatteAnteprima1FILTERCategoria e ricerca2PREVIAIspezionare il design completo3USECreare un progetto di marca
La galleria di modelli filtra i layout premium e applica colori del marchio workspace quando un modello diventa una bozza.

Ricerca o filtraggio per categoria, caricare risultati aggiuntivi, visualizzare in anteprima l'esperienza completa, quindi scegliere Utilizzare il modello. La nuova campagna rimane un progetto e può essere modificata in Designer di Promozione prima della pubblicazione.

Crescita e SEO

Promozione dell'analisi

L'analisi della promozione collega impressioni e clic a conversioni, contesto del pubblico, risultati di azione dei connettori e apprendimento delle campagne.

Schermo del prodotto
Promozione dell'analisiL'analisi della promozione mostra le prestazioni intestazione, i guasti del pubblico e dei trigger, conduce i risultati dell'azione di esportazione e connettore.Promozione dell'analisispazio di lavoroIMPRESSIONS42.8kC.6.4%CONVERSIONS814LIVELLI DI LAVOROPaeseRegno Unito · 31%RipartizionePagina/pricing · 22%RipartizioneAttivaSpettacolo di uscita · 44%RipartizioneAzione del connettoreCoupon creato · 97% successoReddito1MISUREImpressioni alla conversione2SLICEPagina, paese, dispositivo3LEARNApplicare la comprensione
L'analisi della promozione mostra le prestazioni intestazione, i guasti del pubblico e dei trigger, conduce i risultati dell'azione di esportazione e connettore.

Ripartire i risultati per paese, pagina, trigger e dispositivo; esportare i lead catturati quando necessario. I risultati dell'azione del connettore mostrano se il follow-up promesso della promozione effettivamente eseguito.

Crescita e SEO

Annunci

Annunci pubblicano un messaggio nell'area di notifica del widget con targeting facoltativo, pianificazione e chiamata all'azione.

Schermo del prodotto
AnnunciL'editor di annunci include contenuti, CTA, pubblico, segmento, regola della pagina, date attive e stile visivo.Annuncispazio di lavoroACCETTAZIONE3AUDIENCESegmentiSCHEDU:Jul22–29LIVELLI DI LAVOROTitoloManutenzione pianificataProntiContenutoMessaggio di MarkdownProntiCTALeggi l'aggiornamentoFacoltativoArticoloPagine di prezzi · clienti attiviObiettivo1WRITETitolo e Markdown2TARGETAudience, segmento, pagina3SCHEDU:Finestra attiva
L'editor di annunci include contenuti, CTA, pubblico, segmento, regola della pagina, date attive e stile visivo.

Scegli tutti i visitatori, i visitatori firmati o i nuovi visitatori; restringe facoltativamente il pubblico con un segmento di contatto e una regola della pagina. Impostare date attive-da/attive e una bandiera attiva. Preimpostazioni stile Premium e presentazione dei colori cambiano ma non sostituiscono contenuti chiari.

Crescita e SEO

Spingere campagne

Le campagne di spinta inviano notifiche del browser per i visitatori iscritti dopo aver lasciato il sito.

Schermo del prodotto
Spingere campagneIl compositore push mostra la portata di abbonamento, contenuti, media, azioni, regole di destinazione e stato del programma.Spingere campagnespazio di lavoroSUBSCRIBERS8,214- Sì.31.6kCLICK RATE5.8%LIVELLI DI LAVOROTitoloIl tuo carrello è in attesaProntiCorpoRitorno oggi per la consegna gratuitaProntiCTACarrozzeria apertaProntiProgrammaInvia ora o in programmaProgetto1PREPARE PUSHTitolo, corpo, icona2TARGETAudience, segmento, pagina3SENDOra, programma o progetto
Il compositore push mostra la portata di abbonamento, contenuti, media, azioni, regole di destinazione e stato del programma.

Configurare i tasti di spinta del Web prima sotto le impostazioni di Spinta del Web. Una campagna può includere titolo, corpo, icona, immagine dell'eroe, distintivo, CTA e fino a due pulsanti d'azione; una notifica persistente rimane fino a quando il visitatore interagisce.

Salvare una bozza, programmarla o inviarla immediatamente. Utilizzare l'abbonamento e fare clic sulle metriche per giudicare la portata. HTTPS e un lavoratore di servizio correttamente ospitato sono richiesti su siti terzi incorporati; vedere Web Push sui siti di terze parti.

Crescita e SEO

Messaggi proattivi

Proactive Messages reach out automatically the moment a visitor's behaviour matches a rule, before they ask. You build each as a rule with three parts: what should happen, when it should fire, and how often. Everything is delivered through the OpsIQ widget already on your site.

Proattivo
Messaggi proattiviUn compositore proattivo-rule in tre parti: scegliere un'azione (chat, banner, tour, push, email), aggiungere condizioni e impostare una frequenza di raffreddamento.Messaggi proattivispazio di lavoro1 · AzioneMessaggio di chatBannerTourSpingereEmail2 · Condizionipage = /pricingtempo a pagina > 20stornando3 · FrequenzaUna volta per sessioneStato1AZIONEChat, banner, email, push...2CONDITIONSPagina, tempo, punteggio, ritorno3FREQUENZARaffreddamento per visitatore
Ogni regola proattiva è tre scelte: che cosa succede (chat, banner, tour, push, email, webhook), quando (condizioni) e quante volte (cooldown).

Le tre parti di una regola

1
Cosa dovrebbe accadere (azione)

Mostra una bolla di chat o banner on-page, avvia un tour guidato, invia una spinta web o e-mail, assegna a un dipartimento, o licenzia un webhook. {{visitor_name}} e {{page_title}} diventare valori reali.

2
Quando dovrebbe sparare (condizioni)

Il midollo che lo attiva: pagina/URL, tempo a pagina, profondità del rotolo, punteggio di piombo, ritorno vs nuovo, idle. Senza condizioni, la regola incendi per ogni visitatore. Aggiungi almeno uno per bersagli. Le condizioni si combinano con AND.

3
Quante volte (frequenza)

Impostare un cooldown in modo che la stessa persona non è abbozzato, ad esempio una volta per sessione o una volta al giorno.

⚠️
La funzione di attivazione dello spazio di lavoro "Regola orariamente le regole del tempo/idle" consente alle azioni lato server (email, push, webhook, assegna) il fuoco su un programma per i contatti noti che non sono attualmente sulla pagina, in modo da poter "email idle hot leads" automaticamente. OpsIQ Lascia perdere, se vuoi solo fare le corna in diretta.
Spaccherà per tutti?+

Aggiungi almeno una condizione (pagina, punteggio di piombo, ritorno...) per indirizzare i visitatori giusti.

Come si riferiscono a flussi e tour?+

Lavorano insieme: una regola proattiva può avviare un tour guidato, e un flusso Chatbot può essere innescato da una regola attiva. Inizia con una singola regola di chat-message, quindi sovrapporre gli altri.

Crescita e SEO

Flussi Chatbot

Chatbot Flows script rammentando le conversazioni all'interno del widget di chat (greetings, parole chiave, percorsi guidati) senza codice. Un flusso è un insieme di passaggi collegati (nodi): si chiede una domanda, il visitatore sceglie un'opzione e il flusso li invia giù la filiale corrispondente.

Come funziona
Flussi ChatbotUna tela di flusso: un nodo di saluto si ramifica in tre pulsanti opzione, ciascuno che porta a un passo successivo, guardare l'ordine, o consegnare ad un umano.SalutoCome posso aiutarti?Tracciare il mio ordineDomanda di fatturazioneParlare con un umanoCercare ordine→ Agente umanoTriggers: Saluto · Parola chiave · Manuale · After-details · On-chat-end
Flussi Chatbot

Flusso vs AI · quando usare quale

Utilizzare un flusso

Quando il percorso è prevedibile e lo si desidera identico ogni volta: la prenotazione di passi, una procedura guidata restituisce, un "quale piano?" scegliente, raccogliendo un'email prima del handoff.

Utilizzare l'intelligenza artificiale

Quando le domande sono aperte, "questo funziona con la mia configurazione?". La Customer Chat AI risponde dalla tua conoscenza addestrata. Un flusso può consegnare all'intelligenza artificiale (o umana) in qualsiasi punto.

Trigger

Saluto

Viene visualizzato come messaggio di apertura quando un visitatore apre la chat.

Parola chiave

Esegue quando il visitatore digita una parola che hai elencato (ad esempio rimborso, prezzi, cancellazione).

Dopo i dettagli / Dopo ritardo

Inizia una volta che i dettagli di contatto sono condivisi, o un tempo impostato nella conversazione.

In chat end / Proattivo

Esegue come la chat si avvolge (ad esempio una valutazione), o è iniziata da una regola Proattiva Messaggio.

Costruisci uno in quattro passi

1
Creare il flusso

Fare clic su Nuovo flusso, nome esso, scegliere un tipo di trigger (e parole chiave se Parola chiave), salvare.

2
Aprire la tela

Clicca su Modifica Canvas. Il costruttore visivo dove si aggiungono passaggi (messaggio, domande con pulsanti, rami) e collegarli.

3
Aggiungere rami e un hand-off

Per ogni scelta, disegnare un ramo al passo successivo. Fine dei percorsi risolvendo, consegnando all'intelligenza artificiale o trasferendo ad un umano.

4
Abilita'

Fare clic su Attiva. Il flusso va in diretta nel widget immediatamente. Disattivare qualsiasi momento senza perdere il design.

I flussi sostituiscono l'IA?+

No, essi corrono fianco a fianco. Utilizzare flussi per percorsi prevedibili e l'IA per domande aperte; un flusso può sempre consegnare ad entrambi.

Crescita e SEO

Visite guidate

I tour guidati sono passi per passo attraverso il punto in cui si puntano a parti della tua pagina con bolle di discorso e un riflettore, guidando un visitatore attraverso l'accensione o una nuova funzionalità. Sono completamente tematici e costruiti in un progettista visivo con un'anteprima dal vivo.

Come funziona
Visite guidateUna pagina dimmer con un anello riflettore intorno a un pulsante Add-deal e una bolla del discorso a tema lettura Passo 1 di 4 con un pulsante Successivo.+ Aggiungi un accordoSTEP 1 DELLE 4Crea il tuo primo accordoClicca qui per aggiungere un accordo al tuo pipeline.Il prossimo →
Visite guidate

Come si costruisce un tour

Passi

Ogni passo mira un elemento e mostra una bolla con il testo. Aggiungi quante più fermate come la camminata ha bisogno e ordinarli.

Preimpostazioni e tema

Inizia da una preimpostazione o progetta la tua bolla (colori, gradienti, faretti) con un'anteprima live a destra.

Attiva

Opzionalmente collegare una regola attiva in modo che il tour auto-avvia quando tale regola spara (ad esempio la prima visita del visitatore di ritorno).

Attivazione

Un tour è idoneo a correre solo mentre Active è legato. Sfida di prenderlo senza eliminarlo.

Costruisci uno in quattro passi

1
Nuovo tour

Fare clic su Nuova guida, nominarlo e linkare facoltativamente una regola attiva in modo che si avvia automaticamente.

2
Aggiungi i passaggi

Aggiungi ogni fermata: scegli l'elemento che indica e scrivi il testo della bolla.

3
Disegnalo

Scegli una preimpostazione o stile la bolla da solo. L'anteprima dal vivo mostra esattamente ciò che i visitatori vedono.

4
Attivare

Il tour può ora essere eseguito, sul proprio trigger o avviato da una regola Proattiva Messaggio.

Come si cominciano i tour?+

Sul loro trigger, o tramite un'azione "Guided tour" della regola del Messaggio Proattivo, quindi decidete quali visitatori vedono il giro e quando.

Crescita e SEO

Obiettivi di conversione

Gli obiettivi di conversione trasformano un'attività a cui tieni (un evento webhook in entrata, un messaggio di chat, una risoluzione dei biglietti) in una conversione registrata con piena attribuzione. Quando l'attività spara, OpsIQ registra una conversione contro il contatto e lo lega alle campagne, segmenti e fonti che ci hanno condotto.

Come funziona
Obiettivi di conversioneUn flusso di obiettivo: un pagamento.successed webhook evento diventa una conversione registrata "acquisto"$49, attribuito alla sua fonte e campagna, con chip preimpostati rapida sopra.Avvio rapidoAcquisto StripeDemo prenotatoIscriviti alla newsletterpayment.succeededin arrivo webhookConversione"acquisto" · $49Attribuitofonte · campagna
Obiettivi di conversione

Definire un obiettivo in tre fasi

1
Scegli l'attività di trigger

Scegli il tipo di attività che conta come conversione, o utilizza una preimpostazione rapida, acquisto Stripe, demo prenotato, registrazione Newsletter o abbonamento iniziato.

2
Nome e imposta un valore

Dare alla conversione un nome (acquisto, demo_booked, signup) e facoltativamente un valore fisso e una finestra di attribuzione.

3
Salva

Salvare e attivare. Da allora in poi, ogni volta che l'attività si accende, OpsIQ registra una conversione contro il contatto con l'attribuzione ai tocchi precedenti.

Gli obiettivi sono già collegati a webhooks in entrata: qualsiasi obiettivo il cui trigger corrisponde automaticamente al tipo di fuoco dell'evento in entrata nel momento in cui l'evento atterra.Stripe, Calendly o qualsiasi sistema che possa POSTJSON.
Che cosa può essere una conversione?+

Qualsiasi attività registrata: un evento webhook in entrata (pagamento. succeeded), una cattura di posta elettronica di chat, una risoluzione dei biglietti, qualsiasi cosa sulla timeline di contatto.

Analisi

dashboard personalizzati

Custom Dashboards ti permette di costruire la tua vista sulle metriche che importano, invece di affidarti solo alla Panoramica standard. Aggiungi i widget che desideri, trascinali e ridimensionarli nel layout che preferisci, salvalo e condividerlo con il tuo team.

dashboard personalizzati
dashboard personalizzatiUn costruttore di cruscotto con KPI e le piastrelle dei widget del grafico, una zona a goccia schiacciata, e un pulsante Add-widget.Personalizzato Dashboardsspazio di lavoroLa mia dashboard+ Aggiungi widgetVISITATORI2,481REVENZIONE$8.2kTRAFFICIALETrascinare un widget quiI migliori messaggi/pricing/docs/signup1ADD WIDGETSMetriche e grafici di prelievo2ARRANGEDrag &amp; ridimensiona3SHARECon la tua squadra
Costruisci la tua scheda: aggiungi i widget di KPI, grafico e elenco, trascinali e ridimensionarli nel layout che desideri, quindi condividila con il team.

Costruisci uno su tre passi

1
Aggiungi widget

Fare clic su Aggiungi Widget e selezionare la metrica o il grafico che si desidera tracciare.

2
Organizzare il layout

Trascina i widget per riposizionare e trascinare i bordi per ridimensionare. KPI in alto, grafici qui sotto.

3
Salva e condividere

Salvare il cruscotto e condividerlo con la tua squadra in modo che tutti guardi gli stessi numeri.

Tenere tavole separate per lavori separati (una scheda "daily colpo" con conti in diretta, e una scheda di "esame mensile" con grafici di tendenza) così ogni soggiorno concentrato.
Crescita e SEO

Campagne di sensibilizzazione

L'estradizione è OpsIQ E'...1:1e motore di posta elettronica in massa: comporre un messaggio personalizzato o eseguire una campagna a un segmento CRM, con rilevamento delle risposte, controllo del tempo di trasmissione, tracciamento aperto/click, un pixel di monitoraggio e un clic di cancellazione.

Accesso
Campagne di sensibilizzazioneLo schermo Outreach con le schede Composer/Campaigns/Templates/Replies e una tabella di campagna che mostra invii, tassi aperti e tasso di risposta.Accessospazio di lavoroCampagneCompositoreModelliRisposteCAMPAGNA- Sì.APERTORISPOSTENewsletter di giugno1,20048%7%Seguito del processo34062%14%Ripresa82039%5%Rispondere al rilevamento automatico-stops follow-up · un clic annullare l'iscrizione su ogni invio11:1 & BULKCompose o campagna2TRACKEDApre, clicca, risponde3COMPLIANTSnodificatore costruito in
Il motore di Outreach: inviare1:1o eseguire campagne a un segmento, traccia si apre e risponde, e rimanere conforme con incorporato disiscrizione e rilevamento delle risposte.

Le quattro schede

Compositore

Scrivere una persona personalizzata1:1email con {tokens} dal contatto e CRM.

Campagne

Invia a un segmento CRM, programmato o ora, con i cappucci e il controllo di tempo di invio.

Modelli

Modelli di messaggio riutilizzabili per la rimozione ripetuta.

Risposte

Rispondere ai record di rilevamento risposte e auto-stops follow-up a chiunque abbia risposto.

Come funziona la campagna

1
Scegli un pubblico

Scegliere un segmento CRM (o caricare un elenco). La soppressione e il consenso vengono applicati automaticamente.

2
Composito

Scrivi il messaggio con i token di personalizzazione; anteprima contro un vero contatto.

3
Orari e invio

Invia ora o al momento migliore. Si apre un record di pixel di tracciamento; si attribuiscono clic e risposte.

L'accesso è concesso al consenso e alla soppressione, include un clic di cancellazione su ogni invio e segue CAN-SPAM / CASL. Le risposte automaticamente arrestano ulteriori follow-up.
Analisi

Rapporti programmati

Report programmati e-mail un set metrico scelto per i destinatari scelti in un calendario (daily, settimanale o mensile) come una stampabile, white-label PDF. Impostare una volta e il rapporto atterra in caselle di posta automaticamente attraverso la OpsIQ Cron.

Rapporti programmati
Rapporti programmatiLa schermata di report programmata: una tabella dei rapporti con il loro calendario, i destinatari e l'ultimo momento, più un pulsante Save-report.Rapporti programmatispazio di lavoroRapporti programmati+ Salva rapportoRELAZIONESCHEDU:RECIPIENTIULTIMATraffico settimanaleL'anno 9:00[email protected]2 giorni faRapporto clienti SEOMensile[email protected]Jun1Risultato delle venditeQuotidiano[email protected]todayFornito come un white-label PDF via il OpsIQ Cron1AUTOMATEDQuotidiano · settimanale · mensile2BIANCOPDF ai clienti3RECIPIENTIInviato in orario
Impostare un report una volta (set metrico, intervallo, programma, destinatari) e OpsIQ e-mail a white-label PDF automaticamente sulla tua cadenza.

Impostare un report

1
Scegli cosa inviare

Scegli il set metrico (traffico, SEO, vendite, supporto...) e un intervallo di date.

2
Impostare la pianificazione e i destinatari

Ogni giorno, settimanale o mensile, alla volta che si sceglie, a uno o più destinatari di e-mail.

3
Salva

Salva e abilita. Il rapporto genera e le email stesse in programma, nessun passo manuale.

💡
I report programmati vengono eseguiti attraverso il cron OpsIQ, se un rapporto non arriva, confermano che il cronaco è in esecuzione (vedere Cron e automazione).
Privacy

Privacy e conformità

La pagina Privacy & Compliance è il singolo posto dove mostrare un auditor che gestisci i dati personali in modo responsabile: il registro di accesso del consenso, il registro degli accessi dell'amministratore, la residenza dei tuoi dati e la politica di conservazione, e una DPA_, in una vista a schede.

Privacy e conformità
Privacy e conformitàLa schermata Privacy & Compliance: schede per Consent ledger, Access log, Residency e DPA, con una tabella di consenso per le sovvenzioni e revocazioni tramite canale.Privacy e conformitàspazio di lavoroRegistratore principale del consensoAccesso al registroResidenzialeDPACONTATTOALLEGATOAZIONEDATI[email protected]emailConcessoJun12[email protected]pushVotazioniJun10[email protected]marketingConcessoJun9Prova ricercabile di ogni concessione e revoca del consenso, per canale1CONSENT LEDGERProva di ogni sovvenzione2ACCESS LOGChi ha toccato i dati3DPAModello stampabile
Una schermata di revisione: un registro di consenso ricercabile (granti/risposte per canale), un log di accesso di chi ha toccato i dati, le impostazioni di residenza / conservazione e una stampabile DPA.

Le quattro schede

Registratore principale del consenso

Registrazione ricercabile di ogni concessione e revoca del consenso, per contatto, canale (email, push, SMS, in-widget), azione, fonte e data.

Accesso al registro

Chi nel vostro team ha visualizzato, modificato, esportato, cancellato o inviato i dati di un contatto, con l'amministratore, il contatto, l'azione, la ragione dichiarata e IP Esattamente quello che un regolatore chiede.

Residenza e ritenzione

Dichiarare dove vivono i dati di questo spazio di lavoro, impostare quanti giorni le righe di attività sono mantenute (0 = per sempre), e registrare il proprio titolare del trattamento e DPO.

DPA modello

Addendum che compila il proprio controller, indirizzo, DPO, residenza e ritenzione. Stampa o salva come PDF.

Privacy & Compliance si associa allo studio Cookie (che raccoglie il consenso) e alla pagina Export (che produce la copia dei dati per un DSAR).
Connettori

Collegare le piattaforme

Collegamento OpsIQ a piattaforme esterne: negozi di e-commerce, sistemi di fatturazione, processori di pagamento, fornitori di email e personalizzati APIs. Una volta connesso, l'IA può cercare ordini, dati dei clienti, abbonamenti e altro ancora, e prendere azioni con la vostra approvazione.

Come funziona
Mozzo connettoriOpsIQcore collegato aWHMCS, Shopify, Stripe, WooCommerce, SendGrid e Google Business Profile, ognuna delle quali mostra uno stato collegato.WHMCSShopifyStripeWooCommerceInviareGridGoogle BPOpsIQCORE1PLUG IN25+ connettori pre-costruiti2AI CONTEXTDati della piattaforma reale3ACTIONSFatto con la vostra approvazione
Connettori

Navi conOpsIQ

Questi sono presenti nel momento in cui si installa e hanno bisogno solo delle loro credenziali.

WHMCS

Fatturazione

Fatturazione di hosting Web: clienti, servizi, biglietti, fatture, domini, server.

Shopify

E-commerce

E-commerce: ordini, clienti, prodotti, inventario, pagamenti, webhooks.

WooCommerce

E-commerce

WordPress e-commerce: ordini, clienti, prodotti, coupon, spedizione.

WordPress

CGCE

Contenuto e utenti su unWordPresssito.

Piazza

Pagamenti

Pagamenti e punto vendita: ordini, clienti, catalogo.

osCommerce

E-commerce

E-commerce Legacy: ordini, clienti, prodotti.

Hotel Botble

Ponte

Un hotel Botble CMS sito attraverso la firmaOpsIQbridge. L'implementazione di riferimento per una piattaforma senzaAPI.

Zendesk

Supporto

Helpdesk: biglietti, utenti, organizzazioni, commenti.

Profilo aziendale di Google

Commercializzazione

Affari locali: recensioni, post, Q&A, approfondimenti. Utilizza OAuth.

Calendario di Google

Produttività

Calendario ed eventi. Utilizza OAuth.

GmaileIMAP

Email

Mailboxes: posta in entrata e in uscita, sincronizzazione di indirizzo-book.

InviareGrid

Email

Consegna e-mail: inviare email e gestire modelli.

Mailgun

Email

Consegna e-mail: inviare email via Mailgun.

Slack, Telegramma, LINE, X DM

Messaggero

Canali di messaggistica per conversazioni in entrata e in uscita.

Canali di meta

Messaggero

Facebook Messenger, Instagram DM e WhatsApp.

Intelligence del sito (GA4, Ricerca Console)

Analisi

Analisi e dati di ricerca perSEOsuite.

Arricchimento del sito e CRM import

CRM

Arricchimento aziendale e importazione di clienti in massa.

Disponibile dal mercato

Questi sono pacchetti pubblicati, non parte dell'installazione. Installa uno da Connettori, Marketplace ed è copiato nella cartella dei connettori in tensione, dopo di che si comporta esattamente come quelli sopra elencati.

Stripe

Mercato

Pagamenti: spese, clienti, fatture, abbonamenti, pagamenti, controversie.

BigCommerce

Mercato

E-commerce: ordini, clienti, prodotti, categorie, marchi.

Magento2

Mercato

E-commerce: ordini, clienti, prodotti, categorie, inventario.

Prestazioni

Mercato

E-commerce: ordini, clienti, prodotti, regole del carrello, vettori.

Aprire la finestra

Mercato

E-commerce: ordini, clienti, prodotti, categorie.

Amazon SES, Postmark, Inviare

Mercato

Consegna e-mail transazionale.

Jira, lineare

Mercato

Problema e monitoraggio del progetto.

Zoom, Microsoft Calendar, Outlook Mail

Mercato

Riunioni, calendari e mail.

DocuSign, Apollo, SerpApi,Google Analytics

Mercato

Firma, prospezione, ricerca e dati di analisi.

Webflow, Wix, Squarespace

Mercato

Piattaforme del sito web.

💡
L'elenco autorevole per la TUA installazione è la pagina Connettori: ciò che è elencato c'è quello che il runtime scoperto, e la scheda Marketplace mostra cosa si può aggiungere.

Installazione di un connettore

1
Vai ai connettori

Navigare verso connettori nella barra laterale di amministrazione.

2
Trova il connettore

Sfoglia l'elenco o la ricerca. I connettori sono raggruppati per categoria.

3
Abilita'

Fare clic sul connettore e attivare Attiva.

4
Inserisci le credenziali

Compilare i campi richiesti: API chiave, URL, gettoni, ecc Ogni connettore ha requisiti specifici documentati nel suo pannello di impostazioni.

5
Connessione di prova

Fare clic su "Connessione dei dati". Un risultato verde significa che il connettore può raggiungere la piattaforma esterna.

6
Configurare le funzionalità

Scegliere quali funzioni per attivare: la sincronizzazione delle conoscenze, la sincronizzabilità webhook, le azioni AI.

Quali connettori ti danno

contesto di AI

L'IA può cercare i dati dei clienti, gli ordini, gli abbonamenti e altro attraverso il connettore. Quando un cliente chat, l'AI ha veri dati della piattaforma da fare riferimento.

contesto AI (autori del connettore)

ContextProvider del connettore alimenta il ticket-AI un sommario di sola lettura del proprietario del biglietto. customer_id quando noto; altrimenti, su biglietto auto-risposte, dove la bandiera ctx customer_trust_email è vero, guarda il conto in su customer_email (il mittente dei biglietti verificato). Le piattaforme remote espongono un /context/customer-by-email endpoint e il connettore lo chiama. Questo rende l'IA citazione un vero equilibrio / fattura invece di dire "per favore accedi".customer_sections, customer_allow_credit) e rimanere rigorosamente in sola lettura, mai emettere segreti.

Directory clienti (autori del connettore)

IdentityProvider del connettore alimenta tre lookup universali: lookupCustomerById() (carta di cliente), lookupCustomerServices() (prodotto/servizio tavola) e listCustomers($query,$limit): il raccoglitore "Cerca cliente o digita email" sul modulo nativo Compose-New-Ticket. {id, external_id, name, email, company, phone, platform, platform_label}. Regola remota: se i vostri clienti vivono in un altro database o servizio, portarli sopra la vostra piattaforma API all'interno di questi metodi, non leggere mai i tavoli dell'altro sistema direttamente (nel OpsIQ DB sono segnaposto vuoto, motivo per cui una lettura locale restituisce un picker vuoto).API URL; mantenere un locale letto solo come un fallback dello stesso-DB.

Biglietti email, rilevamento e routing (autori del connettore)

Quando l'email in entrata diventa un biglietto nativo, OpsIQ rileva il mittente chiamando lookupCustomerById(0, ['email'=>$sender]) attraverso ogni connettore; la prima corrispondenza "consegna" il cliente e il suo platform slitta è timbrato sul ticket.created evento _pipe_owner_platform (vuoto = ospite).WHMCS-l'email del cliente apre un biglietto WHMCS (WHMCS numerazione, specchiato come uno), mentre un mittente sconosciuto rimane un ospite nativo. Se il connettore rispecchia i biglietti nativi sulla propria piattaforma, your ticket.created il manubrio deve cedere su questo: if (array_key_exists('_pipe_owner_platform',$payload) && $payload['_pipe_owner_platform'] !== '<your-slug>') return;. La chiave è assente sui biglietti non-piped (chat/manual/AI), quindi quelli specchio come prima. Il controllo del per-department vive sotto Team & Departments → Biglietti aperti via e-mail (solo Anyone / Clienti / Off).

Azioni

L'IA può eseguire azioni attraverso il connettore: creare biglietti, aggiornare gli ordini, annullare gli abbonamenti, tutto con la vostra approvazione tramite il livello di fiducia.

Conoscenza

I connettori contribuiscono agli articoli di conoscenza specifici della piattaforma all'IA. Shopify connettore aggiunge risoluzione dei problemi di e-commerce; WHMCS connettore aggiunge la conoscenza di hosting.

Importazione della base di conoscenza (autori del connettore)

Se la vostra piattaforma ospita una base di conoscenza, dichiarate un kb_capabilities blocco in settings.json (Tipo) kb_source) e il connettore appare nell'editor di Help Center Importa KB → Importa da un'app collegata a discesa quando è abilitato e configurato nello spazio di lavoro. È dichiarativo, nessun metodo da implementare: nomina un incorporato adapter (zendesk per l'esatto-tree Centro assistenza API, o crawl per qualsiasi sito KB) e un base_template come https://{subdomain}.zendesk.com, which OpsIQ fills from your connector's stored settings. Credentials never leave the server; the browser only sends the connector slug. To support a new platform, add an opsiq_kb_<platform>_manifest() adattatore e lo riferimento per nome. connectors/PLATFORM_CONNECTORS.md §5.

Webhook

Alcuni connettori registrano webhooks con la piattaforma esterna per le notifiche degli eventi in tempo reale (nuovi ordini, aggiornamenti dei biglietti, ecc.).

Monitoraggio delle vendite

I connettori di e-commerce alimentano i dati delle entrate nel cruscotto Vendite per l'attribuzione e l'analisi.

💡
Ogni spazio di lavoro può avere diversi connettori abilitati con diverse credenziali.WHMCS lo spazio di lavoro utilizza WHMCS connettore; un Shopify lo spazio di lavoro utilizza Shopify connettore.
Posso usare più connettori in una sola volta?+

Si', puoi averla. Shopify per gli ordini e Stripe per i pagamenti nello stesso spazio di lavoro. L'AI fonde dati da tutti i connettori abilitati.

E se la mia piattaforma non fosse elencata?+

Utilizzare il Connector Builder per creare un connettore personalizzato per qualsiasi piattaforma con REST API. Oppure controllare Marketplace per connettori integrati nella community.

I connettori funzionano con i connettori self-hosted OpsIQ?+

Sì, i connettori funzionano in modo identico sia nelle edizioni cloud che self-hosted.

Connettori

Contratto di vendita e fatturazione

Ogni connettore commerciale utilizza lo stesso contratto di eventi platform-neutral. WHMCS è l'implementazione di riferimento, ma SaaS Bridge, negozi, fornitori di pagamento, connettori di mercato e pacchetti Connector Builder devono obbedire alle stesse regole.

Che ogni connettore di commercio deve pubblicare

Un autorevole libro principale

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à sorgente stabile

la piattaforma è il connettore del registro di sistema slug, come whmcs, shopify opsiq_saas. traffic_source contiene attribuzione di acquisizione verificata quando fornita; altrimenti utilizzare lo stesso slug come il failback. OpsIQ risolve il nome del connettore amichevole nell'interfaccia utente.

Idempot

Event_id deve essere deterministico. Mappa almeno un ordine immutabile_ref, fattura_reF o abbonamento_refr in modo da webhook retries e backfill aggiornare lo stesso evento invece di creare vendite duplicate. service_refe identifica l'istanza prodotto o servizio interessato quando si esiste.

Tempi di origine

si è verificato_at il tempo di pagamento o di evento economico riportato dalla piattaforma sorgente. Mai sostituire le date di pagamento storiche con il tempo d'importazione.

Soldi e FX

Se l'impostazione del connettore consente la conversione OpsIQ FX, il reporting converte nella valuta di reportage dello spazio di lavoro; altrimenti i rapporti conservano la valuta della piattaforma di deposito o fatturazione.

Ciclo di vita basato sulle prove

Utilizzare nuovi, rinnovare, aggiornare, rimborsare, credito o sconosciuto. Classificare da motivi di fattura, rapporto abbonamento o servizio, tipo line-item, o un altro campo di origine autorevole.

Limiti di vendita

I rimborsi sono riportati da analisi di rimborso e di ricavi netti. Credito conto, portafoglio top-up, token top- up e Add Funds rimangono eventi fatturazione-ledger e non contare mai come vendite, conversioni, volume ordine o entrate di vendita.

CRM rimane separato

Le offerte CRM rappresentano attività di pipeline e negoziazione, non sono vendite commerciali-piattaforma a meno che una piattaforma di fatturazione o deposito collegata emette l'ordine pagato realizzato o la fattura attraverso questo contratto.

Proiezioni deritte

opsiq_conversioni e sommari di cruscotto sono proiezioni di compatibilità ricostruite dal registro. I connettori non devono trattare una proiezione come fonte finanziaria della verità. Le revisioni dei contratti possono rivalutare le righe derivate senza cancellare la storia di fatturazione sottostante.

Limiti di piattaforma remota

Un connettore remoto legge la sua piattaforma attraverso il configurato autenticato API. Non deve mai dipendere da tabelle di database dello stesso server. L'esatta scheda di dominio autenticata è fornita da ConnectorRegistry e deve essere applicata a ogni registro scrittura e backfill.

Esempio di evento canonico

Evento di commercio Normalmente
{
  "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 del Costruttore di connettori

Quando le vendite e la fatturazione sono abilitate nel Connettore Builder, importo della mappa, valuta, stato sorgente e data di origine, oltre ad almeno un ordine, fattura o riferimento dell'abbonamento. API Il SalesIngest generato passa ogni riga attraverso lo stesso normalizzatore CommerceEventRegistry utilizzato da connettori incorporati e di mercato.

⚠️
I crediti e i fondi aggiuntivi sono intenzionalmente conservati per la storia di fatturazione, il contesto del saldo dei clienti e l'analisi dei conti. Escludendole dalle vendite non li cancella; impedisce solo loro di gonfiare le prestazioni del commercio.

lifecycle_type decide cosa diventa un accordo CRM

lifecycle_type OpsIQ legge per decidere se una vendita entra nel canale CRM, quindi ogni connettore di vendita sta prendendo una decisione del gasdotto che intenda o meno.

nuovo

Apre un accordo chiuso-won (nuove attività).

rinnovo, aggiornamento

Registrato come entrate ricorrenti. Nessun nuovo accordo di business — i rinnovi si convertono su una curva di probabilità diversa e mescolandole corrompo entrambe le previsioni.

rimborso, credito

Non si apre mai un accordo, in qualsiasi modo. Il denaro restituito a un cliente non è una vittoria.

omesso / sconosciuto

La vendita è registrata ma non raggiunge mai la pipeline.

Una vendita, una riga di registro: l'identità è la VENDITA, non l'evento

Non corrisponde event_id e inserirti. event_id is platform:eventName:externalId, che risponde “abbiamo già elaborato questa consegna” e non possiamo rispondere “ci siamo già registrati questa vendita”. Una piattaforma che annuncia due volte un pagamento – come invoice.paid e di nuovo payment.completed — due mints e atterra lo stesso denaro due volte, con nulla da scontrarsi e niente da avvertire.

💡
Trovati sull'installazione di riferimento: sei fatture con tre righe principali ciascuna, da tre percorsi in codice utilizzando tre diversi schemi event_id. Tutti hanno portato 0.00 quindi nessun totale ha guardato male e qualsiasi processo successivo ripristino importi reali avrebbe conteggiato un pagamento tre volte.

Chiamare la scrittura condivisa invece. Core calcola l'identità di affari della vendita (sale_fingerprint), corrisponde a una riga esistente su di essa, conserva l'originale event_id su aggiornamento e filtri a colonne reali:

L'unico modo supportato per scrivere il registro vendite
\OpsIQ\Commerce\CommerceEventContract::upsertSaleRow('opsiq_sales_events', $row);
Stessa vendita, molti eventi

fattura. paid, pagamento. completo e vendita. compilato per una fattura condividono un'impronta digitale e aggiorna una riga.

I rimborsi rimangono separati

Il denaro che esce è un fatto diverso dal denaro che arriva. Un rimborso di una fattura mantiene la sua identità, in modo da non poter mai sovrascrivere il pagamento che inverte.

Nessun riferimento, nessuna impronta digitale

Una riga che non porta ordini, fattura, abbonamento o servizio di riferimento non ottiene nessuna impronta digitale affatto, quindi due righe non correlate mai collidono solo perché entrambi sono mancanti un id.

Precedenza di riferimento

fattura_ref, poi order_refr, quindi sottoscrizione_reff, poi service_refe — prima più forte, così una vendita mantiene un'identità stabile.

Il libro principale è solo l'append: non riscrivere mai una vendita

Un rimborso, una cancellazione o una correzione è un nuovo ingresso datato. Mai mutare la riga corregge. Riscrivere un pagamento in un rimborso sembra ordinato e rompe tre cose contemporaneamente:

Distrugge entrate lorde

La vendita lorda e il tasso di rimborso non sono separabili — e la percentuale di rimborso è la metrica che l'inversione esiste per informare.

E' la storia dell'inversione nel periodo sbagliato

Il rimborso di marzo di una vendita a gennaio deve ridurre la marcia. Riscrivendo il filato di gennaio ribadisce silenziosamente un periodo chiuso.

Rompere la pista di audit

Una voce di registro riporta ciò che è successo in un momento del tempo. Le correzioni sono contra-entri, che è come la contabilità a doppio ingresso ha lavorato per cinque secoli.

Quindi un connettore riporta l'inversione piuttosto che applicarlo: ritorno refunded_at e refund_amount accanto al ciclo di vita della vendita, e lasciare che il chiamante scrivere il rimborso come la sua fila datata quando il rimborso è accaduto. I due non possono mai collidere, perché l'impronta digitale di vendita separa un ritorno da una vendita.

💡
Non "riparare" un importo memorizzato al valore attuale della piattaforma: una fattura stabilita dal credito del conto legittimamente registrato 0 al momento del pagamento, e il denaro è stato già registrato quando il cliente ha superato.

Il contratto di classificazione

OpsIQ decide il ciclo di vita once, in \OpsIQ\Commerce\SaleLifecycleClassifier. Un connettore dichiara solo quale di la propria piattaforma significa cosa, implementando \OpsIQ\Connectors\SalesLifecycleConnectorInterface::salesLifecycleVocabulary(), e poi chiama il classificatore condiviso. Non ri-applicare il ragionamento.

Declare il vocabolario, delegare la decisione
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,
]);
💡
Precedence è fissa e condivisa: esplicita, poi rimborsata/cancelled, quindi il credito, quindi l'aggiornamento, allora is_order, poi ricorrente, poi acquisizione, poi sconosciuta. Upgrade siede sopra la verifica dell'ordine perché le piattaforme sollevano un ordine per gli aggiornamenti troppo; ricorrenti siediti sotto di esso perché la prima fattura di un nuovo abbonamento trasporta un tipo linea ricorrente.

Dichiarare l’intero vocabolario della piattaforma

Questo è il fallimento che costa di più e sembra meno sbagliato.WHMCS connettore abbinato ['hosting','addon','domain'] — un elenco che legge come completo. WHMCS non emette una nudo Domain tipo per linee di dominio reali; emette DomainRegister, DomainRenew, DomainTransfer, PromoHosting, PromoDomain, DomainAddon* e Upgrade. Tutti loro sono caduti oltre la lista per unknown: 1,288 fatture, tre anni, nessun errore e nessuna riga di log.

Ogni nuovo cliente importa la loro storia attraverso un connettore di backfill, quindi un bug di classificazione non influisce su uno spazio di lavoro — colpisce ogni spazio di lavorazione che mai a bordo attraverso quel connettore, al momento in cui prima guardano il loro pipeline. prefix così un fratellino nessuno ha visto ancora classificare con i suoi parenti invece di svanire.

💡
Un controllo pratico: contare quanti delle vostre file sono atterrati su sconosciuto. Un connettore di vendita sano classifica quasi tutto. Un flusso costante di sconosciuto è quasi mai dati che non avete — è un vocabolario il connettore non ha imparato a leggere.

Riparazione della storia importata

Ogni connettore di vendita spedito OpsIQ implementa questo — 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() utilizzando qualsiasi per-record fetch il connettore già ha. tools/crm_backfill_sales_lifecycle.php poi ripara la storia importata del connettore senza codice per-connettore: a secco eseguito di default, si fa indietro e verifica il conteggio delle righe prima di scrivere, reversibile attraverso un registro non do, e non scrive mai una lettura fallita come risposta.

💡
Se il connettore non riesce a rileggere i record passati — un connettore webhook-only non può — non si blocca il metodo. Un robusto ritorno sconosciuto è peggio di nessuna implementazione: una backfill riscriverebbe buone righe come non classificato e riferirà il successo.
💡
I riferimenti dei pacchetti dettagliati rimangono disponibili nei connettori/CONNECTOR_EVENTS. md e nei connettori /PLATFORM_CONNECTORS. mD nelle distribuzioni di sorgenti auto-hosted.
Connettori

Contratto evento di viaggio

Journey Intelligence accetta una busta di eventi neutrale dalla piattaforma dal widget del browser, connettori incorporati, Ponte SaaS, pacchetti di mercato e uscita Connector Builder. I nomi specifici della piattaforma sono tradotti al bordo; imbuto, attribuzione e codice di intelligenza del sito consuma solo eventi canonici.

Isolamento e fiducia

Chiave del peer-domain esatta

Ogni evento è legato al dominio autenticato site_key. Un connettore deve prendere quella chiave da ConnectorRegistry o il suo endpoint autenticato, mai da un corpo di richiesta non attendibile.

Idemità idempotiva

Event_id è necessario per i connettori e deve essere deterministico per lo stesso evento nativo. Retries, webhooks e backfill aggiornano un evento piuttosto che duplicare un viaggio o una vendita.

Nome nativo più canonico

Preserve source_event_name per la ricerca di prove e problemi, quindi mappalo su event_name_canonical.

Le prove del server vince

L'osservazione del browser può iniziare o rinviare un viaggio. Gli eventi di connettore autenticati confermano l'iscrizione, il login, il pagamento, l'acquisto, il rinnovo, il rimborso e altri risultati dei terminali. Un token di correlazione valido per il sito è la più forte; un gettone non valido viene respinto e i suoi ID incorporati non sono attendibili.

Privacy

Invia solo identificativi e campi necessari per il viaggio dichiarato. Rispetta le impostazioni di consenso, mascheramento e conservazione. Non posizionare mai credenziali, dati della carta, segreti di autenticazione o corpi di messaggio privati in proprietà.

Busta canonica

Busta per eventi di viaggio
{
  "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"}
}

Tassonomia Canonica

Le famiglie supportate includono eventi di pagina di coinvolgimento/CTA; registrazione dell'account, accesso, MFA e reimpostazione della password; fasi di lead e modulo; prodotto, carrello, checkout, pagamento, acquisto, abbonamento, rinnovo e rimborso; impressioni e conversioni delle promozioni; eventi del centro assistenza, chat e ticket; eventa sicurezza ed eventi personalizzati con namespace. account.signup.succeeded, account.login.succeeded, lead.form.succeeded, commerce.payment.succeeded, commerce.purchase.completed, commerce.subscription.renewed e commerce.refund.completed.

Inferenza del browser, conferma e abbandono

Il widget può funzionare senza un connettore osservando la struttura della pagina, le azioni di forma, i risultati DOM e il registro del viaggio dei visitatori. Questa prova rimane classificata esplicitamente come osservato o inferred. Un connettore aggiunge conferma server autorevole e può correlare lo stesso tentativo del browser. La bandonazione viene memorizzato per la prima volta come candidato; si abbandona solo dopo l'inattività della finestra impostata nell'interfaccia utente e solo quando non esiste più tardi recupero o successo.

Attribuzione e ricavi

L'attribuzione preferisce un token di correlazione firmato valido, quindi un viaggio esatto, un tentativo, una sessione o un riferimento commerciale, poi il grafico d'identità acconsentì e infine un match comportamentale limitato. Le vendite non corrispondenti rimangono incomplete. I pesi a registro multi-touch devono essere totali 1_.

⚠️
Modello di attribuzione, finestre di lookback, gestione diretta del traffico, la fiducia minima, il timeout abbandono e le definizioni deimbuti sono politica dell'interfaccia utente.

Connettore manifesto e Costruttore

Dichiarazione di viaggio del connettore
{
  "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"
    }
  }]
}

Connettore Builder convalida la mappatura e genera lo stesso adattatore di piattaforma-neutral utilizzato da pacchetti di prima parte. L'ingestione di viaggio accetta un evento o un gruppo limitato di 100 attraverso l'endpoint di integrazione autenticata generato.

💡
Il registro commerciale rimane la fonte finanziaria della verità. Il ponte commerciale-a-journey pubblica i risultati confermati dal server e riconcilia l'attribuzione dopo il upsert del registro esistente, quindi un pagamento non diventa mai due vendite.
Connettori

Come funziona l'intelligenza artificiale

Ogni connettore dichiara un insieme di azioni: le cose che l'IA può fare attraverso la piattaforma esterna. Le azioni sono il ponte tra "la AI dice" e "l'AI fa".

Azioni di AI
Come funziona l'intelligenza artificialeUna richiesta del cliente mappata a una scheda di azione tipo delete, poi una lista di controllo: il permesso controllato, si conferma, API chiamato.Come funziona l'intelligenza artificialespazio di lavoro"Cancella il mio abbonamento"clienteAIcancel_subscriptiondeleteconferma richiestaparams: abbonamento_id (dal contesto)AZIONEreadwritedeleteControllo delle autorizzazioni e del ruoloConferma l'azioneAPI ha chiamato · risultato segnalato1DECLAREDOgni connettore elenca le azioni2GATEDPermesso + conferma3THEN RUNAPI call, risultato indietro
Una richiesta diventa un'azione dichiarata (di tipo lettura/scrittura/deterzia) che è controllata dal permesso, confermata, poi eseguita e riportata.

Il ciclo di vita dell'azione

1
Il cliente chiede qualcosa

"Cancella il mio abbonamento". L'IA identifica questo richiede l'azione "cancel_subscription".

2
Autorizzazioni di controllo dell'IA

È abilitata questa azione? L'utente attuale ha il ruolo giusto?

3
AI raccoglie i parametri

L'azione ha bisogno di un documento d'iscrizione. L'IA lo guarda dal contesto del cliente o chiede al cliente.

4
Conferma

Per azioni distruttive o ad alto impatto, l'IA chiede la conferma prima di eseguire.

5
Esecuzione

L'azione chiama la piattaforma esterna API.

6
Risultato

L'IA riporta il risultato al cliente.

Tipi di azione

Leggi le azioni

Cerca i dati senza cambiare nulla. Esempi: list_orders, get_customer. Sicuro, nessuna conferma necessaria.

Scrivere le azioni

Esempi: create_ticket, update_order. Può richiedere la conferma.

Eliminare le azioni

Rimuovere i dati. Esempi: cancellazione_iscrizione. Sempre richiedono la conferma.

Azioni HTTP

Dichiarato in azioni.json, generico API chiamate definite in modo dichiarativo.

Tag di capacità

Campo opzionale per azione "capabilità" in azioni.json, un tag di classe connettore-neutral (ad es. "tickets" per un biglietto letto/lookup, "ticket_create" per l'apertura del biglietto).OpsIQ cancelli l'intera classe uniformemente attraverso ogni connettore: il biglietto legge cadere dall'IA quando l'operatore spegne AI Ticket Awareness, e la creazione dei biglietti è riservata per OpsIQ Il proprio compositore (così uno strumento di creazione del connettore non può duplicarlo). Dichiararlo e il tuo connettore si conforma.OpsIQ Il Connettore Builder lo espone come un dropdown di Capability per azione.

Codice azioni

Implementato in PHP nella classe di connettori. Controllo completo sulla logica.

Esempio di definizione dell'azione
{
  "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" }
    }
  }
}
Connettori

Costruire un connettore

Il Connettore Builder consente di creare un connettore completo per qualsiasi piattaforma con REST API. Non è necessario codificare i connettori base.

Costruire un connettore
Costruttore di ConnettoriUn modulo di connettore no-code: nome, tipo auth, base URL, una mappatura azione, un test di passaggio e un pulsante di pubblicazione.Costruttore di Connettorispazio di lavoroCostruttore di ConnettoriNomeLa mia piattaformaAutorizzazioneOAuth 2.0(PKCE)BaseURLhttps://api.example.com/v2AzioneGET/customers → lista dei clientiProva passataConnettore del pacchetto1NO-CODENome, auth, base URL2ANY APIChiave, cuscinetto, base, HMAC, OAuth3PUBLISHInto /connectors/<slug>/
Puntare il costruttore a qualsiasi REST API. Set auth, base URL e azioni, testarlo e pubblicare un connettore di lavoro.

Fornitore completo API copertura

Ciascuno generato API connettore può esporre nativo separato API Leggere e nativi API Le azioni curate rimangono preferite; le azioni native coprono gli endpoint dei provider aggiunti successivamente. JSON, forma, XML, corpi grezzi e multipartiti, impaginazione delimitata,API- intestazioni di conversione e idempotency mantenendo le credenziali all'interno delle impostazioni del connettore dello spazio di lavoro.

⚠️
I pacchetti di Marketplace sono fonte da /marketplace_connectors così come in bundle /connectors. Aumentare la versione del pacchetto, rigenerare il contratto e la documentazione, eseguire test di conformità, quindi rassegnarsi e pubblicare la nuova versione Marketplace.

Mago del Costruttore di connettori

Il mago ha sei passi, mostrati come schede attraverso la parte superiore. È possibile saltare tra loro liberamente e Salvare il progetto nel piè di pagina mantiene il vostro lavoro in qualsiasi punto.

1
Identità e profilo

Name, slug, description and icon, then choose a contract profile: Standard API, Commerce, Helpdesk, Mailbox, Site Intelligence, SaaS Bridge, Local PHP Platform, or Platform with no API when the platform serves nothing callable and OpsIQ has to install a bridge. The profile selects a complete capability starting point; you can still adjust individual capabilities.

2
Autorizzazione

Scegli il modello di autenticazione che la piattaforma utilizza e riempi i suoi campi. Inserisci le credenziali di test reali qui anche: vengono utilizzate per il test di connessione sul passo successivo, e non sono memorizzati dopo aver pubblicato.

3
Test di prova

Immettere API base di base URL e un endpoint di verifica, quindi eseguire un test di connessione live utilizzando le credenziali dal passaggio 2. Fare questo prima di definire qualsiasi azione, se l'aut o la base URL è sbagliato, ogni azione che scrivete dopo sarebbe fallita per la stessa ragione e si sarebbe debug la cosa sbagliata.

4
Azioni

Definire ogni operazione: nome, metodo HTTP, percorso endpoint, parametri, mappatura del campo di risposta e le impostazioni di affidabilità descritte qui sotto. È possibile eseguire ogni azione individualmente contro il live API da questo passaggio.

5
Trigger

Mappa gli eventi webhook sulla tua piattaforma OpsIQ eventi, così le cose che succedono sulla vostra piattaforma possono iniziare a lavorare OpsIQ.

6
Revisione, contratto d'impresa e pubblicare

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

⚠️
L'editoria NON esegue la suite di conformità. Pubblica convalida solo il modulo mago ed emette avvisi che non bloccano. La suite completa — manifesto, file di capacità, il contratto di identità-token e il controllo ponte-snippet - funziona quando si preme Dry-run, e ancora al momento dell'installazione.

Che cosa la pubblicazione fa che il modulo non vi mostra

Cinque comportamenti del generatore sorprenderanno le persone, nessuno è un bug; tutti vi costeranno un pomeriggio se li incontrerete per caso.

One question decides the passthrough: does the platform serve an API?

Answer it in step 1 by picking the data-access mode (or the "Platform with no API" profile). API mode declares native_api and emits the <slug>_api_call passthrough. Bridge mode declares platform_bridge instead and STRIPS native_api even if an older spec carried it, so the manifest, the generated class and the expertise docs cannot disagree. ai_brain_aware is added either way.

SILENCE MEANS "it has an API"

The Builder follows your answer; it does not work the truth out for itself, and the default when nothing is said is API mode. So a no-API platform must ACTIVELY say so — pick the "Platform with no API" profile, set data access to bridge, or tick 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.

Il test di connessione predefinisce GET/ping

Se si lascia vuoto il percorso di verifica, il Costruttore scrive /ping nel connettore generato e nel profilo.jsonQuasi nessuna vera piattaforma serve quella rotta, quindi Test Connection non riesce con HTTP404Impostare un percorso di verifica che la vostra piattaforma risponde effettivamente. Per un connettore del ponte, puntarlo al vostro endpoint diagnostico - dimostra l'intera catena in una sola chiamata: il ponte è distribuito, le partite chiave e il ponte può raggiungere il database.

Re-publishing still overwrites your hand-edits

Capabilities now follow the data-access answer, so those no longer drift. Everything else generated still does: edit ContextProvider.php or any other emitted file and the next publish replaces it. The one protected exception is the bridge file — the wizard only overwrites a bridge carrying its own marker, so a hand-written one is left alone.

Rimozione cancella i file

Un-tick una capacità e la prossima pubblicazione rimuove il suo file del fornitore. Hand-edits a qualsiasi file generato — ContextProvider.php sopra tutti — sono sovrascritti senza preavviso. Copia le personalizzazione fuori prima, o prendere possesso del pacchetto cancellando .opsiq- costruttore.json(dopo il quale la procedura guidata non lo gestirà più).

release_status è sempre l'anteprima

Un pacchetto destinato a spedire come produzione deve avere release_status cambiato per mano in impostazioni.json — e che la modifica rompe la firma, quindi dimettersi dopo.

La firma dimostra l'integrità, non l'origine

I pacchetti di compilatori sono firmati con la chiave simmetrica di questa installazione, che rileva le manomissioni. Non dimostra chi ha scritto il pacchetto e qualsiasi installazione che tenga la stessa chiave può produrre la stessa firma.

Le collisioni di liquami sono verificate solo in un albero

L'editoria rifiuta una slitta che esiste già sotto/connectors/.Non guarda./marketplace_connectors/,così un pacchetto di prima parte autorizzato a mano con lo stesso slug può finire ombreggiato.

💡
Un file di conoscenza che descrive la piattaforma viene generato per voi dal nome, dalla descrizione, dal tipo auth e dalle azioni definite, ed è caricato nell'IA quando il connettore è abilitato.

Definire un'azione (passo 4)

Ogni azione ha le seguenti impostazioni: sono necessari solo i primi quattro; il controllo di riposo che può eseguire e come con attenzione.

Chiave d'azione e etichetta

La chiave è ciò che l'intelligenza artificiale chiama; l'etichetta è quello che un umano legge. Le chiavi sono namespaced con il connettore slug automaticamente, quindi due connettori possono entrambi avere una "list_orders" senza collisione.

Metodo HTTP

GET, POST, PUT, PATCH o DELETE.

URL sentiero

Appendito alla base URL. Uso {name} per i segnaposto, ad esempio /opportunities/{id}/stage

Parametri

Per ogni parametro si sceglie anche dove va: corpo, path, query o intestazione. Un parametro di percorso riempie un {placeholder}; un parametro di query è allegato al URL.

Mapping di risposta

Di' quale campo nella risposta JSON significa cosa, che è il nome del cliente, che e' l'email, che à ̈ il totale dell'ordine.

Chi può usarlo

Il vostro team (admin AI), clienti firmati (chat cliente), sia, o l'assistente di scrittura. Le azioni del cliente funzionano solo per il cliente firmato e i campi di identità sono bloccati automaticamente a loro in modo che un cliente non può chiedere circa un altro.

Richiede conferma

Un umano deve approvare prima che l'azione si esaurisca.

Distruttivo

Segna l'azione come cancellazione o cambiamento di stato. Usato per avvertire prima che corre.

Permesso richiesto

L'amministratore deve tenere questo permesso per l'IA di eseguire l'azione a loro nome; gli amministratori completi passano sempre. Scegli tra gestire_integrations, management_general, manage_billing, Manage_sales_bridge, gestione_knowledge, handle_appearance, Manag_behavior,gest_permissions,management_dangerzone, escalate_to_chats, escate_to-ticket,mail_

Descrizione / AI suggerimento

Facoltativo, ma vale la pena scrivere. Dice all'IA quando raggiungere per questa azione, ad esempio "Usa questo quando l'amministratore chiede di cambiare una fase d'accordo". Un buon suggerimento è la differenza tra un'azione che l'AI usa correttamente e uno ignora.

Capacità

Optional class tag, either tickets (a ticket read or lookup) or ticket_create (opens a ticket). Tagging lets OpsIQ gate the whole class at once, for example, hiding ticket reads when an operator turns AI ticket awareness off.

Percorso di elenco

Opzionale. Per gli endpoint che restituiscono un elenco, il percorso punteggiato per l'array, ad esempio dati o data. items

Percorso errore

Facoltativo. Un campo corpo la cui presenza significa che la chiamata è fallita, per esempio errore.message, utile per APIs che restituiscono HTTP 200 in caso di fallimento.

Corri!

Ogni azione può essere eseguita contro il live API da questo passaggio, in modo da poter risolvere un percorso sbagliato o nome di campo prima che chiunque altro lo usi.

⚠️
Le azioni di scrittura sono protette per impostazione predefinita. Qualsiasi azione che utilizzi POST, PUT, PATCH o DELETE inizia a richiedere il permesso di gestione_integrazioni e Una nuova azione di scrittura non si chiude, piuttosto che lasciare che l'IA cambi i tuoi dati in modo non supervisionato. Puoi cambiare entrambi sull'azione, ma cambiarli consapevolmente.
💡
Per essere richiamabile dalla chat del cliente, un'azione deve essere letta: lasciare sia la conferma richiesta che non ha bisogno di aiuto. Un'azione che il cliente può innescare che anche cambia stato non è qualcosa che la procedura guidata vi permetterà di spedire per caso.

Ricezione di webhooks (passo 5)

Il passo Triggers ti dà un webhook URL per registrarti con la tua piattaforma, e verifica ogni richiesta che arriva su di esso.

Intestazione della firma

L'intestazione della vostra piattaforma firma con, per esempio X-Hub-Signature-256.

Algoritmo di firma

HMAC-SHA1, HMAc-SHa256 o HMA C-SH A512.

Schema di firma

Semplice, un semplice hex o digestivo base64. O in stile Stripe, il t=...,v1=... formato usato da Stripe e diverse piattaforme che lo hanno copiato.

Prefisso di firma

Opzionale. Alcune piattaforme prefiggono il digest, per esempio sha256=. Lascialo vuoto se il tuo non lo fa.

Mappature di eventi

Map each event your platform sends onto the OpsIQ event it should raise.

Auto-registrando il webhook

Se la tua piattaforma ha un API per la gestione dei propri webhooks, non è necessario registrare il URL a mano. Aperto Auto-registra questo webhook su abilita e indicarlo a due delle azioni che hai definito in fase 4:

Creare un'azione webhook

Chiamato quando un amministratore abilita il connettore. URL, facoltativamente quello che porta la lista degli eventi e il percorso nella risposta che detiene l'ID del nuovo webhook.

Eliminare l'azione webhook

Chiamato quando il connettore è disabilitato, utilizzando l'id catturato sopra, quindi disattivando il connettore arresta anche la piattaforma di inviare a un punto morto.

Capacità di attivare

I profili e le capacità sono definiti dal Connettore Contract 2.2. Le funzionalità generate e dichiarative vengono emesse direttamente; le capacità aziendali generano un EnterpriseExtension.php ponteggio con cablaggio del ciclo di vita runtime.

Azioni

Le operazioni dell'IA possono essere eseguite sulla vostra piattaforma: gli ordini di elenco, trovare un cliente, emettere un rimborso.

Trigger

Ricevi webhooks dalla tua piattaforma e trasformali in eventi OpsIQ.

Biglietti AI

AI Triage e la risposta Copilot sui biglietti che rimangono sulla vostra piattaforma. Scegli il endpoint che restituisce un biglietto con le sue risposte e mappa i campi; OpsIQ legge il thread attraverso di esso.

Mailbox e contatti

Mostra la posta di un cliente sulla loro linea temporale, invia da un accordo e sincronizza la tua rubrica nella OpsIQ CRM.

Importazione del cliente

Pagina attraverso la lista dei clienti e importare ciascuno come contatto OpsIQ. Questo è ciò che il pulsante Importa viene eseguito.

Contesto

Spingere i dati dal vivo dalla vostra piattaforma in ogni conversazione AI.

Identità

Scopri quale dei tuoi clienti è un visitatore e mostra il loro profilo e gli acquisti su un biglietto.

Vendite e fatturazione

Feed ricavi e MRR figure nel cruscotto OpsIQ.

Biglietti in entrata

Trasformare i biglietti e le email che la tua piattaforma offre da webhook in OpsIQ supporto filetti.

Risposte in uscita

Post OpsIQ il personale risponde alla piattaforma su cui è nato il thread.

Utenti di Sync

Importare i conti del personale OpsIQ utenti di amministrazione.

Reparti di Sync

Importare i tuoi dipartimenti di supporto OpsIQ.

Promo targeting e feed di prodotto

Lasciate che il target di Promotion Studio sui fatti che conoscete su una persona, e rendere i vostri veri prodotti all'interno di una promozione.

Fornitore di Survey Studio

Esporre i dati di indagine verificati dal server, le variabili sfuggite e le pagine dei destinatari CRM delimitate tramite un'apposita SurveyProvider. php. Questo non riutilizza il runtime della Promozione.

Nativo IP blocco

Quando OpsIQ blocchi IP, chiamare il proprio blocco della piattaforma API così il blocco è applicato anche lì.

Eventi di sicurezza

Ricevere bloccati IP segnali di minaccia da OpsIQ.

Conoscenza della piattaforma per l'AI

Ogni connettore si costruisce navi un breve riferimento che descrive ciò che la vostra piattaforma è e che cosa le sue azioni fanno. OpsIQ Admin AI lo legge ogni volta che il connettore è abilitato, quindi comprende la tua piattaforma piuttosto che semplicemente vedere un elenco di nomi d'azione.

API Passthrough

Il connettore ottiene sempre una chiamata generale per cui l'IA può raggiungere un endpoint che non ha definito un'azione digitata per. Utilizzare azioni digitate dove è possibile; questo è il portello di fuga.

Contratto di collegamento Canonico 2.2 riferimento

Contract version: 2.2 · 54 capabilities · 8 profiles.

Profili di collegamento

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à canoniche

azioni

Universal actions. Capability version: 1.0. Mode: generated. Runtime methods: registerActions. Package files: actions.json.

trigger

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.

fatturazione

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.

C'è un problema.

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.

locale

Local search/location data. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

questo

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.

⚠️
Le specifiche del costruttore rimangono la fonte autorevole. Mettere le regole aziendali specifiche della piattaforma nei punti di estensione generati; il ciclo di vita dei pacchetti, code, lavoratori, migrazioni e test di conformità rimangono gestiti dal Costruttore.

Impostazioni di affidabilità su ogni azione

Reti

Quante volte riprovare una chiamata fallita, con un backoff che raddoppia ogni tentativo. 429s e gli errori 5xx sono retried; un 4xx è colpa della vostra richiesta e ripetendo che sarebbe solo bruciare il limite di tasso.

Limite di tasso

Un soffitto per minuto per questa azione, quindi un trigger occupato non può martellare la vostra piattaforma. Lasciala a 0 senza limiti.

Tempo

Quanto tempo aspettare la vostra piattaforma prima di rinunciare.

Conferma

Richiedete a un umano di approvare prima che l'azione si esaurisca.

Tipi di autenticazione

Passo 2 offre sette modelli. Scegli quello che corrisponde alla tua piattaforma API documentazione, il generatore emette il client HTTP giusto per esso.

API chiave intestazione

Una chiave statica inviata come intestazione fissa, per esempio X-API-Key. Dare il nome dell'intestazione e l'etichetta che il modulo di amministrazione deve mostrare, questo invia la chiave come intestazione solo; se il vostro API si aspetta la chiave come parametro query, invece, utilizzare intestazioni personalizzate o un connettore full-code.

Token del cuscinetto

Token sent as Authorization: Bearer <token>. Common for modern APIs.

AUTO DI base

Nome utente e password, base64 codificato nell'intestazione di autorizzazione. Scegli le etichette che entrambi i campi mostrano sul modulo di amministrazione.

HMAC-firmato

Una chiave pubblica più un segreto, con il corpo di richiesta firmato. Dare l'intestazione firma, l'header chiave e la timestamp intestazione che la vostra piattaforma si aspetta.

OAuth 2.0 (Credifiche client)

Server-to-server, senza interazione utente e nessun reindirizzamento. Si dà il token URL e un campo opzionale; l'amministratore fornisce un ID client e segreto.

OAuth 2.0 (Connesso pulsante)

Il flusso codice di autorizzazione con PKCE, per Stripe, Shopify, Slack e QuickBooks-style app. Si dà l'autorizzazione URL il segno URL Dopo la pubblicazione, l'amministratore clicca su Connect sul connettore, autorizza sulla piattaforma e OpsIQ memorizza il token rinfrescante e le menti di accesso a gettoni su richiesta. URI per registrarsi OAuth l'app viene visualizzata nella pagina delle impostazioni del connettore.

Intestazioni personalizzate

Una forma libera JSON mappa dell'intestazione per qualsiasi cosa i modelli di cui sopra non coprono, ad esempio {"X-API-Key:"{api_key}","X-Tenant":"{tenant_id}"}. Ogni segnaposto diventa un campo sul modulo di amministrazione.

💡
PKCE si applica solo al flusso Connect-button. Il flusso client-credentials non ha redirect e nessun passo utente, quindi PKC non si applica ad esso.

Stile di pagina

Offset

Utilizza i parametri di offset e limite. Esempio: ?offset=100 Traduzione:50.

Pagina

Utilizza il numero di pagina. Esempio: ?page=3Traduzione e synch:50.

Cursore

Utilizza un token del cursore dalla risposta precedente.

Intestazione del collegamento

Utilizza l'intestazione di risposta Link con rel="next".

Avanzato: codice PHP personalizzato

connettore. php RETURNS un'istanza. Non dichiara una classe di nome che cerca OpsIQ _. I nomi dei metodi qui sotto sono quelli che ConnectorInterface richiede; ottenere un torto è un fatale a carico, non un avvertimento.

connettore. php — il vero contratto, minimo e maneggevole
<?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.

Biglietti a specchio nel sistema di biglietti nativo

Quando la tua piattaforma possiede un biglietto, lo specchio in OpsIQ dal connettore utilizzando l'aiuto di ingestione del biglietto che il tuo connettore eredita (creare per un nuovo biglietto, aggiungere-riparazione per i follow-up). Emettere e abbonarsi agli eventi universali dei biglietti nel connettore subscribers() metodo, ticket.created, ticket.replied, ticket.updated, ticket.deleted. Auto-riparazione, escalation, SLA e CSAT tutti agganciano gli stessi eventi, in modo da li ereditare senza codice aggiuntivo.

Di' chi ha scritto il messaggio di apertura

Un biglietto è sempre per il cliente, ma il messaggio di apertura può essere scritto da staff: un agente che apre un biglietto per conto del cliente, o raggiungendo in modo proattivo; ogni helpdesk lo sostiene, quindi fa parte dell'universale ticket.created contratto piuttosto che qualcosa ogni connettore risolve in privato.

author_type

client (default) o admin. Omettere e il cliente è assunto.

author_id

Il personale id quando autore_type=admin. Mai il cliente id.

author_name

Nome dell'agente o del dipartimento.

author_email

L'indirizzo dell'agente, non è mai quello del cliente. Un messaggio personale sotto l'e-mail del cliente è un errore di reporting e audit.

Non e' cosmetico. I consumatori leggono author_type per decidere di chi sia il turno. Un'apertura scritta del personale ha riferito come client lascia auto-riparabile per rispondere a un messaggio che il tuo agente ha scritto, e rende l'eco della tua piattaforma di quell'apertura assomigliare ad un nuovo messaggio cliente, che poi atterra come duplicato e capovolge il biglietto per answered. Mappa il segnale della piattaforma su di esso nel connettore evento normalizzato, mai nei consumatori.

Blocco centralizzato

Quando un agente blocca un mittente, che si applica attraverso every canale immediatamente (e-mail, chat, portale, widget e ogni connettore gemello) perché il blocco è applicato centralmente, prima che qualsiasi connettore veda il messaggio. Il vostro connettore lo eredita facendo nulla. Non c'è lavoro in entrata per implementare e non c'Ã ̈ modo di farlo male.

La metà opzionale è outbound: dire alla vostra piattaforma un cliente è stato bloccato qui. L'implementazione solo se la vostra piattaforma può esprimere qualcosa di equivalente.

capacità()

Deve includere block_registry E la classe deve implementare BlockRegistryInterface. La bandiera è un reclamo; l'interfaccia è la garanzia. Il registro richiede entrambi.

blockSender($b)

Riceve t ip o (email|domain|ip), valore, ragione, admin_id, scade_at, site_key. Restituisce [risultato, dettaglio?, remote_ref?].

unblockSender($b)

Stesso carico di paga, invertito. Deve essere idempotent. Sbloccare qualcosa non bloccato è niente, non un errore.

isSenderBlocked($b)

Per la riconciliazione, così la deriva è segnalato piuttosto che scoperto da un cliente.

Valori di risultato

ok.

Applicato sulla tua piattaforma. Includere remote_ref quando si dispone di un id degno di registrazione.

noop

Già nello stato richiesto.

unsupported

La tua piattaforma non ha un concetto equivalente.

fallito

Avresti potuto farlo e andò male. Includere i dettagli; atterra nel percorso di audit.

Il declino è una risposta corretta. Molte piattaforme non hanno un concetto di "blocco del mittente" e offrono solo sospensioni ACCOUNT, che fermano la fatturazione, i login e i servizi piuttosto che semplicemente sostenere la posta. Mapping "un agente bloccato un indirizzo spam" su "chiudere il conto di questo cliente" permetterebbe a un blocco sbagliato di terminare i servizi del cliente pagante. unsupported e lascia stare.

Delineare copre anche il caso in cui la piattaforma can lo faccia ma non ti permette. API, non una caratteristica: una leva che esiste solo nell'interfaccia utente di amministrazione della piattaforma è una leve del connettore non ha.

Esempio di lavoro · Zendesk (l'implementazione di riferimento)

Leggi connectors/zendesk/connector.php alongside this. It is short, and every branch below is a decision you will face too.

Invia e-mail → ok

PUTA /api/v2/users/{id} Le nuove richieste dell'utente finale sospeso divergono a Suspended Tickets invece di aprirne uno, in modo sincero la stessa idea di bloccare un mittente e non smette di fatturare perché gli utenti finali di Zendesk non ne hanno nessuno.

dominio → non supportato

Zendesk CAN sospendere un intero dominio, ma solo attraverso la sospensione: parola chiave nell'area di testo del blocco Admin Center e no API scrive quel campo. La caratteristica esiste; la leva non lo fa.

ip → non supportato

Non esiste un blocco di livello dei biglietti IP.

indirizzo sconosciuto → noop

Zendesk non può pre-suspend un indirizzo che non ha mai visto. Nulla da fare non è un fallimento, e il blocco locale ferma ancora il biglietto.

agente o amministratore → non supportato

Il personale che sospende avrebbe chiuso un collega fuori dal helpdesk. Un indirizzo del personale che raggiunge una lista di blocco è molto più probabile essere un errore rispetto a un'istruzione, controllare il ruolo prima di agire su di esso.

L'ultima riga è quella che vale la pena copiare. Il contratto non può fermarsi a mappare un blocco su qualcosa di distruttivo, così ogni connettore deve decidere per sé ciò che si rifiuta. detail un operatore può leggere, batte obbedire.

Rapporto onestamente. Notare come poche di queste righe sono ok. Questo è il risultato corretto, non un divario: un blocco di dominio funziona ancora (è applicato nel core al momento in cui è scritto); semplicemente non può essere specchiato verso l'esterno. ok per qualcosa che non hai fatto direbbe a un operatore il blocco raggiunto la vostra piattaforma quando non è mai partito OpsIQ.

Regole

Il blocco locale vince sempre

È scritto PRIMA che siete chiamati e sta ciò che si ritorna. Non potete impedire a un operatore di bloccare qualcuno.

Mai.

Un tiro viene trattato come non supportato e registrato. Il ritorno è fallito con un dettaglio invece in modo che la ragione sopravviva.

Essere idemponte

Lo stesso blocco può essere annunciato più di una volta.

Ritorna velocemente

Fan-out è sincrono con il clic dell'operatore. Queue lavoro lento piuttosto che tenere aperta la richiesta.

Non richiamare

Non ribloccare mai in OpsIQ dal tuo handler. Il registro di sistema salta il connettore originario, ma un secondo hop andrebbe a loop.

Ogni annuncio è scritto a opsiq_block_registry_log (operazione, tipo, valore, ragione, amministrazione, origine, connettore slug, risultato, dettaglio e timestamp) in modo che un operatore possa vedere un blocco arrivato dalla vostra piattaforma piuttosto che da un agente, e ciò che ogni connettore ha fatto su di esso.

Spingere correttamente gli allegati

Mano una attachments array per creare()/addReply(). Ogni elemento porta il file in una delle tre forme:

content_b64

Base64 dei byte file RAW, utilizzare per i file dietro auth (la maggior parte dei casi in entrata). OpsIQ decodifica e ri-hosts il file per voi. La forma più portatile.

url_

Un pubblico https URL (ad esempio un contenuto di Zendesk_url). Deve essere https; passa un controllo SSRF / allowlist prima che venga memorizzato.

stored_path

Un file di riferimento memorizzato che hai già scritto (che cosa produce il nativo compositore uploader).

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 solo i nomi dei file (non byte), quindi il modello di inbound affidabile è: leggere i byte dove il vostro codice già funziona (all'interno della piattaforma, o dal payload webhook), base64 loro e spedirli come content_b64 in occasione dell'evento.

In uscita (in uscita)OpsIQ → la vostra piattaforma). Quando un agente attacca un file, il ticket.replied payload ti dà i file della risposta come stored_path articoli sotto OpsIQ Leggili e premi il formato della tua piattaforma, controlla i documenti della piattaforma, la codifica è importante: WHMCS vuole base64_encode(json_encode([[name,data]])) (JSON, non serializzare); Zendesk carica byte grezze a /uploads.json per un token allora imposta comment.uploads; Gmail invia una RFC- multipart/mixed 822 messaggio base64url-encoded in raw; Amazon SES inbound attachments need the S3 receive action (the SNS path caps at 150 KB).

Piattaforme remote: API + webhook, mai tavoli di un'altra app

Se la tua piattaforma è un app o database separati (un SaaS ospitato, un telecomando WHMCS, un DB diverso sullo stesso server), non scrivere mai i suoi tavoli direttamente: una base di dati cross-database scrive terre su qualsiasi connessione è attiva e silenziosamente manca le righe reali. outbound = chiamare REST API (risposte, stato, dipartimento, cancellazioni); inbound = la piattaforma POSTs un webhook firmato, il handleWebhook() lo verifica e spara l'abbinamento ticket.* Per fermare un loop a specchio, etichettare ciò che si spinge con un marcatore di origine (ad es. mirror_origin:'opsiq'); la piattaforma lo risuona sul webhook e il tuo manubrio in entrata salta i suoi eco. OpsIQEvents::isMirroredEvent() in cima a ogni maniglione.

Stato dello specchio, priorità & reparto

Una risposta si muove automaticamente lo stato, un agent risposta → answered, a cliente risposta → customer_reply; rispecchiare lo stesso modo. Per cambiamenti espliciti abbonarsi ticket.updated e leggere payload['changes'] (ad es. {status:'closed'}).

Stato: Il set canonico di OpsIQ è open, customer_reply, answered, in_progress, pending, closed. Mantenere una piccola mappa a due vie al vocabolario della vostra piattaforma, e assicurarsi che la colonna accetta effettivamente i valori che si scrive (un ENUM manca un valore viene silenziosamente abbandonato a vuoto da alcuni database). Dipartimento: il reparto OpsIQ id è privo di significato dal vostro lato, non mandarlo mai. Invia il descrittore (name, email e slug) e risolverlo contro i propri dipartimenti per e-mail → nome → slug, così “Dipartimento delle Billing” atterra in il tuo Dipartimento di fatturazione invece di generale. Trigger su entrambi ticket.escalated e un department_id cambiamento nel ticket.updated.

💡
Stato / priorità / soggetto / dipartimento / cancellazione mirroring è gated da per-connector toggles (mirror_status_changes, mirror_priority_change, mirror _subject_changees, mirror-department_changeS, mirror/deletes) letto attraverso il condiviso OpsIQ\Connectors\MirrorOptions helper. Inserisci quel blocco nelle impostazioni.json e ogni connettore mirrore-biglietto legge i toggles in modo identico.

Collegare un biglietto a un prodotto / servizio

Se il cliente ha scelto un prodotto specifico quando si apre il biglietto, timbrare un suggerimento in modo che l'agente vede una carta di servizio focalizzata (con un clic su "vedere altri prodotti" modale per il resto). Passare uno qualsiasi di questi da creare():

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

Una piattaforma di servizio-codice, ad esempio. WHMCS S396 (servizio396) / D11 (domini11). OpsIQ decompone il tipo-letter + id opzionale e corrisponde alla tua lista di servizio, con una guardia del tipo in modo che un codice di dominio non corrisponda mai a un prodotto dello stesso id.

related_domain

Un nome di dominio; abbinato come sottostringa contro ogni dettaglio / dominio del servizio.

💡
Costruisci l'elenco degli allegati una volta, nella forma sopra e OpsIQ gestisce il resto: ospitato URLs sono passati attraverso e il contenuto base64 viene memorizzato e ri-hosted per voi. Non è mai necessario scrivere per-platform gestione dei file.
⚠️
Le chiavi d'azione sono lettere minuscole, cifre e sottolineature.3a80caratteri e permette anche punti; l'action store accetta2a100I caratteri senza punti, quindi tenete a lettere, cifre e sottolineature e soddisfate entrambi. Aggiungendo un'azione non crea alcun percorso AJAX, in modo da non c'è nulla da rigenerare — ri-salva il connettore ed è sincronizzato.
Connettori

Collegare una piattaforma che non haAPI(il modello del ponte)

Un sacco di piattaforme reali nave no RESTAPIUn hotel CMS, un vecchio sistema di fatturazione, uno strumento interno su misura. È ancora possibile scrivere una completaOpsIQconnettore per uno: il connettore spedisce un singolo file PHP che l'operatore scende nel proprio webroot pubblico, e quel file è ilAPI. Questa pagina è l'intero modello, con le regole che lo rendono sicuro da eseguire e la ragione dietro ogni regola.

La sua forma

Un connettore normale chiama il API_. Il connettore del ponte porta la propria posizione: non cambia altro: le stesse azioni, gli stessi fornitori di contesto, lo stesso contratto d'identità, lo stessa layout dei pacchetti.

1
Scrivi un file 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'operatore lo copia nel loro webroot

Accanto alla piattaforma propria index. php. Nessun codice della piattaforma è modificato, nessun plugin viene installato, nulla da mantenere attraverso gli aggiornamenti della piattaforma.

3
Il pannello di connettore li consegna il file

Le tue impostazioni.jsondichiara webhook_help.snippet_template. La pagina del connettore lo rende come un file copiabile con le loro impostazioni live già sostituite, quindi non c'è nulla da modificare a mano.

4
OpsIQ chiama server-to-server

Client.php invia richieste GET con la chiave condivisa in un X-Opsiq- Intestazione a criniera.URLl'impostazione è la radice del sito della piattaforma.

The Connector Builder CAN generate this for you now. Pick the "Platform with no API" profile (or set data access to bridge) and it emits the bridge file, the matching panel snippet and the typed actions that read and write through it — for a Laravel application reading its .env, for WordPress reading wp-config.php, or with credentials you paste in for anything else. Hand-author only when your platform is none of those, or when you need behaviour the generated bridge does not cover. A hand-written bridge is safe from the wizard: it only overwrites a bridge file carrying its own marker.
💡
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.

Il modello di sicurezza, e perché ogni regola è lì

Questo file si trova in un webroot pubblico dietro una chiave condivisa. Questo singolo fatto guida ogni regola qui sotto. Non rilassare nessuno di loro per rendere il vostro ponte più semplice.

Il chiamante non fornisce maiSQL

Non una clausola WHERE, non un frammento ORDER BY, né un parametro di query raw "solo questa volta"; il chiamante nomina una tabella, una colonna e un valore; il file costruisce l'affermazione.SQLtesto, una chiave condivisa diventa l'esecuzione arbitraria del database.

I nomi delle tabelle e delle colonne sono convalidati contro information_schema

Identifiers non possono essere vincolati come parametri, quindi devono essere controllati al posto. Leggi l'elenco reale della tabella e delle colonne per questo database e rifiuta qualsiasi cosa non su di esso. Un identificatore che non è un vero oggetto di questo schema allora non può raggiungere una query a tutti — che è ciò che rende sicuro esporre ogni tabella.

Ogni valore è un parametro limitato

Senza eccezione, compresi i valori all'interno di una ricerca. Identificatori convalidati più i valori limite è la coppia che rende la superficie totale e la superficie di iniezione nil.

Le letture sono universali, le scritture sono a lista dei permessi

Vedi il prossimo blocco, questa è la regola che le persone vogliono saltare.

Le colonne segrete sono riformulate su lettura e rifiutate su scrittura

Abbina la colonna NAME: password, Remember_token, secret, api_key, private_key e gettone. Sostituisci il valore con un segnaposto sulla via d'uscita. Rifiutare completamente la scrittura sul modo in — scrivere un hash password crudo non è un'operazione, è un footgun. Invia l'operatore al flusso di password della piattaforma.

Le cancellazioni sono a singola fila, per chiave primaria

Non si elimina mai una massa, non si cancella mai dal filtro. Una rimozione di massa è come muore un database. Se qualcuno ha veramente bisogno di uno, possono farlo nella piattaforma.

Le letture sono riga-capped

Rimozione del parametro limite con un soffitto duro. Una query runaway non deve essere in grado di scaricare il database attraverso un messaggio di chat.

Fail chiuso fino a quando la chiave è impostata

Un ponte non configurato risponde 403 a tutto. Un ponte che è utile prima di essere configurato è un ponte che era utile per uno sconosciuto.

Confronto costante delle chiavi, chiave in un'intestazione

hash_equals, mai ==. La chiave va in X-Opsiq-Bridge-Key, non la stringa di query, quindi rimane fuori dai registri di accesso, dai registri proxy e dalle intestazioni Referer.

Solo

Un metodo, una forma, niente contrabbando in un corpo. Tutto ciò che il ponte fa è espresso come GET con parametri convalidati e OpsIQ è l'unico chiamante.

Legge universale, scrive a lista dei permessi — e perché

Questa è la regola che viene discussa, quindi ecco il ragionamento in pieno. L'assistente dovrebbe essere in grado di vedere l'intera piattaforma: questo è ciò che lo rende utile e una lettura non può distruggere nulla. Le scritture sono diverse. Questo file si trova in un webroot pubblico dietro UNA chiave condivisa. Se quella chiave perde, una superficie di scrittura non a restrizioni fa la perdita equivalente al controllo completo del database - un nuovo utente amministratore, una tabella delle prenotazioni svuotate.

⚠️
La scheda di approvazione OpsIQ porta l'IA, non la chiave. L'amministratore che fa clic su Consentire un'azione distruttiva è il controllo dell'assistente. Non è un controllo su chi tiene la chiave del ponte. Queste sono due minacce diverse e la lista dei permessi è la risposta al secondo.
La manopola di guida, dal ponte Botble
/* ── 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';

Due dettagli nel controllo qui sotto sono facili da sbagliare. Il nome della tabella arriva già RESOLVED, portando il prefisso di tavolo dell'installazione, mentre un operatore scrive la lista dei permessi non prefissati perché questo è ciò che essi digitano naturalmente. Confrontare entrambi i modi o un installazione prefissi silenziosamente permette nulla e ogni rottura di scrittura. E il rifiuto deve spiegarsi, perché la persona leggendolo è un amministratore in una finestra di chat, non uno sviluppatore con un tracciatore.

Il controllo della lista dei permessi, verbatim da marketplace_connectors/botble/bridge/opsiq- Boccola-ponte.
/** 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);
};

Il cancello, in pieno

Quattro controlli, in questo ordine, prima di qualsiasi cosa tocca i dati. Copia l'ordine così come i controlli.

I quattro cancelli controllano, in ordine
<?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. */

Identificatori di convalida contro information_schema

Risolvere il nome del tavolo del chiamante contro lo schema reale, tollerare un prefisso mancante o extra della tabella e restituire nullo per qualsiasi altra cosa. Tutto a valle poi funziona con un nome che esiste provabilmente.

Validazione e rettangolazione dell'identificatore, verbatim dal ponte Botble
/** 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;
};

Una lettura op e una scrittura op, completa

Notare ciò che è legato e quello che viene convalidato. La colonna del filtro viene controllata contro l'elenco della colonna reale e quindi interpolata come identificatore; il suo valore è limitato. Il limite è bloccato. Le righe vengono ridefinite sulla via d'uscita. L'aggiornamento rifiuta la chiave primaria e qualsiasi colonna di auth, e timbri aggiornati_at quando la tabella ha uno.

Leggi qualsiasi tabella — identificatori convalidati, valori limite, righe incappucciate
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,
    ]]);
}
Scrivere una riga — tabella a lista consentita, rifiutata colonne auth, singola fila per chiave primaria
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)),
    ]]);
}

Differenze di schema di sopravvivenza

Le versioni della piattaforma differiscono. Le colonne si muovono, vengono rinominate o sono assenti. Un ponte che assume uno schema funziona su un'installazione. Introspezione e adattarsi invece: selezionare solo le colonne che esistono qui, tollerare il prefisso della tabella e provare le ortografia plausibile di un riferimento.

Tolleranza dello schema, dal ponte 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));
💡
Date al vostro ponte un op=diag che riporta solo STRUTTURA — quali tabelle risolte, quali colonne ha la tabella principale e lo SHAPE del nuovo riferimento con ogni cifra mascherata. È key-gated come tutto il resto, e si trasforma "la ricerca non trova nulla" da un biglietto di supporto in una risposta di dieci secondi.

Errori uniformi e la trappola di accumerazione

Una forma per tutto

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-fondato e nessuna presa deve essere identico

Su una superficie di ricerca, un riferimento che non esiste e un riferimento la cui prova non corrisponde deve produrre la risposta SAME. Le risposte diverse trasformano il vostro ponte in un oracolo che conferma quali riferimenti sono reali, che è un'esportazione gratuita della lista dei clienti per chiunque paziente.

Non traspare mai la ragione di un visitatore

Il ponte può essere preciso conOpsIQ. Ciò che raggiunge un visitatore è deciso daOpsIQ, in un rifiuto fisso.

Il file copiabile nel pannello del connettore

L'operatore non apre mai il tuo repository, aprendo il pannello del connettore inOpsIQe premere Copia. Quella copia viene dalle impostazioni.json, e deve essere lo stesso programma di bridge/*.php.

impostazioni.json — l'ingresso del pannello per un connettore di ponte
{
  "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.

Altri segnaposto sono sostituiti lato server

Indipendentemente da questo,{webhook_url}, {webhook_path}, {webhook_secret}, {site_key}, {base_url}e{slug}sono riempiti prima che il pannello veda mai lo snippet.

webhook_help può essere un oggetto o una lista

Un elenco ti dà diversi frammenti in un pannello, ad esempio un file di ponte e un gancio relè separato.

🚫
Il file del ponte e la copia del pannello sono due copie di un programma, e essi WILL deriva — un ponte è stato aggiornato e la sua copia non era, quindi chiunque ha reinstallato e copiato dal pannello installato il vecchio ponte e silenziosamente perso ogni nuova capacità. Nulla lo ha rilevato: la conformità passata, le firme passate, i test passati.
Mantenere le due copie identiche
# 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.

Cosa dovrebbe esporre il ponte

Le operazioni a forma di e una superficie dati universale, insieme. I modelli restituiscono risposte ordinate e realizzate appositamente alle domande che le persone realmente fanno; quelli universali coprono tutto il resto in modo che l'assistente non sia mai bloccato.

Letture a forma di

statistiche, la principale lista degli oggetti con filtri, un oggetto con le relative righe, il catalogo di ciò che viene venduto, ricerca dei clienti con la storia.

Scritzioni a forma di

I due o tre cambiamenti di stato che importa — lo stato impostato, annullare. Tenere i valori accettati consentiti-listed.

Scoprizione universale

tabelle (con conteggio delle righe) e descrivere (colonne, tipi, chiave primaria, più lettabili e striscioni per colonna).

Universale lettura e scrittura

query, record. get, record-create, record/update, record_delete. Ognuno di loro ha convalidato come mostrato sopra.

Identità, prima del cancello chiave

Le sonde di identità sono chiamate dall'ADMIN'S BROWSER, stesso-origine, quindi non possono inviare un intestazione personalizzata. La loro autenticazione è la sessione della piattaforma stessa. Mettile davanti al cancello chiave, tienili lontani da tutti i dati di record e non lasciare mai che restino segreti.

Diagnostica

op=diag, structure only, masked.

💡
Se la tua piattaforma risponde solo alle domande, spedisci un ponte senza op di scrittura e l'intera classe di rischio di scrittura scompare.

Lista di controllo prima di spedire un ponte

Il ponte rifiuta tutto senza set chiave

Rinominare la costante per svuotare e confermare ogni risposta op 403.

Una chiave sbagliata viene rifiutata in tempo costante

hash_equals, e la chiave di lettura solo dall'intestazione.

Un nome da tavolo su misura viene rifiutato

E un vero nome da tavolo con un prefisso sbagliato si risolve ancora.

Una colonna di password non appare mai in una lettura

E una scrittura che si chiama si rifiuta con una spiegazione.

Una scrittura a un tavolo al di fuori della lista dei permessi è rifiutata

Con il messaggio che dice all'operatore come allargarlo.

Il pannello snippet corrisponde al file del ponte

strumenti php/sync_connector_bridge_snippets. php lo riporta in fase.

Reinstallare il connettore non è sufficiente

Se il pacchetto spedisce un file di bridge, un operatore che aggiorna il connettore deve ALSO rifare quel file nella loro webroot.

Connettori

Il ponte in altre lingue e altri database

The bridge pattern is not a PHP pattern. What OpsIQ calls is an HTTP endpoint, so the file can be Node, Python, Go, Ruby, .NET or Java, and the store behind it can be any SQL engine or MongoDB. What IS PHP-shaped is the packaging pipeline, and that constraint decides how your bridge reaches the operator. Read the delivery section first: it is the part that surprises people.

Cosa richiede il connettore

Questo è l'intero contratto, niente in esso nomina una lingua.

Trasporti

HTTPS. Una richiesta GET per chiamata. Nessun corpo, nessun altro metodo.

Autenticazione

Un segreto condiviso nel X-Opsiq-Bridge-Key richiesta intestazione, rispetto al tempo costante. Non un parametro di query, non un cookie, non auth Basic.

Parametri

- Una corda di coda. op nomina la superficie, do nomina l'operazione, il resto sono le argomentazioni dell'operazione.

Risposta

JSON. {"success":true,"data":{...}} o {"success":false,"error":"snake_case_reason"}. Applicazione del contenuto/jsone niente caching.

Codici di stato

200sul successo.403chiave non configurata o sbagliata,404non trovato,405metodo sbagliato,400pessimo argomento,501non supportato su questo schema.

Questo è tutto

No framework, no runtime, no OpsIQ library on your side. If it can serve that, it can be a bridge.

Consegna: cosa può vivere in bridge/, e che cosa non deve

Il pacchetto firmato copre un elenco fisso di estensioni dei file, e un file al di fuori della lista viene lasciato fuori dallo ZIP. Un ponte in una lingua che l'elenco non copre quindi non può spedire all'interno del pacchetto — ma non può più scomparire su di voi.26Agosto2026un file in bridge/ che il pacchetto sarebbe cadere è un fallimento di conformità difficile, in modo che il pacco si rifiuta di passare piuttosto che installare senza ponte in esso.

Come viene trattato un ponte/cartella al momento della costruzione
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 e JavaScript — supportato completamente

Il file viene spedito nello ZIP firmato e il verificatore snippet tiene la copia del pannello date-identico ad esso, a qualsiasi dei due è. La barra di deriva legge ogni file in bridge/, non solo quelli PHP, quindi un ponte aggiornato con una copia del quadro stante non riesce a costruire in entrambe le lingue.

Tutto il resto — consegnare attraverso il pannello solo

Il pannello snippet è testo semplice senza idea di quale lingua detiene, quindi funziona per qualsiasi stack. Mettere l'intero programma in webhook_help. snippeT_template, nominare il file in snippat_filename e non lasciare una copia in bridge/ — la conformità rifiuta il pacchetto piuttosto che spedirlo cavo.

Se hai veramente bisogno di un'altra lingua nel pacchetto

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.

💡
Nome del file in webhook_help.snippet_filename Quando il pacchetto spedisce più di un ponte, così il verificatore sa a quale copia del pannello appartiene; senza di esso, un accoppiamento ambiguo viene segnalato come un avviso di conformità e che il cecchino è lasciato incontrollato.
⚠️
Il punto della deriva è che un file di bridge e la sua copia del pannello sono due copie di un programma e WILL si divergono. php tools/sync_connector_bridge_snippets.php --apply, poi dimettete il pacchetto.

Il cancello, in sei lingue

Stessi quattro controlli nello stesso ordine ovunque: non si chiude con nessuna chiave, un metodo, il confronto costante-tempo della chiave dall'intestazione, quindi connettersi. L'unica vera trappola è il confronto, ed è una trappola diversa in ogni lingua.

⚠️
Confrontare lo SHA-256È corretto in ogni lingua, e si affianca il fatto che diversi comparatori a tempo costante gettano o trapelano su un errore di lunghezza — tempistiche di NodeSafeEqual solleva una RangeError quando i buffer differiscono in lunghezza, che trasforma una chiave sbagliata in una500invece di un403.
Node. js — il cancello
// 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 — il cancello
# 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)
Vai, Ruby, . NET e Java — lo stesso confronto
// 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)));
}

Convalida degli identificatori su ogni motore di database

La proprietà di sicurezza non cambia: una tabella o un nome della colonna che il chiamante fornito deve essere controllato contro lo schema reale prima di interpolare, e ogni valore deve essere un parametro limite.

MySQLeMariaDB

Tavole: SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = ?. Colonne: la stessa contro information_schema.COLUMNS con AND TABLE_NAME = ?. Quota con i backticks, raddoppiando qualsiasi backtick all'interno. LIMIT n OFFSET m.

PostgreSQL

Stesse opinioni_schema, nomi minuscoli, WHERE table_schema = $1 (di solito public). Quotazioni con doppia citazione, raddoppiando ogni doppia quotazione all'interno. LIMIT n OFFSET m. Guarda la regola di piegatura: un identificatore non quotato viene ripiegato in caso più basso, quindi confronta caso-insensibile quando si risolve un nome.

SQLServer

Stesse viste INFORM_SCHEMA. Quota con staffe quadrate, raddoppiando qualsiasi staffa di chiusura all'interno. ORDER BY [id] DESC OFFSET @o ROWS FETCH NEXT @n ROWS ONLY.

SQLite

Tavole: SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'. Colonne: SELECT name FROM pragma_table_info(?) — utilizzare la forma di tabella, perché PRAGMA table_info(x) dichiarazione non può prendere un parametro limitato e invitante interpolazione stringa c'è esattamente il foro che si sta cercando di chiudere. LIMIT n OFFSET m.

Oracle

Tavole: SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = :owner; colonne da ALL_TAB_COLUMNS. Citazione con doppie citazioni, e ricorda un identificatore non quotato si piega al caso UPPER, l'opposto diPostgreSQL. Pagina con OFFSET :o ROWS FETCH NEXT :n ROWS ONLY il 12 e più tardi.

MongoDB

No SQL, quindi nessun interpolazione identificativa e nessun parametro limite — una disciplina diversa per lo stesso obiettivo.

La domanda di introspezione per motore
-- 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;
💡
Risolvere, quindi utilizzare il nome RESOLVED. Mai passare l'ortografia del chiamante alla query anche dopo aver controllato - guardare il vero nome in su nella lista che si legge dallo schema e interpolare che.

MongoDB: le stesse regole, senzaSQL

Non c'è una stringa di query da iniettare, quindi la gente assume che non vi sia nulla da proteggere.JSONdritto find() lascia un caller inviare {"$ne": null} o {"$gt": ""} dove ti aspettavi un valore e seleziona tranquillamente ogni documento.

MongoDB — raccolta del filtro a molla scalare, proiezione come 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();
I nomi della collezione provengono dalla listaCollezioni

Risolvere l'ortografia del chiamante contro di esso e utilizzare il nome risolto.

Forzare ogni valore del filtro a una scala

Un documento in cui ci si aspettava un valore è l'equivalente di NoSQL di una quotazione randagica.

La proiezione è la regola di reazione

Escludi i campi a forma di segreto nella proiezione in modo da non lasciare mai il server, piuttosto che eliminarli dal risultato dopo.

Elimina rimanere single-document da _id

deleteOne con un _id risolto. Mai eliminareMany, e mai un filtro il chiamante influenzato.

Le scritture rimangono consentite

Stesso ragionamento comeSQL: nominare le collezioni che una scrittura può toccare, e rifiutare il resto con una spiegazione.

L'identità finisce nelle altre lingue

La sonda di identità è l'altra metà di un ponte, ed è anche HTTP. Il blocco di firma è identico in ogni lingua: base64url il payload, HMAC-SHA256 quella stringa, unire con un punto.

Impostazioni, Support Portal porta già un catalogo di snippet pronto per PHP, Laravel,WordPress, WHMCS, Nodo con e senza dipendenze, Flask e FastAPI, Django, .NET, Ruby on Rails, Java Spring Boot and Go. Prendere il firmatario dal sapore che corrisponde al vostro stack.
Cosa cambiare quando lo riusci

Quei frammenti contano un token di consegna PORTALE, che è volutamente più rigoroso: trasporta jti e single_use:true e vive circa120secondi perché viaggia in unURL. Un ponte o un token di identità widget non porta nessuno di quelli e utilizza una scadenza più lunga, minuti a ore.

Cosa rimane lo stesso

site_key, iat, exp e un top-level autenticato:true, oltre ad un amministratore o soggetto cliente con un ID e un nome utente o una email. Stesse affermazioni, stessa firma, stesso segreto.

Entrambe le forme token verificano

Un JWT a tre parti ha firmato HS256 opere, e così fa il carico di pagamento a due parti 64url plus hex HMAC che il riferimento PHP emette.

Non lo menta mai nel browser

La firma del cliente significa spedire il sito segreto a ogni visitatore.

Scegliere, onestamente

La piattaforma è PHP

Scrivere il ponte in PHP. Nasce nel pacchetto, è controllato alla deriva e può avviare la propria struttura della piattaforma per leggere una sessione live per la sonda di identità.

La piattaforma è Node

Un . js ponte navi, segni ed è alla deriva-controllato esattamente come un PHP.

La piattaforma è Python, Ruby, Go, . NET o Java

Consegnare attraverso il pannello snippet e dire così nel corpo del pannello; non lasciare il file in bridge /, dove la conformità rifiuta il pacchetto. Il connettore è altrimenti completamente normale: azioni, fornitori di contesto, identità e lookup degli ospiti tutti funzionano lo stesso, perché nessuno di loro cura che cosa risponde alla chiamata HTTP.

Non è possibile eseguire un processo sull'host della piattaforma

Then the bridge pattern is not the right tool. A bridge exists to reach a platform from inside its own host. If you can only reach it from outside, you are writing an ordinary API connector against whatever surface it does expose.

⚠️
Un altro vincolo che vale la pena di pianificare: una sonda d'identità deve leggere la sessione di login della piattaforma, il che significa solitamente correre all'interno del proprio processo o almeno sul suo ospite con l'accesso al suo negozio di sessioni. Un ponte scritto in una lingua diversa dalla piattaforma può servire i dati comodamente e può ancora lottare per rispondere op=admin_identity.
Connettori

Dare l'assistente entrambe le metà: azioni e contesto

Questa è la cosa più comune mancante da un connettore che "funziona ma è inutile". Le azioni permettono all'IA di fare le cose. Le sezioni del testo lo consentono di sapere le cose: il connettore ha bisogno sia, e la maggior parte delle domande che un amministratore fa sono risolte dal contesto, mai da un'azione. Un connettore con azioni perfette e nessun fornitore di contesti riferirà in verità che non può vedere nulla.

I due metà

Azioni — come l'IA fa le cose

Dichiarato in azioni.jsono restituito da registroAzioni(). Il modello ne sceglie uno, riempie i suoi parametri eOpsIQLe azioni sono per i verbi: annullare questa prenotazione, aprire quel biglietto, cambiare questo stato.

Sezioni di contesto — come l'IA sa le cose

Assemblato da un ContextProvider prima che il modello scada. "Quanti ordini questo mese", "che sono i miei clienti più nuovi", "cosa vendiamo" tutti risolti attraverso una ricerca di contesto, e non toccare mai un'azione a tutti.

⚠️
Sintomo di un provider mancante: l'assistente risponde "Nessun connettore abilitato fornito questa sezione del contesto" mentre il connettore è installato, abilitato e superato il test di connessione.

Il vocabolario della sezione universale

OpsIQ chiede le sezioni per nome generico. Il vostro lavoro è quello di decidere che cosa ciascuno significa sulla vostra piattaforma e rispondere a esso. Una prenotazione hotel È l'ordine dell'hotel; una stanza IS ciò che l'hotel vende. Mappa, non inventare.

ordini / pendenti_orders

Qualunque transazione sia sulla vostra piattaforma: ordini, prenotazioni, prenotazioni e lavori, spedizioni.

clienti

Il cliente e' in servizio.

products

Che cosa la piattaforma vende: prodotti, camere, piani, servizi.

fatturazione

Entrate e soldi a forma di totali, più conti per Stato.

biglietti, servizi, domini, server, attività

Usa questi quando la tua piattaforma li ha veramente. Non forzare una mappatura — una sezione non risponde è migliore di quella sbagliata.

Qualunque altra cosa la tua piattaforma abbia

Un fornitore che dichiara sezioni(): ['licenziamenti', 'shipments'] ha quelli uniti nella lista di permessi della ricerca universale, così le ricerche specifiche della piattaforma diventano disponibili senza cambiamenti fondamentali.

L'errore che costa un giorno

Un fornitore di contesto SOLO implementare l'interfaccia. Il tipo del Registro lo controlla, quindi una classe che semplicemente LOOKS destra è saltata - senza errori, ovunque.

ContextProvider. php — il contratto, dal pacchetto di riferimento Botble
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 '';
    }
}
Registralo dal connettore

Implementare ContextConnectorInterface e restituire i vostri fornitori da contestualProviders(). La classe di connettore può anche implementare ContextProviderInterface direttamente ed essere registrato come se stesso.

Restituzione testo semplice, nonJSON

build() restituisce un blocco di testo che viene concatenato nel prompt. Scrivere per un lettore: una voce, quindi una riga per riga.

Ritorno ' piuttosto che lanciare

Prendi le tue eccezioni, un fornitore che lancia è registrato e saltato, ma il ritorno '' è il contratto.

Il Costruttore non può scrivere sezioni() per voi

Le sezioni di navi ContextProvider. php generate(): array { return []; } e la procedura guidata non ha campo per esso. Riempilo a mano — e ricorda che ripubblicare dalla procedura guidata OVERWRITES il file. Copia le modifiche prima.

⚠️
Dichiara il vero TOTAL, non il numero di righe che hai inviato. Una pagina non è un totale. Un fornitore che elenca venti righe senza dire così ottiene l'assistente rispondendo con fiducia "hai20prenotazioni" quando la piattaforma detiene669. Un COUNT economico e una linea esplicita — "TOTALE su file:669(questa lista mostra il più recente20solo)" — è l'intera correzione, e un conteggio con fiducia errato è peggiore di nessun conto.
Un blocco di sezione che non può essere scambiato
$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);

Nome delle tue azioni in modo OpsIQ può dire le letture da scritture

OpsIQ classifica un'azione del WORDS nel suo action_id, ed è volutamente conservatrice: tutto ciò che non può riconoscere viene trattato come una scrittura e richiede una carta di approvazione.

1
is_destructive o richiede_confirmation vince

Se o è impostato, l'azione ha sempre bisogno di approvazione. Dichiararli onestamente — questo è ciò che supera la carta di approvazione dell'amministratore.

2
Una parola di scrittura in qualsiasi punto del id lo rende una scritta

aggiungere, creare, aprire, aggiornare, modificare, modificare e cancellare, eliminare, rimuovere, distruggere, annullare, rimborsare, sospendere, terminare, attivare, approvare, rifiutare, inviare, contrassegnare, reset, catturare, vuoto, chiudere, riaprire, assegnare, concedere, impostare, attivare e disattivare, disabilitare, generare, applicare, pagare, fornire, rinnovare, aggiornare e merge, spostare, trasferire, eseguire pochi trigger, flag, registrare

3
Poi una parola di lettura lo rende un letto

ottenere, elenco, ricerca, trovare, visualizzare, mostrare, fetch, conteggio, ricercare, descrivere, leggere, esportare, anteprima, test, ping, stato, sommario, dettaglio, recente, storia, controllo, log, statistiche, metriche, panoramica, ricavi, decomposizione, report, analisi, equilibrio, utilizzo, quota, snapshot, insights, feed, bozza, triage, classificare, suggerire.

4
Quindi il metodo HTTP decide

GET, HEAD e OPTIONS sono letti.

5
Altrimenti è una scrittura

Non riconosciuto significa approvazione richiesta.

⚠️
Scrivere parole sono controllati PRIMA leggere le parole, quindi un nome misto come get_and_sync_orders è classificato come WRITE. Scegli un verbo, mettilo prima e tienilo pulito: list_order, get_customer, search_bookings, cancel_bookING, set_order_status.

Dichiara nativo_api solo se la piattaforma ha davvero uno

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.

The Builder decides it from your data-access answer

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.

Hand-authored packages must still get it right

If you are writing the manifest yourself, declare exactly one of native_api or platform_bridge. Conformance treats platform_bridge as the escape hatch a bridge connector is expected to have, and the Builder refuses a spec that claims platform_bridge on an API connector.

Keep ai_api_reference.md honest either way

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.

Insegnare il cervello di amministrazione sulla vostra piattaforma

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.

I risultati sono stati ottenuti.

Che cosa questa piattaforma è, come i suoi dati sono modellati, quali sono i suoi oggetti chiamati, e le quirk che altrimenti farebbero indovinare l'assistente.

a_api_reference. md

Per un connettore a ponte, questo è il tuo op e fai vocabolario con i loro parametri, non una tabella di endpoint REST.

Bilancio

Arrosto6,000caratteri tenuti per connettore, e circa24,000i caratteri per l'intero blocco attraverso ogni connettore abilitato. Sopra il tappo per-connettore il file è troncato; essere conciso prima che il troncatore sia.

Pagamenti di precisione

Questi file sono la differenza tra l'assistente che utilizza i vostri strumenti universali da tavolo e rispondere dalla sezione sbagliata perché nulla gli ha mai detto quegli strumenti esistevano.

💡
Entrambi i file devono essere nel pacchetto INSTALLED, non solo il vostro albero di origine. Sono file di pacchetti ordinari, quindi sono coperti dalla firma e spediti nello ZIP - che significa anche modificare uno dopo la firma rompe il sigillo.
Connettori

Identità tramite un connettore: admin, cliente, portale

Un contratto di firma serve tre superfici. Il lavoro del connettore è quello di trasformare "chi ha effettuato l'accesso sulla piattaforma" in un token firmatoOpsIQpuò verificare, e quindi presentare l'oggetto verificato inOpsIQIl connettore non autentica mai nessuno — la piattaforma lo fa, e la firma porta tale affermazione.

Le tre superfici, un segnale

Amministrazioni — il vostro personale, dentro il vostro backend

Un soggetto di amministrazione. Il widget carica all'interno del pannello di amministrazione della piattaforma e ogni membro dello staff è abbinato al proprio agente OpsIQ.

Cliente — un cliente firmato, in chat client

Un soggetto cliente: questo permette a un cliente connesso di ottenere il proprio account WHOLE invece che una ricerca anonima: ogni ordine, dettaglio completo e qualsiasi azione self-service che consentite.

Portal — un profondo collegamento nel portale di supporto

Le stesse rivendicazioni più jti e single_use, con un120-seconda vita, perché il token viaggia inURLNon montare a mano questo: Impostazioni, Support Portal porta un cecchino pronto per lingua e la piattaforma lo inganna quando l'area dell'account viene eseguita su questo server.

Il contratto di carico

Queste sono le affermazioni che i verificano. Nulla qui è facoltativo, qualsiasi esempio parziale altrove potrebbe suggerire.

site_key

Livello superiore. Deve uguale la chiave del sito della richiesta, o il gettone è rifiutato.

iat ed exp

Il livello superiore, unix secondi. exp deve essere in futuro e dopo iat. Un gettone più di circa un minuto nel futuro è rifiutato. Tenere la vita breve — minuti a ore.

autenticato: vero

Il livello superiore, accanto all'esplosivo, afferma che un vero umano è connesso.

piattaforma

Livello superiore. Una breve slitta che nomina l'origine. Raccomandato, e permette a un fornitore di identità del connettore raccontare i propri gettoni da una piattaforma diversa.

amministratore o cliente

Un oggetto che nomina il soggetto. Deve portare un id non-vuoto, e un nome utente o una email — la porta di accesso per-admin corrisponde a quelli. Includere sia quando si dispone di entrambi.

Estrazione, verbatim dal ponte Botble
$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);

I due verificatori, e il fallimento che causano

OpsIQ ha due verifiers token, e non erano identici. Sapendo questo ti salva un pomeriggio, perché il sintomo non assomiglia a nulla la causa.

Il widget di admin ha un proprio verificatore

opsiq/embed/admin_ajax. php porta un verificatore locale che accetta la bandiera autenticata in entrambe le posizioni.

Il verificatore condiviso è più rigido

opsiq/includes/customer_identity_token_verify.php siede dietro il flusso di chat e il nucleo AJAXAPI. Ha storicamente richiesto la bandiera a livello TOP.

Il sintomo

Ogni chat risponde "Admin login richiesto", si legge esattamente come un bug di sessione e non è: il token manca la bandiera di alto livello.

Che cosa fa il core attuale

Ora accetta la bandiera al livello superiore O all'interno del soggetto, quindi il contratto è uniforme. I nuclei più vecchi leggono solo il livello superiore. Emettere la forma canonica e il vostro pacchetto funziona su ogni release.

Qualsiasi file nel tuo pacchetto che mints i token di identità è staticamente scansionato contro il contratto, e un payload la piattaforma si rifiuta non riesce a conformarsi al file esatto e alla linea.

Clienti firmati nella chat dei clienti

Il core deve timbrare il cliente verificato e il connettore deve presentarlo.

1
Il tuo ponte o endpoint minge un token cliente

Stesso segno di quello dell'amministratore, con un soggetto cliente. Leggi il cliente dalla sessione della piattaforma. Se la tua piattaforma firma i clienti in una guardia diversa da amministratori, leggi la guardia che vuoi e non cadere mai indietro attraverso soggetti — è così che un cliente sarebbe consegnato un token amministratore.

2
Il core lo verifica e lo stampa

Su un token valido, il core timbra l'oggetto verificato nella sessione. Il tuo fornitore legge una identità comprovata; non autentica mai.

3
La tua IdentityProvider lo presenta

rilevareCustomer() restituisceOpsIQforma. È necessario implementareOpsIQ\Platform\IdentityProviderInterface, o il registro di sistema lo salta silenziosamente — la stessa trappola del fornitore di contesto.

4
Le tue azioni cliente-scopia accettano un customer_id

E OpsIQ lo blocca all'identità verificata prima dell'esecuzione. Il modello non può fornire.

IdentityProvider.php — leggere l'identità comprovata, presentarla inOpsIQ'la forma
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;
    }
}

Azioni con il cliente: due serrature, entrambe richieste

The model must never choose whose data it reads. OpsIQ enforces that on its side, and your platform must enforce it on the other side too. One lock is a bug away from a leak; two locks are a contract.

Bloccaggio1 — OpsIQsovrascrive i parametri di identità

Prima che un'azione cliente-chat funzioni, OpsIQ sostituisce ogni parametro a forma di identità con l'identità del visitatore VERIFIED: client_id, clientid, user_id. userid, customer_id; account_id prende il nome di una stringa; client_email, customer-identifier, user-mail.

Lock 2 — la tua piattaforma ri-scoperti ogni query

Prendere il documento che vi è stato dato e aggiungerlo alla clausola WHERE di ogni lettura e ogni scrittura su quella superficie. Non fidatevi mai del riferimento nella richiesta da solo. Un cliente firmato chiede circa l'ordine di qualcun altro deve tornare vuoto, non vietato.

Nome dei tuoi parametri in modo da bloccare1può trovarli

Chiamalo customer_id, non cust o ref. Un parametro OpsIQ non riconosce è un parametro che non può bloccare.

⚠️
Date al cliente firmato la superficie delle sue operazioni OWN, separate da quelle di amministrazione, anche quando il SQL sembra simile. Due superfici con regole diverse rimangono onesti; una superficie con una bandiera diventa una perdita il giorno in cui qualcuno modifica il ramo sbagliato.

cablaggio a pagina zero: la sonda di connettore-dichiarato

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.

impostazioni.json— l'impostazione della sonda
{
  "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 sonda è chiamata dal browser

Stessa origine, quindi non può portare un intestazione personalizzata. La sua autenticazione è la sessione della piattaforma. Mettilo AHEAD del tuo cancello di chiave a ponte, tienilo lontano dai dati di registrazione e non restituisci nulla per un visitatore registrato.

Risponde a una forma fissa

{"success":true,"authenticated":true,"admin":{...},"identity_token":"..."} — and {"success":false,"authenticated":false,"error":"..."} when nobody is signed in.

Nessun segreto di lunga durata nella fonte della pagina

Solo il segno firmato e che espila.

Le implementazioni full endpoint per Laravel,WordPress, WHMCS, Symfony e PHP semplice, più le specifiche di Laravel hard-won e l'ordine di risoluzione dei problemi, sono sulla pagina del widget di admin. Sono lo stesso codice per un soggetto cliente: cambiare la guardia che si legge e il tasto dell'oggetto che si firma.

Connettori

Pubblicazione: la modifica della cartella non è pubblicazione

Il modo più comune per perdere un pomeriggio è quello di modificare un connettore sotto marketplace_connectors/, reinstallarlo e trovare nulla cambiato. Le installazioni non leggono quella cartella. Tirano uno ZIP firmato dal catalogo del mercato. L'editoria è la sequenza che mette i cambiamenti in quel ZIP.

Perché la modifica non ha fatto nulla

marketplace_connectors/<slug>/ is the SOURCE

Non si installa nulla da esso.

Il catalogo contiene una ZIP firmata

Un download di installazione che ZIP, verifica la firma e lo disfa. Finché non ricostruisci il ZIP ogni installazione continua a ottenere il vecchio pacchetto.

Il Connettore Builder pubblica da qualche altra parte

It writes into /connectors/<slug>/ on this install. That is a local connector, not a marketplace release. The two paths do not overlap.

La sequenza di rilascio

1
Bump la versione in file TWO

impostazioni.jsone connettore_appalti.json. Conformance li confronta e non riesce se la slitta, la versione o il set di funzionalità non sono d'accordo. Aggiungi una voce CHANGELOG.md mentre sei lì — è un file richiesto.

2
Risincrina il frammento del ponte

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
Disegnare ogni pacchetto

php tools/resign_all_connectors. php — la firma copre le hashes dei file, quindi QUALSIASI modifica lo invalida.

4
Esportare la chiave di firma, poi seme

Il seeder firma ogni pacchetto come costruisce lo ZIP, e si corre in un contesto dove la chiave non può essere letta dalle impostazioni - quindi deve provenire dall'ambiente.

5
Redeploy il file del ponte, se si spedisce uno

Non tocca la copia seduta nel webroot dell'operatore, dite loro, nel pannello e nel changelog.

L'intero rilascio, in ordine
# 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
⚠️
Perché l'esportazione non è facoltativa: il firmatario cerca la chiave in OPSIQ_CONNECTOR_SIGNING_KEY prima e la impostazione connettore_signing_key secondo. Il sezionatore viene eseguito sul boottrap SaaS e gli strumenti/sign_connector.php non si avvia nulla, quindi in entrambe le impostazioni il lettore non esiste - senza alcuna variabile di ambiente non c'è chiave, e si ottiene "Nessun tasto disponibile" oOpsIQe può trovare la chiave da solo.

Che cosa realmente navi

Solo file la firma copre

Lo ZIP è costruito dalla lista dei file del firmatario, quindi un file stray seduto nella cartella del pacchetto non viene spedito.

Estensioni coperte

php,json- Sì.css, md, txt,html, sh, svg, png, jpg, jpeg, gif, webp, ico, yml, yaml — ricorsivamente, compreso ponte / e test/. firma.jsonè escluso dalle ciglia e poi aggiunto allo ZIP in modo che le installazioni possano verificare.

Qualunque altra cosa è indicata come non_packaged

Il seeder nomina ogni file che ha lasciato dietro. Leggi quella lista. Un file che si aspetta di spedire appare là significa un'estensione sbagliata o una posizione sbagliata — non un successo silenzioso.

Modificare qualsiasi file coperto rompe il sigillo

Incluso un file Markdown, dimettete quel pacchetto.

File richiesti in un pacchetto distribuibile

connector.php

Deve restituire un'istanza di ConnectorInterface.

settings.json

Manifest: slug, nome, versione, manifest_version, compatibilità, funzionalità, connettore_contrattualizzazione, impostazioni.

connector_contract.json

Il suo set di funzionalità e versione deve essere identico alle impostazioni.json_

README. md, DEVELOPER. mD, CHANGELOG. mdi

Tutti e tre sono controllati per l'esistenza E dimensione minima. DEVELOPER. md ha bisogno di contenuti reali, non un stub.

Un file per capacità dichiarata

Ogni funzionalità nomina il file che si aspetta — ContextProvider. php per contesto, IdentityProviders. phpa per identità, GuestLookupProvinder. phpo per guest_lookup e così via — a meno che il connettore non implementa la capacità in linea.

Niente che sembri una credenziale

La conformità esegue la scansione dei tre file Markdown per valori a forma di segreto e chiavi private, e non riesce ad un colpo.

Controllalo prima di spedirlo

Controlla il manifesto contro il contratto canonico, che le funzionalità runtime e manifeste concordano, che ogni capacità dichiarata ha il suo file e i suoi metodi, il contratto di identità in ogni file di minzione, la corrispondenza ponte-snippet, guest-lookup consentonolist igiene, azione unicità e sicurezza di conferma, e la firma pacchetto.

Eseguire tutti e quattro prima di ogni rilascio
# 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 fallimento è previsto e non è un problema: il check-in firma del pacchetto segnala un avvertimento mentre si sta ancora modificando.
Connettori

Pacchetto connettore e riferimento del ciclo di vita

Questo è il contratto di livello sorgente per la costruzione di un connettore OpsIQ può scoprire, configurare, validare, abilitare, eseguire, testare, firmare e distribuire.

Riferimento del programma
Pacchetto connettoreUn pacchetto di connettori ha una necessaria implementazione del connettore e manifesta, con azioni opzionali, ricette, conoscenze, beni e metadati firma.Pacchetto connettoredeveloperMANIFESTv1LIFECYCLEGestitoPROSPETTIVE DI LAVOROScopertoLIVELLI DI LAVOROconnector.phpClasse di collegamento / fabbricaObbligatoriosettings.jsonSchema di Manifest e impostazioniObbligatorioactions.jsonDefinizioni d'azioneFacoltativosignature.jsonMedati firma pacchettoComunicato1DECLAREManifestazioni e capacità2IMPLEMENTCiclo di vita e fornitori3VALIDATETest, segno, pacchetto
Un pacchetto di connettori ha una necessaria implementazione del connettore e manifesta, con azioni opzionali, ricette, conoscenze, beni e metadati firma.

Pacchetto minimo

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

Contratto di Manifestazione

settings.json utilizza la versione manifesto 1. Il validatore si aspetta una slug, nome, versione, manifest_version, compatibilità, descrizione e funzionalità. opsiq_min e opsiq_max. Lo stato di rilascio è uno dei production, beta, anteprima o template; la maturità delle capacità utilizza livelli L1–L6. I pacchetti legacy possono essere normalizzati con avvisi, ma un nuovo pacchetto dovrebbe passare senza avvertimenti.

Interfaccia di collegamento del core

  • Identità e configurazione: slug(), name(), description(), capabilities(), settingsSchema(), testConnection().
  • Ciclo di vita: onEnable() e onDisable(). Disabilitare deve essere non distruttivo; l'eliminazione dei dati è un'operazione deliberata separata.
  • In entrata / sincronizzazione: handleWebhook(), poll(), backfill(). Poll gestisce il lavoro incrementale; backfill importa la storia e deve essere sicuro da ripetere.
  • Supporto: pushReply() dove la piattaforma accetta risposte.
  • Azioni: registerActions() fornisce contratti di azione eseguibili.
  • Sicurezza: securityCapabilities(), syncBlockedIp(), removeBlockedIp(), testSecuritySync().

La base astratta offre anche retrofill a blocchi opzionali, elenco dei clienti, scoperta/creazione del account e-mail, abbonati, rilevamento di amministratore / cliente, fornitori di fatturazione / context / identità, estrazione delle risposte, riprova delle chiamate HTTP, accesso JSON-path, classifica fuzzy e helper pagination.

Capacità e autenticazione

I nomi delle funzionalità supportate includono azioni, trigger, contesto, identità, vendite, fatturazione, inbound_ticket, outbound_reply, sync_users, synchdepartments, security_events, customer_import, security _native_block, promo_audience, promo-feed, email_mailbox, nativo_api, ai_brain_aware e ai_tickets. API chiave, portatore, di base, HMAC,OAuth 2credenziali del cliente,OAuth 2codice di autorizzazione e modelli di autenticazione personalizzati.

ciclo di vita del Registro

  1. Discovery carica il pacchetto e convalida il suo manifesto.
  2. La configurazione è memorizzata per spazio di lavoro; i segreti sono crittografati.
  3. Il test di connessione dimostra le credenziali senza abilitare il connettore.
  4. Attivare le chiamate onEnable(), sincronizza le definizioni di azione e può avviare la backfill iniziale.
  5. L'esecuzione di Polling/webhook/subscriber porta sempre il contesto dello spazio di lavoro.
  6. Disattivare le chiamate onDisable() e arresta l'attività senza cancellare i dati importati.
  7. Purge è un'operazione esplicita separata.

Regole di correzione

  • Utilizzare il workspace / chiave del sito in ogni lettura, scrittura, chiave cache, chiave di deduplica e webhook lookup.
  • Rendi il backup, l'ingestione di webhook e scrivi azioni idempotent. Registra un ID esterno/ID evento ovunque la piattaforma ne fornisca uno.
  • Per i sistemi remoti, utilizzare il loro API; non assumere mai le loro tabelle di base esistono nel OpsIQ connessione.
  • Ritorno strutturato, errori di sicurezza del cliente. Mai esporre segreti, tracce del fornitore grezzo o l'esistenza di un altro spazio di lavoro.
  • Dichiarare solo le capacità del pacchetto implementa in realtà. actions.json catalogo non effettua un'azione utilizzabile fino a quando il connettore è installato, abilitato, configurato e la sua connessione è valida.

Test e rilascio

Eseguire PHP lint, validazione manifesto, test di connessione, test dello schema d'azione, test firma/riproducimento webhook, test sull'isolamento del workspace, test sul backfill-repeat, test sui connettori e test di guasto/retry.

Connettori

Ricette del connettore

Ricette passo per passo per le impostazioni comuni dei connettori.

Ricette
Ricetta del connettoreA Shopify si prepara la ricetta come una lista di controllo: creare app, concedere gli ambiti, incollare il token e testare, abilitare webhooks, effettuare un ordine di prova.Ricetta del connettoreShopifyRicetta · Shopify con webhooksCreare un'app personalizzata in Shopify adminSconti di sovvenzione: read_orders, read_customers...Incolla il dominio negozio + token, fare clic su TestAttiva sincronizzazione Webhook (ordina auto-registra)Posizionare un ordine di prova → appare in Vendite in 30s1STEP BY STEPRicette di pasta copiata2REAL PLATFORMSShopify · WHMCS · Stripe· GBP3VERIFYSpettacoli di prova in 30s
Ogni ricetta è una lista di controllo che si segue in alto a basso, qui, Shopify con i webhooks ordine in tempo reale, verificati da un ordine di prova.

Ricetta: Shopify con webhooks in tempo reale

Scenario:
Goal: Connect Shopify with automatic order sync and GDPR compliance.
Cosa fare:

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.

Ricetta: WHMCS integrazione

Scenario:
Goal: Connect WHMCS so AI can look up clients, services, tickets, and invoices.
Cosa fare:

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.

Ricetta:Stripepagamenti

Scenario:
Goal: Track Stripe payments and let AI look up transactions.
Cosa fare:

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.

Ricetta: Google Business Profile

Scenario:
Goal: Connect GBP for review management, posts, and insights.
Cosa fare:

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.

Connettori

Estendere il CRM e l'Intelligenza del Sito

OpsIQ I sottosistemi sono aperti per l'estensione. Un connettore può collegare una nuova funzionalità al CRM o all'Intelligenza del Sito senza modifiche OpsIQ core, tramite il registro delle funzionalità della piattaforma (\OpsIQ\Platform\CapabilityRegistry). Dichiarare la capacità, implementare il suo piccolo set di metodi, spedire il connettore,OpsIQ lo scopre e la lega nell'interfaccia utente, il cliente 360 timeline e i prompt di installazione.

Esecuzione CRM & SI
Capacità di piattaformaUn connettore sugli autobus di capacità di alimentazione sinistra (CRM, Site Intelligence, Analytics) scoperto dal CapabilityRegistry.Capacità di piattaformaspazio di lavoroIl connettoredichiara le capacitàCRMcalendario · arricchimento · esign · pagamenti · cassetta postaleIntelligence del sitoLocal_listing · Ranking dei prodottiAnalisiweb_analytics · report & ingestRegime di responsabilitàlo scopre e fili l'interfaccia utente + timeline1DECLARECapacità, non modifiche core2PLUG INCRM · SI · Autobus di analisi3AUTO-WIREDUI, timeline, suggerimenti
Un connettore dichiara le capacità (calendario, arricchimento, dati di grado, analisi...) e OpsIQ li collega automaticamente in CRM e Site Intelligence, senza modifiche del nucleo.

Capacità di decantare

Dichiarativo (impostazioni.json)

Aggiungi un <domain>_capabilities array, migliore per connettori senza codice/marketplace. Domini: crm, site_intelligence.

In codice (connector. php)

Attuazione crmCapabilities() / siCapabilities() che ritornano gli stessi descrittori.

Dichiarare un fornitore di calendari CRM (impostazioni.json)

Scenario:
Goal: make a calendar connector appear in the CRM Schedule-meeting panel.
Cosa fare:

"crm_capabilities": [ { "type": "calendar", "label": "Calendar (Acme)", "actions": ["createEvent","listEvents","freeBusy"], "requires_auth": true } ]

Dichiarare un provider di servizi segreti del sito (impostazioni.json)

Scenario:
Goal: feed local-listing data into Site Intelligence.
Cosa fare:

"site_intelligence_capabilities": [ { "type": "local_listing", "actions": ["listLocations","listReviews","getInsights"], "requires_auth": true } ]

Bus di capacità e la loro superficie del metodo

crm / calendario

createEvent($settings,$params) → {successo, event_id,html_link,meet_link}; listEvents; freeBusy. Guidato da \OpsIQ\CRM\CalendarBridge.

crm / arricchimento

enrich($settings,$params) → {successo, tratti}. Guidato da \OpsIQ\CRM\EnrichmentBridge (anche funziona automaticamente su società creare quando un fornitore è collegato).

CRM / esign

sendForSignature($settings,$params) → {successo, envelope_id,sign_url}. Guidato da \OpsIQ\CRM\EsignBridge.

Informazioni sul sito / local_listing

listLocations, listReviews, getInsights. Nave tramite il connettore Google Business Profile.

site_intelligence / ran_data

keywordRanks($settings,$params) → {successo,ranks}. Guidato da \OpsIQ\SiteIntelligence\RankDataBridge. Nave: connettore SerpApi.

analisi / web_analytics

report($settings,$params) (Sincron/export) + ingest($settings,$events) (import). Guidato da \OpsIQ\Analitici\WebAnalyticsBridge. Navi: Google Analytics (GA4) connettore. Dati API per report, protocollo di misura per l'importazione. L'analisi è aperta per connettori come CRM + Site Intelligence (dominio analytics / analytics_capabilities).

pagamenti / pagamento_provider

listPayments, customerPayments, createPaymentLink. Guidato da \OpsIQ\Pagamenti\PaymentsBridge. Mostra i pagamenti di un cliente sulla timeline CRM + invia un link di pagamento su un accordo. Spedizioni: Connettore di pagamento Stripe. Dominio payments / payments_capabilities.

Cassetta postale / email_sync

listMessages + sendMessage. Guidato da \OpsIQ\Mailbox\MailBoxBridge. E-mail del cliente sul 360 timeline + inviare email da un accordo. Spedizioni: Gmail + Outlook/Microsoft 365 connettori. Dominio mailbox / mailbox_capabilities.

Condividi OAuth app + UN redirect

Tutti i connettori di Google condividono l'app ONE via \OpsIQ\OAuth\SharedGoogleApp. Set google_oauth_client_id/_secret una volta e Calendario, Analytics, Business Profile + Gmail tutti i campi di lavoro (il per-connector "(opzionale)" sono overrides). URI, <site>/connectors.php?oauth=callback (nessuno per-connettore slug), perché Google non espone API aggiungere URI redirect a un'app; OpsIQ recupera il connettore dal firmato OAuth state Registrare quel singolo URI una volta e ogni connettore Google (presente + futuro) autorizza senza ulteriori configurazioni Console. SharedGoogleApp::resolve(...)La redirect_uri dal tuo oauthParams(); mai hard-code a per-slug redirect. I connettori Microsoft fanno lo stesso via \OpsIQ\OAuth\SharedMicrosoftAppmicrosoft_oauth_*).

I pulsanti di importazione sono dotati di funzionalità

Il Importazioni (scarica storica) e Importa clienti I pulsanti mostrano SOLO per i connettori che li implementano effettivamente, rilevati dalla riflessione, quindi non c'è alcuna bandiera da dichiarare. backfill() o backfillChunk() per guadagnare il pulsante Importa; sovrascrivere listCustomers() (ritorno {email, first_name, ...} pagine) per guadagnare clienti Import. AbstractConnector no-op e il pulsante rimane nascosto, quindi l'interfaccia utente non offre mai un connettore di importazione non può eseguire.

AI attraverso gli autobus

L'agente CRM propone e prenota le riunioni fuori dei segnali di accordo (\OpsIQ\CRM\MeetingProposer → CalendarBridge), e auto-enriches nuovi conti, il “AI opera il CRM” loop, eseguito attraverso i bus di connettore.

Controllo biglietti cliente (fetchTicket())

Due livelli, nessun cambiamento di nucleo

Quando un visitatore fa riferimento a un numero di biglietto nella chat client ("qual è lo stato del T-000123?"), OpsIQ lo risolve in due livelli. Tiro 1 legge il biglietteria condiviso OpsIQ, ogni connettore con inbound_ticket rispecchia i suoi biglietti lì, così i biglietti sincronizzati funzionano solo per tutti i connettori con zero per-connettore codice. Tiro 2 è un ritorno dal vivo per i biglietti OLD che non sono mai stati spesi: core chiama un OPTIONAL fetchTicket() su ogni connettore abilitato che lo implementa. duck-typed (scoperto da method_exists()- Come? contextProviders()/audienceCatalog()), così firmata ConnectorInterface è intatto e i connettori che non ne hanno bisogno (email / fonti di catena che creano biglietti nativamente) semplicemente omettere.

⚠️
La proprietà è obbligatoria e la vostra a far rispettare. fetchTicket() riceve l'identità dei visitatori VERIFIED in $ctx (client_id + client_emailRisolvere il cliente della piattaforma da tale identità e query SOLO che i biglietti del cliente, quindi ricontrollare la proprietà sul record di dettaglio. null su qualsiasi miss, errore o errore, mai dati di un altro cliente. null degrades con grazia a "non trovare quel biglietto".
connettore.php, il contratto fetchTicket() (riferimento: connettori/whmcs e connettori/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
    }
}

Come la piattaforma lo utilizza

Scoperta

CapabilityRegistry::providers($domain,$type) elenca i provider con stato installato/abilitato/ready (basato su file system; DB solo per la bandiera abilitata).

Selezione

CapabilityRegistry::active($domain,$type) restituisce il primo fornitore pronto con il suo connettore caricato e le impostazioni. Ponti chiamano questo invece di hardcoding slugs.

Notifica di installazione

Quando una funzione ha bisogno di una capacità che non è ancora collegata, l'interfaccia utente mostra un prompt Connect/Install con un clic, mai un controllo morto.

Guida completa

Vedi connectors/PLATFORM_CONNECTORS.md (CRM + Intelligenza del sito) e connectors/CRM_CONNECTORS.md nel pacchetto.

Connettori

Ricerca self-service del cliente e rimborsi (costruire il connettore per la chat dei clienti)

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.

Dichiarare un cliente lookup

Nel tuo actions.json, un'azione di sola lettura diventa responsabile del cliente con TUTTO IL TRATTAMENTO: "scope":"client", "requires_confirmation":false, "is_destructive":false. Uso "scope":"both" quando lo stesso lookup dovrebbe anche essere callable dal vostro team nell'Amministrazione AI. admin, client, both e system (system non raggiunge né AI —APITutto il resto viene respinto in modo errato: la validazione del pacchetto fallisce e l'azione non si installa. writing — l'assistente di scrittura è servito il admin set di azione.

La regola dell'identità (obbligatorio)

Nome del parametro di identità dal set standard. Bloccato al id numerico verificato: client_id, clientid, customer_id, user_id, userid, account_id. Bloccato a questo id come una stringa: client_identifier, customer_identifier, account_identifier. Bloccato all'e-mail verificata: email, client_email, customer_email, user_email. OpsIQ blocca e riempie automaticamente dal cliente firmato-in verificato dalla piattaforma; l'IA non vede mai o sceglie l'identità. Un nome non standard viene chiuso (negato, mai trapelato).

Cosa deve rimanere solo amministratore

Qualsiasi cosa non sia stata portata da quell'identità: fetch-by-bare-id (order_id/ticket_id da solo), liste di negozio, ricerche in testo libero. Queste sono perdite cross-customer su qualsiasi piattaforma. "scope":"admin".

Risultato modellazione (tasti di montaggio a risposta)

I risultati della ricerca sono strutturalmente tagliati prima di raggiungere l'IA: le chiavi a forma segreta vengono eliminate, lunghe stringhe e liste sono bloccate, i campi vuoti sono indiscreti, e una mappa piana più ampia del tappo chiave mantiene la sua prima di rispondere-portare le chiavi, soldi (credit, balance, amount, total, due, paid), identità (email, *name, phone, company), stato (status, active, expir*, renew*), date, plan/product/domain/service/subscription/order/invoice/ticket campi, valuta, conteggi e stats/summary/totals, prima che i posti rimanenti vadano ad altre chiavi più piccolo-valore-prima. Guida pratica: nominare i campi con quel vocabolario standard e restituire i campi che rispondono alla domanda del cliente piuttosto che una piattaforma grezza 100-chiave; un campo chiamato al di fuori del vocabolo compete per i sedili a sinistra e può essere tagliato da carichi molto ampi.

Rimborsi · che cosa il connettore fornisce

Due operazioni grezze, senza politiche: (1) un pagamento-verificazione leggibile filtrabile per identità E un riferimento di transazione (tuo API deve E i filtri), ad es. whmcs_get_transactions; (2) un'azione di rimborso (scope:"admin", requires_confirmation:true, is_destructive:true, mai esposto al cliente), ad esempio. whmcs_refund_order. L'azienda sceglie entrambe le chiavi in Impostazioni → Chat client; OpsIQ ri-verifica il lato server di pagamento, applica la casella politica dell'impresa (amount cap, fascia d'età, limite mensile), problemi all'interno della scatola e file un biglietto di revisione per tutto il resto.

No-codice costruttore

L'editor di azione del Connector Builder ha gli stessi controlli: impostare "Chi può usarlo" per i clienti Signed-in, lasciare entrambe le caselle di controllo scrivere fuori e utilizzare un nome standard dei parametri di identità.

Esecuzioni di riferimento

Le voci "Customer Self-Service" connectors/whmcs/actions.json, woocommerce/actions.json, oscommerce/actions.json; contratto completo connectors/README.md §8.1–8.2 e ConnectorInterface::registerActions().

Connettori

Cerca gli ospiti — lasciare che i visitatori tracciano una prenotazione, la spedizione o l'ordine SENZA firma in (guest_lookup)

Hotel, corrieri e molte piattaforme di commercio servono clienti che detengono un riferimento ma senza login: un ospite con conferma della prenotazione, un destinatario con numero di tracciamento. guest_lookup capacità (Connector Contract, modalità: generato) consente a TUO connettore servire quei visitatori nella chat client AI — noOpsIQmodifiche del core, nessuna codifica della piattaforma. Il vostro connettore dichiara che COSA dimostra il diritto e i campi WHICH sono visibili;OpsIQapplica gli interruttori, l'acceleratore e l'uniforme negano.

Il modello di fiducia

Riferimento + prova, mai identità

Il visitatore fornisce il riferimento record (in corrispondenza del regex dichiarate) più la prova che scegliete – normalmente l'email sul disco. L'azione di fetch recupera il record SERVER-SIDE per riferimento; il provider generato da OpsIQ confronta la prova contro il registro FETCHED. L’ingresso del visitatore non è mai attendibile e nessuna identità verificata viene creata: la partita dà diritto al visitatore a quella lista dei record.

Nega uniforme (nessun oracolo di enumerazione)

Not-found and proof-mismatch produce ONE identical answer. The AI is explicitly instructed never to confirm whether a reference exists and never to invent record details. Attempts are rate-limited per conversation + IP by core before your connector is ever consulted.

Doppia opzione, entrambi di default OFF

Nulla serve agli ospiti fino a quando l'azienda consente gli switch BOTH: il controllo su tutto lo spazio di lavoro in Impostazioni→Sicurezza→"Guest record lookups in client chat" (permesso-gated E sempre password-confirmed, anche quando opzionale step-up è spento), e il proprio connettore guest_lookup_enabled Installazione o abilitazione di un connettore da solo non apre mai la superficie dell'ospite.

La superficie dedicata agli ospiti

Il fornitore generato si registra sul guest superficie di contesto — strutturalmente separata admin e customer. I fornitori di contesti esistenti non sono mai consultati per i visitatori anonimi, e il fornitore ospite non è mai consultato per quelli firmati. Il ctx riceve porta il messaggio di chat, il thread id e l'ha affermato (non verificato) email pre-chat come candidato a prova — nessun campo di identità.

Dichiararlo nel Costruttore

1
Definire l'azione di fetch

Nella fase Azioni, aggiungere un'azione di sola lettura che restituisce il record ONE per riferimento (ad es. GET /bookings/{booking_number}) e mappare i campi di risposta con alias: stato, arrivo, partenza, room_type, customer_email...

2
Tick "Guest lookups"

Sul passo di capacità, abilitare guest_lookup. Viene visualizzato un pannello dedicato: selezionare l'azione fetch, nominare il parametro di riferimento, dare il modello di riferimento (un corpo regex come \bBK-[0-9]{4,10}\b), nominare il record ("prenotazione"), e scegliere la prova — email sul registro (consigliato) o nessuno (riferimento da solo, per tracciamento di corriere di stato).

3
Permette di elencare i campi visibili

Incollare esattamente i campi che un ospite può vedere. Tutto il resto è DROPPED — mai rifatto. Il Costruttore rifiuta i campi a forma di PII (email, telefono, indirizzo, pagamento...) nella lista dei permessi e la suite di conformance-gate di rilascio ricontrolla la stessa regola prima di pubblicare, quindi una spec a mano non può sganciare uno in. Nota che la convalida di tempo di installazione copre la prova manifesto e la firma solo campo.

4
Pubblicare e abilitare

Il Costruttore emette GuestLookupProvider.php — l'attuazione canonica indurita, identica per ogni pacchetto generato — e aggiunge guest_lookup_enabled il business si arma i due interruttori e la chat AI inizia a offrire la ricerca quando un visitatore chiede circa il tipo di record.

Norme contrattuali

Campi a forma di stato solo

Pensate "che cosa sarebbe una stampa di corriere sulla pagina del tracciamento pubblico": stato, date, stanza o categoria di servizio, conteggi. Nomi, recapiti, indirizzi stradali, dati di pagamento e note di testo libero non hanno posto in una chat anonima — il Costruttore e la conformità entrambi rifiutano loro.

L'IA risponde SOLO dal blocco

Il fornitore generato termina la sua uscita con un'istruzione per rispondere solo dai campi elencati e offrire un biglietto per qualsiasi altra cosa. Dettaglio non nella lista dei permessi è "non disponibile in chat" — dal design.

Continua a lavorare

Il provider ri-deriva il riferimento dai recenti messaggi del visitatore nella stessa conversazione, quindi "e quando è check-out?" funziona senza ridefinire il riferimento. L'email di riferimento e di prova corrispondente viene ricordata sul thread della chat come CANDIDATES, così i follow-up non ri-ask. Sono candidati solo: ogni turno ancora re-fetches the record server-side and re-compares the proof prima di rilasciare un campo singolo.

Pacchetti a mano

Un pacchetto di mercato può spedire il proprio GuestLookupProvider.php implementing ContextProviderInterface con surfaces(): ['guest']. Seguire esattamente il contratto del modello generato — prendere per riferimento, proof-match server-side, negare uniforme, consentire l'uscita solo di lista — e dichiarare guest_lookup in capabilities. La conformità verifica la superficie degli ospiti e analizza la lista dei permessi per PII.

💡
Le ricerche degli ospiti sono contestuali di sola lettura per la chat AI. Non eseguono mai azioni, non creano identità e non sbloccano mai il percorso d'azione self-service del cliente sopra - che il percorso richiede ancora un cliente firmato-in piattaforma.
Connettori

Promozione targeting (promo_audience)

Lasciate che le campagne di destinazione dello Studio promozionale da parte del cliente LIVE e lo stato di fatturazione dalla piattaforma: "ha una fattura non pagata", "ordine in sospeso", "sottoscrizione annullata". Qualsiasi connettore (preinstallato, mercato o uno si costruisce voi stessi) aderisce implementando due piccoli metodi. OpsIQ modifiche del core, nessuna codifica della piattaforma: il connettore appare come una piattaforma nella scheda Targeting dello studio con la sua discesa di fatti e diversi connettori possono essere abilitati fianco a fianco.

Promo
Promozione targeting del pubblicoUn'identità verificata passata a un connettore pubblicoFlags chiamano produrre fatti che guidano una regola di destinazione, con una nota chiusa.Promozione targeting del pubblicospazio di lavoroIntrusoidentità verificatapubblicoFlags()il connettoreATTIVITÀunpaid_invoices = 2RUOLOnon retribuito_fatture ≥ 1Spettacoli di campagnaFalli chiusi: client sconosciuto o qualsiasi errore → la campagna rimane nascosta.1TWO METHODSpubblicoCatalogo + Bandiere2LIVE STATENon pagato, in attesa, stato3FAIL-SAFENon si mostra mai a persona sbagliata
Il connettore risponde a fatti di fatturazione dal vivo per il visitatore connesso; lo studio si rivolge su di loro, e non riesce chiuso in modo che un'offerta di fatturaggio non raggiunga mai la persona sbagliata.

Come funziona

1
Dichiara i tuoi fatti

Attiva il tuo account di accessoCatalog() nella tua classe di connettori, restituisce un'etichetta e l'elenco delle chiavi che la piattaforma può rispondere.

2
Risposta per un cliente

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
Fatto

Abilitare il connettore. La scheda Promozione Studio Targeting cresce una sezione "Client & fatturazione" che elenca la piattaforma; gli amministratori costruiscono regole come "non paid_invoices >= 1"; ogni fatto diventa anche una variabile di personalizzazione come {unpaid_invoices}.

connettore. php, il contratto promozionale completo
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'],
    ];
}

Norme contrattuali

Pubblicizzare la capacità

Aggiungi 'promo_audience' al connettore capabilities() array in modo che la piattaforma e il mercato lo elencano come pubblico-capable (la scoperta funziona anche dalla presenza del metodo, ma dichiarando che è il segnale pulito). connectors/whmcs connettore è l'implementazione di riferimento completa.

Denominazione chiave

Valigia di serpente, 2-60 caratteri, corrispondenti ^[a-z0-9_]+$. I tipi: numero, testo, bool. Le chiavi non dichiarate restituite dal pubblicoFlags() sono ancora utilizzabili nelle regole, ma dichiarano tutto ciò che supporti in modo che gli amministratori possano vederlo.

L'identità è verificata

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.

Fail chiuso · sempre

Su QUALSIASI errore (API una regola il cui fatto è mancante rende la campagna NON mostra. Un popup con fatturazione-targeted non deve mai raggiungere la persona sbagliata; OpsIQ applica anche questo nel matcher di regola.

Prestazioni

pubblicoFlags() è chiamato al massimo una volta per connettore per vista pagina, e SOLO quando una campagna pubblicata utilizza effettivamente le regole della vostra piattaforma. 1-2 API telefonate; OpsIQ memoizes all'interno della richiesta.

Operatori forniti gratuitamente

Gli amministratori combinano le chiavi con =, !=, >, <=, <= ( <), <=; contiene, è impostato, è vuoto, si forniscono solo i valori.

Token di personalizzazione

Ogni fatto raddoppia come variabile nella copia della campagna: {unpaid_invoices}, {client_status}, più i componenti {first_name} e {client_email}. I valori sono sanitizzati prima del rendering.

Connettori di mercato senza codice

Fatti automatici

Dichiarativa (JSON-solo) i connettori di mercato ottengono promo_audience GRATIS: se il connettore dichiara clienti/utenti, fatture, ordini o risorse abbonamenti, OpsIQ deriva customer_status, nonpaid_invoices, addome_due, pendenti_orders, active_subscriptions e sottoscrizione_stato dalle tue azioni di ricerca esistenti.

Catalogo personalizzato (impostazioni.json)

Aggiungi un oggetto di audience_capabilities · {"label": "My Platform", "keys": [{"key": "open_carts", "label): "Open carts", tipo: "number"}, per controllare esattamente quali fatti (e etichette) appaiono nello studio dropdown.

Testare il tuo fornitore

1
Abilitare il connettore

Connettori > il connettore > Attivare. Quindi aprire la scheda Targeting di qualsiasi campagna. La piattaforma deve apparire sotto "Connettenti & fatturazione (connessioni)".

2
Costruire una regola

Aggiungi: La tua piattaforma · una chiave · >= · 1 e impostare "I client registrati solo". Salvare e pubblicare.

3
Verificare entrambe le direzioni

Accedi alla tua piattaforma come client che corrisponde alla regola (il popup deve mostrare) e come uno che non (la popup dovrà rimanere nascosta).

Avviare una campagna dal proprio codice (innesco personalizzato)

Perché?

Oltre ai trigger integrati (delay, scroll, out-intent, idle, click, pagine-viewed, chat / attività di biglietto), è possibile licenziare una campagna da qualsiasi parte del sito o connettore front-end, dopo un passaggio di checkout riuscito, quando un carrello viene abbandonato, quando la tua SPA cambia percorso, ecc.

Come?

Impostare il trigger della campagna per Personale con un nome di evento (ad es. checkout_failed), quindi chiamare il gancio globale dalla tua pagina:

il tuo sito / connettore anteriore JS
// 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 lancio di un evento non supera mai il targeting o la frequenza, emette solo “quando”. La campagna deve ancora passare ogni regola (geo, pubblico, consenso, cap) prima che si mostri.
La guida completa su come usare (designing, block, analytics, A/B, publishing) vive nel Centro di Aiuto in-app sotto Engage→Studio di promozione. La capacità qui viene scoperta automaticamente da qualsiasi connettore ENABLED in connettori / o marketplace_connectors/. Non c'è nulla da registrare.
Connettori

Capacità del connettore dell'indagine (Contract 2.2)

Il survey la capacità consente a qualsiasi piattaforma di fornire adattatori verificati dell'identità del cliente, fatti del pubblico, variabili sicure e candidati destinatario a Survey Studio. promo_audience e non fornisce una proprietà di connettore di sondaggi, risposte, analisi o la consegna di email.

💡
Stato di attuazione. L'autorizzazione è completa e utilizzabile oggi: Connettore 2.2, SurveyConnectorInterface, il pannello dedicato del Costruttore, generato SurveyProvider.php, i metadati di pacchetto e l'isolamento della conformità a tutta la nave. SurveyConnectorRegistry è implementato e testato, ma nessun runtime di Survey lo chiama ancora, quindi la salute del fornitore non viene riemersa nell'interfaccia utente di amministrazione e nessun pacchetto di connettori pubblicato dichiara la capacità. Imissione di Survey Identity Gateway firmata-token, targeting e integrazione variabile, materializzazione CRM Outreach e le prime mappe dei fornitori spediti rimangono fasi separate.

Responsabilità del fornitore

Catalogo e fatti

Dichiara fatti canonici e risolvi i valori solo per un soggetto a livello di server, formato da workspace. I fatti tipici includono order_count, last_order_status, cancel_order/count, customer_created_at, active_subscription_count (conto ordini_due_invoice_count) e open_ticket_count.

Catalogo e valori variabili

Rinunciare le variabili di tipo, sensibilità e contesto consentito del cliente, account, ordine, abbonamento e supporto.

Pagine sensibili

Optionally enumerate candidates for CRM Outreach with stable external IDs, bounded pages, deterministic cursors and consent-related metadata. Survey freezes the chosen audience before any send.

Identità

Accettare l'identità solo dal gateway di identità del sondaggio dopo firma token, scadenza, scopo, connettore e verifica dello spazio di lavoro.

Salute del tempo libero

SurveyConnectorRegistry è progettato per segnalare fornitori compatibili, bloccati e non disponibili senza esporre impostazioni, percorsi, identità grezze o messaggi di eccezione, e un provider bloccato non può mai essere invocato. La superficie di reportistica non è ancora esposta nell'interfaccia utente di amministrazione: oggi un fornitore bloccato è semplicemente inerte.

Regole chiuse alla Fail

Le chiavi non dichiarate, i tipi errati, i valori oversize, le mancanze del soggetto, i timeout dei connettori e le identità sconosciute vengono rifiutate. Una regola di destinazione che richiede un fatto non disponibile non corrisponde.

Cancello di rilascio del costruttore

Contratto 2.2 spedisce la voce del registro di capacità, interfaccia, pannello di mappatura dell'indagine, generato SurveyProvider.phpIl commercio, helpdesk, il ponte SaaS e i profili locali PHP lo includono; I connettori standard API si optano in. La porta statica rifiuta un provider di Survey che chiama uno spazio nomi promozionali, una tabella o la capacità.

💡
Copia da Promozione è solo importazione: il Costruttore può tradurre mappe promozionali compatibili una volta, salvare una copia completa e la provenienza record.
Connettori

Risposta (Contract 2.2)

Il reply_feedback la capacità rispecchia le proprie valutazioni per-reply di una piattaforma in OpsIQ. Una stella un cliente dà una risposta personale all'interno WHMCS L'area clienti atterra sulla risposta SAME nella OpsIQ filo di amministrazione, con lo stesso chip, credito agente, voce pagina Feedback e calcolo Team & Performance come una valutazione data su un OpsIQ Un unico storage, un chip, una pipeline; il connettore si traduce solo.

Il percorso di scrittura unico

Ci sono esattamente due percorsi di ingresso e una verità. OpsIQ porta biglietti scrivere in nativo. I biglietti della piattaforma fluiscono attraverso il connettore, e il core atterra ogni evento via ReplyFeedback::recordMirrored(): le stesse colonne, regola personale, semantica unica su richiesta, timbro di lavoro e voce del cliente che indicizza l'uso della scrittura del portale.

Conforming (quattro file, poi dimissioni)

1
connector_contract.json

Aggiungi la voce di skill. reply_feedback: version 1.0, il ReplyFeedbackConnectorInterface, i metodi rispondonoFeEDbackCatalog e pullReplyFeeed back, implica inbound_ticket.

2
settings.json

Aggiungi il backup di risposta_feedback alla lista delle funzionalità.

3
spec.json

Dichiara risposta_feedback. modes (poll e/o webhook) e la scala di valutazione della piattaforma.

4
Classe di runtime

Implementare l'interfaccia, elencare risposta_feedback in funzionalità(), quindi dimettersi il pacchetto.

Responsabilità del fornitore

Catalogo

Modalità di disattivazione, la scala di valutazione della piattaforma (il core normalizza il nativo 1-5), e qualsiasi token di reazione. Il catalogo deve essere d'accordo con spec.json.

Tradurre la traduzione

pullReplyFeedback restituisce eventi canonici: ticket piattaforma id, platform risposta id e valutazione, reazione/commento facoltativo, tempo presentato e un event_id stabile.

Idempot

event_id è stabile per feedback STATE, quindi un evento riprodotto è una no-op e una modificata sovrascrittura di rating (più tardi vince, come il portale).

disciplina del curso

Le pagine sono delimitate e deterministiche; un cursore che non avanza termina la corsa. Scarico storico come finestra di rotolamento, mai una gigante tira.

Sicurezza della sonda

Senza configurazione, restituire una pagina completa vuota invece di lanciare. La sonde del runner di conformità con argomenti vuoti.

Risoluzione chiusa

Core risolve ogni evento a una risposta locale dal marcatore specchio lo specchio del biglietto già timbri (<slug>:<ticket>:reply:<reply>). Un evento che non può essere risolto è caduto, mai indovinato; il feedback si attacca solo alle risposte del personale; e il credito dell'agente viene sempre dall'autore esistente della risposta. La valutazione scrive non cambia mai l'autorizzazione. inbound_ticket o ticket_mirror.

Esempio di lavoro: WHMCS

WHMCS memorizza le valutazioni per stella del client-area in tblticketreplies.rating. WHMCS il connettore dichiara la modalità sondaggio con un 1-5 scala, navi una ticket_reply_ratings relay comando nel suo file bridge, e traduce ogni riga in un evento i cui ids corrispondono whmcs:<ticket>:reply:<reply> Dopo aver aggiornato il connettore, ricopiare il file bridge al server WHMCS in modo che esista il nuovo comando.

💡
Contratto completo dello sviluppatore con l'interfaccia, forme di eventi, regole di normalizzazione e la lista di controllo della conformità: doc/contracts/TICKET_REPLY_FEEDBACK_CAPABILITY.md nel OpsIQ pacchetto. Accettazione: valutare una risposta all'interno della piattaforma, attendere il sondaggio oraria e la stessa risposta in OpsIQ mostra il chip, la pagina Feedback lo elenca e un evento riprodotto non cambia nulla.
Connettori

Connettore mercato

Il Marketplace ti permette di scoprire, installare e pubblicare i connettori costruiti dalla comunità.

Mercato
Connettore mercatoUna griglia ricercabile di schede di connettori comuni con categorie, installare pulsanti e valutazioni stellari.Connettore mercatospazio di lavoroConnettori di ricerca...CalendlyPianificazioneInstallazione★ 4.8HubSpotCRMInstallazione★ 4.6MailchimpEmailInstallazione★ 4.7QuickBooksContabilitàInstallazione★ 4.5TwilioSMSInstallazione★ 4.9NozioneDocumentiInstallazione★ 4.41DISCOVERConnettori comunitari2INSTALLAZIONEUn clic3PUBLISHSegnala e invia la tua
Sfoglia i connettori della comunità, installa in un clic o firma e pubblica il tuo, preinstallato e tier di mercato entrambi ricercabili.

Trovare e installare connettori

1
Sfoglia

Vai a Connettori > Marketplace. Ricerca per nome, categoria o piattaforma.

2
Recensione

Controllare la descrizione, le azioni supportate e valutazioni.

3
Installazione

Fare clic su Install. Il pacchetto connettore scarica e installa su marketplace_connectors/.

4
Configurazione

Abilita in Connettori, inserisci le credenziali API e prova.

Pubblicazione di un connettore

1
Costruisci e prova

Utilizzare il Connettore Builder. Verificare tutte le azioni di lavoro.

2
Pacchetto

Genera il profilo.json Azioni.json, conoscenza.json, e file PHP.

3
Segnale

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
Inviare

Carica attraverso il flusso di presentazione del mercato per la revisione.

Due piastre di connettore

connettori/ — che cosa funziona realmente

Tutto qui è vivo: i connettori che spediscono conOpsIQ, qualsiasi cosa installata dal mercato, e tutto ciò che il Connettore Builder pubblica su questa installazione.

marketplace_connectors/ — dove vengono autorizzate le confezioni

Il SOURCE editoriale per i pacchetti di mercato di prima parte non è una radice della scoperta: nulla qui è vivo fino a quando non viene confezionato, firmato, seme nel catalogo e installato, al punto che una copia atterra in connettori /.

💡
Guarda in entrambi i posti. Un pacchetto che hai scritto sotto Market_connectors/ non è la copia che esegue — installando copie in connettori /, e solo quella copia viene scoperta a runtime.Stripe, BigCommerce, Magento2, PrestaShop, OpenCart, Amazon SES, Postmark e Resend sono tutti pacchetti di mercato: installarne uno prima di aspettarlo in Connectors.
Sviluppatore

API e webhook costruttore

Il API e Webhook Builder consente di creare personalizzato API endpoint e webhook ascoltatori all'interno OpsIQ senza scrivere PHP grezzo.

API costruttore
API e webhook costruttoreUn costruttore che sceglie un tipo di trigger (inbound webhook, pianificazione, evento, manuale) che si alimenta in un'azione configurabile.API & costruttore di webhookspazio di lavoroATTIVAWebhook in entrataProgramma (cron)OpsIQ eventoManualeAzioneMappa dei campi in arrivo →creare biglietto / notificare / chiamare APISalvare l'endpoint1TRIGUNALEWebhook · programma · evento · manuale2NO RAW PHPCostruito nell'UI3AZIONECampi della mappa, poi eseguire
Costruire endpoint senza PHP grezzo: selezionare un trigger (inbound webhook, pianificazione, evento o manuale), quindi mappa campi a un'azione.

Trigger

Evento

Correre quando qualcosa accade OpsIQ, o quando un sistema esterno invia un evento corrispondente al tuo webhook URL. Digitare il nome dell'evento, ad esempio ticket.created.

Programma

Utilizzare uno degli eventi di intervallo incorporato come il nome dell'evento: cron. minutely, cron . hourly o cron-daily. Lo schermo Azioni e Triggers ha pulsanti per questi, in modo da non dover ricordare loro.

Frase

Eseguire quando un amministratore chiede l'IA per esso in lingua normale. Aggiungi la frase che dovrebbe corrispondere, ad esempio trovare il cliente.

Webhook in entrata

Un sistema esterno invia un POST HTTP al tuo OpsIQ webhook URL con un nome dell'evento, qualsiasi innesco che ascolti per gli incendi di quell'evento.

Solo lo esegui a volte: condizioni

Un trigger può portare le condizioni, quindi viene eseguito solo quando i dati in arrivo si abbinano. Senza condizioni che esegue ogni volta che l'evento accende.

Campo di applicazione

Un percorso nei dati dell'evento. Utilizzare un punto per i valori nidificati, ad esempio customer. email.

Abbina tutto o qualsiasi

Scegliere se ogni regola deve corrispondere, o solo uno di loro.

Test di testo

uguale, non uguale, contiene, non contiene, inizia con, è uno di, non è uno dei. Abbinamento ignora capitali.

Test di numero

più grande di, almeno, meno che, al massimo. I numeri scritti come testo ancora confrontare correttamente.

Test di presenza

è presente, manca, è vuoto, non è vuoto.

Solo la pagina dell'ingegnere di chiamata per biglietti urgenti

Scenario:
Event ticket.created, with one rule: priority equals urgent.
Cosa fare:

L'azione è in esecuzione per i biglietti urgenti e viene saltata per tutto il resto.

💡
Se si lascia le regole vuote il grilletto viene eseguito su ogni evento corrispondente, che è lo stesso comportamento di prima delle condizioni esistevano.

Azioni

Inviare webhook

Inviare HTTP POST a un esterno URL con un carico di pagamento personalizzato.

Creare il biglietto

Creare un biglietto di supporto con reparto specificato, soggetto e messaggio.

Inviare email

Invia un'email con un modello personalizzato.

Aggiornamento record

Aggiorna un cliente, un biglietto o un record CRM.

Azione del connettore

Eseguire un'azione registrata da un connettore abilitato con le sue autorizzazioni di connessione e le regole di conferma.

Corri! OpsIQ Generale API azione

Cerca il nome completo generale API Campi, ambiti, autorizzazioni, conferma, idempotency e supporto a secco provengono dal contratto d'azione in tempo reale; il flusso di lavoro viene eseguito all'interno del suo ambiente di lavoro salvato e nel contesto dell'amministratore.

Invia provider-native API richiesta

Utilizzare un connettore Nativo API Leggere o confermare Nativo API Scrivere l'azione quando il provider endpoint non ha azione curata. I credenziali rimangono all'interno del connettore e solo i percorsi relativi dei fornitori sono accettati.

Il costruttore di Azioni e Trigger, /api/v1.php, OpenAPI e Postman utilizzano lo stesso ActionContractRegistry, quindi un'azione selezionabile non può derivare dalla documentazione runtime.
Sviluppatore

Triggers libro di cucina

Ricette di attivazione pronte all'uso per l'automazione comune.

Come funziona
Triggers libro di cucinaUn flusso di ricetta: un uptime. down webhook passa un filtro di produzione, poi si estrae per creare un biglietto urgente e avvisare Slack.uptime.downMonitorare il webhookse prodfilterCreare biglietti urgentiNotifica Slack #ops
Triggers libro di cucina

Biglietto automatico da monitoraggio

Scenario:
Monitoring system sends POST when server goes down.
Cosa fare:

Trigger: Inbound webhook Condition: payload.status = "down" Action: Create ticket · Dept: Technical, Subject: "Server {{payload.hostname}} down", Priority: Urgent

Slack notifica su grandi ordini

Scenario:
Slack message every time a customer places an order over $100.
Cosa fare:

Trigger: Event (order.completed) Condition: order.amount > 100 Action: Send webhook to Slack incoming webhook URL with order details

E-mail digerente settimanale

Scenario:
Summary email to management every Monday at 9am.
Cosa fare:

Trigger: Schedule (Monday 09:00) Action: Send email with last week's stats pulled from the REST API

Biglietti per Escalate stale

Scenario:
If a ticket has no reply for 24 hours, assign to team lead.
Cosa fare:

Trigger: Schedule (every hour) Condition: ticket.status = "Open" AND ticket.last_reply_age > 86400 Action: Assign to team-lead, add internal note

Sviluppatore

Costruire la prima azione

Questo passaggio crea un semplice connettore azione da zero.

Azioni di costruzione
Costruire un'azioneUn modulo di definizione dell'azione: name lookup_order, una richiesta del GET /orders/{id}, un parametro id digitato e un passaggio 200 Prova.Nuova azionespazio di lavoroNuova azioneNomelookup_orderRichiestaGET/orders/{id}Parametriid · stringa200 · ordine trovato1DEFINENome, metodo, endpoint2PARAMSIngressi di tipo3TESTLive 200 risultato
Costruire un'azione da zero. Nome, impostare il metodo e l'endpoint, dichiarare params digitati, e testarlo a un live 200.

Due tipi di azione

Prima di iniziare, decidere quale è necessario. Entrambi sono configurati nella stessa schermata.

Chiamare un esterno API

L'azione invia una richiesta HTTP alla tua piattaforma. Scegli questo quando OpsIQ ha bisogno di raggiungere e fare qualcosa sul tuo lato.

Eseguire un'azione connettore

L'azione funziona qualcosa che già fornisce un connettore installato. Scegli questo quando il lavoro è già disponibile e si desidera solo innescarlo. Si sceglie l'azione del connettore da una lista, quindi non c'è nulla per collegare.

La seconda opzione è come riutilizzare tutto ciò che i vostri connettori possono già fare senza costruire di nuovo uno qualsiasi di esso: leggere un filetto del biglietto, guardare un cliente, importare contatti e così via.
1
Pianificare l'azione

Esempio: "lookup_product". Guarda un prodotto per nome, prezzo di ritorno, stock e descrizione.

2
Definire in azioni.json

Aggiungi la definizione di azione:

azioni.json— la forma reale manifesta
{
  "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" }
      ]
    }
  ]
}
⚠️
Tre cose che fanno un'azione non riescono a registrare affatto. action_id è REQUIRED e deve essere2a100caratteri di lettere minuscole, cifre e sottoscore — una voce senza uno è respinta indiretta. Il manifesto è un oggetto con "azioni" LIST, non una mappa chiave per nome d'azione. E la mappatura della risposta è "ritorni" con percorsi DOTTED (data.id), non JSONPath ($.data.ID) - non c'è "risponse_mapping", "method", "chiavetta".
3
Test con azionamento a secco

Nella fase di revisione del Connettore Builder, premere Dry run. Esegue la lista completa di controllo della conformità contro il pacchetto e, quando hai fornito le credenziali, effettua un test reale di connessione.

4
Verifica l'utilizzo dell'IA

Chiedi ad admin AI: "Guarda il prodotto Widget Pro." L'IA dovrebbe trovare ed eseguire l'azione.

⚠️
Aggiungendo un'azione alle azioni.jsonNON crea un percorso AJAX, quindi non c'è nulla da rigenerare.OpsIQquando il connettore è abilitato o le sue impostazioni sono salvate: ri-salvare il connettore e appare la nuova azione. tool/gen_route_registry.php copre l'invio di admin AJAX e non ha alcun cuscinetto sulle azioni del connettore.
Sviluppatore

Finalpoint eventi in entrata

Gli endpoint in entrata accettano firmati JSON da un altro sistema e trasformarlo in attività di contatto deduplicata che può alimentare tempi, punteggio e flussi di lavoro.

Schermo del prodotto
Punti di arrivoOgni sorgente di ingresso ha un proprio URL, segreto, mappatura e risultato di attività recente.Punti di arrivospazio di lavoroGIUDICI5ACCEPTED12.4kREJECTED18LIVELLI DI LAVOROPiattaforma di fatturazioneeventi di abbonamentoSaluteApp prodottoeventi di registrazione e utilizzoSaluteID eventoprovider_event_idDeduciFirmaX...OpsIQ-Inbound-SignatureHMAC1CREATE SOURCEURL e segreto2MAP PAYLOADEmail, evento e ID3VERIFYHMAC poi ingerire
Ogni sorgente di ingresso ha un proprio URL, segreto, mappatura e risultato di attività recente.

Creare una fonte per sistema di invio. OpsIQ genera un URL/token e segreto. Invia JSON con Content-Type: application/json e firmare il corpo grezzo esatto utilizzando HMAC-SHA256:

X-OpsIQ-Inbound-Signature: sha256=<hex hmac>

Mappa JSON percorsi per l'e-mail di contatto, nome dell'evento e ID degli eventi facoltativi. L'ID dell'avvenimento è la chiave di deduplica preferita. L’attività accettata entra nella timeline di contatto e può influenzare il punteggio del piombo, segmenti, regole del ciclo di vita e flussi di lavoro.

Rifiutare le firme non valide prima di analizzare i dati aziendali. Ruota un segreto aggiornando entrambi i lati all'interno di una finestra controllata; non registrare il segreto.

Sviluppatore

Operazioni di webhook in uscita

L'amministrazione webhook in uscita crea abbonamenti firmati, test endpoint e monitora la consegna asincrona e riprova della salute.

Schermo del prodotto
Webhooks in uscitaLa pagina webhook in uscita elenca gli endpoint HTTPS, gli abbonamenti degli eventi, la salute della consegna e un test firmato con un clic.Webhooks in uscitaspazio di lavoroENDPOINTS7SUCCESS99.2%RETRY4LIVELLI DI LAVOROSpecchio CRMcontatto.* e accordo.SaluteBus di supportobiglietto.* e chatta.SaluteData magazzino*RipristinoConsegna dei testCarico di pagamento del campione firmatoPronti1SUBSCRIBEHTTPS URL ed eventi2AUTHENTICATEFirma HMAC3OBSERVERinghiera di consegna e ripiani
La pagina webhook in uscita elenca gli endpoint HTTPS, gli abbonamenti degli eventi, la salute della consegna e un test firmato con un clic.

Gli amministratori completi creano un endpoint HTTPS, scelgono eventi specifici o la wildcard, memorizzano il segreto in modo sicuro e inviano un test. OpsIQ segna il carico di pagamento grezzo con HMAC-SHA256:

X-OpsIQ-Signature: sha256=<hex hmac>

Verificare la firma prima di deserializzare o agire. La consegna è asincrona e automaticamente riattivata dopo circa 1Un attimo. 5 minuti, 30 minuti,2ore e 12 ore. Utilizzare la rotaia di consegna recente per ispezionare lo stato, il codice di risposta e il conteggio del tentativo.

Il ricevitore deve essere idempotent perché qualsiasi sistema asincrono può ridistribuire. Ritornare una risposta 2xx solo dopo l'accettazione durevole.

Sviluppatore

Webhook

Webhooks consentono ai sistemi esterni di notificare OpsIQ quando qualcosa accade (in arrivo), e lasciare OpsIQ avvisare i sistemi esterni quando qualcosa accade internamente (outbound).

Webhook
Webhooks in uscitaLa schermata webhooks in uscita: una tabella endpoint con nome, eventi abbonati, punti di stato della consegna recenti e un pulsante Invia-test.Webhooks in uscitaspazio di lavoroPunti di fine+ Salvare l'endpointN.EVENTIDIREZIONISlack#sales-alertshttps://hooks.slack.com/…piombo. creato, venditaTest di provaSpecchio CRMhttps://api.acme.com/hookcontatto.*, biglietto. creatoTest di provaZapierhttps://hooks.zapier.com/…chat.startedTest di prova1ENDPOINTSNome, eventi, URL2SIGNEDHMAC + auto-ritribuita3SEND TESTVerificare le consegne
La vera schermata di outbound-webhooks: ogni endpoint con i suoi eventi, la salute della consegna recente e un one-click Invia test, firmato e riattivato.

Webhooks in uscita

Abbonamento

Vai a Impostazioni > Webhooks. Aggiungi un endpoint URL e selezionare gli eventi da ricevere.

Eventi

ticket. created, biglietta. replied, chat. started, chat-message, order. completed, crm. deal. stage_changed, cRM. contact. creating, ecc

Retribuzione

Dopo i guasti consecutivi 15, il punto finale è disattivato automaticamente.

Firma

Ogni richiesta include una firma HMAC in X-OpsIQ- Signature, verifica sempre.

Protezione SSRF

OpsIQ non invierà a privati/interni IPs (127.x, 10.x, 172.16.x, 192.168.x, 169.254.169.254).

Consegna asincrona

I Webhook vengono consegnati tramite la coda di lavoro, non bloccando le operazioni OpsIQ.

ID evento stabile

Ogni evento ha un event_id unico che rimane lo stesso tra i retries per la deduplicazione.

Verificare le firme webhook

PHP · verificare la firma 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, verifica la firma 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 });
});
Come faccio a testare webhooks localmente?+

Utilizzare ngrok per esporre il server locale. Impostare l'endpoint webhook al tuo ngroK URL.

E se il mio punto di vista fosse temporaneamente a terra?+

OpsIQ retries con backoff esponenziale. Se il vostro endpoint recupera all'interno della finestra di riprovazione, nessun evento viene perso.

Sviluppatore

Chiavi API

API chiavi autenticare le richieste per OpsIQ REST API. Ogni chiave ha permesso di portata.

Chiavi API
Chiavi APILa schermata di tasti API: un pannello di problemi con livello di accesso e chip di portata, accanto a una lista di chiavi mascherate esistenti con pulsanti revoca.Chiavi APIspazio di lavoroFascicolo di chiaveAccessoLeggi soloRestrizioniUscitecontacts.readtickets.readevents.writeChiave di emissioneLe tue chiaviIntegrazione Zapier••4f2aVoceApp mobileopq••• ••91c7VoceEsportazioneopq_•••2dbVoce1SCOPEDSolo per lettura o ristretto2PER-ACTIONScegli gli obiettivi esatti3REVOCABLERuotare in qualsiasi momento
La schermata delle chiavi API _: emettere una chiave di portata, sola lettura o ristretta selezionando gli ambiti esatti e revocare qualsiasi chiave in qualunque momento.

Creare un API chiave

1
Vai a Impostazioni > API Chiavi

Navigare in API gestione delle chiavi.

2
Fare clic su Crea chiave

Dagli un nome descrittivo.

3
Seleziona gli ambiti

Date la chiave solo di ciò che serve. Scopes venire in lettura e scrivere coppie per area, così un'integrazione di report può essere concessa lette e nient'altro.

Campo di applicazione

Scegli il set più stretto che fa il lavoro. admin soddisfa ogni campo sottostante, quindi usalo solo quando hai veramente bisogno di ampio accesso.

crm. read / crm

Contatti, aziende, offerte, attività, segmenti, outreach, conversioni, ciclo di vita e webhooks CRM.

biglietti. read / ticket. write

Elenca e legga i biglietti e i loro messaggi; rispondi, aggiorni, apri ed esegui operazioni di coda in massa.

conversazioni. read / conversazioni. write

Leggi le conversazioni in diretta e la cronologia dei messaggi; invia messaggi, assegna e cambia lo stato.

kb. read / kb-write

Le voci di base della conoscenza.

chat. read / chat. write

Risparmiati modelli di risposta.

connectors.read

Vedere quali connettori sono installati, cosa possono fare e testare le loro credenziali.

automations.read

Vedi le tue azioni, i trigger e la loro cronologia di esecuzione.

departments.read

Dipartimenti disponibili per il routing.

notifications.read

Notifiche per un operatore di nome.

analytics.read

Sezioni di relazione, CSV esportazioni e definizioni dei report programmati.

sito_intelligence. read

I siti monitorati e i loro rapporti SEO.

files.read

Link di download firmati per gli allegati.

status.write

Componenti e incidenti della pagina di stato.

writing

AI helper di scrittura: bozza, sommaria, tradurre, riscrivere, comporre, analizzare.

admin

Tutto, compreso un piccolo numero di azioni sensibili che non sono volutamente raggiungibili da alcun ambito stretto: cancellando un contatto, cambiando le impostazioni della privacy e leggendo il registro di accesso.

💡
Chiama meta. actions con la chiave per vedere esattamente quali azioni può essere eseguito sul tuo install, che è sempre più affidabile di lavorare da una lista.

Livelli di accesso

Tutti

La chiave può chiamare qualsiasi cosa i suoi scopi permettono.

Leggi solo

Ogni scrittura viene rifiutata, qualunque sia il campo di applicazione che si dice: la scelta più sicura per la segnalazione, le dashboard e tutto ciò che non dovrebbe mai cambiare i dati.

Restrizioni

Elenca le azioni esatte che la chiave può chiamare. Qualunque altra cosa è rifiutata, anche all'interno di un campo consentito.

4
Copiare la chiave

Inizia con "opq_". Conservalo in modo sicuro.

🚫
Mai condividere API chiavi in codice pubblico, lato client JavaScript, o controllo della versione. Utilizzare variabili di ambiente.
Sviluppatore

Collega il tuo sito web

Il OpsIQ widget è un JavaScript snippet si aggiunge al tuo sito web per il monitoraggio, chat AI, creazione di biglietti e l'identificazione del cliente.

Come funziona
Collega il tuo sito webUn tag di script a una riga sulla sinistra e, a destra, una pagina web con la bolla di chat OpsIQ che appare nell'angolo.<!-- paste before </body> --><script src="https://cdn.opsiq.io/w.js" data-site="ws_8a2f" async></script>
Collega il tuo sito web

Installazione di base

widget di base snippet
<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.

attributi di configurazione

data-site-key

Richiesto. La chiave del sito da Siti collegati.

data-mode

Opzionale. "chat" (default), "tickets", o "entrambi".

data-position

Opzionale. "bottom-right" (default) o "botto-left".

data-color

Opzionale. Codice esagonale di colore primario.

data-greeting

Opzionale. Messaggio iniziale di saluto.

data-language

Opzionale. Lingua UI: "en", "es", "fr", "de", "pt", "ar", ecc.

data-identity-token

Opzionale. Token di identità firmato generato dal server.

Supporto SPA

Monitoraggio manuale del percorso 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,
}]);

Regole di CSP

Regole CSP per widget
script-src 'self' https://your-opsiq-domain.com;
connect-src 'self' https://your-opsiq-domain.com;
frame-src https://your-opsiq-domain.com;
Il widget rallenta il mio sito web?+

No. Sotto 15 KB gzipped, carica asincrona dopo il contenuto della pagina.

Posso personalizzare l'aspetto?+

Utilizzare il colore dei dati per il colore primario. Supporto di contatto per le opzioni CSS override.

Sviluppatore

Widget installare ricette

Guide di installazione specifiche per piattaforme.

Come funziona
Widget installare ricetteCarte di installazione della piattaforma per WordPress, Shopify e Google Tag Manager, ogni dicendo dove aggiungere il widget.WPWordPressInstallare il plugin, inserirela chiave del sito, salva.NegozioShopifyIncolla il frammentotema.liquido prima /body.GTMTag Manager per WordPressTag personalizzato HTML, tutte le pagine.
Installare le ricette

WordPress

Scenario:
Add to all pages of a WordPress site.
Cosa fare:

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

Scenario:
Add to your Shopify store.
Cosa fare:

Online Store > Themes > Edit Code > Layout > theme.liquid. Paste before </body>. Save.

React / Next. js

Scenario:
Add to a React or Next.js app.
Cosa fare:

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

Scenario:
Add to your WHMCS client area.
Cosa fare:

Impostazione > Impostazioni generali > Altri contenuti globali del piè di pagina. Incolla il snippet o modifica il tuo modello footer. tpl.

Google Tag Manager

Scenario:
Add via GTM.
Cosa fare:

Creare Personalizzato HTML tag, incolla snippet. Trigger: Tutte le pagine. Pubblica.

Sviluppatore

widget di amministrazione nel tuo backend (un contratto, qualsiasi piattaforma)

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.

Passo 1 — la linea incorporata

Da Siti remoti→il tuo sito→Codici, copiare la linea di caricabatterie e aggiungerla alle pagine del pannello di amministrazione (il piè di pagina include, il modello di layout o una scatola di JS personalizzata solo da amministratore):

La linea unica incorporata
<script async src="https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=SITE_KEY&identity_token=TOKEN_FROM_STEP_2"></script>

Passo2— DireOpsIQche è collegato (segnato dal server)

Solo la tua applicazione sa in quale amministratore è firmato — che non è un corto, è il modello di sicurezza. Il tuo server genera un token firmato a breve durata dalla tua sessione, esattamente come il gettone dell'identità del visitatore, firmato con lo stesso sito webhook segreto:

PHP · firma l'identità di amministratore dalla tua sessione
<?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.
Accesso per-admin, automaticamente

Ogni amministratore che accede alla tua piattaforma è abbinato individualmente:OpsIQ's per-admin access gate risolve il nome utente del token + e-mail contro unoOpsIQagente (pagina di squadra; utilizzare l'elenco "match emails" dell'agente quando le e-mail della piattaforma differiscono) ed applica lo spazio di lavoro, il dipartimento e le autorizzazioni di posta in arrivo dell'agenzia.OpsIQ; nessun cambiamento.

Roles cavalcare lungo

Qualunque stringa di ruolo la tua piattaforma invia è mostrata sulOpsIQlato per attribuzione; l'autorizzazione viene sempre dalOpsIQagente record, mai dal ruolo affermato.

Perché non leggere il nostro cookie di login?

I browser non inviano mai il tuo cookie di amministrazione ad un'altra origine — nessun fornitore può "scoprire" la tua cross-domain login. Ogni prodotto serio risolve questo lo stesso modo: i tuoi vouches server, firmati.

Modalità semplice (shop in single-admin)

Salta il passo2e utilizzare il token statico da siti remoti→Codici nella linea di caricabatterie (token=... invece di identità_token =...). Il widget funziona con l'identità condivisa dello spazio di lavoro; il cancello per-admin può rimanere applicato più tardi quando la squadra cresce.

Il authenticated bandiera — metterlo al livello TOP

Questa bandiera è l'affermazione del server che un umano è realmente collegato, e OpsIQ rifiuta qualsiasi token senza di esso. "authenticated" => true beside site_key/iat/exp, NON solo all'interno admin Oggetto. Corrente OpsIQ accetta in entrambe le posizioni, ma le versioni più vecchie leggono solo il livello superiore — e il fallimento è ingannevole: elenco di conversazione, storia e non letto tutto l'autentico fine mentre ogni chat gira risposte "Admin login richiesto"Se vedi esattamente quella scissione, controlla prima questa bandiera.

Igiene token

Accedi solo al server, mai nel browserJavaScript. Tenere in corto (minuti a ore);OpsIQrifiuta token scaduti e futuri, e la firma lega il gettone alla chiave del sito.

Esecuzioni di riferimento

IlWHMCSil modulo lo fa automaticamente dalWHMCSsessione di amministrazione; il file ponte del connettore Botble Hotel lo fa dalla sessione Laravel (op=admin_identity). Entrambi sono solo questo contratto nel dialetto della loro piattaforma — copia qualsiasi cosa legga più vicino al vostro stack.

cablaggio a pagina zero (sonda comunicata)

When your OpsIQ connector stores your identity endpoint in its admin_identity_probe_url impostazione, la linea di caricatori PLAIN è tutte le pagine di amministrazione necessarie: il widget scopre la sonda dal connettore, lo chiama con il tasto del sito + token dei widget e autentica automaticamente ogni amministratore. data-identity-endpoint attributo o window.OpsIQAdminIdentityEndpoint.

Implementare l'identità endpoint su Laravel (noti di indurimento)

Se la tua piattaforma è Laravel (Botble, Bagisto, app personalizzate) e il tuo endpoint è un file standalone che avvia il framework per leggere l'amministratore connesso, tre specifiche ti salveranno ore — ognuno ha prodotto una vera e propria produzione di guasto prima che fosse appreso:

Rilegare la richiesta PRIMA di boottrap

I fornitori di servizi possono risolvere request dal contenitore durante lo stivale. Il ciclo di vita di Laravel lega la richiesta catturata prima cosa all'interno Kernel::handle() — a specchio di tale ordine: $app->instance('request', Request::capture()) PRIMA $kernel->bootstrap()o hai capito "La classe di Target [richiesta] non esiste".

Il prefisso dei cookies di sessione è HMAC-keyed

Modern Laravel prefigge i valori dei cookie con un HMAC calcolato CON l'APP KEY (CookieValuePrefix) — una semplice sha1(name."v2") non può mai abbinarlo. CookieValuePrefix::validate($name, $decrypted, $keys), con un inconveniente strutturale (40hex chars + | in posizione40). Dire: una sessione id più lunga di40chars (a)81= prefisso ancora attaccato) e una sessione che si carica solo _token - In esso.

Dove si trova il login

Il timbro auth è login_<guard>_<sha1(guard class)> — per la protezione web predefinita: 'login_web_' . sha1(Illuminate\Auth\SessionGuard::class). Scansione di qualsiasi login_* chiave numerica come un fallback per le guardie personalizzate.

Debug come il ponte fa

Nave a debug=1 modalità che nomina la STEP inadempiente e l'eccezione — un catch-all cieco ha reso una distribuzione live non diagnosticabile. Il ponte Botble (da v1.0.7) è il riferimento: marcatori passo al kernel/bind/bootstrap/decrypt/session/auth/db.

Laravel · endpoint identità completa (copia, impostare le due costanti, fatto)
<?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]);
}

Lo stesso punto finale su altri stack

Solo il "chi ha effettuato l'accesso?" cambia la linea — il blocco di firma è identico ovunque.JavaScript.

WordPress · WHMCS· Symfony · semplice PHP — scambiare la ricerca, mantenere il firmatario
<?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]);

Quando non funziona — diagnostica in questo ordine

Widget non appare mai, dice console "è richiesto il token di identità amministratore firmato"

Il tuo punto di vista non è stato restituito identity_token. Aprire il endpoint URL direttamente nel browser di amministrazione con l'accesso &debug=1 — si vedrà il passo inadeguato; su Laravel questa è quasi sempre la voce di richiesta-binding o cookie-prefix sopra.

Storia e conversazioni funzionano, ma ogni volta che si parla "Admin login richiesto"

Il classico spaccato, il tuo token manca al TOP-LEVEL authenticated flag — il punto finale del widget accetta il token, il verificatore condiviso dietro il flusso di chat lo rifiuta. "authenticated" => true beside exp.

"Amministrazione non previstaOpsIQ" (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.

Tutto 403s dal browser ma funziona con curl

Un preflight CORS rifiuta una delle tue intestazioni di richiesta. OPTIONS e eco l'origine richiesta, o semplicemente evitare intestazioni personalizzate — il widget ha solo bisogno del cookie.

Lavorato ieri, fallisce oggi

Controlla exp: i token sono di breve durata dal design. Il widget si riproba automaticamente, quindi questo significa che solitamente il punto finale ha smesso di vedere la sessione — una rotazione chiave dell'app, un cambiamento del driver di sessione o una modifica del cookie-dominio.

💡
Il widget di amministratore rende nascosto fino a quando l'identità si risolve, e ogni chat / inbox / chiamata dati viene applicata lato server contro il corrispondenteOpsIQagente indipendentemente da qualsiasi cosa la pagina afferma. Il token sblocca l'interfaccia utente; i permessi vengono sempre daOpsIQ.
Sviluppatore

Identità dei visitatori

Identity collega i visitatori anonimi ai clienti noti. Quando identificati, OpsIQ link di navigazione cronologia, chat e biglietti al profilo del cliente.

Come funziona
Identità dei visitatoriUn flusso: un utente accede sul tuo sito, emette un segno di identità firmato, e OpsIQ unifica le loro sessioni, chat e biglietti in un unico profilo.Log utente insul tuo sitoToken firmatoidentità_token (HMAC)Un profilosessions+ chat+ biglietti
Identità dei visitatori

Due livelli di identità, e quando ciascuno è sufficiente

Livello 1 — un suggerimento non firmato

Dite al widget chi il visitatore è con un sempliceJavaScriptsi riempie l'indirizzo e-mail e cliente sul registro dei visitatori, così il vostro cruscotto mostra traffico firmato e le sessioni uniscono up. Si tratta di una SINT: chiunque può modificarlo nel loro browser, in modo daOpsIQnon rilascia mai i dati dell'account sulla forza di esso.

Livello 2 — un token di identità firmato

Il server firma un token di breve durata con il sito webhook secret. OpsIQ verifica la firma e tratta solo allora la persona come cliente collaudato. Questo è il livello che sblocca le risposte dell'account nella chat dei clienti e nelle ricerche dei connettori.

⚠️
Livello1è una convenienza del display. Livello2se una domanda può essere risolta solo per il vero titolare del conto, è necessario Livello2.

Livello 1 — l'indicazione non firmata

Impostare l'oggetto PRIMA dello script del widget, o identificarlo () più tardi una volta che la tua app sa chi è firmato. Entrambe le forme sono letti; utilizzare qualsiasi cosa si adatta alla tua pagina.

JavaScript· le due forme supportate
<!-- 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.

Livello2— il token dell'identità firmata dal server

Esattamente lo stesso contratto di token come il widget di amministratore, con un customer soggetto invece di un admin uno. Firma sul server e passalo al widget. Due dettagli decidono se verifica, ed entrambi sono facili da sbagliare:

IlHMACcopre la stringa BASE64URL, non laJSON

Segnale $payload64Non lo so. $payload. Firmare il crudo JSON produce un token che sembra giusto e viene respinto ogni volta con una firma sbagliata.

base64url, non imbottito

Tradotto +/ a -_ e spogliare = imbottitura. La base di pianura64 è oggi in grado di sopravvivere; la base64url è il contratto ed è ciò che ogni verificatore OpsIQ emette un connettore di riferimento.

autenticato va al livello TOP

A site_key, iat e exp. È la vostra affermazione che un vero umano è collegato, eOpsIQrifiuta il gettone senza di esso.

cliente. id è obbligatorio

Un segno che trasporta solo un'email verifica come una firma e poi viene silenziosamente abbandonato.

Tenere premuto

Il segno è un'affermazione di sessione, non una credenziale da memorizzare.

PHP - firma un token di identità cliente (questo codice esatte verifica)
<?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>';
🚫
Un gettone coniato nel browser JavaScript significa spedire il sito segreto a ogni visitatore, che mette in pratica chiunque la capacità di impersonare qualsiasi cliente.

Lo stesso contratto, tre superfici

Chat del cliente sul tuo sito

soggetto del cliente, passato come identità_token a widget. php. Copreti sopra.

Interfaccia chat dentro il tuo backend

soggetto di amministrazione, passato a opsiq/embed/admin_widget. php. Stesso firmatore, chiave del soggetto differente.

Supporta link profondi

Una variante più rigorosa: le stesse rivendicazioni più jti e single_use:true, e una120-seconda vita, perché il token viaggia inURLImpostazioni, Supporto Portal ha un cecchino pronto per la tua lingua e la piattaforma lo inganna quando l'area del tuo account viene eseguita su questo server.

E se un visitatore cancella i cookie?+

Diventano anonimi fino a quando non vengono identificati di nuovo. OpsIQ collega il nuovo record anonimo al profilo del cliente nel momento in cui arriva un suggerimento o un token.

Perché il mio token verifica per il registro visitatori, ma non per le domande dell'account?+

Questo è il livello1/ Livello2Un suggerimento non firmato riempie il registro dei visitatori e nient'altro. Le risposte dell'account hanno bisogno di una firma verificata.

Sviluppatore

Plugin e SDK

OpsIQ fornisce SDK pacchetti e plugin per piattaforme comuni.

Come funziona
Plugin e SDKQuattro pacchetti: PHP SDK Node.js SDK, WordPress plugin e WHMCS modulo, ciascuno con il suo comando di installazione.PHPPHPSDKrichiesta del compositore opsiq/sdkJSNode.jsSDKNpm i @opsiq/sdkWPWordPresspluginInstallazione di un clic e connessioneBIANCOWHMCS moduloAddon per fatturazione + biglietto relè
Plugin & SDKs
PHPSDK

Composer package: identity token generation, action API helpers, webhook signature verification.

JavaScript SDK

Browser-side: monitoraggio, identità, eventi personalizzati, controllo chat.

WordPressplugin

Iniezione Widget, identità da sessioni utente WP, WooCommerce Sincronizzazione.

WHMCS modulo

Integrazione completa: widget, relè dei biglietti, identità, admin AI.

Shopify Estensione del tema

App incorporata con l'identità automatica del cliente.

PHP SDK inizio rapido

PHP SDK esempio
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);
Sviluppatore

Indagine API, eventi e automazione senza connettori

Survey Studio è progettato per utilizzare lo stesso tipo di General API, esecutore interno, bus di eventi e operazioni webhook come il resto OpsIQ. Questo consente agli sviluppatori di integrare fine alla fine senza costruire un connettore confezionato.

⚠️
Stato di attuazione: il catalogo live attualmente espone solo platform.get.survey.config e platform.save.survey.config. The surveys.* e feedback.* le famiglie sottostanti sono il contratto di destinazione approvato e devono restituire unknown_action fino a quando non è registrato.

Famiglie d'azione

Tipi, modelli e lancio rapido

surveys.types.*, surveys.templates.* e surveys.quick_launch.* elenco, anteprima, istantaneo e convalidare i principianti completi.

Sondaggi e versioni

surveys.create|get|list|update|archive|duplicate più versione immutabile, validazione e pubblicazione di azioni.

Distribuzione e targeting

surveys.deployments.*, surveys.links.*, surveys.audiences.*, surveys.triggers.* e surveys.variables.*.

Avvicinamento e risposte

surveys.invitations.*, surveys.campaigns.*, surveys.recipients.*, surveys.responses.*, esportazioni, redazioni e analisi.

Webhooks, importazione e feedback

surveys.webhooks.*, surveys.imports.*, feedback.items.*, feedback.analytics.*, feedback.sources.* e feedback.analysis.*.

Flusso senza connettori

1
Creare e pubblicare tramite General API

Utilizzare sondaggi digitati.* azioni con chiave a colonna di spazio di lavoro. Scrive dichiarano il permesso, il rischio, la conferma, l'idempotency e il comportamento a secco.

2
Ricevi il tuo evento aziendale

Invia un evento firmato a un webhook in entrata, ad esempio una cancellazione dell'ordine o completata passo di bordo.

3
Mapparlo in Azioni & Triggers

Scegli una OpsIQ Generale API azione come l'emissione di un invito Survey o la preparazione di una campagna, quindi mappare i campi dal carico utile del trigger verificato.

4
Iscriviti agli eventi di Survey

Consegnate il sottoset del ciclo di vita documentato al vostro endpoint con firma, filtro, riprovazione, log e riplay autorizzato.

Obiettivo dell'evento Canonico

Il catalogo condiviso coprirà Survey/deployment pubblica le decisioni di stato, pubblico e trigger, inviti, render/start/partial/resume/complete/abandon, risposta redaction, stato della campagna e guasti alla consegna.

Un connettore è facoltativo. Aggiunge la scoperta della piattaforma riutilizzabile, l'identità verificata, i fatti, le variabili e l'enumerazione del destinatario. General API plus Actions & Triggers/webhooks rimane il percorso di integrazione completo per gli sviluppatori che non hanno bisogno di un connettore confezionato.
Sviluppatore

RESTAPI

Il OpsIQ REST API consente di accedere programmaticamente a tutte le funzionalità della piattaforma.

Come funziona
RESTAPIUn terminale che mostra un POST al OpsIQ API con un tasto Bearer, elencare biglietti aperti e il file JSON risposta.$ 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 }
RESTAPI

Formato richiesta

Invia la chiave come Authorization: Bearer opq_... o X-OpsIQ-Key: opq_.... Utilizzare un'intestazione di autenticazione, non entrambi.

API formato richiesta
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"
}

Azioni comuni

Il API è basato sull'azione: inviare un action name in the body. Every registered administrator JSON operation has a stable named action. POST {"action":"meta.actions"} (non è richiesta alcuna chiave) per l'elenco autorevole, per-installare, il contratto di richiesta, i metadati di rischio e la portata. platform.routes.* il ponte rimane solo per le vecchie integrazioni.

crm.contacts.list

Elenco contatti CRM (scope crm. read). Params: q, stato, fonte, tag, punteggio di piombo, limite.

crm.contacts.upsert

Risolvere o creare un contatto (scope crm. write). Params: email più campi, tag, note.

crm.deals.list

Elenco offerte CRM (scope crm. read). Params: stato, stage_id, company_id. owner_admin_id e pipeline_id; limite.

crm.activities.record

Registra un ciclo di vita / attività commerciale per un contatto (scope crm. write). Params: email o contact_id, evento, valore, valuta.

crm.conversions.record

Registra una conversione (scope crm. write). Params: contact_id o e-mail, conversion_type, value, valuta.

crm.events.list

Poll il flusso eventi CRM (scope crm. read). Params: limit.

tickets.list

Elenca i biglietti (scope ticket. read). Params: pagina, per_page, ordine, stato, priorità, dipartimento_id, assegnato_admin_id.

tickets.get

Un biglietto e i suoi messaggi (scope ticket. read). Params: biglietta_id o biglietterie, include_messages, message_limit.

tickets.reply

Invia una risposta a un biglietto (scope ticket. write). Params: bigliettaio o biglietteria, corpo, autore_type, autore/nome, interno.

tickets.update

Aggiornare un biglietto (tali di acquisizione. write). Params: ticket_id o biglietterie, stato, priorità, soggetto, dipartimento_id, assegna_admin_id.

tickets.open

Aprire un biglietto di supporto (tagliatoli da tavolo. write). Params: customer_email, customer_name, soggetto, corpo, priorità.

tickets.bulk

Eseguire un'operazione di coda di massa (scheda del circuito. write). Params: operazione, ids.

conversations.list

Elenca le conversazioni in diretta (scope talkings. read). Param: pagina, per_page, stato, assegnato_admin_id, client_email, ricerca.

conversations.get

Una conversazione e i suoi messaggi (scope talking. read). Params: conversazione_id o thread_key, includere_messages.

conversations.messages

Storia del messaggio di pagina (scope talkings. read). Params: conversazione_id, pagina, per_page, includere_internal.

conversations.send

Invia un messaggio in una conversazione (scope talkings. write). Params: conversazione_id, messaggio, sender_type, interno.

conversations.update

Assegnare, ri-status o ri-title una conversazione (conversazioni di un'immagine. write). Params: conversazione_id, stato, assegnato_admin_id.

connettori. list / . get / . test

Vedere quali connettori sono installati, cosa ciascuno può fare e se le sue credenziali funzionano (connettori di vetro. read).

automations.actions.list

Le azioni che il tuo costruttore di Azioni eseguirà (scope automations. read).

automations.triggers.list

Che cosa accenderà e su quali condizioni (scope automations. read).

automations.runs.list

Storia dell'esecuzione per debug di un'integrazione (scope automations. read). Params: stato, action_key.

departments.list

Dipartimenti è possibile indirizzare un biglietto a (dipartimenti di circuito. read).

notifications.list

Notifiche per un operatore (telecomunicazioni. leggi). Params: admin_id (richiesto), nonread_only.

analytics.export

Una sezione report come CSV (scope analytics. read). Params: sezione, preimpostata, da, a. Chiamare analytics. sezioni. list per valori validi.

site_intelligence. sites. list / . reports. elenco

I siti monitorati e i loro rapporti SEO (scope site_intelligence. read).

files.get

Un link di download firmato a breve durata per un allegato (files. read). Param: riferimento, ttl.

security.check

Chiedere se un IP o l'email è bloccata o sospetta qui (scope security.read). Combina il IP firewall, la lista dei blocchi di spam del biglietto e il verdetto dell'IA della sicurezza cache. ip E-mail.

security.report

Segnala di abusare del tuo sistema osservato (certificato sul circuito.write). Registrato come evento di sicurezza, classificato dall'IA della Sicurezza immediatamente e gli amministratori sono allertati su verdetti ad alto rischio.ip, e-mail, t ip o, ragione, fonte.

security. blocklist. add / . list

Gestire le regole dello spam il biglietto applica (scope security.write / security.read). Stesso negozio della pagina dei biglietti "Block sender" controllo.ip), valore, ragione, scade_ora.

💡
Meta. actions è sempre autorevole, restituisce ogni azione disponibile sul tuo programma di installazione con l'ambito di cui ognuno ha bisogno, quindi non devi mai indovinare o codificare duramente questa lista.

Pagamenti, filtraggio e smistamento

Ogni azione di lista utilizza gli stessi parametri, quindi li impari una volta.

pagina / per_page

Numero di pagina a partire da 1, e la dimensione della pagina. 50, massimo 200. limite e offset sono accettati anche se li si preferisce.

ordinamento / ordine

Campo per ordinare, e asc o desc (default desc), ogni azione accetta un insieme fisso di campi di sorta; qualsiasi altra cosa viene ignorata piuttosto che errore.

filters

Invia filtri come oggetto, o passa un filtro come parametro di alto livello. I filtri sconosciuti vengono ignorati.

Che cosa torna indietro

articoli, pagina, per_page, conteggio, totale e has_more. Continua a richiedere pagine fino a che has_più non è falsa.

Paged, filtrato, richiesta lista ordinata
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
}

Errori

Ogni guasto restituisce la stessa forma, con una stabile code non si può ramificare su. Non corrispondere sul leggibile dall'uomo error testo, che può essere riformulato.

Risposta errore
{
  "success": false,
  "code": "missing_scope",
  "error": "API key missing required scope. Needed one of: tickets.read, admin",
  "request_id": "req_8f2c1a9d4b7e"
}
mancante_api_key / invalid_ap

Non è stata inviata alcuna chiave, o la chiave è sbagliata o scaduta. HTTP 401.

missing_scope

La chiave è valida ma non ha la portata di cui questa azione ha bisogno. HTTP 403.

Chiave di sola lettura / action_restricted

La chiave è di sola lettura, o questa azione non è nella sua lista dei permessi. HTTP 403.

unknown_action

Nessuna azione del genere. Chiama meta.actions per l'elenco corrente. HTTP 400.

mancante_parametro / non valido_parametri

Un parametro richiesto è assente, o un valore non viene accettato. HTTP 400.

not_found

Il record non esiste, o non è nello spazio di lavoro che questa chiave può vedere. HTTP 404.

rate_limited

Il limite orario per questa chiave viene utilizzato up. HTTP 429.

server_error

Qualcosa non è riuscito da noi. La richiesta_id identifica il tentativo se avete bisogno di segnalarlo. HTTP 500.

Ritmo sicuro

Se un tempo di scrittura fuori non si può dire se è atterrato. idempotency_key e una ripetizione della stessa chiamata restituisce il risultato originale invece di fare il lavoro due volte.

Idempotent scrivere
{
  "action": "tickets.reply",
  "ticket_id": 4192,
  "body": "Thanks, that is now fixed.",
  "idempotency_key": "your-unique-id-for-this-attempt"
}
Quanto dura

Una chiave è ricordata per 24 ore contro la stessa azione e API chiave.

Che cosa ti fa tornare

La risposta originale, più idempotent_replay: vero così si può dire che è stato un replay.

I fallimenti rimangono riprovabili

Se una chiamata fallita, inviarla di nuovo con la stessa chiave lo corre di nuovo, che è quello che vuoi.

Leggi

Le letture ignorano la chiave, ripetizione di una lettura è inoffensivo.

Prova senza cambiare nulla

Aggiungi dry_run: true La chiave, gli ambiti e i parametri sono tutti controllati esattamente come normale, quindi la chiamata si ferma prima che tutto sia creato o cambiato.

Esegui a secco: verifica le credenziali e il carico di pagamento in modo sicuro
{
  "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."
}
Utilizzare dry_run mentre si sta costruendo. È il modo più veloce per confermare una chiave ha gli scopi giusti e il carico di pagamento è modellato correttamente, senza creare dati di prova che allora devi pulire.

Limiti di tasso

Limite per chiavi

Un limite orario configurabile per API chiave (default) 1000 richieste all'ora). Impostarlo per chiave in Impostazioni,API Le chiavi.

Quando superata

HTTP 429 con codice tasso_limitato, più un intestazione Retry-After che ti dice quanti secondi aspettare. Il limite si resetta nella parte superiore dell'ora successiva dell'orologio.

Sapere dove stare

Ogni risposta porta X-RateLimit-Limit, X-RoteLimit -Remaining e X-ResetLimit (un timestamp Unix). Guardare rimanente e rallentare prima di correre fuori piuttosto che aspettare di essere rifiutato.

Dire 429 da 401

A 429 significa aspettare e riprovare. A 401 significa che la chiave stessa è sbagliata o scaduta, quindi riprovare non aiuterà fino a quando si fissa la chiave.

Pre-auth brute-force guardia

Repeated failed-auth attempts from one IP are throttled separately. Valid keys never trip this.

Migliore pratica

Torna indietro quando il Rimanere si abbassa, e onora Retry-After dopo un 429 invece di riprovare immediatamente.

Versioni e stabilità

Versione attuale

v1. Ogni risposta porta X-OpsIQ-API-Versione e X-OpsIQ-API-Status, così puoi confermare con cosa stai parlando.

Come sarete avvertiti

Se una versione è in pensione, le risposte ottengono standard Deprecation e Sunset headers, e meta. actions report deprecated and ceiling_at. Controllare quelli nel vostro monitoraggio e non sarete mai sorpresi.

Cosa non cambierà

Nuovi interventi e nuovi campi facoltativi possono essere aggiunti in qualsiasi momento, quindi ignora i campi che non riconosci piuttosto che non ne hai bisogno.

Una completa integrazione, inizia a finire

Questo è l'intero ciclo: trovare lavoro, leggerlo, agire su di esso e confermare ciò che hai fatto.

Il flusso di lavoro completo dei biglietti 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}
💡
Tutto sopra funziona allo stesso modo per le conversazioni: conversaziones. list, conversazionis. get, conversaziones, fine e conversazioni. update seguire il modello identico, parametri e la forma di risposta.

Ogni azione, con il suo ambito

Questa lista viene generata dal catalogo in esecuzione, quindi corrisponde sempre alla versione che si sta utilizzando. meta.actions restituisce le stesse informazioni come 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

C'è un problema. (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.

clienti (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.

meta (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

piattaforma (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

sicurezza (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

stato (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.

indagini (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

biglietti (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.

Sono disponibili OpenAPI e Postman?+

Sì. L'OpenAPI generato 3.0 il documento è a /api/v1/openapi.php, la collezione Postman generata è a /api/v1/postman.php, e i documenti dello sviluppatore leggibili dall'uomo sono a /api/docs/.

Come posso lavorare con più di un workspace?+

Invia site_key nell'organismo di richiesta per scegliere uno spazio di lavoro. Una chiave emessa per un unico spazio di lavori rimane a esso fissata; una chiave con il contesto amministrativo può selezionare qualsiasi spazio di lavorazione che è permesso vedere, ed è rifiutata per qualsiasi non lo sia.

Quali azioni possono una chiamata chiave di sola lettura?+

Impostare la modalità autorizzazioni sulla chiave per sola lettura e ogni scrittura viene rifiutata con read_only_key, quindi un'integrazione di report non può cambiare nulla anche per errore.

Perché non ho trovato qualcosa che posso vedere nell'amministratore?+

La chiave è portata a uno spazio di lavoro. Le registrazioni in altri spazi di lavoro ritornano non_found piuttosto che un errore di autorizzazione, quindi il API non conferma mai se esiste qualcosa altrove.

Sviluppatore

Sicurezza API

Un contratto di sicurezza per ogni connettore e integrazione: chiedere OpsIQ che cosa sa di un IP o mittente, e rifornire l'abuso che il proprio sistema vede.

OpsIQ già si difende: il IP firewall blocca gli aggressori, il biglietto filtra lo spam e la Sicurezza AI classifica i colpevoli e propone regole di blocco. API Una piattaforma di fatturazione, un portale client o una app personalizzata possono controllare un visitatore prima di fidarsi di esso e segnalare ciò che ha osservato in modo che l'intera installazione impara da ogni superficie.

Cosa puoi fare

Controllare prima di fidarsi

security.check risponde con lo stato del firewall, qualsiasi regola di spam che corrisponde al mittente e il verdetto AI memorizzato nella cache per la IP. Una chiamata, un parere consolidato.

Segnala quello che hai visto

security.report registra l'osservazione come evento di sicurezza, ha la Sicurezza AI classificare IP immediatamente, e avvisa gli amministratori quando il verdetto torna ad alto rischio. Rapporti ripetuti cluster in incidenti, esattamente come attacchi OpsIQ vede direttamente.

Condividi le regole dello spam

security. blocklist. add e security. bloclist. list. elenco leggere e scrivere le stesse regole di spam che la pagina Biglietti utilizza, quindi un mittente bloccato in un sistema è bloccato ovunque.

Segnala abusi da un connettore
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"
}

Scope e sicurezza

security.read

Necessario per security. check e security. blocklist. list.

security.write

Necessità di sicurezza. report e security. blocklist. add. Darlo solo ai sistemi che si desidera alimentare le regole e i rapporti in.

Nulla è distrutto silenziosamente

Un mittente bloccato atterra ancora nella vista Spam dove il biglietto può essere letto e restaurato.

La piattaforma si protegge da sola

Il server stesso IP Gli indirizzi non possono mai essere bloccati, inseriti in una lista di blocchi o segnalati tramite questo API, in modo che un'integrazione erroneamente configurata non possa portare la piattaforma al collasso.

💡
Ridurre una chiave in Integrazioni, poi API Keys e darle solo gli ambiti di sicurezza necessari. Il contratto completo di richiesta per ogni azione è in meta. actions e il documento OpenAPI.
I miei connettori esistenti lo utilizzano automaticamente?+

La sincronizzazione in uscita è già automatica: quando si blocca un IP, le piattaforme connesse sono raccontate attraverso la sincronizzazione della sicurezza del connettore. API Puntare il connettore o codice personalizzato in queste quattro azioni con una chiave che trasporta gli ambiti di sicurezza.

Dove vivono le regole dello spam?+

Un negozio. La pagina dei biglietti Blocca il controllo del mittente, l'IA spam in Impostazioni e questo API tutto il lavoro contro lo stesso blocklist, quindi c'è esattamente un posto da guardare.

Sviluppatore

Eventi API

Invia eventi personalizzati dal tuo server o sito web a OpsIQ per analisi, esperimenti, trigger CRM e condizioni di webhook.

Come funziona
Eventi APIUna traccia() chiama l'invio di un evento demo_booked personalizzato in OpsIQ, che alimenta gli obiettivi di conversione, segmenti e trigger.OpsIQ. track("demo_booked", {valore: 0, piano: "pro"});Obiettivi di conversioneSegmentiTrigger & webhooksSfogliatore (OpsIQ.track) o server-side POST /v1/events
Eventi API

Eventi sul lato del browser

Monitoraggio eventi del browser
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "button_clicked", {
  button: "signup",
  page: "/pricing",
  variant: "green"
}]);

Eventi sul lato server

Lato server, registra attività e conversioni contro un contatto attraverso l'azione API. crm.activities.record per il ciclo di vita/attività commerciale e crm.conversions.record per le conversioni. Non c'è events.send azione; il ricevitore di eventi CRM in entrata vive /v1/inbound.php?t=<token> per sistemi di terze parti che spingono gli eventi.

Attività lato server (azione 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"
}

Convegno di denominazione

Notazione del punto

"order. completed" non "orderCompleted".

Tenso del passato

"button. clicked" non "buton. clicca".

Si tratta di

"pricing. plan_seletto" non "user_action".

Sviluppatore

Come i dati vengono trasmessi OpsIQ

La comprensione del flusso di dati consente di debug integrazioni e ottimizzare le prestazioni.

Come funziona
Come i dati vengonoI flussi di dati dal widget e dal faro in OpsIQ core (CDP, grafico di identità, cervello AI, analisi, CRM) poi fuori attraverso webhooks e il REST API.Widget&amp; beaconOpsIQ nucleo centraleCDP · grafico dell'identitàcervelloanalisi · CRMWebhooks fuoriRESTAPI
Flusso di dati

Flusso di dati in entrata

1
Widget beacon

Il JavaScript widget invia visualizzazioni di pagina, clic e messaggi di chat a /beacon.php.

2
Ingestione di eventi

Eventi memorizzati in opsiq_events con site_key, tipo di evento, cliente e proprietà.

3
Montaggio di sessione

Sessione di gruppi di lavoro pagina visualizzazioni in sessioni (via cron).

4
Risoluzione dell'identità

Quando identificati, i record anonimi sono collegati al profilo del cliente.

5
Sincronizzazione del connettore

I connettori estrae i dati da piattaforme esterne e memorizzano nella cache del connettore.

6
contesto di AI

AI assembla il contesto da: cronologia dei visitatori, profilo del cliente, dati di connettore, KB e prompt.

Flusso di dati in uscita

1
Fuochi di evento

Gli incendi di eventi interni (ticket. created, chat. message, order. completed).

2
Cod. di lavoro

Evento inserito nella coda di lavoro asincastro.

3
Webhook di spedizione

Inviare i segni e inviare a tutti gli endpoint sottoscritti.

4
Ripensare al fallimento

Le consegne non funzionavano con un backoff esponenziale.

Impostazioni

Riferimento

Le impostazioni sono il centro di controllo per uno spazio di lavoro. Tutto ciò che segue è indirizzato allo spazio di Lavoro in cui si trova, quindi un account può eseguire diverse marche con identità diverse, comportamenti chat e regole di ritenzione.

Trovare un'impostazione

Ci sono circa seicento controlli individuali in Impostazioni, distribuiti su undici schede raggruppate sotto quattro menu. Non ci si aspetta di cercare per loro.

Impostazioni di ricerca (Ctrl + K)

Premere Ctrl + K, o Cmd + K su un Mac, ovunque nella pagina Impostazioni. Digitare in parole semplici e premere entrare per saltare dritto al controllo. La ricerca tollera piccoli tipi di scrittura e comprende le parole correlate, così il programmatore trova Cron e la privacy trova i controlli di tracciamento.

Spazio di lavoro e piano

Generale e Licenza.

AI e supporto clienti

Admin AI Assistant, Client Chat, OpsIQ Writing and Support Portal.

Dati e Governance

Tracciamento e privacy, autorizzazioni e sicurezza.

Sistema

Cron Setup (solo ospitato) e zona pericolosa.

Salvare

Ogni scheda salva da solo con il proprio pulsante Salva. Client Chat e OpsIQ Writing pin loro sullo schermo. Salva prima di passare le schede; i cambiamenti non vengono portati attraverso.

Link profondi

La scheda attiva è scritta nell'indirizzo della pagina, quindi una scheda può essere contrassegnata o inviata a un collega.

Generale: Identità aziendale

La carta più importante della pagina. L'IA legge questi valori su ogni risposta, rapporto e brief giornaliero.

Nome di affari

Usato nei rapporti AI, inchieste giornaliere e messaggi di customer-facing.

Industria

Analisi di AI, punteggio lead, brevi e presets di indagine. Scegli tra web hosting, e-commerce, SaaS, immobili, agenzia, consulenza, sanità, istruzione, finanza o business generale.

Lingua di sistema

La lingua mostrata a chiunque non abbia scelto il proprio, ogni agente può sovrascriverla nel loro profilo.

Utilizzare la lingua del browser

Mostra la pagina di accesso nella lingua del visitatore, una volta che qualcuno sceglie una lingua lì, la loro scelta vince e questo non lo sovrascrive mai.

Timezone di sistema

La zona in cui tutto il sistema viene eseguito: date, report, orari e cron di sfondo.

Generale: GeoIP e Tracking

Percorso del database GeoIP2

Percorso completo a GeoLite2-City.mmdb. Rilevamento automatico sul primo carico attraverso cPanel, Plesk, DirectAdmin, Cloudways, Docker e Linux normale o Windows. Aggiungi GeoLite2-ASN.mmdb nella stessa cartella per il provider di Internet del visitatore.

Modalità di origine geografica

GeoLite2 solo, GeoLiti2 con un Cloudflare fallback, o Cloudflare Solo.Cloudflare le modalità richiedono che il sito sia proxied attraverso Cloudflare, con intestazioni di posizione del visitatore abilitato per i dettagli della città e della regione.

Sessione Timeout (s)

L'inattività prima di una sessione dei visitatori è considerata finita. 14400, che è quattro ore.

Intervallo di Rifiuti dal vivo (s)

Quante volte il Live Feed si aggiorna. Predefinito 30 secondi.

Soglia attiva (min)

Per quanto tempo un visitatore conta come vivo dopo il carico dell'ultima pagina. Predefinito 2 minuti. Questo è il drop-off del feed dal vivo, non la lunghezza della sessione.

Retenzione dei dati (giorni)

Elimina i record raccolti e generati oltre questa età: analisi, chat, biglietti, feedback, transazioni, telemetria AI, registri di integrazione e attività CRM. 0 mantiene tutto per sempre. Impostazioni, contenuti autorizzati e ricevute di consenso non vengono mai rimossi.

Quando una chat viene cancellata

Scegli la quantità di una conversazione cancellata rimane in record: il record completo, il record senza la conversazione o solo il punteggio. Deleting nasconde sempre la chat dalla casella di posta e la cronologia dei visitatori.

Tracciare il traffico bot

Conta i crawler come visitatori. Lasciare; gonfia il visitatore conta e fa saltare ogni rapporto.

popup del sondaggio di feedback abilitato

Mostra il widget di feedback su tutto il sito per i visitatori. Separato dalle indagini di chat sotto Client Chat, Support Flow.

Generale: Caratteristiche dell'AI

Interruttori master per ogni superficie AI. Tutti i default su e salvare per spazio di lavoro.

AI Triage sui biglietti

Classifica ogni biglietto per categoria, priorità e sentimento, e scrive un riassunto del thread in cima al biglietto.

Riepilogo dell'hover di AI

Mostra i tag di triage e il sommario in una punta degli strumenti quando un agente ostruisce una riga nella lista dei biglietti.

Copilota di posta in arrivo (compositore)

Aggiunge la bozza di risposta AI, Warmer, Shorter, Più formale e Apologetic pulsanti sotto il biglietto di risposta casella.

Chiedi...OpsIQ Copilota

Il copilota galleggiante di pagine-consapevoli su ogni pagina di amministrazione. Sa quali clienti, fattura o biglietto è aperto.

Mattina breve

Il primo giorno aperto ogni giorno il copilota presenta biglietti urgenti, risposte in ritardo e chat di attesa.

Generale: denaro, branding, backup

OpsIQ valuta di base

Ogni denaro totale nell'amministratore viene convertito in questa valuta per il display. I connettori memorizzano la propria moneta di origine; impostano quella per connettore.

Tassi FX auto-sync

Rifiuti i tassi ogni sei ore da un feed pubblico gratuito con il tasto API. È possibile aggiungere le tariffe manuali che sovrascrivono il mangime. Con l'auto-sync off, le valute senza una tariffa manuale vengono lasciate non convertite.

Abilitare le funzionalità di Commercio e Fatturazione

Spegnere. Accenderlo rivela la pagina Vendite e Conversioni, le schede di entrate del cruscotto e il feed Live Intelligence. Con esso off, ogni superficie dei prezzi è nascosta e la pagina delle vendite lascia il menu.

Vocabolario del commercio

Insegna OpsIQ la tua formulazione: se fai i rinnovi, la parola per il rinnovo, quello che vendi e quali acquirenti sono chiamati.

Marcatura e logo

Due upload, uno per gli sfondi leggeri (admin sidebar) e uno per il buio (segna pagina). PNG, JPG, WebP o SVG fino a 3 MB.

Agente di Intelligenza del Sito, consentire privato SSH obiettivi

L'agente SEO di Auto-Implement si connette a SSH. Gli indirizzi privati, loopback e riservati sono bloccati per impostazione predefinita come misura anti-SSRF.

OpsIQ Backup / Ripristino

Esporta ogni impostazione e OpsIQ- posseduto tavolo più file caricati. Ripristino sostituisce OpsIQ configurazione e record solo; non tocca mai clienti, fatture, biglietti, servizi, domini, ordini o transazioni.

⚠️
Backup vive in Generale e le azioni di cancellazione vivono in zona pericolosa, quindi è facile raggiungere il pulsante elimina senza prima aver esportato.
Impostazioni

Impostazioni: Sicurezza

Protezione per il login dell'amministratore, gli account del personale e i dati OpsIQ raccoglie. Il cliente è configurato separatamente.

Protezione dei segni

GooglereCAPTCHA

Smette bot e credenziali di infilamento sul cartello dell'amministratore. Scegliere v3 (invisibile, segnata) o v2 (checkbox), impostare la soglia del punteggio v3, e fornire il sito e le chiavi segrete. Queste stesse chiavi sono riutilizzate dal modulo di richiesta del portale di supporto.

Auto-Lockout di fail-Login

Blocca un indirizzo dopo una serie di guasti all'interno di una finestra, per un certo numero di ore. È possibile personalizzare il messaggio di pagina bloccata e mostrare una piccola distrazione dello schermo di attesa.

Indurimento del log-in

La politica di password con una lunghezza minima, il rifiuto delle password trovate in violazioni conosciute, blocco per conto contro l'imbottitura credenziali, obbligatorio due fattori per ogni amministratore, la re-immissione della password prima di azioni pericolose e nuovi avvisi di segnale-in.

Singola firma (OIDC)

Il personale si iscrive attraverso il vostro fornitore di identità. URL, ID client e segreto del cliente. domini di provisioning automatico, uno per linea, creare gli utenti automaticamente sul primo accesso.

Singola iscrizione (SAML 2.0)

Per i fornitori che parlano SAML. OpsIQ fornisce la risposta ACS URL e ID entità SP; fornisci l'ID dell'entità IdP, firma-in URL, segnaletica opzionale URL e X.509 i campi di attributo e-mail e nome sono necessari solo per i nomi degli attributi non standard.

Provisioning SCIM

Creazione, aggiornamento e disattivazione di directory OpsIQ conti.OpsIQ fornisce SCIM base di base URL; si genera token etichettati qui in modo da poter essere revocato senza rompere il resto.

Minacce, blocco e raccolta

Egresso in uscita Lista dei Consenti

I limiti che ospitano esternamente questi connettori di spazio di lavoro possono chiamare. Compagno al controllo target SSH in generale.

Scoring e bloccaggio automatico

Blocca un visitatore una volta che il loro punteggio di minaccia passa la soglia. 0 disabilita esso. Guardare la pagina Panoramica della sicurezza per una settimana prima di scegliere un numero.

Messaggio di blocco

Il messaggio che un visitatore bloccato vede, come testo normale o la vostra personalizzato HTML Schermo di blocco.

Core Web Vitals da veri visitatori

Misura LCP, INP e CLS da sessioni reali.

Consegna di eventi in prova, sicuro

La coda degli eventi personalizzati nel browser e consegnare in batch con i retries, riducendo la perdita su connessioni mobili povere.

Tracciamento segnalato Beacons

Gli embeds di widget reali portano un token crittografico rotante in modo da i dati di tracciamento forgiati possono essere rifiutati. Off per impostazione predefinita; consentendo modifiche come incorpora autenticare, quindi testa prima.

Avvisi di sicurezza

Disattivare e bloccare l'esecuzione indipendentemente. Questa scheda controlla se si è detto, e quanto l'intelligenza artificiale assiste.

Abilitare avvisi di sicurezza

Interruttore di master per questa carta.

Soglia d'onda non riuscita

Quanti segni falliti in un breve periodo contano come onda che vale la pena di allertare.

IP reputazione intelligenza

Aggiunge un punteggio di minaccia per i visitatori che appaiono in feed di abuso pubblico.

Orologio per il sito

Tempo di avanzamento orario e TLS controlli di scadenza, avvisando prima che un certificato giri.

Analista della sicurezza dell'AI e slip di incidenti AI

Aggiunge un verdetto spiegabile all'attività sospetta, e gruppi relativi attacchi in un singolo incidente leggibile piuttosto che una corrente di eventi.

Autopilota di politica

Agisce da solo, trasformando ciò che impara da un incidente in una regola proposta o applicata. Lasciare fuori fino a quando non avete esaminato le sue proposte e concordare con loro.

Digerimento della sicurezza giornaliero e Consulente postura settimanale

Una ricap quotidiana sulla pagina Panoramica della sicurezza e una lista di controllo indurimento settimanale che mostra ciò che è protetto e quello che è ancora aperto.

Proposte stantili auto-espire

Una regola di blocco proposta non ha mai agito su scade da solo invece di accumularsi.

Replay sessione DOM

Attivare la riproduzione sessione DOM

Registra sessioni di visualizzazione per la riproduzione. Quando fuori dalla libreria di ripetizione non è mai caricato, quindi non c'è alcun costo per lasciarlo fuori. Le registrazioni sono campionati e data-mascherato, e vengono guardati sulla pagina Session Replay sotto Analytics.

Tasso di campionamento, cattura massima, ritenzione

Quale parte di sessioni da registrare, quanto tempo una singola registrazione può essere eseguita e quante registrazioni sono conservate.

⚠️
Riproduci la sessione registra persone reali utilizzando il tuo sito. Mantenere la frequenza di esempio e la ritenzione a partire da quando sarà ancora rispondere alla tua domanda, e divulgarlo nella tua informativa sulla privacy.
Impostazioni

Impostazioni: Tracciamento e privacy

Ciò che OpsIQ può raccogliere, e quanto tempo ogni tipo di record sopravvive.

Esclusioni

Escluso IPs e Gamma CIDR

Gli indirizzi non sono mai stati tracciati, uno per linea, indirizzi esatti o gamme CIDR. Il modo più pulito per mantenere il proprio team fuori dalla tua analisi, perché copre tutti a quell'indirizzo piuttosto che solo gli amministratori firmati.

Escluso URL Percorsi

I modelli di pagina non sono mai tracciati, uno per linea, wildcards con un asterisco. Ad esempio /admin/* tiene l'intero back office fuori dal registro visitatori.

Politica di conservazione dei dati

Auto-purge per subsistema in giorni. Separato dall'impostazione generale di Retention dei dati in General e dalla purga della zona pericolosa.

log di interazione dell'IA

La telemetria di fiducia che tiene brevi anteprime di query e risposta. Default 90 giorni. Questo contiene il testo più cliente, quindi accorcialo prima quando stringe la privacy.

Eventi di utilizzo dell'IA

Per-call token conta per la segnalazione dei costi. Default 90 giorni. Numeri solo, nessun contenuto di messaggi.

Sentiero di audit

The tamper-evident action and security log. Default 365 days. Keep this longest; it is your evidence trail.

Diagnostica

Registrazione di sistema. Default 30 giorni.

Domande e risposte

I cluster di domande che l'IA non poteva rispondere. Default 90 giorni. Lavorare attraverso loro sulle Domande la pagina mancata AI prima della scadenza.

Cani da guardia e esportazioni

Avvisi di anomalia metrica

Confronto giornaliero di ieri contro la recente linea di base, avvisando quando una metrica si muove più della soglia. 35 per cento. Off per impostazione predefinita.

Esportazione Magazzino

Discariche notturne di sessioni, visitatori, visualizzazioni e tabelle correlate per il tuo stack BI, in un formato che scegli, tenuto per un certo numero di giorni.

Impostazioni

Impostazioni: Admin AI Assistant

L'assistente galleggiante che il vostro personale utilizza all'interno dell'amministratore, con accesso a lettura dal vivo ai clienti, fatture, biglietti, server e registri di cron.

Abilita'OpsIQ AI Widget

Mostra il pulsante assistente in ogni pagina di amministrazione. Off lo nasconde per tutti.

Telaio e comportamento

Posizione angolare, larghezza pannello (320 a 600 px), altezza massima (400 a 900 px), raggio d'angolo (0a 24), dimensione del carattere, e una sfocatura di vetro smerigliata dietro il pannello.

Mostra chip rapidi

Pulsanti di scorciatoia con un clic sotto l'intestazione. Il modo più veloce per la maggior parte del personale.

Mostra le informazioni sul modello

Visualizza quale modello ha risposto e quanto tempo ci è voluto. Utile mentre si sintonizza il costo, rumore per uso quotidiano.

Per-admin accesso cancello

Viene visualizzato solo l'assistente di un amministratore firmato il cui nome utente e email corrispondono sia ad un agente OpsIQ assegnato a questo spazio di lavoro. I proprietari passano sempre. Utilizzare il Controlla il mio pulsante di accesso prima di abilitare o è possibile bloccare la propria squadra fuori.

AI Persona

Nome dell'esposizione, slogan dell'intestazione e un messaggio di benvenuto personalizzato mostrato quando il pannello si apre.

Chips Smart Quick-Action

Modificare l'etichetta e il prompt sottostante per ogni scorciatoia, aggiungere il proprio o resettare i default. L'etichetta è ciò che lo staff vede, il prompt è quello che riceve l'intelligenza artificiale.

Colori e forma

Forma del chip (pill, arrotondata, quadrato), colori di chip, tema della carta e forma del lanciatore (rotonda, squircle, quadrato) con un'anteprima dal vivo.

Conversazione Memoria

L'assistente ricorda ogni persona storia attraverso sessioni del browser, fino a messaggi 120, memorizzati nel proprio database.

Impostazioni

Impostazioni: Chat client

La chat widget che i tuoi clienti utilizzano, e la più grande area di Impostazioni. Sei sotto-tabs, con l'interruttore master e Salva pinned in cima alla scheda.

Lavorare attraverso le sotto-tappe in ordine su una nuova installazione: identità e copia, apparenza, comportamento, flusso di supporto, formazione della conoscenza.

Identità e copia

Identità del marchio

Nome Widget, slogan, nome AI, il nome usato per i messaggi di sistema e inattivo, e come appaiono i nomi degli agenti.

In-Chat Saluto

Due saluti, uno per tutti i visitatori e uno per i visitatori identificati. Una domanda inizia più conversazioni che una dichiarazione.

Teaser del pop-up

Il messaggio galleggiante prima dell'apertura della chat, con il proprio nome, la dimensione del carattere e i colori. L'IA può scrivere i teaser, con controlli per quanti generare, quanti mostrare per visita e il divario tra di loro.

Prompts e Handoff

Lo script completo: chiedere un nome e una email, conferme, richiedere un umano, nessun agente disponibile, biglietto creato o cancellato, handoff in attesa.

Avviso di stato e d'annullamento

Tre messaggi di cliente-visible: agente chiude la chat, il visitatore è andato tranquillo e l'agente consegna all'IA. Evitare le parole interne come risolto o triaged.

Composer e suggerimenti

Il segnaposto di ingresso, l'etichetta del pulsante parla-a-human e le domande di apertura suggerite. Tre buoni suggerimenti deflettore più biglietti che una pagina degli articoli.

Avanzatore, Icon e Avatars

Icona del lanciatore, un'icona differente opzionale quando aperto, dimensione del lanciaser e immagini per l'agente umano e l'IA.

Aspetto

Tema e vetro

Modalità tema, preimpostazione colore premium, intensità sfocatura e opacità, oltre a occhiali per animazioni, linee di separatore, nascondendo la riga di stato, nascondendone la scheda della casella messaggi e nascondendo il pulsante vicino.

Colori principali

Avviatore, intestazione, pannello di aiuto, link, pulsanti, note di sistema e compositore, ciascuno con un colore iniziale e finale per gradienti.

Pannello, bolle e chip

Circa trenta raccoglitori che coprono il pannello, bordo, testo, area di input e ogni tipo di bolla (visitatore, AI, agente, digitazione, sistema) più chip suggerimento e loro stato hover.

Telaio e Forma

Larghezza del pannello e altezza, raggio d'angolo, dimensione del carattere, posizione dello schermo, forma del lanciatore, stile di bolla e se gli avatar mostrano.

Comportamento

AI risponde automaticamente

Interruttore di master per le risposte AI. Off significa che ogni messaggio aspetta un essere umano.

Seguati umani e doppio testo naturale

Un delicato follow-up quando un visitatore va tranquillo, e un breve secondo messaggio opzionale il modo in cui una persona ne manderà uno. In sintonia con i seguacess per silenzio, primo ritardo, più tardi moltiplicatore, finestra di presenza e la finestra massima sequenza. Può essere limitato alle ore di lavoro, e soppresso dopo un semplice ringraziamento.

Risposte e ritmo di risposta

Se le risposte digitano parola per parola, e quanto velocemente l'assistente risponde, da preimpostato o il proprio minimo e massimo ritardo in millisecondi. Un piccolo ritardo si legge come più umano di una risposta immediata.

Traduzione dal vivo

Ogni agente legge e scrive nella propria lingua mentre il visitatore legge la loro.

Tornare all'IA dopo l'agente inattivo

Minuti di inattività dell'agente prima che l'IA riprenda la conversazione.

Aprire la chat

Secondi prima che il widget si apre.0Non si apre mai. Intrusivo su mobile; lasciare a0A meno che non sia testato.

Risposte più intelligenti

Pianificare in anticipo per le risposte di un passaggio, la profondità del pensiero, un modello separato opzionale per le soluzioni degli agenti, mostrando il ragionamento ai visitatori, tollerando i manpelling, memoria a lungo termine, limitando l'assistente al tuo business solo, prezzi nella valuta dei visitatori e come appaiono i collegamenti.

Risparmio di costi

Salta la ricerca di conoscenze per saluti come ciao e grazie, e si conclude la risposta più lunga in gettoni.

Lingue

Quali lingue il widget supporta e come sceglie uno per un visitatore.

Risposte dell'account cliente

Risposte da un account cliente firmato, facoltativamente guardato in diretta e caricati solo se necessario. Leggi-solo in tutti i casi; il carico-quando necessario riduce notevolmente i costi.

Rimborsi

Richiede un rimborso assistito in cui l'assistente raccoglie dettagli e mani a una persona. Non completa mai un rimborso stesso.

Conversazione e Widget

Continuare a parlare, continuare una chat attraverso i siti collegati, finestra trascinabile, chiedendo agli ospiti per un'email e lasciando la tua squadra trasformare una chat in un biglietto.

Caratteristiche Widget

Emoji picker, allegati con una modalità opzionale di sola pasta, intelligenza dell'immagine AI, icone in linea, microfono, pulsante di conversazione-a-agente, suoni del visitatore, anteprima dell'allegato, tasto voce-chiamata e isolamento della sessione.

Admin Posta in arrivo, notifiche e popup di benvenuto

Il visitatore accoglie popup, più i tuoi agenti avvisi: suoni di posta in arrivo, notifiche desktop, suoni sussurri, se bisbigli privati beep e l'intervallo di sondaggio di casella di posta.

Flusso di supporto

Manipolo umano

Come vengono assegnate le richieste di una persona, i secondi in cui un agente deve rispondere, se il declino restituisce la chat all'IA e se l'intelligenza artificiale riprende quando il timeout scade.

Ore lavorative

Orari di apertura, fuso orario e messaggio chiuso ore. All'esterno di queste ore l'IA non offrirà un umano. Un programma separato dalle ore di viaggio in uscita OpsIQ Writing.

Risposte quando l'IA è spenta

La prima risposta a un nuovo messaggio, la risposta quando qualcuno è già in coda e quanto tempo prima di ripetere.

Modulo di Offline

Mostra un modulo di contatto invece della chat.

Approfondimento dei biglietti e Notifiche del Dipartimento

Sensibilizzazione dei biglietti AI, quindi un visitatore che cita un numero di biglietto ottiene il suo stato reale e quali reparti l'IA può indirizzare a. Un pannello integrato mostra i destinatari reali per ogni reparto, risolto allo stesso modo in cui il notificante li risolve, così si può vedere prima che un cliente fa che un dipartimento non avvisi nessuno.

Centro assistenza in chat widget

Consente ai visitatori di navigare articoli pubblicati senza lasciare la chat. Scegli dove appare il punto d'ingresso, l'etichetta e l'icona della barra inferiore, e se offrire un link al centro completo di assistenza.

Valutazione della conversazione

Il rating della stella è stato attivato quando un agente chiude la chat, quando il handoff termina o dopo un periodo di inattività impostato.

Indagine post-capito

Un breve sondaggio quando il visitatore chiude la chat, con la tua domanda, ritardo, regola di tempistica e un tappo per visita. I visitatori possono anche inviare una email o scaricare la trascrizione. Una domanda viene risposto; tre non lo fanno.

Indagine posta elettronica post-capito

Un'indagine di follow-up via e-mail dopo la conversazione termina, facoltativamente nella lingua in cui il visitatore ha chattato, con controllo su ritardo, soggetto, intro, domanda, entrambe le etichette dei pulsanti e la linea di ringraziamento.

Rispondi Feedback

Pollici su e giù per ogni risposta AI, alimentando le dashboard di qualità.

Archivio per la conversazione

Auto-archiviazione dopo giorni, autorisolvere dopo minuti di silenzio e cancellare conversazioni archiviate dopo giorni.

Formazione sulla conoscenza

Quello che l'assistente sa, non importa altro nella chat del cliente.

Formazione della conoscenza del sito web

Puoi controllare fino a dieci link di partenza, un limite di pagina, una profondità del collegamento e le cartelle escluse. Un singolo URL può essere testato prima della striscia completa. Escludi i percorsi di checkout, account e admin.

Embedimenti

Il tasto e il modello API che trasformano le pagine in significati ricercabili piuttosto che corrisponde a parole chiave.

Organizzatore di conoscenza dell'IA

Un clic e l'IA legge ogni FAQ e la pagina a strisce e li ordina in categorie.

FAQ, risposte verificate

Domanda e risposta coppie trattate come la fonte di priorità più alta, ciascuno con uno stato, peso e categoria. Ricercabile, importabile da JSON, e l'AI può scriverli da una descrizione del vostro business. Quando l'assistente ottiene qualcosa di sbagliato, scrivere un FAQ: supera pagine crawled, quindi la correzione è immediata.

Avanzato

Prestazioni e Limiti

Intervallo di inquinamento, limite della velocità del messaggio e finestra, dimensione massima dell'allegato, tentativi di allegato per finestra, e estensioni dei file consentite. L'elenco delle estensioni è un controllo di sicurezza; tenerlo stretto.

Consegna in tempo reale

Consegna immediata di messaggi e stato invece di inquinare, attraverso Pusher, Ably o Firebase, con un intervallo di polling arretrato.

Spingere le notifiche

Avvisi per gli agenti tramite Pusher Beams o OneSignal, con un interesse del dispositivo.

Spinta del Web (VAPID)

Pulisci il browser utilizzando le tue chiavi generate senza alcun fornitore di terze parti. Generato qui, non in zona pericolo.

Condividi voce, video e schermo

Le credenziali TURN in modo che le chiamate si connettono attraverso reti restrittive, utilizzando Cloudflare o credenziali Twilio o il proprio TURN URL, nome utente e credenziali.

Flusso di lavoro in arrivo

Impostazioni dello spazio di lavoro dell'agente piuttosto che impostazioni dei visitatori: SLA in risposta iniziale in pochi minuti, viste della coda salvate, scorciatoie della tastiera e la palette di comando, ricerca in-conversation e biglietti del cliente nell'ispettore.

Canali di messaggero

WhatsApp, SMS, Facebook Messenger, Instagram, Telegram, X messaggi diretti e LINE, ciascuno con il proprio AI auto-risposte interruttore, più un interruttore di politica per le azioni AI sui canali, una debounce risposta e il modello di ri-attivazione WhatsApp.

Una anteprima live Widget in fondo agli aggiornamenti della scheda come si modifica. Utilizzare invece di ricaricare il sito per controllare una modifica.
Impostazioni

Impostazioni: OpsIQ

I biglietti hanno risposto per iscritto: risposte automatiche, il sistema di ticket nativo, escalation, ore di lavoro, routing e le email che si affacciano sul cliente.

Autoriparazione

Mostra OpsIQ Pulsanti di scrittura

Aggiunge i pulsanti di helper per la scrittura dei tuoi agenti nell'amministratore.

Abilitare il biglietto auto-riparazione

I nuovi biglietti e le risposte e le risponde dopo un ritardo. Inizia con esso fuori e riesame bozze per una settimana. Rimborsi, cancellazioni e modifiche di accesso dovrebbero sempre raggiungere una persona.

Dipartimenti di autorimborsi

Quali reparti auto-riparazione può rispondere in. Tutto ciò che non è elencato è lasciato per un umano, che è il default sicuro.

Rispondere alla pianificazione dei ritardi (minuti)

Quanto tempo aspettare prima che la risposta automatica invii. Una risposta immediata si legge come un robot; pochi minuti legge come una squadra veloce.

Max AI risponde per biglietto da parte del dipartimento

Un berretto per dipartimento, ad esempio Billing 1 e supporto 3. Senza un tappo un filo confuso può loop.

Lunghezza, stato e identità

I token di scrittura massimi, lo stato del biglietto dopo una risposta e dopo un'escalation, e a cui vengono attribuite le risposte automatiche. Utilizzare un account chiaramente chiamato in modo che il personale possa dire risposte AI da parte di quelli umani.

Operazioni di biglietti nativi

Sistema di biglietti nativo

Il sistema di ticket integrato in OpsIQ, per installazioni senza helpdesk esterno.

E-mail di ingresso del tubo in biglietti nativi

Trasforma l'e-mail in entrata in biglietti. OpsIQ fornisce il punto finale URL, auth token, script path e PHP binario. Tutto ciò che può inviare a quel endpoint può creare biglietti, in modo da mantenere il segreto di gettone.

Risposte e ritardo e debunce multi-turn

Se l'IA continua a rispondere mentre la conversazione continua, e se aspetta una finestra tranquilla così tre messaggi rapidi ottengono una risposta considerata. La finestra silenziosa è la migliore impostazione singola per fare risposte automatizzate si sentono considerati.

Portale di supporto pubblico

Una pagina di confronto con il cliente in cui chiunque può alzare e tenere traccia del biglietto, con una linea di benvenuto opzionale. Il suo indirizzo e l'aspetto sono configurati nella scheda Support Portal .

Formato del numero di biglietto

Quante lettere casuali appaiono nei numeri dei biglietti generati.

Clienti di posta elettronica nella propria lingua

Le email dei biglietti seguono la lingua del cliente. Il personale non cambia mai la lingua: le notifiche, gli avvisi di dipartimento, i briefing e i report programmati rimangono nella tua lingua di sistema.

Riconoscimento e conferma

Un riconoscimento fisso sui nuovi biglietti, più i messaggi di conferma quando viene aperto un biglietto, quando il feedback è lasciato e quando un biglietto è chiuso, ognuno con una anteprima in diretta.

AI Spam screening

Sceneggia i biglietti da mittenti sconosciuti e può spostare facoltativamente lo spam sospettato da solo. Lasciare il movimento automatico fuori fino a quando non hai guardato il suo giudizio.

Biglietti di ingresso chiusi in auto

Chiude un biglietto dopo una serie di giorni tranquilli. Di' al cliente nel messaggio di chiusura come riaprire.

Ore di lavoro (calendario SLA)

Orari, apertura e chiusura dei tempi, giorni lavorativi e festivi per i timer di prima risposta e risoluzione.

Auto-assegna nuovi biglietti

Assegnazione automatica, facoltativamente solo agli agenti che sono online, con competenze di agente e una sensibilità della corrispondenza per il routing basato sulle abilità.

Suggerisci i biglietti duplicati

I punti quando un cliente apre un biglietto vicino a uno che già hanno, con una sensibilità di corrispondenza regolabile.

Sondaggio della soddisfazione dopo la chiusura

E-mail un sondaggio al giorno dopo la chiusura. Risultati appaiono sulla pagina CSAT.

Informare il dipartimento via e-mail

I destinatari sono i membri di quel dipartimento, non l'indirizzo della casella postale del dipartimento, che è il biglietto in arrivo.

Cosa può leggere l'AI

Accesso ai dati client AI

Un master switch più autorizzazioni individuali di sola lettura per il riepilogo del profilo cliente, fatture, transazioni, saldo creditizio, prodotti e servizi, domini, server collegati e una panoramica dell'account di alto livello.

Escalation e conoscenza

Abilitare l'escalation dei biglietti AI

Prima di rispondere, scegli i reparti consentiti, il ritardo del controllo e puoi scrivere le tue istruzioni per l'escalation. Accendi la nota interna in modo che il tuo team possa capire perché un biglietto si sia spostato.

Impostazioni di conoscenza

Se le risposte utilizzano la lingua del cliente, se si disegnano su link strisciati e FAQ, se l'IA legge immagine e PDF allegati, la modalità di risposta della conoscenza, se importato JSON La conoscenza viene utilizzata, e se i link di origine possono apparire. Utilizzare i link strisciati e le FAQ dovrebbero essere su, o l'IA sta indovinando.

Fermare auto-ripararsi dopo la risposta umana

Una volta che il personale risponde, l'IA smette di rispondere a quel biglietto. Senza di esso l'AI può parlare sopra il proprio agente.

Istruzioni per biglietti e email

Istruzioni di testo libero che modellano il tono e i contenuti per ogni risposta, con un esempio lavorabile carico.

Importazioni JSON conoscenza

Caricare o incollare un file di conoscenza JSON per l'assistente di scrittura.

Button Studio 2.0

A full designer for the customer-facing button: display style, size, label, icon, shape, minimum width, background style with primary and secondary colours, gradient angle, border, corner radius, shadow, typography, padding, idle animation, hover motion and colours, and the focus ring, plus a custom CSS box for anything the controls do not cover.

Impostazioni

Impostazioni: Portale di supporto

Il sito di riferimento per i clienti in cui le persone sollevano e tracciano biglietti e leggono gli articoli dell'aiuto. Questa scheda controlla come è raggiunto e come i clienti si firmano; il suo design visivo viene fatto nel Support Portal Studio.

Portal Studio o Portale dei biglietti incorporato: quale voglio?

Questi sono due prodotti diversi e le persone li mescolano costantemente. Risolvono diversi problemi, e il funzionamento insieme è normale.

Support Portal Studio: un luogo in cui inviare i clienti

Lo Studio progetta un sito di supporto completo che OpsIQ ospita per voi. Ha un proprio indirizzo web, o il tuo dominio, e porta tutta l'esperienza self-service: aiuta gli articoli con la ricerca, il modulo di richiesta, la cronologia dei biglietti, il firmatario del cliente e l'assistente. Scegli un modello, lavora attraverso Tema, Navigazione, Layout, Conoscenza, Footer, Brand, Biglietti, Assistant, Form e CSS, anteprima su desktop, tablet e dimensioni del telefono, quindi pubblicare.

Usalo quando si desidera una destinazione di marca è possibile puntare ogni cliente a, e si preferisce non costruire o mantenere un'area di supporto all'interno del proprio sito web.

Portale dei biglietti incorporato: i biglietti all'interno del tuo sito

La meschina solo l'esperienza di biglietto su una pagina del tuo sito web. I clienti si aprono, tracciano e rispondono alle richieste di supporto senza mai lasciare le tue pagine, e la tua testata, navigazione e design rimangono esattamente come sono. Impostare il layout, l'aspetto e le regole di accesso nel widget costruttore, visualizzare in anteprima il risultato, quindi copiare il frammenti incorporati nella tua pagina.

Usalo quando hai già un sito web o un'applicazione con il proprio design, e vuoi che il supporto avvenga all'interno piuttosto che consegnare il cliente ad un indirizzo diverso.

La versione breve

Lo Studio costruisce un posto dove inviare clienti. L'Embed porta i biglietti dove i vostri clienti sono già. Molte aziende gestiscono entrambi, incorporando il widget del biglietto nella loro area di account per richieste in-contesto mantenendo il portale ospitato come la destinazione self-service completa con articoli e ricerca.

Indirizzo e accesso

Modalità di accesso

Se il portale è aperto a chiunque o limitato ai clienti firmati. Porti aperti ottenere più biglietti e più spam.

Scelte di layout

Che il portale e il centro di aiuto condividano un eroe o utilizzino due, che la navigazione e il piè di pagina appaiono su entrambe le superfici, e l'etichetta della sezione di navigazione.

Indirizzo del portale

Scegli un nome e OpsIQ mostra il portale risultante e gli indirizzi del centro di assistenza corrispondenti.

Il tuo dominio

Serve il portale da un dominio che possiedi, come support. yourdomain. com.

Portale dei biglietti incorporato

Accende il widget drop-in descritto sopra, e apre il costruttore incorporato dove si sceglie la disposizione, l'aspetto e le regole di accesso, visualizzare in anteprima il risultato e copiare lo snippet per la vostra pagina. Questo non è il Portal Studio: lo Studio progetta il portale ospitato, questo mette i biglietti all'interno del proprio sito. Entrambi possono essere in una sola volta.

Come i clienti si firmano

Queste sono le opzioni di accesso dei vostri clienti. Il personale è configurato in Impostazioni, Sicurezza.

Metodi di iscrizione

Quali opzioni appaiono nella pagina di accesso. Connettore e email di registrazione funzionano automaticamente.

Social signin

Fornitori di account di consumo, ogni necessità di un ID cliente e segreto, con l'indirizzo reindirizzato fornito da OpsIQ per registrarsi con quel fornitore.

Singola firma (OIDC)

Il cliente si iscrive tramite un provider di identità, con emittente URL, ID client, segreto e un elenco di dominio email facoltativo consentito.

Cliente SAML 2.0

Il SAML equivalente. OpsIQ fornisce la risposta ACS URLe ID entità SP; fornisci l'ID dell'entità IdP, il sign-in e la firma URLs X.509 certificato e nomi attributo facoltativi.SAML sui metodi Sign-in o non apparirà.

Registrazione senza cuciture dalla tua app

Un link profondo firmato in modo che un cliente già firmato per la vostra applicazione atterra nel portale senza firmare di nuovo. OpsIQ fornisce il segreto della firma, il portale URL e chiave di spazio di lavoro, più un generatore per un link di prova firmato. Utilizzare il generatore prima di scrivere qualsiasi codice.

Iscriviti ovunque

L'iscrizione al portale consente anche di segnalare il cliente fuori dalla sua applicazione.

Aspirazione e protezione

Richiesta campi modulo

Ogni campo extra perde le presentazioni, quindi chiedi solo quello che ti serve per triage.

Protezione contro gli spami e gli abusi

In cima è possibile bloccare indirizzi e-mail usa e getta, aggiungere i propri domini bloccati, e aggiungere un CAPTCHA utilizzando Google reCAPTCHA o Cloudflare Turnstile. reCATTCHA riutilizza le chiavi già impostate sotto Impostazioni, Sicurezza; chiavi di girastile sono inserite qui.

Analisi dei portali

Un riassunto di sola lettura dell'attività del portale negli ultimi trenta giorni.

Impostazioni

Impostazioni: Permissioni, Licence, Cron e zona di pericolo

Il gruppo System, più i controlli di accesso del team che decidono chi può vedere quale scheda Impostazioni.

Accesso e autorizzazioni di squadra

Per-admin autorizzazioni

Ogni amministratore ottiene un set esplicito di autorizzazioni che coprono l'accesso alla chat in arrivo, quali sezioni Impostazioni possono modificare e i loro reparti. Chiunque con il ruolo dell'amministratore completo ha sempre ogni permesso.

Licenza

Mostra la tua attuale licenza, a cosa ti dà diritto e il suo status.

Setup Cron

Self-hosted installs only. On the OpsIQ cloud the scheduled tasks run for you and the tab is hidden. One line of crontab drives every scheduled task: ticket auto-reply, escalation routing, exchange-rate refresh, mailbox polling and connector sync.

1
Copia la linea

La scheda mostra l'esatta linea crontab per il server con il corretto binario PHP già scelto.

2
Aggiungilo a crontab

Eseguire crontab -e come utente che esegue PHP e incollare la singola riga. Su cPanel utilizzare lo strumento Cron Jobs invece.

3
Verifica

In un minuto le piastrelle battito cardiaco si illuminano. Usa Correre ora per testare immediatamente piuttosto che aspettare.

Il pannello battito cardiaco mostra l'ultima corsa, la durata e ciò che è stato elaborato sia per la coda auto-rippo e il sondaggio di posta elettronica e connettore. Si avverte quando l'ultimo run è venuto dal pulsante manuale web piuttosto che un vero server cron, e quando un battito del cuore è andato stallo.

Zona di pericolo

Eliminare tutti i dati di monitoraggio

Wipes everything OpsIQ collected or generated. You tick what to include and type the confirmation phrase exactly. Settings and site configuration, blocked addresses, everything your team wrote (knowledge base, FAQs, translations, portal designs, action definitions) and consent receipts are all preserved.

Dati puri più vecchi di

Lo stesso spazzamento limitato a record più vecchi 30, 60, 90 o 180 giorni, o un anno. Per la ritenzione automatica del rotolamento utilizzare i valori di conservazione in Generale e Tracking invece e lasciare che l'attività pianificata lo faccia.

🚫
Esportare un backup da Impostazioni, Generale prima di utilizzare qualcosa in zona pericolo. Queste azioni non possono essere annullate.
Impostazioni

Gestione del tuo team

Invita i membri del team e assegna ruoli per controllare chi può accedere a cosa.

Squadra
Dipartimenti di squadraLo schermo del team: una tabella di amministratori con contatto, distintivo ruolo (Owner, Full Admin, Agent) e i reparti che possono accedere a ciascuno.Dipartimenti di squadraspazio di lavoroDipartimenti di squadra+ Salva utente amministratoreCONTATTORUOLODIPARTAMENTOAO[email protected]Ada OwusuProprietarioTuttiKM[email protected]Kojo MensahAbilità completaTuttiRT[email protected]Rita Tetteh - WikipediaAgenteFatturazioneSB[email protected]AgenteSupporto1TEAMInvita e gestisci gli amministratori2ROLESProprietario · Amministratore completo · Agente3SCOPEDAccesso per appartamento
Lo schermo del team reale: ogni amministratore con il loro contatto, ruolo e i dipartimenti che possono raggiungere, agenti indirizzati, proprietari pieni.

Ruoli

Proprietario

Accesso completo, inclusi licenza, fatturazione e zona di pericolo.

Abilità completa

Accesso completo, tranne la licenza e zona di pericolo.

Agente

Limitati ai dipartimenti assegnati. Biglietti, chat e analisi solo.

Invitare i membri del team

1
Vai al Team

Navigare in squadra nella barra laterale.

2
Clicca Invite

Inserisci l'email del membro del team.

3
ruolo

Scegli il proprietario, l'amministratore completo o l'agente.

4
Dipartimenti di assegnazioni

Per gli agenti, selezionare i dipartimenti accessibili.

5
Invia invito

Ricevono un'email con un link di configurazione.

Impostazioni

Performance del team

L'accesso è per permesso, non per ruolo: il permesso di visualizzazione apre la pagina, il permesso gestisco sblocca gli obiettivi, QA e le letture identificative dei colleghi, e il permesso-finanziamento ricompensa è quello che aggiunge la scheda Ricompense. Un comando del team può essere dato uno qualsiasi di questi senza diventare un amministratore completo.

Performance del team
Performance del teamLo schermo di prestazioni del team: agenti classificati da una barra dei punteggi composito, CSAT e un saldo di ricompensa con un pulsante Pay per riga.Performance del teamspazio di lavoroPerformance del teamAGENTEPUNTEGGIOCSATSALDORTRita Tetteh - Wikipedia4.8$42PagaSBSam Boateng - Wikipedia4.5$28PagaKMKojo Mensah4.2$15PagaAOAda Owusu4.9$51Paga1SCOREDPrestazioni composite2CSAT & LOADValutazioni + volume3REWARDSBilancia agente di pagamento
Lo schermo reale delle prestazioni del team: ogni agente ha segnato sul volume e CSAT, con un saldo di ricompensa che puoi pagare per fila.

Come si organizza la pagina

Le prestazioni del team sono cinque schede, ognuna risponde a una domanda diversa e viene ordinata da quanto urgentemente di solito hanno bisogno di te.

01 Centro di comando

Stato della coda live, risultati dei clienti contro i vostri obiettivi, come la capacità è stata spesa, situazioni che necessitano di una decisione e l'indice per-teammato corretto delle prove.

02 Compagni di squadra

La classifica, il riconoscimento (più migliorato e striature), le missioni e il controllo opt-in per chi può vedere la classifica.

03 Qualità

Scorecards, valutazioni registrate, accordo di revisione corretti sul caso, andamento del recensore e controversie sulle prove.

04 Ricompense

Valore di token, crediti di pagamento e la ripartizione del periodo governato: autorizzare un soffitto finanziato, rivedere l'anteprima, finalizzare.

05 Storia

Come lo spazio di lavoro si è spostato nel tempo: metriche di tendenza con un grafico, e una mappa termica di copertura 28-day che mostra quando il team stava effettivamente lavorando.

Non è stato scoperto

Un compagno di squadra senza abbastanza volume gestito — o le cui dimensioni che portano prove aggiungono fino a meno della metà del peso configurato — è mostrato come Unscored. Il loro punteggio, grado e banda sono vuoti e la loro ripartizione è nascosta. Questo è deliberato: rendere una misura assente come zero mette qualcuno in fondo ad una classifica per avere una settimana tranquilla.

Le due soglie di prova fanno diversi posti di lavoro e vale la pena tenerli separati. Minimo gestito decide se qualcuno è segnato affatto. La valutazione minima non influisce sul punteggio: decide premio e ricompensa eleggibilità. Quindi un compagno di squadra può essere completamente segnata e classificato e ancora essere idonea per quel periodo, perché troppi pochi clienti li hanno valutati.

💡
Ogni figura è indirizzata allo spazio di lavoro che si sta visualizzando e alla fascia temporale scelta. Un compagno di squadra che lavora in due spazi di lavoro separati ha un record indipendente in ciascuno. Due eccezioni degne di sapere: un GROUP sito è uno spazio di Lavoro, quindi i suoi domini membri sono misurati insieme; e la vista All-site misura deliberatamente tutto contemporaneamente.

L'indice delle prestazioni

Un composto di cinque dimensioni, ciascuna misurata contro un obiettivo che si imposta piuttosto che contro i colleghi, poi tirato verso il centro quando la prova dietro è sottile. Notare la direzione: l'adeguamento sposta la figura in direzione 70, quindi un punteggio eccellente sottile viene tirato giù e un punteggio povero sottile è tirato su.

Qualità

Soddisfazione del cliente da feedback verificato. Integrato dai risultati della scheda di punteggio QA in cui esistono e sono regolati.

Responsabilità

I primi tempi di risposta al P50 e P90 per centoiles, contro i vostri obiettivi.

Risoluzione

Tempo di risoluzione e tasso di risoluzione one-touch.

SLA

Contenuti contro la SLA che hai configurato, più conteggi a rischio e violazione.

Stimolare

Riaprire e trasferire i tassi — il lavoro che torna.

💡
I pesi sono configurabili e relativi; non devono essere totali 100. Le prove mancanti possono solo abbassare l'indice, mai alzarlo — il peso completo è rimasto nel denominatore.

Capacità e tempo produttivo

Occupazione, tempo produttivo, risolto per ora produttiva e quota online della finestra. L'utilizzo non è deliberatamente segnalato: ha bisogno di ore programmate come denominatore, OpsIQ non ha roster o sorgente di spostamento, e un denominatore sostituito sarebbe una ipotesi indossando un segno percentuale.

⚠️
L'occupazione dice come è stato speso il tempo, non quanto bene è stato trascorso e non finanzia mai, cancelli o dimensioni un pagamento. Un compagno di squadra senza prove del tempo di assunzione legge come non disponibile, mai come zero.

Garanzia di qualità

Una scheda di valutazione è il commento rubrico segnare conversazioni reali contro. Solo una versione pubblicata può ricevere una valutazione, e la pubblicazione di una nuova versione non riscrive mai ciò che era già segnato.

Accordo di revisione

Segnalato come statistico corretto dal caso (Cohen's e Fleiss' kappa), non una percentuale di accordi grezzi. Due recensori che passano tutto concordano 100% del tempo senza portare informazioni.

Recensione di deriva

Se un recensore segna sistematicamente più duro o più morbido dei colleghi sulla stessa conversazione — un confronto con il resto del pannello, non una tendenza nel tempo.

Controversie

Un compagno di squadra può contestare formalmente le prove registrate su di loro. Una disputa aperta blocca la finalizzazione del premio-periodo fino a quando non è risolto.

Auto-recensione

Un compagno di squadra non può sottoporre una valutazione di se stessi.

⚠️
Le valutazioni a livello di AI non possono influenzare la retribuzione fino a quando viene pubblicata una calibrazione che mostra il modello concorda con i recensori umani abbastanza da vicino, misurati da kappa contro un campione minimo.

Riconoscimento

Il solo ranking ha documentato modalità di fallimento: gioco metrico, burnout e ombreggiatura pubblica di chiunque sia l'ultima.

Più migliorata

Misurato contro il precedente record di un compagno di squadra, mai contro i colleghi, con restringimento così un piccolo denominatore non può comprare una vittoria.

Streaks

I periodi di esecuzione che soddisfano una barra fissa, dichiarata — media valutazione, volume gestito, conteggio delle valutazioni e tasso negativo-feedback, tutte le cifre assolute. Ognuno può tenere una striscia simultaneamente, in modo da non creare classifica, e un collega con un mese eccezionale non può rompere il vostro.

Classifica ottimale

Un compagno di squadra vede sempre il proprio indice; se vedono i colleghi è una decisione del workspace, le bande percentuali possono essere pubblicate invece delle posizioni assolute.

💡
Il riconoscimento non tocca mai i soldi. Una striscia non può finanziare una vincita o romperne uno, e la maggior parte migliorata non è una categoria di premio.

Ricerche

Un obiettivo che il team lavora verso, misurato contro una barra dichiarata fissa piuttosto che contro l'altro — in modo da tutti possono cancellare la stessa missione nello stesso periodo.

Ambito e cadenza

Individuale o squadra; one-off, ripetibile, o stagionale con una finestra esplicita.

Criteri

Conversazioni gestite, valutazioni ricevute, giorni attivi, media valutazione o negativa del feedback. Tutto assoluto — nessuna metrica il cui valore dipende da ciò che i colleghi hanno fatto.

Protezione della qualità

Richiesto su qualsiasi ricerca con un obiettivo di volume. Colpisce il numero mentre la qualità scende sotto il pavimento tiene la missione piuttosto che completarla, e viene mostrato come fermo, non incompiuto.

Limiti di ripetizione

Un tappo per-periodi, guidato dal criterio più lento, più un raffreddamento opzionale prima che una ripetizione possa contare.

Squadre di ricerca

Progressi condivisi senza attribuzione per-teammata pubblicati, quindi una missione di squadra non può diventare un leaderboard.

Sessioni di coaching

Ha un allenatore, un compagno di squadra che è stato allenato, un tempo programmato, punti di conversazione concordati e un riassunto scritto dopo. Le vere chat, biglietti e valutazioni QA sono abbonati ad esso come prova, quindi la conversazione è ancorata al lavoro che effettivamente è accaduto piuttosto che ad una impressione ricordata.

Punti di conversazione

Concordo prima della sessione, quindi il compagno di squadra non sta entrando in una sorpresa.

Prove punite

Chat, biglietti e valutazioni QA allegate alla sessione. Un perno memorizza un riferimento — un tipo e un id — non una copia, quindi indica sempre il record live. OpsIQ non verifica l'id prima di accettarlo.

Articoli

Ogni con un proprietario e una data dovuta. Un elemento oltre la sua data è mostrato come in ritardo — uno stato derivato, non uno status qualcuno deve ricordare di impostare.

Nota riservata

Il compagno di squadra che è stato allenato non può mai leggerlo — non come agente, non come manager, non da proprietario. Quel controllo funziona prima di ogni altro permesso e non può essere superato.

Chi può vedere una sessione

L'allenatore, il compagno di squadra e chiunque abbia il permesso di prestazione del team.

Audit

Ogni creazione, aggiornamento, pin, unpin e completamento viene registrato con ciò che è cambiato, da cui.

💡
Il coaching è deliberatamente separato dal punteggio e dai soldi. Una sessione non cambia l'indice di nessuno, non porta una ricompensa, e non appare sulla classifica.

Premi e riconoscimenti

L'attività registrata si trasforma in token con un valore di cassa impostato. Il percorso per il pagamento è deliberatamente lento e ogni passo viene registrato.

1
Impostare il valore token

Quanti gettoni eguali quanti soldi, e che cosa ogni attività vale.

2
Autorizzazione del massimale finanziato

Per un periodo di calendario chiuso, un amministratore completo stabilisce i token massimi che può pagare. Risparmio del modulo impostazioni non autorizza un bilancio e non può alterare un massimale già autorizzato.

3
Recensione dell'anteprima

I destinatari, la riserva e il motivo per cui chiunque è ineleggibile.

4
Finalizzazione

Un periodo che non ha assegnato nulla può essere annullato e ri-ri-ricorrere in modo definitivo. Uno che ha rilasciato token deve essere invertito prima: OpsIQ scrive una voce compensante contro ogni portafoglio e mai cancella l'originale, quindi il libro principale mostra ancora ciò che è successo e perché, solo allora è il periodo rilasciato. L'inversione rifiuta se qualcuno ha già registrato molto più di quanto sia stato recuperato.

⚠️
I punteggi di qualità dell'intelligenza artificiale possono integrare tale giudizio ma non sostituirlo mai, e un compagno di squadra mostrato come Unscored non è idoneo. Ogni collaboratore è bloccato a 25% sopra la loro quota prevista del periodo, quindi un mese molto alto-volume non può assorbire l'intero bilancio.
💡
Il titolare del conto non partecipa a premi o premi di token, senza interruttore: autorizzano il controsoffitto finanziato e finalizzano ogni allocazione, e non c'è nessuno sopra di loro per approvare ciò che si pagherebbero.

Tutti gli altri partecipano per impostazione predefinita, team conduce e co-proprietari inclusi. Per lasciare qualcuno fuori, aprirli in Team & Departments e spegnere la parte Takes in premi e ricompensa opzione. Il loro lavoro è ancora segnato e mostrato; smettono di essere un candidato da quel momento in poi, e nulla già finalizzato è toccato.

⚠️
Nessuno approva i soldi per se stessi, perché le persone che possono prendere parte sono anche le persone in grado di approvare i pagamenti,OpsIQ rifiuta una vincita o un credito nel proprio portafoglio, pagando la propria richiesta, finalizzando un periodo in cui si sarebbe pagato e finalizzare un premio che si vincerebbe. Un altro amministratore completo o il proprietario deve farlo.

Chi può vedere e fare ciò

Visualizza le prestazioni del team

Il pannello, stato vivo, capacità e visione della qualità per lo spazio di lavoro.

Gestione delle prestazioni del team

Obiettivi e punteggio, esportazioni, schede di valutazione QA, coaching, missioni e le letture che portano dati di identificazione dei colleghi come la storia del per-admin e la storia di premio.

Visualizzare i finanziamenti della squadra

Bilancia, valori di cassa, note di reclamo e riferimenti di pagamento — separati da prove di prestazione perché è payroll-adjacent.

Solo amministratore completo

Ogni mutazione monetaria: pagare una ricompensa, pagare o rifiutare un reclamo, autorizzare un bilancio, finalizzare, annullare o rovesciare una allocazione e impostare il tasso di token-to-cash.

Usarlo abbastanza

L'indice di performance è una prova gestionale, non una decisione automatica del lavoro. Aprire le conversazioni di origine dietro un numero prima di agire su di esso, e pesare complessità dei casi, orari, congedo e esigenze di accessibilità.

Impostazioni

I tuoi siti (spazi di lavoro)

I siti (spazi di lavoro) consentono di gestire più siti web da un'installazione OpsIQ. Ognuno ha il proprio monitoraggio, AI, connettori e accesso al team.

Siti
I tuoi sitiLa schermata dei siti: un elenco di spazi di lavoro, ciascuno con il suo dominio, tipo, connettore, badge di stato e un pulsante aperto, più Add-new-site.I tuoi sitispazio di lavoroI tuoi siti+ Aggiungi nuovo sitoSshop.acme.comeCommerce · Shopify connettoreAttivitāAprireHhost.acme.comHosting · WHMCS connettoreAttivitāAprireBblog.acme.comContenuto · nessun connettoreImpostazioneAprire1MULTI-SITEUno spazio di lavoro per il sito2ISOLATEDI dati non si mescolano mai3PER-SITEImpostazioni e connettori propri
La schermata dei Siti reali: ogni sito è il proprio spazio di lavoro isolato (dominio, connettore e impostazioni), aggiunto e aperto da un elenco.

Creazione di un sito

1
Vai ai siti collegati

Navigare su Siti Collegati.

2
Aggiungi un nuovo sito

Inserisci nome, dominio e descrizione.

3
Copiare la chiave del sito

Ogni sito ottiene una chiave unica (site_xxx) per il widget snippet.

4
Configurare in modo indipendente

Ogni sito ha la propria AI, connettori e impostazioni.

Quanti siti posso avere?+

Dipende dal piano di licenza, controlla i dati della patente.

Impostazioni

Licenza e piano

La tua licenza OpsIQ controlla le funzionalità, i limiti del sito e l'equilibrio di credito AI.

Licenza
Centro licenzeIl Centro licenze OpsIQ: piano, un badge di stato attivo, la chiave di licenza mascherata, un misuratore di credito AI e un pulsante Force-remote-check.Centro licenzespazio di lavoroOpsIQ Centro licenzePianoBusinessStatoAttivitāChiaveOPSIQ-••• •••-2F9CCrediti all'intelligenza artificiale$68 sinistraControllo remoto forza1PLAN & STATUSAttivo, a colpo d'occhio2KEYHMAC-cached localmente3CREDITSL'equilibrio dell'intelligenza artificiale
Il vero Centro licenze: il tuo piano e lo stato attivo, la chiave mascherata, il tuo equilibrio di AI-credito e una forza di un clic ri-verificare.
Chiave di licenza

Convalida contro il server di licenza OpsIQ.

Battito cardiaco / convalida della licenza

OpsIQ normalmente legge la sua cache di licenza locale firmata e aggiorna la validazione quando necessario. Utilizzare il controllo remoto Force quando è necessario un risultato immediato; Diagnostics identifica DNS, problemi HTTPS o server-time.

Piano

I determini presentano disponibilità e limiti.

Limite del sito

Numero massimo di spazi di lavoro.

Crediti all'intelligenza artificiale

Se si utilizza Managed AI, il saldo di credito viene mostrato qui.

Scadenza

Rinnovare prima della scadenza per evitare interruzioni di servizio.

Cosa succede quando scade la mia licenza?+

Continuano le operazioni di monitoraggio, biglietti e CRM. L'IA si ferma fino al rinnovo.

Impostazioni

Profilo, password e autenticazione a due fattori

Ogni amministratore può mantenere la propria identità, le preferenze di lavoro, password e l'autenticazione a due fattori.

Schermo del prodotto
Il mio profiloLa pagina del profilo separa i dati personali, la lingua/zona temporale, l'avatar/signature, la password e l'autenticazione a due fattori.Il mio profilospazio di lavoroPROFESSIONALECompletaTIMEZONEEuropa/Atene2FAAbilitatoLIVELLI DI LAVORONome e emailIdentità personaleModificaLingua e fuso orarioDate e interfacciaModificaAvatar e firmaRisposte e presenza di teamModificaPassword e 2FAProtezione degli accountSicuro1UPDATE PROFILEIdentità e locale2SECURE LOGINPassword e 2FA3SAVEApplicare a questo amministratore
La pagina del profilo separa i dati personali, la lingua/zona temporale, l'avatar/signature, la password e l'autenticazione a due fattori.

Le impostazioni del profilo appartengono all'amministratore firmato e non modificano il branding di workspace. Utilizzare una password unica e abilitare l'autenticazione a due fattori. Cambiare un'impostazione email o autenticazione potrebbe richiedere la re-verificazione o un nuovo sign-in.

Impostazioni

Preferenze di notifica

Le preferenze di notifica controllano quali eventi operativi raggiungono un amministratore nel prodotto o via e-mail.

Schermo del prodotto
Preferenze di notificaLa pagina di notifica fornisce per-event in-app e le scelte di posta elettronica più una lista di notifica recente.Preferenze di notificaspazio di lavoroIN-APPSuEMAILSelettivoUNREAD4LIVELLI DI LAVOROBiglietto assegnatoIn-app e emailSuIl cliente ha rispostoIn-appSuSLA rischioIn-app e emailSuOmologazione AIIn-app e emailSu1CHOOSE EVENTSSolo segnali utili2CHOOSE CHANNELIn-app o e-mail3REVISTANotifiche recenti
La pagina di notifica fornisce per-event in-app e le scelte di posta elettronica più una lista di notifica recente.

Preferenze copertura ticket assegnazione, risposte dei clienti, avvisi SLA, messaggi di chat e eventi di approvazione AI. Tenere i segnali operativi urgenti abilitati da qualche parte; spegnere email non necessariamente disattiva la notifica in-app.

Impostazioni

Panoramica della sicurezza

La Security Overview è la prima schermata per valutare blocchi, attacchi di login, sessioni di minacce, tendenze di sicurezza e integrità degli eventi.

Schermo del prodotto
Panoramica della sicurezzaSecurity Panoramica combina le schede di rischio attuali, una tendenza 14_-day, elenco degli attaccanti, stato dell'avanzamento e dell'integrità degli eventi.Panoramica della sicurezzaspazio di lavoroACTIVE BLOCKS18FAILED LOGINS42HIGH THREAT3LIVELLI DI LAVOROBloccato automatico7- giorno totale e fonteTendenzaGli ultimi attacchiIP, paese e ragioneRecensioneEventi di sicurezzaRischio e risultato d'azioneAlimentazioneIntegrita' della catena di HashCatena di eventi ammortizzatoriValido1READ HEADLINEEsposizione attuale2OPEN EVIDENCEAttaccatori ed eventi3ATTIVITÀBloccare, indagare, esportare
Security Panoramica combina le schede di rischio attuali, una tendenza 14_-day, elenco degli attaccanti, stato dell'avanzamento e dell'integrità degli eventi.

Utilizzare le schede di titolo per triage, quindi aprire il relativo Audit, Logins non riuscita, Bloccato IPs o JavaScript Pagina degli errori per il lavoro a livello record. 14- la tendenza del giorno è più utile di un singolo punto. Le sessioni ad alta velocità dovrebbero essere indagate contro visitatori, richieste e prove di autenticazione prima che venga applicato un blocco permanente.

Impostazioni

Tronco di audit amperometrico

Il registro di audit registra che ha fatto cosa, quando, a quale oggetto, a che livello di rischio e se è riuscito.

Schermo del prodotto
Audizione dell'attivitàLa pagina di audit fornisce attività vigile e visive con azione, attore, rischio, obiettivo e risultato.Audizione dell'attivitàspazio di lavoroEVENTI18.2kHIGH RISK21INTEGRITYValidoLIVELLI DI LAVOROConnettore abilitato[email protected] · ShopifySuccessoAPI chiave revocata[email protected] · chiave 19SuccessoImpostazioni modificate[email protected]· AISuccessoPermesso negato[email protected] · esportazioneBloccato1FILTERAzione, rischio e attore2INSPECTObiettivo e risultato3EXPORTCSV o JSON
La pagina di audit fornisce attività vigile e visive con azione, attore, rischio, obiettivo e risultato.

Filtra per azione, rischio e attore; esportazione CSV o JSON La catena hash aiuta a rilevare le righe di audit mancanti o alterate, ma non sostituisce i backup protetti e l'accesso ai database ristretti. Trattare le esportazioni di audit come sensibili perché possono identificare gli utenti, record e azioni di sicurezza.

Operazioni

Diagnostica

Diagnostics trasforma i controlli subsistema in risultati di salute semplice-inglese e dirigere le azioni successive.

Schermo del prodotto
DiagnosticaDiagnostics gruppi controlli sanitari per il widget, AI, biglietti, integrazioni, Site Intelligence, compiti di sfondo, automazione CRM, licenze e archiviazione.Diagnosticaspazio di lavoroSANITÀ13WARNING2FAIENTE1LIVELLI DI LAVOROWidgetBeacon e chat endpointsSaluteAttività di fondoCron battito cardiaco in ritardoAvvertenzaEmailProva di uscita guastoNon è successoConnettoriIscrizione di registro e eventoSalute1REFRESHEseguire i controlli correnti2OPEN WARNINGLeggi le prove3FIX AND RETESTConfermare il recupero
Diagnostics gruppi controlli sanitari per il widget, AI, biglietti, integrazioni, Site Intelligence, compiti di sfondo, automazione CRM, licenze e archiviazione.

La pagina controlla la velocità del sito, il grado/parola chiave/backlink/dati locali, l'AI e il gateway di azione, i biglietti, crawler / audit, l’integrazione/event intake, le attività di sfondo, le automazioni CRM, la licenza, widget e relativi servizi di prodotto.

Dopo una modifica, Rifiuta e conferma il sottosistema interessato ritorna sano. Una pagina di diagnostica verde è necessaria ma non sufficiente per il lancio; completare la lista di controllo Pre-lancio pure.

Impostazioni

Sicurezza e accesso

OpsIQ include più livelli di sicurezza per proteggere l'amministratore, i dati e API accesso.

Come funziona
Sicurezza e accessoUno schermo di sicurezza accanto ai controlli abilitati: due fattori, OIDC SSO, SCIM 2.0, OAuth2 PKCE, CSRF/CSP, IP firewall, limiti di velocità e una volta segreta.Due fattori (TOTP)OIDC SSOSCIM 2.0OAuth2 PKCECSRF + CSPIPfirewallLimiti di tassoSegreti a volte
Sicurezza

Caratteristiche di sicurezza

Autenticazione dell'amministratore

Email/password con opzionale 2FA.

Blocco di accesso

Blocco temporaneo dopo troppi tentativi falliti.

IP blocco

Block IPs o CIDR spazia dall'accesso ai siti tracciati.

Scoring di minacce

I visitatori ad alta velocità possono essere bloccati automaticamente.

Applicazione HTTPS

Richiesto per tutte le connessioni. HTTP reindirizza a HTTPS.

Intestazioni HSTS

Strict-Transport-Security impedisce attacchi di downgrade.

Protezione CSRF

Tutti i moduli di amministrazione includono token CSRF.

Protezione XSS

Tutti gli input utente sono evasi. Le intestazioni CSP limitano l'esecuzione dello script.

Protezione SSRF

Webhooks in uscita bloccano gli indirizzi privati/interni IP.

Configurazione consigliata

1
Abilita 2FA

Per tutti gli account di amministrazione.

2
password forti

Minimo 12 caratteri, misti.

3
Conti di revisione

Rimuovere l'accesso per i membri del team precedente.

4
Monitorare i login falliti

Controllare ogni settimana per i modelli sospetti.

5
Tieni aggiornato

Applicare gli aggiornamenti tempestivamente per le patch di sicurezza.

Impostazioni

Ruoli e autorizzazioni

Controllo di accesso basato sul ruolo consente di controllare ciò che ogni membro del team può fare.

Roles & autorizzazioni
Ruoli e autorizzazioniUna matrice di ruolo per responsabilità: Il proprietario ha tutto; Full Admin manca di fatturazione e zona di pericolo; l'agente ha solo biglietti di portata.Roles & autorizzazionispazio di lavoroImpostazioniFATTURAZIONEDANGERATOTICCHIKESProprietarioAbilità completaAgentescoped13 ROLESProprietario · Amministratore completo · Agente2GRANULARPer-pagina + per-dipartimento3DEFAULT-DENYPercorsi dimenticati bloccati
Il ruolo matrice a colpo d'occhio: il proprietario ottiene tutto, Full Admin tutto tranne che fatturazione e zona di pericolo, agente solo i loro biglietti perseguiti.

ruoli predefiniti

Proprietario

Tutto compreso licenza, zona di pericolo e gestione dell'installazione.

Abilità completa

Tutto tranne la licenza e zona di pericolo.

Agente

Risponde a biglietti e chat di partenza assegnati, visualizza analisi. Nessuna impostazione, team o accesso alla sicurezza.

Posso creare ruoli personalizzati?+

Tre ruoli integrati più l'assegnazione del reparto dà il controllo granulare.

Impostazioni

Bloccato IPs

Gestisci gli indirizzi IP bloccati dall'accesso ai siti tracciati.

Bloccato IPs
Bloccato IPsIl bloccato...IPs schermo: un blocco-an IPModulo /CIDR accanto a una tabella Indirizzi bloccati con ogni voce, data, ragione e un pulsante Sblocca.Bloccato IPsspazio di lavoroBloccare un IP / CIDR203.0.113.0/24Motivo (opzionale)BloccoIndirizzi bloccati203.0.113.9Jun 12 · forza brutaSblocca45.12.0.0/16Jun 10 · SpamSblocca102.89.6.2Jun 9 · abusoSblocca1BLACKIP o gamma CIDR2LISTChi e quando, con ragione3UNBLOCKUn clic
Il vero Bloccato IPs schermo: bloccare un singolo IPo una gamma CIDR, e gestire l'elenco, ciascuno con la sua data, ragione e un clic sbloccare.

Come bloccare

1
Vai alla Sicurezza > Bloccato IPs

2
Aggiungere un IP o gamma CIDR

Esempio: 203.0.113.42 o 203.0.113.0/24

3
Aggiungi un motivo

Documento perché: spam, abuso, raschiatura, ecc.

Bloccherà gli utenti legittimi?+

Se i clienti condividono un'azienda IP o VPN, bloccarlo IP blocca tutti su di esso. Utilizzare blocchi stretti.

Impostazioni

Accedi non registrati

Tutti i tentativi di login senza successo al tuo OpsIQ admin.

Accedi non registrati
Accedi non registratiLa schermata di logins fallita: una tabella dei conti/IPs con conteggi di guasto, tempo dell'ultimo tentativo e un pulsante Block per riga.Accedi non registratispazio di lavorotentativi di login non riuscitiACCOUNT /IPFAIENTEULTIMAAZIONE[email protected] · 41.62.10.472m faBlocco[email protected] · 102.89.6.2318m faBloccoIgnoto · 45.12.9.71226m faBlocco[email protected] · 88.21.4.921h faBlocco1WATCHtentativi di login non riusciti2COUNTSPer account /IP3ATTIVITÀBlocca dalla riga
La schermata di login vera e propria: ogni account/IP con il suo conteggio di guasti e l'ultimo tentativo, bloccare una sorgente brute-force direttamente dalla riga.

Che ogni voce mostra

Data/ora

Quando e' successo il tentativo.

Email

Indirizzo e-mail utilizzato.

IP

Fonte del tentativo.

Paese

Posizione geografica.

Motivazione

Password sbagliata, bloccata o non trovata.

Segni di avvertimento

Molti tentativi, stessa e-mail

Verifica password. Assicurare 2FA è abilitato.

Molti tentativi, e-mail diverse

Attacco automatizzato. Bloccare la sorgente IP.

Paesi insoliti

Se il vostro team è locale, i tentativi stranieri sono probabilmente attacchi.

Impostazioni

Analista della sicurezza dell'AI

Uno strato di analista opt-in sulle pagine di sicurezza: verdetti, slip incidenti, un digerimento quotidiano, un controllo postura settimanale, Ask Security e politiche di blocco 0token.

Ogni pagina di sicurezza registra ciò che è successo, ma leggendolo prende ancora il giudizio. L'analista della sicurezza dell'IA aggiunge quel giudizio in atto, ed è costruito per spendere quasi nulla: non si trova mai nel beacon o nel percorso di login, regole deterministiche stabiliscono i casi evidenti senza AI call, i verdetti sono memorizzati nella cache e l'output migliore dell'anagrafe è una regola deterministica che poi fa rispettare per sempre a zero token. Impostazioni → Sicurezza; tutte le impostazioni predefinite.

Cosa aggiunge

Chip verdiani + Spiegare

Bloccato IPs e le righe di Logins non riuscita mostrano un chip benigno / sospetto / ostile con un punteggio di fiducia. Spiegare apre il ragionamento, i fatti utilizzati, e one-click Block / Release azioni. 24h, quindi ri-visualizzare un IPè libero.

Brevi incidenti

Gli eventi correlati si raggruppano in un incidente (onda di registrazione, scansione URL, auto-blocco) con una linea temporale semplice-inglese e uno ha raccomandato il passo successivo.

Digerimento giornaliero

Un recap al giorno: ieri contro la vostra linea di base, blocchi, incidenti e l'unica cosa da fare. Giorni tranquilli inviare un deterministico all-clear a zero tokens.

Controllo postura settimanale

Una lista di controllo indurimento lunedì (2FA gaps, soglia di blocco contro volume reale di attacco, avvisi off) con una gravità, sforzo e correzione esatta per articolo.

Chiedi sicurezza

Una casella di domanda sulla Panoramica della sicurezza che risponde dal tuo stato di sicurezza live. Domande del server profondo sono consegnate alla chat dell'ingegnere amministratore piuttosto che indovinato.

Proposte politiche + autopilota

L'analista propone regole di blocco concrete come Approve / Dismiss card; norme approvate applicano a zero token con un contatore live hit.

Impostazioni

Analista della sicurezza dell'AI (security_ai_enabled)

Attiva chip verdetto, Spiega e Chiedi Sicurezza. Solo ambiguo IPs raggiungere il modello, in batch in una sola chiamata.

Brevi incidenti (security_ai_incidents)

Clusters eventi in incidenti e scrive ogni nuova storia. Corre sul cron di sicurezza oraria esistente.

Digest giornaliero (security_ai_digest)

Una ripresa di sicurezza al giorno sulla campana e la Panoramica. Giorni tranquilli non costano nulla.

Controllo postura settimanale (security_ai_posture)

Lunedì elenco di controllo indurimento sul Panoramica. La lista di controllo è completamente deterministica.

Autopilota di politica (security_ai_autopilot)

Consente all'analista di attivare le sue proposte più sicure incustodite: solo blocchi reversibili, singoli IPs o range non più grandi /24, mai condiviso/mobile/privato, tappato 10 all'ora, sempre verificata e insopportabile.

💡
Ogni chiamata è contrassegnata security_ai con il proprio tappo mensile in AI Config → Cost Guardrails (di default 300k tokens). Se il berretto viene colpito, caratteristiche degrade a letture deterministiche. Bloccaggio, lockout e avvisi non dipendono mai da questo budget. L'analista non può mai eliminare i dati, modificare le impostazioni, toccare il registro di controllo o fare un divieto permanente.
Operazioni

Cron e automazione

OpsIQ utilizza un programmatore di prodotti per eseguire e-mail polling, automazione dei biglietti, rollup analytics, ritenzione, code AI, lavoro CRM, report e lavori di connettore.

Schermo del prodotto
Cron e automazioneUna voce di cron prodotto fornisce il battito cardiaco; OpsIQ decide quali posti di lavoro interni sono dovuti.Cron e automazioneserverCAPITOLOOgni minutoRUNNERcron/all.phpHEALTHImpostazioniLIVELLI DI LAVOROCorridoio di prodotto unitoopsiq/cron/all.phpObbligatorioCoda di biglietti e emailLavoro breve programmatoAttivitāAnalisi e conservazioneCaduta internaProgrammatoAbbonati per il collegamentoEventi in cron dichiaratiScoperto1INSTALL ONE LINEEseguire il programmatore di prodotti ogni minuto2CHECK CRON SETUPConfermare i battiti cardiaci CLI3USE DIAGNOSTICSInvestire in lavori tardivi o falliti
Una voce di cron prodotto fornisce il battito cardiaco; OpsIQ decide quali posti di lavoro interni sono dovuti.

Entrata richiesta del prodotto cron

Aggiungere questa singola linea al crontab per lo stesso ambiente server e PHP che viene eseguito OpsIQ:

OpsIQ prodotto crontab ingresso
* * * * * php /path/to/opsiq/opsiq/cron/all.php >> /tmp/opsiq-cron.log 2>&1

Sostituire /path/to/opsiq utilizzare il percorso CLI completo PHP quando l'host ne richiede uno, per esempio /usr/bin/php8.4.

Non usare il livello superiore /cron.php per il lavoro di prodotto. In questo repository che il corridore appartiene ad un servizio non prodotto separato al di fuori di questo manuale. OpsIQ prodotto corridore è opsiq/cron/all.php.

Quali sono le unità di pianificazione unificate

Coda di biglietti e AI

Processi dovuti auto-risposte, escalation, approvazioni e altri lavori di prodotto in coda.

E-mail in entrata

Polls configurato caselle di posta in cui la polling è il metodo di assunzione selezionato.

Analisi e sessioni

Assembla sessioni e aggiorna aggregati programmati quando sono dovuti.

CRM e impegno

Esegue i compiti di punteggio, ciclo di vita, flusso di lavoro, campagna e rapporto programmato che sono abilitati.

Manutenzione e manutenzione

Esegue il lavoro di pulizia, archivio, scadenza e integrità.

Connettori

Connettore di erogazione abbonati cron e inquinante solo per connettori installati, abilitati e configurati.

Verificare il cron

  1. Aprire Impostazioni - Cron Setup e confermare il prodotto corridore esiste.
  2. Uso Correte ora una volta, quindi confermare l'aggiornamento di battiti cardiaci e inquinanti.
  3. Controlla Diagnostica per un problema di battito cardiaco, PHP CLI, database o file-path.
  4. Ispezione /tmp/opsiq-cron.log o il percorso di registro selezionato quando un manuale non riesce.

Tenere i manubri di connettore corto, idemponte e spazio-scoped. Batch sincronizzazioni lunghe e memorizzare un cursore / punto di controllo in modo che il prossimo run possa continuare in sicurezza.

🚫
Quando il prodotto cron si ferma, il lavoro basato sul tempo OpsIQ si arresta o diventa tardi anche se le pagine di amministrazione ordinarie possono ancora caricare.
Operazioni

Operazioni di distribuzione ospitate

A hosted OpsIQ deployment uses the same product screens and workflows while the hosting operator manages the server layer. Commercial sign-up, plans, billing and account-portal procedures are outside this handbook.

Schermo del prodotto
Distribuzione hostedL'operazione ospitata cambia chi mantiene l'infrastruttura; non modifica il modo in cui i clienti utilizzano OpsIQ.Distribuzione hostedspazio di lavoroPRODUCT UIStesso OpsIQINFRASTRUCTUREOperazioneWORKSPACE DATAIsolatoLIVELLI DI LAVOROTempo di esecuzione dell'applicazionePHP, web server e databaseGestitoProdotto cronProgrammato da operatore di hostingVerificaBackup e aggiornamentiPolitica e prove del fornitoreRecensioneOpsIQ impostazioniSiti, AI, team e connettoriLa tua squadra1OPERATE OPSIQ NORMALLYUtilizzare la stessa navigazione del prodotto2VERIFY SERVICE HEALTHUtilizzare Diagnostics e prove di stato3KNOW RESPONSIBILITYImpostazioni di prodotto separate dal lavoro di hosting
L'operazione ospitata cambia chi mantiene l'infrastruttura; non modifica il modo in cui i clienti utilizzano OpsIQ.

Che cosa gestisce normalmente l'operatore di hosting

  • Web server, runtime PHP, servizio database, TLS e stoccaggio.
  • Il cron di prodotto unificato e i suoi registri a livello server.
  • Aggiornamenti delle applicazioni, monitoraggio dell'infrastruttura e il processo di backup definito dall'accordo di hosting.

Che cosa? OpsIQ amministratore gestisce ancora

  • Siti web e installazione widget, impostazioni AI, conoscenze, caselle di posta e flussi di lavoro di supporto clienti.
  • Accesso di squadra, reparti, controlli di sicurezza, chiavi API _, connettori, automazione e impostazioni di conservazione dei dati.
  • Verifica del prodotto tramite Diagnostics, log audit, test di connettore e veri controlli end-to-end.

Controlli operativi

Non presumere che un servizio gestito significa che ogni integrazione del prodotto è sana. Confermare l'ultima prova di backup e la politica di ritenzione con l'operatore hosting, e utilizzare OpsIQ Diagnostica dopo le modifiche a DNS, e-mail, fornitori di AI, siti web o connettori.

La presente sezione riguarda esclusivamente le operazioni di prodotto. Imbarcazioni commerciali, abbonamenti, fatturazione e amministrazione del conto cliente rimangono al di fuori del manuale OpsIQ.

Operazioni

Auto-hosting OpsIQ

Un self-hosted OpsIQ l'installazione funziona su infrastrutture che si controlla. Sei responsabile per il runtime, database, TLS, prodotto cron, backup, aggiornamenti e monitoraggio.

Schermo del prodotto
Auto-hostingL'auto-hosting dà il controllo delle infrastrutture e rende il vostro team responsabile di ogni dipendenza operativa.Auto-hostingserverPHP8.4+DATABASEMySQL 5.7+SCHEDULEROgni minutoLIVELLI DI LAVOROEstensioni di runtimeCurl, pdo_mysql, mbstring jsonObbligatorioAssemblaggio addizionalexml, apre, zip, intl, gdObbligatorioDatabase alternativaMariaDB 10.3+ con InnoDBSupportatoTrasportiAccesso HTTPS e provider in uscitaVerifica1PREPARE THE SERVERRequisiti di runtime2INSTALL AND CONFIGUREUtilizzare un database dedicato e HTTPS3ADD PRODUCT CRONCorri! opsiq/cron/all.php
L'auto-hosting dà il controllo delle infrastrutture e rende il vostro team responsabile di ogni dipendenza operativa.

Contratto software minimo

PHP

PHP 8.4 estensioni richieste: curl, pdo_mysql, mbstring, json, xml, apre, zip, intl e gd.

Database

MySQL 5.7+ o MariaDB 10.3+ utilizzando InnoDB. Creare un database dedicato e meno-privilegiato utente dell'applicazione.

Server web

Apache o Nginx configurati per il controller anteriore OpsIQ, le attività statiche e i riscrittori richiesti.

HTTPS

Richiesto per sessioni di amministrazione, traffico widget, chiavi API _, webhooks e chiamate provider.

Accesso in uscita

Consentire DNS e HTTPS accedere all'intelligenza artificiale, email, connettore e endpoint di licenza che realmente abilitate.

Accesso file

Gli utenti web e CLI devono essere in grado di leggere i file delle applicazioni e scrivere solo alle posizioni di runtime/storage documentate.

Cron

Eseguire il programmatore di prodotti OpsIQ ogni minuto con la stessa configurazione dell'applicazione e l'accesso al database del processo web.

Sequenza di installazione

  1. Caricare il rilascio alla radice del documento previsto e preservare la struttura della directory fornita.
  2. Crea il database e l'utente dell'applicazione, quindi inserisci il database, canonica URL e le impostazioni di licenza.
  3. Eseguire il flusso di installazione/impostazione e creare il primo account proprietario.
  4. Attiva HTTPS e verifica reindirizzamenti, cookie e widget pubblico/API Percorsi.
  5. Aggiungere l'unità OpsIQ prodotto cron:
Cotone di prodotto auto-conduttore
* * * * * php /path/to/opsiq/opsiq/cron/all.php >> /tmp/opsiq-cron.log 2>&1
  1. Impostazioni aperte - Configurazione Cron e Diagnostica; eseguire il programmatore una volta e risolvere ogni dipendenza fallita.
  2. Configurare il backup, ripristinare i test, la ritenzione di registro e le procedure di aggiornamento prima di aggiungere i dati di produzione.

Aggiornamento sicuro

  1. Leggere le note di rilascio e controllare il PHP/estensione richiesto prima di cambiare i file.
  2. Riavviare il database e i file di applicazione/configurazione, quindi dimostrare che il backup può essere ripristinato in una posizione di prova.
  3. Distribuire i nuovi file senza eliminare dati di configurazione o runtime specifici per l'installazione.
  4. Eseguire il processo di migrazione / preflight fornito e verificare login, tracciamento widget, biglietti, email, AI, connettori e cron.
  5. Tenere il backup di rilascio precedente e database disponibile per la finestra di rollback documentata.
🚫
Il repository top-level /cron.php non è il OpsIQ programmatore di prodotti. Automazione del prodotto punto solo a opsiq/cron/all.php.
⚠️
Non eliminare . schema_cache.json come manutenzione di routine. Rimuovere solo quando le istruzioni del prodotto richiedono esplicitamente una ricostruzione schema-cache .
Operazioni

Guida alla produzione

Elenco di controllo e migliori pratiche per l'esecuzione OpsIQ nella produzione.

Guida alla produzione
Guida alla produzioneUna lista di controllo go-live: dominio personalizzato e SSL, AI addestrato, connettori e cron, backup e ritenzione, e ruoli del team.Elenco di controllo in corsospazio di lavoroPrima di andare a vivereDominio personalizzato + SSL configurataAI addestrato ai tuoi contenutiConnettori testati · Corda di cronBackup programmati · set di ritenzioneruoli di squadra assegnati e recensiti1GO-LIVEElenco di controllo pre-lancio2VERIFYDominio SSL · backup3CONFIDENTNave quando è verde
Una lista di controllo go-live quindi niente è mancato: dominio + SSL, AI addestrato, connettori testati e cron, backup e ritenzione, e ruoli di squadra.

Prima di andare in diretta

HTTPS configurato

SSL installato, reindirizza HTTP, abilitato HSTS.

Cron in esecuzione

Verificare tramite la pagina diagnostica.

Testato AI

Chatta come cliente. Verificare accuratezza e tono.

Widget installato

In tutte le pagine del sito. Verifica con Live Feed.

Backup configurato

Database e backup dei file automatizzati.

Registrazione errori

Registrazione e monitoraggio del registro di errore PHP.

Team invitato

Tutti i membri hanno un account con ruoli corretti.

Base di conoscenza popolata

Almeno 5-10 articoli.

Quotidiano: Controllare il cruscotto, la coda dei biglietti chiara, controllare le conversazioni AI.

Settimanale: Review AI Insights, aggiornamento KB, controllo delle prestazioni del team, revisione della sicurezza.

Mensile: Review analytics trend, connettori di audit, aggiornamento AI formazione, verifica backup.

Operazioni

Elenco di controllo pre-lancio

Eseguire i gate di origine e completare i controlli reali dei prodotti prima del lancio di un rilascio o di una prima produzione.

Schermo del prodotto
Verifica del rilascioLa vista di rilascio mostra le porte necessarie per correre; non pre-label loro come passato.Verifica del rilascioserverRUNTIMEPHP8.4SOURCE GATESCorrere localmenteOUTCOMEBasato sulle proveLIVELLI DI LAVOROEstensioni richiesteControllare prima della suiteCancelloPHP SyntaxTutti i file PHP di progettoCancelloValutazione dell'intelligenza artificiale e PHPUnitCorrere quando le dipendenze sono presentiCancelloControlli statici e browserEseguire quando configuratoCancello1RUN THE CHECKSCattura l'output effettivo2FIX EVERY REQUIRED FAILURENon sostituire le prove con ipotesi3TEST THE PRODUCTVerificare i viaggi reali degli utenti
La vista di rilascio mostra le porte necessarie per correre; non pre-label loro come passato.

Cancelli di origine e rilascio

Eseguire i controlli del repository dalla root di installazione e mantenere la loro uscita completa con il record di rilascio.

Cancello preflight primario
php tools/preflight.php
Cancello di rilascio esteso
php tools/release_gate.php

Il preflight controlla il runtime PHP 8.4 e le estensioni richieste, effettua una scansione della sintassi PHP, gestisce la porta di valutazione AI e la suite completa di PHPUnit, ed esegue i controlli PHPStan/Node quando questi strumenti sono installati.

Registrare perché non era disponibile, installare la dipendenza mancante o eseguirla nell'ambiente CI/staging corretto prima del rilascio.

Controlli dei prodotti

1. Autenticazione e ruoli

Iscriviti come ogni ruolo previsto; verifica pagine/azioni consentite e negate.

2. Widget e monitoraggio

Caricare un sito reale in un browser privato; verificare traffico di beacon, Live Feed, visitatori e record di sessione.

3. Chat e AI

Fai domande rappresentative; verifica la conoscenza di base, sicurezza, escalation e storia dell'IA.

4. Biglietti

Creare, assegnare, rispondere, escalare, chiudere e riaprire attraverso ogni percorso di assunzione abilitato.

5. Email

Prova la consegna in uscita e ogni casella di posta in entrata configurata o percorso webhook.

6. CRM e analisi

Creare un contatto controllato/deal/conversione e verificare dashboard, imbuti, punteggio e report.

7. Connettori

Eseguire test di connessione, una lettura, un sicuro interruttore di scrittura/asciuga e percorsi webhook / inpolling per ogni connettore abilitato.

8. API e webhooks

Verificare gli ambiti ristretti, i limiti di velocità, le retries idempotent, le firme e la gestione duplicata.

9. cron

Eseguire il programmatore di prodotti unificato e confermare tutti i battiti cardiaci richiesti in Cron Setup / Diagnostics.

10. Sicurezza

Verificare i controlli 2FA, CSRF/sessione, le voci di audit, la revoca chiave e l'isolamento dello spazio di lavoro.

11. Backup e ripristino

Ripristinare un backup corrente in un ambiente di prova separato e verificare i dati e la configurazione.

12. Osservabilità e rollback

Confermare i registri/le avvisi, conservare gli ID delle richieste e dimostrare la procedura di rollback.

⚠️
Distribuisci solo dopo ogni cancello richiesto e viaggio business-critical ha prove attuali per il rilascio esatto e l'ambiente.
Sviluppatore

Web Spingere su siti di terze parti

Notifiche di spinta del browser (compreso OpsIQ Push Campaigns) bisogno di un operatore di servizio servito dal SAME ORIGIN come la pagina.OpsIQ widget carichi dal tuo OpsIQ distribuzione, quindi un sito di terze parti non può registrare OpsIQ Ospitare un piccolo file sul proprio dominio del sito per abilitare la spinta lì. Le campagne offrono attraverso i metodi supportati BOTH.

Come funziona
Web pushUna notifica push stile OS sopra due carte di metodo di consegna: VAPID integrato e Pusher Beams.Il tuo negozioYour cart is waiting · 10% off todayOraCostruito (VAPID)Nessuna terza parteHost uno fileFasci di spintaUsa il tuo accountOrganizzare il lavoro
Web push

Perché questo è necessario

I browser permettono solo a una pagina di registrare un operatore di servizio dalla propria origine. Il widget carica cross-origin dal vostro OpsIQ distribuzione, in modo che non può installare il push worker su un sito del cliente, fino a quando si ospita il lavoratore sull'origine di quel sito, il widget salta silenziosamente spinta (nessun errore, nessun abbonamento).OpsIQ Spingere campagne pubblicare attraverso entrambi.

Opzione A · Spinta Web self-hosted (VAPID, nessun terzo)

1. Scarica il lavoratore dal tuo OpsIQ dispiegamento: https://YOUR-OPSIQ/opsiq/opsiq-push-sw.js

2. Caricalo sul tuo root del web così è raggiungibile a https://yoursite.com/opsiq-push-sw.js. Il widget auto-rileva questo percorso sulla propria origine della pagina e la registra, non è necessario alcun cambiamento di snippet (utilizza un campo stretto, quindi non sostituisce mai un lavoratore di servizio che hai già eseguito.)

Opzionale: se si deve ospitarlo in un percorso non standard, puntare il widget ad esso prima di il cecchino. È accettato solo quando lo stesso-origine:

Opzionale · solo se il file non è alla radice del web
<script>window.OpsIQ=window.OpsIQ||{};window.OpsIQ.pushSwUrl="/custom/opsiq-push-sw.js";</script>

3. In OpsIQ, generare chiavi VAPID (Impostazioni → Client Chat AI → Advanced → Web Push). Il widget chiede ai visitatori il permesso di notifica e li sottoscrive.

Dietro un CDN/Cloudflare Si assicuri /opsiq-push-sw.js restituisce HTTP 200 (purare la cache se era 404 prima di caricare; una cache 404 blocco di registrazione).

Opzione B · Fasci di spinta (fornitore gestito)

1. Nelle impostazioni OpsIQ impostate il provider di spinta a Fasci di spinta e entrare nelle tue dita ID di impresa e Chiave segreta.

2. Host il servizio di Beams sulla radice del sito come /service-worker.js. Copia https://YOUR-OPSIQ/opsiq/pusher-beams-service-worker.js, o unire questa linea nel vostro lavoratore root esistente:

Lavoratore di fami, ospite https://yoursite.com/service-worker.js
importScripts("https://js.pusher.com/beams/service-worker.js");

3. Il widget carica automaticamente i Beams SDK e abbona ogni visitatore all'interesse per-site opsiq-site-<your-site-key>Non c'era bisogno di altri cablaggi.

Come le campagne offrono

Le campagne di spinta pubblicano attraverso both i visitatori del VAPID, che ospitano autonomamente, ottengono il Web Push crittografato e i visitatori iscritti tramite Pusher Beams pubblicano le Beam. Ogni visitatore viene raggiunto attraverso qualsiasi cosa essi abbonassero, in modo da poter eseguire VAPid di origine stessa su alcuni siti e Beam di origine trasversale sugli altri.

HTTPS è necessario per i dipendenti di servizio e Web Push (localhost è esente da test), la casella di posta elettronica di chat di amministrazione utilizza già lo stesso meccanismo di interesse Beams per gli avvisi dell'operatore.

Operazioni

Risoluzione dei problemi

Problemi comuni e come risolverli.

Generale

Pagina in bianco+

Cause: vecchio PHP (need 8.4+), estensione mancante, connessione DB non riuscita, autorizzazioni di file errate.

Dashboard mostra zero+

Controllare: widget installato? Cron in esecuzione? Data range corretto? IP escluso?

AI

AI non risponde+

Controllo: fornitore configurato? API chiave valida (uso connessione Test)? Budget esaurito? Workspace AI configurazione corretta?

AI dà risposte sbagliate+

Controllare: la base di conoscenza fino ad oggi? Prompt chiaro? Connettore ricerche che restituiscono i dati corretti?

L'intelligenza è lenta+

Dipende da: provider API _, dimensione del contesto (grande KB = più gettoni = più lento), latenza della rete.

Monitoraggio

Widget mancante+

Controllare: script in fonte di pagina? Errori JS nella console? Bloccaggio CSP?

Paese sconosciuto+

GeoIP non configurato. Utilizzare Cloudflare (automatico) o database MaxMind GeoLite2.

Biglietti

Email non creare biglietti+

Controllare: casella di posta collegata? Cron in esecuzione? Password dell'app cambiata? IMAP impostazioni corrette?

Autoriparazione non funzionante+

Controllo: abilitato? Dipartimento consentito? AI configurato? Cron in esecuzione? Umano ha risposto prima?

Connettori

Connessione non riuscita+

Controllare: le credenziali corrette? API accessibile dal server? Base URL Giusto?

Collegati ma non dati+

Check: API key scopes? Webhook sync enabled? Cron running?

Prestazioni

Pagine lente+

Verifica: le prestazioni del database (SHOW PROCESSLIST), la memoria PHP (aumentare a 1GB), abilitare opcache, ridurre il periodo di conservazione.

Operazioni

Widget non registrazione visite

Utilizzare questo controllo concentrato quando il widget carica in modo errato o Live Feed rimane vuoto.

Quando widget non è la registrazione di visite, verificare la chiave del sito, caricare la pagina in un browser privato, controllare i pannelli di rete/Console del browser per le richieste di beacon o widget bloccati, rivedere Content-Security-Policy e blocchi pubblicitari, confermare che il sito è attivo in OpsIQ e diagnostica aperta.

Riferimento

Glossario

Definizioni per i termini utilizzati in tutto OpsIQ.

Azione

Qualcosa che l'IA può fare attraverso un connettore o la piattaforma.

Agente

Un membro del team con accesso limitato, o un agente dell'IA.

BYOK

Porta la tua chiave personale, fornisci il tuo AI API key.

Connettore

Un plugin che integra una piattaforma esterna con OpsIQ.

CSAT

Punteggio di soddisfazione del cliente.

Affare fatto

Un'opportunità di guadagno nel CRM.

Dipartimento

Una categoria di biglietti per il routing e il controllo degli accessi.

Escalation

Trasferire un biglietto a un dipartimento diverso o dall'intelligenza artificiale all'uomo.

Geop

Rilevamento della posizione dei visitatori dall'indirizzo IP.

Manifestazione

Trasferire una conversazione dall'intelligenza artificiale all'uomo.

Token di identità

Registrato token di identificazione di un visitatore del sito web.

Base di conoscenza

Articoli l'IA usa per rispondere a domande.

Piombo

Un visitatore che mostra intenti di acquisto.

Punteggio di piombo

0-100 numero che indica la probabilità di conversione.

Fase del ciclo di vita

Dove un cliente è: Piombo, Prospettiva, Cliente, A Rischio, Collocato.

AI Gestita

AI fornito come parte del vostro OpsIQ piano.

Pipeline

Consiglio di amministrazione visiva delle fasi di contratto.

RBAC

Controllo di accesso basato sul ruolo.

Sessione

Una serie di pagine viste all'interno di una finestra timeout.

Chiave del sito

Unico identificativo per un sito web tracciato.

SLA

Accordo di livello del servizio, tempi di risposta al bersaglio.

Token

Unità di testo AI. 4 caratteri = 1 Token.

Layer fiduciario

Sistema di sicurezza che controlla l'autonomia dell'AI.

Webhook

Callback HTTP per le notifiche degli eventi.

Widget

JavaScript codice inserito sul tuo sito web.

Spazio di lavoro

Un sito con il proprio monitoraggio, AI, connettori e team. Stesso come "sito".

Riferimento

Ottieni più aiuto

Se questa documentazione non risponde alla tua domanda:

Admination AI

Fare clic su "Ask OpsIQ" nell'amministratore. Ha accesso a questa documentazione e ai dati della piattaforma.

Biglietto di supporto

Includere: ciò che hai provato, quello che è successo, quello di cui ti aspettavi e qualsiasi messaggio di errore.

Email

Supporto e-mail con la chiave di licenza e descrizione del problema.

Consigli per richieste di supporto efficaci

Includi la pagina

Quale pagina di amministrazione (URL o nome).

Includere l'impostazione

Nome di impostazione esatto e valore corrente.

Includi l'errore

Messaggio di errore esatto con i codici.

Includere i passaggi

Quello che hai fatto, passo dopo passo.

Includere previsto vs effettivo

Cosa dovrebbe succedere contro quello che è successo.

💡
Più specifica la tua richiesta, più veloce è la risposta. "Non funziona" richiede un'indagine. "Clicking Save on AI Configuration dà codice di errore 502" riceve una risposta diretta.