OpsIQ dokumentace

Vybudovat, provozovat a rozšířit OpsIQ.

Toto je kompletní dokumentace pro OpsIQ. Nastavit produkt, spustit podporu, konfigurovat AI, spravovat CRM, nainstalovat widget, budovat konektory, volat REST API, přijímat webháky, balíčky na trh aplikace, a provozovat self-hosted nasazení.

Průvodce zákazníkemAdministrátorský průvodcePříručka pro vývojářeReferenční hodnota CRMPřipojení SDKREST APISelf- hostováno
Oblast působnosti

Oblast působnosti této příručky

Vše, co OpsIQ dělá, na jednom místě: jak funguje každá obrazovka, jak připojit své vlastní systémy, a jak stavět na něm. Začněte kdekoliv, sekce postupujte stejným pořadí jako admin sidebar.

Oblast působnosti
Mapa dokumentacePříručka je uspořádána kolem produktu OpsIQ podle stejného pořadí jako admin sidebar.Mapa dokumentaceProdukt OpsIQAUDIENCEProvozovateléBuildVývojářiRUNAdministrátořiŽIVÝ VÍDEJ PRACOVNÍHO SPACEPoužít OpsIQProjektory a pracovní toky produktůZahrnutoRozšiřte OpsIQKonektory, APIs a widgetZahrnutoOperujte OpsIQBezpečnost, cron a nasazeníZahrnutoOdkazSmlouvy o balíku, API a WebhookuZahrnuto1CHOOSE AUDIENCEProvozovatel nebo vývojář2FOLLOW THE UIOddíly zrcadlo OpsIQ3USE SOURCE TRUTHStav vychází z buildu
Příručka je uspořádána kolem produktu OpsIQ podle stejného pořadí jako admin sidebar.
Průvodce terénem Portal Studio

Použijte vyhrazenou příručku pro správce a vývojáře Portálové architektury, stránky, komponenty, náhled, Centrum nápovědy, identity, SCIM, regulované verze, rozšíření, migrace a certifikace.

Otevřít průvodce Portálem Studio

Co je tady?

Spusťte produkt

Každá obrazovka v admin: analytika, živý chat, lístky, CRM, znalostní základna, webové zpravodajství, propagace a zákaznický účet portál. Co každá stránka dělá, co čísla znamenají, a co dělat, když vypadají špatně.

Připojte své systémy

Webové stránky widget, e-mailové schránky, přijíždějící a odchozí webháky, a konektorová knihovna pro platformy, jako je Shopify, WooCommerce, WHMCS, Zendesk, Stripe, Slack a Gmail.

Vytvořit si vlastní

Konstrukční zařízení konektorů pro no-code konektory, Akce & Triggery, pokud byste raději nepoužívali konektory vůbec, a REST API s každou akcí, rozsah a chybový kód.

Proveďte to.

Role a oprávnění, bezpečnost, cron, diagnostika, zálohy, a jak hostované a self-hostitelské nasazení.

Kde začít

1
Pokud provozujete OpsIQ den ode dne

Přečtěte si části obrazovky v pořadí postranní. Každý se otevře s tím, co stránka je pro, takže můžete zastavit, jakmile máte to, co potřebujete.

2
Pokud ji podáte

Přidat Nastavení, Bezpečnost, Diagnostika, Cron a Výroba. To jsou sekce, které rozhodnou, zda vše ostatní funguje.

3
Pokud budujete integraci

Začněte u Connectors, pak na Connector Builder, pak REST API a webháky. Přečtěte si, že v pořádku a budete viděli všechny způsoby OpsIQ může mluvit s jiným systémem.

💡
Dvě věci změnit to, co vidíte. Povolení skrýt stránky vaše role nemůže otevřít, takže část zde popsaná může chybět z vašeho postranního panelu. Požádejte správce zkontrolovat vaši roli. A konektory nesou značku splatnosti výroby, Beta, Náhled nebo šablona; běžící konstrukce a její konektor manifest jsou autoritou, na které máte, ne tuto stránku.
Začněte tady.

Co OpsIQ dělá pro vaše podnikání

OpsIQ je kompletní AI- první obchodní operační platforma. Nahrazuje vaši analytiku, živý chat, helpdesk, CRM, SEO toolkit, integrační middleware, a vývojová platforma s jednotným admin, kde každý nástroj sdílí stejný kontext zákazníka. 8-12 samostatné produkty SaaS, nainstalujete OpsIQ jednou a ovládej všechno z jedné obrazovky.

Platforma
Jednotná platforma OpsIQCentrální mozek AI je napojen na živý chat, CRM, lístky, Site Intelligence, propagace a analytika.Live chat zdarmaPropagaceAI CRMInformace o stránkáchVstupenkyAnalytikaOpsIQAI MOZEK1ONE WORKSPACEKaždý nástroj v jednom admin2SHARED BRAINJeden kontext zákazníka3ANYWHERECloud nebo vlastní hosting
OpsIQ je jedna platforma s jedním sdíleným kontextem zákazníka, každý nástroj kanály, a je poháněn, stejný mozek AI.

Vše, co OpsIQ dělá · v detailu

Analýza webových stránek a informace o návštěvnících

Sledování návštěvníků v reálném čase

Každá stránka zatížení, klepněte na tlačítko, posun, a navigační událost je zachycena v reálném čase. Podívejte se, kdo je na vašich stránkách právě teď, jaké stránky jsou prohlížení, jak dlouho tráví, a odkud pocházejí, všechny bez třetích stran cookies.

Záznamy návštěv a sezení

Plné historie každého návštěvníka se zařízením, prohlížečem, operačním systémem, zemí, městem, referentem, parametry UTM, přistávací stránkou a rozlišením identity. Sessions group page views into travels, takže můžete vidět celou cestu návštěvník trvá.

Přehrávání relací

Přehrávání zachycených návštěv ve stylu času. Podívejte se přesně, co uživatelé dělali: pohyby myší, kliknutí, svitky, přechody stránek a vzájemné interakce. Použijte ji k diagnostice problémů UX, pochopení odklonu bodů a ověření konverzních toků.

Živé krmivo

Reálný-time proud návštěvnosti aktivity, jak se to stane. Viz zobrazení stránky, chat začíná, formuláře podání, a intent signály aktualizace každých pár sekund. Filtrovat podle země, zařízení, nebo referent zaměřit na konkrétní segmenty dopravy.

Horní stránky

Stránky seřazené podle návštěv, čas zapojení, rychlost odrazu, konverzí a podpůrná činnost. Identifikujte svůj vysoce výkonný obsah a stránky, které potřebují zlepšení.

Geointeligence

Rozložení země, města a regionu s mapami. Rozdělení zařízení a prohlížečů, analýza dopravních zdrojů, sledování vyhledávače a náhledy na pronikání na trh.

Záměrná trychtýř

Sledovat návštěvníky záměry signály (cenová stránka návštěvy, opakované návratnosti, dokumentace prohlížení vzory, a podporovat interakce) identifikovat návštěvníky, kteří jsou pravděpodobně koupit, churn, nebo potřebují pomoc.

Experimenty A / B

Spustit split testy na vašich webových stránkách přímo z OpsIQ. Vytvořit varianty, nastavit rozdělení provozu, definovat cíle konverze, a měřit statistický význam.

JavaScript sledování chyb

Zachyťte automaticky chyby klientů z vašich webových stránek na straně JavaScript. Viz chybové zprávy, stohové stopy, postižené prohlížeče, počty frekvencí a které stránky je spouštějí. Debug frontend problémy bez samostatného monitorování chyb.

Záznam událostí

Každá sledovaná událost (zobrazení stránek, vlastní akce, chat interakce, formuláře podání, nákupy) v vyhledávatelné, filterovatelný log s plnými metadaty.

Prodej a přeměny

Traťová objednávka, příjmy, náhrady, obnova předplatného a přisuzování převedení do dopravních zdrojů, kampaně a cesty návštěvníků. Příjmy dashboardy s obdobím srovnání a analýza trendů.

Vodíky

Vysoce-záměr návštěvníků identifikovaných vzory chování. Skóre vede na základě návštěv stránek, čas na místě, návrat frekvence, podpora interakcí, a vlastní signály. Krmivo vede přímo do potrubí CRM.

Zpravodajská služba na místě (SEO a analýza obsahu)

Plazy

Automatické plazení celé webové stránky objevit stránky, odhalit rozbité odkazy, najít chybějící meta tagy, zkontrolovat obrázek alt text, validovat kanonické URLs, a map struktury stránek. Plán leze spustit denně, týdně, nebo na vyžádání.

Technický audit SEO

Komplexní technická analýza: skóre rychlosti stránky, mobilní citlivost, funkce Core Web Vitals, status certifikátu SSL, přesměrování řetězců, duplikát detekce obsahu, analýza hloubky plazení a validace strukturovaných dat.

Obsah auditu

Hodnotit každou stránku pro kvalitu obsahu, počet slov, čitelnost skóre, klíčové slovo hustota, struktura hlavičky, vnitřní / vnější poměr link, a svěžest. Identifikovat tenký obsah, duplikát stránky, a obsah mezery.

Vyhledávání na bázi AI- napájeno

Semantické vyhledávání po celém obsahu webu. Zeptejte se na přirozený jazyk otázky o vašem obsahu a získat AI- syntetizované odpovědi s referencemi zdrojové stránky.

Sledování pořadí SERP

Sledujte pořadí vyhledávačů pro cílová klíčová slova v rámci Google a dalších motorů. Poloha dráhy se mění v průběhu času, porovnávají s konkurenty a uvidíte, které stránky jsou hodnoceny podle podmínek.

Výzkumy klíčových slov

Objevte klíčové možnosti založené na Vašem obsahu, analýze konkurentů a údajích o objemu vyhledávání. Získejte návrhy na nová témata obsahu, varianty dlouhotrvající stránky a cíle optimalizace obsahu.

Analýza backlingu

Sledujte svůj příchozí profil. Podívejte se, které stránky s vámi souvisejí, sledovat nové a ztracené odkazy, analyzovat kódování textové distribuce a identifikovat možnosti budování link- building.

Místní síť SEO

Pro podniky s fyzickými lokalitami: vizualizovat svou místní vyhledávání viditelnost přes geografické mřížky. Podívejte se, jak se vaše žebříčky liší podle umístění, vzdálenosti od vašeho podnikání, a vyhledávací záměr.

Google Business Profile Synchronizace

Připojte svůj profil Google Business k OpsIQ. Synchronizace recenze, příspěvky, Q & A, fotografie, a obchodní informace. Správa vašeho seznamu GBP zevnitř OpsIQ. Reagovat na recenze, publikovat příspěvky, a sledovat poznatky.

Plánované zprávy

Automatické SEO a analytické zprávy generované na vašem programu (denní, týdenní, měsíční). Zprávy zahrnují změny pořadí, dopravní trendy, technické problémy nalezené, a obsah výkon. White- label výstup k dispozici pro agentury.

Podpora na vzduchový pohon

Zákaznický AI chat

AI odpovědi na dotazy zákazníků na vašich webových stránkách 24/7 pomocí vaší znalostní základny, připojených platforem data (objednávky, účty, předplatné), a vlastní školení podněcuje. Podporuje více AI poskytovatelů: Claude (Anthropic), GPT- 4o (OpenAI), Gemini (Google), a Grok (xAI).

Admin AI asistent

AI copilot uvnitř vašeho admin panelu, který vám pomůže psát odpovědi na vstupenky, návrh zákaznické komunikace, analyzovat trendy podpory, vyhledat data zákazníků přes připojené platformy, a provádět akce prostřednictvím konektoru systému.

Uzemnění znalostí AI

AI je zakotvena ve vašich znalostních základních článcích, FAQ zápisy, dokumentace produktu a připojených platform dat. Nehalucinuje. To odpovídá z Vašich skutečných obchodních informací nebo vystupňuje, když nejisté.

Automatické předání lidem

Když AI nemůže vyřešit otázku, detekuje frustraci, nebo zákazník žádá člověka, automaticky předá do svého týmu s plným kontextem konverzace. Konfigurovatelný pokles / timeout auto- returt zpět na AI.

Výcvik AI

Napište samostatné instrukce pro uživatelsky orientované AI a admin- facing AI. Ovládací tón, hranice, eskalační pravidla, zakázaná témata a obchodní chování. Podporována konfigurace per- workspace.

Historie a audit AI

Každá konverzace AI je zaznamenána s úplnými detaily požadavku / odpovědi, token použití, sledování nákladů, poskytovatel používá, a verze modelu. Přezkum konverzace k identifikaci mezery v tréninku a zlepšení přesnosti AI.

Náhled AI

Automatická analýza AI konverzních vzorců. Viz společné otázky, míry rozlišení, frekvence předání, spokojenost zákazníků podle témat a oblasti, kde AI potřebuje lepší školení.

Per- workspace AI config

Každý připojený web / pracovní prostor může využít svého vlastního poskytovatele AI, model, teplotu, token rozpočet a školení podněty. SaaS společnost může používat Claude pro hlavní produkt a GPT-4o pro sekundární značku.

Managed AI a BYOK

Dva režimy AI: Managed AI (součástí vašeho plánu, ne API klávesy potřebné) nebo přinést svůj vlastní klíč (použijte svůj vlastní OpenAI/Anthropic/ Google / xAI API klíč pro plnou kontrolu nad výběrem modelu a náklady). Oba jsou first-class, každá funkce pracuje s oběma režimy.

Významné rozpočty a kontroly nákladů AI

Nastavit měsíční token rozpočty, per- konverzace omezení, a low - balance upozornění. Track výdaje na poskytovatele, na pracovní prostor, a na konverzaci. Zabraňte útěku náklady s tvrdými stropy.

Vstupenky a helpdesk

Původní systém vstupenek

Kompletní helpdesk s odděleními, priority (nízká / střední / vysoká / urgentní), statusy, SLA sledování, interní poznámky, odpovědi zákazníků, soubory příloh a závitové konverzace.

AI triage a auto- odpověď

AI automaticky triages příchozí vstupenky podle oddělení a priority. Povolit automatickou odpověď pro bezpečné oddělení. AI návrhy a pošle odpověď po konfigurovatelné zpoždění (výchozí: 2 minuty), takže lidé mohou zasáhnout jako první.

Požití e-mailem

Připojte poštovní schránku (Gmail, IMAP, nebo provider- specific) k automatickému vytvoření tipů z příchozích e-mailů. Odpovězte na oznámení tipu e-maily aktualizovat vlákno tipu.

Vložený portál vstupenek

Na vaše webové stránky je upraven portál tiketů, který má na mysli zákazníka. Zákazníci mohou zaslat vstupenky, zobrazit jejich historii, odpovědět na otevřené jízdenky a zkontrolovat stav, všechny označené podle vašeho návrhu.

Spojení vstupenek

Sloučit duplikát tipů do jednoho vlákna. Sloučené tikety ukazují [Sloučeno] na předmět řádku. Všechny historie konverzace je zachován v přeživších tipu.

Návrat na AI

Poté, co člověk převezme lístek, použijte "Návrat do AI", aby se AI obnovit automatickou odpověď na tento tiket. Užitečné, když je vyřešena lidská-požadované části, ale zákazník má následné otázky, které AI zvládne.

Inbox druhého pilota

Správa letenek AI- asistovaná z pohledu na inbox. Kopilot navrhuje odpovědi, shrnuje historii konverzace, doporučuje prioritní / oddělení úkoly, a může provádět akce na připojených platformách.

Podpora chatu a reálného času

Zapisovač chatu

Real- time zákaznický chat řízený z jednotné schránky. Viz všechny aktivní konverzace, identity zákazníka, historie konverzace a AI návrhy. Více agentů může spolupracovat na konverzaci.

Proaktivní pravidla chatu

Spouštěcí chat zprávy založené na chování návštěvníků: čas na stránce, konkrétní URL navštívený, posun hloubky, počet návštěv zpět, úmysl výstupu, nebo vlastní události. Příklad: zobrazí nápovědu po 60 sekundy na cenovou stránku.

Widget pro chat

Přizpůsobitelný chat widget vložen na vašich webových stránkách. Podporuje AI chat, živý agent chat, odeslání vstupenky, vyhledávání znalostí základnou a identity návštěvníka. Responsive, přístupné a brangable.

Průzkumy CSAT

Sbírejte hodnocení spokojenosti zákazníků po chatu a interakcích tipů. Designové průzkumy s vlastními dotazy, ratingové stupnice a následná opatření podněcují. Výsledky jsou výsledkem výsledků do týmového výkonu a AI náhledu.

Post- chat emailový průzkum

Po skončení chatu mohou návštěvníci se známým emailem obdržet jednu znakovou poštu s AI souhrnem toho, co bylo zpracováno, a jedním kliknutím na tlačítko "Bylo to snadné?" Ano / Ne. Jednou za vlákno, podepsané jednoúčelové odkazy, každý odeslat přihlášené, a výsledek přistane na stránce Feedback jako svůj vlastní signál vedle in- chat hvězdy.

Zpětná vazba na identifikační smyčku

Každá položka zpětné vazby, která nese osobu, jim ukazuje: jméno, e-mail, kliknutí - přes jejich plnou cestu zákazníka a CRM kontakt, a one-click Email nebo AI- návrh odpovědi uzemněné ve své vlastní historii.

Psaní AI

Samostatný asistent pro psaní AI pro sestavování e-mailových návrhů, odpovědí na jízdenky, oznámení a zákaznické komunikace. Používá svůj vlastní příkaz (ne chatu mozek) pro profesionální obchodní psaní.

AI- První CRM

Řídící centrum CRM

Jedna obrazovka zobrazující celý váš stav CRM: hodnota potrubí, rychlost obchodu, nadcházející úkoly, a- rizikové obchody, aktivity agenta a AI doporučení. RPM domovská stránka je váš denní výchozí bod.

Kontakty a společnosti

Správa zákaznických kontaktů s plnými profily: jméno, e-mail, telefon, společnost, tagy, životní cyklus jeviště, historie konverzace, historie vstupenek, historie nákupu a vlastní pole. Odkaz kontakty na společnosti pro B2B vztahy řízení.

Obchody a potrubní desky

Visual Kanban- styl deal board s přizpůsobitelnými etapami. Přetáhněte nabídky mezi stupni, nastavené hodnoty, přiřaďte vlastníkům, uzavírejte data a v každé fázi uvidíte hodnotu potrubí. Podporováno více potrubí.

Ujednání o AI

AI analyzuje každou dohodu a poskytuje koučování: rizikové signály (odešel klid, konkurent zmínil, rozpočtové obavy), nextbest- action doporučení, vyhrát pravděpodobnost, a navrhl následující-up načasování.

Předpověď a zprávy

Předpověď příjmů na základě údajů o potrubí, historické úzké rychlosti a rychlosti obchodu. Zprávy zahrnují plynovod po etapě, vlastníkem, zdrojem, přepočítacími koeficienty, průměrnou velikost transakce a délku prodejních cyklů.

Prospekční činidlo (SDR)

AI- poháněné vyhledávání, které identifikuje potenciální zákazníky z vašich návštěvních dat, olověných signálů a připojených platforem aktivity. Navrhuje oslovit cíle, návrhy počáteční zprávy a skóre kvality vedení.

Postupné sekvence

Automatizované multikrokové sekvence: e-mail, čekání, e-mailová odpověď, kontrola, eskalovat. Definujte sekvence pro nové tipy, pozastavené obchody, post- nákup check-iny, a re- angažovací kampaně.

Životní cyklus a zachování

Sledovat fáze životnosti zákazníků (olovo, výhled, zákazník, churned) s automatickými přechody. Retenční činidlo monitoruje signály a navrhuje zásahy.

Správce údajů

AI agent, který neustále čistí a obohacuje vaše data CRM: deduplikuje kontakty, vyplní chybějící pole, validates e-maily, standardizuje jména společností a vlajky zatuchlé záznamy.

Vybudovat CRM

Konfigurace CRM v přírodním jazyce: řekněte AI, jak vypadá váš prodejní proces a staví vaše potrubní fáze, vlastní pole, šablony obchodů a pravidla automatizace.

Zdravotní kontrola CRM

Automatický audit kvality Vašich údajů CRM: duplikát kontaktů, obchody bez dalších kroků, zastaralé potrubí, chybějící kontaktní informace a datový záznam úplnosti.

Důvěřujte vytáčení

Kontrola autonomie na úrovni tří úrovní pro každý agent CRM AI: Autopilot (AI působí nezávisle), Copilot (AL navrhuje, člověk schvaluje), a manuál (Al sleduje pouze). Nastavte číselník na činidlo, na akční typ a na hodnotu deal práh.

Čtyři AI agenti

CRM provozuje čtyři specializované AI agenty: Steward (kvalita dat), SDR (vyhledávání), Retention (Churn Prevention), a Analyst (hlášení a poznatky). Každý agent má své vlastní nastavení Trust Dial.

Konektory a integrace

Kontejnery vyrobené z předčiněné oceli

Kontejnery pro opakované použití Shopify, WooCommerce, BigCommerce, Magento 2, PrestaShop, OpenCart, osCommerce, WordPress, WHMCS, Zendesk, Stripe, Amazon SES, Postmark, Resend, SendGrid, Mailgun, Gmail, IMAP, Slack, a Google Business Profile. Každý konektor přináší platform- specific AI akce, znalosti a synchronizace dat.

Tvorba konektorů

Vybudovat vlastní konektory pro jakoukoli platformu, bez kódu, AI- asistované, nebo plný kód. Stavebnice podporuje REST a GraphQL APIs, OAuth autorizační kód proudění, webhook auto- registrace s Stripe a jednoduché signature schémata, pagination (ofset, strana, kurzor, a link- header), seznam / chyby transformace, multiakční kontext, a tržiště balení.

Oprávnění konektoru asistovaného vůči AIR

ConnectorBuilderai vám pomůže budovat konektory: popište, co chcete a navrhne akce, napíše handlers žádostí a mapuje odpovědi API. Zařizuje autentizaci, paginaci a automatickou manipulaci s chybami.

Průtok OAuth pro jakýkoliv konektor

Generická in- app OAuth autorizační proudění, které pracuje s jakýmkoli konektorem. Podpora PKCE, řízení stavu se systémem site@-@ scoped, automatická obnova token.OAuth parametry a OpsIQ zvládá průtok.

Schopné autobusy (ploché rozšíření)

Konektory nejen přidat platformu akce. Mohou napájet jádro funkcí "autobusy". Konektor prohlašuje schopnost (kalendář, obohacování, esign in CRM; local_listing, rank_data na místě zpravodajských služeb; web_analytics v analytikách; payment_provider v platbách; email_sync v poštovní schránce; video_meeting v komunikátorech) a provádí svou malou sadu metod; OpsIQ objeví ji prostřednictvím CapabilityRegistry a převede ji do UI, Zákazníka 360 časová osa, a AI akce. Několik konektorů může nabídnout stejné schopnosti bez uzamykání. Viz konektory /PLATFORM_CONNECTORS- Ano.

Předinstalovaný vs tržní úroveň

Konektory žijí v jedné ze dvou úrovní. Předinstalované konektory (konektory /) jsou aktivní z krabice, udržují se štíhlé pouze na bezklíčový odkaz a nejčastěji používaného poskytovatele na jednu funkci (např. Google Calendar, Gmail, Google Business Profile). Marketplace konektory (marketplace_connectors/) jsou objevitelné, ale inertní až do instalace, např. Microsoft 365 Kalendář, Outlook, DocuSign, Stripe, GA4, SerpApi, Zoom. Každý most na povrchu seznamu tržišť, takže UI a AI může spustit "nainstalovat z trhu" (notifify- to- install), když schopnost nemá připraveného poskytovatele, nikdy rozbité tlačítko.

Trh konektorů

Publikovat své konektory na OpsIQ na trhu. Kontejnery pro balení profile.json, knowledge.json, workflow_recipes.json, a podepsané archivy. Marketplace podporuje zdarma a placené konektory s multizdrojovým vyúčtování.

Podpis konektoru

Všechny konektory jsou kryptograficky podepsány pro ověření integrity. Signování je kontrolováno v době instalace. Pomocí nástroje resign_all_connectors se po aktualizaci znovu zaregistruje.

SmartLookup

Deklarativní fuzzy-matching systém pro akce konektoru. Definovat vyhledávací pravidla a OpsIQ Příklad: find_country("germ") přiřadí Německo k entitám platformy pomocí algoritmů fuzzyScore a smartRank. 88.9% důvěra.

Akční smlouvy

Generální tajemník OpsIQ API publikuje všechny registrované JSON operace jako objevitelné pojmenované akce. Použijte meta.actions pro živé celkové a přesné smlouvy na stroji; konektorové balíčky deklarují své vlastní prodejní akce prostřednictvím jednotné ActionExecutionExekutor.

Recepty pro konektory

Představené pracovní postupy, které kombinují více konektorových akcí do běžných pracovních toků podnikání. Příklad: "Když přijde nová objednávka na Shopify, vytvořit tiket, aktualizovat CRM, a poslat oznámení Slack".

Znalostní synchronizace

Konektory prohlašují znalostní témata, která se synchronizují s AI znalostní základnou. Návody pro nástavce, setup a kroky k řešení problémů jsou automaticky dostupné pro AI bez manuálního vstupu do znalostí.

Vývojářská platforma

REST API

Jméno JSON API zahrnuje každého registrovaného správce JSON provoz sAPI-key autentizace, izolace pracovního prostoru, skoky, omezení rychlosti, idempotent píše, OpenAPI, a generované Postman kolekce.

Webhooky

Odchozí webové háky pro všechny významné události: objednávky, faktury, předplatné, lístky, chaty, tipy, uživatelské registrace a opuštění košíku. Async dodávka přes frontu pracovních míst, exponenciální zpětná retry, SSRF ochrana, a auto-zakázat po 15 po sobě jdoucích selhání.

Podpis pomocí Webhooku

Každý odchozí webhook je podepsán HMAC-SHA256. Ověřte podpisy na vašem přijímacím konci, aby se zajistila pravost webháku. Stabilní event_id pro idempotentní zpracování.

Widget SDK

JavaScript SDK pro sledování widget s rozlišením identity, vlastní sledování událostí, programový chat ovládání, a page- specifické konfigurace. Instalovat recepty pro React, Vue, Next.js, WordPress, Shopify, a statický HTML.

Moduly a SDK

Serverside SDK a pluginy pro společné rámce. WordPress plugin, WHMCS modul a obecné integrační knihovny PHP / Node.js.

Události API

Vlastní události můžete z backendu odesílat do OpsIQ: nákupy, registrace, využití funkcí, chyby nebo jakékoli obchodní ukázky. Události se zobrazují na časové ose návštěvníka a jsou zařazovány do analytických dat a kontextu AI.

Kuchařská kuchařka Triggerů

Vytvořte automatické pracovní toky spuštěné událostmi: nový tip, chat začal, návštěvník identifikován, deal stage změnil, nebo na zakázku událost. Triggers provést konektory akce, odeslat webové háky, aktualizovat záznamy, nebo informovat svůj tým.

API stavitel

Vizuální API a webhook stavitel uvnitř admin. Nastavit koncové body, testovací požadavky, zkontrolovat odpovědi, a debug integrace bez odchodu OpsIQ.

Tým a správa

Kontrola přístupu na základě Rolexů

Tři role: Vlastník (plný přístup, fakturace, nebezpečné zóny), Full Admin (všechny operace kromě účtování a nebezpečného pásma), a Agent (pouze přiřazené oddělení, žádný přístup k nastavení). Všechny citlivé stránky jsou pevně vedeny rolí.

Přístrojová deska výkonnosti týmu

Vlastník a Full Administration-pouze palubní deska zobrazující časy rozlišení, distribuce pracovní zátěže, rukojeť hloubka, rozdělení kanálů, analýza trendů, SLA compliance, CSAT podle agenta, znovu otevřené sazby, tým rollups, a nejrušnější hodiny. Aktualizováno v reálném čase.

Administrátorská přítomnost a online sledování

Real- time who-is- online widget in the admin navigation.60- druhé ping, 300-druhé prodloužení, auto- prune po 120 dny). Podívejte se, kteří administrátoři jsou v současné době aktivní a na kterých stránkách.

Nastavení pracovní plochy

Každý připojený web (pracovní prostor) může mít vlastní konfiguraci AI, nastavení konektoru, oddělení tipu, značky a provozní pravidla. Globální defaultní kaskáda do pracovních prostorů, které je nepřeruší.

Správa vícestavových lokalit

Správa více webových stránek z jednoho OpsIQ admin. Každý web má svůj vlastní sledovací snippet, data návštěvníků, a konfigurace. Přepínejte mezi weby z navigaci admin

Systém e-mailové šablony

Registry- řízené e-mailové šablony pro všechny automatizované komunikace: oznámení tipu, přepisy chatu, uvítací e-maily, resety hesel a systémová upozornění. HTML šablony s živým náhledem, variabilní čipy ({{customer_name}}, {{ticket_id}}), a globální řízení rozložení.

Dovoz a vývoz

Importovat kontakty, vstupenky, a znalosti články z CSV/JSON. Exportovat data návštěvníků, analytické zprávy a CRM záznamy. Přenosnost dat pro migraci mezi systémy.

Bezpečnost, dodržování předpisů a operace

Podniky SSO

OIDC (OpenID Connect) single sign- on s plným runtime: objev, autorizace, call back, ověření podpisu JWKS, userinfo, domain allow- list, JIT supporting, a status guards. SAML podpora konfigurace.

GDPR a dodržování údajů

Stavební- in DSAR (žádost o přístup k datovému subjektu) manipulace: export a smazání dat zákazníků ve všech systémech. Kontact- level data vymazávání krytí sessions, vstupenky, chaty, CRM záznamy, a e-mailové protokoly. Souhlas řízení a retence politiky.

IP blokování a ochrana proti bruta- force

Specifický blok IPs nebo se pohybuje od přístupu na vaše stránky nebo admin. Automatické výluka po konfigurovatelných neúspěšných přihlašovacích pokusů. Selhání přihlášení log s IP, časové razítko, a uživatelský agent.

HSTS a bezpečnostní záhlaví

HTTP Strict Transport Security, Permissions-Policy headders, a zabezpečené nastavení cookie. Self- hostované depogace mohou přidat CSP hlavičky přes konfiguraci serveru.

Vytvrzování odchozích webháků

SSRF zabezpečení blokuje webháky na soukromá / metadata IP rozsah. Async dodávka zabraňuje pomalé koncové body od blokování vaší aplikace. Auto- zakázat po 15 po sobě jdoucí selhání zabraňují vzniku odpadu ze zdrojů na slepých koncích.

Izolace pracovního prostoru

Přísná izolace dat mezi pracovními prostory. Návštěvníci, vstupenky, chaty, CRM záznamy a AI konverzace jsou prozkoumány do jejich pracovního prostoru. Kros- workspace data úniky jsou zabráněny na dotaz vrstvy.

Řízení cyklu účtování

Podpora měsíčních, čtvrtletních, poloročních, ročních, dvouletých a celoživotních výkazních cyklů. Normalizace měny pro víceměnné brány. Převod FX na příjem plateb pro přesné vykazování příjmů.

Cron a plánovaná automatizace

Stavební- in cron systém pro plánované úkoly: generování zpráv, čištění dat, obnovování předplatného, aktualizace AI školení, konektorové syncs a retry webhooku. Zdravotní diagnostika s varovnými indikátory.

Zásady uchovávání údajů

Nastavit, jak dlouho jsou uchovávány návštěvní sezení, přepisy chatu, historie AI konverzace a záznamy událostí. Automatické čištění starých dat pro správu úložiště a dodržování retenčních zásad.

Diagnostika a zdraví

Systém zdraví palubní deska zobrazující cron status, připojení databáze, AI poskytovatele stavu, konektor zdraví, přenosová rychlost webhook a použití úložiště. Upozornění pro problémy konfigurace a výkonnostní nedostatky.

Pro koho je OpsIQ

Obchod s elektronickými technologiemi

Zásoby

Sledovat každého návštěvníka od přistání k nákupu. Nechte AI odpovědět "Kde je moje objednávka?" pomocí živé Shopify/WooCommerce/ BigCommerce data. Správa podpůrných vstupenek s AI automatickou odpovědí. Spustit deal ropovod pro velkoobchodní a B2B vede. Atribut příjmy na dopravní zdroje a kampaně. Monitor opuštění vozíku s obnovením pracovních toků.

SaaS a softwarové společnosti

SaaS

Monitor zkušební signups a funkce přijetí s relace přehrávání. Track, které dokumentační stránky převést. Automatizovat podporu s AI uzemněné ve vašem API Dokumenty. Správa předplatného a expanze obchodů v CRM. Připojte svou platformu fakturace (Stripe, WHMCS) pro real-time MRR sledování. Použijte CRM životního cyklu agent odhalit a zabránit churn.

Agentury a nezávislí pracovníci

Agentura

Nabídněte klientům analýzu a podporu portálů pro bílé štítky. Track vede přes více klientských stránek z jednoho adminu. Pomocí potrubí CRM pro správu perspektiv a projektových vedení. Vytvořte vlastní konektory pro klientské platformy pomocí Connector Builder. Generovat značkové SEO zprávy s Site Intelligence. Resell Marketing konektory jako ceníku-add služby.

Hosting a infrastruktura

Hosting

Hluboký WHMCS integrace s 80+ AI akce pro vyhledávání objednávek, řízení služeb, DNS, a zálohování. Automaticky-odpověď na běžné hostingové otázky pomocí znalostí základních článků. Track server status stránka zapojení. Správa technické podpory vstupenky s AI triage. Použijte fakturační cyklus žebříčku pro měsíční přes celoživotní hosting plány.

Podpůrné podniky

Podpora

Deflect 40-70% Zbavte se opakujících se dotazů pomocí chatu s umělou inteligencí založeného na vaší znalostní bázi. Směrujte tikety správnému oddělení pomocí třídění pomocí umělé inteligence. Sledujte výkon týmu pomocí časů řešení, souladu se smlouvami SLA a CSAT podle agenta.

Marketingové a SEO týmy

Uvádění na trh

Full Site Intelligence suite: plazy, technické SEO audity, analýza obsahu, SERP sledování pořadí, klíčová slova výzkum, sledování backlink a místní SEO mřížky. Google Business Profile management. Naplánované zprávy o bílé značce pro klienty. A / B testování zabudované do sledovacího widget. Kampaň přiřazení přes všechny kanály.

Skládací a malé týmy

Startupy

Začněte jen sledovat a chatovat, zdarma přidat. Pak přidejte tipy, když dostanete podporu hlasitosti. Zapněte CRM, když začnete prodávat. Připojte platformy, jak je adoptujete. OpsIQ šupiny od jednoho člověka, který dělá všechno až po 50-osobní operační tým s RBAC, oddělení, a peragent sledování výkonu.

Podniky a multi- značka

Podnik

Podniky SSO s OIDC pro centralizovanou autentizaci. Multi- workspace izolation for separate brands or divisions. Per- working AI konfigurace s různými poskytovateli a modely. Vlastní vývoj konektoru s distribucí na trhu. Audit trasy, GDPR nástroje pro zajištění souladu a politiky uchovávání údajů.

Co nahrazuje OpsIQ

Google Analytics + Hotjar + Přípustné

Kompletní webové stránky analytika s návštěvníkem sledování, relace přehrávání, žebříčku stránek, geo inteligence, záměry nálevky, konverze přiřazení, události, A / B experimenty, a JS chybové sledování, všechny privacy-friendly, vše v jedné platformě.

Intercom + Drift + Tidio

AI- poháněný zákaznický chat s uzemněním znalostí, multi@-@ poskytovatel AI podpora, autohandoff na lidi, proaktivní chat pravidla, historie konverzace, CSAT průzkumy, a vytvoření vstupenek z chatu.

Zendesk + Freshdesk a pomocný skautský

Původní systém vstupenek s odděleními, priority, SLA, AI triage, automatická odpověď s konfigurovatelným zpožděním, e-mailové požití, vstupenky vkládané, sloučení jízdenky, inbox copilot, a vrátit se do AI schopnosti.

HubSpot + Pipedrive + Salesforce

AI- první CRM se čtyřmi specializovanými agenty AI (správce, SDR, Retention, Analyst), Trust Dial autonomie řízení, potrubí deska, deal koučování, prognózy, sekvence, životní cyklus řízení, a přírodní jazyk CRM konfigurace.

Ahefs + SEMrush + Moz

Zpravodajská služba se systémem automatických plazit, technické SEO audity, analýza obsahu, hledání AI, sledování řadových SERP, výzkum klíčových slov, analýzy backlink, lokální SEO mřížky a pravidelné zprávy o bílé značce.

Zapier + Make + vlastní middleware

Konektor SDK s 25+ představené konektory, Connector Builder (no-code / AI-assisted / full- code), OAuth flow, webhook auto- registrace, velký katalog konektorových definic akce, které se stanou spustitelné pouze tehdy, když je příslušný konektor nainstalován, povolen, konfigurován a validován, SmartLookup, tržiště, a podepsané balíčky.

Správce profilu Google Business

Full GBP konektor: Review management, post publishing, Q & A management. Uploadování fotografií, synchronizace obchodních informací, sledování náhledů a AI- poháněné recenze, vše zevnitř OpsIQ.

Samostatné nástroje pro šablonu e-mailu

Registry-řízené e-mailové šablony s vizuálním editorem, živý náhled, proměnné čipy, globální řízení rozložení a per- event přizpůsobení pro všechny automatizované komunikace.

Dashboardy pro správu týmu

Stavební- v týmovém výkonu: doba rozlišení, pracovní zátěž, SLA compliance, CSAT agent, znovuotevření sazeb, nejrušnější hodiny, real-time sledování přítomnosti a per- oddělení členění.

Nástroje pro přizpůsobení se GDPR

Původní DSAR manipulace, vymazání dat ve všech systémech, řízení souhlasu, retenční politiky a auditní cesty, zabudované do platformy, není přišroubován.

Dvě vydání

Zařazování hostitelů

OpsIQ běží na řízenou infrastrukturu. Provoz produktů je stejný; infrastruktura, aktualizace a zálohy jsou zpracovávány operátorem hosting. Tato příručka dokumentuje OpsIQ runtime spíše než marketing nebo obchodní účty toky.

Modul Self- hostovaný

Instalovat OpsIQ na vašem vlastním serveru pro plnou kontrolu nad daty, značkováním, aktualizacemi a integrací. Vyžaduje PHP 8.4+, MySQL 5.7+ nebo MariaDB 10.3+, HTTPS a OpsIQ sjednocené cron. Podporuje WHMCS Integrace jako addon modul, plná suverenita dat.

Doporučené pořadí čtení

1
Rychlý start

Následujte ípa 30-minutové nastavení průvodce pro sledování, chat a základní AI pracuje na vašich webových stránkách.

2
Přístrojová deska a analytika

Přečtěte si, jak číst data návštěvníků, nastavit relaci přehrávání, identifikovat vodítka a pochopit dopravní vzory.

3
Zpravodajská služba na místě

Spustit první SEO plazení, zkontrolovat své technické zdraví, a nastavit SERP hodnocení sledování pro vaše cílové klíčová slova.

4
Vstupenky a podpora

Nastavit oddělení, nastavit automatickou odpověď s AI, připojit e-mailové požití, a trénovat vaše AI zvládnout běžné otázky.

5
CRM

Organizovat kontakty, budovat plynovod, konfigurovat AI agenty, nastavit úroveň Trust Dial, a nechat AI trénovat vaše nabídky.

6
Konektory a vývojové nástroje

Připojte svou platformu pro ecommerce / fakturaci, vytvořte vlastní konektory, nastavte webové háky a integrujte se prostřednictvím REST API.

💡
Nové OpsIQ? Začněte s průvodcem Quick Start níže. Můžete mít sledování a základní AI chat běží v rámci 30 Minuty.
Začněte tady.

Rychlý start v 30 minutách

Postupujte podle těchto kroků, aby se OpsIQ běží. Každý krok staví na předchozí. Do konce budete mít návštěvník sledování, AI chat a základní podporu vstupenek.

Nastavení
Rychlý start kontrolní seznamProvedení sestava seznam zobrazující widget instalaci, připojení platformu, AI trénink, tým pozvat a go- žít, s 60 procent progress bar.Začněte.setupNainstalujte widget OpsIQDOBAPřipojte platformu (WHMCS, Shopify...)DOBATrénujte svůj AI na vašem obsahuDOBAPozvěte svůj týmZkontrolujte a jděte živěNastavení pokroku3 z 5 · 60%1STEP 1Nainstalovat widget2STEP 2Připojte & vlak AI3STEP 3Pozvat & jít živě
U 30-minutová cesta: nainstalovat widget, připojit platformu, trénovat AI, pozvat tým, pak jít živě.

U 30-minutové nastavení

1
Aktivujte licenci

Zadejte licenční klíč do adminu OpsIQ. Přejděte na Nastavení, zadejte licenční klíček dodávaný pro tuto instalaci a klikněte na Aktivujte. Měli byste vidět zelený odznak "Aktivní".

2
Nastavit svou obchodní identitu

Přejděte na Nastavení a vyplňte své obchodní jméno, průmysl, časové pásmo, výchozí měna a hodiny podpory. Tyto informace používá AI při odpovídání na dotazy zákazníků a analytiky pro zprávy o čase.

3
Vyberte poskytovatele AI

Přejděte na AI konfiguraci a vyberte svého poskytovatele. Možnosti: Claude (Anthropic), GPT- 4o (OpenAI), Gemini Zadejte svůj seznam API klíč, pokud používáte vlastní klíč, nebo použít Managed AI, pokud je k dispozici ve vašem plánu. Klikněte na "Zkušební připojení" pro ověření.

4
Nainstalovat widget pro sledování

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
Připojte platformu

Jestliže jste užil (a) Shopify, WooCommerce, WHMCS, nebo jinou podporovanou platformu, přejděte do Connectors, najít svou platformou, zadejte pověření a klepněte na tlačítko Test Connection. To dává AI přístup k objednávkovým datům, zákaznickým profilům a podpoře kontextu.

6
Pozvěte svůj tým

Přejděte do týmu, klepněte na tlačítko Pozvat, zadejte jejich e-mail a roli (Majitel, Full Admin, nebo Agent). Agenti mohou přístup pouze oddělení, kterým je přiřadíte. Majitelé a Full administrativa vidět všechno.

Nejrychlejší možná cesta (5 minuty)

Krok 1: Nainstalovat widget

Kopírujte odstřižek z připojených stránek a vložte jej na své webové stránky. To vám umožní okamžitě sledovat.

Krok 2: Povolit AI

Přejděte na AI Konfigurace, vyberte poskytovatele, zadejte svůj klíč, a uložit. AI chat je nyní aktivní na vašich webových stránkách.

Hotovo.

Nyní máte návštěvníky sledování a AI chat. Můžete přidat vstupenky, CRM a konektory později.

Den 2: Ať je to užitečné

Přidat znalosti

Přejděte na znalostní základnu a přidat 5-10 články o vašich nejčastějších otázek. AI používá tyto odpovědi zákazníkům přesně.

Vytvořit oddělení

Přejděte na vstupenky a vytvořit alespoň 2 oddělení (např. "Sales" a "Support"). Přiřaďte členy týmu pro každého.

Napište svůj AI příkaz

Přejděte na AI školení a napsat zákaznický AI příkaz, který popisuje vaše podnikání, tón a eskalační pravidla.

Otestujte rozhovor

Otevřete své webové stránky v soukromém prohlížeči a chatovat s AI jako zákazník. Zkontrolujte, zda odpovědi jsou přesné a tón je správný.

Týden 1: Budovat své operace

Připojit email

Vytvořte si poštovní schránku (Gmail, IMAP, nebo konektor poskytovatele), takže zákaznické e-maily automaticky vytvářet tipy.

Nastavit automatickou odpověď

Povolit automatické zodpovězení jízdenky pro bezpečné oddělení. Nastavte 2-minutové zpoždění, aby lidé mohli zasáhnout jako první.

Analytika přezkumu

Zkontrolujte Dashboard denně. Podívejte se na počet návštěvníků, rychlost odrazu, horní stránky, a prodeje, pokud je spojení sledování.

Spusťte CRM

Otevřete AI CRM a nechte OpsIQ importovat kontakty z připojených platforem.

Měsíc 1: Optimalizace

Přezkum historie AI

Zkontrolujte AI Historie týdně. Hledejte špatné odpovědi, nezvěstné otázky a možnosti přidat znalosti.

Přidat proaktivní pravidla

Vytvořte pravidlo: pokud je návštěvník na stránce cen pro 60+ sekund, zobrazí chatovací zprávu, která se ptá, zda potřebuje pomoc.

Vybudovat konektor

Pokud používáte platformu, která nemá vestavěný konektor, použijte Connector Builder a vytvořte jej.

Nastavit webové háčky

Připojte OpsIQ k vašim vnitřním nástrojům pomocí odchozích webháků pro vstupenky, chat a prodejní akce.

Můžu přeskočit AI a prostě použít sledování?+

Ano. Poskytovatel umělé inteligence je volitelný. OpsIQ funguje jako čistá platforma pro analýzu a vyřizování požadavků bez umělých inteligencí. Umělou inteligenci můžete povolit později, až budete připraveni.

Můžu přeskočit konektory a přidat je později?+

Ano. Konektory obohatí AI o platform- specific data, ale OpsIQ funguje bez nich. Začněte se sledováním a chatem, pak připojte platformy, když je potřeba.

Co když ještě nemám webovky?+

Stále můžete použít OpsIQ pro vstupenky, CRM a týmovou spolupráci. Sledovací widget je volitelný. Přidejte jej, když vaše webové stránky jsou připraveny.

Jak mám vědět, jestli je widget nainstalován správně?+

Navštivte své webové stránky v soukromém / inkognito prohlížeči. OpsIQ Živé krmivo. Měli byste vidět svou návštěvu objeví v 15 Pokud ne, zkontrolujte: (1) je odstřihovač správně vyražený, (2) je klíč k webu správně, (3) jsou reklamní blokátory nebo hlavičky CSP blokují skript.

Začněte tady.

Kompletní mapa produktů

OpsIQ není jedna funkce. Jedná se o operátor admin, widget webové stránky, AI podpěrná vrstva, tiket / helpdesk systém, plný CRM se čtyřmi agenty AI, Site Intelligence suite, konektorová platforma s tržištěm, a vývojářský povrch. Zde je každý komponent, který obsahuje.

Admin

Přístrojová deska, živé krmivo, záznam návštěvníků, sezení, replay session, top stránky, geo inteligence, intent funnel, záznamy událostí, A / B experimenty, JS chybové sledování, prodej a konverze, vede, AI CRM (velící centrum, kontakty, společnosti, obchody, ropovod, koučování, předpověď, vyhledávání, sekvence, životní cyklus, data steward, Build my CRM, CRM config, CRm health, CRMName API), vstupenky, chat inbox, proaktivní pravidla, CSAT průzkumy, e-mailové návrhy, poštovní schránky, konfigurace AI, AI školení, Al historie, AL poznatky, znalostní základny, konektory, Connector Builder, tržiště, připojené stránky, týmové řízení, týmový výkon, nastavení, diagnostika a licence.

Povrchy orientované na zakázku

Widget sledování webových stránek (analytics maják + chat + vstupenka vložena + znalosti základní vyhledávání), klient AI chat, portál pro předkládání vstupenek, návštěvník Token manipulace, nahrávání souborů, CSAT průzkum widget a uživatelsky orientované centrum nápovědy.

AI- První CRM

Velící centrum, kontakty, společnosti, obchody, pipeline board s drag-and-drop, AI koučování (signály rizika, další nejlepší akce, pravděpodobnost výhry), prognóza tržeb, agent pro vyhledávání (SDR), automatizované následné sekvence, řízení životního cyklu a uchovávání dat, správce dat (dedup, obohacení, ověření), vytvořit CRM (nastavení přirozeného jazyka), konfiguraci CRM, kontrolu stavu CRM, Trust Dial (Autopilot / Copilot / Manuál na agenta), čtyři specializované agenty (Steward, SDR, Retention, Analyst) a CRM API s webhooky.

Sídlo zpravodajské služby

Automatizované plazy, technický SEO audit (rychlost, mobilní, hlavní web Vitals, SSL, přesměrování, strukturovaná data), audit obsahu (počet slov, čitelnost, hustota klíčových slov, struktura kurzu), AI- poháněné sémantické vyhledávání, SERP hodnocení sledování napříč motory, klíčová slova výzkum s možností bodování, analýzy a monitorování backlink, místní SEO mřížka vizualizace, Google Business Profil synchronizace (recenze, příspěvky, Q & A, fotografie, pohledy), plánované zprávy (denní / týdenní / měsíční), a white- label PDF výstupy pro agentury.

AI a automatizace

Zákazník AI chat (multiposkytovatel: Claude, GPT-4o, Gemini, Grok), admin AI asistent, AI znalosti uzemnění, autohandoff s konfigurovatelným revert, per- workspace AI konfigurace, řízený AI a BYOK režimy, token rozpočty a kontroly nákladů, AI historie auditní stopa, AL analýzy náhledů, vstupenky AI triage, jízdenka autoodpověď s zpožděním, psaní AI (samostatný čas), a admin inbox copilot.

Konektory a integrace

25+ předkonstruované konektory (Shopify, WooCommerce, BigCommerce, Magento2, PrestaShop, OpenCart, osCommerce, WordPress, WHMCS, Zendesk, Stripe, Amazon SES, Postmark, Resend, SendGrid, Mailgun, Gmail, IMAP, Slack, Google Business Profile), Connector Builder (no-code / AI-assisted / full- code), generický OAuth tok s PKCE, konektorové tržiště s placenou distribucí, podepisování a ověřování konektorů, SmartLookup fuzzy odpovídající, velký katalog HTTP definice akcí, jehož dostupnost závisí na instalaci konektoru, enablement, konfiguraci a validaci, synchronizaci znalostí a receptů workflow.

Vývojářská platforma

RESTAPI(návštěvníci, akce, vstupenky, kontakty, nastavení, konektory), OpenAPI spec,API správa klíčů, odchozí webháky (async, signed, resoured, SSRF- hlídané, automatická), UdálostiAPI pro vlastní požití události, widget SDKs rozlišením identity, spouští kuchařku, akční smlouvy, konektor SDK, balení na trhu, serverside SDK (PHP, Node.js), WordPress plugin a WHMCS modul.

Nastavení a provoz

Obchodní identita, konfigurace AI na pracovní prostor, nastavení sledování, zabezpečení (HSTS, Povolení-Policy, IP blokování, brute- force ochrana), RBAC (Vlastník / Full Admin / Agent), řízení a pozvánky týmu, výkon týmu palubní deska, admin sledování, e-mailový šablona systém (registračním-řízený, vizuální editor, variabilní čipy), projektant průzkumu, doménové znalosti, vstupné vložené konfigurace, branding, politika uchovávání dat, správa účtovacího cyklu (měsíční přes celý život), normalizace měny, import / export, diagnostika, cron automatizace, a nebezpečné zóny.

Bezpečnost a dodržování předpisů

Podniky SSO (OIDC s ověřením JWKS, zajištění JIT), SAML konfigurace, GDPR/DSAR manipulace (export a mazání ve všech systémech), vymazání dat na kontaktní osobu, řízení souhlasu, izolace pracovního prostoru (přísné monitorování query- layer), auditní stopy, neúspěšné sledování přihlášení, IP blokování, odchozí webhook SSRF zabezpečení, a politika uchovávání dat.

Provider bridge

Spravoval AI proxied through OpsIQ Poskytovatel URL, Volání poskytovatele zpravodajských služeb na webových stránkách, potvrzení licence, zdravotní zprávy, PDF vykreslování a export dat, všechny směrované přes nakonfigurovaný cílový parametr poskytovatele, nikoli přímý prodejce API telefonáty z vašeho serveru.

Každá admin stránka

Přístrojová deska

hlavní

Denní řídící centrum: přehled provozu, počet návštěvníků, shrnutí prodeje, hloubka fronty podpory, upozornění na aktivitu AI a rychlé akce.

Živé krmivo

Analytika

Real- time návštěvník stream: zobrazení stránky, chat začíná, formuláře podání, a intent signály aktualizace každých pár sekund s filtry země, zařízení, a reference.

Deník návštěv

Analytika

Kompletní záznamy návštěv: zařízení, prohlížeč, OS, země, město, referent, UTM params, přistávací stránka, identita, a plné historie zobrazení.

Zasedání

Analytika

Cesta - skupinový pohled: stránka průtok, čas na stránce, posuvná hloubka, cesta k převedení a výstupní stránka pro každou návštěvu zasedání.

Přehrávání relací

Analytika

Časové přehrávání zachycených událostí: pohyb myši, kliknutí, svitky, přechody stránky a formy interakce pro diagnózu UX.

Horní stránky

Analytika

Hodnocení výsledků stránky: návštěvy, čas zapojení, rychlost odrazu, konverze, podpora interakcí a směr trendu.

Geointeligence

Analytika

Geografické zprávy: členění země / města s mapami, distribucí zařízení, sdílením prohlížeče, zdroji dopravy a proniknutím na trh.

Záměrná trychtýř

Analytika

Behaviorální sledování záměru: cenové návštěvy, frekvence návratnosti, procházení doc, podpora interakcí a vlastní signály s pravděpodobností konverze.

Záznam událostí

Analytika

Vyhledatelné historie událostí: zobrazení stránek, vlastní události, chaty, nákupy, formuláře podání s plnou metadata a filtrování.

Experimenty A / B

Analytika

Rozdělení testování: vytvořit varianty, alokovat provoz, definovat cíle, měřit význam, a prohlásit vítěze, vše zevnitř OpsIQ.

Chyby JS

Analytika

Zachycení chyb: zprávy, stohové stopy, postižené prohlížeče, frekvence, ovlivněné stránky a sledování trendů.

Prodej

Prodej

Příjmy: objednávky, obnova, náhrady, přidělení podle zdroje, výkon kampaně, srovnání období a analýza trendů.

Vodíky

Prodej

Vedení: bodování, přiřazení zdrojů, CRM status, kontaktní údaje, behaviorální signály a routing potrubí.

AI CRM

CRM

Plné CRM: řídící centrum, kontakty, společnosti, obchody, potrubí, koučování, předpověď, vyhledávání, sekvence, životní cyklus, správce dat a zdraví.

Vstupenky

Podpora

Inbox podpory: oddělení, priority, sledování SLA, AI triage, automatická odpověď, interní poznámky, soubory příloh, sloučení a řízení stavu.

Zapisovač chatu

Podpora

Živé konverzace: AI a lidský chat, předání, spolupráce, historie konverzace, identity zákazníka, a CSAT kolekce.

Koncepty e-mailů

Podpora

Správa e-mailu: příchozí pošta k vstupním stránkám, složení odpovědí AI- asistované odpovědi, výběr šablon a konfigurace schránky.

Konfig AI

AI

Nastavení poskytovatele: vyberte Claude / GPT-4o /Gemini/ Grok, enter API klíčové nebo umožňují řízený AI, nastavit model, teplotu a symbolické rozpočty na pracovní prostor.

Výcvik AI

AI

Postupné povolování: podněty, eskalační pravidla, tóny, zakázaná témata a konfigurace hranic.

Historie AI

AI

Audit konverzace: úplné žádosti / protokoly odpovědí, používání tokenu, náklady na rozhovor, poskytovatel, verze modelu a výsledek řešení.

Náhled AI

AI

Analýza vzorců: společné otázky, míra rozlišení, četnost předání, spokojenost podle témat a identifikace mezery v výcviku.

Znalostní základ

AI

Obsah AI školení: články, FAQ položky, produktové dokumenty, konektorové znalosti a vlastní vstupy. Semantické a klíčové slovo hledání AI uzemnění.

Konektory

Integrace

Integrační hub: instalované konektory, zdravotní stav, akční inventář, akreditační řízení, prohlížeč trhu a Connector Builder.

Připojená místa

Nastavení

Správa stránek: sledování odstřihovač, klávesa stránky, konfigurace widget, nastavení domény a izolace pracovní plochy na per- site.

Tým

Nastavení

Správa uživatelů: pozvi členy, přiřaď role (Vlastník / Full Admin / Agent), nastavte přístup oddělení a spravujte oprávnění.

Výkonnost týmu

Nastavení

Operační metrika: doba rozlišení, pracovní zatížení, SLA compliance, CSAT agent, znovu otevřené sazby, nejrušnější hodiny a analýza trendů.

Nastavení

Nastavení

Konfigurace: obchodní identita, nastavení AI, sledování, zabezpečení, značení, retence, e-mailové šablony, fakturace, import / export, diagnostika a nebezpečná zóna.

Licence

Nastavení

Řízení plánu: stav licence, funkce plánu, měřidla použití, datum obnovení a možnosti upgrade / snížení.

Začněte tady.

Vedení na palubě

Při nastupování se nová instalace změní v pracovní prostor OpsIQ a může být ponechána a obnovena bez ztráty pokroku.

Produktová obrazovka
Na paluběNa palubě je zobrazeno každé nastavení oblasti, jeho současný stav a další akce k dokončení.Na paluběpracovní prostorPROGRESS60%COMPLETED6DalšíWidgetŽIVÝ VÍDEJ PRACOVNÍHO SPACELicencePotvrdit licenci produktuHotovo.Poskytovatel AIVybrat poskytovatele a testovací klíčHotovo.ZnačkaObchodní identita a tónHotovo.Internetová stránkaPřidat místo a nainstalovat widgetDalší1COMPLETE BASICSLicence, značka, AI2CONNECT DATAUmístění a konektor3VERIFY LAUNCHTým, e-mail, kontroly
Na palubě je zobrazeno každé nastavení oblasti, jeho současný stav a další akce k dokončení.

Doporučené pořadí

  1. Licence: Potvrďte platnost licence a potvrďte, že pracovní prostor je aktivní.
  2. Poskytovatel AI: vyberte poskytovatele / model, zadejte pověření a spusťte test připojení. AI lze přeskočit, pokud pracovní prostor bude zpočátku používat pouze analytiky a vstupenky.
  3. Obchodní identita: nastavte název, průmysl, popis, tón a podrobnosti značky pro zákazníky používané widgetem a AI.
  4. Konektor: umožní alespoň jednu vnější platformu, pokud OpsIQ potřebuje objednávky, zákazníky, vstupenky, e-mail nebo jiný kontext platformy.
  5. Umístění a widget: vytvořit místo / pracovní prostor, zkopírovat klíč stránky a ověřit soukromou návštěvu prohlížeče v Live Feed.
  6. Tým a směrování: pozvat administrátory / agenty, vytvořit oddělení, nastavit e-mailové směrování a potvrdit preference oznámení.
  7. Živé kontroly: testovací chat, vstupenka, synchronizace konektoru, cron, externí e-mail, webháky a bezpečnostní záhlaví.

Cesta ukládá dokončení na pracovní prostor. Návrat na Onboarding by měl ukázat dokončené kroky, spíše než vynutit restart.

Začněte tady.

Administrátorská navigace a oprávnění

Firemní sidebar OpsIQ je si vědom povolení. Tato mapa vysvětluje, kde každá operační oblast žije a proč stránka nemusí být pro každého správce viditelná.

Produktová obrazovka
OpsIQ navigaceSkupiny sidebar OpsIQ podle oblasti práce; jednotlivé odkazy se objevují pouze tehdy, když je může využít aktuální role.OpsIQ navigacepracovní prostorGROUPS8STRÁNKYPovoleníSEARCHK dispoziciŽIVÝ VÍDEJ PRACOVNÍHO SPACEPodporaVstupenky, e-mail, CSAT, znalostiOtevřítCRMKontakty, potrubí, obchody, vyhledáváníOtevřítAutomatizacePracovní toky, pravidla, cíleOtevřítBezpečnost a soukromíPřehled, audit, souhlas, blokyAdmin1PICK A GROUPSrovnat postranní lištu2CHECK ROLESkryté prostředky omezené3USE PAGE HELPOtevřít sekci odpovídající
Skupiny sidebar OpsIQ podle oblasti práce; jednotlivé odkazy se objevují pouze tehdy, když je může využít aktuální role.
Podpora

Vstupenky, týmová e-mailová platforma, CSAT, Pomocné centrum a chatbot proudí.

CRM

Denní prodejní plochy: CRM Home, Command Center, kontakty, potrubí, předpověď, životní cyklus, vyhledávání, segmenty, žebříček, schválení, data steward, růstové nástroje a tok aktivity.

Automatizace

Pracovní toky, pravidla životního cyklu a cíle přeměny.

Uvádění na trh

Inventure, proaktivní zprávy, oznámení, Promotion Studio, Survey Studio.

Analytika

Report povrchy první - Analytics Hub, AI vhled, prodej, zákazníci, vedení, nádobky, A / B testy, replay relace, vlastní palubní desky a plánované zprávy - se syrovým návštěvníkem, sezení, strana, geografie a události protokoly v sekci Raw Data.

Samostatné stránky

Zpravodajská služba, Team Performance a Zpětná vazba sedí mimo skupiny jako přímé vstupy.

Integrace

Konektory, akce a spouštěče, poštovní schránky, návrhy, nastavení e-mailu, příchozí koncové body, odchozí webháky a API klíče.

Bezpečnost a soukromí

Přehled bezpečnosti, soukromí a dodržování předpisů, souhlas se soubory cookie, auditní činnost, neúspěšné přihlášení, blokovanéIPsaJavaScriptchyby.

Nastavení

Základy pracovního prostoru (obecné, týmy, místa, jazyky), pak skládací podsekce: AI Brain (pokyny, konfigurace, hodnocení, historie), CRM Setup (stavitel, zakázková pole, olovo bodování, zdraví), Data & Health (diagnostika, export) a Getting Started (on-boarding, pomoc).

Stránky, které role nemůže otevřít, jsou skryty z postranního panelu. Stránky současný plán nezahrnuje zůstat viditelný s Aktualizovat označte a otevřete obrazovku pro upgrade in- app.

Přímé trasy jsou stále kontrolovány serverside. Ukrytí postranní linky není hranice bezpečnosti: každá chráněná akce musí projít povolením a kontrolou pracovního prostoru.

Analytika

Analytický uzel

Uzel Analytics přináší podporu, chat, AI, návštěvníka a agenta hlásícího se do jednoho data-filtrovaného pracovního prostoru s exportovatelnými výsledky.

Produktová obrazovka
Analytický uzelAnalytics Hub ukazuje datový rozsah, metrické karty a karty pro podporu, Chat, AI, Návštěvník a Agent výkon.Analytický uzelpracovní prostorKONTROLY184AI RESOLVE63%CSAT4.7ŽIVÝ VÍDEJ PRACOVNÍHO SPACEPodporaVytvořeno, uzavřeno, probíhá SLAZáložkaChatVýsledky a doba manipulace s AI / lidským výsledkemZáložkaAIDůvěra, zpětná vazba, použití tokenuZáložkaAgentObjem, rychlost a spokojenostZáložka1CHOOSE DATESPřednastaveno nebo na zakázku2CHANGE TABPodpora agentovi3EXPORTStáhnout CSV
Analytics Hub ukazuje datový rozsah, metrické karty a karty pro podporu, Chat, AI, Návštěvník a Agent výkon.

Filtry a ovládací prvky

  • Použít přednastavený nebo vlastní od / do rozsah, pak Refresh obnovit každou kartu a graf pro stejné období.
  • Export CSV vyváží aktivní analytický pohled spíše než snímek obrazovky.
  • Prohlížení pracovního prostoru je automatické; změna stránek mění základní datový soubor.

Co každá karta měří

  • Podpora: jízdenky vytvořené / uzavřené / neplánované, první odpověď, rozlišení, řešení prvního kontaktu, SLA a členění priority / oddělení / status.
  • Chat: začala sezení, AI rozlišení, eskalace, opuštění, čas na manipulaci, zprávy na sezení, a AI / člověk / vše CSAT.
  • AI: průměrná spolehlivost, nízká míra spolehlivosti, přesnost měření, zpětná vazba, odklon znalostí, používání token / cache a položky, které potřebují přezkoumání.
  • Návštěvník: trendy provozu a zapojení pro zvolené období.
  • Agent: opatření pro pracovní zatížení, rychlost, uzavření a spokojenost osob.

Použijte analytický hrnec pro cross-team recenzi; použijte vyhrazené stránky Návštěvníků, Vstupenky, CSAT, AI Historie a Team Performance, když potřebujete record- level šetření.

Analytika

Přístrojová deska

Dashboard je vaše denní řídící centrum. Zobrazuje provoz, prodej, podporu zatížení, AI aktivity a konverzní ukazatele v jednom pohledu. Otevřete ji každé ráno pochopit, co se stalo přes noc a co potřebuje pozornost dnes.

Přístrojová deska
Přehled palubní deskyPřehled obrazovky pod vedením OpsIQ Inteligence AI panel (s Daily stručný, Smart Alerts, Předpověď), KPI widget dlaždice a sedmidenní provoz widgetu, plus Reset řízení rozložení.Přehledpracovní prostorOPSIQ INTELIGENCEVyberte si analýzu a OpsIQ to píšeDenní stručnýChytrou výstrahuPředpověďObnovit rozloženíNávštěvy dnes2,481+12%PŘÍJMY$8. 2k+5%VOLNÉ KONTROLY143 SLADoprava · poslední 7 dny1AI-FIRSTZpravodajský panel OpsIQ2WIDGETSKPI dlaždice, které zařizujete3TYURSResetovat rozvržení kdykoliv
Skutečný Přehled obrazovky: OpsIQ Inteligence panel nahoru (vyberte analýzu a to píše) nad KPI widgets si uspořádat sami.

Vysvětlené karty s přístrojovou deskou

Živí návštěvníci

Počet lidí na vašich webových stránkách právě teď. To aktualizuje každý 15 sekund (konfigurovatelné). Návštěvník je "aktivní", pokud načte stránku v rámci aktivního prahu (přednastaveno: 90 sekund).

Jedineční návštěvníci

Kolik různých lidí navštívilo vaše webové stránky ve zvoleném datovém rozmezí. OpsIQ identifikuje návštěvníky kombinací otisků prstů prohlížeče, cookies a (pokud je k dispozici) ověřené identity.

Nové vs vrací

Noví návštěvníci se na vaše stránky podívají poprvé. Vrací se návštěvníci byli již dříve viděni. Vysoký poměr návratů znamená, že váš obsah lidi vrací zpět. Velmi nízký poměr návratu může znamenat, že si nezachováváte zájem.

Rychlost srážky

Procento návštěvníků, kteří odešli po prohlížení pouze jedné stránky. Odrazová rychlost nad 70% na přistávacích stránkách obvykle znamená, že stránka nesplňuje očekávání návštěvníka, špatný obsah, pomalé zatížení nebo špatné mobilní zkušenosti.

Průměrný čas na stránce

Jak dlouho návštěvníci tráví na každé stránce v průměru. Velmi krátké časy (pod 10 sekund) na stránkách obsahu naznačují, že obsah není aktivní. Velmi dlouhé časy na stránkách checkout může naznačovat zmatek.

Hrozby zablokovány

IPadresa, která OpsIQ identifikován jako potenciálně škodlivý na základě hodnocení hrozeb, hrubou sílu pokusy, nebo ruční bloky. Klikněte pro zobrazení blokované IPs seznam.

Prodej dnes / tento týden / tento měsíc

Příjmy z připojených prodejních zdrojů (Shopify, WooCommerce, Stripe, atd.). Pokud prodej ukáže nulu, zkontrolujte, zda je váš platformní konektor připojen a synchronizován.

Trendový graf

Liniový graf zobrazující počet návštěvníků v zvoleném datovém rozmezí. Hledejte vzory: dopravní špičky (kampaně, tiskové zprávy), dipy (víkendy, svátky) a trvalé trendy.

Hlavní zdroje

Tam, odkud pocházejí vaši návštěvníci: přímé, Google, sociální média, e-mailové kampaně, referration stránky. Použijte to pochopit, které marketingové kanály fungují.

Vrchní prohlížeče

Chrome, Safari, Firefox, Edge a další. Pokud prohlížeč má neobvykle vysokou rychlost odrazu, můžete mít CSS nebo JavaScript problém slučitelnosti.

Hodinová heatmap

Síť ukazující aktivitu návštěvníků v hodině dne a den týdne. Použijte to k rozhodnutí, kdy naplánovat podpůrné směny, kdy poslat oznámení, a kdy spustit povýšení.

Nedávné návštěvníky

Posledních pár návštěvníků se zemí, stránkou, zařízením a zdrojem. Užitečné pro rychlé kontroly během kampaně.

Použití filtru datového rozsahu

Klikněte na datum picker v pravém horním rohu přístrojové desky. Přednastavuje: Dnes, Včera, Poslední 7 dny, poslední 30 dny, Tento měsíc, Minulý měsíc, Vlastní rozsah. Všechny karty palubní desky a grafy aktualizovat při změně rozsahu. Datový rozsah je v nastaveném časovém pásmu (nastaven v Nastavení).

Opracované příklady

Vyšetření s mírou bounce

Scénář:
Tvoje rychlost skákání přeskočila 45% do 78% Co se stalo?
Co dělat:

Kontrola: (1) Změnila se konkrétní přistávací stránka? Přejděte na Top Pages a třídit podle rychlosti odrazu. (2) Poslal kampaň provoz na špatnou stránku? Zkontrolujte Top Zdroje pro nové reference. (3) Rozbila se stránka na mobilu? Zkontrolujte rozpis prohlížeče pro mobilní rychlost odrazu. (4) Je to robotická doprava? Zkontrolujte počitadlo hrozeb a detaily návštěvníků pro podezřelé vzory.

Na palubní desce není nikdo.

Scénář:
Přístrojová deska ukazuje 0 živé návštěvníky, i když vaše webové stránky je stále provoz.
Co dělat:

Kontrola: (1) Je nainstalován widget sledování? Podívejte se na svůj zdrojový kód webové stránky a vyhledejte OpsIQ Scénář.2) Je klíč k webu správný? Porovnejte klávesu data- site-ve skriptu s klíčem v připojených stránkách. (3) Slouží CDN nebo cache stalou stránku bez skriptu? Vymažte si svou CDN cache. (4) Je reklamní blokátor nebo hlavička CSP blokuje skript? Pro zablokované požadavky zkontrolujte konzoli prohlížeče.

Čtení hodinové heatmap

Scénář:
Vaše tepelná mapa ukazuje intenzivní aktivitu mezi 10:00 a 14:02 ve všední dny, ale o víkendech nic.
Co dělat:

Jedná se o dopravní model B2B. Vaši návštěvníci jsou pracovní profesionálové prohledávání během pracovní doby. Důsledky: (1) Naplánujte podpůrný personál pro pracovní dobu ve všední den. (2) Poslat e-mailové kampaně úterý-čtvrtek ráno. (3Víkendová údržba oken je bezpečná. (4) Zvažte nabídku živého chatu pouze v době špičky.

Dopravní špička z neznámého zdroje

Scénář:
Za hodinu uvidíte náhlý nárůst návštěvníků 500 od neznámého referenta.
Co dělat:

Přejděte do Návštěvníků a filtrovejte pomocí časového okna. Zkontrolujte: (1) Jsou to skuteční návštěvníci nebo roboti? Podívejte se na délku relace, stránky zobrazené a rozmanitost prohlížeče. (2Pokud je to skutečné, na jaké stránce přistávají? (3) Zkontrolujte, kdo je referrer URL. Někdo mohl mít spojení s vámi z Reddit, Hacker News, nebo populární blog. (4) Pokud je to bot provoz, zkontrolujte hrozby a zvážit blokování IP dosah.

Proč se můj návštěvník liší od Google Analytics?+

OpsIQ Počítá návštěvníky jinak. Používá snímání otisků prstů a cookies v prohlížeči, zatímco GA používá jiný model cookie. Filtrace bot, sazby reklamních blokátorů a příkaz k načítání skriptů může také způsobit rozdíly. 10-20% Rozdíly jsou normální.

Můžu dát palubní desku do jiného nástroje?+

Přístrojová deska je určena pro: OpsIQ admin. Pro externí reporting použijte REST API Vytáhnout data z analýzy a zobrazit je ve svém vlastním přístrojové desce nebo BI nástroji.

Co znamená "výhružky"?+

To se počítá. IP adresa, která OpsIQ má označený nebo blokován na základě hodnocení hrozeb, opakované neúspěšné loginy, nebo manuální bloky. Klikněte na pult vidět detaily a spravovat bloky.

Analytika

Deník návštěv

Návštěvnický deník zobrazuje každou návštěvu vašich sledovaných webových stránek. Každý řádek je jedna stránka zatížení od jednoho návštěvníka. Použijte ji pro zkoumání chování jednotlivých návštěvníků, najít provoz kampaně a diagnostikovat problémy s monitorováním.

Deník návštěv
Deník návštěvNávštěvnická tabulka s lištou filtru (datum, hledání IP/ email / město, zdroj, zařízení) a sloupce pro IP/ E-mail, umístění, zdroj, zařízení a čas, s označenou hrozbou řádku.Deník návštěvyoursite.com7 dnyHledat IP, e-mail, město...Zdroj ▾Zařízení ▾IP / EMAILMÍSTOZDROJZAŘÍZENÍKDYŽ[email protected]USA · New YorkgooglePlocha2m41.62.10.4Spojené království · LondýndirectMobilní6m[email protected]DE · BerlínUmm: reklamyMobilní14m203.0.113.9NG · LagosreferralPlochathreat1–25 z 3,402Sezení →1FILTERDatum · hledání · zdroj · zařízení2REAL COLUMNSIP/ email · umístění · zařízení · hrozba3DRILL INOtevřít celou relaci
Skutečný záznam návštěvníků: filtrujte podle data, vyhledávání a zařízení, pak si přečtěte každou návštěvu IP/ email, umístění, zdroj, zařízení a čas, hrozby označené červeně.

Co každý řádek ukazuje

IP adresa

Návštěva IP adresa. Anonymizované, pokud IP anonymizace je povolena v Nastavení. Klikněte pro zobrazení všech návštěv z tohoto IP.

Země a město

Detekované zIP adresa pomocí GeoIP dat. Vyžaduje databázi MaxMind GeoLite2 nebo Cloudflare geo hlavičky. Zobrazí "Unknown", pokud není GeoIP nakonfigurován.

Strana URL

Stránka, kterou návštěvník nahrál. Kliknutím se zobrazí celá URLDlouhý. URLs jsou zkráceny v zobrazení tabulky.

Referrer

Tam, odkud návštěvník přišel před přistáním na vašich stránkách. "Direct" znamená žádný referenr (záložky, zapsaný URLs, některé odkazy aplikací).

Zařízení a prohlížeč

Typ zařízení návštěvníka (desktop, mobile, tablet) a prohlížeč (Chrome, Safari, Firefox, atd.).

Datum a čas

Když byla stránka načtena, ve vašem nastaveném časovém pásmu.

Identifikace zákazníka

Pokud je návštěvník identifikován (pomocí znaku totožnosti nebo přihlášení), objeví se jeho jméno nebo e-mail. Jinak je uveden jako anonymní.

Filtry

Rozsah data

Filtr navštíví konkrétní časové období. Výchozí: poslední 7 dny.

Hledat

Hledat podle IP adresa, strana URL, referrer, country, nebo zákaznický e-mail.

Zdroj

Filtr podle zdroje dopravy: Přímý, Organický, Sociální, Referral, Placené, Email.

Zařízení

Filtrovat pomocí Desktop, Mobile nebo Tablet.

Pouze nové

Ukažte jen první návštěvníky, kteří ještě nikdy nebyli viděni.

Opracované příklady

Najděte návštěvníky z konkrétní kampaně

Scénář:
Spustili jste kampaň Google Ads s parametrem UTM utm_source=google&utm_medium=cpc&utn_campaign=summer-sale. Jak tyto návštěvníky najdete?
Co dělat:

V záznamu návštěvníků použijte vyhledávací pole a zadejte "summer- sale".URLs a strana URLs, takže parametry UTM budou odpovídat. Můžete také filtrovat pomocí Source = Placené zúžit dále.

Najít zákazníka, který nahlásil problém

Scénář:
Zákazník emailem řekl, "vaše stránka byla přerušena včera kolem 15: 00." Jak zjistíte jejich sezení?
Co dělat:

Hledat jejich e-mailovou adresu v záznamu návštěvníků. Pokud byly přihlášeny, jejich identita se objeví. Nastavte rozsah data na včerejšek. Podívejte se na návštěvy stránek Checkout kolem 3pm. Klikněte na jejich relaci vidět plný tok stránky a jakékoli JavaScript chyby.

Detekovat smyčku odpalovač nebo škrabač

Scénář:
Všimněte si... IP Adresa 500+ návštěvy za hodinu, všechny na stejné straně.
Co dělat:

Toto je pravděpodobně robot, škrabadlo, nebo rozbitý skript. Přejděte do záznamu Návštěvníků a vyhledejte tím IP Kontrola: (1Jsou všechny návštěvy na stejné stránce? (2Je uživatelský agent známý jako robot?3) Je doba trvání zasedání vždy 0 Pokud je potvrzen jako robot, jděte do ochranky a zablokujte IP.

Návštěvníci log vs Sessions vs Živé krmivo

Deník návštěv

Syrové zatížení stránky. Jeden řádek na stránku pohledu. Nejlepší pro: zkoumání konkrétních stránek, hledání provozu ze specifických zdrojů, diagnostika problémů sledování.

Zasedání

Skupiny stránky zobrazení do cest. Jeden řádek za návštěvu relace. Nejlepší pro: porozumění toku uživatelů, měření trvání sezení, identifikace konverzních cest.

Živé krmivo

Real- time aktivity. Zobrazuje návštěvníky v současné době na vašich stránkách. Nejlepší pro: sledování kampaně v průběhu, pozorování high-intent návštěvníků, sledování možností podpory.

Proč vidím v deníku vlastní návštěvy?+

OpsIQ sledovat všechny návštěvy ve výchozím nastavení. Chcete-li vyloučit svůj vlastní provoz, přidat IPadresa vyloučeného IPs seznam v Nastavení > Sledování.

Proč návštěvník ukazuje "Neznámá" země?+

GeoIP vyhledávání vyžaduje buď Cloudflare geo záhlaví (automatické, pokud se používá Cloudflare) nebo soubor databáze MaxMind GeoLite2. Zkontrolujte Nastavení > GeoIP Path, aby byl soubor databáze čitelný a dostupný.

Jak dlouho jsou uchovávána data o návštěvách?+

Data návštěvníků jsou uchovávána pro retenční období nakonfigurované v Nastavení (výchozí: 90 dny). Poté jsou staré záznamy automaticky vyčištěny úlohou cron retence.

Analytika

Zasedání

Sessions skupina více zobrazení stránek od stejné osoby do jedné cesty. Zatímco záznam návštěvníků ukazuje jednotlivé stránky zatížení, Session vám ukázat, jak lidé pohybovat přes vaše webové stránky od přistání k východu.

Zasedání
ZasedáníTabulka záznamu zasedání s IP, země, zařízení, zdroj, trvání a stránky sloupce, a označená řádek ohrožení.Zasedáníyoursite.comZemě (NG)Záznam zasedáníIP (S)ZEMĚZAŘÍZENÍZDROJTRVÁNÍSTRÁNKY41.62.10.4Spojené královstvíPlochagoogle3m 12s6102.89.6.2NGMobilnídirect1m 05s388.21.4.9DEPlochaUmm: reklamy7m 48s11203.0.113.9USAMobilníreferral0m 42s21SESSION LOGSkupinové cesty2COLUMNSZemě · zařízení · zdroj · doba trvání3THREATRiskantní sezení označená
Reálný Session Log: každá návštěva jako řada (IP, země, zařízení, zdroj, trvání a stránky) s riskantní sezení označená červeně.

Jak to funguje.

Session začíná, když návštěvník načte první stránku. Pokračuje v navigaci na více stránek. Sezení končí, když je návštěvník neaktivní pro dobu trvání relace (výchozí: 30 minuty) nebo zavře svůj prohlížeč. Stejná osoba se vrací po timeout vytvoří nové session.

Co každé sezení ukazuje

První strana

Na přistávací stránce, kde návštěvník vstoupil na vaše stránky. To vám řekne, který obsah je přitahuje lidi.

Poslední strana

Výstupní stránka, kde návštěvník odešel. Pokud je výstupní stránka často cenovou stránkou, návštěvníci mohou být srovnání vás s konkurenty.

Počet stran

Kolik stránek návštěvník prohlížel v tomto zasedání. Více stránek obvykle znamená více angažovanosti, ale to může také znamenat, že návštěvník je ztracen.

Doba trvání

Celkový čas od první stránky zatížení do poslední aktivity. Sessions with 0 seconds are shopces (single page view, no further interaction).

Zdroj

Zdroj dopravy pro toto sezení (Direct, Google, sociální, referred, atd.).

Země

Zjištěná země z návštěvní adresy IP.

Bounce

Zda návštěvník odešel po prohlížení pouze jednu stránku. Odhozené sezení mají červený indikátor.

Převod

Zda návštěvník během této relace dokončil akci konverze tratě (nákup, signup, odeslání formuláře).

Filtry

Hledat

Hledat podle IP, e-mail, strana URL, nebo referent v rámci zasedání.

Typ

Filtrovat novými návštěvníky (první sezení vůbec) nebo Vrací návštěvníky.

Zdroj

Filtrujte pomocí dopravního zdroje.

Země

Filtrovat podle země, aby se na sezení z určité oblasti.

Hrozby / odhození

Filtr ukazuje pouze odhozené sezení nebo sezení označená jako hrozby.

Opracované příklady

Profil vysoce hodnotného zákazníka

Scénář:
Zákazník právě udělal velký nákup. Chcete pochopit jejich cestu před nákupem.
Co dělat:

Hledat jejich e-mail v Sessions. Podívejte se na všechny jejich zasedání: (1) Kolikrát byli navštívit před nákupem? (2Na které stránky se podívali?3Použili chatování nebo si otevřeli lístek?4) Jaký byl celkový čas od první návštěvy k nákupu? To vám říká typickou nákupní cestu pro vysoce hodnotné zákazníky.

Zjistit přihlášení z nového místa

Scénář:
Zákazník se obvykle přihlašuje z Nigérie, ale vidíte sezení z Ruska.
Co dělat:

Hledat zákaznický e-mail v Sessions. Porovnejte zemi nedávných zasedání. Pokud se z neobvyklé země náhle objeví sezení, mohlo by to být legitimní cestování nebo poškozený účet. Zkontrolujte: (1) Byl neúspěšný pokus o přihlášení před úspěchem? (2) IP změna v rámci stejné relace? Označit ji k přezkoumání, pokud je podezřelé.

Jaký je rozdíl mezi sezením a návštěvou?+

Návštěva je osoba (nebo prohlížeč). Jedinou návštěvou je návštěva od této osoby. Stejný návštěvník může mít mnoho sezení v čase. Sessions končí po timeout období.

Jak OpsIQ identifikuje vracející se návštěvníky?+

OpsIQ používá kombinaci cookies, snímání otisků prstů v prohlížeči a ověřené identifikační tokeny. Pokud návštěvník své cooxy vymaže a není přihlášený, objeví se jako nový návštěvník.

Analytika

Živé krmivo

Živé krmivo ukazuje návštěvníkům, kteří jsou na vašich webových stránkách v reálném čase. Aktualizuje automaticky každou 15 sekundu (konfigurovatelné). Používejte ji během kampaní, spouštění produktů a nabitých období podpory, abyste viděli, co se právě děje.

Živé krmivo
Živé krmivoReálný čas aktivity proud ukazuje živé online- návštěvník počet a krmivo z nedávných návštěvních akcí podle země.Živé krmivoyoursite.com37návštěvníci online nyníŽivá aktivitaTeďUS · prohlížení /pricing2sUK · začal chat5sDE · přidáno do košíku9sCA · dokončené signatup1RIGHT NOWPodívejte se, kdo je na místě2AUTO-REFRESHAktualizuje každý 15s3AKTSkočit do živého chatu
Podívejte se, kdo je na vašich stránkách v této sekundě a co dělají, osvěžující automaticky každé 15 sekundy.

Jak to funguje

V live Feed průzkumy váš server v nastaveném obnovovacím intervalu. Každý řádek ukazuje návštěvníka v současné době na vašich stránkách: jejich aktuální stránku, zemi, zařízení, zdroj, trvání relace a počet stránek. Zelená zvýrazňuje novou činnost od posledního obnovení. Klikněte na libovolný řádek návštěvníků vidět jejich úplné údaje o zasedání.

Nastavení

Obnovit interval

Jak často se aktualizuje živý přenos. Výchozí: 15 sekundy. Nižší hodnoty (5-10s) poskytovat rychlejší aktualizace, ale používat více serverových zdrojů. Vyšší hodnoty (30-60s) jsou jednodušší na serveru, ale méně reálného času.

Aktivní prahová hodnota

Jak dlouho je návštěvník považován za "aktivní" po zatížení poslední stránky. Výchozí: 90 sekund. Pokud návštěvník načte stránku a pak si ji přečte pro 2 minuty bez kliknutí, zmizí z živého krmiva po prahu.

Tlačítko Pauza

Klikněte na tlačítko Pauza zastavit automatickou refresh. Užitečné, když chcete číst podrobnosti bez aktualizace seznamu. Klikněte na Pokračovat pro obnovení.

Opracované příklady

Zaujměte horkou stopu během kampaně

Scénář:
Spouštíte produkt. Návštěvník právě prohlížel vaši domovskou stránku, pak funkce, pak ceny, a je nyní na stránce Pokladna.
Co dělat:

Toto je vysoce úmyslné chování. V živém krmivu: (1) Klikněte na návštěvníka, aby viděli jejich zasedání. (2) Pokud začnou chat, AI bude mít jejich plné kontext cesty. (3) Pokud odejdou bez nákupu, stanou se vodítkem na stránce Vedoucí. (4) Zvažte vytvoření proaktivního pravidla pro zobrazení chatovací zprávy, když návštěvníci dosáhnou Checkout.

Příliš mnoho návštěvníků ze stejného IP

Scénář:
Vidíš? 20 návštěvníci ze stejné IP adresa, všechny na různých stránkách.
Co dělat:

To by mohlo být: (1) Kancelář se sdíleným internetem. Zkontrolujte, zda návštěvy vypadají jako skuteční lidé (různé stránky, rozumné trvání sezení). (2) robot nebo škrabka. Zkontrolujte, zda jsou sezení velmi krátké (0-1nebo systematicky trefit stránky (3) Test zatížení. Pokud provádíte automatické testy, vyloučit IP ze sledování.

Proč je živý přenos zobrazen 0 návštěvníků, když moje stránky mají provoz?+

Kontrola: (1) Je widget skript nainstalován na vašich stránkách? (2) Je klíč k webu správný? (3Překročila aktivní práh?4Používají návštěvníci agresivní reklamní blokátory, které blokují sledovací skript?

Mohu filtrovat živý přenos podle země nebo zařízení?+

Živý kanál ukazuje všechny aktivní návštěvníky. Pro filtrované zobrazení použijte stránky Návštěvníků Log nebo Sessions s možností filtru. Živý zdroj je záměrně jednoduchý pro sledování reálného času.

Analytika

Horní stránky

Top Pages ukazuje, které stránky na vašich stránkách získat nejvíce provozu. To řadí stránky návštěvami, angažovanost, konverzí a podpůrnou činnost. Použijte ji k identifikaci svého nejlepšího obsahu, najít nedosahující stránky, a objevte stránky, které generují podpůrné otázky.

Horní stránky
Horní stránkySeznam nejvíce navštívených stránek s horizontálními návštěvními bary a počty.Horní stránkyyoursite.comMost- navštívené stránky/pricing3,402/2,910/docs1,740/blog/seo-guide980/signup6401RANKEDMost- navštívené stránky2SIGNALSNávštěvy a přeměny3FINDStránky, které řídí lístky
Vaše stránky seřazené podle provozu a zapojení, takže můžete vidět nejvyšší obsah a stránky, které generují podporu.

Co každá stránka ukazuje

Strana URL

Plné URL cesty. Podobné stránky (např. varianty produktů) jsou seskupeny, pokud je povolena jejich skupina.

Náhledy

Celkový počet případů, kdy byla tato stránka načtena ve zvoleném datovém rozsahu.

Jedineční návštěvníci

Kolik různých lidí se na tuto stránku dívá (osoba, která sleduje stejnou stránku dvakrát počítá jako 1 unikátního).

Rychlost srážky

Procento návštěvníků, kteří opustili vaše stránky po prohlížení pouze této stránky. Vysoký odraz na přistávacích stránkách = problém. Vysoké odrazit na "děkuji" stránek = normální.

Průměrná doba

Jak dlouho návštěvníci tráví na této stránce v průměru. Velmi krátké = nečtení. Velmi dlouhé na formulářové stránce = zmatek.

Začínáme.

Kolik chatu konverzace byly zahájeny z této stránky. Vysoká chat začíná na stránce produktu znamená, že popis produktu může být nejasný.

Návrhy

Kolik podpůrných vstupenek bylo vytvořeno návštěvníky, kteří byli na této stránce. Vysoký počet vstupeneK = potenciální UX nebo obsah problém.

Opracované příklady

Najít stránky, které řídí podpůrné otázky

Scénář:
Váš podpůrný tým se pořád vyptává na dopravu.
Co dělat:

Třídit Top stránek "Podpůrné tipy" nebo "Chat začíná" sestupný. Podívejte se na produkt nebo zasílání stránky s vysokým počtem. Stránka s nejvíce podpůrných otázek má pravděpodobně nejasné informace. Opravit obsah stránky a sledovat, zda podpora otázky snížit.

Najít stránky s vysokou výstupní rychlostí

Scénář:
Chcete vědět, kde lidé opouštějí vaše stránky nejčastěji.
Co dělat:

Řadit podle rychlosti sestupného. Ignorovat stránky, které jsou přirozeně výstupní body (děkuji stránky, potvrzení stránky). Zaměřte se na stránky, který by měl udržet návštěvníky zapojeny: produktové stránky, ceny, funkce. Tyto potřebují lepší call-to- akce nebo jasnější obsah.

Proč stránka ukazuje 0 názory, i když vím, že to dostane provoz?+

Kontrola: (1) Je na této stránce nainstalován sledovací widget? Aplikace Single- page nemusí při změnách trasy vyvolávat zobrazení stránek. (2) Je stránka vyloučena v nastavení sledování? (3) Slouží CDN cached verzi bez sledovacího skriptu?

Analytika

Geointeligence

Geo Intelligence ukazuje, odkud vaši návštěvníci pocházejí podle země, města, zařízení a zdroje. Použijte ji k pochopení svých geografických trhů, rozhodnout o jazykové podpoře, plánovat regionální marketing, a odhalit podezřelé dopravní vzory.

Geo.
GeointeligenceMapa míst pro návštěvníky vedle řazení barů.Geointeligenceyoursite.comNávštěvníci podle místaUSASpojené královstvíDECANG1MARKETSZemě, město, zařízení2PLANJazyk a regiony3WATCHSpot lichý provoz
Kde vaši návštěvníci přicházejí z (podle země, města a zařízení) na trhy velikosti a rozpoznat neobvyklý provoz.

Co vidíš

Mapa sloupců v nejlepších zemích

Nejlepší země seřazené podle počtu návštěvníků. Klikněte na zemi, aby vrtat až do městské úrovně dat.

Koláč

Vizuální rozpis dopravy podle zemí. Hover pro procenta.

Tabulka pro celou zemi

Každá země s návštěvníky ve zvoleném období, zobrazující počet návštěvníků, počet zasedání, rychlost odrazu a přepočítací koeficient.

Městský vrták - dolů

Klikněte na zemi, aby zjistili, která města v této zemi mají nejvíce návštěvníků.

Jak funguje detekce GeoIP

OpsIQ detekuje polohu návštěvníka dvěma způsoby: (1) Cloudflare geo hlavičky. Pokud vaše stránky je za Cloudflare, Detekce země je automatická a přesná. (2) Databáze MaxMind GeoLite2. Stáhněte si bezplatnou databázi a nastavte cestu v Nastavení. Detekce úrovně City- vyžaduje databázi GeoLeite2-City, nejen databázi Country.

VPN a proxy provoz

Zdá se, že návštěvníci používající VPN server pocházejí z umístění VPNU serveru, nikoli z jejich skutečné polohy. OpsIQ nemůžete a neměli byste se snažit obejít VPN. Pokud vidíte neobvyklé vzory země, zvažte, že 10-20% Návštěvníci mohou používat VPN.

Opracované příklady

Neočekávaný provoz v zemi

Scénář:
Vedete obchod pouze pro USA, ale 30% dopravy je z Indie.
Co dělat:

Kontrola: (1) Jsou to skuteční návštěvníci? Podívejte se na dobu trvání relace a stránky zobrazeny. Velmi krátké sezení s vysokým odskokem = pravděpodobné boti. (2) Naleznou vás přes Google? Zkontrolujte, kdo je referrer. (3) Mohou být potenciálními zákazníky na novém trhu? Je-li doprava skutečná a angažovaná, zvažte přidání India- specifické ceny nebo obsah.

Rozhodování o jazykové podpoře

Scénář:
Chcete vědět, jestli byste měli přeložit své stránky do španělštiny.
Co dělat:

Podívejte se na stránku Geo Inteligence. Pokud španělsky mluvící země (Španělsko, Mexiko, Kolumbie, Argentina atd.) společně představují více než 10% vašeho provozu s nízkou rychlostí odrazu, překlad stojí za zvážení. Zkontrolujte také: Převedou návštěvníci z těchto zemí za podobné ceny na váš primární trh?

Regionální plánování změn v podpoře

Scénář:
Musíte se rozhodnout, že budete podporovat týmové hodiny pro různá časová pásma.
Co dělat:

Použijte hodinovou heatmap (na palubní desce) v kombinaci s Geo Intelligence. Pokud 40% Vaše doprava je z Evropy a 35% z USA, potřebujete pokrytí pro obě časové zóny. Heatmap ukazuje přesně, kdy každý region je nejvíce aktivní.

Země s návštěvami, ale bez objednávek

Scénář:
Německo ukazuje 500 návštěvníky v tomto měsíci, ale nulový prodej.
Co dělat:

Vyšetřování: (1) Jsou skákání na straně cen? Možná, že vaše cena není konkurenční pro tento trh. (2) Přepravujete do Německa? Zkontrolujte, zda vaše přepravní stránka zmiňuje Německo. (3) Je vaše pokladní k dispozici v EUR? Měna nesoulad způsobuje opuštěné pokladní. (4Jsou tito návštěvníci z jediného zdroje, který by mohl být nízkoúmyslný provoz?

Proč návštěvník ukazuje "Neznámá" země?+

GeoIP není konfigurován. Buď nastavte Cloudflare (který automaticky přidá hlavičky geo), nebo si stahujte databázi MaxMind GeoLite2 a nastavte cestu k souboru v Nastavení > GeoIPPath.

Mohu zablokovat dopravu ze určitých zemí?+

OpsIQ neblokuje podle země. Použijte svůj webový server nebo Cloudflare Firewall pravidla pro blokování na základě země.OpsIQ zaměřuje se na viditelnost, nikoli na kontrolu přístupu na úrovni sítě.

Analytika

Záměrná trychtýř

Záměr Funnel klasifikuje návštěvníky podle toho, co se snaží dělat: procházet, zkoumat, porovnat, koupit, získat podporu nebo odejít. Použijte to pochopit rovnováhu záměru na vašich stránkách a zjistit, kde návštěvníci pokles.

Záměrná trychtýř
Záměrná trychtýřFunnel z Procházení do výzkumu porovnat koupit s počítá, plus podpora a odcházející žetony.Záměrná trychtýřyoursite.comProcházet · 8,200Výzkum · 4,100Porovnejte · 1,650Koupit · 520Podpora 6%Opuštění 11%1CLASSIFYCo chtějí návštěvníci2STAGESProhlížet koupit3OPRAVITNajít drop-off
Sessions klasifikovány podle záměru (procházet, výzkum, porovnat, koupit), takže můžete vidět přesně, kde lidé pokles.

Kategorie záměru

Prohlížení

Návštěvníci se náhodně rozhlížejí, krátké sezení, pár stránek, žádný konkrétní cíl nebyl zjištěn.

Výzkum

Návštěvníci čtení produktu / funkce stránky, dokumenty, nebo blog obsah. Delší čas na stránce, více stránek obsahu.

Srovnání

Návštěvníci prohlížení cen, porovnání plánů, nebo funkce tabulky. Často vrací návštěvníky.

Nákup

Návštěvníci na pokladně, košíku, nebo signup stránky. Vysoký záměr. To jsou vaše možnosti konverze.

Podpora hledání

Návštěvníci na stránkách nápovědy, kontaktních stránek, nebo zahájení chatu. Potřebují pomoc.

Vyhazování

Návštěvníci, kteří odešli po jedné stránce.

Jak číst trychtýř

Interpretace trychtýře

Scénář:
1,000 Návštěvníci si prohlédli Pricing. 270 Otevřený rozhovor. 92 Začal jsem s pokladnou. 64 Zaplaceno. 18 Otevřené lístky na podporu.
Co dělat:

Cenová stránka je dost silná na to, aby vytvořila záměr. Chat je důležitý v nákupní cestě: 27% cenových návštěvníků zapojit do chatu před nákupem. Podpora vstupenky po checkout může znamenat aktivaci nebo platební zmatek. Akce: (1) Zajistit AI chat odpovědi na cenové otázky dobře. (2) Vyšetřovat 18 Post- Checkout podpůrných vstupenek na společné otázky.

Časové filtry

Pomocí filtru datového rozsahu porovnávejte vzory úmysl v průběhu období. Například, porovnat Černý pátek týden s normálním týdnem. Měli byste vidět špičku v "Nákup" záměru a možná "Podpora-vyhledávání", pokud vaše povýšení vytvořil zmatek.

Jak OpsIQ klasifikuje záměr?+

OpsIQ pohled na stránku URLs, chování relace, a časové vzory. Ceny stránky porovnání záměru. Prohlížet stránky signál nákup záměr. Nápověda / kontaktní stránky podpora podpory záměru. Klasifikace je heuristic-based, ne AI- poháněn.

Mohu upravit kategorie úmysl?+

V současné době ne. Kategorie jsou built- in na základě běžných webových vzorců chování. Vlastní klasifikace záměru je na cestovní mapě.

Analytika

Funnely, retence a cesty

Vybudovat vlastní cesty ze stránek nebo akcí kroky, měřit kohorta retence a objevovat cesty návštěvníků nejčastěji se přes stránky.

Produktová obrazovka
Řapíkatá a stonková zeleninaVlastní trychtýř zobrazuje každý krok stránky / události, zbývající návštěvníky a procento konverze.Řapíkatá a stonková zeleninapracovní prostorSTEPS4CONVERSION28.4%WINDOW72hŽIVÝ VÍDEJ PRACOVNÍHO SPACEPohled na cenu1,420 návštěvníci100%Vybraný plán780 návštěvníci54.9%Zahájeno checkout530 návštěvníci37.3%Vyplněný příkaz403 návštěvníci28.4%1DEFINEVyberte 2–8 kroky2OPATŘENÍNastavit okno pro převod3ZLEPŠITNajít největší kapku
Vlastní trychtýř zobrazuje každý krok stránky / události, zbývající návštěvníky a procento konverze.

Řapíkatá a stonková zelenina

Vytvořit název trychtýř s 2 do 8 stránka nebo event kroky. Nastavte okno pro přepočet v hodinách; návštěvník počítá pouze tehdy, když objednané kroky dojde uvnitř okna. Použijte pokles mezi kroky pro volbu, kde zkontrolovat přehrávání, chyby, rychlost stránky nebo zasílání zpráv.

Zadržení

Retence skupiny návštěvníků do týdenních kohort a ukazuje, kolik návratu. Vyberte si 6, 8 nebo 12 týden horizont. Udržujte kohortu definici stabilní při porovnávání úniků nebo kampaně.

Cesty

Cesty zobrazují nejčastější sekvence stránek. Vyberte si délku cesty z 2 do 5 Stránky, aby výsledek čitelný. Použijte ho k nalezení neočekávaných objížďky, společné východy a obsah, který opakovaně předchází konverzi.

Vlastní nálevky jsou analytické definice, nikoli automatizace. Chcete-li reagovat na dokončený krok, vytvořit cíl konverze, segment, spouštěč nebo pracovní tok.

Analytika

Přehrávání relací

Session Replay vám umožní sledovat časovou osu toho, co návštěvník udělal na vašich stránkách: které prvky klikli, jak se skal, kde vznášeli, a to, co oni zapisovali (s citlivými poli maskovány). Použijte to k diagnostice problémů UX, ověření chyb zprávy, a pochopit zmatek zákazníků.

Přehrávání relací
Přehrávání relacíReplay přehrávač zobrazující pohled na stránku s kurzorem, session info panelem a časovou smyčkou.Přehrávání relacíyoursite.comKup teď.ZASEDÁNÍDoba trvání 3m 12s14 kliknutíUS · Počítačové hryChrome 1241WATCHKliknutí, svitek, typ2MASKEDCitlivá pole skrytá3DIAGNOSEOvěřit hlášení chyb
Přehrát přesně to, co návštěvník udělal: kliknutí, svitky, psaní (citlivá pole maskovaná), na časové smyčce.

Najít správné sezení

Ze stránky Sessions, podívejte se na sezení s hlášenými problémy, vysoká stránka počítá bez konverze, nebo zasedání od zákazníků, kteří vyplnili podpůrných tipů. Klikněte na ikonu replay pro otevření zobrazení časové osy.

Co se znovu ukazuje

Časová osa

Horizontální bar zobrazující události v průběhu času. Klikněte na libovolné místo na časové ose skočit do tohoto okamžiku.

Navigace stránky

Každá stránka se objeví jako segment na časové ose. Můžete vidět přesnou cestu návštěvník vzal.

Kliknutí

Klepněte na tlačítko události jsou zobrazeny jako tečky na časové ose a jako zvýraznění na stránce rekonstrukce.

Skrolování

Průhledná hloubka je sledována, takže můžete vidět, jak hluboko návštěvník číst.

Interakce ve formě

Zaznamenávají se události zaostření a psaní. Textový vstup v heslu a citlivých polích je ve výchozím nastavení maskován.

Ochrana soukromí a maskování

Session replay masky citlivé formy pole ve výchozím nastavení. Hesla, vstupy kreditní karty a pole označená data-opsiq-maska se nikdy nenahrávají. Můžete nastavit další maskovací pravidla v Nastavení > Sledování. Pokud to vyžaduje vaše politika dodržování předpisů, můžete zcela zakázat přehrávání.

Diagnosování rozbité pokladny

Scénář:
Zákazník říká: "Snažil jsem se koupit, ale knoflík nic neudělal."
Co dělat:

Najděte jejich relaci na stránce Sessions (vyhledávání e-mailem). Otevřete REPLAY. Podívejte se na stránku Checkout segmentu. Podívejte: (1Zmáčkli správné tlačítko?2) JavaScript dojde k chybě? (Zkontrolujte, zda JS chybám v té době.) (3) Načíst stránku nebo zobrazit chybovou zprávu? (4Bylo požadované pole prázdné? Replay ukazuje, co přesně se stalo.

Kolik úložiště relace používá?+

Replay data roste s objemem provozu. Pomocí nastavení retence automaticky vyčistit staré replay data. Pro high-traffic stránky, zvažte kratší retenční období (např., 30 dnů) spravovat úložiště.

Mohou návštěvníci odstoupit od REPLAY?+

Pokud je v Nastavení zapnuto "Respekt Do 't Track", návštěvníci s hlavičkami DNT nejsou zaznamenáni. V nastavení sledování můžete také vyloučit konkrétní stránky z přehrávání.

Analytika

Záznam událostí

Záznamy událostí ukazují každou událost, která OpsIQ zaznamenala: zobrazení stránky, kliknutí, chat začíná, výtvory vstupenek, prodej a vlastní akce. Použijte ji k debugování integrace, ověření doručení webháku, a pochopit posloupnost akcí.

Záznam událostí
Záznam událostíChronologický záznam událostí s odznaky barevného typu: pageview, chat, prodej, webhook a vlastní.Záznam událostíyoursite.compageviewUS · /pricing12:04:01chat.startVelká Británie · widget open12:04:09prodej$49.00 · řád #104212:05:22webhookpayment.succeeded12:05:23customdemo_booked12:06:101EVERYTHINGKaždá zaznamenaná událost2DEBUGOvěřit doručení webhooku3ORDERViz přesný sled
Časová osa všeho OpsIQ záznamy (pageviews, chaty, prodeje, webháky, vlastní akce) pro ladění a audit.

Stavební- v akcích (automatická)

⚠️
Jsou to... events-log jména - co OpsIQ zaznamenává na časové ose návštěvníků pro analytiku, ladění a audit. Jsou to odlišné slovní zásoby od odchozí webhook události, ke kterým se přihlásíte koncový bod. Pokud budujete webhook přijímač, použijte seznam v sekci Webháky, nebo zavolejte webhooks.events.list; přihlášení se k názvu z této tabulky nic nedonese.

Každý řádek ukazuje jméno vás odeslat a kanonický název OpsIQ obchody Oba jsou zaznamenány: syrové jméno, které jste poslali, a kanonický, který mapuje, takže zpráva napsaná proti kanonické taxonomie stále pracuje na základě alias tracker používá.

pageview page.viewed

Sledovaná stránka se načítá. Obsahuje URL, titul, reference a časové razítko. page_view a view jsou přijímány jako totéž.

chat_open support.chat_opened

Návštěvník otevře widget chatu.

chat_send support.chat_message_sent

Návštěvník posílá chatovací zprávu. Strana odpovědi je uložena jako support.chat_message_received.

ticket_open support.ticket_created

Je vytvořena podpůrná jízdenka. ticket_create je akceptován jako totéž; odpovědi a uzávěrky jsou uloženy jako support.ticket_replied a support.ticket_closed.

form_submit form.submitted

Je předložen sledovaný formulář. submit je akceptován jako totéž.

purchase commerce.purchase_completed

Nákup je kompletní. purchase_successa prodej aliasů order.completed, sale.completed, payment.completed a invoice.paid, jsou všechny přijaty z připojené platformy.

Pokladna commerce.checkout_started

Začíná checkout. Související: cart_view, checkout_view, checkout_intent, checkout_abandon, add_to_cart.

login_success identity.signed_in

Návštěvník se přihlásí. login_failed, uloženo jako identity.login_failed; výluka je login_lockout_created.

signap conversion.signup

Návštěvník dokončí signalizaci. lead, uloženo jako conversion.lead.

js_error error.js

Chybu JavaScript zachytíme na sledované stránce.

💡
Název události, který posíláte, není jedním z těchto aliasů, je stále zapisován doslovně - nic se neupouští. Nemá prostě žádné kanonické mapování, takže se to nebude převalovat do zpráv založených na taxonomii.

Vlastní akce

Můžete posílat vlastní akce z vašich webových stránek nebo serveru na OpsIQ. Vlastní události jsou užitečné pro sledování akcí specifických pro vaše podnikání: kliknutí na tlačítko, používání funkcí, přehrávání videa, stahování, atd.

JavaScript · vlastní akce z prohlížeče
// Send a custom event from the browser
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "plan_selected", {
  plan: "pro",
  billing: "annual",
  value: 99
}]);
PHP · zaznamenat kontaktní činnost ze serveru
// 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);

Filtrování událostí

Typ události

Filtrovat podle konkrétních jmen událostí: pageview, chat. started, ticket. created, atd.

Rozsah data

Zobrazovat události z určitého časového období.

Hledat

Data událostí vyhledávání pomocí klíčového slova (URL, e-mail, hodnoty vlastnosti události).

Jak dlouho se to bude konat?+

Události se řídí retenčními pravidly nastavenými v Nastavení. Výchozí: 90 dny. Vysoce hodnotové události (nákupy, bezpečnostní události) lze konfigurovat s delší retencí.

Mohu použít události v A / B experimentech?+

Ano. Při vytváření experimentu si zvolíte konverzní událost. Jako cíl konverze lze použít libovolnou built- in nebo na zakázku.

Analytika

Experimenty A / B

Experimenty vám umožní vyzkoušet dvě verze stránky nebo funkce a měřit, které z nich se provádí lépe. OpsIQ stopy dojmy, konverze a statistický význam.

Experimenty A / B
Experimenty A / BDvě varianty karet porovnávající přepočítací koeficienty, s vítězným odznakem a významem na přední variantě.Experimenty A / Byoursite.comVarianta A4.2%konverze · 1,020 zobrazeníVarianta BVítěz6.8%konverze · 1,005 zobrazení+62% výtah · 96% významné1ZKOUŠKADvě varianty head- to- head2OPATŘENÍKonverze a význam3ROZHODNUTIVyhlásit vítěze
Spustit dvě varianty, sledovat konverzi a statistický význam, a prohlásit vítěze.

Jak experimenty fungují

1
Vytvořit experiment

Dejte mu jméno, definujte primární metriku (událost konverze) a nastavte varianty (kontrola a zkouška).

2
Spusť to.

OpsIQ náhodně přiřazuje návštěvníkům varianty a sleduje jejich chování. Neměňte experiment, když běží.

3
Přečtěte si výsledky

95% úroveň spolehlivosti znamená, že si můžete být _95% jistí tím, že rozdíl je skutečný a ne náhodný.

Experimentální státy

Návrh

Vytvořeno, ale ještě není spuštěno. Stále můžete upravovat varianty a metriky.

Běžící

Aktivně přiřazovat návštěvníkům varianty. Neupravovat při běhu.

Dokončeno

Získaný statistický význam nebo byl ručně zastaven. Výsledky jsou konečné.

Archivováno

Výsledky byly přezkoumány a experiment již není v aktivním seznamu potřebný.

Osvědčené postupy

Definujte metriku před startem

Rozhodněte se, co změříte před startem. Volba metriky po vidět výsledky zavádí zaujatost.

Vyloučení vnitřního provozu

Přidejte adresy vašeho týmu IP do seznamu vyloučení, aby návštěvy zaměstnanců nevedly k výsledkům.

Utíkej dost dlouho.

Nepřerušujte experiment po návštěvách 100. Pro spolehlivé výsledky potřebujete stovky nebo tisíce návštěvníků na variantu.

Zkouška jedna změna najednou

Pokud změníte titulek a barvu tlačítka, nebudete vědět, která změna způsobila zlepšení.

Zaznamenejte své rozhodnutí

Po ukončení experimentu si všimněte, která varianta vyhrála a proč jste se rozhodli ji implementovat.

Kolik návštěv potřebuju pro platný experiment?+

Záleží na základním přepočítacím koeficientu a velikosti účinku, který chcete zjistit. 500 Návštěvníci na variantu pro 20% Pro menší efekty potřebujete tisíce.

Můžu provést několik experimentů najednou?+

Ano, ale buďte opatrní. Pokud dva pokusy ovlivňují stejnou stránku, jejich výsledky mohou interagovat. Je bezpečnější provádět experimenty na různých stránkách nebo funkce současně.

Analytika

JavaScript chyby

JavaScript Chyby shromažďuje chyby na straně klienta od návštěvníků webových stránek. Rozbité tlačítko, selhání API volání, nebo chybějící zdroj se objeví zde. Použijte ho k nalezení a opravu chyb, které ovlivňují skutečné zákazníky.

Chyby JS
JavaScript chybySeznam zachycených chyb v předku a konci s tečkami závažnosti, zdrojovým souborem, prohlížečem a počtem událostí.JavaScript chybyyoursite.comNedávné chybyChyba typu: nelze přečíst x nedefinovanéhocheckout. Js:42 · Chrome×214404 zatížení /assets/app.cssHlavní stránka · Safari×88Nezachycená (v příslibu) NetworkErrorapi.js:17· Firefox×51Upozornění na stlačení: událost vyloženívendor. js · Edge×331CAPTUREChyba na straně klienta2IMPACT& Počítá se prohlížeče3OPRAVITSquash skutečné chyby
Skuteční návštěvníci se zde dotknou rozbitého povrchu kódu (zpráva, zdroj, prohlížeč a jak často), takže můžete opravit, na čem záleží.

Co každá chyba ukazuje

Chyba zprávy

Chybový text JavaScript (např. "TypeError: Nelze číst vlastnosti nedefinovaných").

Strana URL

Na které stránce došlo k chybě.

Prohlížeč a zařízení

Který typ prohlížeče a zařízení chybu viděl. Některé chyby jsou specifické pro prohlížeč.

Stopa stopky

Umístění kódu, kde došlo k chybě. Kliknutím rozšiřujete stopu celého zásobníku.

První spatřeno

Když se tato chyba poprvé objevila.

Naposledy viděn

Když se tato chyba naposledy stala.

Počet

Kolikrát byla tato chyba zaznamenána.

Postižená sezení

Kolik různých návštěv zažilo tuto chybu.

Priorizace chyb

Ne všechny. JavaScript chyby potřebují okamžitou pozornost. Priorizovat: (1) chyby na kritických stránkách (checkout, signup, přihlášení), (2) chyby s vysokými počty sezení, (3) chyby, které se objevily nedávno (možné regrese ze změny kódu), (4) chyby na vašem vlastním kódu (ne skripty třetích stran).

Oprava rozbitého tlačítka pro checkout

Scénář:
Záložka Chyby JS zobrazuje "TypeError: Nelze číst vlastnosti nedefinovaných (odesilatel čtení)" on /checkout, postihující 45 Tento týden sezení.
Co dělat:

To znamená 45 skuteční zákazníci nemohli dokončit checkout. Krok: (1) Otevřete stránku ve stejné kombinaci prohlížeč / zařízení. (2) Otevřít konzoli prohlížeče a reprodukovat chybu. (3) Zkontrolujte stopovací stopu najít přesný řádek kódu. (4) Opravit chybu, nasadit, a sledovat počet chyb jít na nulu.

Zachycuje OpsIQ chyby ze skriptů třetích stran?+

Ano. OpsIQ zachycuje všechny JavaScript chyby na stránce, včetně chyb z analytických skriptů, widgety chatu a ad skripty. Filtrovat podle URL v zásobníku stopy zaměřit na svůj vlastní kód.

Jak mohu vyloučit známé neškodné chyby?+

Nemůžete potlačit specifické chyby v OpsIQ, ale můžete filtrovat seznam po stránce URL nebo chybová zpráva. Oprava nebo ignorování chyb z rozšíření prohlížeče (často se zobrazují jako chyby z neznámých zdrojů).

Prodej

Prodej a přeměny

Prodejní sledování spojuje váš obchod nebo platformu pro fakturaci s OpsIQ, takže můžete vidět příjmy vedle návštěvníka chování. Každý nákup je připisován k cestě návštěvníků, takže víte, které stránky, kampaně a kanály pohánět příjmy.

Prodej
ProdejProdejní obrazovka: celkový příjem s kontrolou All- time period, vyhledávání a tabulky nedávných nákupů (datum, zákazník, platforma, částka, zdroj).Prodejyoursite.comPŘÍJMY$42,180+18%Celý čas ▾Hledání e-mail, IP, Objednávka ID...Nedávné nákupyDATUMCELNÍPLATFORMAČÁSTKAZDROJJun 3[email protected]Shopify$49googleJun 3[email protected]WooCommerce$129directJun 2[email protected]Stripe$480reklamy1PŘÍJMYObjednávky a obnova2RECENT PURCHASESDatum · zákazník · částka3ATTRIBUTEDKe zdroji dopravy
Skutečný prodejní plátno, příjmy nahoru, pak Nedávné nákupy (datum, zákazník, platforma, částka), každý přičítaný ke svému zdroji dopravy.

Prodejní palubní deska

Dnešní prodej

Příjmy z objednávek dokončených dnes. Občerstvuje s každou novou objednávkovou událostí z vaší připojené platformy.

Tento týden / tento měsíc / celkem

Příjmy agregované v průběhu období. Náhrady se odečítají od těchto součtů.

Trendový graf

Liniový graf zobrazující denní příjmy v rámci zvoleného datového rozsahu. Hledejte hroty (propagační akce, kampaně) a dipy (emise, sezónní).

Nejlépe konvertující zdroje

Které dopravní zdroje vedou k většině nákupů. "Přímé" kupující často bookmark vaše stránky. "Google" kupujících vás našel prostřednictvím vyhledávání.

Nedávné nákupy

Nejnovější objednávky s emailem zákazníka, částka, měna a zakoupené položky.

Nepotvrzené nákupy (cesta zákazníka)

Když sledovací zařízení vidí návštěvníka dosáhnout potvrzení o koupi v prohlížeči, ale žádná připojená platforma ohlásila, že prodej ještě, zákaznická cesta ukazuje Nákup (nepotvrzené) řádek s jantarovou odznakem. Nikdy se nepočítá jako příjem. Když platforma potvrdí prodej, potvrzený nákup ji nahrazuje.

Usmíření

Prodejní konektory nezávisí na jediném webháku. Každý platební signál, který platforma pošle, může otevřít prodej a smlouva o připojení 2.3 re- čte vlastní seznam dokončených prodejů platformy podle harmonogramu (výchozí hodinový na pracovní prostor), takže webhook, který platforma nikdy nedodala, nemůže ztratit prodej. Provozovatelé jej mohou spustit na vyžádání z příkazové řádky s nástroji /sales_reconcile.php.

Pokyny pro nastavení nástupiště

Shopify

Přejděte na konektory > Shopify. Vytvořit vlastní aplikaci ve vašem Shopify admin (Nastavení > Aplikace a prodejní kanály > Rozvíjet aplikace). Grantové skopy: read_orders, read_customers, read_products. Kopírovat admin API Přístupový symbol OpsIQ, zadejte doménu obchodu (např., your-store.myshopify.comKlepněte na tlačítko Test Connection. Pokud se vám to podaří, zapněte synchronizaci webhooku pro upozornění v reálném čase.

WooCommerce

Přejděte na konektory >WooCommerce Ve vaší WordPress Admin, jděte na WooCommerce> Nastavení > Pokročilé > Odpočinek API. Vytvořit klíč se svolením Read / Write. Kopírovat spotřebitelský klíč a tajemství spotřebitele. V OpsIQ, zadejte své stránky URL, spotřebitelský klíč, a tajemství spotřebitele. Klikněte na tlačítko Test Connection.

BigCommerce

Přejděte na konektory > BigCommerce. Ve svém Bigcommerce admin, přejděte na Advanced Settings >API Účty. Vytvořit V2 / V3 API Účet se čteným rozsahem pro objednávky, zákazníky a produkty. Kopírujte přístupový symbol, ID klienta a API stezka. Vstupte do nich OpsIQ a test.

Magento 2

Přejděte na konektory > Magento. Ve svém Magento admin, přejděte do systému > Integrace. Vytvořte novou integraci s API zdrojový přístup k Prodejce, Zákazníkům a Katalogu. Aktivujte integraci a zkopírujte přístupový token. Zadejte jej OpsIQ s vaší Magento základny URL.

PrestaShop

Přejděte na Connectors > PrestaShop. Ve Vašem adminu Prestashopu přejděte na Advanced Parameters > Webservice. Povolte webovou službu a vytvořte nový klíč. Poskytněte přístup k objednávkám, zákazníkům a produktům. Kopírujte klíč a zadejte jej OpsIQ s vaším obchodem URL.

OpenCart

Přejděte na konektory > OpenCart. Generovat API Přihlášení z vašeho panelu OpenCart admin. Zadejte API URL, uživatelské jméno, a klíč v OpsIQ. Konektor používá OpenCart 's REST API pro objednávky a údaje o zákaznících.

osCommerce

Přejděte na Connectors > osCommerce. Nastavit přístup do databáze nebo API Procesní integrace obvykle vyžaduje přímý přístup do databáze nebo na zakázku API modul.

Stripe

Přejděte na konektory > Stripe. Zkopírujte si svůj pruh omezen API klíč od přístrojové desky Stripe (vývojáři >API klávesy). Klíč potřebuje přečíst přístup k zákazníkům, poplatkům, fakturám a předplaceným. Zadejte jej OpsIQ. Nastavit koncový bod webhooku pro události v reálném čase.

Vlastní / jiné platformy

Použijte zbytek.API nebo webháky poslat prodejní akce z jakékoliv platformy. Odeslat order.complete události s emailem zákazníka, částka, měna a položky. Viz Události API oddíl pro formát užitečného zatížení.

Pochopení vašeho prodejního nálevku

Nejlépe konvertující zdroje

Ukazuje, které kanály přinášejí platící zákazníky. Pokud Google přináší 1000 návštěvníků a 50 prodej, to je5% Přepočítací koeficient. Pokud e-mail přináší 200 návštěvníků a 30 prodej, to znamená 15%. Email je účinnější na návštěvníka.

Výše náhrad

Refinancované objednávky jsou sledovány odděleně. Sníží vaše čisté příjmy celkové. Pokud sazby náhrad jsou vysoké z určitého zdroje, provoz může být nízká kvalita.

Nakládání s měnami

OpsIQ ukládá původní transakční měnu a částku. Multiměnové podniky vidí příjmy v každé měně. Normalizované vykazování používá nastavený směnný kurz.

Opracované příklady

100 návštěvníci, nulový prodej

Scénář:
Vaše cenová stránka dostane 100 návštěvníky za den, ale nula konverzí.
Co dělat:

Vyšetřování: (1) Použít relace Replay na návštěvníky cenových stránek. Podívejte se, jak interagují s cenové tabulky. (2) Zkontrolujte Top Pages pro cenovou stránku odrazit sazby a time- on- page. (3) Zkontrolujte chat konverzace od návštěvníků cenových stránek. Jaké otázky se ptají? (4) Porovnejte svou cenovou stránku s konkurenty. (5) Zkuste A / B experiment s různými cenovými rozložení.

Přiznání za marketingovou kampaň

Scénář:
Poslal jste emailovou kampaň s UTM tagy. Jak změříte jeho dopad na příjmy?
Co dělat:

Přejděte do sekce Prodeje a filtrujte podle zdroje. Vyhledejte parametr UTM kampaně, zobrazí se: (1) Kolik návštěvníků přišlo z emailu. (2) Kolik jich bylo převedeno na prodej. (3) Celkové tržby připsané kampani. (4) Srovnání se stejným obdobím před kampaní.

Proč prodej ukazuje nulu, i když můj obchod má rozkazy?+

Kontrola: (1) Je platformní konektor připojen a zdravý? Přejděte na konektory a zkontrolujte stav. (2) Je synchronizace webhook zapnuta? Pokud používáte hlasovací právo, je práce cron běží? (3) Má konektor právo API Strojky? Shopify Potřebuješ číst rozkazy.

Jak se OpsIQ připisuje prodeji návštěvníkovi?+

Když se objednávka dostane přes konektor, OpsIQ odpovídá zákazníkovi e-mailu s známým návštěvníkem. Pokud byl návštěvník sledován před nákupem, prodej je připisován k jejich cestě návštěvníka, včetně dopravního zdroje, přistávací stránky a historie sezení.

Mohu ručně přidat prodej?+

Prodejní akce můžete posílat přes REST API nebo webháky z libovolného systému. Formát událostí je zdokumentován v Událostech API sekce.

Obchod

Vybudovat, spustit a provozovat původní sklad

Storefront je OpsIQ je rodák obchod pro produkty, stránky, lookbook, propagační panely, Pokladna, zákaznické účty a AI- asistované prodeje v Client Chat a podporované sociální kanály.

Zahájení marketingového → Storefront

1
Vyberte pracovní prostor

Potvrďte, že stránky jste konfiguraci. Produkty, nastavení, stránky, objednávky a analytika jsou izolovány na tomto pracovním prostoru.

2
Povolit obchod a sklad

Všeobecná nastavení → Ecommerce je mateřským orgánem. Výlohové publikování, tvorba objednávek a platby zůstávají oddělené, takže si můžete prohlédnout katalog bezpečně.

3
Zveřejnit kompletní produkty

Nastavte typ výrobku, cenu, měnu, inventuru, varianty / možnosti, média a plnění. Prohlédněte si produkty a možnost checkout před publikováním.

4
Nastavit platbu a plnění

Připojte bránu nebo přidejte bankovní převod, hotovost nebo protiplatbu. Fyzické zboží potřebuje dodací zóny nebo sběr; digitální zboží potřebuje chráněné soubory nebo kódy.

5
Spustit reakční

Oprav každý blokátor a zopakuj každé varování, pak vyplň příkaz na pískoviště z veřejného obchodu.

Starter O a obsah politiky

Nové a modernizované obchody obdrží editovatelný starter text pro O nás, Podmínky, Ochrana soukromía Výše náhrad a výnosů Stávající obchodní kopie není nikdy přepsána.

  • Nahradit každý [Add …] okamžitá a ZKUŠEBNÍ TEXPLÁT Všimněte si před startem.
  • Použijte skutečný právní název, kontaktní trasu, sliby splnění, pravidla navracení, datové postupy, retenční období a trhy sloužil.
  • Získejte poradenství odpovídající produktům a zemím, které sloužíte. Startér je provozní pokyny, ne právní poradenství.

Návrh, stránky a propagační akce

Téma a návrh stránky

Vyberte si kurátorem barevné téma a složení, pak naladit typografii, výplně / gradienty, tvary, šířka, pohyb, vznášedlo a světlo / tmavé chování. Prohlédněte si plochu a telefon před uložením.

O, Kontakt, Zobrazit / Lookbook a účet

Sestavte si každou stránku z opravných bloků. Každý blok má prémiové konstrukční varianty. Udržujte žadatel- making bloky, jako jsou statistiky, tým, ocenění nebo citace off, dokud jejich obsah je pravdivý.

Vlastní stránky

Nastavit titul, slimák, hrdina, SEO a objednané bloky; náhled při návrhu, pak zveřejnit. Rezervované skladové trasy, jako je vozík, Checkout, účet a politiky nelze znovu použít.

Propagační pupy a postranní panely

Vytvořte modální stránku s alespoň jedním blokem. Vyberte si prémiový design, centrální / levý / pravý / spodní umístění, zatížení / zpoždění / výstup / klepněte na tlačítko spoušť, pozadí, pohyb, šířka, kupón a chování once- per- návštěvník. Test zavřít, klávesnice a rozvržení telefonu.

Menus a footer

Odkaz na stránky, produkty, sbírky, politiky, akce účet / help / cart, živé modály nebo bezpečné externí URLs. Záhlaví podporuje jednu úroveň rozbalování / mega-menu.

Klientský chat a společenské objednávky

Povolit Prodávat Klientský chat, pak vyberte, kde si mohou zákazníci koupit. Asistent prohledává katalog a žádá server o autoritativní citaci; server - nikoli model - vytváří podepsanou objednávkovou kartu. Potvrzení se děje pouze prostřednictvím této karty na webu nebo ověřené interakce na sociálním kanálu.

WhatsApp, Messenger, Instagram, Telegram, LINE, SMS a X používají jako identitu kanálu účet kanálu ověřený poskytovatelem.E-mail je stále shromažďován pro potvrzení o platbě.Objednávání pomocí konektoru si zachovává podepsanou univerzální smlouvu a celkovou částku autorizující obchodníka; konfigurace Storefront tuto smlouvy nemění.Configuration of Storefront does not change this contract.

Analytika pro zpravodajskou činnost ve skladu

Recenze jedinečných návštěvníků, zobrazení produktů, doplňky košíku, Checkout začíná / opuštění / kompletace, konverze, potvrzené objednávky, příjmy podle měny, akvizice, zařízení, země / města, špičkové produkty, obnova a kvalita-varování. Konverze používá výslovně označená public-Store události; měnové součty se nikdy tiše nekombinují. Pomlčka znamená, že vybrané rozmezí nemůže odpovědět na otázku konverze - ne nula procent.

ObecnéOpsIQ API

Použít klíč na doručitele s commerce.read; analytics.read Také poskytuje analytický snímek. Klíč je vázaný pracovní prostor je autoritativní.

Čtení skladovaných údajů
{ "action": "commerce.storefront.get" }
{ "action": "commerce.storefront.catalog.get" }
{ "action": "commerce.pages.list", "kind": "modal", "status": "live" }
{ "action": "commerce.analytics.snapshot", "range_days": 30 }
{ "action": "commerce.readiness.get" }
{ "action": "commerce.products.list", "filters": { "active": true } }

Storefront dostat vrací public- safe konfigurace, URL, menu a starter- review stavu. Storephrop katalog vrátí každé téma, strana design, typ bloku, block složení a prémiové propagační shell tak vzdálený stavitelé nikdy hard-kódovat volby. Stránky seznam vrací vlastní stránky a prémické modely. Analytika vrací agregáty bez identity zákazníka. Častý vrací akční kontroly. OpenAPI a Postman používat tyto stejné smlouvy.

Konečný předstart- start proper- through

  1. Desktop a telefon: domácí, vyhledávání, produkt / varianta, vozík, potvrzení pokladny, účet, sledování, stahování, O, Kontakt, politiky, lookbook, stránky, menu a každé živé propagace.
  2. Vyplňte jednu platbu za pískoviště a ověřte stav objednávky, příjem, zásoby a plnění.
  3. Umístěte jeden klient Chat objednávky a jeden poskytovatel-pískoviště objednávky na každém povoleném sociálním kanálu.
  4. Potvrďte, že se tyto události objevují pod správným povrchem a měnou v Store Intelligence.
⚠️
Starter politika text dělá obchod non-prázdný, ale to nedělá právní kopii přezkoumán. Spustit Readness udržuje varování, dokud je každá výzva je nahrazena.
Prodej

Vodíky

Vedení jsou návštěvníci nebo zákazníci, kteří ukazují nákup nebo podporu záměr. OpsIQ automaticky detekuje vedení na základě chování: cenová stránka návštěvy, zpáteční návštěvy, chat interakce, Checkout začíná a vysoké zapojení. Použijte stránku Leads upřednostnit follow- up a krmit CRM potrubí.

Vodíky
VodíkyObrazovka Vedoucí: prohledatelný stůl s IP/ email, umístění, zařízení, zdrojové a časové sloupce a nejvyšší zdroj a země.Vodíkyyoursite.comHledat IP, město, země...Nejvyšším zdrojem: Google · Nejlepší země: USIP / EMAILMÍSTOZAŘÍZENÍZDROJČAS41.62.10.4Spojené království · LondýnMobilnígoogle4m 12s[email protected]USA · New YorkPlochadirect7m 02s[email protected]DE · BerlínMobilníUmm: reklamy5m 40s203.0.113.9CA · TorontoPlochagoogle3m 28s1DETECTEDNávštěvníci s vysokým úmyslem2TOPHlavní zdroje a země3ENRICHEDIP, umístění, zařízení, čas
Skutečná obrazovka vede, vysoce-intent návštěvníků jako prohledatelný stůl (IP/ email, umístění, zařízení, zdroj, čas na místě) s nejlepšími zdroji a zeměmi.

Co dělá stopu

Cenové návštěvy stránek

Návštěvníci, kteří se dívají na vaši cenovou nebo plánovací stránku, aktivně zvažují nákup.

Návratné návštěvy

Návštěvníci, kteří se vracejí několikrát jsou zapojeni, ale ještě nejsou převedeni.

Interakce s chatem

Návštěvníci, kteří začnou chat aktivně hledají pomoc, buď před nákupem nebo po nákupu.

Start checkout

Návštěvníci, kteří dosáhnou pokladny stránku, ale nedokončují nákup.

Podání formuláře

Návštěvníci, kteří zadávají kontaktní formulář, demo žádost nebo signalizační formulář.

Zapojování na vysoké straně

Návštěvníci, kteří se dívají na mnoho stránek s dlouhou dobou trvání sezení, jsou hluboce zkoumáni.

Olověný panel detail

Klikněte na jakoukoli stopu pro zobrazení jejich plného profilu:

Identita

Název, e-mail, společnost, pokud je známa. Anonymní vede ukazují IP a umístění.

Zasedání

Všechny sezení z tohoto vedení s průtokem stránky, trvání a zdroj.

Stránky zobrazené

Na každé stránce, kterou navštívili, si objednali recenzi.

Zdroj

Jak tě našli: organické, placené, sociální, doporučení, přímé.

Olověné skóre

A0-100 skóre založené na intenzitě chování, recidivitě a záměru stránky.

status CRM

Zda bylo toto vodítko přidáno do CRM jako kontakt nebo obchod.

Spropitné prodeje

AI- generovaný návrh, co dělat dál (např. "Návštěvníci cen 3 krát · zvážit aktivní informační").

Vysokohodnotný olověný odznak

Vede s skóre nad 80 získat "vysokou hodnotu" odznak. To jsou vaše nejžhavější vyhlídky. Priorizujte je pro dosah, proaktivní chat, nebo CRM vstupu potrubí.

Opracované příklady

- Dělám na horkém olovu.

Scénář:
Olovo zobrazuje vaši cenovou stránku 3 časy v 2 dny, začal chat ptát se na podnikové plány, ale nekoupil.
Co dělat:

Tohle je vysoce úmyslná stopa.1) Zkontrolujte jejich hlavní podrobnosti pro společnost a informace o úloze. (2) Recenze přepis chatu pro konkrétní potřeby a námitky. (3) Vytvořit dohodu v CRM se shromažďovanými informacemi. (4) Přiřadit následný úkol pro člena obchodního týmu. (5) Pokud se vrátí na cenovou stránku, proaktivní chat pravidlo může spustit personalizované zprávy.

Převod anonymních vede k CRM kontakty

Scénář:
Máte anonymní stopy 50 s vysokými výsledky, ale žádné e-mailové adresy.
Co dělat:

Možnosti: (1) Vytvořit proaktivní pravidlo, které nabízí slevu nebo stažení zdrojů výměnou za e-mail na high-intent stránkách. (2) Pomocí widget chatu požádat o e-mail, když anonymní návštěvníci začnou konverzaci. (3) Přidejte na své přihlašovací / signalizační stránky symbol totožnosti, aby se automaticky identifikovali navrátilci.

Jak se počítá skóre olova?+

Skóre se zabývá: rekurencí návštěv (poslední = vyšší), frekvencí návštěvách (více = vyšší hodnota), stránkami zobrazenými (cena / odhlášení = vyšší cena), dobou trvání sezení (delší = vyšší míra), interakcí na chatu (angažovaná = vyšší úroveň) a návratovými návštěvami (vícenásobná vyšetření = vyšší sazba).

Můžu upravit pravidla bodování olova?+

Ano. V CRM Konfigurace, můžete přidat lead- bodování pravidla, která zvýší skóre na základě konkrétních klíčových slov, událostí, zdrojů, nebo vzory stránek.

CRM

CRM · začít zde

OpsIQ přepravuje plnou AI- první CRM, které zachycuje zákaznickou pravdu, čistí data, skóre vede, kouče obchody, prognózy příjmů a aktů, s webovou inteligencí, podporu, vstupenky, produkty a platby jako jeden živý graf. Každá akce AI je získána, vysvětlitelná, reverzibilní a schvalovatelný.

AI CRM
Přehled CRM AIA Trust Dial nastavena na Copilot vedle čtyř AI karet agenta: správce, Prospector, Retention a Analyst.AI CRMpracovní prostorDůvěřujte vytáčeníRučněKopilotAutopilotKolik toho AI dělá samoDSSprávceDeduplikovat, obohatit,Potvrdit údajeSDRProspektorNajít & skórenové obchodyRTZadrženíŠpičatá churn,obnova pohonuANAnalytikPředpověď &Vysvětlit čísla1AI-FIRSTČtyři specializovaní agenti2YOU DECIDEAutonomie důvěryhodného vytáčení3TRUSTEDSourced & reverzibilní
První CRM, které vedou čtyři specializovaní agenti a trust Dial, který rozhoduje, kolik toho dělají sami.

Přehled stránek CRM

AI CRM (velitelské centrum)

Začněte tady.

Vaše denní domácí obrazovka: příjem pulsu, co AI našel, co to udělal, schválení fronty, další pohyby, agent zdraví, a ROI.

Kontakty

hlavní

Lidé a firmy ve vašem CRM. Hledat, filtrovat, skóre a spravovat profily.

Potrubí

hlavní

Vizuální deal deska s drag- a - drop stadia, vyhrát pravděpodobnost, a AI koučování.

Předpověď a zprávy

hlavní

Předvídání třídy: pravděpodobně, v nejlepším případě s intervaly spolehlivosti a sledováním přesnosti.

Životní cyklus

hlavní

Pokud se každý zákazník nachází: aktivní, ohrožený, expanze připraven, obnovení splatnosti, nebo víření.

Vybudovat CRM

Nastavení

Popište své nastavení CRM v jednoduché angličtině. OpsIQ generuje reverzibilní plán a aplikuje jej na schválení.

CRM Zdraví

Operační

Self- check stránka: schéma, agenti, trasy, AI akce, a živé údaje počet.

Jak vás OpsIQ udržuje v bezpečí

Zeptejte se před jednáním

AI návrhy jdou do schvalovací fronty. Schválíte, editujete, nebo odmítnout každý z nich. Nic se nestane bez vašeho slova.

Nikdy nepřepisuj

Když AI navrhuje změnu, ukazuje současnou hodnotu a navrhovanou hodnotu. Údaje zadané člověkem mají ochranu provenience.

Všechno je vratné.

Každá akce AI je zaznamenána v deníku. Můžete vrátit všechny změny jedním kliknutím.

Prokazovatelné

Každé doporučení AI ukazuje své zdůvodnění a zdroje dat, které použil.

Zbrusu nový?

1
Otevřít CRM AI

Klikněte na AI CRM v levé navigaci. Velitelské centrum zobrazí váš současný stav.

2
Zkontrolovat zdravotní stav CRM

Otevřít CRM Health pro ověření schématu, agenti a trasy jsou připraveny.

3
Importovat kontakty

Pokud je konektor aktivní (Shopify, WHMCS, etc.), kontakty jsou importovány automaticky. Jinak importovat prostřednictvím CSV nebo vytvořit ručně.

4
Vytvořit potrubí

Přejděte do potrubí a vytvořit svůj první ropovod s etapami (např., Olovo, Kvalifikované, Návrh, vyjednávání, Won, Lost).

5
Přidat první nabídku

Vytvořte dohodu z kontaktu, nastavte částku a jeviště, a nechte se vést Deal Coach.

Musím použít CRM?+

Ne. CRM je volitelné. OpsIQ funguje perfektně jako sledování + podpora + AI platforma bez CRM. Povolit, když jste připraveni spravovat prodejní a zákaznické vztahy.

Může CRM fungovat bez konektorů?+

Ano. Kontakty a nabídky můžete vytvářet ručně. Připojení CRM obohatí o data platforem (objednávky, předplatné, vstupenky), ale nejsou vyžadována.

Co je to "Spořitelna"?+

Bezpečnostní systém, který řídí, co může AI dělat. Režim Copilot (výchozí): AI navrhuje, člověk schvaluje. Autopilot režim (opt- in): UI automaticky působí na nízké riziko, reverzibilní operace.

CRM

Domácí obrazovka AI CRM

Každé ráno otevřete centrálu, abyste viděli, co se stalo, co potřebuje pozornost a co dělat dál.

Řídící centrum
Řídící centrum CRMCRM domácí s přepínačem s přednastavením / Win- rate / Pipeline, váženým předpokladem KPI a frontou návrhů AI s schválením a odklonem v každé řadě.Řídící centrum CRMpracovní prostorPředpověďVýhraPotrubíPOTRAVINOVÁ DOPRAVA$74k87%Návrhy AI · schvalovat frontuVytvořit dohodu · Acme $24kz chatu s kupujícímSchváleníRozpustitPřesunout Nimbus → Návrhpozitivní odpověď detekovánaSchváleníRozpustitÚkol záznamu · sledovat vrcholžádná aktivita ve dnech 7SchváleníRozpustit1TOGGLEPředpověď · Výhra · Pipeline2AI PROPOSESNabídky, etapy, úkoly3YOU DECIDESchválení nebo zamítnutí
Skutečné velitelské centrum: přepínání mezi prognózou, výherní rychlostí a Pipeline, a pracovat AI návrh fronty, schválit nebo zamítnout dohody, jevištní pohyby a úkoly, které navrhuje.

Co ukazuje velitelské centrum

Dnešní čísla

Hodnota potrubí, obchody won / lost, nové tipy, aktivní obchody, a trend příjmů, snímek vašeho současného stavu.

Co OpsIQ našel

Objevené poznatky: pozastavené obchody, rizikové účty, nové příležitosti, problémy s kvalitou údajů a tržní signály.

Co OpsIQ udělal

Akce, které AI přijala (v Autopilotu) nebo navrhla (v Copilot): postupné pokroky, aktualizace skóre, obohacení kontaktů a vytváření úkolů.

Potřebuje schválení

Fronta návrhů AI čeká na vaše rozhodnutí. Každý ukazuje navrhovanou akci, odůvodnění, a důkazy. Schválit, upravit, nebo odmítnout.

Další tahy

AI- zařadil seznam 10 nejdůležitější věci, které mají udělat dnes: sledovat na horké obchod, zkontrolovat na-riziko účtu, výzkum nové vedení, atd.

Stav pomocníka

Zdraví agentů AI: Capture, Data Steward, Deal Intelligence, Dead Coach, SDR, Retention. Green = běh, jantar = potřebuje pozornost, červená = chyba.

Výsledky

Sledování ROI: obchody ovlivněné AI, ušetřené čas, přesnost předpovědí a srovnání s manuální CRM prací.

Ranní briefing workflow

1
Přečtěte si dnešní čísla

Zkontrolujte vývoj zdraví a příjmů potrubí.

2
Vyčistit schvalovací frontu

Prohlédněte si každý návrh AI. Schválit bezpečné akce, upravit tam, kde je to potřeba, odmítnout špatné návrhy.

3
Zkontrolujte, co OpsIQ našel

Čtěte AI postřehy. Jsou nějaké obchody v ohrožení? Existují nové příležitosti?

4
Zapracovat na dalším seznamu pohybů

Začněte s nejvyšší prioritou. AI zařadil tyto podle naléhavosti a potenciálního dopadu.

Dostávají se po volnu

Scénář:
Co se stalo, když jsi byl pryč?
Co dělat:

Otevřete velitelské centrum a zkontrolujte: (1) "Co OpsIQ Ukazuje všechny akce AI během vaší nepřítomnosti. (2) "Potřebuje souhlas" ukazuje návrhy, které čekají na váš přezkum. (3) "Co OpsIQ Nalezeno "zdůrazňuje naléhavé věci. (4) Nastavte datový rozsah přístrojové desky na dobu nepřítomnosti, abyste viděli trend.

CRM

Kontakty, společnosti a dohody

CRM organizuje vaše obchodní vztahy do čtyř objektů: Kontakty (lidé), Společnosti (organizace), nabídky (příležitosti k příjmu) a Úkoly (akce navazující na činnost).

Objekty CRM
Objekty CRMKontaktní záznam spojený s objekty společnosti, Deal a Task v připojeném grafu.Objekty CRMpracovní prostorKontaktosoba · e-mail · telefonSpolečnostaccountsPlatíPříležitost k získání příjmůÚkolakce navazující na1OBJECTSKontakty, společnosti, obchody2LINKEDJeden připojený graf3TASKSPřiložené doprovodné úpravy
Čtyři hlavní objekty (kontakty, firmy, obchody a úkoly) spojené do jednoho připojeného zákaznického grafu.

Kontakty

Co je to kontakt

Osoba ve vašem CRM. Mohou být zákazník, vyhlídka, partner, nebo vedení. Kontakty mají e-mail, jméno, společnost, tagy, životní cyklus a skóre.

Hledání kontaktů

Pomocí vyhledávacího panelu najít podle jména, e-mailu, společnosti, nebo tagy. Použijte filtry: životního cyklu fáze, olověné skóre, zdroj, země, poslední datum činnosti, přidělený vlastník.

Kontaktní profil

Klikněte na kontakt, aby viděli jejich celý profil: osobní informace, společnost, obchody, aktivity, vstupenky, chaty, návštěvy webových stránek, skóre a AI vhled.

Skóre horka

A0-100 skóre vypočteno z signálů chování: návštěvy webových stránek, e-mailové připojení, chat interakce, historie nákupu a recenze. Vyšší = teplejší.

Společnosti

... další lístky...
Spojení kontaktní společnosti

Kontakty jsou propojeny s firmami prostřednictvím e-mailové domény nebo manuálního přiřazení. Jedna společnost může mít mnoho kontaktů.

Nabídky

Co je dohoda?

Příležitost k získání příjmů. Nabídky mají titul, množství, potrubí, jeviště, pravděpodobnost vítězství, datum uzavření, přiděleného vlastníka, a související kontakty / společnost.

Pravděpodobnost výhry

Procentní šance na výhru. Nastavte ručně nebo spočítanou AI na základě vašich historických výherních dat. Řídí váženou předpověď.

Rozdat zdraví

Zelená (zdravá), oranžová (ohrožená), nebo červená (zastavena). Na základě aktivity regency, fáze trvání a signály zapojení.

Úkoly

Co je úkol

Následné akce přidělené osobě. Úkoly mají název, datum splatnosti, prioritu, typ (volání, e-mail, setkání, jiné) a související kontakt / obchod.

Úkoly vytvořené AI-

AI vytváří úkoly automaticky, když zjistí, že něco potřebuje pozornost: sledovat na pozastavené dohody, reagovat na účet na riziko, výzkum nové vodítko.

Hledání horkých stop

Scénář:
Chcete vidět všechny kontakty v Británii, které nebyly kontaktovány v poslední době.
Co dělat:

Přejděte na Kontakty. Filtrujte podle: Olověné skóre > 80, Country = Spojené království, Poslední činnost > 7 dny před. Třídit podle olova skóre sestupný. Jedná se o vaše nejžhavější zanedbávané stopy, prioritizovat outtage.

Vytvoření dohody z kontaktu

Scénář:
Kontakt se právě vyjádřil zájem o váš podnikatelský plán během chatu.
Co dělat:

Otevřete kontaktní profil. Klikněte na "Vytvořit dohodu". Zadejte název transakce (např. "Acme Corp - Enterprise Plan"), množství, potrubí a jeviště (např., "Kvalifikované"). Nastavte datum uzavření a přiřaďte si jej. Trenér Deal začne sledovat tuto příležitost.

CRM

Plynovod (vaše deal board)

Pipeline je vizuální deska, kde se obchody pohybují po etapách zleva doprava. Přetáhněte a kapku karty na předem nabídky. Každá karta ukazuje částku transakce, vyhrát pravděpodobnost, a zdravotní stav.

Potrubí
Plynovod CRMDisplej potrubí s Open- deals, Open-value, Weighted- prospective a Attributed-dealls statistika, tlačítko New- deal, fronta AI Approst a Olověná / Kvalifikovaná / Won Board.Potrubípracovní prostorOtevřené obchody23Otevřená hodnota128 tisíc dolarůVážená prognóza$74kPřijaté obchody12+ Nová dohodaPovolit frontu2 k přezkoumáníOlovoVolt Inc.$4kLumeCity in Italy6 tisíc dolarůKVALIFIKOVANÉNimbusCity in Italy30 tisíc dolarůVrchol9 tisíc dolarůWINOrbit48 tisíc dolarů1LIVE STATSOtevřená hodnota a vážená prognóza2AI QUEUESchválení navrhovaných dohod3BOARDTažením obchodů podle stupně
Skutečná obrazovka potrubí: živé statistiky (otevřená hodnota, vážená prognóza), fronta AI Approst pro navrhované obchody a drag- and-drop board.

Použití potrubí desky

1
Zobrazit své nabídky

Plynovod ukazuje všechny aktivní obchody jako karty uspořádané ve sloupcích (etapách). Každý záhlaví sloupce ukazuje celkovou hodnotu obchodů v této fázi.

2
Přetáhněte k postupu

Přetáhněte kartu do další fáze. Výhra a okamžitě počítá s aktualizací. Pokud se pohyb nezdaří (chyba ověření), karta přeskočí zpět do původní polohy.

3
Štítky na kartě

Zelená značka = zdravá (nedávná aktivita, na trati). Amber = v nebezpečí (zpomalování, vyžaduje pozornost). Červená = zastavena (žádná činnost příliš dlouho).

4
Kliknutím na podrobnosti

Klikněte na kartu pro otevření panelu s detaily dohody s kontakty, aktivity, Deal Coach stručný a rychlé akce.

Schvalovací fronta

Návrhy AI se objevují ve schvalovací frontě na horní straně potrubí. Každý návrh ukazuje, co chce AI dělat, proč a důkazy. Můžete:

Schválení

Přijetí návrhu je. Akce probíhá přes Spořicí vrstvu a je zaznamenána v deníku.

Upravit

Před schválením návrhu změňte návrh. Například změňte navrhovanou fázi nebo upravte částku.

Odmítnout

Uzavírat návrh. AI se učí od odmítnutí, aby v budoucnu lépe navrhovala.

Vysvětlená pravděpodobnost výhry

Výherní pravděpodobnost lze nastavit ručně nebo vypočítat AI. Když AI vypočítá, použije model vyškolený na vlastní uzavřené obchody (vyhrál a ztratil). Pokud nemáte dostatek historických dat, AI používá fázi výchozí pravděpodobnosti. Pravděpodobnost pohání váženou předpověď: $10,000 obchod v 30% pravděpodobnost přispívá $3,000 k "pravděpodobné" prognóze.

Přesun dohody na Won.

Scénář:
Zákazník podepsal smlouvu a zaplatil.
Co dělat:

Přetáhněte tu kartu do fáze "Won". OpsIQ (1) Označit dohodu jako uzavřený-won. (2) Aktualizovat předpověď. (3) Přidat "Won" činnost do časové osy. (4) Pokud je nakonfigurován, spustí se událost webhook (crm.deal.won). (5) Aktualizujte fázi životního cyklu na "Zákazník".

Zachycení uvízlých obchodů

Scénář:
Chcete najít obchody, které byly ve stejném stádiu příliš dlouho.
Co dělat:

Hledejte červené (stagled) odznaky na potrubí desky. Tyto obchody nemají činnost delší než nakonfigurované hnijící práh (nastaveno v CRM Konfigurace > Pipelines). Klikněte na každé zastavil dohodu vidět Deal Coach doporučení pro reaktivaci.

Můžu dostat několik potrubí?+

Ano. Přejděte na CRM Configuration > Pipelines vytvořit další potrubí. Společné případy použití: oddělené potrubí pro nové podnikání vs. obnovování, nebo pro různé produkty / služby.

Co se stane, když přetáhnu dohodu na "Ztracené"?+

Dohoda je označena jako uzavřený-ztratil. Budete požádáni z důvodu ztráty. Dohoda je odstraněna z aktivní desky, ale lze ji nalézt v uzavřeném filtru deals. Kontakt zůstává v CRM.

CRM

Ujednání koučování

Deal Coach analyzuje každou dohodu a dává vám stručný s zdravotním stavem, rizikové signály, klíčové lidi, kvalifikační kontrolní seznam, setkání přípravné, a navrhl další akce. Vše je získáno. Trenér ukazuje, které jízdenky, chat, nebo činnost každý nárok pochází z.

Dohodnuto, trenére.
Dohodnuto, trenére.Deal card výpis AI- detekovány rizikové signály se zdroji důkazů, kromě doporučení AI a draft- e-mailové tlačítko.Dohodnuto, trenére.pracovní prostorAcme Corp · $24,000Fáze: Návrh · 60% vítězstvíPODÍLY RIZIKAŽádná odpověď v 10 dnůŠampion byl zticha.Soutěžitel zmíněný v chatuZdroje: jízdenka #482 · chat 6/12 · e-mailová nitAI doporučujeZnovu zapojit ekonomikukupující s RI rekapitulacía plán na uzavření dne 7-.Napište email1SIGNALSProč dohoda může uklouznout2SOURCEDKaždé tvrzení cituje důkazy.3AKCEOne- klikněte na další krok
Trenér signalizuje, proč by dohoda mohla sklouznout (každý signál cituje jeho zdroj) a podává vám další krok k přijetí.

Co vám trenér říká

Zdravotní vysvětlení

Proč je dohoda zdravá, v ohrožení, nebo pozastavena. Specifické signály: dny ve fázi, poslední kontaktní datum, frekvence aktivit, konkurent zmiňuje, námitek vzory.

Signály

Zařazen do: námitky vzneseny, konkurent zmiňuje, cenových diskusí, podporu indikátorů rizik, obnovení / rozšíření signálů. Každý signál odkazy na jeho zdroj (chat přepis, jízdenka, e-mail, činnost).

Mapa šampionů a blokátorů

Kdo pomáhá dohodě (šampion) a kdo se brání (blokátor). Na základě interakční analýzy a kontaktní role.

Kontrolní seznam kvalifikací

MEDDIC nebo BANT kontrolní seznam (konfigurovatelný) ukazující, která kritéria kvalifikace jsou splněna a která chybí. Stupeň: A, B, C, D nebo F.

Příprava zasedání

Před plánovaným zasedáním vytvoří trenér stručný přehled: program, klíčové body k pokrytí, otázky, které je třeba položit, rizika, která se budou řešit, a materiály, které bude třeba připravit.

Přijímat a volat plány

Navrhl další zprávu nebo call skript založený na aktuálním stavu obchodu a nedávných interakcí.

Časová osa důkazů

Každé tvrzení, které trenér provede, odkazuje na zdroj: číslo tipu, ID přepisu chatu, datum činnosti nebo návštěva webových stránek.

Jak se používá trenér

1
Přečtěte si ten článek.

Otevřete jakýkoliv obchod a posuňte se do sekce Deal Coach. Přečtěte si zdravotní stav a klíčové signály.

2
Úzké mezery v kvalifikaci

Zkontrolujte seznam kvalifikačních požadavků. Pokud chybí "Ekonomický kupující", plánujte identifikovat a zapojit držitele rozpočtu.

3
Zákon o návrzích

Trenér navrhuje konkrétní další akce. Klikněte pro vytvoření úkolu, navrhnout e-mail, nebo naplánovat schůzku, všechny směrované přes schvalovací frontu.

Příprava na velkou schůzku

Scénář:
Zítra máte schůzku s vyhlídkou ohledně dohody $50,000.
Co dělat:

Otevřete dohodu a přečtěte si sekci Přednáška setkání. Zobrazuje: (1) Klíčové body jednání založené na nedávných interakcích. (2- Námitka, které vznesli minulý týden.3) Soutěžitel, o kterém se zmínili v podpůrných lístcích. (4Otázky, které se mají zeptat na jejich časovou osu. (5) Rizikové faktory k proaktivnímu řešení. Použijte tento stručný pro přípravu cílené, důkazní agenda.

Pochopení, proč je obchod ohrožen

Scénář:
Na potrubí je červený odznak na dohodě, o které jste si myslel, že jde dobře.
Co dělat:

Klikněte na dohodu a přečtěte si Deal Coach zdravotní vysvětlení. Mohlo by se říci: "Tato dohoda byla ve fázi návrhu pro 22 dny (práh: 14). Poslední kontakt 11 Před několika dny. Primární kontakt otevřel podpůrnou jízdenku o problematice migrace dat 5 Před dny (vstupenka # T-892). Návrhy: zabývat se migračním problémem a naplánovat následný hovor. "Nyní přesně víte, co opravit.

CRM

Předpověď a zprávy

Prognóza třídy Board- s obranným rozsahem, deal- úroveň vysvětlení a přesnost sledování, takže můžete prokázat a vysvětlit svá čísla.

Předpověď
PředpověďČtvrtletní předpovědní číslo s pásmy Commit, Best- case a Pipeline a poznámkou o přesnosti.Předpověďpracovní prostorLETECKÁ PORADA312k dolarů.87% k cíliZavázatNejlepší případPotrubíAI- vážená cenou zdraví a historie · přesnost sledována v průběhu času1KATEGORIEZavázat se k potrubí2AI-WEIGHTEDPodle dohody zdraví3PROVABLEPřesnost sledována
Zavázat, best- case a potrubí na první pohled, AI- vážená dohodou zdraví, s přesností sledovat, takže můžete bránit.

Kategorie předpovědí

Zaslíbené

Vyjednává s 80% nebo vyšší pravděpodobnost výhry. Jedná se o vaše nejpravděpodobnější výhry, to by mělo být vaše minimální očekávané příjmy.

AI- vážená pravděpodobnost

Všechny otevřené nabídky vážené jejich AI- vypočtená pravděpodobnost výhry. To je nejrealističtější předpověď toho, co uzavřete.

Nejlepší případ

Všechny otevřené obchody v plné hodnotě. To je maximální možný příjem, pokud vše jde perfektně (to málokdy dělá).

Interval spolehlivosti

An 80% Pravděpodobnostní pásmo zobrazující realistický rozsah. Příklad: "Pravděpodobně uzavřete mezi $45,000 a $72,000 Tento čtvrťák. "

Co se změnilo a proč

Předpověď obsahuje přepočet na změnu za týden. Když vaše předpověď klesne o $15,000, zpráva vysvětluje přesně, které dohody způsobily změnu: "Dohoda A sklouzl do příštího čtvrtletí ($8,000), Deal B lost ($5,000), Deal C reduced in value ($2,000)."

Sledování přesnosti

Předpověď MAPE

Průměr absolutní procentuální chyba: jak daleko byly vaše prognózy historicky. Nižší je lepší. Mape 15% znamená, že vaše předpovědi jsou obvykle uvnitř 15% skutečných výsledků.

Kalibrace pravděpodobnosti výhry

Brier skóre měření, jak dobře vyhrát pravděpodobnosti shodují skutečné výsledky. Pokud se dohodne na 70% pravděpodobnost ve skutečnosti vyhrát 70% v době, kalibrace je dobrá.

Víkendové snímky

OpsIQ zachycuje snímek vaší předpovědi každý týden (přes cron). Časem můžete vidět, jak se vaše predikce zlepšuje.

Válečky a varování

Přepočet na perstage

Kolik obchodů se pohybuje z každé fáze do další. Pokud 80% Přechod z kvalifikované do návrhu, ale pouze 20% přejít od návrhu k vyjednávání, vaše návrhy by mohly potřebovat práci.

Výhra za zdroj per- source

Které hlavní zdroje produkují nejvíce výher. Investovat více do vysoce-win- rate zdrojů.

Výkonnost předvlastníka

Jak každý člen obchodního týmu provádí: výhry z obchodů, hodnota potrubí, průměrná velikost obchodu, výherní cena.

Varování

Sandbagging (nerealisticky nízké pravděpodobnosti), převažující (nereálně vysoké) a committed-at- risk (high-pravděpodobnost obchody ukazují stay signály).

Pochopení poklesu předpovědi

Scénář:
Vaše čtvrtletní předpověď klesla z $180,000 do $155,000 od minulého týdne.
Co dělat:

Otevřete stránku Předpovědi a zkontrolujte "Co se změnilo". Zpráva ukazuje: "Acme Corp deal (Acme) ($15,000) přesunuto do Lost, konkurent vybrán. Beta Inc deal ($8,000 Nová dohoda s Gamma LLC ($3,000) přidána tento týden. "Čistá změna je -$20,000 + $3,000 = -$17,000, Vysvětlující pokles z $180K na $163K (se zbývajícími $8K vysvětleny pravděpodobnostní úpravy na jiných obchodech).

CRM

Hledání nových obchodů

Prospecting Agent vám pomůže najít a výzkum potenciálních zákazníků. Popište svého ideálního zákazníka, přidat cílové společnosti, a nechat AI výzkum, skóre, a návrh první dotykový dosah.

Vyhledávání
VyhledáváníSeznam společností AI- found prospekt s koncovými poznámkami, skóre a draft- outtail button.Vyhledávánípracovní prostorProspekty zjištěné agentem SDRNorthwind Ltd.SaaS · 50 zaměstnanci · podpora při náboru88Návrh na informační činnostCobalt MfgVýroba · 200 pracovníci74Návrh na informační činnostMesa RetaileCommerce · 30 pracovníci69Návrh na informační činnostVega HealthZdravotní péče · 80 pracovníci63Návrh na informační činnost1FINDCílové účty zdrojů AI2SkóreZařazeno podle & záměru3DRAFTPrvní dotyk, který je pro tebe napsaný
Agent SDR najde cílové společnosti, dá je do kondice a načrtne první kontakt na vaši recenzi.

Nastavení času

1
Popište svého ideálního zákazníka

Přejděte na CRM Configuration > Prospecting. Popište svůj ideální profil zákazníka (ICP): cílový průmysl, velikost firmy, názvy pracovních míst, geografické zaměření, podmínky utkání produktů a minimální skóre uložení. Příklad: "B2B SaaS společnosti s 50-500 zaměstnanci v USA / Velké Británii, kteří prodávají vývojové nástroje, s VP prodeje nebo vedoucí růstu jako primárním kontaktem. "

2
Přidat cílové společnosti

Zadejte domény společnosti nebo jména, které chcete prozkoumat. Můžete také nechat AI navrhnout společnosti na základě vašeho ICP.

3
Přezkum výsledků výzkumu

AI obohatí každou společnost dostupnými údaji: velikost, průmysl, technický stack, nedávné zprávy, a fit skóre s vysvětlením.

4
Schválit oslovení

Pro dobré-fit společnosti, AI navrhuje personalizované first-touch zprávu. Přezkum a schválit ve frontě.

Skóre

Každá vyhlídka dostane0-100 skóre five na základě pěti faktorů:

IKP fit

Jak dobře se společnost shoduje s vaším ideálním zákaznickým profilem (průmysl, velikost, umístění).

Nouzové signály

Je zde důkaz, že potřebují váš produkt nyní? Pracovní příspěvky, technické změny, stížnosti na konkurenty.

Proxy rozpočtu

Velikost společnosti, fáze financování a ukazatele příjmů naznačují dostupnost rozpočtu.

Shoda produktů

Jak důležitý je váš výrobek pro jejich podnikání založené na průmyslu a technologii.

Podpůrné vybavení

Zda můžete efektivně sloužit tomuto zákazníkovi (časové pásmo, jazyk, složitost).

Výzkum cílové společnosti

Scénář:
Chcete-li vyhodnotit, zda acme.com stojí za to sledovat.
Co dělat:

Přidat acme.com AI se vrací: Fit skóre 78/100 (dobře se hodí). Důvody: B2B SaaS, 120 zaměstnanci na US- bázi, nedávno najal VP prodeje (naléhavý signál), používá konkurenta X (zápas výrobků). Nákupní signály: navštívil svou cenovou stránku dvakrát minulý měsíc (ze sledování webových stránek). Nejlepší kontakt: [email protected] (VP of Sales). Vypracovaný otvírák odkazuje na jejich nedávné nájemné a ceny stránky návštěvy.

CRM

Automatické sekvence sledování

Sekvence automatizovat multi- kroky follow- up: mix e-mailu, čekat, úkol, volání, a webhook kroky, které běží automaticky po schválení počáteční odeslání.

Sekvence
Postupné sekvenceHorizontální posloupnost proudění: Email, čekat tři dny, Email a pak úkol, s odpovědí na dotaz.Postupné sekvencepracovní prostorPo schválení prvního odeslání →E-mailÚvodPočkej.3 dnyE-mailPo-upÚkolVoláníKroky mohou být e-mail, čekat, úkol nebo webhook. Odpověď automaticky zastaví sekvenci.1AUTOMATENásledný postup2STEPSEmail · počkejte · úkol · webhook3YOU APPROVEPrvní odeslání je zablokováno
Automatizované multi- krok follow- up (email, čekat, e-mail, úkol), že jste schválit první a odpověď se automaticky zastaví.

Jak sekvence fungují

1
Vytvořit sekvenci

Definujte kroky: email, čekat 3 dny, e-mail, počkat 5 dny, úkol (pokud není odpověď), e-mail. Každý e-mailový krok má šablonu můžete přizpůsobit.

2
Zapsat kontakty

Přidejte kontakty do sekvence. AI může také navrhnout zápis z vyhledávání výsledků.

3
Automatické provedení

Kroky běží automaticky podle plánu. Pokud kontakt v kterémkoli bodě odpoví, sekvence se zastaví automaticky.

4
Výsledky dráhy

Viz otevřené kurzy, sazby odpovědí, přepočítací koeficienty, a odhlášení za krok. Použijte to pro optimalizaci své posloupnosti.

Odpovězte na otázku

Pokud kontaktní osoba odpoví, AI odpověď klasifikuje:

Pozitivní

Zájemci, chtějí si promluvit. Sekvence pauz, úkol vytvořen pro pokračování.

Námitka

Má obavy, ale ne odmítnout. Sekvence pauzy, úkol vytvořen s námitkami podrobnosti.

Odhlásit se

Chce přestat přijímat zprávy. Kontakt je trvale potlačen.

Teď ne.

Zaujalo mě načasování, ale není správné.

Špatná osoba.

Zastavit sekvence, kontakt označen jako kritický.

Podpora

Otázka podpory, ne prodejní odpověď. Sekvence pauz, vytvořené jízdenky.

Anti- spam ochrana

Opt- out manipulace

Žádosti o odhlášení jsou okamžitě vyslyšeny a kontakt je potlačen ze všech budoucích sekvencí.

Denní víko

Denní limit pracovní mezery (výchozí: 1,000 emaily). Zabraňuje hromadné odesílání, které spouštěcí filtr spamu.

Mezní hodnota pro per- kontakt

Maximální 1 zpráva na kontakt za den. Zabraňuje zdrcující individuální lidi.

Manipulace s překryvem

Kroky, které přesahují denní uzávěr, jsou odloženy na následující den. Nikdy se neklesnou nebo nepřeskočí.

Co se stane, když kontakt otevře podpůrnou jízdenku během sekvence?+

Sekvence automaticky zastaví. Podpora má přednost před dosažením informací. Po vyřešení problému podpory lze sekvenci obnovit ručně.

Mohu udělat kroky pro zkoušku A / B?+

Ne přímo v rámci sekvencí, ale můžete vytvořit dvě sekvence s různými zpráv a porovnat jejich výsledky.

CRM

Růstové nástroje

Jedna stránka pod CRM, která drží růstový motor: opakující se příjmy (MRR / ARR), katalog produktů, lead-capture formuláře, rezervační odkazy a vedení. Vše zde píše přímo do CRM. Takže formulář podání nebo rezervovaný hovor je kontakt s historií, ne řádek v tabulce.

Co žije na stránce

Nahrazující příjmy

Příjmy

MRR a ARR se promítají z vaší skutečné účetní knihy. Předplatné jsou seskupeny od plateb na platformu, fakturační cyklus je odvozen z platebních mezer a předplatné selže, když platba má zpoždění za 1.5 krát jeho cyklus. Zákazníci odkaz na CRM kontakty automaticky, když účetní kniha nese jejich e-mail.

Katalog produktů

Katalog

Jeden zdroj pravdy pro to, co prodáváte. Citace vytáhnout název a seznam ceny z katalogu, a přijaté citace se převalují do příjmů podle produktu. Archiv produktů, nikdy smazat.

Formuláře pro zachytávání vodítek

Zachycení

Každý formulář dostane hostovanou stránku plus iframe vložený kód pro vaše vlastní stránky. Odesílání se stanou kontakty, majitel dostane oznámení, a vaše pravidla směrování přiřadit vedení.

Odkazy na rezervace

Plánování

Sdílet odkaz, nechat vyhlídky vybrat volné slot. Slots respektovat pracovní dobu organizátora, časové pásmo a stávající setkání. Rezervace vytváří schůzku, e-mailem vyhlídku potvrzení a oznamuje pořadatele.

Směrování olova

Směrování

Územní pravidla běží první, pak pole pravidla (zápas pole, jako je země nebo zdroj), pak round-robin přes váš rep pool. To trains CONTTACTS AND DEALS stejně, bez ohledu na stav dohody: won deal stále potřebuje majitele pro commission aspartament, účet odpovědnost a controlling-up, a v režimu vlastník nebo tým Viditelnost Unowned záznam je neviditelný pro každého, ale manažer. Záznamy vytvořené automatizací (konektor prodej, chat, import) nenesou žádný interaktivní tvůrce, takže jsou směrovány stejnými pravidly na vytvoření spíše než vlevo vlastník. Cokoliv, co již má majitel je nikdy znovu podepsaný.

Vytvořte si první formulář

1
Otevřené růstové nástroje

Přejděte na CRM, pak růstové nástroje, pak Lead- zachycení formuláře sekce.

2
Pojmenujte to a vyberte pole

Zadejte název a seznam oddělených polí, například jméno, e-mail, telefon, zpráva. Email je vždy vyžadován.

3
Sdílet nebo vkládat

Kopírovat hostovaný odkaz sdílet kdekoli, nebo kopírovat vložený kód a vložit do jakékoli stránky na vašich webových stránkách.

4
Sledovat stopy přichází

Každé podání je CRM kontakt s formá. submitted činnost, oznámení vlastníka a automatické směrování.

💡
Veřejné zachytávací stránky používají vlastní adresu vašeho pracovního prostoru. Pracovní prostory Cloud využívají přiřazenou subdoménu (společnost.opsiq.help), takže odkaz vždy řeší správná data.

Budova - v ochraně

Boty vidí úspěch, nic nevidíte.

Skryté pole medu tiše zavrhne robotí podání.

Míra omezená

Deset podání za hodinu na IP adresu napříč formuláři a rezervacemi.

Souhlas zůstává upřímný.

Přidání formuláře neuděluje souhlas s uvedením na trh. Pouze explicitní kontrolní políčko souhlasu.

Žádná dvojitá rezervace

V okamžiku rezervace je znovu ověřen slot na základě nové kontroly dostupnosti.

Odkud se berou opakující se příjmy?+

Ze stejné obchodní knihy, kterou vaše prodejní stránka používá, napájená fakturačními konektory. Použijte Resynchronizaci z vyúčtování po připojení nové platformy.

Mohu použít formuláře bez webových stránek?+

Ano. Každý formulář má na vlastní adrese hostovanou stránku, která funguje samostatně, s nebo bez JavaScript.

CRM

Hub zpráv (SMS a WhatsApp)

Jeden konektor, až dvacet bran. Připojte SMS a WhatsApp poskytovatele, které ve skutečnosti používáte, označte jednu jako výchozí, a vyberte některý z nich při psaní kontaktu. Souhlas je kontrolován CRM před jakýmkoliv kontaktem brány.

Nastavit to

1
Povolit konektor

Na stránce Connectors otevřete Messaging Hub (SMS a WhatsApp) a zapněte to.

2
Přidat poskytovatele

Ve stejném šuplíku, nebo v CRM růstových nástrojích, vybrat bránu z dropdown (Twilio, Vonage, Termii, Meta WhatsApp Cloud, Infobip a další), vložit své API pověření a připojit. Můžete přidat několik, včetně stejné brány dvakrát s různými účty.

3
Propojit webháček

Každý vstup poskytovatele zobrazuje svůj vlastní webhook URL s kopírováním tlačítka. Vložte jej do zprávy o dodání brány a inunlimit- message nastavení, aby se stav doručení a odpovědi zpět do OpsIQ.

4
Odeslat z kontaktu

Otevřete kontakt a použijte tlačítko SMS nebo WhatsApp. Pokud kanál podporuje více než jeden poskytovatel, volič vám umožní vybrat, jinak je použit výchozí.

Souhlas je na prvním místě.

Pouze udělený souhlas

Neznámý souhlas není souhlas. Odeslat odmítne, pokud SMS souhlas není výslovně udělen. WhatsApp jezdí na stejném souhlasu.

Nekontaktuje vždy vyhraje

Nekontaktuj vlajku, která blokuje každý kanál, ať je nastaven cokoliv.

Pohrdání ctí

Kontakty na seznamu odrušení se nikdy neodesílají.

Přejmenovávají svůj důvod.

Blokovaný send vám řekne přesně proč, takže můžete opravit data místo hádat.

Pro vývojáře: Webhook kontrakt

Tvar URL

https://your-address/opsiq/cron/messaging_webhook.php?sk=SITE_KEY&e=ENTRY_ID&t=TOKEN. Při připojení poskytovatele je vyražen vstupní symbol a nikdy se neotáčí při editaci.

Formáty porozuměny

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

Účinky

Zprávy o dodání označují řádek informační knihy, který nese ID zprávy poskytovatele jako doručené nebo odkopnuté. Přichozí zprávy odpovídají kontaktu telefonním číslem uvnitř pracovního prostoru, zemi jako message. received činnost, a označit rozhovor odpověděl.

Režim selhání

Chybné nebo chybějící token odpovědi 403. Neznámé užitečné zatížení se počítá a ignoruje, nikdy fatální, takže špatně nastavená brána nemůže prolomit koncový bod.

Které brány jsou podporovány?+

Twilio, Vonage, Plivo, MessageBird, Sinch, Infobip, Telnyx, ClickSend, Termii, Africa Talking, BulkSMS, Textlocal, Meta WhatsApp Cloud, 360dialog, SMSAPI, Gupshop, Kaleyra, D7 Networks, Hubtel, a vlastní HTTPS webháček pro cokoliv jiného.

Jsou doklady v bezpečí?+

Záruky jsou uloženy v nastavení konektoru a nikdy se neopakují zpět do prohlížeče. Upravování položky s prázdným tajemstvím uchovává uložený.

Může AI poslat zprávy?+

Ano, prostřednictvím registrovaných akcí, které vyžadují potvrzení a spustit stejný souhlas brány. AI může také seznam připojených poskytovatelů vysvětlit, co je k dispozici.

CRM

Zachování a růst zákazníků

Řízení životního cyklu vám pomůže chránit stávající příjmy. Každý účet dostane Churn riziko skóre, zdravotní skóre, expanzi skóre, a doporučená úspěšnost playbook.

Životní cyklus
Deska životního cykluNa každé kartě je karta pro zákazníky- celoživotní (Onboarding, Active, At-risk, Regeneral) se zdravotnickými tyči.Životní cykluspracovní prostorVÝBĚRAcidzdraví 40ÚČINNÉGlobexzdraví 88InitechCity in Italyzdraví 76(-) ÚVĚROVÉ RIZIKOSojovýzdraví 28PRODLOUŽENÍUmbranovinky v 12dexpanze + $8k1STAGESNastupování do obnovování2SCOREDZdraví a rozšíření3PLAYBOOKDoporučeno další tah
Zákazníci se pohybují přes nastupování, aktivní, at- riziko a obnovení, každý zaznamenal pro zdraví a rozšíření s příručkou.

Lifecycle board

Mapa jeviště

Vizuální deska ukazuje, kde každý účet stojí: Olovo, Prospect, Příležitost, Zákazník, Rozšíření, Obnova, V riziku, Koordinováno.

Účty s rizikovým rizikem

Účty označené vysokým rizikem vyvolání. Každý z nich ukazuje nejvyšší ovladač (podpůrný hřeb, nečinnost, platební selhání) a doporučenou hru na ukládání.

Rozšíření možností

Účty, které ukazují signály připravenosti k nákupu více: vysoké využití, funkce žádosti, plán šetření.

Splácení

Účty s nadcházejícími daty obnovení, členěné podle úrovně rizika a hodnoty příjmů.

Jak OpsIQ detekuje riziko churn

Riziko vyvolání selhání se vypočítá z více signálů spojených dohromady:

Signály CRM

Udělat zdravotní, nečinnost, nedávné ztráty, klesající angažovanost.

Signály podpory

Otevřený počet lístků, zvýšení objemu lístku, negativní sentiment, eskalace.

Zapojování produktů

Frekvence přihlášení, používání funkcí, návštěvy stránek, API volání.

Signály pro vyúčtování

Neúspěšné platby, opožděné faktury, žádosti o snížení hodnoty, zrušení návštěvy stránek.

Příručky

Uložit hru

Pro rizikové účty: proaktivně se obraťte na obavy, nabídněte podporu, v případě potřeby vystupňovat.

Obnovitelná hra

Pro nadcházející obnovení: potvrďte spokojenost, přehodnoťte použití, současná hodnota, případně nabídněte pobídku.

Rozšiřující hra

Pro readytogrow účty: současné možnosti upgrade, sdílení úspěchů, demonstrujte ROI.

Adopční hra

Pro nedosahování účtů: nabízejí školení, sdílejí osvědčené postupy, umožňují funkce, které nepoužívají.

Zahlédnutí churn, než se to stane

Scénář:
Zákazník, který se obvykle přihlašuje denně se nepřihlásil pro 2 týdny, a oni otevřeli 3 Letenky tento měsíc.
Co dělat:

Na palubě Lifecycle je tento účet označen jako "At Risk" s řidiči: nečinnost (14 dny od posledního přihlášení) a podpůrný hřeb (3x normální objem tipu). Doporučené hrát: proaktivní informační volání pochopit, co se děje. Je tam problém výrobku? Jsou hodnocení konkurentů? Časný zásah může uložit účet.

CRM

Udržujte si údaje čisté.

Agent správce dat automaticky najde a opraví problémy kvality údajů: duplikáty, chybějící pole, nesrovnalosti a zastaralé záznamy.

Správce údajů
Správce údajůSeznam problémů kvality dat (duplikát, chybějící, staale, formát), každý s jednou kliknutím na opravu akce.Správce údajůpracovní prostorProblémy s daty, které našel správcův agentDuplikovat[email protected] a [email protected]SloučeníChybějící12 kontakty nemají žádnou společnostObohatitVyšlé38 obchody nedotčené pro 90+ dnyPřezkumFormáttelefonní čísla ve formátech 4Opravit vše1CATCHESDupes, mezer, zatuchlý2EXPLAINSProč to označilo každého3FIXESNa váš souhlas.
Správce udržuje váš CRM čistý, hledá duplikáty, mezery, zatuchlé záznamy a špatné formáty, upevňuje na schválení.

Co to chytá.

Duplikovat kontakty

Několik záznamů pro stejnou osobu (např., [email protected] a [email protected]). Správce navrhuje jejich sloučení.

Chybějící údaje

Kontakty bez e-mailu, obchody bez částek, společnosti bez domén. Navrhuje vyplnění z dostupných zdrojů.

Nevázané záznamy

Navrhuje propojení na základě e-mailové domény a kontextu, takže je možné vytvořit více kontaktů.

Nesoulad

Dohoda ve fázi "Won" s pravděpodobností 20%, kontakt označený "Zákazník" bez dohod, společnost s neodpovídající průmysl.

Špatné fáze

Nabídky, které byly ve stejné fázi příliš dlouho nebo kontakty, jejichž životní cyklus fáze neodpovídá jejich činnosti.

Jak se přípravek používá

1
Otevřít seznam správců

Jděte do CRM a najděte sekci správce dat (nebo ji otevřete z CRM Health).

2
Schválit bezpečné opravy

Zelené předměty jsou bezpečné: jasné duplikáty, zjevné chybějící údaje. Schválit je ve velkém.

3
Přečti zbytek.

Amber položky potřebují váš úsudek: možné duplikáty s mírnými rozdíly, navrhované změny fáze, společnost propojení. Přezkoumávat každý z nich.

Čištění duplikátních kontaktů

Scénář:
Správce našel "Johna Smithe ([email protected]) "a" J. Smith ([email protected]) ": stejný e-mail, různé názvy displejů.
Co dělat:

Správce navrhuje sloučení: vést záznamy s větší aktivitou, sloučit další reporty a aktivity. Přehodnotit návrh, upravit přeživší název displeje v případě potřeby, a schválit. Historie záznamů je zachována ve spojení kontaktu.

CRM

Vybudovat CRM

Sestavte si můj CRM umožňuje popsat nastavení CRM v jednoduché angličtině. OpsIQ generuje validovaný, reverzibilní plán a aplikuje jej na schválení. Žádné kódování, žádné ruční konfigurační kliknutí.

Vybudovat CRM
Vybudovat CRMNaturální-jazykový popis na levé straně produkující generovaný CRM plán etap, polí a segmentů na pravé straně.Vybudovat CRMpracovní prostorPopište své podnikáníJsme webová designová agenturaprodej měsíčních zásobníků ajednorázové projekty pro malépodniky.Vybudovat CRMGenerovaný plánFáze: Olovo → ZálohaTypy obchodů: zálohovač, projektPole: měsíční hodnotaObor: SMB, agenturaSekvence: na paluběPovolit & použít1DESCRIBEJednoduchá angličtina v2AI PLANSFáze, pole, segmenty3APPROVEAplikováno · žádné kódování
Popište své podnikání v angličtině; OpsIQ navrhuje celý CRM (stupně, pole, segmenty) a použije jej na schválení.

Jak to funguje

1
Popiš, co chceš.

Napište jednoduchý anglický popis nastavení CRM. Příklad: "Vytvořte si ropovod obnovení s etapami: Upcoming, Contacted, Vyjednávání, Obnovení, Lost. Skóre vede vyšší, když vidí ceny dvakrát".

2
Přezkum plánu

OpsIQ ukazuje náhled toho, co vytvoří: potrubí, fáze, pravděpodobnost, bodovací pravidla, životní cyklus pravidla. Přezkoumávat každý bod.

3
Aplikovat

Klikněte na tlačítko Aplikovat pro provedení plánu. Každá změna je zaznamenána jako svazek můžete vrátit v jednom kliknutí.

4
V případě potřeby se otočte.

Pokud něco není v pořádku, klikněte na tlačítko Oddo vrátit celý svazek. Váš CRM se vrátí do svého předchozího stavu.

Co můžeš postavit

Potrubí a etapy

Vytvořit pojmenované potrubí s vlastní fáze, výchozí pravděpodobnosti, a hnijící prahy.

Pravidla pro třídění

Zvýšení skóre na základě chování: "Skóre vyšší, když vidí ceny", "Sóre nižší, když navštíví kariéru stránku".

Pravidla životního cyklu

Automaticky postoupit do životního cyklu fáze: "Přesun na SQL, když žádají demo", "Přesunout se na zákazníka, když je dohoda vyhrána".

Vlastní pole

Přidat pole do kontaktů, obchodů, nebo společností: text, počet, datum, vybrat, checkbox, URL, e-mail.

Kontrolní seznam kvalifikací

Definujte seznam MEDDIC nebo BANT hodnocení Deal Coach proti.

Zavedení obnovovacího potrubí

Scénář:
Spravujete předplatné SaaS a potřebujete potrubí pro obnovu.
Co dělat:

Typ: "Vytvořte ropovod pro obnovu. 90 Dny pryč (10%), 60 Dny pryč (25%), Kontaktované (40%), vyjednávání (60%), Renewed (100%), Koordinované (0%). Nastavit hnijící práh na 14 dny. "OpsIQ generuje plán, přehodnotíte ho a klepněte na tlačítko Aplikovat. Plynovod se objeví na vaší stránce Pipeline okamžitě.

Co když popíšu něco, co není možné?+

Stavebnice generuje pouze akce, které umí validovat. Pokud si o něco požádáte mimo své schopnosti (např. "Integrovat s mým vlastním API"), zamítne žádost a vysvětlí, co může udělat místo ní.

Můžu vrátit změny?+

Ano. Každá akce Build My CRM je zachycena jako reverzibilní balík. Přejděte na CRM Health > Změnit historii vidět všechny balíky a odčinit některý z nich.

CRM

Nastavení CRM po vašem

Ruční konfigurace CRM pro týmy, které preferují kliknutí nad psaní. Všechna nastavení, která mohou vytvořit můj CRM, jsou také k dispozici jako tradiční pole formulářů.

Potrubí a etapy

Vytvořit, přejmenovat, přeobjednat a smazat potrubí a fáze. Nastavte výchozí pravděpodobnost výhry na etapu. Nastavit práh hnití (dny bez aktivity před tím, než je obchod označen "stagled").

Vlastní pole

Přidejte pole k deals, kontaktům, nebo firmám. Typy polí: text, počet, datum, vyberte (dropdown s předdefinovanými možnostmi), zaškrtávací políčko, URL, email. Vlastní pole se zobrazí na profilu objektu a v filtrech.

Kontrolní seznam kvalifikací

Definujte kontrolní seznam, který trenér Deal používá pro vyhodnocení obchodů. Vyberte MEDDIC, BANT, nebo vlastní sadu kritérií. Každá položka může být označena požadovanou nebo volitelnou.

Pravidla pro etapu životního cyklu

Definovat automatické přechody fáze: když kontakt splňuje podmínku (zobrazení cenových podmínek, předkládá formulář, provede nákup), jejich životní cyklus fázi automaticky postupuje.

Pravidla pro bodování v první řadě

Zvýšení nebo snížení olověných skóre na základě chování. Příklady: "Zobrazeno cenová stránka = +15 body "," Downloaded whitepaper = +10 body, "" Navštívená kariéra stránka = -5body. "Minimální počet lze nastavit (např.," musí zobrazit ceny alespoň 2 časy ").

Uložené pohledy

Vytvořte pojmenované kombinace filtru + třídit pro kontakty, obchody nebo firmy. Sdílejte názory s týmem. Nastavte výchozí pohled na typ objektu.

Přidání pravidla bodování olova

Scénář:
Chcete kontakty, které se zobrazí vaše cenová stránka dvakrát nebo více získat vyšší skóre.
Co dělat:

Přejděte na konfiguraci CRM > Pravidla pro scoring olova. Klikněte na možnost Přidat pravidlo. Nastavit: Událost = "pageview", URL obsahuje = "/pricing", Minimální počet =2, Skóre boost = +20. Uložit. Příště, když střelec běží, kontakty odpovídající tomuto pravidlu dostane +20 Na jejich hlavní skóre.

CRM

CRM kontrola zdraví

CRM Health je self-diagnostická stránka, která ověřuje, že je váš CRM správně nastavený a běží hladce.

Kontrola stavu
Kontrola stavu CRMZdravotní skóre kroužek na 92 vedle kontrolního seznamu průchodů a varovných konfigurací kontroly.Kontrola stavu CRMpracovní prostor92ZDRAVÍNakonfigurované stupně potrubíPřipojení propojené a importovanéAktivované látky AI!Žádná aktivní sekvence sledování!12 kontaktní údaje chybějící společnosti1AUDITORSKÉ VÝKONYOvěřuje nastavení2FLAGSCo chybí3SkóreJeden celkový počet
Jednostránkový audit CRM: celkové skóre v oblasti zdraví plus kontrolní seznam toho, co je nastaveno správně a co stále ještě potřebuje pozornost.

Co to kontroluje

Schéma

Databázové tabulky existují a mají správné sloupce. Pokud migrace byla minula, CRM Health bude vlajka to.

AI činidla

Všichni agenti CRM (Capture, Data Steward, Deal Intelligence, atd.) jsou registrováni a zdraví. Zelená = běh, jantar = potřebuje pozornost, červená = chyba.

Trasy

Trasy CRM API a koncové body AJAX jsou registrovány a hodnotitelné.

Akce v oblasti AI

Akční katalog CRM je zapsán v akčním registru. Pokud chybí akce, CRM Health se sám léčí jejich opětovným registrací.

Počet živých dat

Celkové kontakty, firmy, obchody, úkoly, činnosti a události. Užitečné pro ověření dovozu a průběžné zachycování dat.

Po kontrole nastavení

Po prvním nastavení CRM otevřete CRM Health a ověřte, zda jsou všechny kontroly zelené. Pokud jsou nějaké oranžové nebo červené, klikněte na položku pro diagnostické vysvětlení a navrhl opravu.

Jak často mám kontrolovat CRM zdraví?+

Zkontrolujte po prvním nastavení, po hlavních aktualizacích, a kdykoli se chování CRM zdá být špatné. CRM Zdraví self-hojí mnoho problémů (jako chybějící registrace akce) jen otevřením stránky.

CRM

Připojení CRM pro vývojáře

CRM vystavuje kompletní veřejný REST API a odchozí webháky, takže se hodí do jakékoliv stack bez manuálního exportu.

Endpointy API

Ověření

API klíč (Autorizace: Nositel opq _...) s rozsahem crm.read nebo crm. spise. POST /api/v1.php s akcí a site_key.

Kontakty

crm. contacts. list (vyhledávání + filtr), crmm. contracts. detail (ID), Crm. contacts s. upsert (tvorba nebo aktualizace), CRm. Contact. save.

Nabídky

crm. deals. list, crmm. deales. detail, crrm. dools. create, cRm. prodals. update, Crm. deals. forward (všechny prostřednictvím důvěryhodné vrstvy).

Činnosti

crm. activityes. list (časová osa pro kontakt / obchod), crmm. aktivities. Record (logovat novou činnost).

Události

crm.event.list (permanentní výměna krmiva s since_id kurzor), crm.event.catalogue (seznam dostupných typů akcí).

Vytvořit dohodu prostřednictvím 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
}

Události na Webhooku

opsiq.contact.upsert

Vystřelen při vytvoření nebo aktualizaci kontaktu. Toto je kontaktní událost k přihlášení; není zde žádná samostatná vytvořená událost.

contact.lifecycle_changed

Vystřelen, když se kontakt přesune do jiného životního cyklu.

contact.status_changed

Vystřelen, když se změní status kontaktu.

contact.conversion

Vyhozen, pokud je zaznamenán převod proti kontaktu.

contact.tag_added

Vystřelen při přidání značky do kontaktu.

contact.erased

Vyhozen, když je kontakt vymazán pro žádost o soukromí.

crm.deal.created

Vyhozen, když je dohoda uzavřena.

crm.deal.stage_changed

Vystřelen, když se obchod přesune na jiné pódium.

crm.deal.won

Vyhodili mě, když je dohoda uzavřena.

crm.deal.lost

Vyhodili mě, když je dohoda uzavřena jako ztracená.

crm.company.created

Vyhozen, když je společnost vytvořena.

crm.task.created

Vystřelen při vytvoření nového úkolu (manuální nebo AI- generovaný).

email.replied

Vyhozen, když kontakt odpoví na e-mail.

email.bounced

Vystřelen, když se objeví e-mail.

💡
Volání webhooks.events.list pro autoritativní sadu na instalaci, s užitečným zatížením každé události. Je generována z samotného doručovacího kódu, takže to nikdy nemůže nesouhlasit s tím, co skutečně dorazí. Úplný seznam se také objeví v sekci Webháky.

Všechny události na webu jsou HMAC-podepsal a znovu vyzkoušel na selhání URL v Nastavení > Webháky, nebo průzkum crm.events.list s since_id pro trvalou výměnu krmiva.

Synchronizace kontaktů CRM do Tabulek Google

Scénář:
Chcete, aby se každý nový kontakt CRM objevil v Google Sheet pro váš marketingový tým.
Co dělat:

Nastavit předplatitel webhooku proopsiq.contact.upsert. Nasměrujte to na webovou aplikaci Google Apps Script nebo na webhook ZapierURL. Payload obsahuje kontaktní jméno, e-mail, společnost, olovo skóre a zdroj. Váš skript doplňuje řádek k listu Google pro každý nový kontakt.

CRM

Segmenty

Segmenty ukládají opakovaně použitelné kontaktní filtry pro zobrazení CRM, informační a propagační nástroje a další nástroje pro povědomí o posluchačích.

Produktová obrazovka
SegmentyEditor Segmentu kombinuje podmínky, ukazuje počet živých zápasů a umožňuje operátorovi vybrat živý filtr nebo zapíchnutý snímek.Segmentypracovní prostorMÓDAŽivéLOGICVŠECHNYMATCHES1,248ŽIVÝ VÍDEJ PRACOVNÍHO SPACEFáze zákazníkarovná se Aktivní zákazníkČlánekPoslední činnostběhem 30 dnůČlánekZeměrovná se Spojené královstvíČlánekVysoký úmyslskóre alespoň 70Článek1CHOOSE MODEŽivé nebo s obrázkem2ADD RULESVŠECHNY NEBO KAŽDÉ3REUSEKampaň a CRM
Editor Segmentu kombinuje podmínky, ukazuje počet živých zápasů a umožňuje operátorovi vybrat živý filtr nebo zapíchnutý snímek.

A živý segment přepočítává z aktuálních dat, kdykoli se používají. zaražený snímek zmrazit aktuální seznam členů, který je užitečný, pokud se po schválení nesmí změnit informační publikum.

Vyberte VŠECHNY pokud se musí každá podmínka shodovat nebo KAŽDÉ když jedna podmínka je dostačující. Překontrolujte živé počet před uložením. Systémové segmenty mohou být viditelné, ale chráněné před běžnou editací.

CRM

Bodování olova

Pravidla bodování vede k tomu, že chování a signály profilu přemění na konzistentní skóre, které mohou použít prodeje a automatizace.

Produktová obrazovka
Bodování olovaOlověné bodování ukazuje aktivní pravidla, valivé okno a pozitivní nebo negativní skóre změna každé pravidlo platí.Bodování olovapracovní prostorPRAVIDLA12SCORED8,412HOT LEADS286ŽIVÝ VÍDEJ PRACOVNÍHO SPACECenová činnost3+ návštěvy v 14 dny+20Kupuju klíčové slovoobsahuje migraci nebo podnik+15Riziko podporyPodnět ve dnech 30-10Důvěryhodný zdrojpartnerský postoupení+121DESCRIBE RULEPoužívejte prostou angličtinu2REVIEW FIELDSSignál, okno, body3RESCOREAplikovat na pracovní prostor
Olověné bodování ukazuje aktivní pravidla, valivé okno a pozitivní nebo negativní skóre změna každé pravidlo platí.

Stavitel pravidel AI může změnit výuku prostého angličtiny na strukturované pravidlo. Každé pravidlo by mělo být ještě před aktivací přezkoumáno: potvrdit činnost nebo klíčové slovo, minimální počet, valivý okno a změna skóre.

Pozitivní a negativní pravidla mohou koexistovat. Resortní pracovní prostor po materiálních změnách pravidel, takže stávající kontakty jsou hodnoceny pod novým modelem. Výsledky mohou krmit segmenty, routing, vyhledávání a pracovní podmínky.

CRM

Prodejní žebříček

Vedení srovnává zástupce s využitím kvóty dosáhnout, získal příjmy, provize a otevřený plynovod pro vybraný měsíc.

Produktová obrazovka
Prodejní žebříčekMěsíční žebříček řadí obchodní zástupce a zároveň udržuje výherní příjmy, provize a otevřený plynovod viditelný.Prodejní žebříčekpracovní prostorPERIODčervenecTEAM QUOTA82%WIN184k liberŽIVÝ VÍDEJ PRACOVNÍHO SPACEAmina104% kvóta · 62k vyhrál1. místoBene.88% kvóta · 51k vyhrál2ndRito.76% kvóta · 43k won3. místoOtevřený ropovod312 000 liber v týmu.Přezkum1CHOOSE MONTHPorovnat jedno období2CHECK QUOTAZadržování podle zástupce3COACHPoužívat kontext potrubí
Měsíční žebříček řadí obchodní zástupce a zároveň udržuje výherní příjmy, provize a otevřený plynovod viditelný.

Dosažení kvóty má význam pouze tehdy, když každý zástupce má stávající kvótu a dohody mají správný vlastník, množství, měna a blízký status. Použijte žebříček pro koučování a uznávání, ne jako jediné měřítko kvality; párovat s deal zdraví, činnost a prognózu přesnost.

CRM

Schválení k prodeji

Schválení k prodeji vyžaduje odpis správce, než lze vypsat nabídky nejvyšší hodnoty.

Produktová obrazovka
Schválení k prodejiSchvalovací politika definuje dvě hodnotové prahy a fronta ukazuje dosud nepřipravená, schválená a zamítnutá rozhodnutí.Schválení k prodejipracovní prostorPOLICYPovolenoWAITING6OLDEST3hŽIVÝ VÍDEJ PRACOVNÍHO SPACEÚroveň 1Řešení z £10,000SprávceÚroveň 2Řešení z £50,000StaršíObnova podniku£72,000 · Vyžádal si BenČekatQShortcutProjekt migrace£18,500 · RitaSchváleno1SET THRESHOLDS0 zakáže úroveň2REQUESTRep předkládá dohodu3ROZHODNUTISchválení nebo zamítnutí
Schvalovací politika definuje dvě hodnotové prahy a fronta ukazuje dosud nepřipravená, schválená a zamítnutá rozhodnutí.

Povolit politiku a nastavit úroveň 1 a úroveň 2 prahové hodnoty. 0 Pokud se nemanažer pokusí vyhrát dohodu na prahu nebo nad ním, OpsIQ vytvoří žádost o schválení namísto tiché změny jeviště.

Manažeři a plné administrátoři nejsou blokovány pojistkou. Každé rozhodnutí by mělo zachovat požadavek, příjezd, čas a důvod pro auditivitu.

CRM

Pravidla životního cyklu

Pravidla životního cyklu automaticky přesouvají kontakty mezi etapami, kdy jejich aktuální data odpovídají uloženému stavu.

Produktová obrazovka
Pravidla životního cykluPravidla životního cyklu jsou hodnocena přednostně; první pravidlo shody mění fázi kontaktu.Pravidla životního cyklupracovní prostorÚČINNÉ7RUNSNočníPRIORITYNejvýše prvníŽIVÝ VÍDEJ PRACOVNÍHO SPACEOlovo → Kvalifikovanéskóre ≥ 60 a nedávná aktivitaPrioritní 100Kvalifikovaný → Zákazníkudálost nákupu existujePrioritní 90Zákazník → Ohroženýžádná aktivita pro dny 60Prioritní 70Riziko → Zákazníknový nákup nebo odpověďPrioritní 601PICK STAGESOd a do2DEFINE FILTERSegment- style JSON3ORDER RULESPrvní zápas vyhrává.
Pravidla životního cyklu jsou hodnocena přednostně; první pravidlo shody mění fázi kontaktu.

Každé pravidlo má zdrojový stupeň, cílový stadium, aktivní vlajku, prioritní a segmentstyle filtr. Naplánované životní cyklus práce hodnotí vyšší priority nejprve a zastaví se po prvním utkání pro kontakt.

Pravidla by měla být vzájemně srozumitelná. Vyhněte se dvěma aktivním pravidlům, která mohou pohybovat stejným kontaktem v opačných směrech během stejného běhu. Před aktivací filtru zkontrolujte filtr proti segmentu.

CRM

Aktiva CRM proudění

Aktivita pracovního prostoru spojuje zákaznické a provozní akce, takže týmy mohou zkoumat, co se stalo, aniž by otevřely každý modul.

Produktová obrazovka
Aktivita CRMAktivita stream interliaves chat, vstupenky, e-mail, webhook, konverze a anomálie události s filtry a pagination.Aktivita CRMpracovní prostorUdálosti2,804CUSTOMERS1,126ANOMALIES14ŽIVÝ VÍDEJ PRACOVNÍHO SPACEVyřešení chatu[email protected] · AITeď.Tiket odpovědělT-1048 · Účtování4mPřichozí událostsubscription.upgraded12 mPřevodŘád #7788 · £14919m1FILTERUdálost a zákazník2OPEN CONTEXTPřejít k záznamu3PAGE RESULTSUdržovat šetření v mezích
Aktivita stream interliaves chat, vstupenky, e-mail, webhook, konverze a anomálie události s filtry a pagination.

Filtrovat podle typu události, data, kontaktní nebo zákaznický stav (včetně platících zákazníků). Krmivo je přečtený model zaznamenané aktivity; nenahrazuje zdrojový tip, rozhovor, deal nebo konektor záznam. Otevřete propojené záznamy před přijetím citlivých opatření.

CRM

Pracovní toky

Workflow reaguje na událost a provádí řádnou sérii akcí, včetně opožděných kroků obnovených cronem.

Produktová obrazovka
Pracovní tokyProvoz práce ukazuje spouštěč, dokončené akce, čekání zpoždění a další krok.Pracovní tokypracovní prostorÚČINNÉ9RUNNING42POSLEDNÍ1ŽIVÝ VÍDEJ PRACOVNÍHO SPACESpouštěčcontact.createdStartKrok 1Poslat uvítací e-mailHotovo.ZpožděníČekejte 2 dnůČekáníKrok 2Vytvořit prodejní úkolDalší1CHOOSE TRIGGERUdálost začíná běh2ORDER STEPSAkce a zpoždění3MONITORObnovit pomocí cron
Provoz práce ukazuje spouštěč, dokončené akce, čekání zpoždění a další krok.

Vytvořte pracovní postup výběrem spouštěče, přidejte kroky v pořadí a umožněte. Zpoždění jsou uložena, nejsou držena žádostí prohlížeče; jednotný cron obnovuje řádné běh workflow.

Staveb- in starting šablon zahrnují vítání po signupu, post- nákup díku- a demo potvrzení. Klone šablony, nahradit příjemce / obsah, pak test s kontrolovaným záznamem před širokou aktivací.

Projekční akce, které mají být idempotentní. Retest nesmí posílat duplikát žádostí o pohyb peněz nebo vytvářet duplicitní záznamy.

Podpora

Vstupenky

Vstupenky jsou vaše formální podpůrný kanál. Mají oddělení, priority, SLA cíle, přílohy, vnitřní poznámky, a plné konverzace tweading. Vstupenky mohou přijít z OpsIQ admin, formulář vstupenky / vložka, e-mailové požití, chat eskalace, konektor, nebo API.

Vstupenky
Údaj o vstupenceJízdenka s meta sidebar (priorita, oddělení, SLA, status), konverzace vlákno, a AI návrh a vrácení prostředků.Lístekpracovní prostorT- 12345PrioritaVysokáOdděleníÚčtováníSLAZbývající 3h 12 mStavOtevřítDvakrát mě obvinili za můj účet.předplatné na červen 3.AIPotvrzeno duplikátpoplatek, zpracování náhrad.Návrhy odpovědi AIVýše náhrad1THREADEDPlná konverzace + poznámky2SLA & ROUTINGPriorita, dept, časovače3AI DRAFTOdpověď napsaná za vás
Každý lístek nese svou prioritu, oddělení, SLA časovač a plné vlákno, a AI může vypracovat odpověď za vás.

Jak se lístek pohybuje

1
Lístek je tady.

Zákazník posílá zprávu e-mailem, eskalaci chatu, vloženou jízdenku nebo admin vytvoří. Tiket dostane unikátní ID (např. T-12345).

2
Tradice

AI čte předmět a tělo, přiřazuje priority (Nízká / Normální / Vysoká / Naléhavá), navrhuje oddělení, a detekuje sentiment. To se děje automaticky, pokud je povoleno třídění.

3
Odpověď

Agent otevře tiket, přečte kontext (profil zákazníka, platforma data z konektorů, předchozí tipy) a napíše odpověď. AI může vypsat odpověď a agent ji před odesláním upraví.

4
Zavřít

Když je problém vyřešen, agent uzavře jízdenku. Zákazník je informován. Pokud zákazník odpoví po uzavření, vstupenka se automaticky otevře.

Akce per- tipu

Změnit oddělení

Přesuňte jízdenku do jiného oddělení (např. z obecného na Billing). Užitečné, když se původní směrování mýlilo.

Přiřadit k agentovi

Přiřaďte letenku konkrétnímu členu týmu. Přidělený agent vidí jízdenku v jejich "Moje vstupenky" pohledu.

Přidat vnitřní poznámku

Napište poznámku viditelnou pouze pro zaměstnance. Použití pro: šetření zjištění, důvody vrácení, technické souvislosti, předchozí závazky. Interní poznámky se nikdy neobjeví pro zákazníky.

Skládací lístky

Kombinovat duplikát vstupenek od stejného zákazníka. Sloučený subjekt dostane [MERGED] značku. Všechny zprávy z obou vstupeneK jsou zachovány v přeživších tipu.

Kontejnery

Vložit předpsanou šablonu odpovědi. Proměnné jako {{customer_name}} a {{ticket_id}} jsou automaticky nahrazeny.

Přepsat AI

Nechť AI zlepšit svůj návrh odpovědi: upravit tón, zkrátit / prodloužit, opravit gramatiku, nebo přeložit. Přezkoumáte výsledek před odesláním.

Změnit prioritu

Nastavit na nízké, normální, vysoké, nebo Naléhavé. Priorita ovlivňuje SLA časovače a třídit pořadí.

Změnit stav

Nastavit na Open, Čekání na zákazníka, Vyřešeno, nebo Zavřeno.

Pracovní příklad: manipulace s nešťastným zákazníkem

Zákaznický email: "Dvakrát jsem byl účtován za předplatné"

Scénář:
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.
Co dělat:

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.

Odbory

Vytvořit oddělení v Nastavení > Vstupenky > Útvary. Společné oddělení: Obecné, Účtování, Technika, Prodej, Zneužití, Onboarding. Každé oddělení může mít různá pravidla autoodpovědí, AI znalosti a týmové úkoly.

Kontejnery

Vytvořte znovu použitelné šablony odpovědí v Nastavení > Vstupenky > Konzervované odpovědi. Dobré konzervované odpovědi zahrnují:

Příklad šablony odezvy v konzervách
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}}

Skládací lístky

Když zákazník pošle stejnou otázku vícekrát (přes e-mail a chat, nebo dva samostatné e-maily), můžete sloučit duplikáty. Přejděte na tip, klepněte na tlačítko Sloučení, vyberte druhý tip ke sloučení. Přeživší tiket dostane všechny zprávy z obou tipů. Subjekt složeného tipu získá [MERGED] značku, která ukazuje, že byl kombinován.

Připojená platforma následuje po sloučení. Pokud jsou vstupenky také na připojené platformě (WHMCS, Zendesk, SaaS zákaznický portál), sloučení se tam děje také: platforma sdružuje své kopie, takže jízdenka, kterou držíte ukazuje sloučenou letenku první zprávu a odpovědi. Sloučená vstupenka, která nikdy nebyla na této platformě má svůj rozhovor přidána do udržované platformy jako soukromý personál poznámka, nikdy jako odpověď zákazník je e-mailem. Sloučení provedené uvnitř platformy (například v WHMCS) OpsIQ Lístky stejným způsobem.

Priorita a SLA

Nízká

Non- urgentní otázky, požadavky na funkce, obecná zpětná vazba. Cílová první odpověď: 24 hodiny.

Normální

Standardní podpůrné otázky. Cílová první odpověď: 8 hodiny.

Vysoká

První reakce: 4 hodiny.

Naléhavé

První odpověď: 1 hodina.

SLA časovače začínají při vytvoření tipu a zastaví se, když je stav "Čekání na zákazníka". Pokud je cíl SLA vynechán, je tiket zvýrazněn a volitelně eskalován.

Mohou zákazníci vidět interní poznámky?+

Nikdy. Vnitřní poznámky jsou přísně personální-pouze. Neobjevují se v zákaznické vstupenky portálu, e-mailové oznámení, nebo jakékoli zákazníkovi-čelí povrchu.

Co se stane, když je na uzavřenou letenku zodpovězena?+

Jízdenka se automaticky otevře a vrátí do aktivní fronty. Tým je informován o nové odpovědi.

Mohu si zamknout lístek, abych zabránil dalším odpovědím?+

Ano. Použijte možnost Lock Thread, aby se zabránilo jak zákazník a AI od přidání nových odpovědí. Užitečné pro vyřešené spory nebo uzavřený vyšetřování.

Podpora

Service Studio: SLA, status flow a kvalita

Ovládací místnost pro to, jak se vaše podpůrná operace chová: SLA politiky s eskalační žebříky, business-hodiny kalendáře, vynucený status tok, CSAT nastavení a funkce podniku přepínače. Otevřete to ze stránky Vstupenky (Service Studio tlačítko v operačním baru).

Politika SLA

Každý nový tiket dostane první odpověď a termín řešení z nejkonkrétnějších aktivních politik: oddělení + priority je lepší než oddělení, přednostní, překoná výchozí. Termíny se automaticky zastaví, zatímco lístek sedí v Čekající nebo Pohotovostní.

Eskalační žebříky

Namísto jednoho porušení opatření může politika definovat až šest kroků: například upozorněte assignee na 75% z okna, varovné manažery na 100%, přeřazen na jmenovaného agenta v 150% Každý krok vystřelí přesně jednou za lístek.

Pracovní hodiny a kalendáře

S pracovní dobou běží hodiny SLA pouze během pracovní doby, takže jízdenka otevřená v pátek večer není porušena do soboty. Jmenované kalendáře (časové pásmo, dny, hodiny, svátky) lze připojit k jednotlivým politikám pro týmy v různých regionech.

Stavový tok

A od / do matice omezení, který status změny administrátoři mohou provést, s Zendesk-style preset. Automatizace, příchozí e-mail a zákazníkem-původem odpovědi na jízdenky jsou vždy osvobozeny, takže striktní matice nemůže nikdy rušivý potrubí. Volitelně vyžadují schválený sign- off před zavřením.

Schválení

Agenti žádají o odhlášení na jízdenku (vrácení přes práh, politické výjimky). Jmenovaný příchozí nebo kterýkoli úplný správce rozhodne s poznámkou; žadatelé nemohou nikdy schválit svou vlastní žádost. Do doby, než se schválení povrchu jako banner na schránce.

Vztahy mezi vstupenkami

Odkaz vstupenky jako související, duplicate, rodič / dítě nebo blokování; rozdělené odpovědi na novou propojenou jízdenku (reverzní sloučení, bez e-mailování zákazníka); sledovat tipy pro oznámení in- app a volitelně CC následovníka e-mailové adresy na outbound odpovědí.

Živá schránka a kolize

S real-time inbox povoleno, nové tipy a odpovědi se objeví pro agenty během několika sekund prostřednictvím stávajícího toku oznámení. Na vstupence, agenti vidět, kdo ještě je prohlížení a získat varovný banner, když spoluhráč už píše odpověď. Jednoklikové tlačítko Tvrzení přiřadí jízdenku pro sebe.

AI- aware routing

Pravidla směrování se mohou shodovat s AI triage signály: priorita, kategorie, sentiment a eskalační riziko, plus zadané hodnoty na míru z vašeho portálu poptávky formulář. Pravidla používající tyto podmínky zůstávají neaktivní, dokud funkce je povolena.

💡
Každý podnik přepíná lodě OFF. Zapnutí jednoho v servisním studiu → Kvalita & Automatizace je opt- in; vynechání je udržuje chování stejné jako před upgradem.
Proč může zákazník ještě otevřít uzavřenou jízdenku, když moje matrice zakazuje zavření → otevřené?+

Matrice řídí pouze akce ADMIN. Vlastní-původem odpovědi, e-mailové odpovědi a automatizace jsou záměrně osvobozeny, takže přísná politika nemůže nikdy zablokovat zákazníky ven nebo rozbít potrubí.

Nahrazují žebříky SLA staré porušení?+

Ne. Politiky uložené s jediným porušení akce stále fungují beze změny. Žebřík nahradí jedinou akci pouze na politiky, kde definujete kroky.

Podpora

Automatická odpověď a eskalace vstupenky

Automatická odpověď umožňuje AI reagovat na nové vstupenky automaticky. Eskalace přesune lístky do jiného oddělení, když AI zjistí specializované potřeby. Obě funkce pracují přes rodné vstupenky a email- vytvořil vstupenky.

Automatická odpověď
Automatická odpověď na ticketPrůtok: nová jízdenka, dvouminutové zpoždění, odpověď AI z znalostí a kontextu, poté zaslána nebo uložena jako návrh.Automatická odpověďpracovní prostorKdyž přijde nová vstupenkaNová jízdenkajakýkoli zdrojZpoždění2 minOdpovědi na dotazníkKontext KB +Odeslánonebo návrhPokud člověk odpoví během zpoždění, autoodpověď se zruší. Záměr může eskalovat na jiné oddělení jako první.1DELAYLidé dostanou první šanci.2AI REPLIESZ kontextu KB +3OR ESCALATECesta podle záměru
Nové vstupenky získat krátké zpoždění (takže lidé mohou skočit do), pak AI odpověď z vašich znalostí, poslal nebo fronta jako draft.

Jak funguje autoodpověď

1
Lístek se objeví

Z jakéhokoliv zdroje je vytvořena nová jízdenka (e-mail, chat, portál, API).

2
Odpověď na harmonogram

OpsIQ čeká na nastavené zpoždění (přednastaveno: 2 To dává lidským agentům možnost reagovat jako první.

3
První odpověď vyhrává.

Pokud lidský agent odpoví během zpoždění, automaticky se odpověď zruší. Pokud ne, AI odpověď vygeneruje.

4
Generovat a odeslat

Umělá inteligence přečte lístek, zkontroluje znalostní bázi, kontext konektoru a historii zákazníka a poté napíše odpověď, která je odeslána (nebo v závislosti na nastavení zařazena do fronty jako koncept ke kontrole).

Jak eskalace funguje

1
Nastavení oddělení

Nastavit, které oddělení mohou dostávat eskalace (např., Účet může být zefektivněn od General, Technika může být egradován od General).

2
Upřesněte jízdenku

Před automatickou odpovědí AI klasifikuje záměr letenky: fakturace, technika, vrácení, zneužití atd.

3
Přesunout, pokud je třeba

Pokud se záměr letenky shoduje s eskalací, jízdenka je přesunuta. Vnitřní poznámka vysvětluje proč.

4
Generovat v novém hlase

Odpověď je vytvořena pomocí znalostí a školení cílového oddělení a AI.

Odkaz na nastavení

Automaticky odpověď povolena

Master switch. Zapněte, aby bylo možné AI automaticky odpovědět na tipy.

Povolené útvary

Které oddělení může obdržet auto- odpovědi. Začněte s nízkorizikovými odděleními (General, Sales) před povolením fakturace.

Zpoždění

Jak dlouho čekat než AI odpoví (v sekundách). Výchozí: 120 sekund (2minuty). Nastavit na0pro okamžité odpovědi.

Prodleva

Volitelně nastavit různé zpoždění pro obchodní hodiny vs. po hodinách.

Zastavit na admin odpověď

Pokud lidský agent odpoví jako první, zrušit auto- odpověď. Výchozí: zapnuto.

Eskalace povolena

Povolit automatické směrování oddělení na základě úmyslu jízdenky.

Oddělení pro eskalaci

Ke kterým místům se mohou lístky stupňovat.

Eskalační stav

Jaký stav nastavit při eskalování (např., Open, Waiting).

Eskalační poznámka

Zda přidat interní poznámku vysvětlující důvod eskalace.

Email- created tips

Vstupenky vytvořené z e-mailu (přes poštovní schránka nebo MX-piped dodání) podle stejných pravidel autoodpovědí a eskalace. Odpověď AI je zaslána jako odpověď na e-mail pro zákazníka. Emailové návrhy jdou do fronty návrhů pro přezkoumání, pokud je nakonfigurován.

Odpoví AI automaticky na fakturační otázky?+

Pouze pokud povolíte automatickou odpověď pro oddělení účtování. Doporučujeme začít s automatickou odpovědí na fakturaci a umožnit ji až poté, co jste vyškolili AI s komplexními informačními znalostmi a důkladně testovali.

Co když AI dá špatnou odpověď?+

Pokud zákazník odpoví, že odpověď byla špatná, lidský agent by měl zasáhnout. Přezkum AI Historie pochopit, proč AI dal špatnou odpověď, pak aktualizovat znalostní základnu nebo AI školení, aby se zabránilo tomu, že se to znovu stane.

Mohu si prohlédnout odpovědi na automobil, než je pošlu?+

Ano. Nastavte režim dodání na "Návrh" místo "Auto- send". Auto- odpověď návrhy se objeví ve frontě Kreslení pro lidskou recenzi před odesláním.

Podpora

Vložený portál vstupenek

Portál vstupenek vkládaný umožňuje přidat rozhraní pro správu jízdenek na jakékoli webové stránky. Zákazníci si mohou prohlédnout své lístky, vytvořit nové a odpověď, vše bez vstupu do OpsIQ admin.

Jak to funguje
Vložený portál vstupenekPortál podpory vložený na webové stránce, kde zákazníkovi ukazují své vlastní vstupenky a nové tlačítko.yoursite.com/supportPodpůrné centrumNová jízdenkaTYJÍ KEY#1042 · Otázka náhradyOtevřít#1038 · Nastavit nápověduVyřešeno#1031 · TiskopisČekatQShortcut1EMBEDPřidat na libovolné místo2SELF-SERVEZákazníci vidí své vstupenky3NO LOGINIdentita se zachází bezpečně
Vložený portál vstupenek

Tři vmíchané chutě

Inline insted

Pronajímá portál vstupenek uvnitř div na vaší stránce. Portál bere celou šířku kontejneru.

Plovoucí widget

Zobrazí plovoucí tlačítko, které otevře portál vstupenek v panelu. Podobně jako widget chatu.

Ověřené

Vyžaduje podepsanou identitu. Zákazníci vidí pouze své vlastní vstupenky.

Instalace

Vstupenka a chatu vloženy
<!-- Signed-in customer: your server adds a fresh identity_token -->
<script async src="https://your-opsiq-domain.com/widget.php?site_key=SITE_KEY&identity_token=SERVER_GENERATED_TOKEN"
        data-opsiq-widget="client-chat"></script>

<!-- Guest: the same tag without identity_token -->
<script async src="https://your-opsiq-domain.com/widget.php?site_key=SITE_KEY" data-opsiq-widget="client-chat"></script>
💡
Remote Sites → your site → Codes → C. Signed-in customers generates the complete code for your platform (PHP, WordPress, Laravel, Node.js, Python, Django, .NET, Rails, Java, Go), including the refresh handler that keeps a long visit signed in. The WHMCS hook and the Botble connector bridge already do this.

Generace identifikátorů

Pro ověřený režim, Váš server podepisuje krátkopříkladný token s tajemstvím webu. Tento symbol říká OpsIQ, kdo je zákazník, takže vidí pouze své vlastní vstupenky. Jedná se o standardní HS256 JWT: jakákoli JWTknihovna funguje. Tajemství nikdy nejde do stránky.

PHP · generovat token identity
<?php
// Generate identity token (PHP, no dependencies)
$secret = getenv("OPSIQ_SITE_SECRET");          // the site secret, server-side only
$b64 = fn($v) => rtrim(strtr(base64_encode(json_encode($v, JSON_UNESCAPED_SLASHES)), "+/", "-_"), "=");
$now = time();
$signing = $b64(["alg" => "HS256", "typ" => "JWT"]) . "." . $b64([
    "site_key"      => "SITE_KEY",
    "iat"           => $now,
    "exp"           => $now + 3600,
    "authenticated" => true,                        // required
    "platform"      => "php",
    "customer"      => [
        "id"          => $user["id"],               // required
        "email"       => $user["email"],            // required
        "name"        => $user["name"],
        "external_id" => (string) $user["id"],
    ],
]);
$token = $signing . "." . rtrim(strtr(base64_encode(hash_hmac("sha256", $signing, $secret, true)), "+/", "-_"), "=");
// Put $token on the widget URL as &identity_token=
Node. js, generovat identifikátor
// Node.js — npm i jsonwebtoken
const jwt = require("jsonwebtoken");

function generateOpsIQToken(customer) {
  return jwt.sign({
    site_key: "SITE_KEY",
    authenticated: true,                            // required
    platform: "node",
    customer: { id: customer.id, email: customer.email, name: customer.name, external_id: String(customer.id) },
  }, process.env.OPSIQ_SITE_SECRET, { algorithm: "HS256", expiresIn: 3600 });
}

Funkce widgetu

Seznam tipů

Vyhledatelný, statusfiltrovaný seznam. "Čekání na vás" zvýrazňuje vlajky vstupenky tým odpověděl.

Konverzace se závitem

Kompletní pohled na rozhovor s bohatým textem, přílohami a časovými razítky.

Návrh na automatické úspory

Návrhy zákazníků odpovědi jsou automaticky uloženy, takže neztratí práci, pokud se odorientují.

Živé volby

Šíření průzkumů pro nové odpovědi každých ~12 sekund.

Rozřešit / znovu otevřít

Zákazníci mohou vyřešit nebo znovu otevřít své vlastní vstupenky jedním kliknutím.

Poznámky zaměstnanců nejsou zákazníkům v vstupence zobrazeny. Jedná se o pevný bezpečnostní hranice.
Podpora

Zapisovač chatu

Chat Inbox je místo, kde váš tým řídí živé zákaznické konverzace. To ukazuje aktivní chaty, přiřazené rozhovory, AI- řízené chaty a archivované historie.

Zapisovač chatu
Zapisovač chatuTřípanelový agent chatu inbox: seznam konverzace, živý rozhovor s AI draft čipu, a návštěvník / CRM kontextové panel.Zapisovač chatupracovní prostorJDJane.Kde je můj rozkaz?MOMensahCity in Ontario Canadafakturační otázkaRTRito.S AIKde je moje objednávka?Dnes odesláno · UPSAI návrh připravenOdpovězte...VIZITORJane DoeUS · Černá3 minulá objednávkaLTV $480CRMFáze: Zákazník1UNIFIEDKaždý živý chat2CONTEXTNávštěvník + CRM panel3AI ASSISTNávrh a přepis
Jeden tip pro každý živý chat, seznam konverzací, vlákno s AI draftem na klepnutí a plný kontext návštěvníka + CRM.

Řízení rozhovorů

Aktivní rozhovory

Rozhovory v současné době probíhají. Zelená tečka = zákazník je psaní nebo nedávno aktivní.

AI- manipulováno

Rozhovory, kde AI reaguje. Můžete převzít kdykoliv kliknutím na "Připojit".

Přidělený mně.

Rozhovory, které jsou vám určeny.

Čekání

Rozhovory, kde zákazník čeká na odpověď.

Archiv

Dokončené konverzace. Hledat podle klíčového slova, datum a zákazník.

Přechod z AI na člověka

Když převezmete rozhovor z AI, řiďte se těmito třemi pravidly:

1
Pozdravte osobně.

"Ahoj, tady Sarah z podpůrného týmu."

2
Referenční kontext

"Vidím, že jste se ptal na stav objednávky."

3
Nastavit očekávání

Řekněte zákazníkovi, co se stane dál. "Teď to prošetřuji a za pár minut vám dám odpověď."

Přepínání AI na jeden rozhovor

Použijte AI přepínání na vrcholu každé konverzace. Když je AI zapnuto, AI generuje odpovědi. Když vypne, pouze lidské agenty mohou odpovědět. AI si pamatuje kontext konverzace i když se vypnout a znovu zapnout.

Režim / mimo hodiny

Nastavit pracovní hodiny v Nastavení. Mimo pracovní hodiny, může AI: (1) Pokračovat v reakci na zákazníky, (2) Zobrazit zprávu "pryč" a vytvořit tiket pro follow- up, nebo (3) Zakázat chat úplně a ukázat tiket formulář. Vyberte si chování, které vyhovuje vašemu modelu podpory.

Řešit těžké konverzace

1
Zůstaň v klidu.

Neodpovídají emoční intenzitě zákazníka. Potvrďte jejich frustraci, aniž by se bránila.

2
Sbírat fakta

Před odpovědí shromážděte příslušné informace: podrobnosti objednávky, stav účtu, předchozí vstupenky.

3
Eskalujte brzy.

Pokud se situace týká náhrad, právních hrozeb, zneužívání nebo bezpečnosti, eskaluje se na vyššího člena týmu, spíše než aby se snažil zvládnout sám.

Můžu si s vámi promluvit?+

Ano. Pomocí interních poznámek v rámci konverzace komunikovat s ostatními agenty. Tyto poznámky nejsou nikdy viditelné pro zákazníka.

Co se stane, když uzavřu rozhovor?+

Konverzace se přesune do archivu. Pokud zákazník pošle novou zprávu později, vznikne nová konverzace.

Podpora

Zprávy

Connect WhatsApp, Facebook Messenger, Instagram DM, Telegram a LINE tak zprávy zákazníci již dorazí ve stejné schránce jako vaše webové stránky chat, odpověděl stejný AI asistent.

Každý kanál se chová stejně, jakmile je připojen: zákaznická zpráva se stane konverzací v Chat Inbox, Váš asistent AI na něj odpoví pomocí stejných znalostí a pokynů jako váš webový chat, a každý agent může převzít. Nic o vašem AI potřebuje konfiguraci na jeden kanál.

Jak vypadá spojení?

Facebook Messenger a Instagram

Jedno kliknutí. Otevřené konektory → Facebook Messenger & Instagram DM, klepněte na tlačítko Connect, přihlaste se k účtu na Facebooku, který spravuje vaši stránku, a vyberte stránku. Instagram přichází s ním, když vaše stránka má instagram profesionální účet připojen.

WhatsApp

Jedno kliknutí, kde váš poskytovatel nabízí: otevřete konektor Messaging Hub a použijte Connect WhatsApp, pak sledovat Meta je naváděný sign- up vybrat nebo vytvořit své WhatssApp Business číslo. Jinak vložte pověřovací listiny z kterékoli brány 20.

Telegram

Zpráva @ BotFather v Telegramu, odeslat/newbot,vyberte jméno a uživatelské jméno končící v "bot", a vložit token vám dává do konektoru Telegram.OpsIQregistruje webhák pro vás.

LINE

Vytvořit zprávy API kanál na developers.line.biz, vložte tajemství kanálu a přístupový token, pak zkopírujte webhook URL zobrazeno v OpsIQ do LINE a vypněte si vlastní automatické odpovědi.

SMS

Přidat poskytovatele (Twilio, Vonage, Termii a další) v Messaging Hub s jeho pověřovací listiny a číslo odesílatele.

Každý konektor zobrazí své vlastní step-by- krok pokyny uvnitř zásuvky, včetně přesně toho, co kopírovat a kde. Nikdy nepotřebujete vývojářské pověření pro volby one-click.

Zapnutí kanálu

Připojení kanálu není spuštěn. Přejít na Nastavení → Klientský chat → Pokročilé → Zprávy kanálů, zapněte hlavní přepínač a pak individuální kanál. Každý kanál má svůj vlastní AI auto- odpov-ní spínač, takže můžete pilot na jednom před otevřením zbytku.

1
Připojte kanál

V konektorech, pomocí návodu v zásuvce toho konektoru.

2
Otestujte spojení

Klepněte na tlačítko Test. To dělá skutečný hovor na poskytovatele a řekne vám, co je špatně, pokud něco je.

3
Povolit kanály pro zasílání zpráv

Nastavení→Klientský chat→Zapněte hlavní vypínač a pak kanál.

4
Pošli si zprávu.

Z jiného účtu, pošlete zprávu na stránku, číslo nebo bot. Mělo by se to objevit v Chat Inbox během několika sekund a získat odpověď AI.

Odpovědět na okna

Zprávy platformy omezit, jak dlouho může podnik odpovědět po zákazníkovi píše. OpsIQ ukazuje zbývající čas na každé konverzaci a prosazuje pravidlo pro vás.

WhatsApp

24 hodiny od poslední zprávy zákazníka. Poté můžete zaslat pouze schválenou šablonu, kterou nastavíte ve stejné záložce Advanced.

Messenger & Instagram

24hodiny pro běžné odpovědi; agenti mohou odpovídat až7O pár dní později pod Metiným příspěvkem pro lidské činitele.

Telegram, LINE, SMS

Žádné okno s platformami.

⚠️
Pokud odpověď selže, protože okno zavřelo, konverzace ukazuje proč. Toto je pravidlo platformy, ne limit OpsIQ.

Společné otázky

- Vidíte, že to bere AI?+

Pouze pokud jim to řeknete. Odpověď pochází z vaší stránky, číslo nebo bot přesně jako lidská odpověď by. Vaše AI instrukce ovládat tón a zda se identifikuje.

Může agent převzít prostředníhovor.?+

Ano. Otevřete rozhovor v Chat Inbox a klepněte na tlačítko Připojit. AI zastaví, napíšete, a zákazník vidí souvislou nit na jejich straně.

Co když odpojím kanál?+

Používejte odpojení na konektoru. Historie zpráv je zachována, nové zprávy jednoduše zastaví příjezd a platforma se řekne, aby je přestala posílat.

Mohou dvě pracovní prostory použít stejnou stránku na Facebooku?+

Ne. Stránka patří k jednomu pracovnímu prostoru najednou. Spojení někam jinam ji přesune, a první pracovní prostor přestane přijímat zprávy, takže se odpojí záměrně, než aby se znovu připojili jinde.

Podpora

Opravdové konverzace na chatu

Tyto příklady ukazují, jak dobře vyškolený zákazník AI by měl zacházet s běžnými scénáři. Použijte je k testování vašeho výcviku AI a identifikovat mezery.

Příklady konverzace 10

1. Vrací se zákazník a ptá se na objednávku

Scénář:
Zákazník: Ahoj, objednal jsem si3Před pár dny a ještě jsem nedostal žádné oznámení o přepravě.5523.
Co dělat:

AI by měla: (1) Vyhledej si pořadí # ORD -5523 přes konektor. (2) Uveďte aktuální stav a informace o sledování, jsou-li k dispozici. (3) Je-li objednávka odložena, potvrďte zpoždění a uveďte odhadovanou časovou osu. (4) NEVYŽÍVEJTE stav přepravy, pokud konektor žádný nemá.

2. Prospect dotazu na ceny

Scénář:
Zákazník: Kolik stojí váš Pro plán? Nabízíte roční vyúčtování?
Co dělat:

AI by měla: (1) Odpověď ze znalostní základny s aktuální ceny. (2) Vysvětlete rozdíl mezi měsíčním a ročním vyúčtování. (3) Není-li odpověď v znalostní základně, řekněte to a nabídněte, že je spojíte s prodejem. (4) NENÍ VYJÁDŘOVAT ceny, které nejsou ve znalostní základně.

3. Rozzlobený zákazník požadující vrácení peněz

Scénář:
Zákazník: To je směšné! Váš produkt nefunguje a já chci své peníze zpět nyní.
Co dělat:

AI by měla: (1) Znepokojivě se ztotožněte s frustrací (2) Zeptejte se na číslo objednávky nebo e-mail účtu. (3) Vysvětlete proces vrácení. (4) Vytvořit podpůrnou jízdenku nebo eskalovat na lidský agent. (5) NESlibujte vrácení peněz, které vyžaduje lidské schválení.

4. Dvojité fakturační hrany

Scénář:
Zákazník: Tento měsíc jsem byl dvakrát obviněn. Moje banka vykazuje dvě nálože $29.99.
Co dělat:

AI by měla: (1) Potvrďte znepokojení. (2) Shromažďovat příslušné údaje (e-mail, data poplatků). (3) Vysvětlete, že fakturační otázky vyžadují lidskou kontrolu. (4) Vytvořte si jízdenku oddělení účtování s podrobnostmi. (5) Nastavte prioritu na High.

5. Vícejazyčný zákazník

Scénář:
Zákazník: Bonjour, je voudrais savoir si vous livrez en France?
Co dělat:

AI by měla: (1) Odpovězte v jazyce zákazníka, pokud je tento jazyk podporován. (2) Odpovězte na otázku týkající se dodání do Francie ze znalostní základny. (3) Pokud jazyk není podporován, odpovězte ve výchozím jazyce a uveďte, které jazyky jsou k dispozici.

6. Po-hodiny konverzace

Scénář:
Zákazník: Haló, je tam někdo? Potřebuji pomoc se svým účtem.
Co dělat:

AI by měla: (1) Je-li nakonfigurován pro after- hours AI, odpovězte a pomozte. (2) Pokud po hodinách vytvoří vstupenky, řekněte: "Náš tým je momentálně offline. Vytvořil jsem pro vás podpůrnou jízdenku a někdo to bude během pracovní doby sledovat." (3) Uveďte číslo jízdenky.

7. Srovnání přednákupů

Scénář:
Zákazník: Jak se váš produkt srovnává s [Soutěžitel X]?
Co dělat:

AI by měla: (1) Popište své silné stránky produktu věcně. (2) NENÍ pomlouvat konkurenta. (3) Je-li stránka srovnání v znalostní bázi, odkaz na ni. (4) Pokud se zákazník zeptá na funkce, které nemáte, buďte upřímní.

8. Zákazník chce doporučení

Scénář:
Zákazník: Vedu malý internetový obchod s asi 100 objednávky za měsíc. Který plán je pro mě ten pravý?
Co dělat:

AI by měla: (1) V případě potřeby se zeptejte na objasnění (např. jaké rysy mají největší význam). (2) Doporučit plán založený na znalostní základně. (3Vysvětli jim, proč ten plán vyhovuje jejich potřebám.4) Zmínit, že mohou začít s menším plánem a upgrade později.

9. Zákazník se snaží získat neautorizovanou slevu

Scénář:
Zákazník: Viděl jsem na internetu, že jste dát 50% slevy. Mohu mít jeden?
Co dělat:

AI by měla: (1) Slušně vysvětlit aktuální povýšení, pokud existují. (2) NENÍ vytvářet nebo slibovat slevy, které nejsou ve znalostní základně. (3) Pokud zákazník trvá, nabídněte jim spojení s prodejním týmem.

10. Zákazník potřebuje pomoc s funkcí

Scénář:
Zákazník: Jak exportovat svá data? Nemohu najít exportní tlačítko.
Co dělat:

AI by měla: (1) Poskytněte pokyny pro jednotlivé kroky ze znalostní základny. (2) Zahrňte přesnou cestu stránky a umístění tlačítka. (3) Pokud funkce vyžaduje konkrétní plán, uveďte, že. (4) Pokud funkce neexistuje, být upřímný a navrhnout alternativy.

Podpora

Převod chatu a eskalace

Když živý chat potřebuje skutečnou osobu, AI odpoví na dvě otázky: který tým vlastní tento rozhovor a kdo by měl být informován. Oba jsou nakonfigurovány v Nastavení, Klient Chat, Podpora Flow, pod AI routing oddělení.

Výběr, které útvary může AI použít

Dvě krabice na tomto panelu jsou bělicí list. Departmenty přesunuty do prava jsou jediné, které AI může trasu nebo otevřít vstupenky dovnitř. Cokoliv vlevo je neviditelné, i když oddělení existuje a je personálem. Začněte úzký a přidat oddělení, jak jste je zaměstnance.

💡
Pokud není žádné oddělení povoleno, OpsIQ se vrací k odkazu routing přes každé oddělení, které může najít. Zacházejte s tím jako s bezpečnostní sítí, ne jako volbou konfigurace.

Kdo dostane eskalaci

To je ta část, kterou většina lidí očekává, že konfigurovat a nemusí. Když AI eskaluje chat, OpsIQ e-mailem lidi připojených k tomuto oddělení. Řídíte tento seznam jednou, na stránce týmu a oddělení, a jak eskalace vstupenek a chat eskalaci sledovat.

Členové týmu oddělení

Každý aktivní admin připojený k oddělení obdrží vlastní kopii. Zaručené a bezbariérové účty jsou přeskočeny.

Primární admin

Používá se, když nejsou členové týmu připojeni, takže eskalace stále někoho zasáhne.

Nikdo není přivázaný.

Dodávka není možná. Směrovací panel značí, že oddělení v červené a AI neříkají návštěvníkovi člověka byl oznámen.

⚠️
Vlastní e-mailová adresa oddělení je záměrně nikdy používán jako příjemce. Tato adresa je přicházející poštovní schránka oddělení, jeden příchozí pošta je srovnáván s otevřenými vstupenky. Eskalace poslal tam by být vrácena jako nový lístek, spíše než dosáhnout člověka.

Chytač - celé oddělení

Přesně jedno oddělení nese chytlavý cíl. To přijímá chaty AI nemohl sebevědomě místo, a to je poslední možnost spíše než normální cestu.

1
Vyhrajte jasné signály

Vyúčtování se provádí u účtárny, hosting a chybová formulace u technické, nákup znění k prodeji.

2
AI klasifikátor se snaží další

Pokud jsou klíčová slova neprůkazná, model čte rozhovor a vybírá z povolených oddělení.

3
Pak chytač... všechno.

Jen když oba vyjdou prázdné, tak se na to celé oddělení dostane.

4
Prodejní stráž

Pokud je catch-all prodejní oddělení a návštěvník nevykazoval žádný nákupní signál, OpsIQ hledá podporu nebo technické oddělení místo toho, takže běžné podpůrné otázky se nehromadí v Sales.

Co se říká návštěvníkovi

Pokud eskalační email vyjde, AI říká návštěvníkovi, že tým byl oznámen. Pokud nemůže jít ven, AL říká něco upřímného a vyzývá je, aby zanechat zprávu v chatu místo. Nebude tvrdit, člověk byl upozorněn, když žádný e-mail nebyl zaslán.

V panelu stojí "Nikdo to nesmí oznámit" pro oddělení+

K němu není nikdo připojen. Otevřený tým a oddělení, připojit alespoň jeden aktivní admin, pak znovu načíst stránku nastavení. Obraz čte živě.

Může se vystupňování chatu dostat někam jinam než do týmu?+

Ano. Adresa, kterou dříve uložili pro oddělení, stále překrývá seznam týmů. Nová oddělení by měla místo toho přikládat lidi k oddělení, takže je zde jediné místo, kde se udržet.

Proč jsem se nechal chytit?+

Zkontrolujte, zda se jedná o prodejní oddělení. Pokud je, a návštěvník nevykazoval žádný nákupní signál, OpsIQ trasy na podporu nebo technické oddělení na základě účelu.

Podpora

E-mailové schránky a nákresy

OpsIQ se může připojit k e-mailovým schránkám, aby automaticky vytvořil tipy z příchozího emailu a odeslal odpovědi jako email. Poskytuje také AI- draftované odpovědi pro lidské přezkoumání.

E-mail
E-mail k tipuAn IMAP poštovní schránka na levé straně, kde jsou příchozí e-maily vloženy do vstupenky se závitem s AI- draftovanou odpovědí vpravo.E-mailpracovní prostor[email protected] · IMAPŽádost o vrácení[email protected]Nelze se přihlásit[email protected]Fakturační kopie[email protected]Tiket #1042z e-mailu · ÚčetChtěl bych vrátit peníze na...duplikát náplně...Průvan AIReview & send response1INGESTIMAP & přesměrování2TO TICKETSAutomaticky závity3AI DRAFTSOdpovědi k přezkumu
Vytáhněte email přes IMAP (nebo přesměrování), přepněte každý do závitu tiketu, a nechte AI návrh odpovědi na přezkum.

Připojení poštovní schránky

Protokol

IMAP (většina poskytovatelů), Gmail API (Google Workspace), nebo Microsoft Graph (Outlook 365).

Potřebná nastavení

Hostitel, port, šifrování (SSL/TLS), uživatelské jméno, heslo nebo app heslo, složka (obvykle INBOX).

Mapování oddělení

Mapujte schránku do oddělení vstupenek. Emaily na [email protected] vytvořit lístky v oddělení "Podpora".

Nastavení Gmail u (krok za krokem)

1
Povolit 2- Ověření kroků

Přejděte na Google Account > Security > 2- Proveďte kontrolu a povolte to.

2
Vytvořit heslo aplikace

Přejděte na Google Account > Security > App Hesla. Vyberte "Mail" a "Ostatní (OpsIQ). "Kopírovat 16-heslo pro charakter.

3
Zadejte v OpsIQ

Přejděte na e-mail > Mailboxes > Přidat. Nastavit hostitele: imap.gmail.com, přístav: 993, šifrování: SSL, uživatelské jméno: [email protected], heslo: heslo aplikace.

4
Zkouška

Klikněte na Testovací spojení. Pokud se to podaří, OpsIQ začne v nastaveném intervalu sčítat nové e-maily.

Nastavení Outlook 365

1
Zkontrolovat IMAP je povoleno

V nastavení Outlook > Mail > Sync e-mail, ujistěte se, že je povoleno IMAP.

2
Použít heslo aplikace nebo moderní auth

Pokud je zapnuto MFA, vytvořte si heslo aplikace. Jinak použijte své běžné heslo.

3
Zadejte v OpsIQ

Hostitel: outlook.office365.com, přístav: 993, šifrování: SSL, uživatelské jméno: [email protected].

Nastavení webmailu cPanel

1
Najít nastavení IMAP

V cPanel > Emailové účty, klepněte na váš e-mailový účet pro IMAP nastavení.

2
Zadejte v OpsIQ

Hostitel: obvykle mail.yourdomain.com nebo váš server hostitelské jméno, port: 993 (SSL) nebo 143 (STARTTLS), uživatelské jméno: plná e-mailová adresa.

AI e-mailové návrhy

Když je nastavena autoodpověď na režim "Draft", AI generuje návrhy odpovědí, které se objeví ve frontě na výkresy. Můžete:

Přezkum

Přečtěte si návrh a zkontrolujte přesnost.

Upravit

Před odesláním změňte text, tón nebo obsah.

Odeslat

Schválit návrh a poslat jej jako e-mailovou odpověď.

Zlikvidujte

Pokud to není vhodné, návrh smažte.

Automaticky odeslat

Pokud je důvěra dostatečně vysoká a zapnuto autosend, jsou návrhy odesílány automaticky po konfigurovatelném zpoždění.

Proč nejsou emaily převáděny na lístky?+

Kontrola: (1) Je poštovní schránka připojena a zdravá? Podívejte se na zelený stav v e-mailu > Mailboxes. (2) Je cron práce běží? Email hlasování vyžaduje cron. (3) Je e-mail filtrován nebo přesunut do jiné složky, než je INBOX?

Můžu použít více schránek?+

Ano, každá schránka může být zmapována na jiné oddělení. [email protected] jde na podporu, [email protected] A to platí i pro Billinga.

Podpora

Spokojenost zákazníků (CSAT)

CSAT měří spokojenost vstupenek a chatu, povrchy nešťastné odpovědi a porovnává AI a lidské výsledky.

Produktová obrazovka
Spokojenost zákazníkůCSAT stránka kombinuje skóre karty, detraktor follow- up, komentáře, oddělení a agent členění, a zpětná vazba na chat.Spokojenost zákazníkůpracovní prostorODPOVĚDI386AVERAGE4.6POSITIVE91%ŽIVÝ VÍDEJ PRACOVNÍHO SPACESledování odtahových zařízení12 hodnocené odpovědi1–2PřezkumPrůzkumy tipuOdeslat 24h po zavřeníAutomatickéZpětná vazba na chatyAI 4.5 · Lidský 4.7PorovnatPohled na agentaSkóre a počet odpovědíTrenére.1WATCH AVERAGEPoužívejte trend, ne jedno skóre2FOLLOW DETRACTORSPřečtěte si komentář3COMPARE FAIRLYAI a lidské
CSAT stránka kombinuje skóre karty, detraktor follow- up, komentáře, oddělení a agent členění, a zpětná vazba na chat.

Průzkumy vstupenek jsou naplánovány po uzavření (obvykle 24 o několik hodin později). Pozitivní odpověď je skóre4nebo 5. Použijte detraktor fronty pro skóre 1 nebo2a přečtěte si jízdenku / rozhovor před kontaktováním zákazníka.

Zpětná vazba chatu je uvedena samostatně pro AI- resoluted a lidsky-manipulované konverzace. Nízké velikosti vzorku by neměly být použity k zařazení agentů nebo modelů.

Podpora

Týmová emailová vysílání

Stránka Email Platform umožňuje autorizovanému operátorovi poslat jednotime zprávu všem aktivním agentům, vybraným agentům nebo oddělení a přezkoumat historii odeslání.

Produktová obrazovka
E-mailová platformaTým e-mailový skladatel ukazuje publikum, předmět, zprávu a historii doručení v minulosti.E-mailová platformapracovní prostorRECIZITA12DELIVERED11POSLEDNÍ1ŽIVÝ VÍDEJ PRACOVNÍHO SPACEPublikumVšechny aktivní látkyVybranéPředmětčervenec podpora rotaPřipravenZprávaPoznámky k harmonogramu a stupňováníPřipravenHistoriePředchozí vysílání a výsledkyPohled1CHOOSE PEOPLEVšechny, vybrané nebo týmové2WRITE CLEARLYPředmět a zpráva3REVIEW HISTORYPotvrzení výsledku
Tým e-mailový skladatel ukazuje publikum, předmět, zprávu a historii doručení v minulosti.

Tato stránka je pro interní operační zprávy, ne zákaznický marketing. Vyberte si nejmenší správné publikum, jména a adresy náhledu, pak odeslat. Dodávka používá nakonfigurovanou cestu emailu a zaznamenává výsledek.

Podpora

Poštovní schránky, doručovací a příchozí e-mail

Nastavit, jak OpsIQ posílá email, přepne zprávy do tipů a prokáže, že je doména odeslání připravena.

Produktová obrazovka
Nastavení e-mailuNastavení e-mailu kombinuje routing, From identity, požití poštovní schránky, kontroly dostupnosti a testovací email.Nastavení e-mailupracovní prostorVÝSLEDKYSMTPMAILBOXES3DoménaProjítŽIVÝ VÍDEJ PRACOVNÍHO SPACEPreferovaný konektorPřipojení SMTP / ProviderKonfigurovanéZ identitySupport <[email protected]>PřipravenIMAP poštovní schránka[email protected] · Příchozí poštaVolbySchopnost dodávatSPF · DKIM · DMARCProjít1CHOOSE OUTBOUNDKonektor nebo SMTP2CONNECT INBOXIMAP nebo potrubí3ZKOUŠKAOdeslat a ověřit
Nastavení e-mailu kombinuje routing, From identity, požití poštovní schránky, kontroly dostupnosti a testovací email.

Odeslaný e-mail

Full administrátoři si mohou vybrat preferovaný e-mailový konektor; OpsIQ vrátí zpět do konfigurovaného SMTP/ Odesílání pošty v případě potřeby. Nastavte rozpoznatelné jméno / adresu, odešlete test a zkontrolujte 24-Hodinové měření úspěšnosti / selhání.

Poštovní schránky

PSČ IMAP potřebuje jméno, e-mailovou adresu, cílové oddělení, hostitel, port, bezpečnostní režim, uživatelské jméno, heslo, adresář, stav hlasování a volbu validace. Teď Poll. ověřit požití před čekáním na cron.

Spustit potrubí

Na stejném serveru může poštovní trubka předat syrovou zprávu RFC822 přímo. Vzdálený mail server může POST syrové zprávy do chráněného příchozího cílového parametru pomocí svého tokenu. Obě cesty vstupují do stejného potrubí s duplicitou, závitem a ticket- routingem.

Schopnost dodávat

Kontrola SPF / DKIM / DMARC je poradenským důkazem pro konfiguraci Z domény. Zelená kontrola nezaručuje umístění v schránce, ale před odesláním produkčních zpráv by měla být stanovena chyba.

Podpora

Podpora Portálového studia

Podpora Portal Studio navrhuje a zveřejňuje zkušenosti s podporou, které čelí zákazníkovi, aniž by vyžadovala externí obrazová aktiva.

Produktová obrazovka
Podpora Portálového studiaPortálové studio ukazuje odpovídající náhled vedle tématu, navigace, znalosti, vstupenky, asistent, formulář, footer a CSS ovládání.Podpora Portálového studiapracovní prostorTEMPLATEModerníPŘEDCHOZÍ PŘEHLEDPlochaSTÁTNávrhŽIVÝ VÍDEJ PRACOVNÍHO SPACETémaZnačkové barvy a typografieUpravitNavigaceZnalosti, lístky, asistentUpravitFormulář tipuPole, směrování a kopírováníUpravitPublikovatPotvrdit a žítPřezkum1CHOOSE TEMPLATEZačněte od struktury2PREVIEW SIZESDesktop do mobilu3PUBLISH SAFELYPřezkum poté uvolnění
Portálové studio ukazuje odpovídající náhled vedle tématu, navigace, znalosti, vstupenky, asistent, formulář, footer a CSS ovládání.

Použijte šablonu jako výchozí bod, pak nastavte téma, rozložení, navigaci, vyhledávání znalostí, formulář tipu, asistent, footer, značka, chování tipu a vlastní CSS a obecné nastavení. Prohlédněte si plochu, tablet a mobilní před publikováním.

Podpora

Znalostní nedostatky

Výška znalostí-mezera shromažďuje dotazy zákazníků, na které AI nemůže odpovědět s jistotou, takže tým může zlepšit pokrytí.

Produktová obrazovka
Znalostní nedostatkyVýstražná fronta řadí chybějící nebo nízké-důvěra otázky a stopy, zda tým vyřešil je.Znalostní nedostatkypracovní prostorOPEN GAPS28REPEATED9RESOLVED116ŽIVÝ VÍDEJ PRACOVNÍHO SPACEMigrační limityPtát se 14 krátVysokáPodpora pro víkendPtát se 8 krátStředníČasování náhradPtát se 6 krátStředníAPI regionPtát se 3 krátNízká1REVIEW QUESTIONViz kontext konverzace2CHOOSE FIXČlánek nebo výzva3RESOLVEOvěřte další odpověď
Výstražná fronta řadí chybějící nebo nízké-důvěra otázky a stopy, zda tým vyřešil je.

Otevřete mezeru pro čtení původní otázky a blízkého rozhovoru, pak zvolte správnou opravu: aktualizovat existující článek, vytvořit nový znalostní článek, přidat obchodní fakt, správné konektory data nebo změnit eskalační pokyny. Označte to vyřešeno pouze po vyhodnocení nebo skutečný test vrátí přijatelnou odpověď.

Podpora

Správa stavové stránky

Stránka správy stavu komunikuje se zdravím a incidenty služeb pomocí komponent, aktuálních stavů a aktualizací.

Produktová obrazovka
Správa stavuSpráva stavu uvádí komponenty a incidenty, takže operátoři mohou zveřejnit jasné, časově označené informace o službě.Správa stavupracovní prostorOVERALLProvozníSLOŽKY7INCIDENTS1ŽIVÝ VÍDEJ PRACOVNÍHO SPACEInternetová stránkaProvozníZelenáAPIDegradovaný výkonSleduj.Požití e-mailemProvozníZelenáSoučasný incidentVyšetřování latence APIOtevřít1UPDATE COMPONENTVyberte si jasný stav2POST INCIDENTAktualizace s časovým razítkem3RESOLVEUzavřete s souhrnem
Správa stavu uvádí komponenty a incidenty, takže operátoři mohou zveřejnit jasné, časově označené informace o službě.

Používejte stavy komponentů konzistentně. Pokud incident postihne zákazníky, zveřejní počáteční oznámení, přidají aktualizace s časovým razítkem jako změnu faktů a zavřou se stručným shrnutím rozlišení. Nepoužívejte stránku stavu jako interní záznam ladění; citlivá diagnostika patří do OpsIQ a serverových protokolů.

AI

Nastavit si AI

AI Konfigurace je místo, kde si vyberete svého poskytovatele, model a řízení nákladů. OpsIQ podporuje více poskytovatelů: Claude (Anthropic), GPT- 4o (OpenAI), Gemini (Google), a Grok (xAI). Můžete použít vlastní API klíč (BYOK) nebo Managed AI, je-li k dispozici na vašem plánu.

Nastavit AI
Konfigurace AIAI panel nastavení: Managed-AI / BYOK poskytovatel přepnout, model volič, a měsíční token- rozpočet měřič.Konfigurace AIpracovní prostorKonfigurace AIPoskytovatelSpravovaná AIVáš klíč (BYOK)VzorClaude · vyváženýMěsíční rozpočet na AI62%1TWO MODESManaged AI nebo BYOK2PICK A MODELRychlost vs hloubka3BUDGETSKontrola tokenových uzávěrů a nákladů
Vyberte si Managed AI nebo svůj vlastní klíč, vyberte model pro rychlost vs hloubka, a uzávěrka měsíční výdaje s token rozpočtu.

Výběr poskytovatele

Claude (Anthropic)

Silné uvažování, opatrnost s fakty, dobré v následujících komplexních pokynů. Modely: claude- sonnet-4-20250514 Klaude...3.5-sonet. Nejlepší pro: podpora konverzace, technické otázky, podrobná analýza.

GPT- 4o (OpenAI)

Rychlé, kreativní, dobré obecné znalosti. Modely: gpt-4o, gpt- 4o-mini. Nejlepší pro: rychlé reakce, kreativní psaní, široké znalostní otázky.

Gemini (Google)

Dobrý ve faktických otázkách, vícejazyčná podpora.gemini-2.0-Blesk,gemini-1.5 Nejlepší pro: vícejazyčná podpora, faktické vyhledávání.

Žlutá (xAI)

Rychlé, stručné odpovědi. Modely: grok-3Nejlepší pro: rychlé odpovědi, příležitostný tón.

BYOK vs. řízená umělá inteligence

BYOK (Přineste si vlastní klíč)

Poskytujete svůj vlastní API klíč od poskytovatele. Platíte poskytovatele přímo. Plnou kontrolu nad výběrem a použitím modelu.

Spravovaná AI

AI je poskytována jako součást OpsIQ plán. API Klíč je potřeba. Použití je měřeno podle vašeho plánu AI kreditní bilance.

Nastavení kroku-by- step

1
Přejít na konfiguraci AI

V adminu OpsIQ přejděte na Nastavení > AI Konfigurace.

2
Vybrat poskytovatele

Vyberte si svého poskytovatele AI z dropdown.

3
Zadejte API klíč

Při použití BYOK, enter your API klíč. Pro Managed AI, to je řešeno automaticky.

4
Vyberte model

Vyberte konkrétní model, který budete používat. Menší modely jsou rychlejší a levnější. Větší modely poskytují lepší kvalitu odpovědí.

5
Zkušební spojení

Kliknutím na tlačítko "Zkušební spojení" ověřte, zda funguje klávesa API. Zelená znaménko znamená úspěch.

6
Uložit

Kliknutím na Uložit aktivujete konfiguraci AI.

Kontrola nákladů

Měsíční rozpočet

Nastavte maximální měsíční výdaje na AI tokeny. Když je dosaženo rozpočtu, AI vykazuje elegantně degradovat (kratší odpovědi, žádná auto- odpověď) spíše než zastavit úplně.

Per- conversation token limit

Maximální žetony na jeden rozhovor. Zabraňuje rozbíjení konverzace od konzumace nadměrných kreditů.

Upozornění na nízkou rovnováhu

Když váš kreditní zůstatek AI klesne pod práh (výchozí hodnota: 50,000 tokeny), objeví se v admin. Nastavte toto v AI konfiguraci.

Per- workspace konfigurace

Konfigurace AI je per- workspace. Pokud spravujete více stránek, každý pracovní prostor může používat jiného poskytovatele, model a rozpočet. Pracovní prostor zdědí globální chyby, pokud není převrácen. Chcete-li konfigurovat na pracovní prostor: přepnout na pracovní místo, pak přejděte na AI Konfiguraci a uložit nastavení tam.

Získání kláves API

Anthropic (Claude)

Jdi do console.anthropic.com > API Klíče > Vytvořit klíč. Zkopírujte klávesu začínající "sk-ant-".

OpenAI (GPT)

Jdi do platform.openai.com > API Klíče > Vytvořit nový tajný klíč. Kopírovat klíč počínaje "sk-".

Google (Gemini)

Jdi do aistudio.google.com > Získat API Klíč. Vytvořte klíč pro váš projekt. Kopírujte klíč.

xAI (Řecko)

Jdi do console.x.ai > API Klíče. Vytvořte a zkopírujte svůj klíč.

Testování nastavení AI

Scénář:
Po zadání klávesy API klikněte na "Zkušební spojení". Měli byste vidět zelenou značku a odpověď vzorku z AI.
Co dělat:

Pokud zkouška selže: (1) Zkontrolujte, zda API klíč je správný (žádné další mezery). (2) Zkontrolujte, zda je váš účet u poskytovatele. (3) Zkontrolujte, zda je platný název modelu. (4) Pokud používáte Managed AI, ověřte si, zda je vaše licence aktivní.

Který poskytovatel je nejlepší?+

Není tu žádný jediný nejlepší poskytovatel. Claude je vynikající pro podporu konverzace. GPT-4o je rychlý a univerzální. Gemini zpracovává více jazyků dobře. Zkuste každý z nich a uvidíte, které produkuje nejlepší výsledky pro vaše specifické použití případu.

Mohu si později vyměnit poskytovatele?+

Ano. Změňte poskytovatele a API klíč kdykoliv. Stávající historie konverzace je zachována. AI bude používat nového poskytovatele pro všechny budoucí rozhovory.

Co se stane, když mi dojdou kredity?+

AI gradivně degraduje: reakce se zkrátí, auto- odpověď pauzy, a admin ukazuje nízké-vyvážení varování. Core sledování, vstupenky, a CRM pokračovat v práci bez AI.

AI

Chytřejší a levnější pokec se zákazníky

Sada opt- in ovládacích prvků, které činí váš zákazník chatu buď chytřejší (to důvody přes zákaznický účet jako lidský agent) nebo levnější (posílá AI méně, nebo odpovědi v méně krocích). Každý ovladač je vypnut ve výchozím a nezávislé, zapnutí nikdy nemění žádné jiné chování. Většina žít pod Nastavení > Klient Chat > Behaviour; několik jsou na Nastavit si AI a Train vaše AI.

Chytřejší odpovědi (režim agenta)

Normální chatbot zodpoví jednu otázku z jednoho pohledu. Režim agenta na, asistent může provést několik read- pouze kontroly účtu v jednom pořadí a křížově je reference, např. "mám otevřené vstupenky, a je můj zůstatek dost pro mou další obnovení?" je zodpovězena v jedné odpovědi s matematikou udělal. To se zabývá pouze ověřených zákazníků na účet nebo vrácení otázek; vše ostatní běží normální jednoodpovědní cestu.

Režim agenta

Až do několika read- pouze vyhledávání na otočku, křížově-odkazoval před odpovědí. Zapněte, když máte připojenou platformu (WHMCS, Shopify, Stripe, Zendesk, atd.). Off = dnešní single-lookup chování, beze změny.

Myšlení hloubky pro odpovědi agenta

Jak těžké je pro model v komplexních závitech (nízká / střední / vysoká). Začněte na nízká; většina podpůrných otázek je zde dobře řešena.

Model agenta

Přišije silnější model jen pro komplexní agent otáčky, takže každodenní chat zůstane na světle, levné modelu a pouze tvrdé zatáčky platit za hloubku. Prázdný = váš normální zákazník- chatu model.

Plánujte dopředu · odpovědi na jeden průchod (beta)

Malý plánovací krok rozhodne, které vyhledávací zařízení vytáhnout a zda je třeba znalostní základny, pak odpoví v jednom hlavním volání místo několika kroků. Sub- přepínač v režimu Agent. To nemůže být povoleno, pokud je zapnutý režim Agent. Stejná kvalita odpovědí, méně hovorů na multipart otázky.

Rozhovor a porozumění

Paměť dlouhotrvající konverzace (beta)

Udržuje krátký přehled starších zpráv (jména, čísla vstupenek / faktur, částky, rozhodnutí), takže asistent zůstane konzistentní přes velmi dlouhé chaty bez dalšího přepisu. Nejlepší pro support- těžké, dlouhé závity; páry s Agent módu.

Tolerance typu po

Čte malé chyby ("moje otevřené tikety", "nezaplacené faktury") jako zamýšlená slova, takže správné informace jsou nalezeny místo zmeškaných. Pracuje s každou připojenou platformou. Vypnuto ve výchozím nastavení; užitečné pro mobilní-těžký chat.

Kontext vázaného účtu

Pouze připojuje zákaznický účet snímek, když je otázka vlastně o jejich účtu (zůstatek, faktury, vstupenky, služby), přeskakování na obecné otázky. Řezy náklady bez ztráty kvality. Asistent může stále vyzvednout účet živě, když zatáčka potřebuje.

Úspora nákladů

Přeskočit vyhledávání znalostí pro pozdravy (beta)

"Ahoj," "díky" a "ok" nespouštějí vyhledávání znalostí-base, tyto odpovědi nikdy použít. Jakákoliv zpráva s reálným obsahem stále hledá jako normální.

Nejdelší povolená odpověď (žetony)

Délka odpovědi je nejdražší část hovoru, takže rozumný limit (kolem 500 pro podporu) je nejúčinnějším způsobem kontroly nákladů na chat. Snižuje pouze váš globální limit, nikdy ho nezvyšuje.

Nastavit si AI

Hloubka myšlení (zákaznický a admin chat)

Jak moc model myslí před odpovědí (minimální až vysoká). Udržujte zákaznický chat na minimální / nízké rychlosti; rezervujte si vyšší nastavení pro analýzu a admin copilot.

Model Per- AI (na jednu práci)

Každý AI povrch (živý chat, návrhy vstupenek, shrnutí, analýza, admin copilot, propagace, Site Intelligence a další) může běžet na svém vlastním modelu. Světlo, kde rychlost záleží, silné, kde kvalita záleží. Prázdný na povrchu = poskytovatel výchozí pro tuto práci.

Admin chat kontrola nákladů

Admin copilot může mít ohraničenou pracovní paměť a načíst pouze nástroje, které otázka potřebuje (štíhlé nástroje) místo každého nástroje na každém kroku.

Na Train your AI

Návod k tlakovému zařízení

Vaše instrukce jsou zaslány na každém kole, takže jejich délka je opakující se náklady. Tlačítko Compress přepíše slot říci totéž méně slovy. Odmítá přepsat, pokud by to upustil jakýkoliv {variable} nebo pravidlo, a hlásí, co chránila, takže to nikdy tiše mění význam.

"Co je už v mozku" (?)

Zobrazuje, co OpsIQ již ví o vašem podnikání na slotu, takže můžete smazat vše, co jste opakovali ve svých vlastních pokynech.

💡
Kde jdou peníze? Pro krátkou podporu chatu vstup (instrukce + data účtu + historie, odeslané každý obrat) obvykle stojí více než krátké odpovědi, caching a štíhlé kontext pomoci tam. Pro dlouho generovaný obsah dominuje výstup. Replika-délka uzávěrka a nižší hloubka myšlení vyplatí tam. Viz Nastavit si AI pro udržení rychlé cache na, což dělá velkou opakovanou část každého odbočení levné.
Mění to, jak už se na ten chat odpovídá?+

Ne. Každá kontrola je ve výchozím nastavení a nezávislá. Zapnutí jednoho na jednom jen přidává své chování; vypnutí vrací chat přesně tak, jak předtím fungoval.

Jaký rozkaz mám zapnout?+

Běh každodenní chat na světle modelu a pin silnější model agenta. Pak, pokud máte připojenou platformu, povolit Agent režim, pak plán dopředu, pak Long- konverzace paměti. Pak štíhlý kontext, skip- KB-for-pozdravy, a odpověď uzávěrka. Konečně stlačte své pokyny. Podívejte se na několik skutečných chatů po každé změně.

Admin Agent kit: vyhledávání na webu, runbooks, misie, přenos souborů

Admin AI chat je pracovní inženýr, nejen na otázku box. To může výzkum opravy na webu, udržet knihovnu vašich operačních postupů, sledovat servery na harmonogramu, a přesunout soubory. Většina z toho je poháněna tím, že žádá o to v chatu; jednu věc si konfigurovat dopředu je, který poskytovatel vyhledávání webové stránky používá, na Nastavit stránku AI.

Hledání na webu

Zabudované

Agent vyhledává na webu dokumenty, chybové zprávy a aktuální informace, zatímco to funguje. Z pole toto používá DuckDuckGo, který nepotřebuje žádný klíč a žádné nastavení.

Runy

V chatu

Uložená knihovna vašich postupů ("jak se nám daří X zde"). Agent zapíše jeden dolů po přibití složité práce a následuje ji příště, takže know-how přežije konec chatu.

Mise

Plánované

Každé ráno zkontrolujte prostor disku a chybové záznamy a řekněte mi to. "Nálezy přicházejí na váš admin zvonek.

Přenos souborů

V chatu

Zeptejte se na soubor záznamu a získejte soukromý odkaz ke stažení, nebo si jeden soubor zkopírujte z jednoho připojeného serveru do druhého. Oba jsou omezeny na 5 MB.

Admin Agent vyhledávání na webu (na Nastavit váš AI)

Poskytovatel vyhledávání

Co agent web vyhledávání používá. Výchozí je DuckDuckGo: bezklíčový, zdarma, pracuje na každé instalaci. Statečné Hledání, Tavily a Serper.dev (Výsledky Google) obvykle vrátí lepší výsledky, ale každý potřebuje API klíč od tohoto poskytovatele. Pokud keyed poskytovatel selže z jakéhokoliv důvodu (špatný klíč, kvóty využité, síťové potíže), toto vyhledávání se automaticky vrátí do DuckDuckGo, takže hledání nikdy nejde do tmy.

Hledat klávesu API

Klíč pro zvoleného poskytovatele, který je potřebný pouze pro Statečné, Tavily nebo Serper. Jakmile je uložen, je maskován a na stránce již není nikdy zobrazen; vložte nový, aby jej nahradil. Poskytovatel se stává aktivním pouze tehdy, když je uloženo jak poskytovatel, tak jeho klíč.

Runy

Když agent právě pracoval přes práci budete chtít udělat stejnou cestou znovu, řekněte "uložit, že jako runbook s názvem nightly- čištění." Od té doby na to vidí runbooku podle jména v každém zasedání, a když se zeptáte na práci jménem (nebo popsat), že táhne kroky a následuje je. Můžete požádat, aby seznam, aktualizovat nebo smazat runbook kdykoliv.

💡
Běžec je návod, ne volný průchod. Když agent následuje jeden, každý krok, který by změnit server stále prochází váš současný režim oprávnění a zobrazí obvyklé schvalovací karty. Běžková kniha nemůže nikdy obejít schválení.

Mise

Mise je opakující se práci agent běží sám o sobě: hodinově, denně v nastavené hodině, nebo týdně na stanovený den. Mise jsou read- pouze podle návrhu. Mohou číst servery, data a web, ale oni nikdy nic změnit, oni vyšetřují a hlásit. Když mise skončí, nálezy přistávají jako oznámení na váš admin zvonek. Řekni "spustit ranní hlídku teď" spouštět jeden na vyžádání, nebo požádat agenta, aby seznam, pauza nebo odstranění misí.

⚠️
Mise běží mimo OpsIQ cron, takže je třeba nastavit (viz Cron a automatizace). Jednorázové "spustit to teď" z chatu funguje i mezi cron běží na většině serverů.

Přesouvání souborů

Zeptejte se na soubor ("získat mi dnešní chybový záznam z webového serveru") a agent ji nastaví a odpoví soukromým stahovacím odkazem. Odkaz funguje pouze pro signed- in admins a vyprší po asi den. Soubory jsou omezeny na 5 MB; pro cokoliv většího, požádejte agenta, aby komprimoval nebo zkrátil na serveru první.

Agent může také kopírovat jeden soubor mezi dvěma připojenými servery, opět až do 5 MB. Zapsat na destinaci je zacházeno jako s jakoukoli jinou změnou, kterou provede: v režimu dotazu dostanete nejprve kartu schválení, existující soubor je zálohován a kopie je reverzibilní. Pro bezpečnost, obsah souboru je přečtena ze zdroje v okamžiku, kdy je použita kopie, není převzat z chatu.

AI

Trénuj svůj AI

AI školení je místo, kde se učí OpsIQ, jak se chovat. Píšete podněty, které definují osobnost, hranice, znalosti zaměření a eskalační pravidla. Představte si to jako psaní cvičné příručky pro novou podpůrnou agentku.

Vlak AI
Trénuj svůj AIEditor instrukcí AI s kartami Zákazník / Admin a prostým anglickým tónem, vždy a nikdy nevládne.Trénuj svůj AIpracovní prostorZákazník AIAdmin AITónPřátelský, stručný, nikdy netlačený.VždyNabídnout lidské předání za vyúčtování sporů.NikdySlib mi vrácení peněz bez kontroly účtu.1TWO MANUALSZákazník & admin AI2PLAIN ENGLISHTone, vždycky, nikdy.3GROUNDEDPlus vaše znalosti.
Trénujte AI jako nový pronájem, Zákazník a Admin manuály napsané v jednoduché angličtině (tón, vždy, nikdy), uzemněné ve vašem KB.

Dvě oblasti odborné přípravy

Poptávka zákazníka AI

Ovládá, jak AI mluví s vašimi zákazníky v widget chatu. To je nejdůležitější výzva k dosažení správné.

Admin AI výzva

Ovládá, jak AI pomáhá vašemu admin týmu v palubní desce operátora. To řeší interní dotazy a akční provedení.

Psaní skvělé zákaznice AI point

Váš zákazník AI by měl tyto oblasti:

1
Identita

Kdo je AI? Dejte mu jméno, roli a osobnost. Příklad: "Jste Luna, přátelský a znalý asistent zákaznické podpory pro Acme Store."

2
Tone a styl

Jak by to komunikovat? Příklad: "Buďte profesionální, ale teplé. Použijte jednoduchý jazyk. Vyhněte se žargon. Udržujte odpovědi stručné (2-3 odstavce max). "

3
Hranice znalostí

Co by měl vědět a nevědět? Příklad: "Víte o našich produktech, cenách, lodní dopravy a návratové politiky. NEvíte o konkurenčních produktech nebo interních podnikových rozhodnutí."

4
Pravidla pro eskalaci

Kdy by se mělo předat člověku? Příklad: "Vyzkoušejte člověka, když: zákazník žádá o vrácení peněz, zmiňuje právní opatření, podává zprávy o bezpečnostní otázce, nebo klade stejnou otázku třikrát."

5
Věci, které nikdy nedělají.

Tvrdé hranice. Příklad: "Nikdy neslibujte náhrady. Nikdy nesdílejte interní cenové vzorce. Nikdy nevymýšlejte vlastnosti produktů, které neexistují. Nikdy nedávejte lékařské, právní nebo finanční rady."

Příklad podnětů

Příklad zákazníka AI equipt · online obchod
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
Příklad zákazníka AI equipt · hostující společnost
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

Refinování vašeho času

1
Spustit se základy

Začněte s identitou, tónem a klíčovými hranicemi. Nesnažte se pokrýt všechno první den.

2
Recenze AI Historie týdně

Čtěte rozhovory, kde AI dal špatné nebo suboptimální odpovědi.

3
Aktualizovat výzvu

Přidejte konkrétní pravidla pro opakující se problémy. Příklad: pokud AI bude pokračovat v slibných náhradách, přidejte "Nikdy neslibujte vrácení. Řekněte, že budete eskalovat do fakturačního týmu".

4
Přidat znalosti

Pokud AI nemůže odpovědět na otázku, přidejte odpověď na Znalostní základnu, spíše než se snaží vhodně vše do rychlosti.

⚠️
Držte svůj příkaz pod 2,000 slov. Příliš dlouhé výzvy mohou zmást AI a zvýšit tokenové náklady. Dejte podrobné informace do znalostní základny místo.
Jaký je rozdíl mezi rychlým a znalostním základem?+

Rychlá definice osobnosti, hranic a pravidel. Znalostní základ poskytuje faktické informace (údaje o produktu, ceny, politiky). AI čte obojí, ale rychlé tvarů chování, zatímco KB poskytuje odpovědi.

Mohu dostat různé podněty pro různá oddělení?+

Pohotovost je per- pracovní prostor. Pokud potřebujete odlišné chování AI pro různé oddělení, použijte znalostní základnu k poskytování konkrétních informací oddělení a zmínit kontext oddělení ve vaší rychlosti.

AI

Historie AI

Historie AI ukazuje každý rozhovor, který AI měl se zákazníky a administrátory. Použijte ji pro audit výkonnosti AI, najít špatné odpovědi, a identifikovat mezery v tréninku.

Historie AI
Historie AIZáznamy AI se otáčejí s typovými odznaky, otázkou a odpovědí, dobou odezvy a výsledkem.Historie AIpracovní prostorKaždý AI obrat, zaznamenánchatQ: Kde je moje objednávka?A: dnes odesláno, UPS sledování...0.9szodpovězenolístekNávrh odpovědi pro T-12345Vypracované potvrzení náhrady1.4sdraftedadminShrnout lístky na tento týden12- Přehled vrácen2.1sHotovo.chatQ: zrušte můj plánpředán člověku0.7sescalated1EVERY TURNPostupné, odpověď, akce2SEARCHABLEFiltrovat a exportovat3OWNER-ONLYÚplná auditní stopa
Každý AI obrat (chat, návrh tipu, admin akce) zaznamenán s přesnou rychlou, odpověď, trvání a výsledek.

Co každý rozhovor ukazuje

Datum a čas

Když se ten rozhovor stal.

Identifikace zákazníka

Jméno a e-mail, pokud je znám, jinak IP a země.

Kanál

Chat widget, tiket auto- odpověď, e-mail draft, nebo admin AI.

Zprávy

Plný přepis konverzace: zákaznické zprávy a odpovědi AI.

Použití tokenu

Kolik žetonů konverzace spotřebované. Vysoké používání token může znamenat, že AI dává příliš verbální odpovědi nebo rozhovor šel v kruzích.

Přijatá opatření

Jakékoli akce, které AI během rozhovoru (vyhledal pořadí, vytvořil tiket, atd.).

Hodnocení

Pokud je CSAT povoleno, zákazníkova spokojenost s touto konverzací.

Zjišťování problémů

Hledat pomocí klíčového slova

Hledat konkrétní témata, jak je AI zpracovává. Příklad: hledat "vrácení" pro kontrolu, zda AI je v souladu s vaší návratové politiky.

Filtr podle ratingu

Zobrazovat pouze málo hodnocené konverzace zaměřit se na nespokojených zákazníků.

Filtrovat podle kanálů

Zobrazovat pouze automatické odpovědi na audit automatizovaných odpovědí odděleně od chatu.

Setřídit podle použití tokenu

High- token konverzace může naznačovat problémy: AI blábolení, jít v kruzích, nebo neodpovědět na otázku.

Týdenní audit

1
Kontrolovat konverzace s nízkým hodnocením

Přečti si celý přepis. Co se pokazilo? Byla to mezera ve znalostech, problém s tónem nebo špatná odpověď?

2
Zkontrolujte high- token konverzace

To by mohlo znamenat zmatek.

3
Aktualizace školení

Pro nedostatek znalostí přidejte články do Znalostní základny. Pro problémy s chováním aktualizujte AI příkaz. Pro opakované nesprávné odpovědi přidejte explicitní korekční pravidla.

Zjišťování mezer ve znalostech

Scénář:
Vyhledáváte historii AI pro "instalaci" a najdete 15 konverzace, kde AI řekl: "Nemám specifické pokyny pro instalaci tohoto produktu".
Co dělat:

To znamená, že vaše znalostní báze chybí instalační příručky. Vytvořte znalosti základní články pro každý produkt instalačních kroků. Po přidání, test tím, že položí AI instalační otázky.

AI

Náhled AI

AI Insights automaticky analyzuje konverzační vzory a povrchy napadnutelné nálezy: společné otázky, trendy spokojenosti, mezery ve znalostech a eskalační modely.

Náhled AI
Názory AI (zpravodajské jednotky)Inteligence Hub: AI dnes je Brief, Smart Alerts, Score- a- Oad / Analyse-a- Page nástroj, a 14- Day Traffic Pattern Chart.Náhled AIpracovní prostorDnešní briefProvoz nahoru 12%; 3 horká vedení;2Je třeba, aby obchody pokračovaly.Chytrou výstrahuChyby při odhlášení zvýšenyOdrazte se na /pricingNový horký olovo z USAPříjmy před minulým týdnemSkóre a olovo / Analyse a PageIP nebo URL…Běž.14-Denní dopravní vzor1Dnešní briefAI píše ranní shrnutí2SMART ALERTSAnomálie se objevily.3ON DEMANDSkóre vedení · analyzovat stránku
Skutečný zpravodajský klub: AI- napsaný Dnešní stručný, Chytré varování pro anomálie, on-poptávka olovo bodování a analýzy stránek, a 14-den dopravní vzor.

Co ukazují pohledy

Hlavní otázky

Nejčastěji kladené otázky. Pokud "Jak resetovat heslo?" je #1, vaše znalostní základna potřebuje prominentní průvodce pro resetování hesla.

Trendy uspokojování

CSAT skóre v průběhu času. Je AI spokojenost zlepšuje nebo klesá? Náhlé kapky mohou naznačovat, že znalosti základní změny, které rozbily něco.

Rychlost rozlišení

Jaké procento rozhovorů řeší AI bez lidského zásahu? 70% je dobrý. Níže 50% To znamená, že AI potřebuje víc tréninku.

Eskalační důvody

Proč konverzace se předává lidem. Běžné důvody: zákazník požádal člověka, AI nemohl odpovědět, citlivé téma, fakturační problém.

Znalostní nedostatky

Topics, kde AI často říká "Nevím" nebo dává nízké sebevědomí odpovědi.

Průměrná délka konverzace

Kolik zpráv na rozhovor. Velmi dlouhé konverzace (10+ zprávy) může naznačovat, že AI není pochopit otázku.

Použití poznatků ke zlepšení

Scénář:
AI Insights ukazuje, že 23% eskalací jsou "Zákazník se ptal na záruku" a AI nemohl odpovědět.
Co dělat:

Toto je jasná mezera ve znalostech.1) Napište komplexní záruční článek do Znalostní základny zahrnující všechny podmínky záruky, proces reklamace a vyloučení. (2) Aktualizujte AI příkaz k referenci o záručních informacích. (3) Monitor AI Insights příští týden zjistit, zda se záruky eskalace snížit.

AI

Příručka pro správu AI

Admin AI (Zeptejte se OpsIQ) pomáhá vašemu týmu zvládnout OpsIQ z admin palubní desky. Můžete ji požádat, aby vyhledala data, vysvětlit funkce, shrnout tipy a provádět platformu akce.

Admin AI
Příručka pro správu AIPříkazová schránka Ask-OpsIQ s akčním kartičkou AI- navrženou platformou zobrazující parametry a potvrzovat / zrušit.Zeptejte se OpsIQpracovní prostorZeptejte se OpsIQPodezření na službu pro opožděný účet #4821AINavrhovaná akce: suspend_serviceúčet: #4821 (zpoždění) $120)platforma: WHMCS · reverzibilní · auditovanéPotvrditZrušit1ASK ANYTHINGPříkazy pro prostou angličtinu2PROPOSE FIRSTAkce zobrazena před spuštěním3YOU CONFIRMKopírování a audit
Řekněte admin AI, co chcete v jednoduché angličtině; navrhuje přesnou akci (oskenované, reverzibilní, auditované) a čeká na vaše potvrzení.

Co může admin AI udělat

Vyhledat data

Zeptejte se: "Ukažte mi všechny vstupenky od [email protected]"nebo" Jaký je stav objednávky # ORD-5523?"

Shrnout

Zeptejte se: "Shrňte poslední 10 lístky" nebo "Jaké jsou hlavní problémy podpory tento týden?"

Vysvětlit vlastnosti

Zeptejte se: "Jak nastavit autoodpověď?" nebo "Co znamená karta s odrážkou?"

Provést akce

Zeptejte se: "Vytvořte si tiket pro [email protected] o vyúčtování "nebo" Zavřít tip T-12345"

Otázky na nástupišti

Zeptejte se: "Kolik návštěvníků jsme dostali včera?" nebo "Jaké jsou naše příjmy tento měsíc?"

Příklad konverzace

Vyhledávání zákazníka

Scénář:
Admin se ptá: "Najděte zákazníka [email protected] a ukažte mi jejich poslední aktivity"
Co dělat:

AI vyhledává zákazníka přes všechny připojené zdroje dat: návštěvníky, lístky, chat konverzace, objednávky a CRM kontakty. Vrací souhrn nedávné činnosti s odkazy na každou položku.

Získání denního shrnutí

Scénář:
Admin se ptá: "Co se dnes stalo?"
Co dělat:

AI shrnuje: "Dnes jste měli 245 návštěvníci (up 12%), 8nové vstupenky (3 vyřešen společností AI),2nové objednávky celkem $198, a1Vystupňování chatu o zpoždění přepravy. "

Provedení akce

Scénář:
Admin se ptá: "Změna tipu T-5523 priorita pro naléhavé"
Co dělat:

AI potvrzuje: "Změním tiket T-5523 priority z Normal na Urgent. To ovlivní SLA časovač. Potvrďte?" Potvrzujete, a akce je provedena.

💡
Admin AI provádí pouze akce, které jsou zapsány v akčním registru. Nemůže vynalézt akce nebo přístupové systémy mimo OpsIQ.
AI

Spektrum spotřebitelských AI

Tato část zahrnuje běžné scénáře AI, které čelí zákazníkovi, s očekávaným chováním a tipy na školení.

Zákazník AI
Spektrum spotřebitelských AIKnihovna zákaznických otázek spárovaná s očekávaným chováním AI a výsledkovou značkou pro každého.Spektrum spotřebitelských AIpracovní prostorKnihovna Scénáře · očekávané chování AI"Kde je můj rozkaz?"Vyhledat objednávku přes konektor, dát sledováníŘešení"Chci vrátit peníze"Potvrdit, nikdy slíbit · ruku k člověkuHandoffCity in New York USA"Je služba neplatná?"Zkontrolovat stav, hlásit aktuální stavStav"Zruš můj účet"Potvrďte záměr, pak se dostanete k člověku.Potvrdit1SCENARIOSSpolečné otázky2EXPECTEDJak by měla AI odpovědět3ZKOUŠKANajít mezery v tréninku
Knihovna skutečných zákaznických otázek a přesně jak by se AI měla s každým vypořádat, aby otestovala váš trénink a našla mezery.

Knihovna scénářů

Vyšetření stavu objednávky

Scénář:
Zákazník: "Kde je moje objednávka #12345?"
Co dělat:

Očekávané chování AI: (1) Vyhledejte si objednávku přes platformní konektor. (2) Hlášení aktuálního stavu (zpracování, odeslání, dodání). (3) Uveďte číslo sledování, je-li k dispozici. (4) Je-li příkaz odložen, potvrďte a uveďte odhadovanou časovou osu. (5Nikdy nevymýšlejte sledovací informace.

Požadavek na nastavení hesla

Scénář:
Zákazník: "Zapomněl jsem heslo a nemohu se přihlásit"
Co dělat:

Očekávané chování AI: (1) Poskytněte kroky resetování hesla ze znalostní základny. (2) Zahrnout resetovat odkaz nebo cestu stránky. (3) Zmínit, že reset e-mailu může trvat několik minut. (4) Navrhnout kontrolu spam složky. (5) Pokud zákazník stále nemůže resetovat, eskalovat na člověka.

Žádost o funkci

Scénář:
Zákazník: "Můžete přidat tmavý režim do mobilní aplikace?"
Co dělat:

Očekávané chování AI: (1Děkuji jim za návrh.2) Vysvětlete, jak se vyřizují žádosti o funkce (přihlášené, přezkoumávané, prioritní). (3) NESlibujte, že bude tato funkce postavena. (4) Pokud podobná funkce existuje, zmiňujte ji.

Spor o zaplacení

Scénář:
Zákazník: "Byl jsem obviněn, ale moje služba nefunguje"
Co dělat:

Očekávané chování AI: (1) Potvrďte frustraci. (2) Pokud možno zkontrolujte stav služby. (3) Eskalujte do fakturačního oddělení se všemi detaily. (4Neslibuj vrácení peněz.5) Nastavte prioritu vstupenky na vysokou.

Off- topic question

Scénář:
Zákazník: "Jaké je dnes počasí v Londýně?"
Co dělat:

Očekávané chování AI: (1) Poměrně přesměrovat. "Jsem váš [Společnost] asistent podpory a může pomoci s otázkami o našich produktech a službách. Pro informace o počasí, zkuste meteorologické služby." (2) Zeptejte se, zda mají otázku produktu.

Jak mohu otestovat chování zákazníka AI?+

Otevřete si webové stránky v soukromém / inkognito prohlížeči a chatujte s AI jako zákazník. Zkuste společné otázky, hrany případy, a soupeřskými scénáři. Zkontrolujte, zda AI dodržuje vaše rychlá pravidla a používá znalosti základní obsah správně.

AI

Znalostní základna AI

Znalostní báze je knihovna článků, které AI používá k zodpovězení otázek. Když se zákazník na něco zeptá, AI prohledá znalostní základnu pro relevantní články a použije je k vytvoření přesné, uzemněné odpovědi.

Znalostní základ
Znalostní základZdroje se krmí do obchodu s znalostmi, pak AI vytváří uzemněnou, citovanou odpověď.Znalostní základpracovní prostorZdrojePlazení na webových stránkáchNávěstní předmětyFAQDovážené dokumentyZnalostisémantické + klíčové slovoAIZaražená odpověďs citovaným zdrojem."Výše náhrad 3–5pracovní dny. "1INGESTPlazit, FAQ, dovoz2RETRIEVESemantické + klíčové slovo3GROUNDEDOdpovědi z vašeho obsahu
Prohledejte stránky a importujte dokumenty do znalostní základny; AI získá správné kousky a odpovědi, uzemněné a citované.

Jak to funguje

1
Zákazník se ptá

"Jaká je vaše návratová politika?"

2
AI hledá znalostní základnu

OpsIQ najde článek "Návratová politika" odpovídající klíčová slova a sémantický význam.

3
AI generuje odezvu

AI čte článek a píše naturální-jazyk odpověď na základě obsahu článku.

4
Zákazník dostane přesnou odpověď

Reakce je založena na vaší skutečné politice, ne na obecných údajích o výcviku AI.

Vytváření dobrých předmětů

Jedno téma na článek

Napište samostatný článek pro každé téma: návratová politika, přepravní sazby, nastavení účtu, resetování hesla. Nekombinujte nesouvisející témata.

Napiš jako FAQ.

Začněte s otázkou, kterou zákazníci pokládají, pak poskytněte odpověď. To pomáhá AI odpovídat na otázky k článkům.

Buď konkrétní.

"Návraty musí být zahájeny v rámci 30 dnů dodání" je lepší než "Máme návratové politiky".

Zahrnout hrany

Co mezinárodní výnosy? Co digitální produkty? Co položky zakoupené ve prodeji? Pokryjte výjimky.

Udržujte to v proudu.

Recenze články čtvrtletně. Smazat zastaralé informace. Aktualizovat ceny, politiky a postupy, když se změní.

Starter články, které byste měli napsat

Přepravní a doručovací služby

Náklady na přepravu, dodací lhůty, sledování, mezinárodní lodní dopravu a manipulaci zpoždění.

Vratky a náhrady

Vrátit okno, podmínky, proces, vrácení času a výjimky.

Správa účtu

Resetovat heslo, změnit e-mail, smazat účet a exportovat data.

Ceny a vyúčtování

Popisy plánů, fakturační cyklus, platební metody, faktury a měna.

Pokyny pro výrobky

Jak používat každý výrobek nebo funkci. Step-by- step instrukce s screenshoty.

Řešení problémů

Společné problémy a řešení. Chybové zprávy a jejich opravy.

Kontaktní údaje

Pracovní doba, podpůrné kanály, reakční doby a eskalační cesty.

Právní předpisy a dodržování předpisů

Shrnutí zásad ochrany osobních údajů, shrnutí služeb, žádosti o data GDPR.

Znalosti spojovacích zařízení

Každý konektor může přispět k poznání AI. Pokud je zapnutý konektor, jeho vestavěný-in znalosti články (katalog produktů, společné otázky, konkrétní nastavení platform- specific problémů) jsou automaticky dostupné pro AI, můžete přepínat znalosti konektoru na nebo vypnutí jednoho konektoru v nastavení konektoru.

Rozpočet na token

Znalostní báze má konfigurovatelný token strop (výchozí: 32,000 tokens), který kontroluje, kolik znalostí je posíláno do AI za konverzaci. Pokud je vaše znalostní základna velmi velká, AI vybere nejdůležitější články v rámci tohoto rozpočtu. Zvyšte strop, pokud AI není najít příslušné články; snížit ji, pokud chcete snížit náklady na token.

Kolik článků bych měl mít?+

Začněte s5-10 články týkající se vašich nejčastějších otázek. Přidat více, jak si určit mezery prostřednictvím AI Historie a AI Insights. Většina podniků potřebuje 20-50 články pro komplexní pokrytí.

Mohu importovat články z jiného systému?+

V současné době jsou články vytvářeny ručně v OpsIQ. Obsah copy- pastu můžete kopírovat ze stávajících FAQ, pomocných center nebo dokumentů.

V jakém formátu by měly být články?+

Jednoduchý text funguje nejlépe. AI rozumí přirozenému jazyku lépe než strukturovaný HTML nebo markdown. Napište, jak byste vysvětlit zákazníkovi.

AI

Hodnocení AI a Strážná věž

Hodnotící sady přemění kritické otázky zákazníků na opakovatelné testy kvality odpovědí, citací, eskalací a bezpečnosti akcí.

Produktová obrazovka
Hodnocení AIAI Evaluation uvádí zlaté testovací případy, požadované chování, nejnovější výsledky a plánované běh Strážné věže.Hodnocení AIpracovní prostorSETS6CASES84PASS RATE96%ŽIVÝ VÍDEJ PRACOVNÍHO SPACEPřepravní politikaCitace nutnáProjítŽádost o vráceníPožadované potvrzení o lidském původuProjítNepodporovaná žádostZakázané opatřeníProjítOtázka migraceOčekávaný chybějící zdrojSelhání1CREATE CASESZlatý vstup a pravidla2RUN SAFELYSuchý běh nebo živé eval3WATCHDenní nebo týdenní rozvrh
AI Evaluation uvádí zlaté testovací případy, požadované chování, nejnovější výsledky a plánované běh Strážné věže.

Plná administrátorka může vytvářet evaluační sady s rychlým, očekávaným zdrojovým štítkem, požadovanými citacemi, lidskými pravidly, eskalací očekávání a zakázanými akcemi. Spustit soubor přímo, suchost-spustit ji, nebo přehrát zvolenou historii.

Strážná věž každý den nebo týden kontroly prostřednictvím cron a běží omezený počet případů (až osm na plánovaný průchod). Přezkum selhání vedle poskytovatele / modelu, rychlé verze, znalosti verze, opatření navržená a náklady před změnou chování výroby.

AI

Jazyky a překlady

Jazyky spravuje přeložený text na zákazníky- čelí a chování používané při OpsIQ následuje jazyk zákazníka.

Produktová obrazovka
JazykyStránka Jazyky ukazuje výchozí jazyk, přeložené jazyky, návrh / živý stav a chování uživatele-jazyk.Jazykypracovní prostorZDROJAnglickyLANGUAGES4ŽIVOT3ŽIVÝ VÍDEJ PRACOVNÍHO SPACEFrancouzštinaRozhraní a obsahŽivéNěmeckýRozhraní a obsahŽivéŠpanělštinaNávrh překladuNávrhSledovat zákazníkaOdpověď v odhaleném jazyceZapnout1SET SOURCEPůvodní jazyk provozovatele2ADD LANGUAGEPřeložit v pozadí3PUBLISHNávrh nebo živý
Stránka Jazyky ukazuje výchozí jazyk, přeložené jazyky, návrh / živý stav a chování uživatele-jazyk.

OpsIQ překládá operační-zadaný uživatelsky orientovaný text. Nastavte zdrojový jazyk správně před vytvořením překladu, přidat cílové jazyky, pak recenzi návrhů před publikováním. "Postupujte podle zákaznického jazyka" ovládá reakční jazyk; překlad widget rozhraní kontroluje jeho tlačítka, štítky a systémový text.

Překlady lze navrhnout pouze nebo žít. Nespoléhejte se na strojový překlad pro právní, vrácení, bezpečnost nebo bezpečnostní text bez lidského přezkumu.

Každé místo, kde máte vlastní znění je uvedeno s jeho počet zpráv: klientské chatovací zprávy, propagace, proaktivní zprávy, chat toky, prohlídky s průvodcem, oznámení, píchací bubliny a Průzkumy a formuláře. Průzkum povrch pokrývá každý zveřejněný průzkum zcela: název, každá otázka, každá odpověď možnost, tlačítka, vítání a díky- kopírujete, strana chrom a výsledné stránky. Klíče jsou vázány na ID otázky a hodnotu volby, takže přeobjednávání otázek nebo možností nikdy neztratí překlad, a přeformulování jedna zpráva překládá pouze tuto zprávu. Publikované živé průzkumy jsou nabízeny ve výchozím nastavení, návrhy se připojí, když rozšiřujete rozsah.

Post- chatu e-mailový průzkum následuje jazyk návštěvník skutečně chatted v, za předpokladu, že jazyk je ten, který zde nabízíte; jinak používá váš systémový jazyk. Jeho šest editable pole jsou přeloženy na této stránce příliš, a chování má svůj vlastní přepínač v nastavení Client Chat.

Zprávy o vstupence a portálu pokrývá pevné textové operátory typu jednou a každý zákazník pak obdrží v tomto jednom jazyce: potvrzení vstupenky, otevřené, uzavřené a zpětné vazby potvrzení, per- department sign- off a portál welcome line. (AI auto- odpověď nepotřebuje nic z toho, to již odpovídá v jazyce zákazníka.) Email zákazníci ve svém vlastním jazyce zapnuto OpsIQ Psaní, e-mailová jízdenka řeší jazyk příjemce v tomto pořadí: jazyk, který si vybrali v portálu nebo Help Centre (přenesený na vstupenku), locale na jejich kontaktní záznam, pak jazyk, ve kterém napsali, detekován lokálně podle rozsahu skriptu a znaková slova, bez externího volání. Pouze jazyky vybrané na stránce Jazyky jsou vždy používány, takže funkce je inertní, dokud jazyky jsou přidány. HTML Obal e-mailu není záměrně přeložen: je to markup, ne próza. Staff- čelí e-mail (oznámení, upozornění oddělení, analytiků, plánované zprávy, týdenní stravovací systém) vždy používá systémový jazyk.

PeopleOS HR

PeopleOS: řídící systém pro provoz pracovních sil

Spusťte životní cyklus zaměstnanců od requisition až po odstup s mobilním self-service, důkazně podložené pracovní toky, zabudované integrace a kontrolu nad citlivými rozhodnutími.

Interaktivní systémová mapa
Příkazové centrum pro životní cyklus PeopleOSTřírozměrná palubní deska PeopleOS, která spojuje nábor, zaměstnance, výplaty, učení a řízení AI.Příkazové centrum PeopleOSŽIVOTLIDÉ248OTEVŘENÉ ROLY12KONTROLNÍ HRY15 / 15LIFEYCLENávratnostPronájemRůstOdměnaPřechodJEDNOTNÝ ZÁZNAMTotožnost + doklady o zaměstnáníLIDSKÁ KONTROLAOdvolání, oprava, převzetíProved 'te to.Důkazy o výsledku a zveřejnění
PeopleOS udržuje životní cyklus, kontroly a důkaz na jednom regulovaném záznamu.

Administrátoři

Provoz

Správa lidí, organizace, nábor, nastupování, dokumenty, dovolená, sesouhlasení mezd, výhody, výkon, učení, vztahy zaměstnanců, analytika a správa.

Zaměstnanci a manažeři

Self- service

Použijte mobilní-první portál pro soukromé záznamy, žádosti, dokumenty, na palubě, čas, výplatní vysvětlení, učení, firemní informace a práva.

Vývojáři

Rozšířit

Použijte kurátor hr.* opatření a přezkum platform.hr.* operace prostřednictvím jedné smlouvy, plus zadané třídy konektorů. Vygenerovaný index v sekci PeopleOS API uvádí každý s jeho rozsahem.

⚠️
PeopleOS není mzdová kniha, právní poradce, background- check úřad nebo poskytovatel identity. Certifikované externí systémy si tyto povinnosti zachovají. Zelená technická kontrola nikdy nevytváří právní schválení nebo důkaz poskytovatele.

Získání PeopleOS HR

PeopleOS HR je součástí plánu Enterprise. Na každém jiném placeném plánu je add- on: majitel účtu otevře Účet → Add-ons & Tokens, vybere PeopleOS HR úroveň a buď zahájí bezplatný proces nebo ji přidává přímo. Úroveň se liší v tom, kolik lidí a kolik náborových, interview a AI aktivity přenášejí. Ceny a limity jsou stanoveny na účet, není zapsán do produktu, takže viz aktuální úrovně na Cenová stránka. Co modul dělá, povrch po povrchu, je na PeopleOS HR produktová stránka.

Kdo to může přidat?

Placený plán, který je aktivní. Volný plán nemůže přidat, a placený plán který je stále uvnitř svého vlastního plánu procesu musí počkat, až proces skončí.

Volná soudní síň

Zkušební běží na úrovni, kterou si vyberete. Když končí bez nákupu nárok je odstraněn a nic se účtuje. Nic se nevymaže: záznamy jsou tam znovu v okamžiku add- on je přidána.

Když není vlastněna

PeopleOS HR se v postranním panelu, v paletě příkazů, v Nastavení nebo v in- app nápovědě neobjevuje. Přímý odkaz na stránku HR nabízí add- on místo stránky.

Dosažení stropu

Když je dosaženo limitu úrovně, stránka nabízí další úroveň. Úprava nebo odstranění toho, co již existuje, není nikdy zablokována.

Self- hostované instalační materiály

Nárok se pohybuje v licenci. Přidejte add- on na vašem účtu OpsIQ a instalace jej vyzvedne při kontrole licence.

Nastavení prvního týdne

Všechno dole je skutečná obrazovka; nic zde nepotřebuje vývojáře.

1
Zapněte modul

Otevřít PeopleOS → HR Domů. Vlajka deska začíná s hlavním spínačem, PeopleOS HR: s tím vypnuto HR stránky nebo zaměstnanec povrch je dosažitelný. Zapnutí vypínače je dvouklikové potvrzení; Vypnutí jeden je jedno kliknutí. AI přepne pod něj (návrh pomoc, aplikace screening, autonomní asistenti, AI rozhovory, automatické odeslání nabídky, ověření identity) zůstat mimo, dokud se nerozhodnete.

2
Nechť nastavení Kopilot provede konfiguraci

Otevřít PeopleOS → Nastavení Copilota a říkat, co chcete v prostém jazyce: politika dovolené s jeho dny a upozornění, státní svátky pro zemi, kategorie případu s jeho SLA, výdajové limity, na palubě šablony, měsíční pulz. Získáte plán zpět s tím, co pochopil a co předpokládal. Nic běží, dokud si potvrdit, medium- rizikový krok potřebuje druhou osobu, každý běh nechává účtenku.

3
Název portálu zaměstnanců

Otevřít PeopleOS→Frontline→Sign- in design. Na self-hosted nainstalovat portál žije v /hr/<address>; Portálová adresa přejmenovává to okamžitě a staré indikátory stále fungují, protože stará adresa je dopředu. /hr na vašem pracovišti hostitele a nepotřebuje adresu.

4
Publikovat své kariéry stránky

Otevřít PeopleOS → Nábor pracovníků. Každé vysílání publikujete ze schválené žádosti se zobrazí na stránce veřejné kariéry; odkaz Otevřít stránku o veřejné kariéře Na vrcholu rekrutování ukazuje přesně to, co kandidáti vidí.

5
Zaregistrujte kiosek pro sdílená zařízení

Otevřít PeopleOS→Frontline→Kiosky a vybrat Zaregistrujte se v kiosku. Token zařízení je zobrazen jednou; otevřete stránku kiosku na tabletu nebo PC (to je /kiosk na portálu hostitele) a vložit jej. Lidé načtou s pracovní e-mailem a PIN, nebo s krátkozrakým kódem odznaku z jejich portálu. Obnovení kiosku zastaví zařízení najednou.

6
Rozhodněte se, co zaměstnanci mohou udělat pro sebe.

Otevřít Nastavení → HR. Každá autoservisní síla (záznamy, žádosti, dokumenty, dovolená, placená vysvětlení atd.) je nastavena na každého zaměstnance, pouze manažery, nebo jeden tým a týmy pod ním. Každá změna záznamů, kteří ji udělali a proč, a moc, kterou vypnete, je vysvětlena zaměstnanci spíše než tiše chybí.

7
Přidejte lidi a dejte jim přístup.

Zapnout PeopleOS → Lidé vytvořit osobu, jejich zaměstnání a jejich manažer. Poskytování přístupu na portál pouze tehdy, když osoba má platný e-mail a zamýšlený pracovní vztah; pozvání jde ze stejné obrazovky a nastupování začíná z cesty jste nastavit.

Životní cyklus

Plán a nábor

Vytvořit schválené požadavky, zveřejnit pracovní místa, přijímat žádosti prostřednictvím requery- bezpečné webové háky, struktura recenze, harmonogram rozhovory, rekordní rozhodnutí, nabídky vydání a pronájem.

Připojit se a poskytnout

Vybudovat evidenční-zálohované na nastupování cesty, sbírat správné verze dokumentu, požadovat vybavení, udělit schválený přístup šablony a ustanovení bezsedací portál přístup.

Práce a růst

Provozní dovolená, harmonogramy, výplatní vysvětlení, výhody, výdaje, cíle, zpětná vazba, recenze, učení, dovednosti, vnitřní příležitosti, dědičné a pracovní analytika.

Podpora a ochrana

Poskytovat soukromou podporu lidských zdrojů, řízenou situaci v zaměstnání, právní vazby, žádosti o údaje, opravy, vysvětlení, odvolání a nezávislý přezkum na lidech.

Změnit a odejít

Využití změn zaměstnanosti s účinným datem, zrušení přístupu, vybavení pro obnovu, sladění externích poskytovatelů, použití uchovávání a zachování požadovaných důkazů.

Přístup a totožnost

Kanonická osoba vlastní záznamy o zaměstnávání a ověřené externí identity facety. Email je mutabilní kontaktní data, nikdy trvalý klíč totožnosti. Portál čte jsou self-scanked; správce a administrátor názory vyžadují explicitní povolení. API kopíruje vrstvy na horní části oprávnění trasy a nikdy obejít.

Přidat nového pracovníka

Scénář:
Vytvořit osobu, přiřadit zaměstnání a správce, poskytování přístupu portálu, pak otevřít na palubě cesty.
Co dělat:

Použijte suchý běh a idempotence pro API píše. Potvrďte, že osoba má platný e-mail a zamýšlený pracovní vztah před odesláním přístupu.

Vyřešit duplikát identity

Scénář:
Dva vnější systémy identifikují stejného pracovníka jinak.
Co dělat:

Spojte obě ověřené stránky s kanonickou osobou a vyřešte konflikt explicitně. Neslučujte záznamy jen proto, že dvě mutabilní e-mailové hodnoty odpovídají.

PeopleOS HR

Pracovní postupy pro lidské zdroje a portál zaměstnanců

Jak je provozována každá hlavní oblast PeopleOS a to, co zaměstnanci vidí po znamení-in.

Osoby a organizace

Udržovat kanonickou osobu, zaměstnání, typ pracovníka, manažera, tým, umístění, dovednosti, dokumenty a efektivní-dated organizační struktury.

Nábor a nabídky

Přejděte od schválené žádosti k vyslání, podání žádosti, strukturované důkazy, pohovor, rozhodnutí, nabídky a pronájmu s ubytovacími a odvolacími cestami.

Nastupování na palubu a dokumenty

Přiřadit objednané vlastní-specifické kroky; shromažďovat, přezkoumávat, podepsat, vypršet, držet a smazat dokumenty s verzí a přístupových dokladů.

Čas, dovolená a plánování

Definovat politiky-podporované typy dovolené, rovnováhy, žádosti, schválení, svátky, dostupnost, kalendář události a usmíření.

Plat, dávky a výdaje

Vysvětlete výplatu, ručně schválené události na mzdy, sladit výjimky, řídit nárok na dávky a řídit náhrady.

Výkonnost a růst

Provozujte cíle, check-iny, zpětnou vazbu, recenze, kalibrace, učení, dovednosti, mentoring, vnitřní příležitosti a posloupnost.

Služby a vztahy v oblasti lidských zdrojů

Poskytněte zaměstnancům soukromou podporu při zachování stížnosti, disciplíny, informátora a zapečetěných důkazů v vyhrazených povoleních.

Analytika a plánování

Používat pracovní opatření, plány počtu zaměstnanců, referenční hodnoty a zkušenosti metriky odvozené z záznamů; nikdy se nepředpokládá, že chybějící výsledky jako úspěch.

Portálová mapa zaměstnance

Přehled

Potřebuje vaši pozornost, změny od poslední návštěvy, otevřené požadavky, nadcházející události, na nástupu pokrok a oznámení.

Profil a záznamy

Zaměstnanost, ověřené záznamy, dokumenty, povolení, žádosti o soukromí a požadavky na opravu.

Podpora a úkoly lidských zdrojů

Soukromé rozhovory, žádosti, akce, které potřebují zaměstnance a společnosti-vlastněné úkoly zobrazeny odděleně.

Vaše první dny

Evenced- zálohován na palubě časové osy s majitelem, řádným státem, dokončením a zablokované práce.

Čas a odchod

Zůstatky, žádosti o dovolenou, dostupnost, harmonogramy a důsledky kalendáře.

Dovednosti a růst

Učení, dovednosti důkazy, cíle, zpětná vazba, mentoring a vnitřní příležitosti.

Můj plat, vysvětlený

Vyrovnávací platby za jazyk a informace o odsouhlasení mzdy, které může zaměstnanec vidět.

Společnost

Adresář a organizační schéma omezené na informace, které si kolegové vybrali nebo politika jim umožňuje sdílet.

Práva a rozhodnutí

Vysvětlení, odvolání, souhlas, oprava, přístup a vymazání žádostí.

💡
Portál je mobilní - první. Karta účtu zůstává dosažitelná, navigace a obsah posun nezávisle na širokých obrazovkách, a mobilní navigační překryvy spíše než tlačení nebo pokrytí stránky. Dlouhá vysvětlitelná kopie patří do přístupných tooltip nebo odtajňovacích komponent.

Bezpečná provozní sekvence

1
Nastavit politiku a oprávnění

Před nahráním živých záznamů nastavte soudní příslušnost, role, schvalovací cesty, uchování, souhlas a funkce.

2
Připojení externích poskytovatelů

Nainstalujte příslušný podepsaný balíček, zadejte průkazné údaje a projdete testy spojení a shody.

3
Běžet v pískovišti nebo stínu

Proveďte plné pracovní toky s deterministickými daty a porovnejte očekávané důkazy před umožněním realizace real-provider.

4
Vypuštění pod dvojí kontrolou

Jiný autorizovaný recenzent zkoumá poskytovatele, bezpečnost, soukromí, právní, spravedlivý a přístupný důkaz.

PeopleOS HR

AI, justice, video a právní kontroly

PeopleOS zachází s automatizací jako s řízenou cestou nástroje: politické svolení, pokus o provedení, výsledek poskytovatele a důkaz jsou samostatná fakta.

Kontroly AI a agens

Každý agent používá registrované nástroje s cílem, jurisdikcí, třídy rizika a maximální autonomií. Lidské převzetí, jističe, incidenty a změny jurisdikce zastaví provedení. Opravy mohou tvořit navrhovaný datový soubor, ale nic netrénovat, dokud jiná oprávněná osoba dokončí přezkum soukromí.

Spravedlivost

Definujte kohorty, minimální pravidla výběru vzorků, metriku, identitu hodnotitele a právně vydané hodnocení. Chybějící data zůstávají chybějící, nikdy se nepřevádí na průchod.

Vysvětlení a odvolání

Vytvářejte vysvětlení z zapečetěného rozhodnutí a politických důkazů. Pošlete odvolání na nezávislé člověka a zachovat výsledné důkazy.

Soudní rozhodnutí

Politika uvolnění země balí pouze s názvem odpovědný právní vlastník, citované právní zdroje a průběžné testy. Vysoce-závažnost zákony změny pozastavit postižené pruhy.

Zákon EU o AI

Udržovat systémovou inventuru, třídu rizik, posouzení dopadů na základní práva, oznámení, dozorčí orgány, měření a důkazy.

Hranice pro video screening

Ustanovení není účast

hr.interview.room.provision vytváří místo setkání. Pouze hr.interview.room.connect může dokázat, že média se dostala k pracovníkovi.

Záměrný souhlas

Nahrávání, přepis a biometrická livita jsou samostatná volba. Odstoupení se vztahuje na zvolený účel.

Žádná analýza vzhledu

Video smlouva nemá pole nebo metodu pro emoce, pozornost, atraktivita, závod, postižení nebo vzhled inference.

Lidské a textové trasy

Recenzent může převzít trvalou kontrolu na relaci a zůstává k dispozici textová ubytovací cesta.

Zadržení a zrušení

Konektor hlásí šifrovanou dopravu, aktivní retenční politiku a odkazy na poskytovatele médií a musí podporovat ověřitelné vymazání.

Vytvořen pokoj, AI chybí

Scénář:
Existuje zoom místnost URL, ale mediální most nedodal zvuk / video do pohovoru pracovníka.
Co dělat:

Zobrazit setkání jako rezervní a AI účast jako false. Udržujte lidské interview a textové cesty ubytování k dispozici.

Callback říká, že šek prošel.

Scénář:
Podepsaný záznam o ukončení webhooku.
Co dělat:

Zaznamenejte zpětný hovor jako nápovědu, pak se zeptejte poskytovatele. Kontrolu může aktualizovat pouze ověřená odpověď na stav.

🚫
Technické hodnocení přístupnosti může zaznamenat její hodnotitel, ale osvědčení WCAG vyžaduje samostatnou osobu. Poskytovatel důkazů, právní uvolnění a spravedlnosti důkazy vyžadují také jejich skutečné jmenované vlastníky.
PeopleOS HR

PeopleOS API a vývoj konektorů

Pro provoz lidských zdrojů a smlouvy o typovém konektoru pro autoritativní externí systémy použijte všeobecné API.

Obecné API zdroje pravdy

Poslat JSON POST /api/v1.php. Objevte běžící plochu skrz meta.actions, OpenAPI na /api/v1/openapi.php, a Postman na /api/v1/postman.php. Vytvořený index níže nese přesný počet kurátorů hr.* opatření a přezkum platform.hr.* operace v této budově, takže nic na této stránce není zapsáno ručně.

Seznam lidí
curl -sS https://your-opsiq.example/api/v1.php \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"action":"hr.people.list","page":1,"per_page":50}'
Dry- spusťte zápis
curl -sS https://your-opsiq.example/api/v1.php \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"action":"hr.people.create","display_name":"Ada Reaudit","primary_email":"[email protected]","worker_type":"employee","idempotency_key":"hire-2026-0042","dry_run":true}'

Použití hr.read nebo hr.write pouze podle potřeby. Trasa správce cíle stále kontroluje své vlastní svolení. Spisy vyžadují stabilní idempotency klíč; high- risk píše vyžaduje potvrzení. Zopakujte přechodné poruchy se stejným klíčem a dotazu stav obnovy po nejistém timeout.

Každá kurátorka hr. * akce

48 curated hr.* actions (22 reads, 26 writes) and 484 reviewed platform.hr.* operations, out of 2420 named actions in this build. Generated from the action registry, the same source as meta.actions, OpenAPI and Postman.

Osoby, organizace a totožnost (9)

hr.employee.provision

Write. Scope: hr.write. Provision seatless employee access and send the invitation. Required: person_uuid.

hr.employee.restore

Write. Scope: hr.write. Lift an employee access suspension (written reason required) and provision again. Required: person_uuid, reason.

hr.identity.facets

Read. Scope: hr.read. List a person's identity facets and open conflicts. Required: person_uuid.

hr.identity.link

Write. Scope: hr.write. Link an identity facet to a person. Required: person_uuid, facet_type, facet_key.

hr.org.tree

Read. Scope: hr.read. Read the organisation tree.

hr.people.create

Write. Scope: hr.write. Create an HR person. Required: display_name.

hr.people.get

Read. Scope: hr.read. Get one HR person. Required: person_uuid.

hr.people.list

Read. Scope: hr.read. List HR people.

hr.people.update

Write. Scope: hr.write. Update an HR person. Required: person_uuid, display_name, primary_email.

Žádosti a odpisy (3)

hr.postings.list

Read. Scope: hr.read. List job postings.

hr.requisitions.create

Write. Scope: hr.write. Create a requisition. Required: title, openings, justification.

hr.requisitions.list

Read. Scope: hr.read. List requisitions.

Opustit, učení a konektor tržiště (3)

hr.learning.overview

Read. Scope: hr.read. Read courses, paths and enrolments.

hr.leave.overview

Read. Scope: hr.read. Read leave types and requests.

hr.marketplace.overview

Read. Scope: hr.read. Read HR connector accounts, conflicts and deliveries.

Certifikace a zdravotní péče spojovacích zařízení (2)

hr.connectors.certify

Write. Scope: hr.write. Certify an HR connector (scope sandbox|production; production demands provider-side proof under dual control). Required: connector_class, connector_key, scope, evidence, submitted_by.

hr.connectors.health

Read. Scope: hr.read. One connector account's health: certification level and scope, last reconciliation verdict, failures and webhook backlog. Required: account_uuid.

Rozhovor místnosti (7)

hr.booking.slots_reconcile

Write. Scope: hr.write. Release booking slots whose claim never became a booked meeting.

hr.interview.room.connect

Write. Scope: hr.write. Connect the AI to interview media; refuses unless media really reaches the worker. Required: media_uuid.

hr.interview.room.consent

Write. Scope: hr.write. Record or withdraw consent for ONE interview purpose (recording, biometric_liveness, transcription). Required: media_uuid, purpose, state.

hr.interview.room.pause

Write. Scope: hr.write. Pause a live interview. Required: media_uuid.

hr.interview.room.provision

Write. Scope: hr.write. Provision an interview room (a place to meet — NOT AI participation). Required: session_uuid, transport, accommodation_route.

hr.interview.room.state

Read. Scope: hr.read. Read an interview room, including whether the AI is actually participating. Required: media_uuid.

hr.interview.room.takeover

Write. Scope: hr.write. A human takes the interview; the AI cannot speak in it again. Required: media_uuid, reason.

Látky a celoživotní dráhy (7)

hr.agent.incident.close

Write. Scope: hr.write. Close an agent incident — the same act that lifts the suspension it caused. Required: incident_uuid, resolution.

hr.agent.step

Write. Scope: hr.write. Run one agent step: gate verdict, execution and outcome reported separately. Required: run_uuid, agent_key, tool_key, jurisdiction, purpose.

hr.agent.step.status

Read. Scope: hr.read. What actually happened at a step (permitted, executed, proven, failed, compensated). Required: run_uuid, seq.

hr.agent.takeover

Write. Scope: hr.write. A human takes an agent run; no further agent steps are accepted. Required: run_uuid.

hr.agent.tool.grant

Write. Scope: hr.write. Grant an agent a tool for one jurisdiction and purpose, up to a risk ceiling. Required: agent_key, tool_key, jurisdiction, max_risk, purpose.

hr.agent.tools

Read. Scope: hr.read. List the registered typed tools an agent may use, and open agent incidents.

hr.lifecycle.lanes

Read. Scope: hr.read. Every lifecycle lane with its mode, KPIs and whether a live tool path really exists behind it.

Příslušnost (5)

hr.jurisdiction.capabilities

Read. Scope: hr.read. What this product may do in one country, per feature, with the law behind each answer. Required: code.

hr.jurisdiction.change.raise

Write. Scope: hr.write. Report a change in the law; a high or critical one suspends every lane in that jurisdiction at once. Required: pack_key, summary, severity.

hr.jurisdiction.coverage

Read. Scope: hr.read. Computed coverage for every market: released pack, named counsel owner, cited sources, passing tests.

hr.jurisdiction.explain

Read. Scope: hr.read. Why an action about one person is allowed, reduced or blocked, with the rule and citation. Required: person_uuid, feature.

hr.jurisdiction.pack.release

Write. Scope: hr.write. Put a drafted policy pack into effect; refused without a named counsel owner and a cited law. Required: release_uuid.

Rozhodnutí a odvolání (2)

hr.decisions.appeals

Write. Scope: hr.write. File an appeal against an AI decision on a person's behalf; it must be heard by an independent human. Required: decision_uuid, subject_type, subject_id, grounds.

hr.decisions.explanation

Read. Scope: hr.read. Plain-language explanation of one AI decision: what was looked at, which policy, and how to appeal. Required: decision_uuid, audience.

Kvalita AI (2)

hr.ai.corrections

Write. Scope: hr.write. Bundle recent reviewer corrections into a dataset; it is pending privacy review and trains nothing.

hr.ai.quality.overview

Read. Scope: hr.read. The AI quality board: sampled defect rate, override pressure per workflow, coaching reception.

Rozhovory a retence pracovní síly (4)

hr.thread.delete

Write. Scope: hr.write. Delete a workforce conversation; refused while it is under legal hold. Required: thread_uuid, reason.

hr.thread.legal_hold

Write. Scope: hr.write. Place or lift a legal hold on a workforce conversation. Required: thread_uuid, on, reason.

hr.thread.retention

Write. Scope: hr.write. Set a conversation's retention class (standard|extended|permanent). Required: thread_uuid, retention_class.

hr.threads.retention_sweep

Write. Scope: hr.write. Run the conversation retention sweep; legal holds are never swept.

Častý a uvolněný (4)

hr.experience.metrics

Read. Scope: hr.read. Measured persona experience metrics (self-service rate, decision cycle, coaching usefulness, quality) from live journeys.

hr.global.readiness

Read. Scope: hr.read. The whole launch picture: 15-gate leadership score, release readiness checks and jurisdiction coverage.

hr.readiness.read

Read. Scope: hr.read. Run the HR release readiness report.

hr.release.verify

Write. Scope: hr.write. Run the four HR release gates (schema, manifest, probe, readiness).

Třída spojovacích zařízení

Nábor

hr_job_board, hr_background_check, hr_identity_verification, hr_assessment a hr_tax_right_to_work.

Nájem a nastupování

hr_esignature, hr_calendar, hr_video a hr_equipment_it.

Operace pracovní síly

hr_payroll, hr_benefits, hr_learning, hr_expense_payment, hr_directory a hr_data_warehouse.

Komunikace

hr_messaging je send- only. Smlouva neobsahuje žádnou metodu čtení zpráv.

Poskytovatel Gateway koncové body

PeopleOS HR Gateway 1.0
GET    /v1/hr/health
POST   /v1/hr/job-postings
PATCH  /v1/hr/job-postings/{provider_ref}
POST   /v1/hr/job-postings/{provider_ref}/close
GET    /v1/hr/job-postings/{provider_ref}
POST   /v1/hr/background-checks
GET    /v1/hr/background-checks/{provider_ref}
POST   /v1/hr/identity-verifications
GET    /v1/hr/identity-verifications/{provider_ref}
DELETE /v1/hr/identity-subjects/{subject_ref}
POST   /v1/hr/payroll/worker-events
GET    /v1/hr/payroll/state?cursor=...
GET    /v1/hr/payroll/exceptions
POST   /v1/hr/equipment/requests
POST   /v1/hr/access/requests
GET    /v1/hr/provisioning/requests/{request_ref}
POST   /v1/hr/provisioning/requests/{request_ref}/revoke

Brána vyžaduje HTTPS, bloky nebezpečné / soukromé cíle, kolíky validovány DNS výsledky, následuje žádné přesměrování, omezuje velikost odezvy, vyžaduje JSON, nese deterministickou idempotenci a podporuje timestaging HMAC v obou směrech. Webháky jsou vždy náznaky následované poskytovatele re- dotaz.

Příchozí dveře s webhákem

Tři veřejné dveře obdrží poskytovatele volání zpět: POST /opsiq/ajax_api.php?ajax=hr_connector_webhook (pole connector_class, connector_key, topic), ?ajax=hr_esign_webhook (connector_key, offer_uuid, provider_ref) a ?ajax=hr_check_webhook (check_uuid). Každý ověřuje tělo přes certifikovaný konektor, spálí dodávku tak REPLAY zemře, a zaznamenává pouze probíhající re- dotaz; vlastní odpověď poskytovatele změní záznam. Každé odmítnutí je stejná obecná odpověď na základě účelu. PeopleOS dnes nepřináší žádné odchozí webhook události: webhooks.events.list je orgán a jména žádný v hr rodina, tak si vyber hr.* Čte nebo používá hr.connectors.health.

Podrobné odkazy

Kompletní příručka PeopleOS

Čtěte doc/contracts/PEOPLEOS_HR.md v samoobsluze pro každého operátora, API, konektor, webhook a pravidlo uvolnění.

Smlouva o developerské síti Gateway

Balíček na prodej obsahuje: README.md, DEVELOPER.md, connector_contract.json, hr_profile.json a podepsaný seznam.

PeopleOS HR

Zkušební a výrobní připravenost

Výběrová žádost je vypočtena z důkazů. Záměrně oddělené jsou připravenost, certifikace poskytovatele, právní schválení, hodnocení spravedlnosti a potvrzení přístupnosti.

1
Potvrdit kód a smlouvy

Spustit PHP syntaxi, HR PHPUnit, route /API parity, OpenAPI/Postman kontroly, manifest balíčků a JSON Ověření schématu.

2
Cvičení plné pracovní postupy

Testovací nábor, přezkum AI, rozhovor / video, nastupování, podpisy, dovolená, výplaty, portál, oznámení, modály a cesty selhání konektoru.

3
Reagující a přístupné UI zkoušky

Pohon desktop, tablet a telefon rozložení; klávesnice, zaměření, štítky, kontrast, přepínání, tipy nástrojů, dialogy, oznámení posun a nezávislá navigace.

4
Sbírat externí důkazy

Používejte skutečné poskytovatele okružních výletů a vymazání, právní politické uvolnění, reprezentativní údaje o spravedlnosti a nezávislé lidské WCAG osvědčení.

5
Vypuštění pod dvojí kontrolou

Recenzent jiný než předkladatel schvaluje konektor a uvolní důkazy. Pokud vyprší jeho platnost, odvolejte nebo zabijte-přepněte konektor.

Co znamená každý výsledek

Podepsaný balíček

Soubory se od autorizovaného podpisu balíčku nezměnily. Nedokazuje to, že účet třetí strany funguje.

Sandbox prošel

Deterministické chování a státní přechody odpovídají. To neprokazuje skutečný poskytovatel, rezidentské období nebo výmaz.

Certifikovaný výrobní konektor

Specifický pracovní prostor účet prošel pět poskytovatelů-side povinnosti pod dvojí kontrolou.

Technická zpráva WCAG

Automatizované a hodnoticí-vedl důkazy existují pro pojmenované povrchy. Není to druhé osoby osvědčení.

Start připraven.

Všechny požadované brány jsou zároveň zelené a žádný důkaz není prošlý, zrušen, chybí nebo v rozporu s živým zdravím.

⚠️
Nikdy nevytvářejte průchozí právní, spravedlivý, poskytovatel nebo nezávislý-osvědčení záznam pouze pro vyčištění brány. Zaznamenejte blokátor a majitele místo. Pohled připravenosti je cenný právě proto, že odmítá nepodložené nároky.
Proč je konektor nainstalován, ale stále nedostupný?+

Instalace dokazuje přítomnost balíčků. Povolit, uložit skutečné least- privilegia pověření, projít test připojení, pak udělit odpovídající PeopleOS účet výrobní rozsah pomocí pravého poskytovatele důkazů a jiný recenzent.

Proč ten háček nezměnil záznam?+

Volání může být platné, ale jen náznak. Zkontrolujte webhook inbox, stav poskytovatele a výsledek sesouhlasení. PeopleOS změní autoritativní stav pouze po odkladu dotazu.

Kde je kompletní strojově čitelný HR API?+

Volat meta.acces a filtr pro hr. a platfort.hr.; nebo použít/api/v1/openapi.phpa/api/v1/postman.php.Jsou generovány ze stejného registru runtime.

Podpora

Centrum nápovědy

Vaše centrum nápovědy je self-sloužit pomoc stránky postavené z článků, které publikujete. Zákazníci mohou číst a hledat ji na vlastní veřejné stránce, a přímo uvnitř widget chatu, takže mohou najít odpovědi na své vlastní, než vůbec otevřít konverzaci. Vše v něm pochází z vaší znalostní základny, takže stejný obsah, který odůvodňuje vaše AI také pravomoci vaší veřejné pomoci.

Kde to vidí vaši zákazníci.

Vlastní veřejná stránka

Čisté, prohledatelné místo pomoci na /help.php. Zákazníci procházejí podle kategorie, vyhledávání a otevřít jakýkoliv článek. Můžete mu dát své vlastní jméno a styl.

Uvnitř widgetu chatu

Nápověda odkaz v widget chatu, takže zákazníci mohou prohledat vaše články, aniž by opustit chat. Pokud stále potřebují člověka, jsou jen jeden kohoutek od zahájení konverzace.

Zapni to.

1
Otevřít stránku centra nápovědy

Jdi Config, then Help Center ve vašem admin a zapněte Povolit veřejné centrum nápovědy.

2
Dej tomu jméno a pohled

Nastavte název Pomocného centra, který se zobrazí v záhlaví a záložce prohlížeče, a vyberte vizuální styl. Můžete vypnout horní navigaci pro čistou stránku bez menu.

3
Zveřejnit některé články

Nic se neukáže, dokud na to nepublikujete články.

Publikovat články do centra nápovědy

Články žijí ve vaší znalostní základně. Článek se objeví v centru nápovědy, jakmile je zveřejněna a označená veřejnost. Existuje několik způsobů, jak to udělat:

Vydat jeden článek

Otevřete článek, označte ho zveřejněné, a zapněte možnost ukázat jej v centru nápovědy.

Publikovat všechno najednou

Použijte Vydat vše tlačítko stiskněte celý publikovaný set do centra nápovědy jedním kliknutím, místo aby jste je dělali po jednom.

Přeměnit FAQ na články

Už máte FAQ? Vydat vše na pomoc aby je přeměnili v pomocné články, takže sedí vedle všeho ostatního.

Importovat existující znalostní základnu

Přesouvání z jiné asistenční služby? Importovat KB tlačítko na záložce Články přináší existující znalostní základnu pro vás. Máte tři způsoby, jak ji ukázat na váš obsah:

Vložit URL

Dejte mu adresu vašeho aktuálního centra nápovědy. Pokud rozpozná platformu (například Zendesk), čte přesný strom kategorie z této platformy. Jinak se plazí na místě a rebuduje strukturu ze stránek, importuje pouze skutečné články a přeskakuje přihlášení, ceny a kontaktní stránky.

Vyberte připojenou aplikaci

Pokud je platforma již připojena k tomuto pracovnímu prostoru a má znalostní základnu, objeví se v kapce pod Import z připojené aplikace. Vyberte a import, žádné URL nebo heslo potřebné. Aplikace je uvedena pouze po připojení a nastavení.

Nahrát CSV

Žádný živý web na místo k ukázání? Nahrát tabulku s title, categorya body Sloupce. Parent / Child v kategorii sloupec pro sestavení vnořených kategorií.

Ať se rozhodneš jakkoliv, dostaneš První náhled: články, které našel, seskupeny podle kategorií, každý se zaškrtávací políčko, takže můžete upustit vše, co nechcete. Nic není uloženo, dokud klepnete na Import. Poté můžete Zpět celý import jedním kliknutím nebo Přeložila channina a URL nebo připojit-app import později vytáhnout nové a změněné články.

💡
Vývojáři: jakýkoliv konektor může inzerovat své znalosti základny do tohoto dropdown deklarováním kb_capabilities blok v jeho settings.json (typ kb_source, s adapter a base_template). Viz část Connectors a odkaz na platform- connector.

Organizovat s AI

Čisté centrum nápovědy je snadné prohledávat a snadněji vyhledávat. Organizovat s AI tlačítko dělá uzávěrka pro vás. V jednom kliknutí čte vaše publikované články, seřazuje je do citlivých kategorií, a přidává tagy. To vytváří kategorii, když potřebuje jednu, znovu používá kategorii, která již vyhovuje, a přeskočí vše, co jste již organizovali, takže můžete spustit znovu kdykoliv přidáte nové články. Zapněte Nechť AI organizuje do podkategorií v nastavení centra nápovědy a může také soubory články pod vnořené Parent / Child kategorie, které jsou užitečné hned po dovozu znalostní základny, která měla podsekce.

💡
Kategorie dát zákazníkům způsob, jak procházet, a tagy ostře hledat na veřejné stránce a v widget. Můžete přejmenovat nebo přesunout věci později. AI vám dává silný výchozí bod, ne nastavení jste uvízli s.

Nápověda centrum uvnitř vašeho widget chatu

Můžete zobrazit centrum nápovědy přímo uvnitř widget chatu, takže lidé hledat odpovědi, než vám zprávu. Ve svém nastavení widgetu chatu vyberte, kde se objeví odkaz nápovědy:

V záhlaví

Malá ikona nápovědy v horní části widgetu.

Na dně.

Textový odkaz pod schránkou, například "Prohlížeč nápovědy". Slovní spojení můžete změnit.

Obě místa

Zobrazovat v záhlaví a na dně pro co největší viditelnost.

Nápověda odkaz má vlastní kontrolu barev pod nastavením widget Vzhled. Nechte ho na Žádné k porovnání barvy vašeho spouštěče, nebo vybrat Pevné barva nebo Gradient. Celá pomoc zkušenosti následuje widget téma, takže to vždy vypadá jako součást vaší značky.

Dejte si nápovědu na vlastní webovou adresu

Z krabice vaše centrum nápovědy již má čistou, sdílenou adresu vlastní (např. /help/your-help-center). Můžete jít o krok dál a sloužit pod svým vlastní doména, takže zákazníci a vyhledávače to vidí jako součást vaší značky, například yourdomain.com/help nebo help.yourdomain.com. Vše stále pracuje na vaší doméně: odkazy, obrázky, vyhledávání a článek hodnocení.

Pod vaší hlavní stránkou

V Nastavení, pak Pomocné centrum, otevřete Zapouzdřené karta a najít "Zobrazit centrum nápovědy na vlastní webové adrese". Vyberte si nastavení (Cloudflare, Nginx nebo Apache), zkopírujte ready- made blok, a vložte jej do svých stránek. Každá volba má Nastavit návod tlačítko vedle něj s přesnými kroky.

Na poddoméně

Preferuji help.yourdomain.com? Stejný panel má možnost subdomény. Na Cloudflare je subdoména nejspolehlivější cestou, a to vám dá čistou adresu s ničím po něm.

💡
Použití Cloudflare? To běží jen jeho Worker na adresu, která je proxied přes Cloudflare Vaše hlavní doména často ukazuje přímo na vaše webové stránky, takže pravidlo umístěné na hlavní doménu nemůže dělat nic. Spolehlivý způsob je proxied subdomain jako help.yourdomain.com. Setup průvodce vás provede přes jeden DNS záznam a trasu.
Dobré pro SEO. Jakmile je vaše centrum nápovědy na vlastní doménu, vyhledávače index své články pod vaší značkou. Každá stránka prohlašuje svou správnou adresu a sitemap seznamy, takže stejný článek není nikdy indexován dvakrát.
💡
Pomocí nápovědy in- widget odkaz taky? V prohlížeči "Otevřít v centru nápovědy" nastavení, Kam vede odkaz do Vaše vlastní doména centra pomoci a zadejte stejnou adresu. Pak se tyto odkazy na článek otevře i na vaší doméně, ne na OpsIQ adrese.

Podívej se, jak se daří celému centru.

Kromě single-článek hlasování, nápověda centrum má své vlastní analytika. Zapněte jej v nastavení Pomocného centra a tiše zaznamenává, jak lidé využívají vaši pomoc: nejvíce prohlížené články, co hledají, a vyhledávání, které se vrátily prázdné (ready- made to- write list), pracuje na návštěvník země a zařízení na vlastní pěst, takže to nepotřebuje widget chatu nainstalován pro hlášení. Každé číslo je zobrazeno pro oba místo, kde se objeví vaše pomoc, veřejná stránka a in- widget pomoc, stejně jako kombinovaná, takže můžete vidět, jak moc je každý z nich skutečně používán.

💡
Analytici zůstanou vypnuté, dokud je nezapnete, a můžete mít návštěvníka IP anonymizované adresy.

Vyberte si, co se objeví na každé části stránky

Každá část centra nápovědy (kategorie na domovské stránce, populární články, seznam článků na stránce kategorie a další) má své vlastní jednoduché pravidlo. Pro každého z nich můžete ukázat nebo skrýt, a ukázat všechny položky, a nastavené číslo, the posledníNebo jen ty, které funkce Když pravidlo uzamkne seznam, zákazníci stále dostanou odkaz na "Zobrazit všechny", takže nic není opravdu mimo dosah.

Můžete také rozhodnout, jak užitečné hlasy vypadají: skryté, přátelský poměr jako "12 z 14 našel to užitečné, "nebo obyčejné palce počítá. Minimum-hlasové nastavení zastaví brand- nový článek ukazující trapné"0z0".

Podívejte se, které výrobky pracují

Každý článek ukazuje Pomohlo to? apply. Každé ano nebo ne se počítá za článek, takže můžete vidět na první pohled, které články odpovídají na otázky dobře a které z nich potřebují přepsat. Opakované hlasy od stejného návštěvníka jsou ignorovány, takže počty zůstávají upřímné.

Text a etikety

Můžete změnit záhlaví a štítky na centru nápovědy, aby odpovídaly vašemu hlasu. Zanechte pole prázdné a to se vrátí do rozumného výchozího nastavení, takže budete upravovat pouze znění, které chcete změnit.

Centrum nápovědy sdílí jednu knihovnu s vaší AI. Každý článek, který zde zveřejníte, je stejný obsah, který používá AI k zodpovězení chatů a vstupenek, takže zlepšení jednoho zlepšuje druhý.

Společné otázky

Musím psát samostatný obsah pro centrum nápovědy?+

Ne. Je postaven ze stejných znalostí, které AI již používá. Publikujte jeden článek a může sloužit oběma.

Můžu si nechat nějaké články?+

Ano. V centru nápovědy se objevují pouze články, které zveřejníte a označíte veřejnost. Cokoliv nezveřejněného z toho zůstane.

Budou zákazníci stále schopni se s někým spojit?+

Ano, odkaz na widget je jen odposlouchávání od zahájení konverzace, takže self-service nikdy nikoho nechytí.

Růst a SEO

Zpravodajská služba (SEO suite)

Stránka Inteligence je OpsIQ je budova-v SEO a search- viditelnost suite. To plazí vaše stránky jako vyhledávač, stopy, kde si řadit, zkoumá klíčová slova, sleduje zpětné odkazy a konkurenty, skenuje místní přítomnost mapy, kontroluje stránku rychlost, a změní to vše na uživatelsky-připravené zprávy, s analytikem AI, který vysvětluje, co opravit a může navrhnout opravy. Je to prémiový rys, když se to umožňuje objeví jako Sidebar. Každá doména data zůstávají oddělená, plazí, rankings a zprávy nikdy míchat mezi doménami.

Zpravodajská služba na místě
Palubní deska zpravodajské služby na místěAn SEO Přístrojová deska ukazuje site- zdravotní skóre, klíčové slovo pořadí sledování a dopravní trend.Zpravodajská služba na místěyoursite.com86ZDRAVÍ NA STŘEDNÍ POSTIHYKritické otázky3Sledování klíčových slovai helpdesk#3Live chat zdarma#7crm pro agentury#12Organické kliknutí1CRAWLNajde technické problémy2TRACKŘady, klíčová slova, zpětná odkazy3AI ANALYST - ŘešeníVysvětluje a vysvětluje opravy návrhů
Přehled zpravodajských služeb: hodnocení situace - zdraví z posledního plazení, sledování klíčových slov, trend organických kliknutí a tříkroková smyčka: plazit, sledovat, nechat AI navrhnout opravy.

Získání zpravodajské služby na webových stránkách

Zpravodajská služba je součástí plánů, které ji nesou. Na plánu, který není, to funguje přesně jako PeopleOS HR: majitel účtu otevře Účet → Add-ons & Tokens, vybere úroveň Site Intelligence a začne bezplatný proces nebo jej přímo přidává. Volný plán, nebo placený plán stále uvnitř svého vlastního plánu procesu, nemůže přidat. Dokud není ve vlastnictví apartmá je skryta před postranním panelu a přímý odkaz nabízí add- on; když se dosáhne horní hranice úrovně stránky nabízí další úroveň; Když soud skončí bez nákupu nárok je odstraněn a nic není účtováno. Tiers a ceny žijí na účtu, takže viz aktuální úrovně na stránce Cenová stránka.

Proběhnout plazení · začít tady

Plazení je OpsIQ navštíví vaše stránky způsobem, jakým by vyhledávač, najít technické problémy: rozbité odkazy, chybějící tituly, tenký obsah, pomalé stránky, indexování problémů.

1
Začněte se plazit.

Na Přehledu, klikněte na začít plazit. OpsIQ fronty a pracuje přes vaše stránky v pozadí; ukazatel stavu ukazuje pokrok.

2
Přečtěte si zprávy.

Když to skončí, otevřete problémy a seznam stránek. Každý problém je seskupen podle závažnosti, takže se vypořádat s největší výhry první.

3
Nech AI pomoct.

Analytik AI vytvoří stručný popis toho, co je špatně a proč na tom záleží, a může vytvořit navržené opravy, které budete přezkoumávat před aplikací.

Co je to za stopy?

Procházení a stav webu

Projděte si stránky pro technické SEO problémy a seznam každé stránky s jeho problémy. Respustit kdykoliv, nebo naplánovat.

Sledování podle hodnotících bodů

Přidat klíčová slova, na kterých vám záleží; OpsIQ kontroluje, kde vaše stránky řadí a sleduje pohyb v čase.

Výzkumy klíčových slov

Objevte nové klíčové myšlenky k cíli, s AI klíčový slovo trenér pomoci prioritizovat.

Zpětné odkazy

Podívejte se, kdo s vámi spojuje, obnovte seznam a oddělte odkazy, které nechcete mít ve spojení s vašimi stránkami.

Soutěžící

Přidejte konkurenční domény a porovnejte svou viditelnost s jejich, s analýzou AI konkurentů.

Místní (mapový) systém

Prohledávat místní zobrazení přes geografickou síť, abyste viděli, kde se objevíte na mapě, plus nástroje Google Business Profile.

Rychlost stránky

Spustit page- rychlost kontroly, takže můžete opravit pomalé stránky, které bolí žebříčku a konverzí.

Obsah AI

Vytvořte obsah a návrhy zaměřené na klíčová slova, na která se zaměřujete.

Zprávy

Vybudovat potiskovatelné, uživatelsky připravené zprávy o všem nahoře.

Připojte Google pro přesné údaje

Dva konektory Google mění odhady na reálná čísla:

Google Search Console

Hledat

Vytáhněte přesné dotazy, kliknutí a dojmy Google zprávy pro vaše stránky, mapujte svůj majetek a možnosti hodnocení povrchu přímo z vlastních dat Google.

Google Analytics 4

Doprava

Sdělte dopravní a spojovací údaje spolu s vašimi údaji SEO, takže zprávy ukazují viditelnost a chování společně.

Plánované občerstvení a zprávy o bílé etiketě

Nemusíte všechno běžet ručně. Plánované občerstvení rerun crawls, řadové kontroly, klíčová slova kontroly, back link občerstvení, local- mřížka skenování a hlásit generaci na kadenci (denní nebo týdenní v závislosti na plánu a objemu). Tyto běží přes OpsIQ cron, viz Cron a automatizace sekce. Generované zprávy export jako tisknutelné, uživatelsky-připravené dokumenty: agentury poslat každému klientovi pravidelnou SEO aktualizaci, a protože každé domény data jsou odděleny, každý klient vždy vidí jen své vlastní.

Některé funkce Site Intelligence volají externím poskytovatelům dat a AI prostřednictvím OpsIQ je nakonfigurovaný poskytovatel. Pracují mimo box, když je apartmán povolen pro váš plán. Pokud obnova není spuštěna, potvrďte OpsIQ cron běží (viz Cron a automatizace).
Mám na své stránky přidat něco pro sledování SEO?+

Crawls, sledování pořadí, klíčová slova výzkum a zpětné odkazy pracovat bez doteku vašich stránek. Pro provoz a přesné vyhledávání dat, připojit Google Search Console a GA4.

Mohu sledovat více než jednu doménu?+

Ano. Přidejte každou doménu zvlášť; jejich plazy, žebříčky a zprávy zůstávají zcela izolovány od sebe navzájem.

Jak často se mám plazit?+

Týdenní je dost pro většinu stránek; plazit na vyžádání po velkém obsahu nebo změna struktury. Nastavte plán, takže nikdy nezapomenete.

Růst a SEO

Automatické provádění (agent SEO)

Auto- Implementace je součástí webové zpravodajské služby, která skutečně používá opravy crawl a analytik AI doporučit, místo toho, aby vám pouze radit. Agent pracuje výhradně z toho, co Stránka Inteligence již našel (to nemůže nikdy vymyslet změnu) a prochází každý opravu přes stejnou bezpečnou smyčku: suchý-spustit náhled, vaše per- krok schválení, živý zápis, automatické snímek, a re- crawing, který dokazuje, že otevření vydání se snížil. Je to Managed- AI- pouze funkce; zdá se jako automatická implementace (raketa) akce uvnitř stránky zpravodajství sekce, a to je vypnuto, dokud jste ho zapnuli.

Automatické provádění
Automaticky implementovat SEO agentPrůtok ukazující doporučené SEO opravy pohybující se přes náhled, schválení a živý zápis, s provene- to-přelézt.Automatické prováděníyoursite.comDoporučené opravyAdd missing <title>schválenoOpravit robots. txtschválenoOdeslat sitemap.xmlpřezkumPREVIEW DRY- RUN (DIFF)+ <title>AI Helpdesk - OpsIQ</title>+ <meta name=description ...>- <title>Home</title>SchváleníPřeskočitPROVE IT - RE- CRAWLOtevřené otázky 124Uložení snímku1PŘEDCHOZÍ PŘEHLEDDry-run rozdíl každé opravy2VSTUP & VÍTĚZNÝSSH nebo hostitelem API3Zkušební & RollbackZnovu se plazit + snímek
Jak probíhá relace: agent uvádí opravy, které už doporučuje zpravodajská služba, ukazuje rozdíl mezi jednotlivými, aplikuje ty, které schvalujete SSH nebo hostitel API, snímky před každým napsáním, a re- crawls dokázat otevření-vydání počet klesl.

Co to může změnit

Agent vždy jen používá opravy, které Site Intelligence (nebo analytik AI) již doporučil pro tuto doménu. Na všech podporovaných platformách, které pokrývá:

Konfig serveru

sitemap.xml, robots. txt, a přesměrovat, kanonické a hlavičkové pravidla v . htaccess (Apache / LiteSpeed) nebo nginx config.

Přesměrové řetězy

Shromaždí multi- hop přesměrování řetěz dolů na jeden hop přímo do finálního URL, uvnitř stejné řízené . htaccess blok, takže rychlost a odkaz hodnota zastavit prosakování přes extra chmel.

Page <head>

Chybějící nebo slabé tituly stránky, meta popisy, kanonické značky a strukturované data (schema) bloky.

WordPress SEO

Yoast, Rank Matematika a SEOpress tituly & meta, a obraz alt text, aplikované přes WP- CLI na SSH cesta nebo zbytek API Na hostované cestě.

Strukturované údaje WordPress

Přidány JSON-LD (schéma) na stránky, které chybí. SSH cesta malý řízený pomocník (must-use plugin) tiskne markup tak, že funguje s nebo bez SEO pluginu; na hostované cestě váš SEO modul nese.

Vnitřní vazby

Přidá jeden relevantní vnitřní odkaz uvnitř stávajícího obsahu WordPress k záchraně osiřelých stránek a připojení souvisejících příspěvků. Jeden odkaz na stránku, nikdy uvnitř položky, existující odkaz nebo shortcode, a vždy schválen vy první.

Tenký obsah stránky přepíše

Kreslí plný náhradní obsah pro tenké stránky (zapnutý možností plazení, viz níže). Každý návrh je přezkoumán a schválen vámi před tím, než cokoli zveřejní, a starý obsah je zachován, aby mohl být obnoven.

Vyrovnávací paměť stránky (WordPress)

Zapne W3 Celkem Cache stránky caching, když se plazení najde problémy s rychlostí a že plugin je nainstalován, takže stránky slouží rychleji.

Shopify SEO

Produkt a kolekce SEO tituly & popisy, stránky a blog-článek SEO, plus 301 přesměrovává, prostřednictvím Shopify Admin API.

Webflow SEO

Per- strana SEO titulek a meta popis prostřednictvím Webflow Údaje API v2.

Automaticky připravit opravy (dvě možnosti plazení)

Stránka Intelligence Configure panel pro doménu (jeho nastavení plazení) má dvě možnosti, které rozhodnou, kolik agent řadí pro vás dopředu. Oba jsou vypnuty ve výchozím stavu a oba používají AI úvěr, takže je zapnete pouze tehdy, když chcete, aby tato práce pro vás udělal.

Automatické úpravy AI po každém plazení

Každý plazení také píše konkrétní obsah opravy (názvy, meta popisy, alt text, schémata, přesměrování) pro to, co našel, takže opravy jsou připraveny přezkoumat a použít okamžik, kdy plazení končí místo toho, aby byly generovány později na vyžádání. Používá AI úvěr na každé plazení.

Obsah AI přepisuje (tenké stránky)

Agent může navrhnout plný náhradní obsah pro tenké stránky. Nic není nikdy zveřejněno na vlastní pěst: každý návrh se objeví jako změna, kterou si prohlédnout vedle sebe a schválit nebo odmítnout, předchozí obsah je ponechán tak, že je vratný, a to je omezeno na několik stránek za průchod. Používá AI úvěr za návrh.

💡
Obě možnosti se připravují a navrhují práci. Každá změna stále prochází stejným schválením pro jednotlivé kroky, obratem a zpětným rázem jako každá jiná oprava, takže jejich zapnutí nikdy nic nezpůsobí.

Dva způsoby, jak se to spojuje

SSH / SFTP cesta

Self- řízeno

Pro stránky na vašem vlastním serveru, agent se připojí přes SSH/SFTP pomocí pověřovacích listin ukládat, upravovat konfiguraci serveru a soubory stránky přímo, a běží WP-CLI pro WordPress. Nejlepší, když máte shell přístup a chcete plnou kontrolu souborů.

Hosted...API cesta (ne SSH)

Bez skořápky

Pro nástupiště, které neumožňují SSH, agent pracuje zcela prostřednictvím úředníka API konektor, WordPress (Rest + aplikační hesla), Webflow (Údaje API v2) a Shopify (Admin API). Nic není nainstalováno na hostitele.

💡
Wix a Squarespace nemají veřejné SEO- psát API, takže na těchto platformách Auto- Implementace běží v poradním režimu: ukazuje vám přesnou změnu, aby (přesný název, meta nebo nastavení) pro vás použít ručně. Vše ostatní je read- pouze a bezpečné.

Zapněte konektory

Agent dosáhne každé platformy přes konektor:

Zabudované

Shopify a WordPress spojovací loď s OpsIQ, Stačí jim povolit pod konektory a přidat data obchodu / webu.

Z tržiště

Webflow, Wix a Squarespace instalovat z Connectors → Marketplace, pak připojit stejným způsobem.

Jak běží sezení

1
Vyberte opravy

Otevře Automatické implementace (raketa) z oddělení Site Intelligence. Seznam problémů, které Stránka Intelinary již zjistila, že to může opravit na této doméně.

2
Náhled na každou změnu

Pro každou opravu agent zobrazí suchý-spustit rozdíl (přesně to, co bude psát), než se cokoliv dotkne živé stránky.

3
Schválit krok za krokem

Schvalujete (nebo přeskočíte) každou změnu individuálně. Nic se nepoužije bez vašeho výslovného go- dopředu na tomto kroku.

4
Píše se to, pak snímky.

Po schválení agent dělá živé změny nad SSH nebo hostitel API a uloží snímek první, takže všechny změny lze vrátit zpět.

5
Dokaž to, žij.

Jak se uplatňuje každá změna agent okamžitě re- kontroluje, že přesné stránky a ukazuje per- krok "fixní live" verdikt, takže budete sledovat každý opravit zemi na živé stránce, jak to děje. Na konci to znovu-prolézá celou stránku a potvrzuje otevřené vydání počet klesl.

Bezpečnost a fakturace

Pouze SEO

Agent může dělat pouze to, co Site Intelligence doporučuje pro tuto doménu. Nemůže provést libovolné změny na vašem webu nebo serveru.

Schválení typu s předstupním

Každý zápis je považován za rozdíl a aplikuje se až poté, co schválíte tento konkrétní krok.

Snímek & zpět

Před každým zapsáním je uložen snímek, takže všechny změny mohou být vráceny.

Živé odolné proti podjetí zezadu

Každá změněná stránka je znovu zkontrolována v okamžiku, kdy je zapsána a dostane "fixní živý" verdikt, takže se oprava potvrdí proti živé stránce hned, nejen v závěrečném re- crawl.

Obsah není nikdy autopublikován

Vnitřní odkazy a ten- page obsah přepisuje jsou higher- impact, takže jsou vždy zobrazeny ke schválení a nikdy se neaplikují automaticky, bez ohledu na režim, který spuštíte.

Pouze Managed- AI

Automatické provádění běží na Managed AI; je blokováno, když pracovní prostor používá své vlastní (BYOK) klíče.

Účtování

AI tokens účet normálně, jak je používáte, plus jeden plochý poplatek za per- use za Auto- Implementation relace, oba čerpané ze stejného Managed-AI úvěru.

Auto- Implementace je vypnuta ve výchozím nastavení. Povolit na konfigurační stránce AI (Auto- Resulment card) a ujistěte se, že je nejprve připojen konektor pro vaši platformu.
Změnilo to něco, aniž by se zeptali?+

Ne. Každá změna je považována za suchý rozdíl a aplikuje se až poté, co schválíte tento přesný krok. Snímek je uložen před každým napsáním, takže můžete vrátit zpět.

Potřebuji přístup k SSH?+

Nezapnuto WordPress, Shopify nebo Webflow Ti pracují přes své oficiální APIs Bez přístupu do ulity. SSH je pouze jedna ze dvou cest, používaných, když chcete, aby agent editoval konfiguraci serveru a soubory přímo na vašem vlastním serveru.

Jak mám vědět, že to fungovalo?+

Po použití schválených oprav se látka přeplazí na místo a zobrazí počet otevřených vydání před a po, takže si můžete potvrdit opravy snížil problémy.

Bude přepisovat nebo publikovat obsah stránky sám?+

Ne. Obsah AI přepisuje jsou vypnuty, dokud je zapnete v možnosti plazení, jsou omezeny na několik tenkých stránek na průchod, a každý návrh je vám ukázán pro side-by-side schválení před tím, než něco zveřejní. Předchozí obsah je zachován, takže přepis může být vždy vrácen.

Můžu to použít s vlastními AI klíči?+

Ne. Auto- Implementace je Managed-AI pouze a je blokován pod BYOK. To účty AI tokeny normálně plus jeden plochý poplatek za používání za sezení, ze stejného Managed- AI úvěru.

Růst a zapojení

Studio průzkumu

Survey Studio je pracovní prostor pro vytváření editable průzkumy, které mohou být dodány jako bohatý samostatný stránku, widget webové stránky nebo inline vkládané. Současný produkt také poskytuje hostované odkazy, podepsané návrhy předpokladů, soukromé pozvánky, QR sdílení, vyhledávání odpovědí a geodet-okoupené analytiky. Widget webových stránek je jedna volba dodání, není definice průzkumu.

⚠️
Hranice Current- versus- cílový kód: prémiový výtvor a náhled, Connector Builder survey schopnost, a Survey- vlastněné registr poskytovatelů / zdravotní hranice jsou k dispozici nyní. Průzkum Studio stále potřebuje nezávislé víceúčelové architektury, signedtoken Průzkumné identity Gateway, cílení / variabilní zapojení, CRM Outenach odeslat tok a zadaný surveys.* API.

Vytvořit průzkum

1
Vyberte si, jak to lidé budou brát

Současný průvodce nabízí Standalone stránky & link, Widget Webové stránky a Inline vložil. Schválený cílový tok začíná s typem průzkumu a později přidá CRM e-mail, private- link a QR nasazení jako první třídy volby.

2
Vyberte si účel

Vyberte NPS, CSAT, CES, zpětná vazba produktů, post- nákup, zrušení, na palubě, webové stránky, akce, webinar, podpora, vedení / demo, zkušební, posudek, výzkum, zaměstnanec, příjem nebo obecná zpětná vazbu.

3
Použít kompletní šablonu nebo Start blank

Současný katalog je připraven editovatelný startér seskupený podle účelu. Volba šablony vytvoří zkopírovaný návrh: změna vašeho průzkumu nezmění spouštěč ani jiný průzkum.

4
Přizpůsobení nebo Rychlá revize

Přizpůsobení otevře všechny otázky, design, chování a kontrola dodávek. Rychlá recenze otevře stejný návrh na konečné zákazník- pohled check. Nic zveřejňuje nebo posílá automaticky.

Volba dodávky a současné chování

Samostatná stránka a odkaz

Reagující značková stránka s vlastním URL. Použijte soukromé pozvánky a vypršení platnosti, když každý příjemce potřebuje kontrolovaný odkaz. QR sdílení bodů na tomto hosting zkušenosti.

Widget stránek

Migrující odkaz kanál. Může využít stránku, geografie, zařízení, návštěvník, datum, odběr vzorků, chlazení, návštěvy a kvóty pravidla. Je stále podporován dědictví activewidget most, zatímco nasazení architektura je postavena.

Inline insted

Reagující průzkum umístěný uvnitř stránky, portálu, produktu nebo pomocného centra. Nevyžaduje Promotion Studio.

E-mail

Dnes Studio může generovat pozvánku HTML a soukromé odkazy. End- to- end odesílání z CRM kontaktů / segmentů, se souhlasem, potlačení, plánování, retry a odezva korelace, je schválený CRM Outenge integration cíl.

Podnikatelský design a náhled

Stránky s průzkumem mají témata a rodiny v uspořádání stránek, responsible controls, vítání a dokončení kopie a podepsaný návrh náhledu. Náhled designérů je plný-šířka pod editorem, ne úzká boční kolejnice. Používá skutečný hostovaný runtime v pískovišti rámu a podporuje plochu, tablet a telefonu šířky; náhled provoz nepíše odpovědi nebo analytiky.

💡
Studio Survey je nezávislé na Promotion Studiu. Runtime cílení, identity, aktiva, renderování a analytika musí být v vlastnictví Survey-. Propagace obsah může být znovu použit pouze prostřednictvím explicitní jednotime kopie / import, který vytváří oddělená data průzkumu; později Propagační edity nesmí mít žádný účinek.

Kompletní produkt

Nezávislé nasazení

Živé

Jeden průzkum může mít samostatnou stránku s verzí, widget, vložil, CRM e-mail, private-link a QR nasazení, každý s vlastním stavu, design, publikum a analytika. Každý průzkum může být zastaven, zakázán nebo smazán.

Informace o CRM a kampaně

Živé

Vytvořte ověřené publikum z CRM segmentů a Survey- schopné konektory, zmrazit ji do neměnné verze, vydání jednoho podepsaného pozvání každý, a poslat přes přišpendlený externí e-mailový konektor s per- pozvánkový doručovací důkaz.

Polní souprava a validace

Živé

Posuvníky, volba obrazu, nahrávání souborů, podpis, adresa, telefon, záhlaví a bohatý text, s minimální / maximální délkou, e-mail /URL/ number presets, custom error text and per- question prefill URL parametry.

Logika, vzorce, výsledky

Živé

A / OR skupiny stavu, pravidla pobočky, bezpečný formulační motor nad odpověďmi, a skóre kapely, které nesou své vlastní výsledné stránky: bodované kvíz přistane na jeho verdikt.

Jazyk, kiosek, předplněný

Živé

Jazyk návštěvníka vynechává výpis pouze jazyky s reálnými překlady, kiosek režim pro sdílené tablety (větší cíle, autoreset, žádné přesměrování), předvyplněný odkaz stavitel, a editovatelný secure- odznak a footer text.

Verze A / B testování

Živé

Vydejte verzi vyzyvatele na libovolné nasazení s dopravním split. Návštěvníkům je přiřazeno stickly, odpovědi jsou označeny skutečně doručenou verzí a srovnávací tabulka ukazuje odpovědi, dokončení a střední skóre za verzi. Podporujte vítěze jedním kliknutím.

Týdenní stravovací

Živé

Týdenní e-mail s posledními dny 7 průzkumu KPI, nejrušnější průzkumy, zpětný impuls a nejnovější AI briefing, odeslaný přes přišpendlený odchozí konektor. Nastavit ji v Delivery Centre, Automation.

Správa

Živé

Per- anuit access lists limituje, kdo může upravovat, publikovat nebo smazat průzkum. Zveřejnění schválení (čtyřoké) vyžaduje druhý admin k uvolnění přesného návrhu; úprava resetuje schválení. Návrh sdílených odkazů umožní recenzentovi vidět skutečný návrh bez přihlášení.

Vývojářská platforma

Živé

Smlouva o konektoru 2.2, Psaní průzkumy. * a zpětná vazba. * akce na api/ v1, kanonický průzkum. * události, trvalé podepsané webháky se Slack a Google Prostěradla relé formáty, a jednoodezva PDF vývoz.

Růst a zapojení

Analýza a zpětné získávání různých produktů

Průzkum Analytics vysvětluje, jak se průzkum sám o sobě dotýká lidí a výkon. Zpětná vazba vysvětluje, co zákazníci řekli ve všech povolených zdrojích a co by s tím měl dělat podnik. Oba výrobky se navzájem spojují, ale nesdílejí ani nepřepisují analytickou pravdu.

Analýza průzkumu

Vstoupil z individuálního průzkumu v Survey Studio, ne z globální boční navigace. Měří způsobilost, expozici, spouštěcí chování, začíná, dokončení, opuštění, otázky a tření větví, načasování, nasazení / výsledky kampaně / verze a runtime spolehlivost.

Zpětný pohled & Inbox

Jeden permission- aware chronologický zdroj pro vyplněné odpovědi na průzkum, odkaz widget zpětnou vazbu, chat a jízdenka CSAT, odpověď na tip zpětnou vazbu (odpověď na dotazník), hodnocení odpovědí zákazníka AI-, znalosti - základna užitečné hlasy a schválené externí / vlastní zdroje.

Analytika zpětné vazby

Analyzuje význam zákazníka: původní metriky trendů, témata/motivy, nálady, emoce, záměry, naléhavost, požadavky, stížnosti, chválu, segmenty cesty/produktu/služby/týmu, detraktory a výsledky uzavřené smyčky.

Vlastnictví údajů

Odpovědi na průzkum zůstávají v úložišti. Zpětná vazba ukládá obnovitelný zdrojový odkaz a odvozené signály, pak načte povolené důkazy na vyžádání. Jedna vyplněná odpověď na zjišťování se stává maximálně jednou položkou zpětné vazby.

⚠️
Aktuální stránka Zpětná vazba má stále prohlížeč odpovědi na průzkum a samostatné odkaz widget inbox, a její AI součty ještě nepoužívají plně normalizovaný zdrojový model. Jednotný Přehled / Inbox / Analytics / Sources & Health design je implementační cíl.

NPS, CSAT, CES, hvězdy, palce a pomocnost musí vždy zachovat svou původní metodu, měřítko, vzorek, okno data a jmenovatel. Nikdy nesmí být kombinovány do jednoho nevysvětlitelného průměru.

Růst a SEO

Promo Studio

Promotion Studio změní vaše webové stránky na konverzní motor. Design pop-ups, bannery, slide-iny, horní / spodní mřížky, full- screen převzetí, inline bloky a dokonce country-based přesměrování, pak zobrazí správnou zprávu pro správného návštěvníka ve správný okamžik. Vše je dodáno prostřednictvím OpsIQ widget již na vašich stránkách, takže není nic extra instalovat. Navrhujete a šetříte kampaně kdykoliv; ukazují pouze jednou jste publikovat je a studio je zapnuto pro váš pracovní prostor.

Promo Studio
Promotion Studio designérVizuální kampaň designér s bloky paleta, pop-up na plátno, a cílový panel.Promo Studio - návrhářBLOKxVítejte, {first_name}!Vyřaďte 15% z prvního objednávky.SAVE15Vyžádejte si můj kupón.CÍLZeměUS, New YorkSpouštěčVýstupní úmyslA / B rozdělení50 / 50Publikovat1DESIGNPřetáhněte bloky na plátno2CÍLZemě, stránka, publikum3OPATŘENÍA / B vítěz + AI pohled
Vizuální designér: blokuje paletu vlevo, vaše kampaň na plátně (zde osobní kupón pop-up pomocí {first_name} token), a cílení + publikovat panel vpravo.

Velký obraz

Kampaň

Co?

Jedna propagace: pop-up, banner, bar, slide- in, fullscreen, inline block nebo geo- redict. Každý má cíl: prodej, vedení, sign- up, chat, průzkum, oznámení.

Design & verze

Jak

Každý uložení vytvoří novou verzi, takže se můžete vrátit.

Cílení

Kdo

Kdo to vidí: země, strana, zařízení, dopravní zdroj, vrací vs nové, rozvrh, a (s konektorem) vaše logged- v zákaznících.

Spouštěče

Kdy

Když se objeví: okamžitě, na zpoždění, na svitek, na exit- intent, když nečinně, na kliknutí, po N stránkách, nebo z chatu / tiket činnosti.

Analytika

Výsledky

Živé dojmy, kliknutí skrz, konverze, výpadkové trychtýře, země / strana / zařízení rozděluje, A / B vítězové a AI vhled.

Spusťte první povýšení v 5 krocích

1
Začátek ze šablony nebo prázdné

Otevřené Promotion Studio a klepněte na tlačítko Nová kampaň, nebo vyberte ready- made design z galerie Templats. Návrh se otevře v designéru.

2
Navrhnout

Přetáhněte do bloků, okruhů, textů, tlačítek, obrázků, odznaků, statistik, odpočítávání, formulářů, kupónů, videí, ratingů, spin- wheels. Stylové barvy, sklony a 3D efekty s posuvníky. Náhled Desktop / Tablet / Mobile, a použijte Volný tah umístit cokoliv kdekoliv.

3
Zosobnit

Typ žetonů jako {first_name}, {country} nebo {company} do jakéhokoliv textu. V show- time se stanou skutečné hodnoty návštěvníka.

4
Cílový & spouštěč

Vyberte si, kdo ji uvidí (země, strana, zařízení, publikum) a když vystřelí (zpoždění, posun, exit- intent).

5
Kontrola, pak publikovat

Klikněte na tlačítko Check pro rychlý předstartovní sken, pak publikovat. To jde živě během několika sekund a začne sbírat analytiky.

Bloky, které můžete postavit

Obsah

hlavní

Záhlaví, odstavec, seznam, citace, obrázek, ikona, odznak, stat, dělič a mezerník, stavební kameny jakékoli zprávy.

Výzva k akci

hlavní

Tlačítka s reálnými akcemi: otevřete odkaz, spusťte chat, vytvořte si lístek, zkopírujte kupón nebo skočte na stránku.

Naléhavé zachycení

Kladná

Odpočítávací časovače, formuláře (e-mail / telefon / text), výkazy kupónů a video embeds.

Gamifikovaná zpětná vazba

Kladná

Kola s výherními koly, stírací karty, NPS / hvězdná hodnocení a vícestupňová nálevka.

Rozvržení & efekty

Kladná

Sloupce, progress bary, sociální podíl, sociální důkaz tickers, ano / ne two-step, kvízy, a 3D efekty, náklon, záře, paralax, glassmorfismus.

Osobní tokeny

Napište některý z nich v záhlaví, odstavce, tlačítka, odznaky, statistiky, seznamy nebo citace. Jsou nahrazeny živou informací návštěvníka v okamžiku propagace ukazuje (vždy čištěny pro bezpečnost):

Dostupné žetony
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)

Cílový odkaz

Země a umístění

Zobrazit pouze ve vybraných zemích, městech nebo časových pásmech (nebo se skrýt před) přes GeoIP. Skvělé pro regionální nabídky nebo georedict.

Stránky & URLs

Omezení na určité stránky pomocí rovnic / starts- with / contains / regex, a vyloučit stránky také.

Zařízení

Desktop, tablet nebo mobil, např. štíhlá tyč na mobilu, modální na ploše.

Typ návštěvníka

Nové, vracející, známé (ve vašem CRM) nebo anonymní; CRM segmenty, životní cyklus fáze, olověné skóre nebo jazyk prohlížeče.

Dopravní zdroj

Podle UTM (utm_source, utm_campaign) nebo odkazující místo, např. pouze návštěvníci z určité reklamy.

Časový rozvrh a frekvence

Start / konec data, time-of- den okna, a jak často je člověk může vidět (za sezení, za den, po zavření / klepněte na tlačítko / konvertovat).

A / B rozdělení provozu

Ukázat na procento návštěvníků a spustit varianty head- to-head; stejná osoba vždy vidí stejnou variantu.

Publikum (v sázkách)

S připojeným konektorem, cíl na živém účtu stavu, např. zákazníci s nezaplacenými fakturami, nebo aktivní předplatitelé.

Spouštěče

Vyberte si, jak se podpora objeví: Okamžitě, po zpoždění, na svislé hloubce, na exit- intent, když nečinný, na kliknutí prvku, po řadě stránek zobrazených, na form- opustit, nebo z chatu / tiket aktivity. Vývojáři mohou střílet jeden ze svého vlastního kódu s window.OpsIQPromo.fire('event').

Cílový logged- in zákazníky (konektory)

To je to co dělá OpsIQ speciální propagační akce: připojit platformu jako WHMCS (nebo jakýkoli konektor, který podporuje publikum) a studio může zaměřit návštěvníky podle jejich stavu živého účtu.

1
Povolit konektor pro publikum

Pod konektory, umožnit takový, který odhaluje fakta publika (WHMCS Zákazníci jsou při přihlášení do této platformy bezpečně uznáni, OpsIQ Nikdy nevěř psanému emailu.

2
Přidat pravidlo publika

V kampani Cílení > Publikum, vyžadují přihlášení a přidat pravidla jako nezaplacené faktury > = 1, předplatné je past- due, nebo účet úvěr > 0.

3
Vytvořit si vlastní údaje

Použít žetony, jako jsou {first_name} nebo {balance_due}. Připomínka "Máte zpoždění fakturu" píše sám.

Zaměření diváků je neúspěšné: pokud konektor nemůže potvrdit skutečnost (nebo návštěvník není přihlášen), propagace jednoduše neukazuje, takže nabídka billing- cílené nikdy nedosáhne špatné osoby. Stavba vlastního konektoru? Viz "Propagace publikum zaměření" níže.

Propojené obchodní (studio superpower)

Produktové karty z vašeho obchodu

Živé údaje

Produktový blok přitahuje skutečné položky (jméno, cena, prodejní cena, obrázek, odkaz) přímo od WHMCS, WooCommerce, Shopify nebo OpsIQ fakturace. Tick "Udržujte čerstvé" a karta aktualizuje svou cenu z platformy každou hodinu, zatímco publikoval.

Kupóny s zásobami v obchodech

Kupóny

Kupní blok může vytvořit skutečný slevový kód ve vašem obchodě v okamžiku, kdy publikujete, takže kód návštěvník odhalí vždy pracuje na pokladně.

Příjmy z veřejných zakázek

Přiznání

Skutečné objednávky z vašich platforem jsou porovnávány s kampaní hodinové (pomocí kupónového kódu nebo e-mailem vedení), takže příjmy vidíte je ze skutečného prodeje, ne odhady.

Skutečný sociální důkaz

Důvěra

Social- proof ticker může vést s opravdovými nedávnými objednávkami ("Ada objednala Starter Plan · 2h před"), křestní jméno a položka pouze, nikdy e-maily nebo částky.

Experimenty a cesty

A / B varianty a autovítěz

Rozdělit provoz na konstrukční varianty; nechat studio podporovat statistického vítěze automaticky, nebo ruční provoz na bandita optimalizátor, který posune návštěvníky směrem k tomu, co konvertuje jako důkaz přichází.

Vydržet zvedání

Rezervujte si kousek návštěvníků, kteří nic nevidí, takže můžete dokázat, že samotná kampaň způsobuje výtah.

Varianty segmentů

Různé obsahy na publikum v kampani SAME (mobilní návštěvníci, velké vozíky, vracející se zákazníci), každý segment dostane svou vlastní verzi.

Spouštěcí experimenty

Varianty mohou také testovat, kdy se objevit: okamžité vs opožděných vs exit- intent, měřeno head- to- head.

Cesty (řetězy)

Cílem toho, co někdo udělal s jinou kampaní ("viděl kampaň A, ale nepřevedl") k vybudování multikrokové propagační sekvence.

Zdrhovadla

Malé pilulky návštěvníci mohou znovu otevřít po uzavření kampaně, takže uzavřený pop-up nikdy není pryč nadobro.

Víš, co se stalo?

Klikněte na heatmap

Návrhář

V designéru přepněte heatmap a nakreslete skutečné kliknutí návštěvníků na každý blok vašeho designu.

Křídlová nálevka

Řapíkatá a stonková zelenina

Vícekrokové kampaně ukazují, kde přesně lidé padají, obrazovka po obrazovce.

Porovnat kampaně

Studio

Nastavte až čtyři kampaně vedle sebe (dojmy, kliknutí, konverze), nejlepší hodnota zvýrazněna.

Týdenní příběh & strávení

AI

Každé pondělí strávení přistane ve vašich oznámeních; 📖 týdenní tlačítko příběh píše stručný souhrn s dalšími kroky, kdykoli chcete.

Pohodlně pracovat

AI kopilot & nápady

Chat s designovým kopilotem pro úpravu plátna ("aby titulek urgentní, přidat odpočítávání"), získat nápady kampaně z vlastních dopravních dat, přeložit kampaň za zemi, nebo auto- opravit nízké konstrukční skóre.

Import značkového kitu

Jeden příkaz čte vaše webové stránky a navrhuje vaše skutečné značky barvy a písma; uložit a každý picker vede s nimi.

Ostatní, s kruhovým příčným průřezem

Kroky bloky získat pravdivé per- screen editace: záložky pro každou obrazovku, přidat nebo přeobjednat obrazovky, a náhled následuje dále.

Pojmenované verze & přítomnost

Jmenujte důležité verze ("Start kandidát"), obnovte některý z nich a uvidíte varování, když spoluhráč upravuje stejnou kampaň.

Přístrojový pás & vládci

Viz tabulka, tablet a mobilní bok po boku v jednom pohledu; přepnout pixelové pravítka pro přesné umístění.

Hosted stránka & kanály

Každá kampaň může být také samostatnou hostí stránky pro bios a QR kódy, emailová kapačka sekvence pro zachycené vodítka, nebo one-click web- push draft.

Bezpečnost podniků

Zveřejněte mrazivá okna (změna doby), nouzové pauzy - všechny spínače, schválení, auditní stopu a verzi převrácení.

Mám přidat kód na své stránky?+

Ne. Propagace jsou dodávány stejným OpsIQ widget jste již nainstalován. Design, publikovat, udělat.

Budou návštěvníci vidět to samé pořád dokola?+

Ne. Nastavte frekvenční uzávěry (za sezení / den, nebo se zastavte po zavření, kliknutí nebo konverzi).

Kdo to může zveřejnit?+

Vydávání, zastavování, archivace a převrácení jsou omezeny na majitele pracovních prostor a plné administrátory. Každý člen týmu může vytvářet a navrhovat návrhy.

Růst a SEO

Propagace Designer

Propagace Designer je citlivý blokový editor pro budování, přezkum, verze a publikování zkušeností kampaně.

Produktová obrazovka
Propagace DesignerDesignér kombinuje živé plátno, předvolby zařízení, bloky, personalizace proměnných, komentáře a historii verzí.Propagace Designerpracovní prostorVIEWPORTPlochaVERZEv12STÁTNávrhŽIVÝ VÍDEJ PRACOVNÍHO SPACEHrdinský blokTitulní stránka, média a CTAUpravitBlok nabídkySleva a lhůtaUpravitPersonalizaceKontaktní a propagační proměnnéPřipravenKontrola spuštěníPoznámky a potvrzeníPřezkum1BUILD BLOCKSUpravit rozložení v živém stavu2PŘEDCHOZÍ PŘEHLEDDesktop, tablet, mobilní3PUBLISHVerzionované uvolňování
Designér kombinuje živé plátno, předvolby zařízení, bloky, personalizace proměnných, komentáře a historii verzí.

Pomocí bloků sestavit zkušenosti, náhled každý podporovaný pohled a vložit schválené personalizace proměnných. Review komentáře a AI- media provenance před spuštěním. Uložení vytváří verze, takže předchozí design může být kontrolován nebo obnoven.

Růst a SEO

Šablona pro propagaci

Šablony poskytují vyhledávání, kategorizované startovní galerie pro propagační Studio kampaně.

Produktová obrazovka
Šablona pro propagaciV šabloně galerie filtruje prémiové rozložení a aplikuje barvy značky pracovní plochy, když se šablona stane draftem.Šablona pro propagacipracovní prostorKATEGORIEPřevodRESULTS24ZNAČKAPoužitéŽIVÝ VÍDEJ PRACOVNÍHO SPACENabídka výstupuModal s naléhavostí a CTANáhledVítejte u nového návštěvníka.Seznam výhod a obchodovatelných aktivNáhledSpuštění produktuHrdina, důkaz a odpočítáváníNáhledŽádost o zpětné získáníKompaktní průzkumNáhled1FILTERKategorie a vyhledávání2PŘEDCHOZÍ PŘEHLEDProhlédněte si celý design3USEVytvořit značený návrh
V šabloně galerie filtruje prémiové rozložení a aplikuje barvy značky pracovní plochy, když se šablona stane draftem.

Hledat nebo filtrovat podle kategorie, načíst další výsledky, náhled kompletní zážitek, pak vybrat Použít šablonu. Nová kampaň zůstává návrhem a lze ji změnit v Promotion Designer před publikací.

Růst a SEO

Propagační analytika

Propagace analytiků spojuje dojmy a kliknutí s konverzemi, kontextem publika, výstupy konektoru a vzděláváním kampaně.

Produktová obrazovka
Propagační analytikaPropagační analýza ukazuje hlavní výkon, publikum a spouštěcí poruchy, vede k exportu a konektoru akční výsledky.Propagační analytikapracovní prostorIMPRESSIONS42.8kCCR6.4%CONVERSIONS814ŽIVÝ VÍDEJ PRACOVNÍHO SPACEZeměSpojené království · 31%ČleněníStrana/pricing · 22%ČleněníSpouštěčÚmysl ukončení · 44%ČleněníČinnost konektoruKupon vytvořený · 97% úspěchVýsledek1OPATŘENÍDopady na konverzi2SLICEStrana, země, zařízení3LEARNPoužít pohled
Propagační analýza ukazuje hlavní výkon, publikum a spouštěcí poruchy, vede k exportu a konektoru akční výsledky.

Přečtěte si dojmy, kliknutí -prostřednictvím rychlosti a konverzí dohromady. Rozlom výsledky podle země, stránky, spouštěč a zařízení; Export zachycené vede v případě potřeby. Konektor akční výsledky ukazují, zda je podpora přislíbená po-up skutečně běžel. AI vhled a hodnocení souhrny by měly být považovány za hypotézy potvrdit, ne automatický důkaz.

Růst a SEO

Oznámení

Oznámení zveřejňují zprávu v oblasti hlášení widget s volitelným cílením, rozvrhem a výzvou k akci.

Produktová obrazovka
OznámeníEditor oznámení obsahuje obsah, CTA, publikum, segment, pravidlo stránky, aktivní data a vizuální styl.Oznámenípracovní prostorÚČINNÉ3AUDIENCESegmentROZSAHJul22–29ŽIVÝ VÍDEJ PRACOVNÍHO SPACENázevPlánovaná údržbaPřipravenObsahZpráva o uvedeníPřipravenCTAPřečti si aktualizaciNepovinnéČlánekCenové stránky · aktivní zákazníciCíl1WRITENázev a Markdown2CÍLPublikum, segment, strana3ROZSAHAktivní okno
Editor oznámení obsahuje obsah, CTA, publikum, segment, pravidlo stránky, aktivní data a vizuální styl.

Vyberte si všechny návštěvníky, signed- in visitors nebo nové návštěvníky; volitelně zúžit publikum s kontaktním segmentem a pravidlem stránky. Nastavte aktivní -od / aktivve- do datumů a aktivní vlajku. Premium styl přednastavené a barevné změnit prezentaci, ale nenahrazují jasný obsah.

Růst a SEO

Tlačit kampaně

Tlačit kampaně odesílat oznámení prohlížeč na upsané návštěvníky poté, co opustili stránky.

Produktová obrazovka
Tlačit kampaněSkládačka ukazuje rozsah předplatného, obsah, média, akce, cílová pravidla a stav harmonogramu.Tlačit kampaněpracovní prostorSUBSCRIBERS8,214VYSVĚTLIVKA31.6kCLICK RATE5.8%ŽIVÝ VÍDEJ PRACOVNÍHO SPACENázevVáš vozík čeká.PřipravenTěloVraťte se dnes pro bezplatné dodáníPřipravenCTAOtevřený vozíkPřipravenPlánPoslat teď nebo naplánovanéNávrh1PREPARE PUSHNázev, tělo, ikona2CÍLPublikum, segment, strana3SENDTeď, rozpis nebo návrh.
Skládačka ukazuje rozsah předplatného, obsah, média, akce, cílová pravidla a stav harmonogramu.

Nastavit klávesy na webové Push nejprve pod nastavením Web Push. Kampaň může zahrnovat název, tělo, ikonu, obraz hrdiny, odznak, CTA a až dva akční tlačítka; přetrvávající oznámení zůstává, dokud návštěvník interaguje.

Cíl diváky, volitelné pravidlo pro kontakt a segment stránky. Uložit návrh, naplánovat nebo odeslat okamžitě. Použijte předplatné a klepněte na tlačítko metrika pro posouzení dosahu. HTTPS a správně hostující pracovník služby jsou vyžadovány na vložených třetích stran stránek; viz Web Push na třetích stran stránkách.

Růst a SEO

Proaktivní zprávy

Proaktivní zprávy se automaticky dostanou do okamžiku, kdy návštěvník chování odpovídá pravidlu, než se zeptá. Postavíte každý jako pravidlo se třemi částmi: co by se mělo stát, kdy by mělo oheň, a jak často. Vše je dodáváno prostřednictvím OpsIQ widget již na vašich stránkách.

Proaktivní
Proaktivní zprávyProaktivní skladatel pravidel ve třech částech: vyberte akci (chat, banner, prohlídka, push, email), přidejte podmínky a nastavte frekvenční chlad.Proaktivní zprávypracovní prostor1 · AkceZpráva o chatuBannerProhlídkaTlačitE-mail2 · Podmínkypage = /pricingčas na stránce > 20snávrat3 · FrekvenceJednou za sezeníStav1AKCEChat, banner, e-mail, push...2CONDITIONSStránka, čas, skóre, návrat3ČERVENCEChladicí systém pro návštěvníka
Každé proaktivní pravidlo je tři možnosti: co se stane (chat, banner, prohlídka, push, e-mail, webhook), kdy (podmínky), a jak často (vychladnutí).

Tři části pravidla

1
Co by se mělo stát (akce)

Zobrazit chatovací bublina nebo on-page banner, spustit prohlídku s průvodcem, poslat webové tlačení nebo e-mail, přiřadit oddělení, nebo oheň webhook. Tokens jako {{visitor_name}} a {{page_title}} stát se skutečnými hodnotami.

2
Pokud by mělo vznítit (podmínky)

Úzký, kdo ho spustí: strana /URL, čas na stránce, posun hloubka, skóre olova, návrat vs nové, volnoběžné. Bez podmínek, pravidlo hoří pro každého návštěvníka. Přidat alespoň jeden k cíli. Podmínky se kombinují s AND.

3
Jak často (frekvence)

Nastavte chladicí systém tak, aby stejná osoba nebyla obtěžována, např. jednou za sezení nebo jednou za den. Každé pravidlo má status zapnuto / vypnuto.

⚠️
Pracovní prostor přepíná "Run time / leave rules hourly" umožňuje serverboard akce (email, push, webhook, přiřadit) oheň na rozvrhu pro známé kontakty, kteří nejsou v současné době na stránce, takže můžete "e-mail neaktivní horké vedení" automaticky. To potřebuje OpsIQ cron spuštěn. Nechte to vypnuté, pokud chcete pouze živé on- page ndges.
Bude to střílet pro všechny?+

Pouze pokud nepřidáte žádné podmínky. Přidejte alespoň jednu podmínku (stránka, skóre vedení, návrat...) k cíli správné návštěvníky.

Jak se tyto týkají toků a zájezdů?+

Pracují společně: proaktivní pravidlo může spustit Provedenou Tour, a Chatbot Flow může být spuštěn proaktivním pravidlem. Začněte jediným pravidlem chat- message, pak vrstvit ostatní na.

Růst a SEO

Proudové motory na beton

Chatbot Flows rozvětvování konverzí uvnitř vašeho chatu widget (pozdravy, odpovědi klíčových slov, vedené cesty) bez kódu. Průtok je soubor připojených kroků (uzly): položit otázku, návštěvník vybere možnost, a tok posílá je dolů odpovídající větev. Pouze aktivní toky běží na vašich stránkách.

Jak to funguje
Proudové motory na betonPrůtokové plátno: uvítací uzel se větví do tří tlačítek, z nichž každý vede k dalšímu kroku, vyhledat pořadí, nebo předat člověku.PozdraveníJak vám mohu pomoci?Vystopuj mou objednávku.Otázka na účetPromluv si s člověkem.Vyhledej si pořadí.→ Lidský činitelTriggeři: Pozdravení · Klíčová slova · Příručka · Podrobnosti o hře · On- chat- end
Proudové motory na beton

Průtok vs AI · kdy použít, které

Použít tok

Když je cesta předvídatelná a chcete, aby byla pokaždé identická: rezervační kroky, průvodce vrátí, "který plán?" Vyhledávač, sbírání e-mailu před předáním.

Použijte AI

Když jsou otevřeny otázky, "funguje to s mým nastavením?" Zákazník Chat AI odpovídá z vašich vyškolených znalostí. Průtok může předat AI (nebo člověk) v každém kroku.

Spouštěče

Pozdravení

Spustí se jako úvodní zpráva, když návštěvník poprvé otevře chat.

Klíčové slovo

Běží, když návštěvník napíše slovo, které jste uvedl (např. vrácení peněz, ceny, zrušení).

Po podrobnostech / Po zpoždění

Začne, jakmile jsou sdíleny kontaktní údaje, nebo nastavený čas do konverzace.

Na konci chatu / Proactive

Běží jako chat se uzavírá (např. rating), nebo je spuštěn pravidlem Proactive Message.

Postavíme jeden ve čtyřech krocích

1
Vytvořit tok

Klikněte na Nový tok, pojmenujte ho, vyberte typ spouště (a klíčová slova, pokud je klíčové slovo), uložit. Začíná vypnut.

2
Otevři plátno.

Klikněte na Upravit Canvas. Vizuální stavitel, kde přidáte kroky (zprávy, otázky s tlačítky, větve) a připojte je.

3
Přidat větve a hand- off

Pro každou volbu nakreslete větev k dalšímu kroku. Koncové cesty řešením, předáním AI nebo přenosem na člověka.

4
Povolit

Klikněte na možnost Povolit. Průtok jde živě ve vašem widget okamžitě. Zakázat kdykoliv bez ztráty designu.

Nahrazují toky AI?+

Ne. Běží bok po boku. Používají toky pro předvídatelné cesty a AI pro otevřené otázky; tok může vždy předat na obou.

Růst a SEO

Prohlídky s průvodcem

Prohlídky jsou step-by- krok průchody, které bod na části stránky s bublin řeči a reflektory, vedení návštěvníka přes nastupování nebo nové funkce. Jsou plně tematicky a postaveny ve vizuálním designéra s živou náhled. Prohlídka běží pouze tehdy, když je označen Aktivní.

Jak to funguje
Prohlídky s průvodcemZtlumená stránka se zářným kroužkem kolem tlačítka Add- deal a tematické čtení slovní bubliny krok 1 z 4 s tlačítkem Next.+ Přidat dealKROK 1 OF 4Vytvořit první dohoduKlikněte zde pro přidání dohody do potrubí.Další →
Prohlídky s průvodcem

Jak se staví prohlídka

Kroky

Každý krok se zaměřuje na prvek a ukazuje bublina s textem. Přidat tolik zastávek, jak procházení potřeby a objednat je.

Přednastavení& téma

Začněte z přednastaveného nebo navrhujte vlastní bublinu (barvy, sklony, reflektory) s živým náhledem vpravo.

Spouštěč

Volitelně odkaz Proactive Rule, takže turné automaticky začíná, když toto pravidlo hoří (např. návrat návštěvníka první palubní deska návštěvu).

Aktivní přepínání

Prohlídka je způsobilá k běhu pouze při Active je zaškrtnuto. Odznačit, aby se to dolů bez smazání.

Postavíme jeden ve čtyřech krocích

1
Nové turné

Klikněte na Nové Proactive Tour, pojmenujte ji a volitelně odkažte Proaktivní pravidlo, aby se automaticky spustilo.

2
Přidat kroky

Přidat každé zastavení: vyberte prvek, který ukazuje na a zapište text bubliny. Přeobjednat, dokud cesta teče.

3
Navrhnout

Vyberte si přednastavený nebo styl bubliny sami. Živý náhled ukazuje přesně to, co návštěvníci vidět.

4
Aktivovat

Tick Aktivní a uložit. Tour může nyní spustit, na vlastní spouště, nebo začal pravidlo Proactive Message.

Jak začínají prohlídky?+

Na vlastní spouštění, nebo prostřednictvím Proactive Message pravidlo "Provedená prohlídka" akce, takže se rozhodnete, kteří návštěvníci vidět, které turné a kdy.

Růst a SEO

Přepočítávací cíle

Převodní cíle změní činnost, na které vám záleží (příchozí webhook událost, chatová zpráva, řešení tipu) na zaznamenanou konverzi s plným přiřazením. Když se činnost vyvolá, OpsIQ zaznamená konverzi proti kontaktu a připojí ji zpět k kampaním, segmentům a zdrojům, které vedly tam.

Jak to funguje
Přepočítávací cílePrůtok cíle: payment. fuctured webhook událost se stane zaznamenanou "nákup" konverze v hodnotě $49, připisovaný jeho zdroji a kampaně, s rychlým-start přednastavené čipy výše.Rychlý startStripe koupěDemo rezervovánoSignup Newsletterpayment.succeedednavázaný webhookPřevod"nákup" · $49Připisovánozdroj · kampaň
Přepočítávací cíle

Definovat cíl ve třech krocích

1
Zmáčkni spouštěcí činnost

Klikněte na nový cíl konverze. Vyberte si typ činnosti, který se počítá jako převod, nebo použijte Quick- start přednastavený, Stripe nákup, Demo rezervován, Newsletter signup nebo Odepsat začal.

2
Jmenuj a nastav hodnotu

Uveďte konverzi název (nákup, demo_booked, signup) a volitelně fixní hodnotu a přiřazení okna.

3
Uložit

Uložit a povolit. Od té doby, kdykoliv se činnost vyvolá, OpsIQ zaznamenává konverzi proti kontaktu s přiřazením k předchozím dotekům.

Cíle jsou již napojeny na vstupující webové háčky: každý gól, jehož spouštěč se shoduje s typem příchozího požáru, automaticky v okamžiku, kdy událost přistane. Použijte stránku Příchozí Webháky pro připojení Stripe, Calendly nebo jakéhokoli systému, který může POST JSON.
Co může být přeměna?+

Jakákoli zaznamenaná činnost: událost na příchozí webhook (payment. fugment. foundated), zachycení chatu, rozlišení vstupenky, cokoliv v časové ose kontaktu.

Analytika

Vlastní palubní desky

Vlastní Dashboardy vám umožní vybudovat vlastní pohled na metriky, které jsou důležité, místo spoléhání se pouze na standardní Přehled. Přidat widgety chcete, přetáhněte a předimenzovat je do rozložení, chcete, uložit, a sdílet s vaším týmem.

Vlastní palubní desky
Vlastní palubní deskyStavebnice přístrojové desky s KPI a mapovým šipkovým blokem, rozbočovanou zónou pro pokles a tlačítkem Add- widget.Vlastní přístrojové deskypracovní prostorMoje palubní deska+ Přidat widgetVIZITOŘI2,481PŘÍJMY$8. 2kDOPRAVAPřetáhněte sem widgetTop stránky/pricing/docs/signup1ADD WIDGETSVybrat metriky a grafy2ARRANGEPřetáhnout & převelikost3SdíletS tvým týmem
Vytvořte si vlastní desku: přidejte KPI, widgety grafu a seznamu, přetáhněte je a změňte jejich velikost do rozložení, které chcete, a pak se o ně podělte s týmem.

Postavíme jeden ve třech krocích

1
Přidat widgety

Klikněte na Přidat Widget a vyberte metrický nebo graf, který chcete sledovat. Opakujte pro vše, co chcete na palubě.

2
Uspořádat rozložení

Přetáhněte widgety k přestavení a přetažením hran k předimenzování. KPI přes horní, grafy níže. Cokoliv čte nejlépe.

3
Uložit & sdílení

Uložte palubní desku a sdílejte ji s týmem, aby se všichni dívali na stejná čísla.

Udržujte oddělené desky pro samostatné práce ("denní pohled" deska s živým počítá, a "měsíční přezkum" deska se grafy trendů), takže každý zůstane soustředěn.
Růst a SEO

Informační kampaně

Osazení je OpsIQ s1:1a hromadný e-mailový motor: sestavit personalizovanou zprávu nebo spustit kampaň na CRM segmentu, s odpovědí detekce, Send- time řízení, open / click sledování, sledovací pixel a one-click odhlásit. Je consent- routed a CAN-SPAM / CASL v souladu.

Navázat kontakty
Informační kampaněObrazovka s tabulkami Composer / Campaigns / Templates / Relies a tabulkou zobrazující odeslané, otevřené a aktuální.Navázat kontaktypracovní prostorKameryKomposerŠablonyOdpovědiKAMPAIGNVYSVĚTLIVKAOtevřítODPOVĚDIČerven bulletin1,20048%7%Proces následného sledování34062%14%Win- back82039%5%Odpovědět na detekci automaticky zastaví sledování · jedno klepněte na tlačítko odhlásit na každé odeslání11:1 & BULKSložení nebo kampaň2TRACKEDOtevře, klikne, odpoví3COMPLIANTOdhlásit se vestavěné
Engine Outreach: odeslat1:1nebo spustit kampaně do segmentu, trať otevírá a odpovědi, a zůstat v souladu s built- v odhlásit a odpověď detekci.

Čtyři karty.

Komposer

Napište personalizované1:1e-mail s {tokens} z kontaktu a CRM.

Kamery

Pošlete do CRM segmentu, naplánované nebo nyní, s čepice a Send- time control.

Šablony

Reservativní šablony zpráv pro opakované oslovení.

Odpovědi

Odpověď na detekci zaznamenává odpovědi a autostop sledování každého, kdo odpověděl.

Jak vede kampaň

1
Vyberte si publikum.

Vyberte si segment CRM (nebo nahrát seznam). Potlačení a souhlas se aplikují automaticky.

2
Složení

Napište zprávu s osobitostmi; náhled proti skutečnému kontaktu.

3
Naplánovat a odeslat

Odeslat nyní nebo v nejlepší čas. Zobrazí se záznamy sledovacích pixelů; připíše se kliknutí a odpovědi.

Výstupní je consent- a supression- routed, obsahuje one-click odhlásit na každém odeslání, a následuje CAN-SPAM / CASL. Odpovědi automaticky zastaví další follow- up.
Analytika

Plánované zprávy

Plánované zprávy e-mailem vybraný metrický soubor pro vybrané příjemce na harmonogramu (denní, týdenní nebo měsíční) jako tisknutelné, bílé označení PDF. Nastavte jej jednou a zpráva přistane v inboxech automaticky přes OpsIQ Crone.

Plánované zprávy
Plánované zprávyScénář zpráv o plánu: tabulka zpráv s jejich harmonogramem, příjemci a naposledy odeslaným časem, plus tlačítko Save- report.Plánované zprávypracovní prostorPlánované zprávy+ Uložit zprávuZPRÁVAROZSAHRECIZITAPoslední zprávaTýdenní provozPo 9:00[email protected]Před 2dZpráva SEO klientaMěsíční[email protected]Jun 1Souhrn prodejeDenně[email protected]todayDodáváno jako bílý štítek PDF prostřednictvím OpsIQ kron1AUTOMATEDDenní · týdenní · měsíční2ŠTÍTEK NA BĚHEMPDF pro klienty3RECIZITAOdesláno podle plánu
Nastavit zprávu jednou (metrický soubor, rozsah, harmonogram, příjemci) a OpsIQ e-mail a white- label PDF automaticky na vaší kadenci.

Nastavit zprávu

1
Vyberte, co poslat

Vyberte si metrickou sadu (provoz, SEO, prodej, podpora...) a datový rozsah.

2
Nastavit harmonogram & příjemce

Denní, týdenní nebo měsíční, v době, kterou si zvolíte, na jednoho nebo více příjemců e-mailu.

3
Uložit

Uložit a povolit. Zpráva generuje a emaily se na časový plán, žádný manuální krok.

💡
Plánované zprávy běží přes OpsIQ cron, pokud zpráva nedorazí, potvrdit, že cron běží (viz Cron a automatizace).
Ochrana soukromí

Ochrana soukromí a dodržování předpisů

Stránka Privacy & Compliance je jediným místem, kde auditor, který zpracovává osobní údaje, odpovídá: listinu souhlasu, admin přístupový deník, vaše pravidla pobytu a uchovávání údajů a ready- to- print DPA, v jednom tabulkovém zobrazení. Pouze plný správce může otevřít.

Ochrana soukromí a dodržování předpisů
Ochrana soukromí a dodržování předpisůObrazovka Privacy & Compliance: záložky pro Souhlas knihy, Přístupový deník, Residency a DPA, se souhlasem tabulky záloh grantů a zrušuje prostřednictvím kanálu.Ochrana soukromí a dodržovánípracovní prostorSouhlas s účetní závěrkouPřístupový deníkRezidenturaDPAKONTAKTČASOVÝ ROKAKCEDATUM[email protected]e-mailUdělenoJun 12[email protected]pushOdvolanýJun 10[email protected]marketingUdělenoJun 9Vyhledatelný důkaz o každém souhlasu grantu a zrušení, podle kanálu1KONSENT LEDGERDůkaz o každém grantu2ACCESS LOGKdo se dotkl dat3DPAŠablona pro tisk
Jedna auditoru- ready obrazovka: vyhledávatelný souhlas kniha (granty / anukes by channel), přístupový záznam toho, kdo se dotkl dat, rezidence / retenční nastavení, a tištěný DPA.

Čtyři karty.

Souhlas s účetní závěrkou

Vyhledatelný záznam o každém udělení souhlasu a zrušení, kontaktem, kanál (e-mail, push, SMS, in- widget), akce, zdroj a datum. Váš důkaz kontakt dohodnut (nebo stáhl).

Přístupový deník

Kdo z vašeho týmu prohlížel, editoval, exportoval, vymazal nebo odeslal data kontaktu, s admin, kontakt, akce, uvedl důvod a IP. Přesně to, co regulační orgán požaduje.

Rezidentura a retence

Vyhlaste, kde tato data žijí, nastavte počet dní, kdy se vedou řádky aktivit (0 = navždy) a zaznamenejte svůj datový ovladač a DPO.

Šablona DPA

Vytisknutelný doplněk zpracování dat, který vyplní váš ovladač, adresu, DPO, rezidenci a retenci. Tisk nebo uložení jako PDF.

Privacy & Compliance páry se studiem Cookie consent (které shromažďuje souhlas) a exportní stránku (která vytváří datovou kopii pro DSAR). Viz také Cron a automatizace pro noční retenční čištění.
Konektory

Připojte své platformy

Spojovací vedení OpsIQ na externí platformy: e-commerce obchody, fakturační systémy, platební procesory, e-mailové poskytovatele, a vlastní APIs. Po připojení, AI může vyhledávat objednávky, data zákazníků, předplatné, a další, a přijmout opatření s vaším souhlasem.

Jak to funguje
Nápojové vedeníOpsIQ jádro připojené k WHMCS, Shopify Stripe, WooCommerce, SendGrid a Google Business Profile, každý vykazuje připojený stav.WHMCSShopifyStripeWooCommerceSendGridGoogle BPOpsIQCORE1PLUG IN25+ přednastavené konektory2AI CONTEXTÚdaje o skutečné platformě3ACTIONSHotovo s vaším souhlasem.
Konektory

Lodě s OpsIQ

Tyto jsou přítomny v okamžiku, kdy nainstalujete a potřebují pouze své pověřovací listiny.

WHMCS

Účtování

Výpis z webu: klienti, služby, vstupenky, faktury, domény, servery.

Shopify

E-commerce

E-commerce: objednávky, zákazníci, produkty, inventář, platby, webháky.

WooCommerce

E-commerce

WordPress e-commerce: objednávky, zákazníci, produkty, kupóny, doprava.

WordPress

CMS

Obsah a uživatelé na stránkách WordPress.

Čtvercové

Platby

Platby a místo prodeje: objednávky, zákazníci, katalog.

osCommerce

E-commerce

Legacy e- commerce: objednávky, zákazníci, produkty.

Botble Hotel

Most

A Botble CMS hotelové stránky přes podepsanéOpsIQmost. Reference implementace pro platformu s neAPI.

Zendesk

Podpora

Helpdesk: vstupenky, uživatelé, organizace, komentáře.

Profil Google Business

Uvádění na trh

Místní podnikání: recenze, příspěvky, Q & A, poznatky. Používá OAuth.

Kalendář Google

Produktivita

Kalendáře a události. Používá OAuth.

GmailaIMAP

E-mail

Poštovní schránky: příchozí a odchozí pošta, adres- book synchronizace.

SendGrid

E-mail

E-mailová dodávka: odeslat e-maily a spravovat šablony.

Mailgun

E-mail

E-mailová dodávka: poslat e-maily přes Mailgun.

Slack, _Telegram, LINKA, X DM

Zprávy

Vysílání zpráv pro příchozí a odchozí rozhovory.

Meta kanály

Zprávy

Facebook Messenger, Instagram DM a WhatsApp.

Zpravodajská služba na webových stránkách (GA4, vyhledávací konzole)

Analytika

Analytika a vyhledávání dat pro SEO suite.

Obohacování webových stránek a import CRM

CRM

Obohacování a hromadný dovoz zákazníků.

Dostupné na trhu

Tyto jsou publikované balíky, které nejsou součástí instalace. Nainstalujte jeden z Connectors, Marketplace a je zkopírován do složky živých konektorů, po kterém se chová přesně jako ty nahoře.

Stripe

Marketplace

Platby: poplatky, zákazníci, faktury, předplatné, výplaty, spory.

BigCommerce

Marketplace

E-commerce: objednávky, zákazníci, produkty, kategorie, značky.

Magento 2

Marketplace

E-commerce: objednávky, zákazníci, produkty, kategorie, inventář.

PrestaShop

Marketplace

E-commerce: objednávky, zákazníci, produkty, pravidla pro vozíky, dopravci.

OpenCart

Marketplace

E-commerce: objednávky, zákazníci, produkty, kategorie.

Amazon SES Postmark, Odeslat znovu

Marketplace

Transakční e-mailová dodávka.

Jira, lineární

Marketplace

Vydání a sledování projektu.

Microsoft Calendar, Outlook Mail

Marketplace

Schůze, kalendáře a pošta.

DocuSign, Apollo, SerpApi, Nové Google Analytics

Marketplace

Údaje o podpisu, vyhledávání, hledání a analýze.

Webflow, Wix, Squarespace

Marketplace

Webová platforma.

💡
Seznam konektorů se pohybuje tak, jak jsou zveřejněny balíky. Autoritativní seznam pro vaši instalaci je stránka Connectors: co je uvedeno tam je to, co runtime objevil, a Marketplace karta ukazuje, co můžete přidat.

Instalace konektoru

1
Přejít na konektory

Přejít na konektory v admin sidebar.

2
Najít konektor

Projděte seznam nebo vyhledávání. Konektory jsou seskupeny podle kategorií.

3
Povolit

Klikněte na konektor a přepněte možnost Povolit.

4
Zadejte údaje

Vyplňte požadovaná pole: API klíč, URL, žetony, atd. Každý konektor má specifické požadavky zdokumentované ve svém panelu nastavení.

5
Zkušební spojení

Klikněte na tlačítko "Zkušební připojení". Zelený výsledek znamená, že konektor může dosáhnout vnější plošiny. Červený výsledek ukazuje chybu.

6
Nastavení funkcí

Vyberte si, které funkce umožňují: sync znalostí, webhook synchronizace, AI akce. Ne všechny konektory podporují všechny funkce.

Co ti konektory dávají

Kontext AI

AI může vyhledávat data, objednávky, předplatné a další přes konektor. Když zákazník chatuje, AI má skutečné platforma data k referenci.

Kontext AI (autoři konektoru)

KontextProvider vašeho konektoru podává ticket- AI shrnutí účtu pouze pro čtení majitele jízdenky. customer_id pokud je známo; jinak, na vstupence autoodpovědí, kde ctx vlajka customer_trust_email je pravda, podívejte se na účet nahoru customer_email (ověřený odesílatel tipu). Vzdálené platformy odhalí /context/customer-by-email Konečný výsledek a konektor to nazývá. To je to, co dělá AI citovat skutečný zůstatek / fakturu místo slova "prosím přihlaste se". Cti operátorovy data- class přepínače (customer_sections, customer_allow_creditA zůstat přísně čitelný, nikdy nevypouštět tajemství.

Adresář zákazníků (autoři konektoru)

Identifikátor vašeho konektoru je dodáván tři univerzální vyhledávače tipů: lookupCustomerById() (zákaznická karta), lookupCustomerServices() (tabulka produktů / služeb) a listCustomers($query,$limit): "Vyhledávání zákazníka nebo typu e-mailu" picker na rodném Compose- New-Ticket formulář. Vrátit řádky {id, external_id, name, email, company, phone, platform, platform_label}. Vzdálené pravidlo: pokud vaši zákazníci žijí v jiné databázi nebo službě, přiveďte je přes platformu API uvnitř těchto metod, nikdy číst tabulky jiného systému přímo (v OpsIQ DB jsou prázdné prostírače, což je důvod, proč lokální čtení vrací prázdný picker). Brána vzdálenou cestu na nakonfigurované API URL; udržet místní čtení pouze jako stejné-DB záloha.

Email- piped tips, detection & routing (autoři konektoru)

Když se přicházející e-mail stane rodným tipem, OpsIQ detekuje odesílatele voláním lookupCustomerById(0, ['email'=>$sender]) přes každý konektor; první zápas "vlastní" zákazník a jeho platform slimák je označen na ticket.created událost jako _pipe_owner_platform (prázdný = host).WHMCS-zákaznický e-mail otevře vstupenku v WHMCS (WHMCS číslování, zrcadlově jako jeden), zatímco neznámý odesílatel zůstává rodným hostem. Pokud váš konektor odráží rodné jízdenky na vlastní platformu, vaše ticket.created Dohled musí být uzamčen na tomto: if (array_key_exists('_pipe_owner_platform',$payload) && $payload['_pipe_owner_platform'] !== '<your-slug>') return;. Klíč chybí na non-piped (chat / manual / AI) vstupenky, takže ty zrcadlo jako dříve. Per- oddělení řízení žije v rámci Team & Departments → Otevřené vstupenky prostřednictvím e-mailu (Každý / Zákazníci pouze / Off).

Akce

AI může provádět akce přes konektor: vytvořit tipy, aktualizovat objednávky, zrušit předplatné, vše s vaším souhlasem přes Trust Layer.

Znalosti

Konektory přispívají k AI články specifické pro platformu. Shopify konektor přidává e- commerce řešení problémů; WHMCS konektor přidává hostingové znalosti.

Knowledge- base import (autoři konektorů)

Pokud vaše platforma hostí znalostní základnu, vyhlásit kb_capabilities blokovat settings.json (typ kb_source) a váš konektor se objeví v editoru Help Center Importovat KB → Importování z připojené aplikace depilace, kdykoli je zapnuta a nakonfigurována v pracovní ploše. Je deklarativní, není metoda implementace: název built- in adapter (zendesk pro přesné-strom Help Center API, nebo crawl pro jakékoliv KB stránky) a base_template jako například https://{subdomain}.zendesk.com, které OpsIQ vyplňuje z uloženého nastavení konektoru. Záruky nikdy neopustí server; prohlížeč posílá pouze konektor slimák. Chcete-li podpořit novou platformu, přidejte opsiq_kb_<platform>_manifest() adaptér a reference podle názvu. connectors/PLATFORM_CONNECTORS.md §5.

Webhooky

Některé konektory registrují webháky s externí platformou pro oznámení událostí v reálném čase (nové objednávky, aktualizace vstupenek atd.).

Sledování prodeje

E- commerce konekuje data o příjmech do dashboard prodeje pro přiřazení a analýzu.

💡
Konektory jsou pracovní prostor-scoped. Každý pracovní prostor může mít různé konektory zapnuty s různými pověřovací znaky. A WHMCS workspace používá WHMCS konektor; a Shopify workspace používá Shopify konektor.
Můžu použít více konektorů najednou?+

Ano. Pro objednávky můžete mít Shopify a Stripe pro platby ve stejném pracovním prostoru. AI sčítá data ze všech povolených konektorů.

Co když moje platforma není v seznamu?+

Pomocí Connector Builder vytvoříte vlastní konektor pro jakoukoli platformu s REST API. Nebo zkontrolujte Marketplace pro komunity- postavené konektory.

Pracují konektory s vlastním moderátorem OpsIQ?+

Ano, konektory fungují identicky v cloudu i v autodesilaných edicích.

Konektory

Smlouva o prodeji a fakturačním konektoru

Každý obchodní konektor používá stejnou platform- neutrální smlouvu o událostech. WHMCS je referenční implementace, ale SaaS Bridge, obchody, poskytovatelé plateb, tržní konektory a balíčky pro stavitele konektorů musí dodržovat stejná pravidla.

Co musí každý obchodní konektor zveřejnit

Jedna autoritativní kniha

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.

Stálá identifikace zdroje

platforma je konektor registru slimák, jako je whmcs, shopify nebo opsiq_saas. traffic_source obsahuje ověřené akviziční přiřazení při dodání; jinak použijte stejnou kulku jako záložní. Ukládejte identifikátory, ne zobrazujte štítky. OpsIQ řeší přátelské jméno konektoru v UI.

Idempotence

event_id musí být deterministické. Mapa alespoň jednoho neměnného order_ref, invoice_ref nebo subscription_ref tak webhook retests a backfills update stejnou událost místo vytvoření duplicitní prodeje. service_ref identifikuje dotčený příklad výrobku nebo služby, pokud existuje.

Časový údaj zdroje

occurred_at je platební nebo ekonomický čas události ohlášený zdrojovou platformou. Nikdy nenahrazujte historické data plateb importním časem.

Peníze a FX

Odeslat zdrojovou částku a platnou třípísmennou ISO měnu. Pokud nastavení konektoru umožňuje konverzi OpsIQ FX, převede se hlášení do měny pro vykazování pracovních ploch; jinak zprávy uchovávají měnu skladovací nebo fakturační platforma. Kód konektoru nesmí být pevný kód vykazující měny nebo směnného kurzu.

Životní cyklus založený na dopadech

Použijte nový, obnovení, upgrade, vrácení peněz, úvěr nebo neznámá. Upřesněte z důvodu faktury, předplatné nebo servisní vztah, lin- item typ, nebo jiný autoritativní zdrojový pole. Opakované zakoupení stejným zákazníkem není automaticky obnova.

Hranice prodeje

Pouze pozitivní placené nové, obnovení, upgrade, nebo legitimně neznámé příjmy z obchodu patří do prodeje & Konverze. Náhrady jsou vykazovány pomocí náhrady a net- příjem analytiků. Účet úvěr, peněženky top-up, token top- ups a Add Funds zůstávají billing- knihy událostí a nikdy se nepočítají jako prodej, konverze, objem objednávky, nebo prodejní výnosy.

CRM zůstává oddělené

Nabídky CRM představují činnost plynovodu a dealování. Nejsou to prodej na platformě, pokud připojená fakturační nebo skladová platforma nevydává realizovanou zaplacenou objednávku nebo fakturu prostřednictvím této smlouvy.

Každý platební signál otevře řádek

Nezávisejte na jednom názvu události. Když platforma pošle několik potvrzení jedné platby (faktura zaplacená, platba objednávky, přidaná transakce, platba dokončena), může kterýkoli z nich otevřít řádek účetní knihy, jakmile platforma potvrdí prodej je vyplacen; prodejní otisk prstu zhroutí sourozence do jednoho řádku.

Plánované sladění (Smlouva 2.3)

A connector whose platform can list completed sales declares sales_reconciliation and implements SalesReconciliationInterface::reconcileSales(). Core re-reads the platform list on a schedule (once per workspace interval, bounded, cursored) through the same idempotent writer, so a dropped webhook cannot lose revenue. Conformance fails a package that can list history but does not reconcile. The Connector Builder derives the capability from the sales backfill action.

Odvozené projekce

opsiq_conversions a shrnutí palubních desek jsou projekce kompatibility přestavěné z knihy. Konektory nesmí zacházet s projekcí jako s finančním zdrojem pravdy. Revize smlouvy mohou přehodnotit odvozené řádky, aniž by byly smazány základní historie fakturace.

Vzdálená hranice nástupiště

Vzdálený konektor čte svou platformu přes konfigurované ověřené API. Nikdy nesmí záviset na tabulkách databáze same- server. Přesný ověřený doménový klíč je dodáván ConnectorRegistry a musí být použit pro každou knihu zápisu a zálohování. Pracovní prostor nebo rozsah skupiny je pouze agregací času, nesmí nikdy rozšířit uloženou událost vlastnictví.

Kanonický příklad

Normalizovaná obchodní událost
{
  "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"
}

Mapování konektoru

Je-li povolen prodej a vyúčtování v Connector Builder, mapový objem, měna, stav zdroje a datum vzniku, plus alespoň jednu objednávku, fakturu nebo referenci na předplatné API Odhaluje autoritativní dokazování životního cyklu. Vygenerovaný SalesIngest prochází každý řádek stejným normalizovačem CommerceEventRegister používaným konektory built- in a marketplace.

⚠️
Kredity a fondy Add jsou záměrně uchovávány pro fakturaci historie, kontext zákaznické bilance a analýzu účetní knihy. Vyloučení z prodeje je nesmaže, pouze jim brání v nafukování obchodního výkonu.

lifecycle_type rozhodne, co se stane CRM Dohoda

lifecycle_type není analytický štítek. OpsIQ jej čte, aby se rozhodlo, zda prodej vstoupí do potrubí CRM, takže každý prodejní konektor činí rozhodnutí o potrubí, ať už má nebo nemá v úmyslu.

nový

Otevře uzavřený-won obchod (nový obchod).

obnova, modernizace

Rekorded as rekururing revenue. No new-business deal - obnova konvertuje na jiné pravděpodobnostní křivky a míchání je poškozuje obě prognózy.

vrácení, úvěr

Nikdy neotevřou dohodu, v žádném režimu. Peníze vrácené zákazníkovi nejsou výhra.

vynecháno / neznámé

Prodej je zaznamenán, ale nikdy nedosáhne potrubí.

Jeden prodej, jeden řádek knihy: identita je SALE, ne událost

Neshodujte se s event_id a vložte se do něj. event_id is platform:eventName:externalId, která odpovídá "už jsme tuto dodávku zpracovávali" a nemůže odpovědět "již jsme zaznamenali tento prodej." Platforma, která oznamuje jednu platbu dvakrát - jako invoice.paid a znovu jako payment.completed - Mints dvě ID a přistane stejné peníze dvakrát, s ničím se srážet a nic varovat.

💡
Nalezeno na referenční instalaci: šest faktur se třemi řadami, každý ze tří kódových cest pomocí tří různých event_id Všechny měly své plány 0.00 Takže žádný celkový vypadal špatně, a jakýkoli pozdější proces obnovení reálných částek by spočítal jednu platbu třikrát.

Místo toho zadejte sdílený zápis. Jádro počítá obchodní identitu prodeje (sale_fingerprint), odpovídá existující řádek na to, uchovává originál event_id při aktualizaci a filtry do reálných sloupců:

Jediný podporovaný způsob, jak napsat prodejní knihu
\OpsIQ\Commerce\CommerceEventContract::upsertSaleRow('opsiq_sales_events', $row);
Stejný prodej, mnoho akcí

fakturace. paid, payment. complete and sale. comple. filled for one facto share one finger and update one row.

Náhrady zůstávají oddělené

Peníze jít ven je jiný fakt než peníze přicházejí. Vrácení faktury si udržuje svou vlastní identitu, takže nikdy nemůže přepsat platbu se obrátila.

Bez odkazu, bez otisků prstů.

Řádek bez objednávky, faktury, předplatného nebo servisu nemá žádný otisk prstu vůbec, takže dvě nesouvisející řádky se nikdy nesrazí jen proto, že oběma chybí ID.

Referenční precedence

invoice_ref, pak order_ref, pak subscription_ref, pak service_ref — Nejsilnější první, takže jeden prodej udržuje stabilní identitu.

Účetní kniha je pouze dodatek: nikdy nepřepsat prodej

Náhrada, zrušení nebo oprava je nová položka s datem. Nikdy zmutovat řádek opravuje. Přepsání platby do náhrady vypadá uklizeno a rozbije tři věci najednou:

Ničí hrubé příjmy.

Hrubá míra prodeje a náhrady se již nedá oddělit - a sazba náhrady je metrická, o níž lze informovat.

Zapisuje si zvrat ve špatném období.

Březen vrácení z lednového prodeje musí snížit březen. Přepsání ledna řádek tiše přestavuje uzavřené období.

To prolomí auditní stopu.

Zápis do knihy zaznamenává, co se stalo v určitém okamžiku. Opravy jsou kontra- entry, což je způsob, jak dvojí-entry účetnictví funguje po dobu pěti století.

Takže konektor hlásí spíše zvrat než jej použít: návrat refunded_at a refund_amount vedle vlastního životního cyklu prodeje, a nechte volající napsat náhradu jako vlastní řádek datovaný při vrácení peněz. Oba se nikdy nesrazí, protože otisk prstu odděluje návrat z prodeje.

💡
Stejný princip platí pro částky. Neopravujte "uloženou částku" na aktuální hodnotu platformy: faktura vypořádaná z účtu úvěr legitimně zaznamenal 0 v platební době, a peníze byly zaznamenány již při zákazníkovi doplněné. Obnovení nominální hodnoty počítá to dvakrát.

Smlouva o klasifikaci

OpsIQ rozhoduje o životním cyklu jednou, in \OpsIQ\Commerce\SaleLifecycleClassifier. Konektor prohlašuje pouze, který z vlastní platformu slova znamenají co, prostřednictvím provádění \OpsIQ\Connectors\SalesLifecycleConnectorInterface::salesLifecycleVocabulary(), a pak volá sdílený klasifikátor. Nereimplementujte uvažování.

Vyhlásit slovní zásobu, delegovat rozhodnutí
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 je pevná a sdílená: explicitní, pak vracené / zrušené, pak úvěr, pak upgrade, pak is_order, pak opakující se, pak akvizice, pak neznámé. Upgrade sedí nad kontrolou objednávky, protože platformy zvýšit objednávku na upgrady příliš; opakující sedí pod ním, protože první faktura nového předplatného nese opakující typ linky. Na nejednoznačné non-order prodej klasifikátor opouští příjmy a mimo potrubí.

Vyhlásit celý slovník platformy

Toto je selhání, které stojí nejvíce a vypadá nejméně špatně.WHMCS konektor shodný ['hosting','addon','domain'] - seznam, který je jako kompletní. WHMCS nevydává holé Domain typ pro reálné doménové linie; emituje DomainRegister, DomainRenew, DomainTransfer, PromoHosting, PromoDomain, DomainAddon* a UpgradeVšichni propadli seznamu. unknown: 1,288 faktury, tři roky, žádná chyba a žádný log line.

Každý nový zákazník importuje svou historii přes konektor zadní vyplnění, takže klasifikační chyba nemá vliv na jeden pracovní prostor - to má vliv na každý pracovní prostor, který kdy na palubě přes tento konektor, v okamžiku, kdy se poprvé podívat na jejich potrubí. Vezměte slovní zásobu z dokumentace platformy nebo sčítání živých dat, a zápas rostoucí rodiny prefix Takže sourozence, kterého nikdo dosud neviděl, klasifikuje s příbuznými místo toho, aby zmizel.

💡
Praktická kontrola: Spočítejte, kolik vlastních řad přistane na neznámém místě. Zdravý prodejní konektor klasifikuje téměř všechno. Neustálý tok neznámého je téměř nikdy data, která nemáte - je to slovní zásoba, kterou se konektor nikdy nenaučil číst.

Opětovné uvedení importované historie

Každý dodávaný prodejní konektor OpsIQ implementuje toto — 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() pomocí jakéhokoliv per- záznamu, který již máte. tools/crm_backfill_sales_lifecycle.php pak opraví importovanou historii konektoru bez kódu per- konektoru: suchý běh ve výchozím nastavení, zálohuje se a ověřuje počet řádků před zápisem, reverzibilní přes reverzní knihu, a nikdy nenapíše neúspěšné čtení jako odpověď.

💡
Pokud váš konektor nemůže přečíst předchozí záznamy - webhook- pouze konektor ne - neotupujte metodu. Stub vrací neznámé je horší než žádná implementace: backfill by přepsat dobré řádky jako uncrised a hlásit úspěch. Zavést slovní rozhraní pouze.
💡
Podrobné odkazy na balíky zůstávají dostupné v konektorech /CONNECTOR_EVENTS.md a konektory /PLATFORM_CONNECTORS.md v autohostovaných zdrojových distribucích.
Konektory

Smlouva o události v cestovním ruchu

Cestovní zpravodajská služba přijímá jeden platform- neutrální obálka události z widget prohlížeče, built- in konektory, SaaS Bridge, Tržní balíčky a Connector Builder výstup. Platform- specifické názvy jsou přeloženy na hraně; trychtýř, přiřazení a kód Site Intelligence konzumuje pouze kanonické události.

Izolace a hranice důvěry

Přesný klíč pro doménu

Každá událost je vázána na ověřenou doménu site_key. Konektor musí vzít tento klíč z ConnectorRegister nebo jeho ověřený koncový bod, nikdy z nedůvěryhodného orgánu žádosti. Domény vedou oddělené záznamy; doména skupina je jen agregátem času read- time.

Idemopotentní identita

event_id je vyžadován pro konektory a musí být rozhodující pro stejnou událost. Retries, webháky a zálohuje aktualizaci jednu událost spíše než duplikovat cestu nebo prodej.

Původní a kanonický název

Zachování source_event_name pro důkazy a řešení problémů, pak map to event_name_canonicalHlavní analytika nesmí nikdy větvit na konektoru slimáku.

Důkazy serveru vyhrávají

Pozorování prohlížeče může spustit nebo infer cestu. Autentizované konektorové události potvrzují signup, přihlášení, platby, nákup, obnovení, vrácení a další terminály výsledky. Platný srovnávací token je nejsilnější spojení; neplatný token se zamítá a jeho vložené ID se nedůvěřují.

Ochrana soukromí

Odeslat pouze identifikátory a pole potřebné pro deklarovanou cestu. Respektujte souhlas, maskování a zadržení nastavení. Nikdy umístit pověřovací listiny, data karty, autentizace tajemství nebo soukromé zprávy orgány ve vlastnostech.

Kanonická obálka

Obálka události cesty
{
  "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"}
}

Kanonická taxonomie

Použijte nejužší pravdivé jméno. Podporované rodiny zahrnují zásnubní stránku / CTA události; signalizace účtu, přihlášení, MFA a resetování hesla; olovo a formy; produkt, vozík, checkout, platby, nákup, předplatné, obnovení a vrácení; propagační dojmy a konverze; help-centrum, chat a akce vstupenek; bezpečnostní události; a jmenované vlastní akce. Typické terminály názvy jsou account.signup.succeeded, account.login.succeeded, lead.form.succeeded, commerce.payment.succeeded, commerce.purchase.completed, commerce.subscription.renewed a commerce.refund.completed.

Odvozování prohlížečů, potvrzení a opuštění

Widget může fungovat bez konektoru sledováním struktury stránky, formátů akcí, výsledků návštěvníků a záznamů o cestě. Tento důkaz zůstává výslovně klasifikován jako pozorovaný nebo odvozený. Konektor přidá autoritativní potvrzení serveru a může jej korelovat se stejným pokusem prohlížeče. Opuštění je nejprve uloženo jako kandidát, bude opuštěno až po nečinnosti okno nastavené v UI a pouze tehdy, když neexistuje žádné pozdější zotavení nebo úspěch.

Přidělení a příjmy

Přiřazení preferuje platný podepsaný korelaci token, pak přesný výlet, pokus, relace nebo obchodní odkaz, pak souhlasný graf identity, a konečně ohraničený behaviorální zápas. Nevyrovnaný prodej zůstává nepřiřazen. Multi- touch Ledger váhy musí být celkové 1. Webové zpravodajství přisuzované příjmy čte tuto knihu; úvěry, peněženky top- ups, town top-up a Add fondy nejsou nikdy nákup konverzí. Připojení FX chování zůstává kontrolováno tímto nastavením konektoru.

⚠️
Model připisování, okénka pro vyhledávání, direct- traffic handling, minimální jistota, timeout opuštění a definice trychtýřů jsou UI. Kód konektoru nesmí být přísně kódovaný.

Propojovací manifest a builder

Prohlášení o jízdě spojovacího zařízení
{
  "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"
    }
  }]
}

Declare pouze schopnosti balíček skutečně přináší. Connector Builder ověřuje mapování a generuje stejný platform- neutrální adaptér používané balíčky first-party. Cesta požití přijímá jednu událost nebo ohraničenou dávku 100 prostřednictvím generované ověřené integrace endpointu.

💡
Obchodní kniha zůstává finančním zdrojem pravdy. Commerce- to- travel bridge zveřejňuje server- potvrzené výsledky a smíření přiřazení po existující idempotent knihy nahoru, takže jedna platba nikdy se stává dva prodeje.
Konektory

Jak akce AI fungují

Každý konektor prohlašuje řadu akcí: věci, které může AI dělat přes vnější platformu. Akce jsou mostem mezi "AI říká" a "AL dělá".

Akce v oblasti AI
Jak akce AI fungujíZákaznický požadavek zmapován na delete- type akční karty, pak kontrolní seznam: ověřeno povolení, potvrdíte, API volal.Jak akce AI fungujípracovní prostor"Zrušit předplatné"zákazníkAIcancel_subscriptiondeletepotvrďte požadovanéparams: subscription_id (z kontextu)AKČNÍ TYPYreadpsátdeletePovolení & kontrola rolePotvrdíte akciAPI volal · hlášené výsledky1DECLAREDKaždý konektor uvádí akce2GATEDPovolení + potvrzení3THEN RUNAPI volání, výsledek zpět
Žádost se stává deklarovanou akcí (zapsaný čtení / zápis / smazání), která je prověřena, potvrzena, poté provedena a hlášena.

Akční životní cyklus

1
Zákazník si něco žádá.

"Zrušte můj předplatné." AI identifikuje, že to vyžaduje akci "cancel_subscription".

2
Povolení k ověření AI kontrol

Je tato akce povolena? Je povolena? Má současný uživatel správnou roli?

3
Parametry AI shromažďuje

Akce potřebuje předplatné ID. AI to vyhledá z kontextu zákazníka nebo se zeptá zákazníka.

4
Potvrzení

V případě destruktivních nebo vysoce efektních akcí žádá AI o potvrzení před provedením.

5
Provedení

Akce vyzývá k tomu, aby vnější platforma API.

6
Výsledek

AI podává výsledky zákazníkovi.

Druh opatření

Čtení akcí

Vyhledat data bez změny. Příklady: list_orders, get_customerBezpečné, žádné potvrzení není potřeba.

Čtení akcí

Vytvořit nebo upravit data. Příklady: create_ticket, update_orderMůže vyžadovat potvrzení.

Smazat akce

Odstranit data. Příklady: cancel_subscription. Vždy vyžadovat potvrzení.

HTTP akce

Vyhlášen v akci.json, generické API volání definovaná deklarativně.

Štítky způsobilosti

Volitelné pole "schopnost" v perakční oblasti actions.json, síťově neutrální třídní značka (např. "vstupenky" pro čtení / vyhledávání tipu, "ticket_create"pro otevření vstupenky). OpsIQ brany celou třídu rovnoměrně přes každý konektor: tiket čte pokles z AI, když operátor vypne AI Ticket Awailight, a vytvoření tipu je vyhrazeno pro OpsIQvlastní skladatel (takže nástroj pro vytvoření konektoru jej nemůže duplikovat). Declare it a váš konektor conforms. OpsIQ nikdy nemusí znát vaše akční jména. Konstruktér konektoru ji vystavuje jako kapitulaci schopnosti na akci.

Kodex činností

Implementovaný v PHP ve třídě konektorů. Plná kontrola nad logikou.

Příklad definice akce
{
  "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" }
    }
  }
}
Konektory

Vybudovat konektor

Konstrukční konektor umožňuje vytvořit kompletní konektor pro jakoukoli platformu se REST API. Pro základní konektory není nutné žádné kódování.

Vybudovat konektor
Tvorba konektorůNekódový konektor: název, typ auth, základní URL, mapování akce, průchozí test a tlačítko publikovat.Tvorba konektorůpracovní prostorTvorba konektorůNázevMoje platformaAuthCity in New York USAOAuth 2.0(PKCE)Základní URLhttps://api.example.com/v2AkceGET/customers → seznam zákazníkůZkouška prošlaKonektor balení1NO-CODENázev, auth, base URL2ANY APIKey, Nosič, Základní, HMAC, OAuth3PUBLISHInto /connectors/<slug>/
Bod stavitel v jakémkoli REST API. Set auth, base URL a akce, otestovat, a zveřejnit pracovní konektor. Žádný kód není potřeba.

Kompletní poskytovatel API pokrytí

Každý generovaný API konektor může odhalit samostatné Native API Čtení a domorodé API Psaní akce. Kurátované akce zůstávají preferovány; Nativní akce pokrývají poskytovatele koncové body přidány později. runtime podporuje REST, GraphQL, JSON, formulář, XML, surové a vícedílné subjekty, ohraničená paginace,API-Verze hlavičky a idempotence při zachování pověřovacích listin uvnitř nastavení konektoru pracovní plochy.

⚠️
Obchodní balíčky jsou vyráběny z /marketplace_connectors stejně jako svázané /connectors. Zvyšte verzi balíčku, regenerujte smlouvu a dokumentaci, spusťte konformní testy, pak se znovu podepište a publikujte novou verzi Marketplace.

Průvodce spojovacím zařízením

Průvodce má šest kroků, zobrazeny jako karty přes horní. Můžete skákat mezi nimi volně, a Uložit návrh v podnose si udrží svou práci kdykoliv.

1
Totožnost a profil

Název, slimák, popis a ikona, pak vyberte profil smlouvy: Standard API, Commerce, Helpdesk, Mailbox, Site Intelligence, SaaS Bridge, Local PHP Platform, nebo Platforma bez API když platforma neslouží nic volatelného a OpsIQ musí nainstalovat most. Profil vybere kompletní výchozí bod schopnosti; stále můžete nastavit jednotlivé možnosti.

2
AuthCity in New York USA

Vyberte si ověřovací vzor platforma používá a vyplňte její pole. Zde zadejte i skutečné testovací údaje: jsou použity pro test spojení na dalším kroku a po zveřejnění nejsou uloženy.

3
Zkouška

Zadejte API základ URL a ověřte koncový bod, pak spusťte zkoušku živého spojení pomocí pověřovacích listin od kroku 2. To před tím, než definujete jakékoli akce, pokud auth nebo základna URL je špatné, každá akce, kterou napíšete, by selhala ze stejného důvodu a vy byste ladili špatnou věc.

4
Akce

Definujte každou operaci: název, HTTP metoda, koncová cesta, parametry, mapování pole odezvy a nastavení spolehlivosti popsané níže. Z tohoto kroku můžete spustit každou akci individuálně proti živému API.

5
Spouštěče

Mapujte události webháku, na které vaše platforma posílá OpsIQ události, takže věci, které se dějí na platformě může začít pracovat v OpsIQ.

6
Recenze, smlouva o podnikání a zveřejňování

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>/.

⚠️
Publikace NESpustí conformance suite. Publikovat pouze validuje wizard formulář a vydává varování, které neblokují. Stiskněte Dry- run před odesláním, pokaždé.

Co publikování dělá, že formulář neukazuje

Pět chování generátoru překvapí lidi. Žádný je chyba; všechny z nich vás bude stát odpoledne, pokud se setkáte náhodou.

Jedna otázka rozhodne o průchodu: slouží platforma API?

Odpovězte v krocích.1výběrem režimu data-access (nebo "Platforma bezAPI"profil).APIrežim deklaruje native_api and emits the <slug>_api_call passthrough. Bridge mode declares platform_bridge místo toho a STRIPS native_api I kdyby ho nesl starší spektrometr, tak manifest, generovaná třída a odborné dokumenty nemohou nesouhlasit. ai_brain_aware je doplněn tak či onak.

SILENCE znamená "má API"

Stavitel následuje vaši odpověď; to nefunguje pravda pro sebe, a výchozí, když nic není řečeno, jeAPITakže ne...APIplatforma musí aktivně říci, že - vybrat "Platforma s neAPI"profil, nastavený přístup k datům na můstek nebo klíště 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.

Zkouška připojení pro GET /ping je neplatná.

Pokud necháte ověřenou cestu prázdnou, Builder píše /ping do generovaného konektoru a do profilu.jsontestovací blok. Téměř žádná skutečná platforma slouží této trase, takže Test Connection selže s HTTP404na každé instalaci a čte jako zákaznická chybná konfigurace spíše než vada balíčku. Nastavte ověřte si cestu, na kterou vaše platforma skutečně odpoví. Pro můstek konektor, namířit na svůj vlastní diagnostický cílový bod - to dokazuje celý řetězec v jednom volání: most je nasazen, klíč shoduje, a most může dosáhnout databáze.

Republishing stále přepisuje vaše hand- edits

Schopnosti nyní sledovat odpověď data- přístup, takže ty, které již nejsou drift. Vše ostatní generované stále dělá: editovat ContextProvider. php nebo jiný emitovaný soubor a další publikovat jej nahrazuje. Jednou chráněnou výjimkou je mostní soubor - průvodce pouze přepíše most nesoucí jeho vlastní marker, takže ručně psaný jeden je ponechán sám.

Vyhlášení smazání souborů

Un- tick schopnost a další publikovat odstraní svůj soubor poskytovatele. Hand-edits na jakýkoli generovaný soubor - ContextProvider.php především - jsou přepsány bez varování. Kopírovat přizpůsobení se nejprve, nebo převzít vlastnictví balíčku smazáním.opsiq- Stavitel.json(po kterém to čaroděj už nebude řídit).

release_status je vždy náhled

Kouzelník to nemá pod kontrolou. Balíček určený k přepravě jako produkce musí mít release_status mění rukou v settings.json — a že úprava přeruší podpis, takže přepsat poté.

Podpis dokazuje integritu, ne původ.

Balíčky pro stavební stroje jsou podepsány vlastním symetrickým klíčem této instalace. To detekuje manipulace. To nedokazuje, kdo balíček napsal, a každá instalace držící stejný klíč může produkovat stejný podpis. Zacházejte s lokálně podepsaným balíkem jako self-signed.

Srážka slimáků se kontroluje pouze v jednom stromu.

Publikace odmítá slimáka, který již existuje pod/connectors/.Nedívá se na to./marketplace_connectors/,takže ručně autorovaný balíček s první stranou se stejnou slimákem může skončit stínován.

💡
Průvodce nemá krok znalostí-autorizace. Znalostní soubor popisující platformu je generován pro vás z názvu, popisu, auth typu a akcí, které jste definovali, a je načtena do AI, když je zapnutý konektor.

Vymezení akce (krok 4)

Každá akce má následující nastavení. Jsou potřeba pouze první čtyři, kontrola zbytků, která ji může spustit a jak pečlivě.

Akční klíč a štítek

Klíčem je to, co AI volá; štítek je to co člověk čte. Klíče jsou jmenné s vaším konektorem slimák automaticky, takže dva konektory mohou mít oba "list_orders" bez kolize.

Metoda HTTP

GET, POST, PUT, PATCH nebo DELETE.

Cesta URL

Použité na základnu URL Použití {name} pro jmenovatele, například /opportunities/{id}/stage

Parametry

Pro každý parametr si také vyberete, kam se ubírá: tělo, cesta, dotaz nebo hlavička. Parametr cesty vyplní {placeholder}; parametr dotazu je připojen k parametru URL.

Mapování odezvy

Řekněte, které pole v odpovědi JSON znamená co, což je jméno zákazníka, což jsou e-maily, což představuje celkový počet objednávek. To je to, co umožňuje AI číst data vaší platformy, spíše než hádat.

Kdo to může použít?

Váš tým (admin AI), znakový-in zákazníky (zákaznický chat), a to jak, nebo psaní asistent. Zákaznické akce běží pouze pro signed- in zákazníka, a pole identity jsou uzamčeny na ně automaticky, takže jeden zákazník nemůže ptát na jiné.

Vyžaduje potvrzení

Člověk musí schválit, než akce běží.

Ničivé

Označuje akci jako vymazání nebo změnu stavu. Používá se k varování před tím, než běží.

Požadované povolení

Admin musí mít toto povolení pro AI spustit akci jejich jménem; plnou administrátoři vždy projít. Vyberte si z manage_integrations, manage_general, manage_billing, manage_sales_bridge, manage_knowledge, manage_appearance, manage_behavior, manage_permissions, manage_dangerzone, reply_to_chats, escalate_to_ticket, send_agent_emailnebo žádné, což znamená jakýkoli ověřený admin.

Popis / náznak AI

Volitelné, ale stojí za to psát. To říká AI, kdy dosáhnout pro tuto akci, například "Použijte to, když admin žádá o změnu fáze dohody." Dobrý náznak je rozdíl mezi akcí, kterou AI používá správně a jeden to ignoruje.

Schopnost

Volitelná třídní značka, buď vstupenky (přečtená nebo vyhledávání) nebo ticket_create (otevře lístek). Tagging let OpsIQ Brána celou třídu najednou, například, skrývání tiket čte, když operátor vypne AI povědomí o lístku.

Cesta seznamu

Volitelné. Pro koncové body, které vrátí seznam, tečkovaná cesta do pole, například data nebo data. položek

Chyba

Volitelné. Pole těla, jehož přítomnost znamená, že volání selhalo, například error.message, užitečné pro APIs který vrací HTTP 200 při selhání.

Spusť to.

Každá akce může být spuštěna proti živému API z tohoto kroku, takže můžete opravit špatnou cestu nebo název pole, než někdo jiný používá.

⚠️
Činy psaní jsou chráněny standardně. Jakákoli akce s použitím POST, PUT, PATCH nebo DELETE začíná vyžadovat manage_integrations povolení a lidské potvrzení před spuštěním. To je záměrné. Nová akce zápisu selže spíše než nechat AI změnit vaše data bez dozoru. Můžete změnit jak na akci, ale změnit je vědomě.
💡
Aby bylo možné volat z chatu zákazníka, akce musí být read- only: zanechat jak vyžaduje potvrzení a zničení neškrcený. Akce zákazník může spustit, že také změny stavu není něco, co průvodce vám nechá loď náhodou.

Přijímající webové háky (krok 5)

Triggers krok vám webhook URL zaregistrovat se na platformě, a ověřuje každý požadavek, který přijde na něj.

Záhlaví podpisu

Záhlaví vaší platformy značí například X-Hub-Signature-256.

Algorimus podpisu

HMAC- SHA1, HMAK- SHAB256 nebo HMAC-SHA512.

Režim podpisu

Jednoduchý, obyčejný hex nebo base64 stravič. Nebo Stripe- styl, t =..., v1 =... formát používaný Stripe a několik platforem, které kopírují.

Předpis podpisu

Volitelné. Některé platformy prefix stravič, například sha256 =. Nechte ji prázdnou, pokud vaše ne.

Mapování událostí

Mapujte každou událost, kterou vaše platforma pošle na OpsIQ událost, která by měla zvýšit.

Automatické registrace webháku

Pokud vaše platforma má API pro správu svých vlastních webháků, nemusíte zaregistrovat URL ručně. Otevřít Automaticky zaregistrovat tento webhook na zapnuto a zaměřte to na dvě z akcí, které jste definovali v kroku 4:

Tvůrce- webhook akce

Volaný, když admin umožňuje připojení. Udáte název parametru, který nese URL, volitelně ten, který má seznam událostí, a cestu v reakci, která drží ID nového webhooku.

Delete- webhook akce

Volá se, když je konektor vypnut, pomocí ID zachycené výše, takže vypnutí konektoru také zastaví platformu odesílání do mrtvého cílového parametru.

Schopnosti, které můžete zapnout

Profily a schopnosti jsou definovány smlouvou o konektoru 2.2. Generované a deklarativní schopnosti jsou vydávány přímo; schopnosti podniku generují EnterpriseExtension.php Lešení s runtime životně dlouhou elektroinstalací.

Akce

Operace AI může spustit na platformě: seznam objednávek, najít zákazníka, vydat náhradu.

Spouštěče

Přijměte webové háčky z vaší platformy a přeměňte je na OpsIQ události.

Vstupenky na AI

AI Triage a odpověď Copilot na tipech, které zůstanou na platformě. Vyberte si koncový bod, který vrátí jeden tip s jeho odpovědi a map pole; OpsIQ čte vlákno přes něj.

Poštovní schránka a kontakty

Zobrazit zákaznickou poštu na jejich časové ose, odeslat z dohody, a synchronizovat adresář do OpsIQ CRM.

Dovoz zákazníka

Stránka projděte seznamem zákazníků a importujte každý z nich jako kontakt OpsIQ. Toto je to, co běží tlačítko Import.

Kontext

Tlačte živá data z vaší platformy do každé konverzace AI.

Identita

Zjisti, který z vašich zákazníků je návštěvník, a ukaž jejich profil a nákupy na jízdence.

Prodej a vyúčtování

Přiřadit příjmy a údaje MRR do dashboardů OpsIQ.

Vstupní vstupenky

Otočit vstupenky a e-maily, které vaše platforma dodává pomocí webhooku do OpsIQ podpůrných závitů.

Odpovědi na odchozí údaje

Post OpsIQ pracovníci odpoví zpět na platformu vlákno pochází.

Uživatelé synchronních programů

Importujte své zaměstnance účty do OpsIQ admin uživatelů.

Synchronizace

Importujte své podpůrné oddělení do OpsIQ.

Zaměření promo a krmivo pro produkty

Ať Promotion Studio zaměřit na fakta víte o osobě, a dělat své skutečné produkty v povýšení.

Poskytovatel studia pro průzkum

Expose server- ověřené Zjišťování skutečnosti, unikl proměnné a ohraničené CRM Overenge příjemce stránky prostřednictvím specializovaného SurveyProvider. php. To není znovu promoční runtime.

Individuální blokování IP

Kdy OpsIQ bloky a IP, zavolejte na své platformě je vlastní blok API Takže blok je tam také vynucen.

Bezpečnostní události

Přijímáme zablokované...IP Výstražné signály od OpsIQ.

Znalosti platformy pro AI

Každý konektor, který postavíte lodě krátký odkaz popisující, co je vaše platforma a co její akce dělat. OpsIQ admin AI čte to, když je váš konektor povolen, takže rozumí vaší platformě spíše než jen vidět seznam jmen akcí. To je generováno pro vás.

Průchod API

Váš konektor vždy dostane všeobecný-účel volání, takže AI může dosáhnout koncového bodu jste nedefinovali zadaný akce pro. Použijte zadané akce, kde můžete; to je únikový poklop.

Canonical Connector Contract 2.2 odkaz

Smluvní verze: 2.4 · 57 capabilities · 8 profiles.

Profily spojovacích zařízení

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, sales_reconciliation, 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, ticket_merge, 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, sales_reconciliation, billing, inbound_ticket, outbound_reply, ticket_mirror, ticket_merge, 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, sales_reconciliation, billing, inbound_ticket, outbound_reply, ticket_mirror, ticket_merge, attachment_bridge, durable_queue, scheduled_workers, database_migrations, conflict_resolution, enterprise_hooks, admin_assets.

Kanonické schopnosti

akce

Universal actions. Capability version: 1.0. Mode: generated. Runtime methods: registerActions. Package files: actions.json.

spouštěče

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.

kontext

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.

totožnost

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.2. Mode: generated. Interfaces: OpsIQ\Connectors\CommerceConnectorInterface. Package files: SalesIngest.php.

sales_reconciliation

Scheduled sales-ledger reconciliation against the platform. Capability version: 1.0. Mode: generated. Runtime methods: reconcileSales. Interfaces: OpsIQ\Connectors\SalesReconciliationInterface.

vyúčtování

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.

obchod

Sell through chat: canonical commerce role map. Capability version: 1.0. Mode: declarative. Package files: commerce_roles.json.

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.

ticket_merge

Ticket merges applied on the platform (native merge or private transcript note). Capability version: 1.0. Mode: generated. Runtime methods: mergeTickets. Interfaces: OpsIQ\Connectors\TicketMergeConnectorInterface.

sync_users

Staff/customer synchronisation. Capability version: 2.0. Mode: generated. Runtime methods: listCustomers. Interfaces: OpsIQ\Connectors\CustomerImportConnectorInterface. Package files: SyncImport.php.

sync_departments

Department/team synchronisation. Capability version: 1.0. Mode: generated. Package files: SyncImport.php.

sync_orders

Order roster and order-event synchronisation. Capability version: 1.0. Mode: declarative. Interfaces: OpsIQ\Connectors\CommerceConnectorInterface.

sync_products

Product, catalog and inventory synchronisation. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

sync_projects

Project, issue and workspace synchronisation. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

customer_import

CRM customer roster import. Capability version: 2.0. Mode: generated. Runtime methods: listCustomers, backfillChunk. Interfaces: OpsIQ\Connectors\CustomerImportConnectorInterface.

security_events

Receive and emit security events. Capability version: 1.1. Mode: generated. Runtime methods: securityCapabilities, syncBlockedIp, removeBlockedIp. Interfaces: OpsIQ\Connectors\SecuritySyncConnectorInterface.

security_native_block

Native remote IP/CIDR blocking. Capability version: 1.0. Mode: generated. Runtime methods: syncBlockedIp, removeBlockedIp. Interfaces: OpsIQ\Connectors\SecuritySyncConnectorInterface.

survey

Survey identity, audiences, recipients and variables. Capability version: 1.0. Mode: generated. Runtime methods: surveyAudienceCatalog, surveyAudienceFacts, surveyVariableCatalog, surveyVariables, surveyRecipientPage. Interfaces: OpsIQ\Connectors\SurveyConnectorInterface. Package files: SurveyProvider.php.

reply_feedback

Ticket reply feedback mirror (platform reply ratings land via the portal write method). Capability version: 1.0. Mode: generated. Runtime methods: replyFeedbackCatalog, pullReplyFeedback. Interfaces: OpsIQ\Connectors\ReplyFeedbackConnectorInterface.

promo_audience

Promotion targeting facts. Capability version: 1.0. Mode: generated. Runtime methods: subscribers. Interfaces: OpsIQ\Connectors\PromotionConnectorInterface.

promo_feed

Promotion product/content feed. Capability version: 1.0. Mode: generated. Interfaces: OpsIQ\Connectors\PromotionConnectorInterface.

email_mailbox

Mailbox bus, outbound mail and address-book sync. Capability version: 1.0. Mode: generated. Runtime methods: emailAccounts. Interfaces: OpsIQ\Connectors\MailboxConnectorInterface.

inbound_email

Receive inbound email. Capability version: 1.0. Mode: declarative. Runtime methods: poll, handleWebhook. Interfaces: OpsIQ\Connectors\MailboxConnectorInterface.

outbound_email

Send outbound email. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions. Interfaces: OpsIQ\Connectors\MailboxConnectorInterface.

mailbox

Mailbox connector. Capability version: 1.0. Mode: declarative. Runtime methods: emailAccounts. Interfaces: OpsIQ\Connectors\MailboxConnectorInterface.

ai_tickets

AI triage and Inbox Copilot for remote tickets. Capability version: 1.0. Mode: generated. Runtime methods: loadTriageContext. Package files: AiOperations.php.

ai_reply

AI-assisted reply drafting. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

ai_brain_aware

Connector expertise supplied to Admin AI. Capability version: 1.0. Mode: generated. Package files: ai_expertise_admin.md, ai_api_reference.md.

native_api

Native API passthrough. Capability version: 1.0. Mode: generated. Runtime methods: registerActions.

platform_bridge

Signed platform bridge (for platforms with no API). Capability version: 1.0. Mode: generated. Runtime methods: registerActions. Package files: bridge/.

native_data

Local database/platform data adapter. Capability version: 1.0. Mode: declarative. Runtime methods: nativeDataProviders. Interfaces: OpsIQ\Connectors\NativeDataConnectorInterface.

crm

CRM capability provider (calendar, enrichment, telephony or customer data). Capability version: 1.0. Mode: declarative. Runtime methods: crmCapabilities. Interfaces: OpsIQ\Connectors\CrmCapabilityConnectorInterface.

block_registry

Remote sender block-registry synchronisation. Capability version: 1.0. Mode: declarative. Runtime methods: blockSender, unblockSender, isSenderBlocked. Interfaces: OpsIQ\Platform\BlockRegistryInterface.

inbound_comment

Inbound comment ingestion. Capability version: 1.0. Mode: declarative. Runtime methods: handleWebhook.

outbound_note

Outbound private note. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

outbound_notification

Outbound notification delivery. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

oauth

OAuth 2.0 authorisation. Capability version: 1.0. Mode: generated.

reviews

Review ingestion and response. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

lokální

Local search/location data. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

100 mg

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.

analytika

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.

⚠️
Specifikace stavitelů zůstávají autoritativním zdrojem. Do generovaných rozšiřujících bodů se vloží pravidla pro konkrétní platformu; životní cyklus, fronty, pracovníci, migrace a konformitní testy zůstávají řízeny.

Nastavení spolehlivosti na každé akci

Retrogy

Kolikrát opakovat neúspěšný hovor, s backoff, který zdvojnásobuje každý pokus. Pouze timeouts, 429s a 5xx chyby jsou znovu vyzkoušeny; 4xx je vaše žádost chyba a opakování by jen spálit limit sazby.

Mezní hodnota

Per- minutový strop pro tuto akci, takže rušný spoušť nemůže kladivem platformu. Nechte ji na 0 bez omezení.

Časový limit

Jak dlouho čekat na platformu, než to vzdáš.

Potvrzení

Vyžadujte, aby člověk schválil, než akce začne. Použijte ho pro cokoliv destruktivní.

Typy ověření

Krok 2 nabízí sedm vzorů. Vyberte si ten, který odpovídá platformě API dokumentace, generátor emituje správný HTTP klient pro to.

API klíč v záhlaví

Statický klíč vyslaný jako pevná hlavička, například X-API- Klíč. Dáte název hlavičky a štítek by měl být uveden admin formulář. To odešle klíč pouze jako záhlaví; pokud vaše API místo toho očekává klíč jako parametr dotazu, použijte vlastní hlavičky nebo konektor s plným kódem.

Token nosiče

Token sent as Authorization: Bearer <token>. Common for modern APIs.

Základní auth

Uživatelské jméno a heslo, zakódované do hlavičky Autorizace. Vyberte si štítky, které se zobrazí na admin formuláři.

HMAC- signed

Veřejný klíč plus tajemství, s podepsaným tělem žádosti. Dáváte hlavičku podpisu, hlavičku klíče a časovou značku, kterou vaše platforma očekává.

OAuth 2.0 (pověřovací listiny klienta)

Server- to- server, bez interakce s uživateli a bez přesměrování. Dáváte symboliku URL a volitelný rozsah; admin dodává klientovi ID a tajemství. Použijte jej, když vaše platforma vydává pověření k aplikaci, spíše než k osobě.

OAuth 2.0 (Připojit tlačítko)

Průtok autorizačního kódu s PKCE, pro Stripe, Shopify, Slack a QuickBooks- style aplikace.URL, token URL a rozsah. Po publikování, admin kliknutí Connect na konektoru, autorizuje na platformě, a OpsIQ ukládá refresh token a mints přístup žetony na vyžádání. URI se zaregistrovat ve Vašem OAuth Aplikace je zobrazena na stránce nastavení konektoru.

Vlastní záhlaví

Svobodná forma JSON mapka záhlaví pro cokoliv, co výše uvedené vzory nepokrývají, například {"X -API- Klíč:{api_key}"," X- Tenant ":"{tenant_id}". Každé místo se stane polem na administrátorském formuláři.

💡
PKCE se vztahuje pouze na tok tlačítka Connect- button. Průtok klient- putentations nemá žádný přesměrování a žádný uživatelský krok, takže PKC se na něj nevztahuje.

Styly pro zobrazení

Offset

Používá parametry ofsetu a limitu. Příklad:? ofset =100& limit =50.

Strana

Uživatelské číslo stránky. Příklad:? page =3&per_page=50.

Kurzor

Používá kurzor z předchozí odpovědi.

Záhlaví odkazu

Používá hlavičku odpovědi Odkaz s rel = "next".

Advanced: vlastní PHP kód

Connector. php RETURNS instance. Neprohlašuje, že pojmenovaná třída, která OpsIQ loví. Názvy metod níže jsou ty, které Connectore Interface vyžaduje; dostat jednu chybu je smrtelné při zatížení, ne varování.

connector. php - skutečná smlouva, minimální a runnable
<?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.

Zrcací lístky do systému vstupenek

Pokud je vaše platforma vlastní jízdenku, zrcadlit ji do OpsIQ z vašeho konektoru pomocí vstupenky nejpozřít pomocník váš konektor zdědí (vytvořit pro nový tip, add- odpověď na follow- up). Emit a přihlásit se k univerzálním událostem tipu ve vašem konektoru subscribers() metoda, ticket.created, ticket.replied, ticket.updated, ticket.deletedAutomatické odpovědi, eskalace, SLA a CSAT všechny hákovat stejné události, takže je dědíte bez dalšího kódu.

Pokud se s tím vypořádáš ticket.deleted- Ty taky zvládáš sloučení. Smazání jízdenky se sloučí merged_into a není zaslán do konektoru, který prohlašuje ticket_merge; sloučení dorazí jednou jako ticket.merged místo toho, abyste se mohli sloučit na platformě, spíše než uzavřít sloučený tip tam. Viz Schopnost sloučení vstupenek (Smlouva 2.4).

Řekni, kdo napsal úvodní zprávu

Lístek je vždy pro zákazník, ale úvodní zpráva může být napsána Zaměstnanci: agent otevírající vstupenku na účet zákazníka, nebo oslovení proaktivně. Každý helpdesk podporuje, takže je součástí univerzální ticket.created kontrakty spíše než něco, co každý konektor řeší soukromě.

author_type

klient (přednastaveno) nebo admin. Vymiť to a zákazník je předpokládán.

author_id

Personál id když author_type = admin. Nikdy zákazník ID.

author_name

Agent nebo oddělení, jméno na displeji.

author_email

Adresa agenta. Nikdy zákaznický. Zpráva zaměstnance pod e-mailem zákazníka je chyba v hlášení a auditu.

Tohle není kosmetické. Spotřebitelé čtou author_type - Je to pracovní úvod, který je hlášen jako client opustí autoodpověď způsobilá odpovědět na zprávu, kterou napsal váš vlastní agent, a dělá z vaší platformy echo tohoto otevření vypadat jako čerstvé zákaznické zprávy, které pak přistane jako duplikát a přehodí lístek na zodpovězeno. Mapujte signál platformy na něj v konektoru normalizátor událostíNikdy u spotřebitelů.

Centralizované blokování

Když agent zablokuje odesílatele, to platí napříč všechny kanál okamžitě (e- mail, chat, portál, widget a každý konektor twin), protože blok je vynucen centrálně, před každým konektorem vidí zprávu. Váš konektor zdědí ji tím, že nedělá nic. Neexistuje žádná vstupní práce k realizaci a žádný způsob, jak to špatně.

Pole volitelné je směrem ven: když je váš zákazník zablokován zde. Provést jej pouze tehdy, pokud vaše platforma může vyjádřit něco ekvivalentního.

schopnosti ()

Musí obsahovat block_registry A třída musí implementovat BlockRegistryInterface. Vlajka je nárok; rozhraní je záruka. Registr vyžaduje obojí.

blockSender($b)

Přijme druh (email|doména|ip), hodnotu, důvod, admin_id, expires_at, site_key. Vrátí [výsledek, detail?, vzdálený_ref?].

unblockSender($b)

Odblokování něčeho, co nikdy nezablokované není chyba.

isSenderBlocked($b)

Pro usmíření, takže drift je hlášena spíše než objeven zákazníkem. Vrací [výsledek, zablokován?].

Hodnoty výsledků

Dobře.

Aplikováno na platformě. Zahrňte remote_ref, pokud máte ID stojí za záznam.

noop

Už v požadovaném stavu.

unsupported

Vaše platforma nemá žádný rovnocenný koncept.

selhalo

Mohl jsi to udělat a pokazilo se to.

Pokles je správná odpověď. Mnoho platforem nemá "blokovat tento odesílatel" koncept a nabízejí pouze zavěšení na účet, který zastaví fakturaci, přihlašovací údaje a služby spíše než jen podporu pošty. Mapování "agent zablokoval spam adresu" na "zavřít účet tohoto klienta" by jeden chybným kliknutím blok ukončit službu platícího zákazníka. Pokud je to jediná páka máte, vrátit unsupported a nech to být.

Uvedení do provozu zahrnuje rovněž případ, kdy nástupiště může udělat to, ale nenechá vás. Zkontrolujte, zda API, není funkce: páka, která existuje pouze v platformě admin UI je páka váš konektor nemá.

Pracovní příklad · Zendesk (referenční provedení)

Čtěte connectors/zendesk/connector.php alongside this. It is short, and every branch below is a decision you will face too.

E-mail → ok

NÁKLAD /api/v2/users/{id} s pozastaveným = true. Nové žádosti odloženého uživatele se odkloní od Pokladných vstupenek namísto otevření jednoho, skutečně stejný nápad jako blokování odesílatele, a nezastaví žádné fakturace, protože Zendesk koncoví uživatelé nemají žádné. Vrací uživatelské ID jako remote_ref.

domain → nepodporované

Zendesk může pozastavit celou doménu, ale pouze prostřednictvím pozastavení: klíčové slovo v blocklist centra textarea, a ne API píše, že pole. Funkce existuje, páka nemá.

ip → nepodporované

Žádný blokáda IP neexistuje.

neznámá adresa → noop

Zendesk nemůže předem pozastavit adresu, kterou nikdy neviděl. Nic, co dělat, není selhání, a místní blok stále zastaví jízdenku.

agent nebo admin → nepodporovaný

Odvolaný personál by zablokoval kolegu mimo helpdesk. Adresa personálu dosahující blocklist je mnohem pravděpodobnější, že chyba než instrukce, zkontrolujte roli, než budete jednat na to.

Ta poslední řada je ta, která stojí za kopírování. Smlouva nemůže zastavit mapování bloku na něco destruktivní, takže každý konektor se musí rozhodnout sám o tom, co bude odmítnout. Odmítnutí hlasitě, s detail operátor umí číst, a je lepší než poslouchat.

Hlaste se upřímně. Všimněte si, jak málo z těchto řádků jsou ok. To je správný výsledek, ne mezera: doménový blok stále funguje (je vynucován v jádru okamžiku, kdy je napsán); to prostě nemůže být zrcadlem směrem ven. ok pro něco, co jste neudělali by říct operátor blok dosáhl své platformy, když nikdy opustil OpsIQ.

Pravidla

Místní blok vždy vyhraje.

Je psáno, než budete povoláni a stojí cokoliv vrátíte. Nemůžete zabránit operátor blokování někoho.

Nikdy neházej.

Házení je zacházeno jako nepodporované a zaznamenané. Návrat selhal s detailem místo toho, aby důvod přežil.

Buď idempotentní.

Stejný blok může být vyhlášeno vícekrát.

Rychle se vrať.

Fan- out je synchronní s operátorem kliknutím. Laťka pomalá práce spíše než držení požadavku otevřené.

Nevolej zpátky.

Nikdy se nevracejte do OpsIQ z vašeho handleru. Registr přeskočí původní konektor, ale druhý hop by smyčku.

Každé oznámení je napsáno opsiq_block_registry_log (provoz, druh, hodnota, důvod, admin, původ, konektor slimák, výsledek, detail a časový údaj) tak operátor může vidět blok dorazil z vaší platformy spíše než od agenta, a to, co každý konektor udělal s ním.

Tlačit správně

Ruka a attachments pole pro vytvoření ()/addReply(). Každá položka obsahuje soubor v jednom ze tří tvarů:

content_b64

Základ RAW souboru bytes, použít pro soubory za auth (většina přilétá případů). OpsIQ dekóduje a re- hostí soubor pro vás. Nejpřenosnější tvar.

url / source_url

Veřejná https URL (např Zendesk content_url). Musí být https; projde SSRF / allowlist kontrolu před tím, než je uložen.

stored_path

Uložený odkaz na soubor, který jste již napsal (co nativní skladatel uploader produkuje).

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 pouze názvy souborů (ne bytes), takže spolehlivý příchozí vzor je: přečtěte si bajty, kde váš kód již běží (uvnitř platformy, nebo z webhook užitečné zatížení), base64 je, a poslat je jako content_b64 na akci.

Odjezd (OpsIQ → vaše platforma). Když agent připojí soubor, ticket.replied payload vám dá soubory odpovědi jako stored_path položky v rámci OpsIQ Sklad souborů. Přečtěte si je a zatlačte ve svém formátu platforma, a zkontrolujte dokumenty platformy, enkódování záležitosti: WHMCS chce base64_encode(json_encode([[name,data]])) (JSON, není serializovat); Zendesk nahrává surové byty na /uploads.json pro symbolické pak soupravy comment.uploads; Gmail posílá vícedílné / smíšené RFC-822 zprávy na základě 64url- kódované raw; Amazon SES inbound attachments need the S3 receive action (the SNS path caps at 150 KB).

Vzdálené platformy: API + webhook, nikdy žádné jiné tabulky aplikace

Pokud je vaše platforma je oddělená aplikace nebo databáze (hostil SaaS, vzdálený WHMCS, jiný DB na stejném serveru), nikdy nepište jeho tabulky přímo: cross- databáze psát přistane na jakékoli spojení je aktivní a tiše chybí skutečné řádky. Vždy: směrem ven = volejte podepsané FREST API (odpovědi, status, oddělení, smazání); příchozí = platforma POST podepsaný webhook, váš handleWebhook() ověřuje to a vypálí odpovídající ticket.* událost. Chcete-li zastavit zrcadlovou smyčku, označte to, co stisknete značkou původu (např. mirror_origin:'opsiq'); platforma echokuje to na webhooku a váš příchozí ovladač přeskočí své vlastní ozvěny. Zkontrolujte OpsIQEvents::isMirroredEvent() na vrcholu každého manipulátoru.

Stav zrcadla, priorita a oddělení

Odpověď automaticky posune stav, Agent Odpověď → answered, a zákazník Odpověď → customer_reply; zrcadlit to stejným způsobem. Pro explicitní změny se přihlásit ticket.updated a číst payload['changes'] (např. {status:'closed'}).

Stav: OpsIQ je kanonická sada open, customer_reply, answered, in_progress, pending, closed. Udržet malou dvoucestnou mapu na slovní zásobu vaší platformy, a ujistěte se, že váš sloupec skutečně přijímá hodnoty, které píšete ( ENUM chybějící hodnota se tiše snižuje na prázdné některé databáze). Oddělení: Oddělení OpsIQ je na vaší straně bezvýznamné, Nikdy to neposílej.. Pošlete deskriptor (name, email a slug) a vyřešit to proti svým vlastním oddělením e-mailem → název → slimák, takže "oddělení účtování" přistane v Vaše Oddělení účtování místo obecné. Spustit na obou ticket.escalated a department_id změna ticket.updated.

💡
Stav / priorita / předmět / oddělení / smazání zrcadlení je regulováno per- konektory (mirror_status_changes, mirror_priority_changes, mirror_subject_changes, mirror_department_changes, mirror_deletes) číst prostřednictvím sdílené OpsIQ\ Connectors\ MirrorOptions pomocník. Vložen, že blok ve vašem settings.json a každý knoflíkový konektor čte přepínače identicky.

Propojte jízdenku na produkt / službu

Pokud si zákazník zvolil konkrétní produkt při otevírání vstupenky, označte nápovědu, aby agent viděl cílenou servisní kartu (s jedním kliknutím "zobrazit jiné produkty" modal pro zbytek).

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

Kód platformní služby, např. WHMCS S396 (služba396) / D11 (doména11). OpsIQ rozkládá volitelné písmo typu + id a odpovídá vašemu servisnímu seznamu, s typovou stráží, takže kód domény nikdy neodpovídá produktu stejné ID. Vystavuje odpovídající ref na každé službě pro přesný zápas.

related_domain

Název domény; je porovnáván jako podřetězec s detaily / doménou každé služby.

💡
Vytvořit seznam příloh jednou, ve tvaru výše, a OpsIQ zbytek: hostuje URLs jsou předávány a obsah base64 je uložen a rehostován pro vás. Nikdy nemusíte psát per- platform zpracování souborů.
⚠️
Akční klávesy jsou malá písmena, číslice a podtržení.3do80znaky a také umožňuje tečky; akční obchod přijímá2do100znaky bez bodů, takže držet se písmen, číslic a podtržení a uspokojíte oba. Přidání akce nevytváří žádnou AJAX cestu, takže není nic k regeneraci - re- uložit konektor a je synchronizován.

Nech to postavit AI.

Nemusíte vyplnit šest kroků v ruce. Popište konektor ve svých vlastních slovech a OpsIQ je AI návrhy celou specifikaci, běží to přes stejný validátor průvodce používá, a ukazuje vám plán před něco je napsán na disk. Existují dvě místa, aby to, a produkují stejný balíček.

V kouzelníkovi

Otevřít Spojky→+ Přidat konektor→Stavební konektor. Na kroku 1 uvidíte ✨ Postavte to pro mě. Napište, k čemu je konektor - plošina, coOpsIQby měl číst a co by měl psát, a kdo ho používá - přidatAPIKořen, pokud to víte, a stiskněte to. Průvodce vyplní každý krok z návrhu, a budete přezkoumávat a upravovat přesně, jako by jste napsali to.6stejný panel se objeví jako ✨ Upřesnit s AI, takže můžete požádat o změnu ("také číst faktury") místo editace polí.

Ptáním se Ptate OpsIQ

Otevři Zeptejte se OpsIQ Kopilot kdekoliv v admin a říct, co chcete. Nikdy nemusíte jmenovat akci nebo vědět, že čaroděj existuje.

1
Ptej se po něm.

Například: "Postavíme konektor pro Trello. Mělo by to seznam mých tabulek a seznamů, číst karty, a vytvořit kartu na palubě. Trello používá API klíč plus token." Kopilot odpoví ve větě a zobrazí se Návrh tohoto konektoru Vaše zpráva je stručná, takže dejte platformu, čtení a píše se v ní.

2
Potvrdit návrh

Nic není psáno. Kopilot navrhuje specifikace, validuje ji, a odpovídá s plánem: co konektor dělá, akce, které odhalí (píše označené), předpoklady, které učinil, a otázky, které stále musíte odpovědět - obvykle které pověření k dodání. Návrh je zaparkován pod ID a zůstává k dispozici pro 24 hodiny.

3
Řekni "postavit"

Kopilot ukazuje... Budovat card naming the connector and its slug. This one writes: it publishes the package into /connectors/<slug>/. Confirm it and you get the path back, together with the setting you still have to fill.

4
Zadejte údaje a povolit

Nový konektor je publikován, ale NEPOVOLENO, a nemá žádná tajemství. Otevřete jeho nastavení, zadejte klávesu API nebo token, stiskněte ZkouškaTak... PovolitDokud to neuděláš, nic to nedělá.

💡
Obě karty potřebují vaše kliknutí. Návrh krok nic nepíše, krok build je označen destruktivní a vždy se ptá. AI nemůže zveřejnit konektor, povolit jeden, nebo zadat kreditní sám.

Co je a není AI dovoleno dělat

Validátor je zeď.

Vypracovaná specifikace prochází přesně stejným potvrzením (), které používá tlačítko Wizard 's Publish. Pokud neprojde, je AI dána chybám a zkouší to znovu, až třikrát, a pak odmítne ve vlastních slovech validátora. Návrh, který selže, se nikdy nestane balíčkem.

Nepíše žádné doklady.

Návrh pojmenuje autentizační vzor a pole nastavení; nikdy nevynalezne klíč, token nebo tajemství. Ty vyplníte později na stránce nastavení konektoru.

Odpovědí na otázky, ne dohady.

Cokoliv, co by nemohla vědět - váš účet ID, který region, který ze dvou cílů váš plán odhaluje - se vrací jako otázka na plánu spíše než tichý předpoklad.

Vymyšlený cílový parametr hlasitě selhává.

AI se říká, že nikdy nevymýšlejí cesty, ale žádný model není dokonalý. Špatná cesta vydává jako činnost, která neprojde zkouškou na kroku Akce nebo poprvé, kdy běží - nikdy to není tichý úspěch.

Balíček je obyčejný

To, co produkuje, je normální balíček Builder: stejné generované soubory, stejná smlouva, stejný podpis, editovatelné v průvodce, vymazatelné ze stránky Connectors. Neexistuje žádný samostatný "AI konektor" druh.

Váš model dělá náčrtek.

Kvalita následuje podle modelu, který jste nastavili v Nastavení → AI. Malý, levný model navrhne správný, ale jednoduchý konektor a položí více otázek; silnější model dostane větší z koncových bodů správně poprvé. Změňte ho v konfiguraci AI; nic jiného se nemusí měnit.

⚠️
Kopilot může spustit pouze akce, které tato instalace skutečně zaregistrovala. Pokud činnosti Connector Builder chybí - plán, který nezahrnuje je, nebo roli bez manage_connectors - to říká kopilot, místo aby nabídl kartu, která by selhala, když kliknete.
Konektory

Prodávat prostřednictvím chatu: obchodní mapa

Konektor, který může prodávat - skladovací platforma, rezervační systém, platební brána - prohlašuje, který z jeho vlastních operací odpověď OpsIQje kanonické obchodní role. Declare to a konektor se objeví pod Nastavení → Klientský chat → Prodávat prostřednictvím chatu automaticky; přestat deklarovat a zmizí. Není žádný seznam k registraci na.

Soubor: commerce_roles.json

Prohlášení žije ve svém vlastním souboru na kořenovém balíčku - Přítomnost spisu je tvrzeníNemůže žít v connector_contract.json: tento soubor je regenerován balícími nástroji a jeho schémata odmítá neznámé klíče, takže ruční přidaný blok by selhal a pak byl přepsán.

commerce_roles.json
{
  "commerce": {
    "roles": {
      "catalog_search": { "operation": "acme_search_products", "transport": "http" },
      "customer_lookup": { "operation": "acme_customer_lookup", "transport": "http" },
      "quote":          { "operation": "acme_quote_order",     "transport": "http" },
      "payment_methods": { "operation": "acme_payment_methods", "transport": "http" },
      "order_get":      { "operation": "acme_get_order",       "transport": "http" },
      "order_create":   { "operation": "acme_create_order",    "transport": "http",
                          "recovery": "acme_get_order" }
    },
    "customer_ordering": {
      "enabled": true,
      "version": 1,
      "mode": "direct_order",
      "audience": "clients_only",
      "account_flow": "existing_client",
      "payment_flow": "connector_methods",
      "identity_parameter": "external_customer_id",
      "quantity_parameter": "quantity",
      "label": "Acme Store",
      "checkout_hosts": [],

      "transaction_kind": "purchase",
      "decision_mode": "immediate",
      "payment_timing": "on_confirmation",
      "reversibility": "reversible",
      "cancellation_flow": "platform_only",
      "fulfilment_presence": "remote_delivery",
      "notify_flow": "platform_automatic",
      "customer_fields": {"name": "required", "email": "required", "address": "required", "phone": "optional"},
      "client_tools": ["catalog_search", "catalog_get", "quote"],
      "account_timing": "before_quote"
    }
  }
}

Pravidla, a proč každý existuje

Role jsou zavřená slovní zásoba

OpsIQ nikdy nepřináší roli z názvu akce. Nedeklarovaná role neexistuje - vyhlášení je celá smlouva.

Operace musí být jedním z vašich činů.

Každá mapovaná operace musí existovat ve vašem actions.json. Psaní prohlašuje schopnost, která nemůže běžet, a to se ukazuje na zákazníka jako "Mohu zkontrolovat, že pro vás" následuje nic.

Čtená role nikdy neukazuje na destruktivní operaci.

Přečtěte si role (katalog, dostupnost, citace, vyhledání objednávky) musí mapovat na operace, které nic nemění na platformě.

Psaní role nikdy mapuje na obecné nahrávací operace

Mapování order_create na syrovou tabulku vložka - record.create, db.insert, recordCreate, Každý pravopis, jakýkoli oddělovač - je zamítnut strukturálně. Řádek napsaný přímo obchází vaše platforma je cenová, uzamykání zásob a potvrzení pošty, produkující objednávku váš vlastní systém není plně věří v.

Zápis prohlašuje operaci obnovy

Idempotentní vyhledání, které odpovídá "napsal můj pozemek?" Nejnebezpečnější timeout je ten, po platformě může již vytvořit pořadí; bez vyhledávání zotavení jsou jediné možnosti, jak znovu zkusit slepou nebo ztratit.

Úkoly platby, které jsou předmětem poskytnutí, nesou tři dodatečné povinnosti

Balíček, který hovoří přímo s poskytovatelem plateb, musí také prohlásit payment_profile (měny, země, metody a životní prostředí - neuvedeno prostředí je, jak se testovací integrace trvá živé platby), webhook_verify (režim skutečného podpisu poskytovatele; obecné srovnání se zamítá) a event_map (Provider akce na kanonické ty). Obchodní konektor, který pouze implementuje record_payment přijímá již ověřené kanonické platební důkazy; nesmí předstírat, že je brána.

Vyhlásit, jak si zákazníci mohou objednat z připojeného obchodu

Obchodní konektor a payment- gateway konektor jsou různé smlouvy. Objednávka zákazníka v připojeném obchodě, Vyberte nejhlubší režim platforma může prokázat. Volba je zabalena uvnitř podepsaného commerce_roles.json; Store and Client Chat jej přečte v době provedení. Odstranění role nebo vyřazení / odstavení konektoru proto zneplatňuje předem vydaný návrh namísto toho, aby se opozdila zastaralá autorita.

catalog_only

Mapy catalog_search nebo catalog_get. OpsIQ může hledat a vysvětlovat produkty, ale nemůže ukázat spustitelný objednávky nebo potvrzení pokladny. Každý balíček zůstává v tomto pravdivém default, dokud jeho vlastní tištěné citace a Checkout / objednávky akce projít hlubší smlouvu a Marketplace certifikace; nikdy nezískávat transakční podporu z názvu platformy.

platform_checkout

Také mapy quote a platform_checkout. Obchodní akce - ne OpsIQ jádro - vrací checkout_url, checkout_reference a kanonický citát. URL musí být HTTPS, jeho hostitelské jméno musí odpovídat customer_ordering.checkout_hosts nebo HTTPS hostitel odvozený od checkout_host_setting, a citát může žít maximálně15minuty. Produkt permalink, lokálně sestavený košíkURLnebo návratURLnení obchodní pokladna.

direct_order

Také mapy quote, order_create a order_get, s order_create.recovery. Jádro obnoví citát bezprostředně před provedením, dodává idempotency klíč, a žádá o obnovu operace po každém neznámém výsledku před jakýmkoli reexecution. payment_flow=opsiq_gateway, musí navíc mapovat record_payment s autoritativní operací recovery / read- back. OpsIQ aktivně ověřuje vstupní transakci, shoduje se množství, měna, obchodní a objednávky reference, píše odkaz poskytovatele jednou, pak čte obchodní fakturu / objednávku zpět. A mark_invoice_paid Status toggle je zamítnut, protože neobsahuje žádné platební důkazy. Vytvoření akce musí použít vlastní cenové, akciové a objednávkové obchodní logiky platformy; surové databáze se zamítají.

Ověření totožnosti a to, co provozovatel může změnit

Pokud OpsIQ vlastní platbu, musí zákazník chatu dosáhnout email_otp před vytvořením řádu -OpsIQe-maily a6- číselný kód a žádá o to. To není něco, co konektor rozhodne, z; je to podlaha záruky provedení jádra požaduje pro order_create.

Jediná výjimka, a kdo ji ovládá

Provozovatel může přijmout neověřenou adresu pouze tehdy, pokud váš konektor prohlásí fulfilment_presence: customer_present. Hotelový host musí přijet, takže špatná adresa přesměruje účtenku a pokoj je stále tam. Declare remote_delivery - dodáno, zásobováno, staženo - a ověření je vyžadováno bez ohledu na to, co operátor nastavuje, protože hodnota ponechává sílu této adresy sama. Nastavení minimum_assurance nebo reversibility: irreversible také odstraňuje schopnost operátora ji přeskočit.

Jak dlouho ten kód trvá

30 minut ve výchozím nastavení, operator- konfigurovatelné od5minut do24hodin. Zákazník vidí živé odpočítávání vykresleno jejich vlastní Časová zóna, ne operátor. Prošlý kód to říká jasně a nabízí nový spíše než hlášení neplatný kód - zákazník psaní korektního-ale-starý kód neudělal chybu, a říct jim, že mají poslat je kolem stejné smyčky.

Co musí zákazník poskytnout: customer_fields

Jméno a e-mail jsou vždy nutné a shromažďovány jako první. Declare address, phone a company as required nebo optional aby se obchod: obchod, který přepravuje balíky prohlašuje adresu požadovanou; hotel prohlašuje, že je potřeba telefon, protože host nemůže volat nemá rezervační kontakt. Asistent se o ně ptá v rozhovoru před citací, a OpsIQ odmítá zadat objednávku, která postrádá požadované pole. Stavitel píše normalizovanou mapu ven, základní včetně, takže smlouva na disku je explicitní.

Po vytvoření účtu: account_timing

at_order (přednastaveno) nechá zapisovat objednávku vytvořit první-time kupcův účet. Declare before_quote když vaše platforma ceny na účet -WHMCSdaně podle vlastního profilu klienta a citace v měně klienta - aOpsIQvytvoří účet prostřednictvím vašeho customer_create akce, jakmile jsou požadovaná pole známa, pak se zeptá na citaci tohoto účtu, takže potvrzení karty nese celkový počet budete skutečně fakturovat. account_flow: connector_signup.

Asistent se nečte: client_tools

S Vytvořit objednávky na, asistent nikdy číst vyplněný katalog. Říká tři nástroje - commerce_catalog_search (prázdný dotaz je přehled rodin výrobků; výsledky za limitem jsou uvedeny podle názvu), commerce_catalog_get pro jednu položku v plném rozsahu a commerce_quote, který mints podepsanou potvrzovací kartu server- side přes stejné stěny spojovací cesta vždy měl. Jeden nástroj na sloveso, váš konektor jako parametr, takže obchod se šesti konektory dostane tři nástroje, spíše než osmnáct. client_tools omezuje výchozí; absence znamená každý mapovaný, a catalog_only konektor nikdy neuvozuje. Potvrzení není nástroj: tlačítko karty na webu, přesné CONFIRM Příkaz na kanálu, a nic, co model říká utrácí peníze.

Co by měl váš katalog obsahovat

id, name, zákazník- safe summary, a category nebo rodina výrobků (takto slovo zákazníka najde položku, jejíž jméno je kód), currency, unit_amount_minor, availablea input_schema pojmenování polí, které objednávka potřebuje. Hledání boduje slova zákazníka proti názvu, rodině, cyklu a shrnutí.

Odmítnout s důvodem, proč zákazník může jednat na

Návrat {"success":false,"error":"…","missing":["domain"],"retryable":true} když hodnota je špatná nebo chybí. Odmítnutí, že názvy missing nebo retryable doslovně se dostane k zákazníkovi; holý výpadek zůstává obecný, takže žádné vnitřní úniky.

Geo měna a nouzová zastávka

Když operátor zapne Geo měnu (Klient Chat → Behaviour), zákazník čte ceny ve své vlastní měně na každém povrchu - chat text, web karta, kanál textová karta a úložná měna - pomocí platformy vlastní FX obchod. Vaše cena není nikdy nahrazena: karta ukazuje návštěvník je údaj vedle obchodu celkem, a brána zpracovává přesně množství, které zobrazuje. Zastavit prodej (Nastavení → Commerce) je vypínač: katalog, citace a look- ups zůstat otevřené; navrhování a potvrzení zastavení na každém kanálu.

Když se prodává přes chat se nechová

Obchodník nemohl být dosažen

Pečeť balíčku je porušena: soubor byl po podpisu editován. Znovupublikovat balíček. Nainstalovaná kopie trhu není nikdy na místě editována; aktualizovat z panelu trhu.

Objednávka je pro tento obchod teď pozastavena.

Je zapnutý vypínač. Nastavení→Obchod→Zastavit prodej.

Objednávka není ještě k dispozici na tomto kanálu

Kanál není zaškrtnut pod Kde si zákazníci mohou koupit. Server log pojmenuje kanál.

Asistent popisuje položku, ale žádná karta se neobjeví

Nástroj pro citaci odmítl. Každý hovor je přihlášen jako [opsiq][commerce][client_tool] s důvodem: nesprávný položka ID, pole položka není deklarovat, převzaté domény, nebo obchodní vlastní odmítnutí. Přečtěte si záznam před důvěrou asistent parafráze.

Asistent říká, že nemůže vidět produkty.

Stránka patří do jiného pracovního prostoru. Každý widget webu patří do jednoho pracovního prostoru a tam musí být zapnutý konektor obchodu.

Konzervovaná odpověď místo odpovědi

"Řekněte mi trochu víc o tom, co potřebujete" znamená, že poskytovatel AI volání sám selhal; AI Historie ukazuje přesnou chybu pod tímto zatáčkou, a nástroje nebyly nikdy dosaženo.

Editace konektoru se v chatu neukazuje

Pracovník recykluje při změně kódu během minuty, ale konverzace přehraje poslední kartu. Začněte nový rozhovor k testování.

Nigerijský návštěvník vidí dolary, i když Geo měna je na

Zkontroluj geo-IPdatabáze je nakonfigurována (Klient Chat→Geo) a že návštěvníkova měna má FX kurz; bez kurzuOpsIQzobrazuje cenu obchodu spíše než špatné číslo.

Váš celkový součet je jediná postava, která pohybuje peníze

A citát nese unit_amount_minor, quantity a total_amount_minor, a je lákavé zacházet s třetí jako odvoditelné od prvních dvou. Není, a za předpokladu, že je již stojí zákazník skutečné peníze.

quantity je to, co si CUSTOMER vybral - jeden pokoj, jedna licence, jedna politika. Váš multiplikátor může být něcoOpsIQnikdy nevidí: noci, sedadla, fakturační cykly, vzdálenost, váha, úrovně. Hotel cituje jednu místnost na tři noci jako množství1, jednotka105,000, celkem315,000. OpsIQvynásobené jednotky podle množství na cenu potvrzení karty, ukázal hosta105,000, A pak účtovat315,000Přiznání se k jedné postavě a nabíjení druhé je to nejhorší, co tahle smlouva může udělat.

Pravidlo

total_amount_minor je jediným číslem OpsIQ ukazuje, značky, obvinění a smíry proti. unit_amount_minor je zobrazení detail na řádku. Pokud váš součet není přesně to, co chcete účtovat, vaše citace je špatná - OpsIQ nebude opravit, protože celkem, které bylo pomocně upraveno je ten, který jste nikdy souhlasil s ctí.

Co to znamená pro vaši citaci akce

Vraťte all- in obrázek. Aplikujte své vlastní noci, úrovně, slevy, daně a poplatky před odpovědí. Pokud vaše linka se nedohodne - jednotka krát nějaké celé číslo nikdy rovná vaší celkové - OpsIQ zachází celou věc jako jednu řádku za svou skutečnou cenu, spíše než vynalézání rozpadu, který odpovídá k ničemu.

Šest odpovědí, díky kterým se tahle smlouva hodí do jakéhokoliv průmyslu.

Výše uvedené prohlášení začalo jako prohlášení obchodu: koupit věc, zaplatit teď, je to vaše, můžete zrušit. Každý z těchto čtyř je předpoklad, že některé skutečné podnikání nesdílí. Bankovní pohybující se peníze nemůže vrátit zpět. Pojišťovatel nemůže říct "potvrdil", dokud podpisník podíval. Tradesmanova faktura poté. Klinika účtuje někomu, kdo není pacient. Bez možnosti, jak to říci, tyto podniky buď špatně reprezentovat svůj vlastní proces, nebo nemůže připojit vůbec.

Transakční konektor odpovídá na šest dalších otázek. Každý z nich má chybu v přesném čtení. - že nic není vždy bezpečné a nikdy nemilosrdné, protože nic neříkat je to, co autor dělá, když nezvažuje otázku.

transaction_kind

purchase, booking, subscription, bill_payment, transfer, application, top_up, renewal. Slovník spíše než chování: rozhoduje o slově, které váš zákazník čte. Volání převod peněz "objednávky" dělá asistent zní jako by nerozuměl podnikání mluví, a žádné množství správné instalace obnovuje z toho. Chyby na purchase.

decision_mode

immediate nebo deferredVyberte si deferred za cokoliv, co jde na upisování, hodnocení úvěrů, reference, přijetí nebo výbor. OpsIQ pak říká předloženo než potvrzen, a podává odkaz se zeptat na to. Říkat někomu jejich aplikace je potvrzeno, zatímco sedí s člověkem je nejvíce škodlivé věc, kterou chatu asistent může udělat pro regulované podnikání, a to je výchozí chování každého maloobchodu-tvarovaný tok. Chyby na immediate.

payment_timing

on_confirmation, deposit_then_balance, invoice_later nebo no_payment. Tím se rozhoduje, zda OpsIQ otevře platební stránku vůbec, takže to nelze odvodit z payment_flow - který říká Kdo Bere peníze, tady se píše zda a kdy. Práce fakturační poté, a aplikace, které nestojí nic předložit, končí na potvrzení místo dosažení seznamu brány, která je prázdná nebo špatná.

reversibility

reversible nebo irreversible. Nejdůležitější věc finanční konektor říká. Místnost může být uvolněn a balíček se může vrátit; dokončený převod nemůže - není žádná ruina, peníze je na druhém konci, a jediným lékem je požádat cizince, aby ho vrátil. Prohlášení irreversible automaticky síly cancellation_flow do none a zakazuje každému provozovateli, který si zvolí možnost přeskočování ověření totožnosti, Cokoliv dalšího v tomto prohlášení říká. Dvě pole nesouhlas není stav, který je třeba řešit v runtime podle toho, co se čte první. reversible.

cancellation_flow

none, platform_only nebo connector_cancel. Zrušit role již existovala bez pravidla o tom, kdo by mohl dosáhnout, a dva špatné odhady selžou v opačných směrech: hádat otevřené a chatu zpráva zruší placené rezervace bez poplatku citované; hádat zavřít a zákazník, který chce zrušit je řečeno, aby telefon. connector_cancel vyžaduje cancellation_quote a order_cancel s zotavením - OpsIQ nikdy nezruší před tím, než řekne, co to stojí. none.

fulfilment_presence

customer_present nebo remote_delivery. Zda neověřená e-mailová adresa může někoho stát cokoliv. Hotelový host musí přijet, takže špatná adresa přesměruje stvrzenku a místnost je stále tam; odeslaný balíček, rezervní server nebo odkaz ke stažení nechává na síle této adresy sám. To je to, co dělá operátora "přeskočit e-mailové ověření" k dispozici vůbec, a to je deklarován vy spíše než zvolené jim - takže hotelové uvažování nemůže být nikdy zděděn konektorem, který přepravuje zboží. remote_delivery.

minimum_assurance a disclosure (nepovinně)

minimum_assurance vám umožní požadovat více Důkaz totožnosti než OpsIQ vyžaduje, nikdy méně - banka vyžadující postup pro převod je výkon smlouvy. Nastavení také odstraní schopnost operátora přeskočit ověření pro váš konektor, protože vlastní rozhodnutí o riziku obchodníka předčí pohodlí provozovatele. disclosure je uvedeno znění před potvrzující tlačítko, za sazbu, poplatek nebo chladící-off právo musíte předložit; bez něj regulované podniky pašovat požadované znění do názvu produktu.

notify_flow

platform_automatic, platform_triggered nebo none. Když OpsIQ vezme platbu vaše vlastní Pokladna nikdy běží, takže ať už je to normálně e-maily nikdy nevybuchne. Nahrávání platebních značek platební příkaz zaplatil, to zavazuje žádnou platformu, aby to někomu říct. platform_triggered vyžaduje order_notify role s vymáháním, a OpsIQ se ptá pouze poté, co platba read- back prokáže, že peníze jsou zaznamenány. none je OpsIQ-side potvrzení povinné, protože jinak platící zákazník neslyší vůbec nic. none.

Stejná smlouva, devět nesouvisejících podniků

Žádná z nich nebyla navržena. Každá je smlouva odpovídat upřímně pro jiný průmysl, s OpsIQ nic neví o žádné z nich.

Jedna smlouva, devět průmyslových odvětví
Hotel        booking      immediate  deposit_then_balance  reversible    -> payment page, "confirmed", identity may be waived
Online shop  purchase     immediate  on_confirmation       reversible    -> payment page, "confirmed", identity always verified
Bank         transfer     immediate  on_confirmation       IRREVERSIBLE  -> payment page, no cancel route, never waived
Insurer      application  DEFERRED   no_payment            reversible    -> no payment page, "submitted", never "confirmed"
Utility      bill_payment immediate  on_confirmation       IRREVERSIBLE  -> payment page, nothing to give back
Clinic       booking      immediate  invoice_later         reversible    -> NO payment page, billed afterwards
Tradesman    booking      immediate  invoice_later         reversible    -> NO payment page, invoiced on completion
Telecom      top_up       immediate  on_confirmation       IRREVERSIBLE  -> payment page, final once sent
University   application  DEFERRED   no_payment            reversible    -> no payment page, decision follows
Placená událost poskytovaná platformám

Po nativní Storefront platba je aktivně ověřena a zavázaná, OpsIQ emituje payment.completed s order_id, payment_id/provider_ref, gateway, přesně amount_minor, ISO currency, zákazník, linkové položky, kanál a paid_at. Obchodní konektor musí pokračovat v tomto důkazu prostřednictvím record_payment a přečti si to zpět; konektor hostitel- Checkout spotřebovává vlastní autoritativní placené události a nesmí obdržet duplicitní platební zápis.

AI je navrhovatel, ne zdroj autorit

Model může vybrat deklarovaný produkt a množství, ale nemůže zvolit název operace, máta checkout URL nebo vytvořit obchodní stát z textu. Zákazník obdrží přesnou podepsanou kartu a stiskněte tlačítko potvrzení. Toto potvrzení je vázáno na pracovní prostor, konektor, položka, množství, citace, měna, nit a vypršení platnosti.

Sociální zákazníci mají stejný tok bez emailu na výzvu

WhatsApp, Messenger, Instagram, Telegram, LINE, SMS a X používají jako identitu zákazníka účet kanálu ověřený poskytovatelem.Návrh je podepsán k tomuto účtu kanálu a potvrzení stále prochází stejnými kontrolami čerstvé nabídky, zásob, idempotence, platby a vymáhání. Sociální zákazník používá přesnou jednorázovou potvrzovací akci provedenou v jejich konverzaci; obyčejná próza jako „ano“ nikdy není oprávněním objednat.

Historie objednávek následuje přesný odkaz na identitu, nikdy emailový tip

Původní objednávky jsou indexovány neprůhlednou identitou kanálu, takže AI může odpovědět "kde je moje objednávka?" bez požadavku na e-mail nebo číslo objednávky. Pro propojenou historii skladu, odkaz na kanál identity na pracovní prostor CRM / klient záznam a implementovat autoritativní zákaznický / objednávkový vyhledávání v konektoru. Zákazníci kontextové služby obdrží, že uložený odkaz, nesmí vybrat účet z zobrazovací jméno nebo e-mailový zapsaný do chatu. S jedním shodným pořadí AI odpovědi přímo; s několika to shrnuje shody a ptá se, který z nich, že žádný z nich není spojen historie.

Udělat užitečné zatížení univerzální: zadaná pole a totožnost ve vlastnictví serverů

Jádro neobsahuje WHMCS, hotel, SaaS, obchod, banka, produkt, trasa nebo prodejce pobočka. parameters jsou zákaznický formulář a AI slot schéma. Rezervační konektor může deklarovat data a hosty; fakturační konektor mohou deklarovat cyklus; budoucí podnikový konektor lze prohlásit své vlastní bezpečné pole. OpsIQ sanitizuje primitivní kontroly a posílá shromážděné hodnoty pouze na mapované konektorové akce.

Akce v podobě tištěné citace
{
  "action_id": "acme_customer_quote",
  "scope": "client",
  "is_destructive": false,
  "parameters": [
    {"name":"external_customer_id","type":"string","required":true},
    {"name":"item_id","label":"Product","type":"string","required":true},
    {"name":"quantity","label":"Quantity","type":"integer","required":true,"minimum":1},
    {"name":"cycle","label":"Billing cycle","type":"select","required":false,
     "options":[{"value":"monthly","label":"Monthly"},{"value":"annual","label":"Annual"}]}
  ]
}

Pro clients_only, set customer_ordering.identity_parameter k parametru akce, který přijímá externí zákaznický ID konektoru. Toto pole není nikdy zobrazeno zákazníkovi a žádná hodnota dodaná volajícím je odstraněna; OpsIQ aplikuje pouze id z ověřeného konektorového odkazu. Pokladna pro hosty ji nechává prázdnou. Psaní e-mail je důkazem pro ohlášené vyhledávání hostů, ne přihlášení a ne kupní autoritu.

Skupinové domény: signed- v zákaznických účtech a konfiguraci konektoru patří do skupiny primární portál pracovní prostor. Nicméně, token identity musí být podepsán pro přesný člen stránky, která vkládá widget, pomocí tohoto člena je webhook tajemství. OpsIQ ověřuje, že povrch první a teprve pak vyřeší obchod a připojený zákazník prostřednictvím skupiny primární. Nikdy nahradit klíč členské stránky primárním klíčem a nikdy kopírovat hlavní tajemství na členský web.

Kanonické obálky, které musí konektor vrátit

Katalog
{
  "success": true,
  "data": {"items":[{
    "id":"42", "name":"Example product", "summary":"Customer-safe summary",
    "currency":"USD", "unit_amount_minor":2500, "available":true,
    "selection":{"item_id":"42"}
  }]}
}
Citát
{
  "success": true,
  "data": {
    "quote_id":"opaque", "currency":"USD",
    "unit_amount_minor":2500, "total_amount_minor":5000,
    "selection":{"item_id":"42","quantity":2},
    "expires_at":"2026-08-31T14:05:00Z"
  }
}

Odezva platform- Checkout opakuje platný kanonický citát a přidá HTTPS checkout_url. Jádro obnovuje citaci při potvrzení a porovnává měnu, celkový a stabilní výběr přesně. Konektor překládá svou platformu odpověď do těchto obálek; jádro nikdy nepřekládá prodejní pole nebo staví obchodní URL.

Vytvořte operator- postavený bránu k dispozici v nativní obchod a chat

Samotná platební schopnost nestaví bránu před zákazníky. Povolit Platební brána Native Store blok v Connector Builder. Přidá explicitní smlouvu s verzí, vytvoření mapy a aktivní vyhledávání plateb a umožňuje seznam domén Provider-hosted. Jakmile je konektor nainstalován, povolen a vybrán v rámci nastavení obchodu, stejná brána se objeví ve veřejném obchodě, Store modal, client- chat Checkout a autonomní Checkout. Žádný poskytovatel slig je pevně kódována.

Smlouva o vstupní bráně pro původní obchod
{
  "commerce": {
    "roles": {
      "checkout_create": { "operation": "acme_checkout_create", "transport": "http",
                           "recovery": "acme_payment_status" },
      "payment_status":  { "operation": "acme_payment_status", "transport": "http" },
      "payment_profile": { "operation": "acme_payment_profile", "transport": "http" },
      "webhook_verify":  { "operation": "acme_webhook_verify", "transport": "http" },
      "event_map":       { "operation": "acme_event_map", "transport": "http" },
      "payment_refund":  { "operation": "acme_refund", "transport": "http",
                           "recovery": "acme_refund_status" }
    },
    "storefront_gateway": {
      "enabled": true, "version": 1, "label": "Acme Pay",
      "checkout_hosts": ["checkout.acmepay.com", "*.acmepay.com"]
    }
  }
}
Kanonický výstup pro checkout

Pokladna akční mapy checkout_url a, když má poskytovatel jednu, session_id. URL musí být HTTPS, neobsahuje žádné pověřovací listiny, a zápas povoleného hostitele.

Výstup kanonického stavu

Status akce provádí nového poskytovatele API vyhledávání a mapy paid jako opravdový boolean, amount_minor jako celé číslo, currency jako třípísmenný kód ISO a provider_ref. Vrácení URL, řetězec dotazu, klientské užitečné zatížení, nebo connector- dodán "potvrzené" instrukce není nikdy platba pravda.

Nepovinná smlouva o náhradě

Pokud brána podporuje náhrady, mapa payment_refund a jeho recovery akce. Vytvoření náhrad vrací přísné accepted a completed booleys plus provider_ref; recovery provádí vyhledávání a vrací status. Bez obou opatření, OpsIQ neinzeruje konektorové náhrady.

Kdo potvrzuje rozkaz

Konektor nikdy nenapíšeOpsIQstav objednávky.OpsIQporovnává vrácenou částku a měnu přesně a zaznamenává odkaz na poskytovatele; teprve pak jádro provádí provider- ověřený přechod. Ruční bankovní převod zůstává jediným tokem, který může pojmenovaný agent schválit.

V konektoru builder, tick obchod, mapovat role, a konfigurovat buď Objednávka zákazníka v připojeném obchodě, Platební brána Native Store, nebo obojí, pokud konektor skutečně poskytuje obě smlouvy. Průvodce potvrzuje prohlášení a píše commerce_roles.json. Publikace stále používá normální Marketplace review a signature process; tato smlouva nikdy obejít ověření balíků nebo dělá konektor non-neinstalovatelné. Ověřte si jakýkoliv balíček ručně php tools/verify_commerce_contracts.php.
💡
Doprava je http pro vzdálený API nebo bridge pro pojmenovanou operaci na nasazeném mostu (viz NO-API vzor níže). Role jsou transport- agnostic; runtime jen potřebuje dopravu uvedeno, aby to může version- párování most.
Konektory

Prodávat prostřednictvím chatu bez konektoru: Akce & Triggers

Obchodní smlouva výše nevyžaduje spojovací balíček. Pokud je vaše platforma je vaše vlastní - na zakázku zadní kancelář, vnitřní API, systém nikdo přepravuje konektor pro - můžete dosáhnout stejné prodejní stroje se dvěma nástroji, které již používáte k integraci něco jiného: vlastní akce (HTTP koncové body, definované na stránce Akce) a Triggers (event webháky). Stejná smlouva, stejná karta, stejné pojištění totožnosti, stejné platební jádro, stejné příjmy. Jediné, co chybí, je balíček, protože neexistuje žádný třístranná-stranický kód k podpisu.

Jak to k sobě pasuje

Vybudujete jednu vlastní akci na obchodní roli - každá z nich je jednoduchý HTTPS koncový bod na vaší straně, definovaný v bodě Akce AI & Automation → s jeho URL, záhlaví a parametry auth. Pak uložte jedno prohlášení, které mapuje role těchto akcí. Od té chvíle se váš obchod objeví v chatu přesně jako connector- podporovaný jeden: UI cituje od Vaše citace akce, potvrzení karty dává, zákazník ověřuje jejich e-mail, objednávky jádro volání Vaše akce s idempotency klíč, OpsIQ přijímá platby přes brány pracovní plochy, a Vaše Record-platby akce. nic o zákaznické zkušenosti říká "zvyk".

Prohlášení

Uložit toto JSON jako nastavení pracovního prostoru commerce_custom_integration (Nastavení→pokročilá nastavení, nebo pomocí nastavení RESTAPI). Je to stejný tvar jako balíček commerce_roles.json obchodní uzel, s action pojmenování vlastních čipů akce:

commerce_custom_integration
{
  "enabled": true,
  "roles": {
    "catalog_search":  { "action": "acme_catalog" },
    "quote":           { "action": "acme_quote" },
    "order_get":       { "action": "acme_order_get" },
    "customer_create": { "action": "acme_customer_create",
                         "recovery": "acme_customer_by_email" },
    "order_create":    { "action": "acme_order_create",
                         "recovery": "acme_order_by_key" },
    "record_payment":  { "action": "acme_record_payment",
                         "recovery": "acme_payment_by_key" }
  },
  "customer_ordering": {
    "enabled": true, "version": 1,
    "mode": "direct_order",
    "audience": "guests_and_clients",
    "account_flow": "connector_signup",
    "payment_flow": "opsiq_gateway",
    "label": "Acme Store",
    "identity_parameter": "client_identifier",
    "quantity_parameter": "quantity",
    "transaction_kind": "purchase",
    "fulfilment_presence": "remote_delivery",
    "notify_flow": "platform_automatic"
  }
}

Konečně, přidejte custom_commerce k konektorům povoleným pro prodej v rámci Nastavení→Klientský chat→Prodává prostřednictvím chatu. Vstupné je znovu kontrolováno všechny požadavek, a odmítá s jmenovanými důvody spíše než tiše skrývat svůj obchod: role, kterou váš režim vyžaduje, aby mapy k ničemu, psát roli bez zotavení (§ 15.7 - psaní, jehož výsledek nelze znovu-požádat), akce, která byla smazána nebo zakázána od doby, kdy jste uložili.

Co musí každá akce udělat

Vrátit obal konektoru

Odpověď {"success": true, "data": { ... }} - nebo {"success": false, "error": "a sentence a customer may read"}Vaše akce je cesta k úspěchu odezvy by měl ukázat na obálku.

Citace: celkem, v menších jednotkách

Návrat quote_id, product_name, quantity, unit_amount_minor, total_amount_minor, currency, selection, selection_summary, expires_at. Vše v "vaše celková hodnota je jediná částka, která pohybuje peníze" výše platí doslovně: daně, poplatky a multiplikátory jdou do vašeho celkového počtu, protože váš součet je to, co je podepsáno, zobrazeno a účtováno.

Vytvoření řádu: ctít idempotency klíč

Přijímáš idempotency_key, podepsaný total_minor a currency, ověřené customer_email, a vaše vlastní parametry citace. Uložte klíč s objednávkou; pokud jste již vytvořili objednávku pro to, vrátit tuto objednávku místo druhé. Ověřte peníze - pokud váš systém ceny objednávky jinak než podepsané celkem, odmítnout znovu než podtržení. reference Vaše platforma to pozná.

Recovery: odpověď o jednom zápisu

order_by_key přijímá klíč a odpovědi na idempotenci {"found": true, "order": {...}} nebo {"found": false}. falešné je slib - OpsIQ může rezkusit zápis na síle. Stav krmivo nebo seznam retent- objednávky není odpověď o jednom zápisu.

Záznamová platba: vaše vlastní cesta vypořádání

Obdrží vstupní transakce ID jako idempotency klíč plus odkaz na vaši objednávku, poté, co OpsIQ aktivně ověřil částku a měnu s bránou. Označte si objednávku zaplacenou prostřednictvím své platformy vlastní logiky - oheň vlastní e-maily, snížit svůj vlastní zásoby. Vrátit platform_notified: true pokud vaše platforma e-mailem zákazník sám.

Kartové vstupy pocházejí z Vašich akčních parametrů

Každý parametr, který ve své akci QUOTE prohlásíte (za neidentifikovatelný parametr), který AI neshromáždil, je uveden na potvrzení karty jako vstup, který zákazník sám vyplní - doménu, datum, místo. Označte je dobře; označení je to, co zákazník čte.

Triggers: slyšet své vlastní prodeje

Dvě události oheň na sdílené události autobusu, takže vaše webové háky a automatizace slyšet každý chat prodej, ať už je to provedeno kdekoli:

commerce.order.created

V okamžiku, kdy se objednávka dostane na obchodní stranu, před platbou - reference, konektor (nebo custom_commerce), částka, měna, zákaznický e-mail, vlákno id.

commerce.payment.confirmed

Přesně jednou na objednávku, kdy brána aktivně ověřuje platbu. Jezdí stejným tvrzením, které brání duplicitní účtenky, takže nemůže zdvojnásobit-oheň váš webhook.

Kdy odmaturovat na konektor

Vlastní integrace je konfigurace pracovního prostoru: slouží Vašemu skladu, na Vašem pracovním prostoru. V okamžiku, kdy chcete distribuovat integraci - jiné pracovní prostory, trh, verze, podpis, placené instalace - balíčky stejné akce a stejné prohlášení jako konektor. Smlouva se nemění, pouze obal ano.

Konektory

Připojte platformu, která nemá API (mostní vzor)

Spousta reálných nástupišť loď žádný RESTAPIvůbec. Hotel CMS, starý fakturační systém, na míru interní nástroj. Stále můžete napsat kompletníOpsIQkonektor pro jednu: konektor přepravuje jeden soubor PHP, který operátor upustí do svého vlastního veřejného webroot, a tento soubor jeAPI. Tato stránka je celý vzor, s pravidly, která činí bezpečnou běh a důvod za každým pravidlem.

Tvar toho těla.

Normální konektor volá někoho jiného API. Mostový konektor přináší svůj vlastní. Nic jiného se nemění: stejné akce, stejné kontextové poskytovatele, stejná smlouva o identitě, stejné rozložení balíčků.

1
Napíšete jeden soubor s 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
Operátor si to zkopíruje do svého bryndáčku.

Vedle platformy vlastní index. php. Žádný kód platforma není změněn, žádný plugin není nainstalován, nic, co by se mělo udržovat napříč platformami upgrady.

3
Konektor jim předá soubor

Vaše settings.json deklarace webhook_help.snippet_template. Záložka konektoru jej označuje jako kopírovatelný soubor s jejich již nahrazeným nastavením, takže není co ručně upravovat.

4
OpsIQ tomu říká server- to- server

Váš Client.php posílá GET žádosti se sdíleným klíčem v X-OpsiqZákladna Bridge- Key.URLnastavení je kořen místa platformy.

Propojovač Builder může generovat to pro vás nyní. Vyberte si "Platforma s ne API"profil (nebo nastavit data přístup k mostu) a vysílá soubor můstku, odpovídající panel snippet a zadané akce, které čtou a píší přes něj - pro Laravel aplikace čtení jeho .env, pro WordPress čtení wp- config.php, nebo s pověřovacími údaji vložte pro cokoliv jiného. Most režim opravuje autentizaci na OpsIQ protokol můstku: konektor bezpečně generuje api_key pokud je povoleno, odešle to jako X-Opsiq-Bridge-Key, a váže stejnou uloženou hodnotu do OPSIQ_BRIDGE_KEY v copyable souboru. Hand- autor pouze tehdy, pokud vaše platforma není žádná z těch, nebo pokud potřebujete chování generovaný most není pokrytí. Ručně psaný most je bezpečný před čarodějem: přepíše pouze soubor mostu s vlastní značkou.
💡
Vše na této stránce je zobrazeno v PHP proti MySQL, protože to je referenční implementace a jediná kombinace balení potrubí plně podporuje. Vzor sám je langage- agnostic a agnostik: viz "Most v jiných jazycích a dalších databází" pro bránu v Node, Python, Go, Ruby, .NET a Java, introspection dotaz pro PostgreSQL, SQL Server, SQLite a orákulum, a MongoDB ekvivalent - spolu s omezením obalů, které rozhoduje o tom, jak se most non-PHP dostane k operátorovi.

Bezpečnostní model a proč je tam každé pravidlo

Tento soubor sedí ve veřejném webroot za jeden sdílený klíč. Tento jediný fakt řídí každé pravidlo níže. Nerelaxujte žádný z nich, aby váš most jednodušší.

Volající nikdy nedodává SQL

Není to klauzule WHERE, není to fragment ORDER BY, není parametr "jen jednou" syrového dotazu. Volající jmenuje tabulku, sloupec a hodnotu; Váš soubor sestaví prohlášení. V okamžiku, kdy volající může přispět SQL text, se jeden sdílený klíč stává libovolným provedením databáze.

Tabulka a názvy sloupců jsou validovány proti information_schema

Identifikátory nelze vázat jako parametry, takže je třeba zkontrolovat místo. Přečtěte si skutečný seznam tabulek a sloupců pro TENTO databázi a odmítnout nic, co na ní není. Identifikátor, který není skutečným objektem tohoto schématu pak nemůže dosáhnout dotazu vůbec - což je to, co dělá bezpečnou odhalit každou tabulku.

Každá hodnota je vázaný parametr

Bez výjimky, včetně hodnot uvnitř vyhledávání. Validované identifikátory plus vázané hodnoty jsou dvojice, která činí povrch celkový a injekční povrch nulový.

Čtení jsou univerzální, psaní jsou přípustná

Tohle je pravidlo, které chtějí lidé přeskočovat.

Tajné sloupce jsou při čtení regovány a odmítnuty při zápisu.

Zápas na sloupci NÁZEV: heslo, remember_token, tajemství, api_key, private_key, sůl, token. Nahraďte hodnotu s prostorem na cestě ven. Odmítněte zápis zcela na cestě - psaní syrové heslo hash není operace, je to footgun. Pošlete operátora na platformu vlastní hesla tok.

Odstranění jsou jednořadá, podle primárního klíče

Nikdy hromadné smazat, nikdy smazat filtrem. Hromadné odstranění je způsob, jak databáze zemře. Pokud někdo opravdu potřebuje jeden, mohou to udělat na platformě.

Čtení jsou zapuštěné

Zasvorkujte limitní parametr s pevným stropem. Únikový dotaz nesmí být schopen vypustit databázi prostřednictvím chatovací zprávy.

Neúspěch uzavřen, dokud není klíč nastaven

Nekonfigurovaný most odpoví na všechno 403. Most, který je užitečný před tím, než je nastaven, je most, který byl užitečný pro cizince.

Konstant- time porovnání klíčů, klíč v záhlaví

hash_equals, nikdy = =. Klíč jde do X -Opsiq- Bridge- Key, ne řetězec dotazu, takže to zůstane mimo přístupové protokoly, proxy záznamy a Referer hlavičky.

Pouze GET

Jedna metoda, jeden tvar, nic propašovat v těle. Vše, co most dělá, je vyjádřitelné jako GET s ověřenými parametry, a OpsIQ je jediný volající.

Čte univerzální, píše albouristicke - a proč

Toto je pravidlo, které se argumentuje, takže zde je odůvodnění v plném rozsahu. Asistent by měl být schopen vidět celou platformu: to je to, co dělá to užitečné, a čtení nemůže zničit nic. Písma jsou odlišné. Tento soubor sedí ve veřejném webroot za ONE sdílený klíč. Pokud tento klíč uniká, neomezený plocha zápisu činí únik rovnocenný plné ovládání databáze - nový admin uživatel, prázdný rezervační stůl. Přípustný-seznam znamená, že uniklý klíč stále nemůže dosáhnout tabulky operátor nikdy povoleno.

⚠️
Schvalovací karta OpsIQ bránila AI, není klíčem. Admin kliknutí Povolit na destruktivní akci je kontrola nad asistentem. Není to kontrola nad tím, kdo drží most klíč. To jsou dvě různé hrozby, a povolený seznam je odpověď na druhý.
Oper- směřující knoflík, z Botble mostu
/* ── 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';

Dva podrobnosti v check níže jsou snadno dostat špatně. Název tabulky dorazí již RESOLVED, nese tabulku tabulky prefix, zatímco operátor píše allowed-list nepřednastavený, protože to je to, co by přirozeně typ. Porovnejte obě způsoby nebo předem pevně nainstalovaná instalace tiše umožňuje nic a každé přerušení zápisu. A odmítnutí musí vysvětlit sám, protože osoba čtení je admin v chatu okno, ne vývojář se stopou stopy.

Přípustná kontrola seznamu, doslovně od marketplace_connectors/botble/ Bridge /opsiq-botble-Bridge.php
/** Tables a WRITE may touch. Empty = the built-in defaults. */
$writeAllowed = static function (string $table) use ($prefix): bool {
    $raw = trim((string)(defined('OPSIQ_WRITE_TABLES') ? OPSIQ_WRITE_TABLES : ''));
    if ($raw === '') $raw = 'ht_bookings,ht_booking_rooms,ht_rooms,ht_customers,customers';
    if (trim($raw) === '*') return true;                     // explicit opt-in to everything
    $bare = ($prefix !== '' && stripos($table, $prefix) === 0) ? substr($table, strlen($prefix)) : $table;
    foreach (explode(',', $raw) as $t) {
        $t = trim($t);
        if ($t === '') continue;
        if (strcasecmp($t, $table) === 0) return true;
        if (strcasecmp($t, $bare)  === 0) return true;
        if ($prefix !== '' && strcasecmp($prefix . $t, $table) === 0) return true;
    }
    return false;
};

/** One refusal, one explanation — used by every write op. */
$requireWritable = static function (string $table) use ($writeAllowed): void {
    if ($writeAllowed($table)) return;
    opsiq_bridge_out(['success' => false, 'error' =>
        'write_not_allowed: "' . $table . '" is not in this bridge\'s write allow-list. '
        . 'Reads are unrestricted. To permit writes here, add the table to OPSIQ_WRITE_TABLES '
        . 'in opsiq-botble-bridge.php (or set it to "*" to allow every table).'], 403);
};

Brána, v plném rozsahu

Čtyři kontroly, v tomto pořadí, než se cokoli dotkne dat. Kopírovat objednávky stejně jako kontroly.

Čtyři brány, aby se
<?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. */

Ověření identifikátorů proti information_schema

Toto je kus, který otočí "asistent může dosáhnout libovolné tabulky" z bezohledného do bezpečí. Vyřešte jméno volajícího tabulky proti skutečné schéma, tolerovat chybějící nebo navíc tabulka předčíslí, a vrátit nulu pro cokoliv jiného. Vše po proudu pak pracuje s názvem, který prokazatelně existuje.

Ověření a kontrola totožnosti, doslovně z mostu v 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;
};

Čtení a zápis, kompletní

Všimněte si, co je vázané a co je validováno. Sloupec filtru se zaškrtne do skutečného seznamu sloupců a pak interpoluje jako identifikátor; jeho hodnota je vázána. Mezní hodnota je uzamčena. Řádky jsou po cestě ven regovány. Aktualizace odmítá primární klíč a jakýkoli sloupec auth, a razítka updated_at, když má tabulka jeden.

Přečíst libovolnou tabulku - validované identifikátory, vázané hodnoty, zapsané řádky
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,
    ]]);
}
Napište jeden řádek - povolená tabulka, odmítnuté sloupce auth, jeden řádek primárním klíčem
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)),
    ]]);
}

Přežití schémat rozdílů

Verze platformy se liší. Sloupce se pohybují, přejmenovávají, nebo chybí. Most, který předpokládá jedno schéma funguje na jedné instalaci. Zavést a přizpůsobit místo toho: vyberte pouze sloupce, které zde existují, tolerujte tabulku předponu, a zkuste věrohodné hláskování reference.

tolerance Schema, od mostu v 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));
💡
Dejte svůj most op = diag, který hlásí pouze STRUKTURA - které tabulky vyřešeny, které sloupce hlavní tabulka má, a SHAPE nejnovější odkaz s každou číslicí maskované. Je klíčový jako všechno ostatní, a to otáčí "lookup nenajde nic" z podpůrného tipu do ten- sekunda odpověď. Nikdy nechat vrátit skutečné záznamy.

Jednotné chyby a výčtová past

Jeden tvar pro všechno.

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.

Nenajdeš a žádný zápas musí být stejný.

Na hledané ploše, odkaz, který neexistuje a odkaz, jehož důkaz nebyl shodný musí produkovat SAME odpověď. Různé odpovědi změní váš most do věštkyně, která potvrzuje, které odkazy jsou skutečné, což je volný zákazníkův-seznam export pro každého pacienta.

Nikdy nedávej důvod návštěvníkovi.

Most může být přesný sOpsIQO tom, co se dostane k návštěvníkovi, rozhodujeOpsIQ, v jednom pevném odmítnutí.

Přípustný soubor v panelu konektoru

Operátor nikdy neotvírá úložiště. Otevírají panel konektoru vOpsIQa stiskněte kopírování. Tato kopie pochází z nastavení.json, a musí to být stejný program jako most / * .php.

settings.json - vstup do panelu pro mostní konektor
{
  "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..."
  },
  "snippet_bindings": [
    { "assignment": "OPSIQ_BRIDGE_KEY", "setting": "api_key" }
  ]
}
{{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.

snippet_bindings přežije regeneraci

Vyhlaste každý vytvořený tajný úkol výslovně. Synchronizační nástroj přestaví kopii obrazu z dodaného mostu a poté obnoví OPSIQ_BRIDGE_KEY = {{setting:api_key}} bez tohoto vázání, upgrade může věrně kopírovat bezklíčový soubor balíčků a tiše odstranit operátor je nasaditelný klíč. Connector Builder emituje tuto vazbu automaticky pro generované mostové balíčky.

Ostatní stojany jsou nahrazeny serverside

Nezávisle na tom,{webhook_url}, {webhook_path}, {webhook_secret}, {site_key}, {base_url}a{slug}jsou vyplněny předtím, než panel vůbec uvidí odstřižek.

webhook_help může být jeden objekt nebo seznam

Seznam vám v jednom panelu poskytne několik úlomků, např. soubor s mostem a samostatný relé hák.

🚫
Neudržujte útržek ručně. Soubor mostu a kopie obrazu jsou dvě kopie jednoho programu, a WILL drift - most byl aktualizován a jeho výtisk panel nebyl, takže každý, kdo reinstaloval a kopíroval z panelu nainstaloval starý most a tiše ztratil všechny nové schopnosti. Nic ho zjistilo: shoda prošel, podpisy prošel, testy prošly.
Udržet obě kopie stejné
# 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.

Co by měl most odhalit

Tvarované operace a univerzální datový povrch, společně. Tvarové vrátí čisté, účelové-postavené odpovědi na otázky lidé skutečně klást; univerzální ty pokrývají všechno ostatní, takže asistent nikdy není zaseknutý.

Tvarované čtecí nástroje

statistiky, hlavní seznam objektů s filtry, jeden objekt s jeho související řádky, katalog toho, co se prodává, vyhledávání zákazníků s historií. Ty dávají AI dobrou odpověď v jednom volání místo pěti.

Tvarované texty

Dvě nebo tři změny stavu, na kterých záleží - stav nastavení, zrušit. Udržet přijaté hodnoty povoleny.

Typový obchod

Pro prodejní platformu odhalit účelové-postavený katalog, citát, checkout / objednávky a výplaty-důkazy operace, pak map je v commerce_roles.json s transport: bridge. Nikdy nemapujte obchodní psát roli do univerzálního record. Vytvořit / aktualizovat povrch.

Univerzální objev

tabulky (s počtem řádků) a popište (sloupce, typy, primární klíč, plus čitelné a zapisovatelné vlajky na sloupec). Takto se asistent učí platformu, kterou jste nečekali.

Univerzální čtení a zápis

dotaz, recorde. get, record. create, reg. update, Record. delet. Každý z nich ověřený, jak je uvedeno výše.

Identita, před klíčovou branou

Identity sondy jsou nazývány ADMIN 'S Browser, same- původ, takže nemohou poslat vlastní hlavičku. Jejich autentizace je platforma session sám. Dejte jim před klíčové brány, držet je mimo všechny záznamy dat, a nikdy je nechat vrátit tajemství. Viz konektor identity stránky.

Diagnostika

op=diag, structure only, masked.

Mapa role obchodu s mosty
{
  "commerce": {
    "roles": {
      "catalog_search": {"operation":"hotel_catalog_search","transport":"bridge"},
      "quote":          {"operation":"hotel_quote","transport":"bridge"},
      "order_create":   {"operation":"hotel_order_create","transport":"bridge",
                           "recovery":"hotel_order_get"},
      "order_get":      {"operation":"hotel_order_get","transport":"bridge"},
      "record_payment": {"operation":"hotel_record_payment","transport":"bridge",
                           "recovery":"hotel_order_get"}
    },
    "customer_ordering": {
      "enabled":true, "version":1, "mode":"direct_order",
      "audience":"guests_and_clients", "account_flow":"guest_checkout",
      "payment_flow":"opsiq_gateway"
    }
  }
}
💡
Kanonická role kontroluje sekvenci a autoritu; operace mostu udržuje vlastní platformu na stroji užitečné zatížení. Hotel může vyžadovat příjezd, odjezd a hosty, WHMCS může vyžadovat stávající klient nebo connector- vlastněné signup, a platforma SaaS může vyžadovat fakturační cyklus. Core nikdy hard kóduje tato pole. Most musí volat platformě obchodní služby, takže akcie, daně, faktury, potvrzení pošty a háky všechny běží.
⚠️
record_payment není mark- placená zkratka. Přijměte pouze server- ověřený důkaz poskytovatele: přesný pořadí, obchodník, částka, ISO měna, odkaz na poskytovatele, čerstvé ověřené razítko a idempotency klíč. Provést ji prostřednictvím platforma platby / faktura API, pak vrátit autoritativní objednávky nebo faktury read- back. Neznámý výsledek musí běžet zotavení před jakýmkoli opakování.
💡
Pouze pro čtení konektor nepotřebuje žádný povolený seznam. Pokud vaše platforma vždy jen odpoví na otázky, loď most bez psaní ops a celá třída psaní rizika zmizí. Přidat píše, když se někdo ptá na ně.

Kontrolní seznam před odesláním mostu

Most odmítá všechno bez klíčů.

Přejmenovat konstantu na vyprázdnit a potvrdit každou operaci odpovědi 403.

V neustálém čase je odmítnut chybný klíč

hash_equals, a klíč číst pouze z hlavičky.

Název stolu je odmítnut

A pravé jméno stolu se špatnou předponou stále řeší.

Ve čtení se nikdy neobjeví sloupec hesla

A napsat, že jména jeden je odmítnut s vysvětlením.

Zapsat do tabulky mimo povolený seznam je zamítnuto

Se zprávou, která říká operátorovi, jak ji rozšířit.

Snippet obrazu odpovídá souboru mostu.

php nástroje / sync_connector_bridge_snippets. php to hlásí v krocích.

Přeinstalování konektoru nestačí

Pokud je váš balíček přepravován mostní soubor, provozovatel modernizuje konektor musí také přesunout tento soubor do jejich webroot. Řekni to v panelu tělo a ve vašem CHANGELOG, každé vydání.

Konektory

Zavedení vlastního rámce platformy z mostu

Most, který pouze čte může mluvit SQL. Most že CREATES věci na platformě (objednávka, rezervace, placená faktura) musí projít platformu vlastní aplikační vrstvu, a booting této vrstvy bezhlasně je tam, kde každý jemný selhání v tomto modelu žije. Vše níže bylo naučeno tvrdou cestou na živé integraci, každé pravidlo proti skutečné vadě, která nezpůsobila chybu nikde.

Řádek v databázi není objednávka

Syrové INSERT vytvoří stínový rekord

Řádek se objeví, admin ho vypíše a stále to není záznam platforma věří, že vytvořil: žádné rodné referenční číslo, žádné modelové háky, žádné události, žádná faktura, žádný zákaznický e-mail, žádný pracovní zákaznický-čelí odkaz. Zákazník cituje na platformu nikdy vydané pro zaměstnance, kteří nemohou najít. Vytvořit prostřednictvím platformy vlastní služby, pokud pouze vystavuje post-platební službu, vytvořit graf, který očekává a předat na ševu, které definuje.

Nikdy znovu neimplementujte číslování platformy

Dva vzorky referenčního formátu, aby to vypadalo snadno reprodukovat, a reprodukovat je stejné stíno- napsat jednu úroveň dolů: den platformu změní svůj plán, každý z vašich záznamů je špatně a nic vás varuje. Zavolejte jeho generátor (reflexe dosáhne non-static jeden), a přečtěte uložené hodnoty zpět spíše než věřit tomu, co jste poslal.

Sloupce platforem udržují význam platformy

Než si uložíte něco z vašeho ve sloupci platformy, najít každý čtenář. Sloupec s názvem jako volné slot může být načítání-ložisko: na referenční integraci, transaction_id Ukázalo se, že je token zákazník e-mailem "zobrazit rezervaci" odkaz řeší prostřednictvím: idempotency trávení uložené tam tiše zlomil každý host odkaz. Udržujte účetnictví v bridge- vlastněné tabulky: UNIQUE (operace, idempotency_key) je přehrávač, omezení odmítá souběžné dvojče, a recovery lookup čte stejnou tabulku, kterou vytvořil napsal. Vytvořit tabulku před začátkem Provedení: MySQL DDL implicitně provádí otevřenou transakci.

Události, posluchači a double- emailová past

Před odesláním informací o tom, kdo službu poskytuje, si přečtěte zdroj služby

Pokud platforma služba, kterou voláte již odeslat událost, odeslání ji sám odešle zákazníkovi dva potvrzující e-maily a generuje dvě faktury. Pokud nic neposlouchá, odesílání žádné. Ani selhání vyvolává chybu. Reflektovat metodu, nakrájet své zdrojové linky, a číst, co to vlastně dělá: jméno - založené odhad a dokonce reexx nad tělem oba dostali to špatně před zdrojem vyřešil.

getLisers () skrývá pravdu; getRawLigheners (

Laravel zabaluje posluchače třídy do uzávěrů, takže getLisers () hlásí [email protected] pro všechno. GetRawLiweners (

Should Queue neznamená "běží později"

S frontou = synchronizace (výchozí na spoustu výrobních instalací), který ve vašem požadavku na most běží INLINE. Váš boot kontext je jeho vykreslování kontextu: každá registrace nebo URL vada ve vašem kufru přistane v zákaznické schránce. Zkontrolujte config ('queue.default') před úvahou o tom, kde něco běží, a podívejte se do pracovních míst /failed_jobs Před předpokládáním, že pracovník byl zapojen.

Stráž retestuje s vlastním státem platformy

Služba, která rozesílá bezpodmínečně musí být volán přesně jednou. Značka, která nemůže drift je vlastní stav platformy záznamu (pouze volání, když záznam je stále ještě čeká), ne paralelní "odeslané" vlajka, která může nesouhlasit s ním.

Bezhlavá bota není boot na webu

Zaregistrujte, co webové bootové registry

Template variables, module settings, filter hooks: platform service providers often register them only on a web request. On the reference integration the email handler substitutes only REGISTERED variables: every value was set correctly and the customer's confirmation still rendered with empty name, phone and link, no error anywhere, because registration lives in a runtime registry the headless boot never filled. Find the platform's registration call (for Botble: EmailHandler::addTemplateSettings with the module's email config) and make it in your boot, exactly as the platform's own provider does.

Pin Every URL root, nejen router

Zachycený požadavek ukazuje na váš můstek skript, takže trasa (), url() a aktivum () generovat site.com/ na veřejnosti /opsiq-bridge.php / Pokladna / TOKEN: zákaznický odkaz přes JSON konec. síla RootUrl (config ('app.url')) opravuje generátor; disk Storge má svůj vlastní kořen, takže e-mailové logo zůstane rozbité až do doby, než se soubory stems.disks.public.url je také nastavena (lazivě řeší, takže při startu funguje, a to pouze tehdy, když je prázdný nebo script- relative: operátorova CDN URL není vaše k ovládání).

Splňte, než mi to předáte.

Služby platformy číst prostřednictvím vlastního připojení a nemůže vidět vaši otevřenou transakci. Volaný před odevzdání, post- platební služba nenajde žádnou dokončenou platbu, tiše opustí záznam nezaplacené, a stále střílí své události, takže zákazník je emailem o záznamu platforma si myslí, že je nezaplacená. Odešlete graf, pak volat.

Pravidla upřímnosti

Žádné stínové záchyty.

Pokud je nativní cesta nedostupná, odmítnout s vratnou chybu před jakýmkoliv pohybem peněz. Nikdy vynalézt odkaz, nikdy raw- update status, aby se půlintegrovaný záznam vypadat dokončen. Ověřená platba, jehož rodné zpracování selhal jde na usmíření jako needs_attention: peníze jsou skutečné, stát je upřímně "zaplacen, ještě není zpracován".

Hlásit fakta, ne vaše prohlášení.

"Služba běží" a "zákazník byl řečeno" jsou různé skutečnosti: referenční integrace odeslala kompletní-vypadající e-mail s každou pole prázdné, zatímco ran- vlajka řekl pravdu. Vrátit je odděleně (zpracování dokončeno, oznámení pokus), mít per- call platform_notified které nutí OpsIQ Potvrzení zálohy, kdykoli platforma neproběhla a nikdy nepožaduje doručení: inbox není pozorovatelný ze serveru.

Měřit, pak psát

Loď jen read- schopnosti sonda v mostu: třída existence, podpisy metody, zdrojové kousky metod, které hodláte volat, surové posluchače, fronta řidiče, a (pokud lze odpovědět na otázku volání neškodné funkce), živé volání sám. Pět teorií o jednom duté e-mailu zemřel proti měření před zdrojem vyřešil. Průhledná jednotka stojí kopii souboru; špatné psaní na živé platformě náklady zákazníka.

Konektory

Most v jiných jazycích a dalších databázích

Mostový vzor není PHP vzor. Co OpsIQ volání je HTTP koncový bod, takže soubor může být Node, Python, Go, Ruby, .NET nebo Java, a obchod za ním může být jakýkoliv SQL motor nebo MongoDB. Co je PHP- ve tvaru je balicí potrubí, a že omezení rozhoduje, jak váš most dostane operátora. Přečtěte si dodací sekci nejprve: je to část, která překvapuje lidi.

Co konektor vlastně vyžaduje

Tohle je celá smlouva, nic v ní neoznačuje jazyk.

Doprava

HTTPS. Jeden požadavek na volání, žádné tělo, žádná jiná metoda.

Ověření

Sdílené tajemství v X-Opsiq-Bridge-Key Vyžádat hlavičku, ve srovnání s konstantním časem. Není parametr dotazu, není cookie, není Základní auth.

Parametry

Dotazy. op pojmenuje povrch, do pojmenuje operaci, zbytek jsou argumenty této operace.

Odpověď

JSON. {"success":true,"data":{...}} nebo {"success":false,"error":"snake_case_reason"}. Content- Type application / json, a bez cachingu.

Kódy stavu

200Úspěch.403nenakonfigurovaný nebo špatný klíč,404nenalezen,405chybná metoda,400špatný argument,501nepodporované na tomto schématu.

To je vše.

Žádný rámec, žádný runtime, žádná OpsIQ knihovna na vaší straně. Pokud to může sloužit, že, může to být most.

Dodávka: co může žít v mostu /, a co nesmí

Podepsaný balíček pokrývá pevný seznam rozšíření souborů a soubor mimo tento seznam je vynechán mimo ZIP. Přemostění v jazyce, který proto nemůže být dodáván uvnitř balíčku - ale již na vás nemůže dále mizet.26Srpen2026soubor v bridge/ že packager klesne je těžké konformity selhání, takže balíček odmítá projít spíše než instalaci bez mostu v něm.

Jak se s mostem / složkou zachází v době sestavení
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 a JavaScript - plně podporováno

Soubor lodě v podepsaném ZIP, a snippet ověřovatel drží svůj panel kopie byte- identický s ním, podle toho, co z nich je. Kontrola drift čte každý soubor v mostu /, nejen ty PHP, takže upgrade most se stable panel kopie selže budovat v obou jazycích.

Vše ostatní - doručit pouze přes panel

Panel snippet je prostý text bez ponětí, jaký jazyk to drží, takže to funguje pro každý stack. Dejte celý program webhook_help.snippet_template, název souboru v snippet_filename, a nenechte kopii na můstku / - konformita bude odmítnout balíček spíše než poslat ji duté. Řekni jasně webhook_help.body, že operátor kopíruje tento soubor spíše než dostat z balíčku.

Pokud skutečně potřebujete jiný jazyk v balíčku

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.

💡
Název souboru v webhook_help.snippet_filename kdykoli váš balíček přepravuje více než jeden most. Tak ověřovatel ví, který most kopie panelu patří k; bez něj, je nejednoznačné párování hlášeny jako varování o shodě a že útržek je ponechán nekontrolován.
⚠️
Bod kontroly driftu je, že soubor s mostem a jeho kopie obrazu jsou dvě kopie jednoho programu a WON diverge. Regenerovat spíše než hand- editovat: php tools/sync_connector_bridge_snippets.php --applya pak to přepodepište.

Brána, v šesti jazycích

Stejné čtyři kontroly v tomtéž pořadí všude: selhání uzavřena bez klíče, jedna metoda, konstantní-time klíč porovnání z hlavičky, pak připojit. Jediná skutečná past je srovnání, a to je jiná past v každém jazyce.

⚠️
Porovnej SHA...256trávení dvou klíčů, spíše než samotné klíče. Je to správné v každém jazyce, a to odkrývá skutečnost, že několik konstantních-time komparátory buď hodit nebo netěsnost na délku - Node je načasování SafeEqual vyvolává RangeError, když buffers liší délky, což změní špatný klíč do500místo403.
Node. js - brána
// 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 - brána
# Python — Flask
import hashlib, hmac, os
from flask import Flask, request, jsonify

app = Flask(__name__)
BRIDGE_KEY = os.environ.get("OPSIQ_BRIDGE_KEY", "")      # empty = bridge OFF

def same_key(a: str, b: str) -> bool:
    return hmac.compare_digest(
        hashlib.sha256(a.encode()).digest(),
        hashlib.sha256(b.encode()).digest(),
    )

def out(payload, code=200):
    resp = jsonify(payload)
    resp.status_code = code
    resp.headers["Cache-Control"] = "no-store"
    return resp

@app.before_request
def gate():
    if len(BRIDGE_KEY) < 24:
        return out({"success": False, "error": "bridge_not_configured"}, 403)
    if request.method != "GET":
        return out({"success": False, "error": "method_not_allowed"}, 405)
    given = request.headers.get("X-Opsiq-Bridge-Key", "")
    if not given or not same_key(BRIDGE_KEY, given):
        return out({"success": False, "error": "forbidden"}, 403)
Go, Ruby, . NET a Java - stejné srovnání
// 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)));
}

Ověření identifikátorů na každém databázovém motoru

Bezpečnostní vlastnost se nemění: tabulka nebo název sloupce, který volající dodal, musí být zkontrolován na reálné schéma před interpolací a každá hodnota musí být vázaný parametr. Pouze introspekční dotaz, citační znak a paging doložka se liší.

MySQLaMariaDB

Tabulky: SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = ?. Sloupce: stejné proti information_schema.COLUMNS s AND TABLE_NAME = ?. Citace se zádama, zdvojnásobení jakékoli backtick uvnitř. Strana s LIMIT n OFFSET m.

PostgreSQL

Stejné názory information_schema, názvy malých případů, WHERE table_schema = $1 (obvykle) public). Citovat s dvojitými citáty, zdvojnásobení jakékoli dvojité citace uvnitř. Strana s LIMIT n OFFSET m. Podívejte se na pravidlo skládání: necitovaný identifikátor je složen do nižší případ, takže porovnat case- bezcitný, když jste vyřešit jméno.

SQL Server

Stejný INFORMATION_SCHEMA zobrazení. Citace se čtvercovými závorkami, zdvojnásobení všech uzavírací držák uvnitř. Paging potřebuje příkaz BY: ORDER BY [id] DESC OFFSET @o ROWS FETCH NEXT @n ROWS ONLY.

SQLite

Tabulky: SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'. Sloupce: SELECT name FROM pragma_table_info(?) - použít tuto tabulkovou formu, protože holá PRAGMA table_info(x) Výpověď nemůže mít vázaný parametr a vyzvání interpolace řetězce je přesně díra, kterou se snažíte uzavřít. Citace s dvojitými uvozovkami. LIMIT n OFFSET m.

Věštkyně

Tabulky: SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = :owner; sloupce od ALL_TAB_COLUMNS. Citovat s dvojitými citáty, a pamatujte na necitovaný identifikátor se předává do UPPER případu, opak PostgreSQL. Stránka s OFFSET :o ROWS FETCH NEXT :n ROWS ONLY na 12c a později.

MongoDB

Žádný SQL, takže žádná interpolace identifikátorů a žádné vázané parametry - jiná disciplína pro stejný cíl. Viz níže.

Introspekční dotaz na motor
-- 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;
💡
Řešení, pak použít RESOLVED jméno. Nikdy projít hláskování volajícího přes do dotazu i po kontrole - podívejte se na skutečné jméno v seznamu čtete ze schématu a interpolovat, že. To nic nestojí a zavírá mezeru mezi "toto jméno odpovídá něco" a "to je jméno jsem asi spustit".

MongoDB: stejná pravidla, bezSQL

Není žádný řetězec otázek, do kterého by se vpíchl, takže lidé předpokládají, že není co střežit. Je zde: dokument filtru. Předávání volajícího dodávaného JSON přímo do find() nechá volajícího poslat {"$ne": null} nebo {"$gt": ""} kde jste očekávali hodnotu, a tiše vybrat každý dokument. Vytvořit filtr sám.

MongoDB - seznam výběrových možností, skalarně vynucený filtr, projekce jako reakční
// 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();
Názvy sbírek pocházejí z listSběrnic

To je váš information_schema. Vyřešte volající pravopis proti němu a použijte vyřešené jméno.

Vytlačte každou hodnotu filtru na skalár

Řetězec () nebo číslo () kolem je celá obrana proti vstřikování operátora. Dokument, kde jste očekávali hodnotu, je ekvivalent NoSQL zatoulané citace.

Projekce je pravidlo o reakci

Vyjměte pole ve tvaru sekretu v projekci, aby nikdy neopustili server, než je poté smažou z výsledku.

Smaže pobytový dokument podle _id

Nikdy nedeleteMany a nikdy filtr, který byl volajícím ovlivněn. Never deleteMany and never a filter the caller influenced.

Písma zůstávají povolená

Stejné odůvodnění jako SQL: pojmenovat sbírky, které se mohou dotýkat zápisu, a odmítnout zbytek s vysvětlením.

Konečný ukazatel identity v jiných jazycích

Sonda identity je druhá polovina mostu, a to je HTTP také. Podpisový blok je identický ve všech jazycích: base64url užitečné zatížení,HMAC- SHA256, spoj se s tečkou.

Nepište to ručně. Nastavení, Portál podpory nese připravenou cestu pro portál (jednominutový, dvouminutový token). Vzdálené stránky, vaše stránky, kódy, C. Rozpoznávání logged- u zákazníků automaticky přenáší chat verzi jazyka (jednohodinový symbol plus refresh hander). Vezměte signer z chuti, která odpovídá vaší stack.
Co změnit, když ji znovu použijete

Tyto útržky máta Portal handoff token, který je záměrně přísnější: to nese jti a single_use:pravda a žije o 120 sekund, protože cestuje v URL. Most nebo widget identity token nese ani jeden z nich a používá delší exp, minut až hodiny.

Co zůstane stejné

site_key, iat, exp a nejvyšší úroveň ověřena: pravda, plus admin nebo zákazník subjekt s ID a uživatelské jméno nebo e-mail. Stejná tvrzení, stejný podpis, stejné tajemství.

Oba symbolické tvary ověřují

Třídílný JWT podepsal HS256 práce, a stejně tak dvoudílné base64url užitečné zatížení plus hex HMAC, které referenční verze PHP emituje. Použijte podle toho, co vaše knihovny jazyka je přirozené - JWTknihovna je obvykle kratší cesta mimo PHP.

Nikdy to nemávněte v prohlížeči

Pravda v každém jazyce. Podepisování klient- side znamená, že předává tajemství stránky každému návštěvníkovi.

- Vážně si vybírám.

Platforma je PHP

Napište most v PHP. To se přepravuje v balíčku, je drift- checked, a to může spustit platformu vlastní rámec číst živé relace pro identitu sondy. Nic jiného vám všechny tři.

Platforma je Node

Mostové lodě, značky a je drift- kontrolována přesně jako PHP. Nic se nevzdá.

Platforma je Python, Ruby, Go, . NET nebo Java

Doručte přes panel snippet a řekněte to v panelu tělo; nenechávejte soubor v mostu /, kde shoda bude odmítnout balíček. Konektor je jinak zcela normální: akce, kontextové poskytovatele, identity a vyhledávání hostů všechny fungují stejně, protože žádný z nich nezajímá, co odpověď HTTP volání.

Nemůžete spustit proces na platformě hostitele

Pak je vzor mostu není ten správný nástroj. Most existuje pro dosažení platformy zevnitř svého hostitele. Pokud se k němu dostanete jen zvenčí, píšete obyčejný API konektor proti čemukoli povrchu, který vystavuje.

⚠️
Další omezení stojí za plánování: sonda identity musí číst přihlašovací relaci platformy, což obvykle znamená běh uvnitř vlastního procesu platformy nebo alespoň na jejím hostiteli s přístupem k jeho relace store. Most napsaný v jiném jazyce od platformy může sloužit data pohodlně a může stále bojovat s odpovědí op = admin_identity. Pokud je to váš případ, pošlete datový most ve vašem jazyce a identita sondy v platformě.
Konektory

Dejte asistentovi obě poloviny: akce a kontext

To je jediná nejčastější věc chybí z konektoru, který "funguje, ale je k ničemu". Akce nechat AI DO věci. Kontextové sekce nechat vědět věci. Spojovací prvky potřebují jak, a většina otázek admin klade jsou zodpovězeny kontextem, nikdy akce. Konektor s dokonalými akcemi a žádný kontext poskytovatele bude pravdivě hlásit, že nemůže vidět nic.

Dvě poloviny.

Akce - jak AI dělá věci

Vyhlášen v akci.jsonnebo vrácen registerActions (). Model si vybere jeden, vyplní své parametry, aOpsIQprovádí ji. Akce jsou pro slovesa: zrušit tuto rezervaci, otevřít tiket, změnit tento stav.

Kontextové sekce - jak AI ví věci

Sestaven ContextProvider před spuštěním modelu. "Kolik objednávek tento měsíc," "kteří jsou mými nejnovějšími zákazníky,", "co budeme prodávat" vše vyřešit prostřednictvím kontext vyhledávání, a nikdy se dotknout akce vůbec.

⚠️
Symptom chybějícího poskytovatele: asistent odpoví "Žádný zapnutý konektor dodal tuto kontextovou část", zatímco je konektor nainstalován, povolen a prochází jeho připojením testu. Nic není zaznamenáno, nic se nechybuje. Tato zpráva znamená, že žádný poskytovatel si sekci nárokoval.

Univerzální slovník sekce

OpsIQ žádá o sekce podle generického názvu. Vaším úkolem je rozhodnout, co každý z nich znamená na platformě a odpovědět na něj. Hotel rezervace je objednávka hotelu; pokoj je to, co hotel prodává. Mapa, nevymýšlejte.

objednávky / pending_orders

Ať už je transakce na vaší platformě: objednávky, rezervace, rezervace a pracovní místa, zásilky. pending_orders je stejný seznam filtrován do nedokončených.

klienti

Seznam zákazníků.

products

Co platforma prodává: produkty, pokoje, plány, služby.

vyúčtování

Příjmy a peněžní částky ve tvaru součtu podle státu.

vstupenky, služby, domény, servery, činnost

Používejte je, když je vaše platforma skutečně má. Nevynucujte mapování - nezodpovězená sekce je lepší než špatná.

Cokoliv jiného, co vaše platforma má

Vyhlaste si vlastní. Poskytovatel, který prohlašuje sekce (): ['licence', 'zásilky'] má ty sloučené do seznamu univerzálních vyhledávacích možností, takže platform- specifické vyhledávání se stává k dispozici bez zásadních změn.

Chyba, která stojí den.

Provider kontextu musí implementovat rozhraní. Typ registru ho kontroluje, takže je přeskočena třída, která pouze hledá pravdu - bez chyby, kdekoliv.

ContextProvider. php — smlouva, z referenčního balíčku 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 '';
    }
}
Zaregistrujte to z konektoru

Provést ContextConnectorInterface a vrátit své poskytovatele z contextProviders (). Třída konektoru může také implementovat ContextsProvider Interface přímo a být registrován jako sám.

Vrátit prostý text, ne JSON

build () vrací textový blok, který je koncentován do tlačítka. Napište to pro čtenáře: nadpis, pak jeden řádek za řadu.

"Vrať se" místo házení

Zachyťte si vlastní výjimky. Poskytovatel, který hází je přihlášen a přeskočil, ale vrací "je smlouva.

Stavitel pro vás nemůže psát sekce ()

Vygenerované sekce ContextProvider. php (): pole {return [];} a průvodce pro něj nemá žádné pole. Vyplňte jej ručně - a pamatujte, že znovu publikování z souboru průvodce OVERWRITES. Kopírujte si své edity jako první.

⚠️
Uveďte skutečný TOTAL, ne počet řádků, které jste zaslali. Stránka není celkem. Poskytovatel, který uvádí dvacet řad, aniž by řekl, tak dostane asistent důvěrně odpověď "máte20rezervace "pokud platforma drží669. Jeden levný COUNT a jeden explicitní řádek - "CELKEM v souboru:669(tento seznam ukazuje nejnovější20pouze) "- je celá oprava, a sebevědomě nesprávné počet je horší než žádný počet.
Blok sekce, který nelze přepočítat
$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);

Jmenujte své akce, aby OpsIQ může rozpoznat čtení z písma

OpsIQ klasifikuje akci podle SLOVA ve své action_id, a to je záměrně konzervativní: vše, co nemůže rozpoznat, je považováno za zápis a požaduje schvalovací kartu. Získejte sloveso správně a čtení prostě běží.

1
is_destructive nebo requires_confirmation výhry

Pokud je nastaveno jedno nebo druhé, akce vždy potřebuje souhlas. Vyhlaste je upřímně - to je to, co se nachází na admin schvalovací karty.

2
Slovo na papíře kdekoliv v ID z něj dělá zápis

přidat, vytvořit, otevřít, aktualizovat, upravovat, změnit, změnit a odstranit, odstranit, zničit, zrušit, vrátit, pozastavit, ukončit, aktivovat, schválit, odmítnout, odeslat, značku, reset, zachytit, neplatné, zavřít, znovu otevřít, přidělit, zrušit nebo udělit, nastavit, přepnout, povolit, zakázat, vydat, generovat, použít, poplatek, platit, ustanovení, obnovovat, upgrade, sloučit, přesunout, eskalovat, vlajka, registr, synchronizace, tlačit, import, spustit, spouštěč, start, stop, restartovat a několik dalších.

3
Pak čtete slovo dělá to čtení

získat, seznam, vyhledávání, najít, zobrazit, ukázat, aportovat, počítat, vyhledat, popsat, číst, export, náhled, test, ping, status, shrnutí, detail, poslední, historie, kontrola, log, statistiky, metrika, přehled, příjmy, členění, zpráva, analytika, bilance, využití, kvóta, snímek, pohledy, krmivo, návrh, triage, klasifikovat, navrhnout.

4
Pak se HTTP metoda rozhodne

Get, Head a Opce jsou čteny.

5
Jinak je to zápis

Nerozpoznané znamená, že je vyžadováno schválení. Tento výchozí hodnota je úmyslný.

⚠️
Psaní slova jsou kontrolovány Před čtením slov, takže smíšené jméno jako get_and_sync_orders je klasifikován jako WRITE. Vyberte si jedno sloveso, dát ji na první místo, a udržet ji čistou: list_orders, get_customer, search_bookings, cancel_booking, set_order_status.

Prohlásit native_api pouze tehdy, pokud platforma skutečně má

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.

Stavitel rozhoduje z vaší odpovědi na data- přístupový přístup

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.

Ručně-autorské balíčky musí stále mít to správné

Pokud ten manifest píšete sám, oznamte přesně jeden z native_api nebo platform_bridge. Utuchající dárky platform_bridge jako únikový poklop se očekává, že most konektor má, a Builder odmítá spec, který tvrdí, platform_bridge na API konektor.

Ať už je to jakkoliv, tak si ho nechte.

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.

Naučte se admin mozek o své platformě

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.

ai_expertise_admin.md

Co je tato platforma je, jak jsou její data tvarována, jak se jí říká objekty a co by jinak asistenta uhodla. Napište to pro kompetentního kolegu, který nikdy tuto platformu neviděl.

ai_api_reference.md

Volitelný povrch. Pro můstkový konektor je to vaše operace a dělat slovní zásobu s jejich parametry, ne Rest koncový stůl.

Rozpočet

Zhruba6,000znaky uchovávané na jednom konektoru a asi24,000znaky pro celý blok přes každý zapnutý konektor. Přes per- konektorový uzávěr je váš soubor zkrácen; být stručný před tím, než je redukátor.

Přesné platby

Tyto soubory jsou rozdíl mezi asistentem, který používá vaše univerzální stolní nástroje a odpovídá ze špatné sekce, protože nic mu nikdy neřekl, že tyto nástroje existují.

💡
Oba soubory musí být v balíčku INSTALLED, nejen váš zdrojový strom. Jsou to běžné balíkové soubory, takže jsou zahrnuty do podpisu a odeslány v ZIP - což také znamená jednu editaci po podpisu prolomí pečeť.
Konektory

Identita přes konektor: admin, zákazník, portál

Jeden podpis smlouvy slouží tři povrchy. Konektor je úkolem je, aby se "kdo je přihlášen na platformě" na podepsaný tokenOpsIQmůže ověřit, a pak předložit ověřený subjekt vOpsIQKontejner nikdy nikoho neověřuje - platforma ano, a podpis nese toto tvrzení.

Tři povrchy, jeden znalec

Admin - váš personál, uvnitř vašeho pozadí

Admin subjekt. Widget zatížení uvnitř platformy admin panel a každý zaměstnanec je zapsán do svého vlastního OpsIQ agenta. Plný průchod na stránce admin widget.

Zákazník - znakový zákazník, v pokecu s klientem

Zákaznický subjekt. To je to, co umožňuje logged- in zákazník získat svůj celý účet místo anonymní vyhledávání: každá objednávka, úplné detaily, a jakékoli self-servis akci, kterou povolíte.

Portál - hluboké spojení do portálu podpory

Stejné nároky plus jti a single_use, s 120-druhý život, protože token cestuje v URL a musí být utrácet jednou. Neválejte to ručně: Nastavení, Portál Support nese připravený útržek za jazyk, a platforma vám ji vymění, když je na tomto serveru spuštěna oblast účtu.

Smlouva o užitečném nákladu

Toto jsou tvrzení ověřovatele, které nejsou volitelná, ať už by to naznačoval nějaký jiný dílčí příklad.

site_key

Nejvyšší úroveň. Musí se rovnat klávesy stránky požadavku, nebo je token zamítnut.

iat a exp

Nejvyšší úroveň, unix sekundy. exp musí být v budoucnosti a po iat. Token více než asi minutu v budoucnosti je odmítnut. Udržujte život krátký - minut až hodiny.

ověřeno: pravda

Nejvyšší úroveň, vedle exp. Vaše platforma tvrdí, že skutečný člověk je přihlášeni.

plošina

Nejvyšší úroveň. Krátká slimák pojmenování původu. Doporučeno, a to umožňuje konektor je poskytovatele identity říct své vlastní žetony z jiné platformy.

admin nebo zákazník

Objekt s názvem subjektu. Musí mít neprázdné ID, a uživatelské jméno nebo e-mail - per- admin přístupová brána se shoduje na těchto. Zahrňte obojí, když máte oba.

Minting, doslovně z mostu v 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);

Dva ověřovatelé a selhání, které způsobují

OpsIQ má dva token ověřovatele, a nebyly totožné. Vědět, že to ušetří vám odpoledne, protože symptom nevypadá vůbec jako příčina.

Admin widget má vlastního ověřovatele.

opsiq/ vloženo /admin_ajax.php nese místního ověřovatele, který přijímá ověřenou vlajku v obou polohách. Seznam konverzací, historie a nepřečtené všechny projít, takže ověřují v pořádku.

Sdílený ověřovatel je přísnější

opsiq/ včetně /customer_identity_token_verify.php sedí za chatovacím proudem a jádrem AJAX APIHistoricky vyžadoval vlajku na úrovni TOP.

Symptomy

Historie a konverzace fungují. Každý chat se obrátit odpovědi "Admin přihlášení potřebné". Čte přesně jako relace chyba a není: token chybí horní úroveň vlajky.

Co dělá současné jádro

Nyní přijímá vlajku na nejvyšší úrovni OR uvnitř předmětu, takže smlouva je jednotná. Starší jádra číst pouze horní úroveň. Emit kanonický tvar a balíček funguje na každé vydání.

Toto je strojově zaškrtnuto. Jakýkoliv soubor ve vašem balíčku, který Mints identity tokeny je staticky skenován proti smlouvě, a užitečné zatížení platforma by odmítnout nevyhovuje přesně souboru a řádku. Spustit to sami: php nástroje / verify_identity_contracts.

Signed- v zákaznících v pokecu s klienty

Dvě věci musí být pravdivé. Jádro musí razítko ověřeného zákazníka, a váš konektor musí prezentovat.

1
Váš most nebo koncový bod, který vám pomůže se zákazníkem

Stejný znalec jako admin jeden, se zákazníkem subjektu. Přečtěte si zákazníka z platformy vlastní relaci. Pokud vaše platforma připisuje zákazníky na jinou stráž od administrátorů, přečtěte si strážní, kterou chcete a nikdy se nevracejte přes subjekty - to je, jak by zákazník byl předán admin token.

2
Jádro to ověřuje a razítko.

Na základě platné známky, jádro razítka ověřený předmět do zasedání. Váš poskytovatel čte prokázanou identitu, to nikdy ověření.

3
Váš identifikátor je prezentován

detectZákazník () vracíOpsIQtvar. Musí implementovatOpsIQ\ Platform\ IdentifityProviderInterface, nebo registr tiše přeskočí - stejná past jako kontextový poskytovatel.

4
Vaše zákazní- skenované akce přijmout customer_id

A OpsIQ to před provedením uzamkne na ověřenou identitu. Model to nemůže dodat.

IdentifityProvider. php - přečtěte si prokázanou identitu, prezentujte ji ve tvaru OpsIQ
use OpsIQ\Platform\IdentityProviderInterface;

final class IdentityProvider implements IdentityProviderInterface
{
    public function slug(): string  { return 'yourplatform_identity'; }
    public function label(): string { return 'Your Platform identity (bridge-signed identity_token)'; }
    public function priority(): int { return 25; }   // ahead of the generic session provider

    public function isAvailable(): bool
    {
        try {
            $s = \OpsIQ\Connectors\ConnectorRegistry::getSettings('yourplatform') ?: [];
            return trim((string)($s['base_url'] ?? '')) !== '';
        } catch (\Throwable $e) { return false; }
    }

    public function detectAdmin(): ?array
    {
        $row = $this->sessionRowFor('_opsiq_admin_identity');
        if (!$row || !$this->isOurs($row)) return null;
        return [
            'id'       => (int)($row['id'] ?? 0),
            'name'     => $this->displayName($row, 'Admin'),
            'email'    => (string)($row['email'] ?? ''),
            'username' => (string)($row['username'] ?? ''),
            'role'     => (string)($row['role'] ?? ''),
            'platform' => 'yourplatform',
            'source'   => 'yourplatform_identity_token',
        ];
    }

    public function detectCustomer(): ?array
    {
        $row = $this->sessionRowFor('_opsiq_customer_identity');
        if (!$row || !$this->isOurs($row)) return null;
        return [
            'id'       => (int)($row['id'] ?? 0),
            'name'     => $this->displayName($row, 'Customer'),
            'email'    => (string)($row['email'] ?? ''),
            'phone'    => (string)($row['phone'] ?? ''),
            'platform' => 'yourplatform',
            'source'   => 'yourplatform_identity_token',
        ];
    }

    /* A session identity stamped by ANOTHER platform's token must not be
     * claimed here. An empty platform is accepted because older bridges did
     * not stamp one, and the site key already scoped the token. */
    private function isOurs(array $row): bool
    {
        $p = strtolower(trim((string)($row['platform'] ?? '')));
        return $p === '' || $p === 'yourplatform' || $p === 'remote';
    }

    private function sessionRowFor(string $key): ?array
    {
        if (session_status() !== PHP_SESSION_ACTIVE) return null;
        $row = $_SESSION[$key] ?? null;
        return (is_array($row) && (int)($row['id'] ?? 0) > 0) ? $row : null;
    }
}

Vlastní-skenované akce: dva zámky, obojí potřebné

Model nesmí nikdy zvolit, čí data čte. OpsIQ prosazuje, že na jeho straně, a vaše platforma musí vynutit ji na druhé straně také. Jeden zámek je chyba daleko od úniku, dva zámky jsou smlouva.

Zamknout1 — OpsIQpřepíše parametry identity

Před akcí customer- chat běží, OpsIQ nahrazuje každý identifikovaný parametr s identitou návštěvníka VERIFIED: client_id, clientid, user_id, userid, customer_id, account_id vzít ověřený číselný identifikátor; client_identifier, customer_identifier, account_identifier vzít to jako řetězec; e-mail, client_email, customer_email, user_email Vezměte ověřený e-mail. Ať už je navrhovaný model vyřazen.

Lock 2 - vaše platforma re-cops každý dotaz

Vezměte id jste dostali a přidat do bodu Where každého čtení a každý zápis na tomto povrchu. Nikdy nevěřte referenci v žádosti sám o sobě. Znamení-v zákazníkovi ptát se na objednávku někoho jiného musí vrátit prázdný, není zakázáno.

Jmenujte své parametry tak, aby je 1 mohl najít

Nahlaš to customer_id, ne ref. parametr OpsIQ nerozpoznává je parametr, který nemůže zamknout.

⚠️
Dejte značce-in zákazníkovi povrch jeho vlastní provoz, oddělený od admin ty, i když SQL vypadá podobně. Dvě povrchy s různými pravidly zůstávají poctivé, jeden povrch s vlajkou se stane únik v den, kdy někdo edituje špatné větve.

Nulová strana zapojení: sonda s konektorem

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.

settings.json - nastavení sondy
{
  "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."
}
Sonda je volána prohlížečem

Same- původ, takže nemůže nést vlastní hlavičku. Jeho autentizace je platforma relace. Dejte ji AHEAD vaší brány klíče, držet to mimo záznam dat, a vrátit vůbec nic pro logged- out návštěvníka.

To odpovídá pevnému tvaru

{"success":true,"authenticated":true,"admin":{...},"identity_token":"..."} — and {"success":false,"authenticated":false,"error":"..."} when nobody is signed in.

Žádné dlouho-žil tajemství ve zdroji stránky

Pouze podepsaný, vypršející symbol.

Kompletní koncový parametr implementace pro Laravel,WordPress, WHMCS, Symfony and plain PHP, plus hard-won Laravel specifics and the troubleshooting order, are on the admin widget page. They are the same code for a customer subject: change the guard you read and the object key you signer.

Konektory

Publikování: editace složky není publikování

Nejběžnějším způsobem, jak ztratit odpoledne, je upravit konektor pod marketplace_connectors /, přeinstalovat, a najít nic se změnilo. Instalace nečte tuto složku. Vytahují podepsanou ZIP z katalogu trhu. Publikace je posloupnost, která dává vaše změny do této ZIP.

Proč editace nic neudělala

marketplace_connectors/<slug>/ is the SOURCE

Tam pracuješ, nic z toho neinstaluje.

Katalog obsahuje podepsanou ZIP

Instalace stahuje, že ZIP, ověřuje podpis a rozbaluje jej. Dokud si znovu ZIP nepřebudujete, každá instalace stále dostává starý balíček.

Builder konektoru vydává někde jinde

It writes into /connectors/<slug>/ on this install. That is a local connector, not a marketplace release. The two paths do not overlap.

Sled uvolnění

1
Vybumpujte verzi ve dvou souborech

settings.json a connector_contract.json. Konformance srovnává je a selže, pokud slimák, verze nebo soubor schopností nesouhlasí. Přidat CHANGELOG.md vstup, když jste tam - je to požadovaný soubor.

2
Přesynchronizovat mostní odstřižek

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
Přepsat každý balíček

php nástroje / resign_all_connectors. php - podpis pokrývá soubory hashe, takže Anyany editace zneplatňuje. Podepsat poslední, po každém souboru je konečné.

4
Exportovat podepisovací klíč, pak osivo

Seeder značí každý balíček, když staví ZIP, a běží v kontextu, kde klíč nelze číst z nastavení - takže musí pocházet z prostředí.

5
Vyšlete soubor s mostem, pokud jednu pošlete.

Přeinstalování konektoru aktualizuje balíček. NEDOTČÍ se kopie sedící v nosítkách operátora. Řekni jim to, v panelu a v měňavce.

Celé to propuštění, v pořádku
# 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
⚠️
Proč není vývoz volitelný: znalec hledá klíč v OPSIQ_CONNECTOR_SIGNING_KEY první a connector_signing_key nastavení druhý. Seřizovač běží na saaS bootstrap a nástroje /sign_connector.php boty vůbec nic, takže v obou nastavení čtečka neexistuje - bez proměnné prostředí není žádný klíč, a dostanete "Bez podpisu klíče k dispozici" nebo každý balíček hlášen jako signing_failed. Pouze nástroje /resign_all_connectors.php boty OpsIQ a najít klíč sám.

Co vlastně lodě

Pouze soubory, které se na podpis vztahují

ZIP je postaven z vlastního seznamu souborů znaku, takže není odeslán zatoulaný soubor ve složce balíčku. To je záměrné: nepodepsaný soubor používaný k jízdě na zákazníky.

Krytá rozšíření

fp,json, js,css, md, txt,html, sh, svg, png, jpg, jpeg, gif, webp, ico, yml, yaml - rekurzivně, včetně mostu / a testů /. signature.jsonsám je vyloučen z haše a pak přidán do ZIP, takže instalace mohou ověřit.

Vše ostatní je hlášeno jako not_packaged

Seeder pojmenuje každý soubor, který po sobě zanechal. Přečtěte si tento seznam. Soubor, který jste očekávali, že tam bude odeslán, znamená nesprávné rozšíření nebo špatné umístění - ne tichý úspěch.

Úprava jakéhokoliv krytého souboru přeruší pečeť

- Přepiš ten balíček.

Požadované soubory v rozdělitelném balíčku

connector.php

Musím vrátit instanci ConnectorInterface.

settings.json

Manifest: slimák, jméno, verze, manifest_version, kompatibilita, schopnosti, connector_contract_version, nastavení.

connector_contract.json

Machine- čitelná smlouva. Jeho slimák, verze a schopnost musí být identické s settings.json.

README. md, DEVELOPEROr. md., CHANGELOG. mD

Všechny tři jsou kontrolovány na existenci A minimální velikost. DEVELOPEROPER. MD potřebuje skutečný obsah, ne stub.

Soubor na každou deklarovanou způsobilost

Každá schopnost pojmenuje soubor, který očekává — ContextProvider.php pro kontext, IdentityProvider.php pro identifikaci, GuestLookupProvider.php místo guest_lookup, a tak dále - pokud konektor neprovede inline funkci.

Nic, co by vypadalo jako důvěryhodné.

Konformance prohledává tři Markdownové soubory pro tajné hodnoty a soukromé klíče a na místě se to nepovede.

Zkontroluj to, než to tam pošleš.

Kompletní conformance suite je stejný jako install běží. Kontroluje manifest proti kanonické smlouvy, že runtime a zjevné schopnosti souhlasí, že každá deklarovaná schopnost má svůj soubor a své metody, identifikační-token smlouva v každém mincovním souboru, bridgesnippet zápas, guest- look allowlist hygiena, akce jedinečnost a potvrzení bezpečnosti, a podpis balíčku.

Proběhněte všechny čtyři před každým vydáním
# 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
💡
Jedna chyba se očekává a není problém: kontrola podpisu balíčku hlásí varování, zatímco jste ještě editace. To čistí okamžik, kdy re- podepsat. Každá další selhání je skutečný jeden.
Konektory

Kontejner a životní cyklus

Toto je zdrojová smlouva na výstavbu konektoru, který OpsIQ může objevit, konfigurovat, validovat, povolit, provádět, testovat, podepsat a distribuovat.

Odkaz na vývojáře
Balíček konektorůBalíček konektorů má požadovanou implementaci konektoru a manifest, s volitelnými akcemi, recepty, znalosti, aktiva a podpisovými metadaty.Balíček konektorůdeveloperMANIFESTv1LIFEYCLESprávaPRACOVNÍ SPACEKopírovatŽIVÝ VÍDEJ PRACOVNÍHO SPACEconnector.phpTřída / továrna konektoruPožadovánosettings.jsonProvést a nastavit schémaPožadovánoactions.jsonDefinice opatřeníNepovinnésignature.jsonMetadata podpisu baleníUvolnit1DECLAREManifest a schopnosti2IMPLEMENTLifecycle a poskytovatelé3VALIDÁTZkouška, značka, balíček
Balíček konektorů má požadovanou implementaci konektoru a manifest, s volitelnými akcemi, recepty, znalosti, aktiva a podpisovými metadaty.

Minimální balení

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

Smlouva o manifestu

settings.json používá manifest verze 1. Validátor očekává slimák, jméno, verze, manifest_version, kompatibilita, popis a schopnosti. Kompatibilita prohlašuje opsiq_min a opsiq_max. Stav uvolnění je jedním z výroba, beta, náhled nebo šablona; Schopnost zralosti využívá úrovně L1-L6. Legacy balíčky lze normalizovat s varováním, ale nový balíček by měl projít bez varování.

Rozhraní hlavního konektoru

  • Identita a nastavení: slug(), name(), description(), capabilities(), settingsSchema(), testConnection().
  • Celoživotní cyklus: onEnable() a onDisable(). Zakázat musí být non-destruktivní; data očista je samostatná záměrná operace.
  • Příjezd / synchronizace: handleWebhook(), poll(), backfill(). Poll zpracovává přírůstkové práce; zpět vyplnit historii dovozu a musí být bezpečné opakovat.
  • Podpora: pushReply() pokud platforma přijímá odpovědi.
  • Akce: registerActions() dodávky realizovatelné akční smlouvy.
  • Bezpečnost: securityCapabilities(), syncBlockedIp(), removeBlockedIp(), testSecuritySync().

Abstraktní báze také nabízí volitelné zaostřené zadní vyplnění, zákaznický výpis, email- account objev / tvorba, předplatitelé, admin / detekce zákazníků, fakturační / kontextové / identity poskytovatelů, reextrakce, přezkoušení HTTP volání, JSON-path access, fuzzy ranking a pagination helpers.

Schopnosti a autentizace

Podporované názvy schopností zahrnují akce, spouštěče, kontext, identitu, prodej, fakturaci, inbound_ticket, outbound_reply, sync_users, sync_departments, security_events, customer_import, security_native_block, promo_audience, promo_feed, email_mailbox, native_api, ai_brain_aware a ai_tickets. Stavitel poskytuje API klíč, nositel, základní, HMAC, OAuth 2 klientské pověření, OAuth 2 autorizační kód a vlastní ověřovací šablony.

Životní cyklus registru

  1. Objevení načte balíček a potvrdí jeho manifest.
  2. Konfigurace je uložena na pracovní prostor; tajemství jsou zašifrována.
  3. Zkouška připojení dokazuje průkaznost bez umožnění konektoru.
  4. Povolit volání onEnable(), synchronizuje definice činnosti a může spustit počáteční backfill.
  5. Vydávání lístků / webhook / poprava předplatitelů vždy nese kontext pracovního prostoru.
  6. Zakázat volání onDisable() a zastaví činnost bez vymazání importovaných dat.
  7. Očista je samostatná explicitní operace.

Pravidla korektnosti

  • Pomocí klávesy pracovní prostor / stránky v každém čtení, psaní, cache klíč, deduplikační klíč a vyhledávání webhook.
  • Vytvořte back fill, webhook požití a psát akce idempotent. Zaznamenejte externí ID / událost, kdekoli platforma poskytuje jeden.
  • Pro vzdálené systémy použijte jejich API; nikdy předpokládat, že jejich databáze tabulky existují v OpsIQ spojení.
  • Vracet strukturované, zákazní- bezpečné chyby. Nikdy odhalit tajemství, syrové poskytovatele stopy nebo jiné pracovní prostor existence.
  • Vyhlásit pouze schopnosti balíček skutečně implementuje. actions.json katalog neučiní akci použitelnou, dokud není konektor nainstalován, zapnut, nakonfigurován a jeho připojení je platné.

Zkoušení a uvolnění

Spusťte PHP kmínky, manifest validace, připojení testy, akční schémata testy, webhook signature / REplay testy, workspace- izolačních testů, backfill- opakující se zkoušky, vyřazené konektorové testy a selhání / retry test. Tržní balíček by pak měl být podepsán a ověřen, patří nastavení / oprávnění / webhooku dokumentace a uveďte jeho skutečný stav uvolnění. Konektory a manifesty jsou autoritativní signál dostupnosti.

Konektory

Recepty pro konektory

Step-by- step recepty pro běžné konektory setups.

Recepty
Recept na konektorRecept na nastavení Shopify jako kontrolní seznam: vytvořit aplikaci, grantové skopy, vložit token a test, povolit webháky, umístit zkušební objednávku.Recept na konektorShopifyRecept · Shopify s webhákyVytvořit vlastní aplikaci v Shopify adminGrantové skoky: read_orders, read_customers…Vložit uloženou doménu + token, klepněte na tlačítko TestPovolit synchronizaci Webhook (objednávky autoregister)Umístěte zkušební objednávku → se objeví v prodeji v 30s1STEP BY STEPKopypasty recepty2REAL PLATFORMSShopify · WHMCS· Stripe · GBP3OVĚŘENÍVýstavy objednávek v 30s
Každý recept je kontrolní seznam, který budete sledovat shora dolů, zde, Shopify s reálným-time objednávky webháky, ověřeno testovacím pořadí.

Recept: Shopify s real-time webháky

Scénář:
Cíl: Připojení Shopify s automatickým synchronizací objednávky a GDPR dodržování předpisů.
Co dělat:

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.

Recept: WHMCS integrace

Scénář:
Cíl: Připojte WHMCS, aby AI mohla vyhledávat klienty, služby, vstupenky a faktury.
Co dělat:

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.

Recept: Stripe platby

Scénář:
Cíl: Sledovat platby Stripe a nechat AI vyhledávat transakce.
Co dělat:

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.

Recept: Google Business Profile

Scénář:
Cíl: Připojte GBP pro správu, příspěvky a poznatky.
Co dělat:

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.

Konektory

Rozšiřte zpravodajskou službu CRM & Site

OpsIQ subsystémy jsou otevřeny pro rozšíření. Konektor může připojit novou schopnost do CRM nebo Site Intelligence beze změn OpsIQ jádro, přes registr schopností platformy (\OpsIQ\ Platform\ CapabilityRegistry). Vyhlaste schopnost, zadejte její malou sadu metod, pošlete konektor,OpsIQ objeví a navede do UI, Zákazník 360 časová osa a instalace je doporučena.

Rozšiřte CRM & SI
Kapacita platformyPropojka na levých napájecích sběrnicích (CRM, Site Intelligence, Analytics) objevená registrem Kapacity. i. g.Kapacita platformypracovní prostorVáš konektorprohlašuje schopnostiCRMkalendář · obohacení · esign · platby · poštovní schránkaZpravodajská služba na místělocal_listing · hodnoceníAnalytikaweb_analytics · zpráva & ingestCapabilityRegistryObjevuje & vodiče časové osy UI +1DECLARESchopnosti, ne základní edity2PLUG INCRM · SI · Analytics busy3AUTO-WIREDUI, časová osa, podněty
Kontejner prohlašuje schopnosti (kalendář, obohacení, hodnotové údaje, analytika...) a OpsIQ je automaticky převede do CRM a Site Intelligence, žádné změny jádra.

Vyhlášení způsobilosti

Prohlášení (usazení.json)

Přidat <domain>_capabilities pole, nejlepší pro nekódové / tržně orientované konektory. crm, site_intelligence.

Kód (connector. php)

Provádění crmCapabilities() / siCapabilities() Vrací stejné deskriptory.

Vyhlášení CRM kalendáře poskytovatele (settings.json)

Scénář:
Cíl: v CRM Schedule- meetingovém panelu se zobrazí kalendářní konektor.
Co dělat:

"crm_capabilities": [ { "type": "calendar", "label": "Calendar (Acme)", "actions": ["createEvent","listEvents","freeBusy"], "requires_auth": true } ]

Vyhlášení poskytovatele zpravodajských služeb na webových stránkách (settings.json)

Scénář:
Cíl: předávat data z lokálního seznamu do zpravodajské služby na webu.
Co dělat:

"site_intelligence_capabilities": [ { "type": "local_listing", "actions": ["listLocations","listReviews","getInsights"], "requires_auth": true } ]

Schopné autobusy a jejich povrch metody

crm / kalendář

createEvent($settings,$params) → {úspěch,event_id,html_link,meet_link}; listEvents; freeBusy. Driven by\OpsIQ\ CRM\ CalendarBridge.

crm / obohacování

enrich($settings,$params) → {úspěch, vlastnosti}. Řízen\OpsIQ\ CRM\ EnrichmentBridge (také běží automaticky na vytváření společnosti, když je poskytovatel připojen).

crm / esignCity in New York USA

sendForSignature($settings,$params) → {úspěch,envelope_id,sign_url- Řízené\OpsIQ\CRM\ Esign Bridge.

site_intelligence / místní výpis

listLocations, listReviews, getInsights. Lodě přes konektor Profil Google Business.

site_intelligence / rank_data

keywordRanks($settings,$params) → {úspěch, řady}. Řízen\OpsIQ\ SiteIntelligence\ RankDataBridge. Lodě: SerpApi konektor.

analytika / web_analytics

report($settings,$params) (sync / export) + ingest($settings,$events) (import). Driven by\OpsIQ\ Analytics\ WebAnalyticsBridge. Lodě: Google Analytics (GA4) konektor. Data API pro zprávy, Measurement Protocol for import. Analytika je otevřena pro konektory jako CRM + Site Intelligence (doména analytics / analytics_capabilities).

platby / payment_provider

listPayments, customerPayments, createPaymentLink. Řízen\OpsIQ\ PaymentsBridge. Ukázat platby zákazníka na časové ose CRM + poslat platební odkaz na dohodu. Lodě: Stripe Payments konektor. Domain payments / payments_capabilities.

poštovní schránka / email_sync

listMessages + sendMessage. Driven by\OpsIQ Mailbox\ MailboxBridge. E-maily zákazníka na zákazníkovi 360 Časová osa + odeslat e-mail z obchodu. Lodě: Gmail + Outlook / Microsoft 365 konektory. Domain mailbox / mailbox_capabilities.

Sdílená aplikace OAuth + ONE přesměrování

Všechny konektory Google sdílejí jednu aplikaci pomocí\OpsIQ\OAuth\ SharedGoogleApp. Set google_oauth_client_id/_secret jednou a Kalendář, Analytics, Business Profile + Gmail všechny práce (per- konektor "(nepovinné)" pole jsou overrides). URI, <site>/connectors.php?oauth=callback (žádný per- konektor slimák), protože Google vystavuje ne API přidat do aplikace přesměrování URI; OpsIQ obnovuje konektor z podepsaného OAuth state ne. Registrujte, že jediný URI jednou a každý konektor Google (současnost + budoucnost) povoluje bez dalšího nastavení Console. SharedGoogleApp::resolve(...)Je to jen... redirect_uri od oauthParams(); nikdy hard-code a per- slig přesměrovat. Microsoft konektory dělat to samé přes\OpsIQ\OAuth\ SharedMicrosoftApp (microsoft_oauth_*).

Importní tlačítka jsou capability- routed

V Importovat (historická backfill) a Dovoz zákazníků tlačítka ukazují pouze pro konektory, které je skutečně implementují, detekované reflexem, takže není žádná vlajka k vyhlášení. backfill() nebo backfillChunk() Vydělat tlačítko Import; přepsat listCustomers() (návrat {e-mail, jméno,...} stránky) vydělat Import zákazníků. AbstractConnector ne-op a tlačítko zůstane skryto, takže UI nikdy nenabízí import konektor nemůže provádět.

AI v autobusech

Agent CRM navrhuje a knihy setkání off deal signály (\OpsIQ\ CRM\ MeetingProposer → CalendarBridge), a autoenforth nové účty, "AI provozuje CRM" smyčku, prováděné přes konektorové autobusy.

Vyhledávání vstupenek Client- chat (fetchTicket())

Two- tier, žádné zásadní změny

Když návštěvník odkáže číslo vstupenky v klientském chatu ("jaký je stav T-000123?"), OpsIQ Vyřeší to ve dvou stupních. Úroveň 1 si přečte společný obchod s vstupenkami OpsIQ, každý konektor s inbound_ticket tam zrcadlí své vstupenky, takže synchronizované vstupenky prostě pracují pro ALL konektory s nulovým kódem perkonektoru. Úroveň 2 je živý záloha pro staré lístky, které se nikdy nezrcadlily: jádro nazývá VOLITELNĚ fetchTicket() na každém zapnutém konektoru, který ji implementuje. duck-typed (objeven method_exists()Jako třeba contextProviders()/audienceCatalog()), tak podepsaný ConnectorInterface je nedotčený a konektory, které to nepotřebují (e-mailové / chatové zdroje, které vytvářejí lístky nativně) prostě vynechají.

⚠️
Vlastnictví je povinné a vaše je třeba vymáhat. fetchTicket() obdrží Verified identitu návštěvníka v $ctx (client_id + client_email, stejná ověřená identita, kterou klient chat AI používá). Řešení platforma zákazníka z této identity a dotaz Pouze, že zákazník vstupenky, pak re-zkontrolovat vlastnictví na detail záznamu. null na jakékoli chybějící, nesoulad, nebo chyba, nikdy další údaje zákazníka. null "Nemohl jsem najít ten lístek."
connector.php, smlouva fetchTicket () (odkaz: konektory /whmcsa konektory /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
    }
}

Jak ji platforma využívá

Objevení

CapabilityRegistry::providers($domain,$type) uvádí poskytovatele s nainstalovaným / povoleným / připraveným stavem (na základě systému souborů; DB pouze pro povolené označení).

Výběr

CapabilityRegistry::active($domain,$type) vrací první připraveného poskytovatele s načteným konektorem a nastavením. Mosty tomu říkají místo tvrdých kulek.

Notify- to- instalovat

Pokud funkce potřebuje schopnost, která ještě není připojena, UI zobrazí jedno kliknutí na tlačítko Connect / Install, nikdy nemrtvé ovládání.

Kompletní průvodce

Viz connectors/PLATFORM_CONNECTORS.md (CRM + Site Intelligence) a connectors/CRM_CONNECTORS.md v balíčku.

Konektory

Samoobslužné vyhledávání a náhrady (budovat konektor pro zákaznický chat)

Signed- in zákazníci mohou požádat zákazníka chatu AI o jejich vlastní účet ("můj zůstatek", "moje objednávky", 'podporoval odpověď na můj lístek ") a, pokud to podnikání umožňuje, požadovat náhrady. Vše je poháněno prohlášeními vašeho konektoru: žádné změny OpsIQ jádro, žádné platforma tvrdé kódování. AI volá vaše vyhledávání jako nativní nástroje (nemůže vymyslet jeden), identita je uzamčen serverside ověřovaného zákazníka, a výsledky jsou automaticky zkráceny pro AI.

Vyhlásit zákaznický vzhled

Ve vaší actions.json, Čtení pouze akce se stává uživatelsky-volatelné s ALL TREE: "scope":"client", "requires_confirmation":false, "is_destructive":falsePoužití "scope":"both" když stejný vzhled by měl být také volatelný vaším týmem v Admin AI. Plná slovní zásoba je admin, client, both a system (system ani AI - API a pouze webové trasy). Vše ostatní je odmítnuto přímo: validace balíčků selže a akce není nainstalována. writing rozsah - je doručen asistent psaní admin akční sada.

Pravidlo identity (povinné)

Jmenujte svůj parametr identity ze standardní sady. Zamčeno na ověřené numerické ID: client_id, clientid, customer_id, user_id, userid, account_id. Zaměřeno na id jako řetězec: client_identifier, customer_identifier, account_identifier. Zamčeno na ověřeném e-mailu: email, client_email, customer_email, user_email. OpsIQ zámky a auto- vyplní jej z platform- ověřený znaménko -in zákazníka; AI nikdy nevidí nebo vybere identitu. Nestandardní název selže uzavřen (odepřen, nikdy unikl).

Co musí zůstat administrátor- pouze

Cokoliv, co není zachyceno touto identitou: fetch-by-bare-id (order_id/ticket_id sám), skladem-široký seznam, free-text vyhledávání. To jsou cross-zákazník úniky na jakékoliv platformě. "scope":"admin".

Cílení výsledků (klávesy pro uložení odpovědi)

Lookup výsledky jsou strukturálně ořezány před dosažením AI: sekret- tvaru kláves jsou upuštěny, dlouhé struny a seznamy jsou omezeny, prázdné pole jsou prořezávány, a plochá mapa širší než klíčová uzávěrka udržuje jeho nejprve klávesy pro zodpovězení ložisek, peníze (credit, balance, amount, total, due, paid), identita (email, *name, phone, company), stát (status, active, expir*, renew*), data, plán / produkt / doména / služba / předplatné / objednávka / faktura / pole vstupenek, měna, počet a stats/summary/totals, Před každým zbývajícím sedadlem jít na jiné klíče smallest- value- first. Praktické vedení: pojmenovat svá pole s tímto standardním slovní zásobou a vrátit pole, která odpovídají zákazníkovi otázku spíše než syrové 100-key platforma skládka; pole pojmenované mimo slovní zásobu soutěží o zbývající sedadla a může být ořezána z velmi širokého zatížení.

Náhrady · co váš konektor poskytuje

Dvě surové operace, bez politiky: (1) a payment- verification read filterable by identity And a transaction reference (your API musí A filtry), např. whmcs_get_transactions; (2) a refund execution action (scope:"admin", requires_confirmation:true, is_destructive:true, nikdy neexponovaný), např. whmcs_refund_order. Podnikání vybere oba klíče v Nastavení → Klient Chat; OpsIQ re-ověřuje platbu serverside, aplikuje business pole politiky (limit částky, věkové okno, měsíční limit), problémy uvnitř krabice, a soubory recenzi vstupenku na všechno ostatní.

Ne- kód stavitel

Akční editor Connector Builder 's má stejné ovládací prvky: nastavit "Kdo to může použít" pro zákazníky Signed-, nechat jak zapisovací políčka vypnuté, tak používat standardní název parametru identity.

Referenční provádění

Zápisy "Zákaznický Self-Service" v connectors/whmcs/actions.json, woocommerce/actions.json, oscommerce/actions.json; plná smlouva v connectors/README.md §8.1–8.2 a ConnectorInterface::registerActions().

Konektory

Pohled na hosty - nechte návštěvníky sledovat rezervaci, zásilku nebo objednávku BEZ přihlášení (guest_lookup)

Hotely, kurýři a mnoho obchodních platforem slouží zákazníkům, kteří mají referenci, ale ne přihlášení: host s potvrzením rezervace, příjemce se sledovacím číslem. guest_lookup schopnost (smlouva o konektoru, režim: generován) umožňuje Vašemu konektoru sloužit návštěvníkům v klientském chatu AI - neOpsIQzměny jádra, žádné pevné kódování platforem. Váš konektor prohlašuje, co dokazuje nárok a která pole jsou viditelná;OpsIQVyvolává přepínače, plyn a uniforma popírají.

Model důvěry

Referenční + důkaz, nikdy totožnost

Návštěvník dodává referenci záznamu (odpovídající regexu, který deklarujete) plus důkaz, který vyberete - obvykle e-mail v záznamu. Vaše akce pro vyzvednutí získá záznam SERVER-SIDE referencí; vytvořený poskytovatel OpsIQ porovnává důkazy proti záznamu FETCHED. Vstup návštěvníka není nikdy důvěryhodný, a žádná ověřená identita není vytvořena: zápas opravňuje návštěvníka k tomu, že jeden záznam je povoleno pole, nic jiného.

Jednotné popření (bez výčtu orákula)

Note- found and corrossment - mismatch product ONE identická odpověď. AI je výslovně instruován nikdy potvrdit, zda odkaz existuje a nikdy vynalézt podrobnosti záznamu. Pokusy jsou rate- limited na rozhovor + IP po jádru před tím, než bude váš konektor vůbec konzultován.

Dvojité opt- in, oba výchozí OFF

Nic neslouží hostům, dokud podnik neumožní oba přepínače: pracovní prostor - široké ovládání v Nastavení→Bezpečnost→"Vyhledávání záznamů v klientském chatu" (povolení - routed A vždy heslo - potvrzeno, i když volitelný step-up je vypnutý), a váš konektor je vlastní guest_lookup_enabled nastavení přepínat. Instalace nebo umožnění připojení sám o sobě nikdy neotevírá povrch hosta.

Dedikovaný povrch hostí

Vygenerovaný poskytovatel registruje guest kontextový povrch - strukturálně oddělený od admin a customer. Stávající kontextové poskytovatelé nejsou nikdy konzultovány pro anonymní návštěvníky, a host poskytovatel není nikdy konzultován pro signed- v těch. Ctx přijímá nese chatovací zprávu, vlákno ID a návštěvník tvrdí (neověřený) pre-chat e-mail jako důkaz kandidáta - žádné pole identity.

Vyhlašuje to ve Staviteli

1
Definovat akci pro vyzvednutí

V kroku Akce přidejte akci pouze pro čtení, která vrací záznam o jednom z jeho referencí (např. GET /bookings/{booking_number}) a mapují svá pole odezvy s aliasy: status, příjezd, odlet, room_type, customer_email…

2
Tik "Pohled na hosty"

Na kroku schopnosti, zapněte guest_lookup. Dedikovaný panel se objeví: vyberte akci pro načtení, pojmenujte referenční parametr, uveďte referenční vzor (regex tělo, jako je \bBK-[0-9]{4,10}\b), název záznamu ("rezervace"), a vyberte důkaz - e-mail na záznamu (doporučeno) nebo žádný (odkaz sám, pro status- pouze kurýrní sledování).

3
Seznam viditelných polí

Zaškrtněte přesně pole, která může host vidět. Vše ostatní je DROPPED - nikdy nerušen. Builder odmítá PIL-tvarovaná pole (email, telefon, adresa, platba...) v allolistu, a releasegate conformance suite re-kontroluje stejné pravidlo před zveřejněním, takže ručně upravené spec nemůže propašovat jeden dovnitř. Všimněte si, že instalátor -time validace pokrývá manifest a podpis pouze, takže spusťte confornance suit před vaší lodí. Důkazní pole nemůže být nikdy zobrazeno.

4
Zveřejnit a povolit

Stavitel vysílá GuestLookupProvider.php - kanonicky ztvrdlá implementace, identická pro každý generovaný balíček - a přidá guest_lookup_enabled business arms dva spínače a chat AI začne nabízet vyhledávání, když se návštěvník zeptá na váš typ záznamu.

Smluvní pravidla

Pouze pole ve tvaru prvku

Představte si "co by kurýr vytisknout na veřejné sledovací stránce": status, data, pokoj nebo kategorie služeb, počítá. Jména, kontaktní údaje, adresy ulic, platební data a free- text poznámky nemají místo v anonymním chatu - Builder a konformita oba odmítnout.

AI odpovídá pouze z bloku

Vygenerovaný poskytovatel končí výstup s instrukcí odpovědět pouze z uvedených polí a nabídnout jízdenku na cokoliv jiného. Detail není v seznamu povolených položek "není k dispozici v chatu" - podle návrhu.

Follow- ups pokračovat v práci

Poskytovatel odvozuje referenci z posledních zpráv návštěvníka v téže konverzaci, takže "a kdy je check- out?" funguje bez přepsání reference. Srovnávaný odkaz a důkaz e-mail jsou zapamatovány na vlákno chatu jako CANDIDATES, takže follow- up nevrací-apply. Jsou to pouze kandidáti: každý obrat stále re-ficts záznam serverside a re- porovnává důkaz před uvolněním jednoho pole.

Ručně autorované balíčky

Balíček na trhu může přepravovat vlastní GuestLookupProvider.php implementing ContextProviderInterface s surfaces(): ['guest']. Postupujte podle vygenerované šablony smlouvy přesně - apply reference, korekčně -match serverside, uniform believe, allolist- only output - a deklare guest_lookup in capabilities. Konformance ověřuje povrch hosta a skenuje povolenky pro PII.

💡
Hledání hostů jsou read- pouze kontext pro chat AI. Nikdy provádět akce, nikdy vytvářet identity, a nikdy odemknout zákaznický self-servis akční cesta výše - že cesta stále vyžaduje platform- ověřený znaménko -v zákazníkovi.
Konektory

Propagace cílení na publikum (promo_audience)

Ať se promotion Studio cílí kampaně LIVE klienta a fakturační stav z vaší platformy: "má nezaplacenou fakturu", "objednávka čeká", 'předplatné zrušeno ". Každý konektor (předem nainstalovaný, tržiště, nebo jeden si postavit) připojí implementací dvou malých metod. Ne OpsIQ změny jádra, žádné pevné kódování platformy: váš konektor se objeví jako platforma v záložce Studio Targeting s jeho vlastním poklesem faktů, a několik konektorů může být povoleno bok po boku.

Promo publikum
Propagace cílení publikaOvěřená identita předaná konektorům audienceFlags volá k vytvoření faktů, které řídí pravidlo zaměřování, s blokem.Propagace cílení publikapracovní prostorPřikládám.Ověřená totožnostaudienceFlags () NameVáš konektorSKUTEČNOSTIunpaid_invoices = 2RULnezaplacené_faktury ≥ 1KampaňNeznámé klienty nebo chyby → kampaň zůstává skryta.1TWO METHODSaudienceCatalog + Vlajky2LIVE STATENeplacené, neohlášené, status3FAIL-SAFENikdy se neukáže špatné osobě
Váš konektor odpovídá na fakturační údaje pro návštěvníka, studio se zaměřuje na ně, a selže tak nabídka účtování nikdy nedosáhne špatné osoby.

Jak to funguje

1
Vyhlaste svá fakta

Zavést audienceCatalog () na vaši třídu konektorů. Vrací štítek a seznam klíčů, které může platforma odpovědět. Každý klíč se zobrazí ve studiu dropdown pod názvem platformy.

2
Odpověď pro jednoho klienta

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
Hotovo.

Povolit konektor. Záložka Promotion Studio Cílení pěstuje sekci "Klient & fakturace" s výpisem platformy; administrátoři budují pravidla jako "unpaid_invoices >= 1"; každý fakt se také stává personalizační proměnnou, jako je {unpaid_invoices}.

connector.php, kompletní promo_audience smlouva
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'],
    ];
}

Smluvní pravidla

Inzerovat schopnost

Přidat 'promo_audience' na konektor capabilities() pole tak platforma a tržiště jej jako audience- schopné (objev také funguje z přítomnosti metody, ale prohlašuje, že je čistý signál). Předinstalovaný connectors/whmcs konektor je kompletní referenční implementace.

Název klíče

Pouzdro na skládky snake_case, 2-60 chars, odpovídající ^ [a-z0-9 _] + $. Typy: číslo, text, bool. Nehlášené klíče vrácené audienceFlags () jsou stále použitelné v pravidlech, ale deklarovat vše, co podporujete, takže administrátoři mohou vidět.

Identifikace je ověřena

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.

Selhání uzavřeno · vždy

O jakékoli chybě (API dole, klient nenalezen, timeout) vrátit []. Pravidlo, jehož skutečnost chybí, je kampaň NENÍ show. Výnosy-cílené nesmí nikdy dosáhnout špatné osoby; OpsIQ To také prosazuje pravidlo Matchera.

Výkonnost

audienceFlags () je volán maximálně jednou za konektor na stránku zobrazení, a POUZE, když publikovaná kampaň skutečně používá pravidla platforma. Anonymní návštěvníci stojí vás nula hovorů. 1-2 API volání; OpsIQ Memorizuje v rámci požadavku.

Provozovatelé poskytovali zdarma

Aplikace kombinují klávesy s =,! =, >, > =, <, < =, obsahuje, je nastavena, je prázdná, pouze dodáváte hodnoty.

Personalizační tokeny

Každý fakt se zdvojnásobí jako proměnná v kopii kampaně: {unpaid_invoices}, {client_status}, plus budovy-iny {first_name} a {client_email} Hodnoty jsou před vykreslením dezinfikovány.

Nekódové konektory pro trh

Automatická fakta

Prohlášení (JSON-only) Tržní konektory dostat promo_audience ZDARMA: pokud váš konektor prohlašuje zákazníky / uživatele, faktury, objednávky nebo předplatné, OpsIQ odvozené customer_status, unpaid_invoices, amount_due, pending_orders, active_subscriptions a subscription_status z vašich stávajících vyhledávacích akcí, žádný kód.

Vlastní katalog (settings.json)

Přidejte objekt audience_capabilities · {"label": "Moje platforma", "keys": [{"key": „otevřít košík“, „label“: „Otevříte košíky“, „type“: "číslo“}]}, abyste přesně kontrolovali, která fakta (a štítky) se zobrazují v rozbalovací nabídce studia.

Testování vašeho poskytovatele

1
Povolit konektor

Konektory > Váš konektor > Povolit. Poté otevřete libovolnou kartu cílení kampaně. Vaše platforma se musí objevit pod "Klient & fakturace (konektory)".

2
Vytvořit pravidlo

Přidat: Vaše platforma · klíč · > = · 1 a nastavit "Logged- v klientech pouze". Uložit a zveřejnit.

3
Ověřte oba směry

Přihlaste se na platformu jako klient, který odpovídá pravidlu (popup musí ukázat) a jako ten, který není (pozapp musí zůstat skrytý).

Vypalte kampaň z vlastního kódu (vlastní spouštěč)

Proč?

Za stavební- in spouštěče (zpoždění, posun, exit- intent, nečinný, kliknutím, pages- shlédnutý, chatu / tiket aktivity) můžete střílet kampaň odkudkoliv na vašich stránkách nebo konektoru předku-end, po úspěšném kroku checkout, když je vůz opuštěn, když vaše SPA změní cestu, atd.

Jak

Nastavit spouštěč kampaně na Vlastní s názvem události (např. checkout_failed), pak zavolejte globální hák ze své stránky:

vaše stránky / konektor front- end 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');
💡
Zapálení události nikdy neobchází cílování nebo frekvenci. To jen uvolní "kdy". Kampaň musí projít každé pravidlo (geo, publikum, souhlas, čepice), než se ukáže.
Kompletní průvodce (návrh, bloky, analytika, A / B, publikování) žije v in- app Help Center pod Vpřed → Promotion Studio. Schopnost je zde objevena automaticky z jakéhokoliv ENABLED konektoru v konektorech / nebo marketplace_connectors /. Není nic k registraci. Lodte dvě metody, a studio dělá zbytek.
Konektory

Schopnost průzkumného konektoru (Contract 2.2)

V survey schopnost umožňuje jakékoli platformě dodávat ověřené adaptéry identity zákazníka, obecenstvo fakta, bezpečné proměnné a přijímací kandidáty na Survey Studio. Je nezávislá na promo_audience a neposkytuje konektor vlastnictví průzkumů, odpovědí, analytiky nebo e-mailové doručení.

💡
Stav realizace. Autorizace je dnes kompletní a použitelné: Connector Contract 2.2, SurveyConnectorInterface, Dedikovaný panel Builder, generovaný SurveyProvider.php, balíčková metadata a izolace shody všech lodí. Spotřeba není ještě připojena: SurveyConnectorRegistry je implementován a testován, ale žádný Průzkum runtime to ještě volá, takže poskytovatel zdraví není vynořen v admin UI a žádný publikovaný konektor balíček prohlašuje schopnost. Signedtoken Průzkumný Průzkum Identity Gateway vydání, cílení a variabilní integrace, CRM Outenge materializace a první dodávané poskytovatele mapování zůstávají samostatné fáze. Budovat proti této smlouvě nyní; očekávat runtime začít spotřebu v pozdější verzi.

Odpovědnost poskytovatele

Katalog publika a fakta

Vyhlašte kanonické skutečnosti a vyřešte hodnoty pouze pro server- ověřené, workspacebound subjekt. Typické fakty zahrnují order_count, last_order_status, cancelled_order_count, customer_created_at, active_subscription_count, past_due_invoice_count a open_ticket_count.

Proměnná katalog a hodnoty

Vyhlásit zákaznické, účetní, objednávkové, předplatné a podporu proměnných s typem, citlivost a povoleným kontextem. Průzkum kopie vyžaduje chyby a output- context unikání.

Paging příjemce

Volitelně vyjmenovat kandidáty na CRM Outenach se stabilními externími ID, ohraničené stránky, deterministické kurzory a consent- related metadata. Průzkum zmrazí vybrané publikum před každým odesláním.

Identita

Přijetí identity pouze z Průzkumného průvodu totožnosti po znakovém podpisu, vypršení platnosti, účelu, ověření konektoru a pracovního prostoru. E-mail dodaný prohlížečem, ID, tagy nebo faktury nejsou nikdy autoritativní.

Zdraví při běhání

SurveyConnectorRegister je navržen tak, aby nahlásil kompatibilní, blokované a nedostupné poskytovatele bez odhalení nastavení, cest, surové identity nebo zprávy o výjimkách, a blokovaný poskytovatel nemůže být nikdy volán. Povrch hlášení není ještě vystavený v admin UI: dnes zablokovaný poskytovatel je prostě inertní.

Platná - uzavřená pravidla

Nehlášené klíče, špatné typy, nadměrné hodnoty, neshody objektů, časové odstupy konektorů a neznámé identity jsou zamítnuty. Zacílení pravidlo, které potřebuje nedostupný fakt neodpovídá. Příjemci stránky jsou omezeny a auditovány. Citlivé hodnoty se nikdy neobjeví ve veřejné náhled nebo protokoly.

Stavební uvolňovací brána

Smlouva 2.2 přepravuje vstup do registru schopností, rozhraní, mapovací panel pro průzkum, generovaný SurveyProvider.php, Schopnost verze, README / vývojářské reference a konformity fixtures. Obchod, helpdesk, SaaS bridge a místní PHP profily patří; Standardní API konektory opt in. Statická brána odmítá poskytovatele průzkumu, který nazývá Promotion jmenné space, tabulky nebo schopnosti.

💡
Kopie z Promotion je import- only: Builder může přeložit kompatibilní Mapování Propagace jednou, uložit kompletní Survey- vlastněné kopie a záznam provenance. Smazání nebo změna mapování Promoční nesmí změnit chování Průzkumu.
Konektory

Reply response capacity (Contract 2.2)

V reply_feedback schopnost zrcadlit vlastní hodnocení platform per- odpověď do OpsIQ. Hvězda zákazník dává zaměstnance odpověď uvnitř WHMCS klientská oblast přistává na odpověď SAME v OpsIQ admin vlákno, se stejným čipem, agent úvěr, Zpětný vstup stránky a Team & Performance výpočet jako rating uvedený na OpsIQ Portál. Jeden sklad, jeden čip, jeden ropovod; konektor pouze překládá.

Cesta jednoho zápisu

Existují přesně dvě vstupní cesty a jedna pravda. OpsIQ portálové vstupenky psát nativně. Platforma vstupenky proudí přes konektor, a jádro přistane každou událost prostřednictvím ReplyFeedback::recordMirrored(): stejné sloupce, pravidlo pouze pro zaměstnance, jedno-rating-per- odpověď latest- vyhrává sémantiku, pracovní mezeru razítko a hlas zákazníka indexování portáže používá. Konektor nikdy nepíše zpětnou vazbu řádky sám.

Konformace (čtyři soubory, pak přeznačit)

1
connector_contract.json

Přidej schopnosti.reply_feedback položka: verze 1.0, ReplyFeedbacktorInterface, metody replyFeedback Katalog a pullReplyReedback, znamená inbound_ticket.

2
settings.json

Přidat reply_feedback do seznamu schopností. To je to, co konektor objev čte.

3
spec.json

Declare reply_feedback.modes (průzkum a / nebo webhook) a ratingová stupnice platformy. To je to, co čte konformní brána.

4
Běh kategorie

Zavést rozhraní, vypsat reply_feedback ve schopnostech (), pak balíček znovu podepsat.

Odpovědnost poskytovatele

Katalog

Vyhlásit režimy, platforma vlastní ratingovou stupnici (jádro normalizuje na původní 1-5), a všechny reakční tokeny. Katalog musí souhlasit s spektrometrem.json.

Tahat překlad

pullReplyFeedback vrací kanonické události: platforma tiket id, platforma odpověď id, rating, volitelná reakce / komentář, předaný čas a stabilní event_id. Čte a překládá. Nikdy to nenapíše.

Idempotence

event_id je stabilní na základě zpětné vazby STÁT, takže přehraná událost je noop a změněný rating přepíše (nejnovější výhry, jako portál).

Kurzovní disciplína

Stránky jsou ohraničeny a deterministické; kurzor, který nepokračuje končí běh. Historické zadní vyplnění kanálků jako valivé okno, nikdy jeden obrovský tah.

Bezpečnost sondy

Bez konfigurace, vrátit prázdné kompletní stránku místo házení. Shodující běžec sondy s prázdnými argumenty.

Vyřešení sporů

Jádro řeší každou událost na místní odpověď pomocí znaménka, které již razítka (<slug>:<ticket>:reply:<reply>). Událost, která nemůže být vyřešena, je upuštěna, nikdy neuhodla, zpětná vazba se váže pouze na odpovědi zaměstnanců a úvěr agenta vždy pochází od stávajícího autora odpovědi. Rating nikdy nemění autorství. Proto schopnost vyžaduje inbound_ticket nebo ticket_mirror.

Pracovní příklad: WHMCS

WHMCS ukládá klient- area per- odpověď hvězdných hodnocení v tblticketreplies.rating. WHMCS konektor prohlašuje, že anulovací režim s 1-5 měřítko, lodě a ticket_reply_ratings relé příkaz ve svém mostovém souboru, a převádí každý řádek do události, jejíž ID odpovídají whmcs:<ticket>:reply:<reply> označí své zrcátko již známky. Po upgrade konektoru překopírujte mostní soubor na server WHMCS, aby tam byl nový příkaz.

💡
Úplná developerská smlouva s rozhraním, tvary událostí, normalizovací pravidla a kontrolní seznam shody: doc/contracts/TICKET_REPLY_FEEDBACK_CAPABILITY.md v OpsIQ balíček. Přijetí: Hodnotit odpověď uvnitř platformy, čekat na hodinový průzkum, a stejná odpověď v OpsIQ zobrazuje čip, stránku Feedback uvádí a přehraná událost nic nemění.
Konektory

Schopnost sloučení vstupenek (Smlouva 2.4)

V ticket_merge schopnost sloučit tiket v OpsIQ sloučení na každé připojené platformě tipu. Držený tiket obdrží zprávy o složených tipech, počínaje každou zprávou o otevření, místo toho, aby byl sloučený tiket uzavřen pouze.

Proč existuje?

Sloučení v OpsIQ přesune každou zprávu o sloučených tipech do uchovávané tikety a stáhne složené tipy 2.4 pouze konektor slyšený ticket.deleted pro každý sloučený tiket. WHMCS Uzavřeli jsme ten lístek a nechali si ho WHMCS vstupenka nikdy nedostala to, co zákazník napsal: předmět ukázal [MERGED] a obsah chybí.

Co jádro posílá

ticket. fuged (jednou za sloučení)

ticket_id, ticket_number, předmět a external_ref jízdenky KEPT; native_table (opsiq_tickets); site_key; zdroje, sloučené vstupenky nejstarší první, každý s ticket_id, ticket_number, předmět, external_ref, client_name, client_email, created_at a zprávy [{reply_id, author_type, author_name, created_at, tělo}]; merged_by; merged_at. Zprávy jsou uživatelsky viditelné konverzace, zachycené před přesunem. Interní poznámky nejsou nikdy zahrnuty.

ticket. removed (za sloučený lístek)

Stále hoří, teď s merged_into {ticket_id, ticket_number, external_refJádro ho nedoručuje do konektoru, který prohlašuje, ticket_merge; jiní spotřebitelé mohou rozpoznat sloučení z delete.

Výstupní webháky

ticket. fulled je realizovatelná událost. Koncový bod SaaS webhook upsaný na tickket. removed také přijímá tickets. mercet. complyned, takže integrace postavená před 2.4 slyší sloučení.

Co dělá váš konektor

Vyhlášení

List ticket_merge in capabilities() and settings.json, and implement TicketMergeConnectorInterface::mergeTickets(array $merge, array $settings). Required on Contract 2.4 for any package that declares ticket_mirror or handles ticket.deleted; conformance fails it otherwise.

Sloučit nativně, když můžete

When the kept ticket and a merged ticket both have a copy on your platform (TicketMergeContract::twins() resolves them from external_ref), call the platform's own merge.

Jinak přidejte soukromý vzkaz

A merged ticket with no copy on your platform: add TicketMergeContract::transcript() to the kept platform ticket as a PRIVATE note. Never a public reply, which would email the customer their own old messages.

Uveďte, co se nesloužilo

Return {ok, mode, sloučený, zaznamenaný, nespojen, error}. Každá sloučená kopie, kterou nemůžete sloučit, jde do nespojení a jádro používá normální manipulaci s mazáním (zavřít, nebo smazat pomocí mirror_deletes) přesně na ty, které jsou uvedeny. Returnový režim nepodporovaný pouze tehdy, když platforma nemá slučování a žádný soukromý vzkaz. Přepravní nebo auth selhání je v pořádku = false sdůvodem; je zapsán v diagnostice.

Cti své přepínání

Stejné nastavení zrcadla, které se vypíná na druhou stranu.

Sloučení, která začínají na platformě

Resolve the platform ids and call TicketMergeContract::applyInbound(['<prefix>'], $keptId, $mergedIds). OpsIQ merges its copies with _origin=mirror, so nothing is pushed back to you.

Přemístěné implementace

WHMCS

MergeTicket (ticketid = ked tiket, mergeticketids = sloučené tikety), když jsou oba v WHMCS; AddTicketNote s přepisem jinak OpsIQ kopie při sloučení zaměstnanců WHMCS.

Zendesk

POST /api/v2/tickets/{id}/merge.json se soukromými sloučením komentářů (až pět tipů na jeden hovor), plus přepis jako soukromý komentář k rezervované jízdence, protože Zendesk Zavře sloučené vstupenky bez přesunu jejich komentáře.

OpsIQ SaaS most

POST /v1/tickets/{id}/merge s source_ids, který posune odpovědi na portál a přílohy; interní odpověď nese přepis pro vstupenky, které nebyly nikdy na portálu. A /manage sloučení spojuje OpsIQ kopie.

Tvorba konektorů

ticket_merge je odvozen, nikdy zaškrtnut: generovaný balíček to deklaruje, když spojuje platformu tiket, který vytvoří (ticket.created předplatitel s linkem na), rukojeti ticket.removed, nebo prohlašuje ticket_mirror. Na Lístku krok, pod Sloučení, Vyberte platformu sloučení akce (mapa sloučení.target_remote_idA sloučit.source_remote_ids nebo sloučení.source_remote_id) a soukromé poznámky akce (mapový poznámka.remote_id a not.body). Vygenerované mergeTickes () používá obojí. Bez toho Builder varuje, že sloučené zprávy tipu nedorazí na platformu.

💡
Úplná smlouva: doc/contracts/CONNECTOR_CONTRACT.md, sekce Ticket sloučí. Přijetí: sloučit dva tikety v OpsIQ, které oba existují na platformě, pak otevřít udržovanou tiket na platformu. Sloučené tiket je první zpráva je tam.
Konektory

Trh konektorů

Marketplace vám umožní objevovat, instalovat a publikovat konektory postavené komunitou.

Marketplace
Trh konektorůVyhledatelná mřížka komunálních konektorových karet s kategoriemi, instalovat tlačítka a hvězdná hodnocení.Trh konektorůpracovní prostorVyhledávání konektorů...CalendlyPlánováníInstalovat★ 4.8HubSpotCRMInstalovat★ 4.6MailchimpCity in New York USAE-mailInstalovat★ 4.7QuickBooksÚčetnictvíInstalovat★ 4.5TwilioSMSInstalovat★ 4.9PoznámkyDokumentyInstalovat★ 4.41DISCOVERKonektory Společenství2INSTALACEJedno kliknutí3PUBLISHPodepsat & odeslat svůj
Projděte komunitní konektory, nainstalujte do jednoho kliknutí nebo podepište a publikujte své vlastní, předem instalované a tržní úrovně jak vyhledávatelné.

Hledání a instalace konektorů

1
Procházet

Přejděte na Propojky > Marketplace. Hledání podle jména, kategorie nebo platformy.

2
Přezkum

Zkontrolujte popis, podporované akce a hodnocení.

3
Instalovat

Klikněte na Install. Balíček konektorů stáhne a nainstaluje do marketplace_connectors /.

4
Nastavit

Povolit v konektorech, zadat API pověření, a test.

Vydávání konektoru

1
Stavět a zkoušet

Použijte Connector Builder. Ověřte všechny akce práce.

2
Balení

Vytvořit profil.json, akce.json, znalosti.json, a soubory PHP.

3
Podpis

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
Odeslat

Nahrávání prostřednictvím toku pro předkládání nabídek na trhu za účelem přezkumu.

Dvě konektorové úrovně

konektory / - co skutečně běží

Run time objev kořen. Vše zde je živě: konektory, které loď s OpsIQ, cokoliv instalováno z trhu, a cokoliv, co Connector Builder zveřejňuje na této instalaci.

marketplace_connectors / - kde jsou balíčky autorovány

Vydavatelství SOURCE pro balíčky na trh pro první strany. Není to objev kořene: nic není živě, dokud je zabaleno, podepsáno, nasazeno do katalogu a nainstalováno, na kterém místě se kopie přistane v konektorech /.

💡
Podívejte se na obě místa. Balíček jste autorem marketplace_connectors/ není kopie, která běží - instalace kopíruje do konektorů /, a pouze tato kopie je objevena v runtime. Stripe, BigCommerce, Magento 2, PrestaShop, OpenCart, Amazon SES, Postmark a Resend jsou všechny balíčky na trhu: nainstalujte jednu před očekáváním, že ji najdete v Connectors.
Vývojář

API a stavitel webháků

U API a Webhook Builder vám umožní vytvořit vlastní API koncové body a webhook posluchače uvnitř OpsIQ bez psaní syrového PHP.

API stavitel
API a stavitel webhákůStavitel si vybírá typ spouště (přilétající webhook, plán, událost, manuál), který se vpustí do konfigurovatelné akce.API & stavitel webhákůpracovní prostorSpouštěčPřibližující se webhookPlán (cron)Událost OpsIQRučněAkceMapa příchozích polí →vytvořit tiket / notification / call APIUložit cílový parametr1SpouštěčeWebhook · rozvrh · událost · manuál2NO RAW PHPPostaven v UI3AKCEMapový pole, pak spusťte
Vybudovat koncové body bez surového PHP: stiskněte spoušť (přilétající webhook, plán, událost nebo manuál), pak mapujte pole do akce.

Spouštěče

Událost

Uteč, když se něco stane v OpsIQ, nebo když externí systém umístí odpovídající událost na váš webhook URL. Napište název události, například ticket.created.

Plán

Použijte jednu z built- in interval událostí jako název události: cron. minentně, crons. hourly nebo cron. daile. Actions a Triggers obrazovka má tlačítka pro tyto, takže nemusíte pamatovat.

Fráza

Spustit, když admin žádá AI pro to v prostém jazyce. Přidat frázi, která by měla odpovídat, například najít zákazníka.

Přibližující se webhook

Vnější systém posílá HTTP POST do vašeho OpsIQ webhook URL Každý spouštěč, který tu událost poslouchá, vystřelí.

Proveďte to někdy: podmínky

Spouštěč událostí může nést podmínky, takže běží pouze tehdy, když se přicházející data shodují. Bez podmínek běží pokaždé, když událost vyvolá.

Pole

Cesta do dat události. Použijte tečku pro vnořené hodnoty, například customer. email..

Srovnat všechny nebo jakékoliv

Vyberte si, zda se musí každé pravidlo shodovat, nebo jen jedno z nich.

Textové zkoušky

rovná se, není roven, obsahuje, neobsahuje, začíná s, je jedním z, Není jedním z. Odpovídající ignores hlavní města.

Počet zkoušek

větší než, alespoň, menší než, nanejvýš. Čísla napsaná jako text stále správně porovnávají.

Přítomnost testů

je přítomen, chybí, je prázdný, není prázdný.

Pouze na stránce on- call inženýr pro urgentní vstupenky

Scénář:
Událost ticket. created, s jedním pravidlem: priorita rovná se urgentní.
Co dělat:

Akce běží pro urgentní lístky a je přeskočen na všechno ostatní. Není třeba filtrování na konci.

💡
Pokud ponecháte pravidla prázdná, spouští se spouštěč při každé odpovídající události, což je stejné chování jako před tím, než podmínky existovaly.

Akce

Poslat webhook

Odeslat HTTP POST na externí URL s vlastním užitečným zatížením.

Vytvořit tiket

Vytvořte si podpůrnou jízdenku se specifikovaným oddělením, předmětem a zprávou.

Odeslat email

Poslat e-mail s vlastní šablonou.

Aktualizovat záznam

Aktualizujte zákazníkovi, jízdenku nebo CRM záznam.

Spustit činnost konektoru

Proveďte registrovanou akci z povoleného konektoru s jeho pravidly pro oprávnění a potvrzení.

Běž. OpsIQ Obecné API akce

Vyhledávání kompletní název General API katalog. Pole, skoky, oprávnění, potvrzení, idempotence a suchý-run podpora pochází ze smlouvy o živé akci; pracovní tok probíhá uvnitř svého uloženého pracovního prostoru a administrátora kontext.

Poslat žádost provider-native API

Použít konektor Native API Přečtěte si nebo potvrďte původní API Napište akci, pokud endpoint poskytovatele nemá žádnou kurátorskou akci. Kredity zůstávají uvnitř konektoru a jsou akceptovány pouze relativní cesty poskytovatele.

Akce & Triggers stavitel, /api/v1.php, OpenAPI a Postman používají stejný ActionContractRegister, takže volitelná akce nemůže unášet z runtime dokumentace.
Vývojář

Kuchařská kuchařka Triggerů

Read-to-use spouštěcí-akční recepty pro běžné automatizace.

Jak to funguje
Kuchařská kuchařka TriggerůRecept tok: uptime. down webhook prochází produkčním filtrem, pak ventiluje vytvořit urgentní lístek a oznámit Slack.uptime.downMonitor webhookpokud prodfilterVytvořit urgentní tiketUpozorňovat na Slack # ops
Kuchařská kuchařka Triggerů

Automaticky vytvořit tiket z monitoringu

Scénář:
Monitorovací systém posílá POST, když server spadne.
Co dělat:

Trigger: Inbound webhook Condition: payload.status = "down" Action: Create ticket · Dept: Technical, Subject: "Server {{payload.hostname}} down", Priority: Urgent

Oznámení Slack na velké objednávky

Scénář:
Slackzpráva pokaždé, když zákazník umístí objednávku přes$100.
Co dělat:

Trigger: Event (order.completed) Condition: order.amount > 100 Action: Send webhook to Slack incoming webhook URL with order details

Týdenní strávený email

Scénář:
Souhrnný email do managementu každé pondělí v 9 hodin.
Co dělat:

Trigger: Schedule (Monday 09:00) Action: Send email with last week's stats pulled from the REST API

Escalete staale tickes

Scénář:
Pokud jízdenka nemá odpověď na 24 hodiny, přiřadit do týmu vedení.
Co dělat:

Trigger: Schedule (every hour) Condition: ticket.status = "Open" AND ticket.last_reply_age > 86400 Action: Assign to team-lead, add internal note

Vývojář

Stavím první akci

Tento průchod vytváří jednoduchou konektorovou akci od nuly.

Stavební akce
Vytváření akceAktiva- definition form: name lookup_order, GET žádost o /orders/{id}, parametr ID na stroji, a průchod 200 test.Nová akcepracovní prostorNová akceNázevlookup_orderŽádostGET/orders/{id}Paramsid · řetězec200 · nalezen pořádek1DEFINENázev, metoda, cílový parametr2PARAMSVstupné na stroji3ZKOUŠKAŽivý výsledek 200
Vytvořte jednu akci od nuly. Pojmenujte ji, nastavit metodu a koncový bod, prohlásit zadané paramy, a otestovat ji na živý 200.

Dva druhy akcí

Než začnete, rozhodněte se, který z nich potřebujete. Oba jsou nakonfigurovány na stejné obrazovce.

Zavolejte externí API

Akce posílá HTTP požadavek na platformu. Vyberte si, když OpsIQ potřebuje oslovit a udělat něco na vaší straně.

Spustit činnost konektoru

Akce běží něco, co nainstalovaný konektor již poskytuje. Vyberte si, když práce je již k dispozici a chcete jen spustit. Vyberte činnost konektoru ze seznamu, takže není nic k protažení.

Druhou možností je, jak znovu použít vše, co konektory mohou dělat, aniž by se něco z toho znovu: přečtěte si nit vstupenky, vyhledejte zákazníka, importovat kontakty, a tak dále. Vyberte si akci konektoru z dropdown a jste hotovi.
1
Plán akce

Příklad: "lookup_product". Vyhledejte produkt podle názvu, ceny, skladové zásoby a popis.

2
Definovat v akces.json

Přidat definici akce:

AKtions.json - skutečný zjevný tvar
{
  "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" }
      ]
    }
  ]
}
⚠️
Tři věci, díky kterým se akce vůbec neregistruje. action_id je vyžadován a musí být 2 do 100 znaky malých písmen, číslic a podtržení - záznam bez jednoho je zamítnut přímo. manifest je objekt s "akce" SEZNAM, není mapa keyed název akce. A mapování odezvy je "vrací" s DOTTED cesty (data.id), ne JSONPath ($.data.com) - neexistuje "response_mapping, "metoda", "koncový bod" nebo "params" klíč kdekoli v registru.
3
Zkouška s suchým běhounem

Ve kroku Přezkoumání spojovacího zařízení stiskněte suchý běh. Spustí kompletní kontrolní seznam shody s vaším balíčkem a když jste dodali pověření, provede skutečný test připojení. Nepoužívá data vzorku.

4
Ověřit použití AI

Zeptejte se admin AI: "Vyhledat produkt Widget Pro." AI by měl najít a provést akci.

⚠️
Přidání akce k actions.json netvoří AJAX trasu, takže není co regenerovat OpsIQ když je zapnutý konektor nebo jsou jeho nastavení uložena: znovu uložit konektor a nové akce. nástroje /gen_route_registry.php pokrývá admin AJAX dispečink a nemá žádný vliv na konektorové akce.
Vývojář

Výstupní body události v rámci příchozího kurzu

Vstupní koncové body akceptují podepsané JSON z jiného systému a přemění jej na deduplikovanou kontaktní činnost, která může krmit časové linie, bodování a pracovní toky.

Produktová obrazovka
Příchozí koncové bodyKaždý příchozí zdroj má svůj vlastní URL, tajný, mapovací a nedávný výsledek činnosti.Příchozí koncové bodypracovní prostorZDROJE5ACCEPTED12.4kREJECTED18ŽIVÝ VÍDEJ PRACOVNÍHO SPACEPlatforma pro účtováníakce předplatnéhoZdravýAplikace produktuudálosti signalizace a použitíZdravýIdentifikace událostiprovider_event_idDeduplikacePodpisX-OpsIQ-Inbound-SignatureHMAC1CREATE SOURCEURL a tajemství2MAP PAYLOADE-mail, událost a ID3OVĚŘENÍHMAC pak jíst
Každý příchozí zdroj má svůj vlastní URL, tajný, mapovací a nedávný výsledek činnosti.

Vytvořit jeden zdroj na odesílací systém. OpsIQ generuje URL/ Token and secret. Odeslat JSON s Content-Type: application/json a podepište přesně syrové tělo pomocí HMAC-SHA256:

X-OpsIQ-Inbound-Signature: sha256=<hex hmac>

Mapa cesty JSON pro kontaktní e-mail, název události a volitelné ID události. ID události je preferovaným klíčem k duplikaci. Přijatá činnost vstupuje do časové osy kontaktu a může ovlivnit bodování olova, segmenty, pravidla životního cyklu a pracovní toky.

Zamítněte neplatné podpisy před rozesláním obchodních dat. Otočte tajemství aktualizací obou stran uvnitř kontrolovaného okna; nezaznamenávejte tajemství.

Vývojář

Operace s odchozím webhokem

Odchozí webhook administration vytváří podepsané předplatné, testuje koncové body a monitoruje asynchronní dodání a retry zdraví.

Produktová obrazovka
Výstupní webhákyNa odchozí webhook stránce seznam HTTPS koncové body, předplatné událostí, zdraví dodávek a one-click podepsaný test.Výstupní webhákypracovní prostorENDPOINTS7SUCCESS99.2%SPRAVEDLNOST4ŽIVÝ VÍDEJ PRACOVNÍHO SPACEZrcadlo CRMKontakt. * a obchod. *ZdravýAutobus podporylístek. * * a chat. *ZdravýDatový sklad*Znovu se snažímDodávka zkouškyPodepsané užitečné zatížení vzorkuPřipraven1SUBSCRIBEHTTPS URL a události2AUTHENTICATEPodpis HMAC3OBSERVEDodávka kolejnice a refors
Na odchozí webhook stránce seznam HTTPS koncové body, předplatné událostí, zdraví dodávek a one-click podepsaný test.

Plných administrátorů vytvořit HTTPS koncový bod, vybrat konkrétní události nebo divokou kartu, ukládat tajemství bezpečně a poslat test. OpsIQ značí syrové užitečné zatížení s HMAC- SHA256:

X-OpsIQ-Signature: sha256=<hex hmac>

Ověřte podpis před odsterilizací nebo účinkem. Dodávka je asynchronní a automaticky znovu testována po přibližně 1Minuta. 5 minut, 30 minut,2hodiny a 12 hodiny. Použijte retent- delivery pro kontrolu stavu, kódu odezvy a pokus o počet.

Váš přijímač musí být idempotentní, protože jakýkoli asynchronní systém může obnovit. Vraťte odpověď 2xx pouze po trvalém přijetí.

Vývojář

Webhooky

Webové háčky dávají vnějšímu systému vědět OpsIQ když se něco stane, a pak to nech být.OpsIQ informovat vnější systémy, když se něco děje interně (odbourává).

Webhooky
Výstupní webhákyNa odchozí obrazovce webháků: tabulka s koncovými body se jménem, upsanými událostmi, aktuálními tečkami stavu dodání a tlačítkem Send- test.Výstupní webhákypracovní prostorKonečné body+ Uložit cílový parametrNÁZEVUdálostiDODATEKSlack # salero- allgeroushttps://hooks.slack.com/…crm.deal. won, pořadíZkouškaZrcadlo CRMhttps://api.acme.com/hookKontakt. *, ticket. createdZkouškaZapierhttps://hooks.zapier.com/…chat.startedZkouška1ENDPOINTSNázev, události, URL2SIGNEDHMAC + auto- retried3SEND TESTOvěřovat dodávky
Skutečný outlimit- webhanges obrazovka: každý koncový bod s jeho událostí, nedávné dodání zdraví, a one-click Odeslat test, podepsal a znovu vyzkoušel.

Výstupní webháky

Předplatné

Přejděte na Nastavení > Webháky. Přidejte koncový bod URL a vyberte události, které obdržíte.

Události

Přihlásit se ke konkrétním událostem nebo ["*"] pro všechno. Úplný seznam pro vaši instalaci je níže, a webhooks.events.list vrací to jako JSON.

Znovu

Po 15 po sobě jdoucích selháních je koncový bod automaticky zakázán. The endpoint is auto-disabled.

Podpis

Každá zásilka je podepsaná. X-OpsIQ-Signature carries v2=<hex>a podepsaný řetězec je version.timestamp.delivery_id.body - ne jen tělo. Vždy ověřte, a vždy restartujte řetězec přesně. Viz příklady níže.

Ochrana SSRF

OpsIQ neposílá se do soukromého / interního IPs (127.x, 10.x, 172.16.x, 192.168.x, 169.254.169.254).

Asynchronní doručování

Webháky jsou dodávány přes frontu pracovních míst, ne blokování OpsIQ operací.

Stálé ID události

Každá událost má unikátní event_id, který zůstává stejný v celém opakování pro duplikaci.

Co přijde s každou dodávkou

X-OpsIQ-Event

Například název události ticket.created.

X-OpsIQ-Delivery

Průkaz je stejný, ale používá se k ignorování duplikátu.

X-OpsIQ-Timestamp

Unix sekund v době podpisu. Zamítněte cokoliv staršího než asi pět minut.

X-OpsIQ-Signature

Podpis jako v2=<hex>. Split na =: levá strana je verze, pravá strana je hodnota, kterou porovnáte.

X-OpsIQ-Signature-Version

V současné době používaný režim v2. Přečtěte si to z hlavičky spíše než tvrdé kódování, a váš kód stále pracuje, pokud v3 je někdy přidána.

⚠️
Podepsaná šňůra je version.timestamp.delivery_id.body, ne surové tělo na vlastní pěst. Hashing pouze tělo je jedním z nejčastějších důvodů ověření selže - každá skutečná dodávka se odmítne a koncový bod vypadá rozbitý.

Ověření dodávky

PHP · ověřte si OpsIQ webhook
<?php
// Read the raw body BEFORE any framework parses it — the signature covers
// the exact bytes we sent, so a re-encoded array will not match.
$raw      = file_get_contents("php://input");
$sigHeader= $_SERVER["HTTP_X_OPSIQ_SIGNATURE"] ?? "";   // "v2=<hex>"
$ts       = (string)($_SERVER["HTTP_X_OPSIQ_TIMESTAMP"] ?? "");
$delivery = (string)($_SERVER["HTTP_X_OPSIQ_DELIVERY"] ?? "");
$secret   = "your endpoint signing secret";   // shown once when you add the endpoint

// 1. Refuse a stale delivery. This is what stops a captured request being replayed.
if ($ts === "" || abs(time() - (int)$ts) > 300) {
    http_response_code(401);
    exit(json_encode(["error" => "Stale delivery"]));
}

// 2. The header names its own version: "v2=<hex>".
[$version, $received] = array_pad(explode("=", $sigHeader, 2), 2, "");

// 3. Rebuild exactly what OpsIQ signed.
$canonical = $version . "." . $ts . "." . $delivery . "." . $raw;
$expected  = hash_hmac("sha256", $canonical, $secret);

// 4. Constant-time compare, so a timing attack cannot reveal the secret.
if ($received === "" || !hash_equals($expected, $received)) {
    http_response_code(401);
    exit(json_encode(["error" => "Invalid signature"]));
}

// 5. Accept. Deliveries retry, so treat a delivery id you have already
//    processed as a success and do the work only once.
$event = json_decode($raw, true);
// ... your handling ...

http_response_code(200);
echo json_encode(["received" => true]);
Node. js · ověření OpsIQ webhook
const crypto = require("crypto");

// express.raw gives you the exact bytes OpsIQ signed. express.json() does not.
app.post("/opsiq-webhook", express.raw({ type: "application/json" }), (req, res) => {
  const raw      = req.body;                                  // Buffer
  const sig      = req.headers["x-opsiq-signature"]  || "";   // "v2=<hex>"
  const ts       = req.headers["x-opsiq-timestamp"]  || "";
  const delivery = req.headers["x-opsiq-delivery"]   || "";
  const secret   = process.env.OPSIQ_WEBHOOK_SECRET;

  // 1. Reject stale deliveries (replay protection).
  if (!ts || Math.abs(Date.now() / 1000 - Number(ts)) > 300) {
    return res.status(401).json({ error: "Stale delivery" });
  }

  // 2. Split "v2=<hex>" into its version and its value.
  const [version, received] = sig.split("=", 2);

  // 3. Rebuild what OpsIQ signed: version.timestamp.delivery_id.body
  const canonical = Buffer.concat([
    Buffer.from(`${version}.${ts}.${delivery}.`),
    raw,
  ]);
  const expected = crypto.createHmac("sha256", secret).update(canonical).digest("hex");

  // 4. Constant-time compare. Lengths must match first or timingSafeEqual throws.
  const a = Buffer.from(expected), b = Buffer.from(received || "");
  if (a.length !== b.length || !crypto.timingSafeEqual(a, b)) {
    return res.status(401).json({ error: "Invalid signature" });
  }

  // 5. Accept, and make the work idempotent on the delivery id.
  const event = JSON.parse(raw.toString("utf8"));
  res.json({ received: true });
});

Každá událost, kterou tato instalace může odeslat

Vygenerovaný z běžící konstrukce, takže se vždy shoduje s verzí, na které jste.

52 events can be delivered to a webhook endpoint on this install. Subscribe with ["*"] for all of them, or name the ones you want. The General API action webhooks.events.list vrací tento seznam jako JSON, takže váš kód nikdy nemusí hard- kódovat.

analytika (1)

analytics.anomaly

Fired by PHASE_ANOMALY_ALERTS when a daily KPI (sessions, pageviews, conversions, revenue) deviates from its same-weekday 4-week baseline beyond the configured threshold. Payload: day (required), title, site_key, anomalies.

obchod (2)

commerce.order.created

Fired the moment a chat-confirmed order lands on the merchant platform (connector or custom-actions integration) - before payment. Subscribe to sync carts, reserve stock, or notify fulfilment systems. Payload: reference (required), connector, amount_minor, currency, customer_email, thread_id, occurred_at.

commerce.payment.confirmed

Fired exactly once per order when the gateway actively verifies the payment (amount and currency exact). This is the settlement signal - it rides the same claim that prevents duplicate receipts, so it can never double-fire. Payload: reference (required), connector, occurred_at.

kontakt (6)

contact.conversion

Fired by OpsIQ.

contact.erased

Fired by OpsIQ.

contact.lifecycle_changed

Fired by OpsIQ.

contact.status_changed

Fired by OpsIQ.

contact.tag_added

Fired by OpsIQ.

opsiq.contact.upsert

Fired by OpsIQ.

conversation (5)

conversation.assigned

Fired when a conversation is assigned to an agent or unassigned. Payload: thread_id (required), site_key, assigned_admin_id, by_admin_id, occurred_at.

conversation.created

Fired when a new Client Chat conversation (thread) is opened. Payload: thread_id (required), site_key, channel, client_email, client_name, visitor_id, created_at.

conversation.message.created

Fired when a visible message is written to a conversation by the visitor, an agent, the AI or the system. Internal notes do not fire. Payload: thread_id (required), message_id (required), site_key, sender_type, admin_id, message, has_attachment, created_at.

conversation.rated

Fired when the visitor rates a conversation (1-5 stars). Payload: thread_id (required), site_key, stars, comment, trigger, admin_id, occurred_at.

conversation.resolved

Fired when an agent resolves a conversation and hands it back to the AI. Payload: thread_id (required), site_key, by_admin_id, occurred_at.

crm (6)

crm.company.created

Fired when a CRM company/account is created. Payload: company_id (required), name.

crm.deal.created

Fired when a CRM deal/opportunity is created (by an order, the capture agent, or a human). Payload: deal_id (required), title, amount, currency, scope.

crm.deal.lost

Fired when a deal is moved to a Lost stage (closed-lost). Payload: deal_id (required), stage, amount.

crm.deal.stage_changed

Fired when a deal moves to a different pipeline stage. Payload: deal_id (required), stage, amount.

crm.deal.won

Fired when a deal is moved to a Won stage (closed-won). Payload: deal_id (required), stage, amount.

crm.task.created

Fired when a CRM task is created (incl. AI-suggested next-step / renewal tasks). Payload: task_id (required), title.

e-mail (2)

email.bounced

Fired by OpsIQ.

email.replied

Fired by OpsIQ.

feedback (13)

feedback.analysis.completed

Fired when a Voice-of-Customer analysis run completes. Payload: analysis_run_id (required), workspace_key, sample_count, model_version.

feedback.detractor.detected

Fired when a newly indexed response meets its metric-specific detractor rule. Payload: feedback_item_id (required), workspace_key, source_kind, metric_kind, classification.

feedback.follow_up.completed

Fired when a Feedback follow-up is completed. Payload: feedback_item_id (required), workspace_key, actor_admin_id, outcome_code.

feedback.item.assigned

Fired when Feedback ownership changes. Payload: feedback_item_id (required), workspace_key, assignee_admin_id, team_id, actor_admin_id.

feedback.item.indexed

Fired when a source record is added to or refreshed in the canonical Feedback index. Payload: feedback_item_id (required), source_kind, source_id, workspace_key, metric_kind, classification.

feedback.item.redacted

Fired when source deletion or redaction removes Feedback content from the index. Payload: feedback_item_id (required), workspace_key, source_kind.

feedback.item.status_changed

Fired when the Feedback workflow state changes. Payload: feedback_item_id (required), workspace_key, state, actor_admin_id.

feedback.item.tagged

Fired when a tag is added to or removed from Feedback. Payload: feedback_item_id (required), workspace_key, tag, operation.

feedback.item.updated

Fired when a canonical Feedback item changes. Payload: feedback_item_id (required), workspace_key, change.

feedback.source.failed

Fired when a Feedback source replay or incremental index operation fails. Payload: workspace_key, source_kind (required), error_code, checkpoint.

feedback.source.lagging

Fired when a Feedback source checkpoint is behind its expected freshness window. Payload: workspace_key, source_kind (required), lag_seconds, last_success_at.

feedback.theme.detected

Fired when a canonical topic or theme signal is attached to Feedback. Payload: feedback_item_id (required), workspace_key, theme_key, confidence.

feedback.urgent.detected

Fired when an urgent Feedback signal is detected. Payload: feedback_item_id (required), workspace_key, source_kind, signal_key.

invoice (3)

invoice.created

Fired when an invoice is generated. Payload: invoice_id (required), customer_id, customer_email, amount, currency, due_date, items.

invoice.overdue

Fired when an invoice passes its due date unpaid. Payload: invoice_id (required), customer_id, customer_email, amount, currency, days_overdue.

invoice.paid

Fired when an invoice is paid in full. Payload: invoice_id (required), customer_id, customer_email, amount, currency, paid_at.

order (1)

order.created

Fired when a new order is placed. Payload: order_id (required), customer_id, customer_email, amount, currency, items, status, source.

platba (3)

payment.completed

Fired when a payment succeeds. Payload: order_id (required), payment_id, provider_ref, customer_id, customer_email, amount, amount_minor, currency, gateway, invoice_id, items, paid_at.

payment.failed

Fired when a payment attempt fails. Payload: order_id, customer_id, customer_email, amount, currency, gateway, reason.

payment.refunded

Fired when a refund is issued. Payload: order_id, refund_id, customer_id, customer_email, amount, currency, reason.

bezpečnost (1)

security.alert

Fired by PHASE_SECURITY_ALERTS when a security rule trips: failed-login wave, new automatic IP blocks, or a tamper-evidence (audit/consent hash chain) verification failure. Payload: rule (required), title, site_key, count, blocks, errors.

subscription (3)

subscription.cancelled

Fired when a subscription is cancelled. Payload: subscription_id (required), plan_name, customer_id, customer_email, cancel_reason, cancelled_at, ends_at.

subscription.created

Fired when a subscription is started. Payload: subscription_id (required), plan_id, plan_name, customer_id, customer_email, amount, currency, interval, trial_ends_at, next_billing_at.

subscription.renewed

Fired when a subscription renews successfully. Payload: subscription_id (required), plan_name, customer_id, customer_email, amount, currency, next_billing_at.

lístek (5)

ticket.closed

Fired when a ticket is closed or resolved. Payload: ticket_id (required), resolution, closed_by_type, closed_by_id.

ticket.created

Fired when a new support ticket is opened. Payload: ticket_id (required), ticket_number, subject, department_id, department_name, customer_id, customer_email, priority, message, author_type, author_id, author_name.

ticket.merged

Fired when one or more tickets are merged into another ticket. Payload: ticket_id (required), ticket_number, subject, external_ref, native_table, site_key, sources, merged_by, merged_at.

ticket.renumbered

Fired when a connector mirror adopts the remote platform's ticket number for an OpsIQ ticket. Payload: ticket_id (required), old_number (required), ticket_number (required), connector, external_ref.

ticket.replied

Fired when a reply is posted to a ticket. Payload: ticket_id (required), reply_id, author_type, author_id, author_name, message.

user (1)

user.registered

Fired when a new user/customer account is created. Payload: user_id (required), email, firstname, lastname, company, country, source.

Jak mohu otestovat webové háčky lokálně?+

Použijte ngrok k odhalení místního serveru. Nastavte koncový bod webhooku na váš ngroku URL.

Co když je můj koncový bod dočasně dole?+

OpsIQ se retestuje s exponenciálním zpětným výpadkem. Pokud se váš cílový parametr v okně retry zotaví, žádné události se neztratí.

Vývojář

API klíče

API klávesy ověřují požadavky na OpsIQ REST API Každý klíč má prověřená oprávnění.

API klíče
API klíčeDisplej kláves API: panel s přístupovým stupněm a čipy pro rozsah, vedle seznamu stávajících maskovaných tlačítek s odblokováním tlačítek.API klíčepracovní prostorVydání klíčePřístupPouze pro čteníOmezenoKozycontacts.readtickets.readevents.writeKlíč pro vydáníVaše klíčeIntegrace Zapieropq_••••4f2aOdvolatMobilní aplikaceopq_••••91c7OdvolatVývoz analytických metodopq_••••2db0Odvolat1SCOPEDPouze pro read- only nebo limited2PER-ACTIONVybrat přesné skoky3REVOCABLEOtočit kdykoliv
Skutečný API klávesy: vydejte skenovaný, pouze pro čtení nebo omezený klíč výběrem přesných skoků a kdykoliv jej odebere.

Vytvoření klávesy API

1
Přejděte na Nastavení > API klávesy

Přechod na API správu klíčů.

2
Klikněte na Vytvořit klíč

Dej tomu popisné jméno.

3
Vybrat si skenery

Dejte klíč pouze to, co potřebuje. Scopes přijít do čtení a psát páry na oblast, takže reporting integrace může být udělena čtení a nic jiného.

Dostupné mikroskopy

Vyberte si nejtěsnější sadu, která dělá svou práci. admin splňuje každý rozsah níže, takže jej použijte pouze tehdy, když skutečně potřebujete široký přístup.

crm. read / crmm. write

Kontakty, společnosti, obchody, činnosti, segmenty, informační materiály, konverze, životní cyklus a CRM webháky.

tickets. read / tickets. write

Seznamte a přečtěte si tipy a jejich zprávy; odpověď, aktualizace, otevření a spuštění hromadné fronty operací.

conversations. read / conversetions. write

Přečtěte si konverzace a historii zpráv v životě, pošlete zprávy, přiřaďte a změňte stav.

kb. read / kb. write

Záznamy o znalostech.

chat. read / chat. write

Uložené šablony odpovědí.

connectors.read

Podívejte se, které konektory jsou instalovány, co mohou dělat, a otestujte jejich pověřovací listiny.

automations.read

Podívejte se na své činy, spouštěče a jejich historii.

departments.read

Departmenty jsou k dispozici pro směrování.

notifications.read

Oznámení pro jmenovaného operátora.

analytics.read

Zprávy sekce, CSV vývozy a termínované definice zpráv.

site_intelligence.read

Monetary a jejich zprávy SEO.

files.read

Podepsané odkazy ke stažení pro přílohy.

status.write

Status stránky komponenty a incidenty.

psaní

Asistenti pro psaní AI: návrh, shrnutí, překlad, přepis, kompostování, analýza.

admin

Vše, včetně malého počtu citlivých akcí, které nejsou záměrně dosažitelné žádným úzkým rozsahem: vymazání kontaktu, změna nastavení soukromí a čtení přístupového záznamu.

💡
Zavolejte meta. actions s klíčem, abyste viděli, které akce mohou být spuštěny na vaší instalaci. To je vždy spolehlivější než práce ze seznamu.

Úroveň přístupu

Všechny

Klíč může nazvat cokoliv, co jeho skenery dovolí.

Pouze pro čtení

Každý zápis je odmítnut, ať už to říkají mikroskopy, nejbezpečnější volba pro hlášení, palubní desky a cokoliv, co by nikdy nemělo měnit data.

Omezeno

Vydáte seznam přesně akcí, které klíč může vyvolat. Cokoliv jiného je odmítnuto, i v povoleném rozsahu.

4
Kopírovat klíč

Jednou se zobrazí. Začíná s "opq _". Uložit bezpečně.

🚫
Nikdy nesdílet API klíče ve veřejném zákoníku, klient- side JavaScript, nebo ovládání verze. Použijte proměnné prostředí.
Vývojář

Připojte své webové stránky

U OpsIQ Widget je JavaScript Snippet přidáte na své webové stránky pro sledování, AI chat, vytvoření vstupenek a identifikaci zákazníka.

Jak to funguje
Připojte své webové stránkyJednořádková scriptová značka vlevo a vpravo webová stránka s bublinou OpsIQ chatu, která se objeví v rohu.<!-- paste before </body> --><script src="https://cdn.opsiq.io/w.js" data-site="ws_8a2f" async></script>
Připojte své webové stránky

Základní instalace

Základní widget 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.

Atributy konfigurace

data-site-key

Požadovaný. Váš klíč od webu z Connected Sites.

data-mode

Volitelné. "chat" (přednastaveno), "tipy" nebo "obojí".

data-position

Volitelně. "Bottom-right" (přednastaveno) nebo "bottom- left".

data-color

Volitelný. Primární kód barvy hex.

data-greeting

Nepovinné, úvodní pozdrav.

data-language

Volitelný jazyk UI: "en", "es", 'fr ",\" de ", pt", ¨ ar ", atd.

data-identity-token

Volitelně. Server- generované podepsaný symbol identity.

Podpora SPA

Ruční sledování trasy 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,
}]);

Pravidla CSP

CSP pravidla pro widget
script-src 'self' https://your-opsiq-domain.com;
connect-src 'self' https://your-opsiq-domain.com;
frame-src https://your-opsiq-domain.com;
Zpomaluje widget moje webové stránky?+

Ne, pod 15 KB GZP se načítá async po obsahu stránky.

Můžu upravit vzhled?+

Použijte barvu dat pro primární barvu. Kontaktní podpora pro možnosti přepínání CSS.

Vývojář

Widget install recepty

Návody pro instalaci podle platform- specific.

Jak to funguje
Widget install receptyPlatforma instalovat karty pro WordPress, Shopify a Google Tag Manager Každý říká, kam přidat widget.WPWordPressNainstalovat plugin, enterVáš klíč, uložit.ObchodShopifyVložit odstřižek dotheme. liquid před /body.GTMSprávce značekVlastní HTML tag, všechny stránky.
Instalovat recepty

WordPress

Scénář:
Přidat na všechny stránky WordPress webu.
Co dělat:

Option 1: Edit theme footer.php, paste snippet before </body>. Option 2: Use "Insert Headers and Footers" plugin > Scripts in Footer. Option 3: Use a child theme footer.php to survive theme updates.

Shopify

Scénář:
Přidejte do svého Shopify obchodu.
Co dělat:

Online Store > Themes > Edit Code > Layout > theme.liquid. Paste before </body>. Save.

Reagovat / Next. js

Scénář:
Přidat do aplikace React nebo Next. js.
Co dělat:

In Next.js, use next/script in app/layout.tsx: import Script from "next/script"; <Script src="https://your-opsiq.com/widget.php" data-site-key="site_abc" strategy="lazyOnload" />

WHMCS

Scénář:
Přidejte do svého klientského prostoru WHMCS.
Co dělat:

Nastavení > Obecná nastavení > Ostatní > Globální obsah Footer. Vložte odstřižek. Nebo upravte šablonu foter. tpl. @ info: whatsthis

Google Tag Manager

Scénář:
Přidat přes GTM.
Co dělat:

Vytvořit vlastní HTML tag, pasta snippet. Trigger: Všechny stránky. Publikovat.

Vývojář

Admin widget v pozadí (jedna smlouva, jakékoliv platforma)

Zasadit OpsIQ admin asistent - admin chat, vstupenka a AI Writing - uvnitř vašeho vlastního panelu platform admin, takže váš tým nikdy opustí své nástroje SSO, To je jedna obecná smlouva realizovaná v ~15 řádky kódu serveru vaší platformy - stejný vzor Zendesk, Intercom a používání diskurzu pro SSO. Neexistuje žádný per- platforma plugin čekat na: jakýkoli stack, který může vypočítat HMAC Tohle můžu udělat dnes.

Krok 1 - vložka

Od Vzdálené stránky→Vaše stránky→Kódy, zkopírujte nakladač řádek a přidejte jej na stránky admin panel (footer včetně, rozložení šablonu, nebo admin- pouze vlastní-JS box):

Jednořádka se zasunula.
<script async src="https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=SITE_KEY&identity_token=TOKEN_FROM_STEP_2"></script>

Krok2- ŘekniOpsIQkdo je přihlášen (server- signed)

Pouze Vaše aplikace ví, který admin je přihlášen- to není nedostatek, je to bezpečnostní model. Váš server generuje krátký-žil podepsaný token z vašeho vlastního zasedání, přesně jako návštěvník Token identity, podepsaný se stejným webhook tajemství stránky:

PHP · podepsat admin identitu z vašeho relace
<?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.
Per- admin přístup, automaticky

Každý admin, který se přihlásí do vaší platformy, je zarovnán individuálně:OpsIQPer- admin přístupová brána řeší token uživatelské jméno + email proti jednéOpsIQagent (týmová stránka; použijte seznam agentových "six e-mailů", když se platforma emaily liší) a použije pracovní prostor, oddělení a inbox oprávnění That agenta. Nový zaměstnanec = přidat agenta vOpsIQŽádné změny.

Role jezdí podél

Jakýkoliv řetězec rolí, který vám platforma pošle, je zobrazen na webuOpsIQstrana pro přiřazení; autorizace vždy pochází zOpsIQZáznamy agentů, nikdy z prokázané role.

Proč si nepřečtete naše přihlašovací cookie?

Prohlížeči nikdy neposílají admin cookie do jiného původu - žádný prodejce nemůže "jen detekovat" váš přihlašovací cross- domain. Každý seriózní produkt řeší to stejným způsobem: váš server se udává, podepisuje. To je celá smlouva.

Žádný sdílený režim na vašich vlastních stránkách

Na hostiteli OpsIQ není žádný nesign. nebo shared- přihlašovací režim: nakladač zůstane skrytý, dokud nedorazí podepsaný admin token. Token =... hodnota v Codes nakladači je widget klíč, který pouze identifikuje místo, nikdy nemůže přihlásit nikoho.

V authenticated vlajka - dát ji na TOP úrovni

Tato vlajka je vaše server tvrzení, že člověk je opravdu přihlášen, a OpsIQ odmítá jakékoli žeton bez něj. "authenticated" => true beside site_key/iat/exp, Ne pouze uvnitř admin objekt. Aktuální OpsIQ přijímá buď v jedné pozici, ale starší verze pouze číst nejvyšší úroveň - a selhání je klamavé: seznam konverzace, historie a nepřečteno všechny ověřené v pořádku, zatímco každý chat obrátit odpovědi "Admin přihlášení potřebné", který vypadá jako relace chyba a není. Pokud vidíte přesně to rozdělení, zkontrolujte tuto vlajku první.

Tokenova hygiena

Přihlásit se pouze na serveru, nikdy v prohlížečiJavaScript. Udržujte exp krátké (minuty až hodiny);OpsIQodmítnutí vypršela a future- dated žetony, a podpis váže token na váš klíč.

Referenční provádění

U WHMCS modul to dělá automaticky z WHMCS admin session; Botble Hotelový konektor je mostní soubor dělá to z Laravel relace (op =admin_identity). Oba jsou jen tato smlouva v jejich platformě dialekt - kopírovat podle toho, co čte nejbližší k vašemu zásobníku.

Dezstránková elektroinstalace (sonda s konektorem)

Když váš konektor OpsIQ uloží cílový parametr identity ve svém admin_identity_probe_url nastavení, linka plnicí plošiny PLAIN je vše, co potřebujete admin stránky: widget objeví sondu z konektoru, nazývá ji klávesou webu + widget token, a ověřuje každý admin automaticky. Stránka může stále přepsat s data-identity-endpoint atribut nebo window.OpsIQAdminIdentityEndpoint.

💡
Podpisové tajemství je pro vás vyplněno. V vzdálených stránkách, vaše stránky, kódy, možnost 3, Přihlásit se ve svém personálu, každý příklad již obsahuje toto místo vlastní tajemství, takže kód funguje jako dlážděný: není nic kopírovat nebo konfigurovat. Příklady na této stránce ukazují opsiq_whsec_YOUR_SITE_SECRET Každý příklad hledá OPSIQ_SITE_SECRET (nebo vlastní nastavení vašeho rámce, pojmenované v jeho poznámkách) na serveru nejprve a používá, že když je nastaven, takže můžete přesunout tajemství ze souboru kdykoliv chcete, například ho otočit bez editace kódu. Ať tak či onak soubor běží pouze na vašem serveru: nikdy jej vložte do webové stránky nebo prohlížeče JavaScript, a nikdy ji odevzdat do veřejného úložiště, protože každý, kdo drží tajemství může zapsat jako některý z vašich zákazníků nebo zaměstnanců. WHMCS a Botble nemusí nic z toho: WHMCS Háček přichází s tajemstvím vyplněné, a Botble konektor ji naplní do mostu.

Kompletní kód, nástupiště po platformě

Každý příklad tiskne Admin Chat tag pouze pro signed- v zaměstnance, s podepsaným token přidána, a odpovídá na widget je obnova (?opsiq_identity_refresh=1&role=admin) s {"success":true,"identity_token":"…"} nebo 401. Vzdálené stránky, vaše stránky, kódy, možnost 3, Přihlaste se své zaměstnance otiskne stejný kód s vaším klíčem a tajemství vyplněno.

⚠️
Admin token je dvoudílný formulář: base64url (užitečné zatížení), tečka, pak hex HMAC-SHA256 z tohoto base64url textu. Není to JWT, a JWt je zamítnut. Admin objekt potřebuje id a e-mail, a exp musí být v rámci 24 hodiny.

WHMCS

Nothing to add: the WHMCS hook in Option 1 already signs your logged-in staff into Admin Chat and refreshes the token. Do not paste the Option 3 loader as well.
1

Install the Option 1 hook as includes/hooks/opsiq_tracker.php.

2

Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

includes/hooks/opsiq_tracker.php
/* WHMCS: no extra code. Option 1 (the All-in-One WHMCS Hook) signs the logged-in
 * admin into Admin Chat on every admin page and answers ?opsiq_identity_refresh=1&role=admin. */

Botble (connector bridge)

Nothing to add: the Botble bridge signs your logged-in admins. Copy the bridge from the Botble connector panel (it arrives with OPSIQ_HOST, OPSIQ_SITE_KEY and OPSIQ_SITE_SECRET filled in), then put its one admin_embed line in Botble's admin Custom JS.
1

In Botble admin → Custom JS, add: <script async src="https://YOUR-BOTBLE-SITE/opsiq-botble-bridge.php?op=admin_embed"></script>

2

Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

public/opsiq-botble-bridge.php
<!-- Botble admin → Custom JS. The bridge signs the logged-in admin; nothing secret is in the page. -->
<script async src="https://YOUR-BOTBLE-SITE/opsiq-botble-bridge.php?op=admin_embed"></script>

PHP (no dependencies)

1

Save as opsiq-admin-chat.php. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

At the very top of every ADMIN page, before any output: require 'opsiq-admin-chat.php'; opsiq_admin_chat_refresh(); and before </body>: <?= opsiq_admin_chat_tag() ?> (it replaces the Option 3 loader).

3

Replace opsiq_admin_chat_user() with your signed-in staff member. Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

opsiq-admin-chat.php
<?php
/* opsiq-admin-chat.php — sign your logged-in staff into OpsIQ Admin Chat. */

// WHO IS SIGNED IN AS STAFF — replace the body. Return null for anyone who is not staff.
function opsiq_admin_chat_user(): ?array
{
    $u = $_SESSION['admin'] ?? null;    // e.g. ['id' => 3, 'email' => '…', 'username' => '…', 'name' => '…', 'role' => 'Owner']
    return is_array($u) && !empty($u['id']) && !empty($u['email']) ? $u : null;
}

// The admin token is base64url(payload) . '.' . hex HMAC — NOT a JWT.
function opsiq_admin_chat_token(array $u): string
{
    $secret = (string) (getenv('OPSIQ_SITE_SECRET') ?: 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; the environment wins when set
    if ($secret === '') return '';                           // fail closed: no Admin Chat
    $now = time();
    $payload = rtrim(strtr(base64_encode(json_encode([
        'site_key'      => 'YOUR_SITE_KEY',
        'iat'           => $now,
        'exp'           => $now + 3600,                      // at most 24 hours
        'authenticated' => true,
        'platform'      => 'php',
        'admin'         => [
            'id'       => (string) $u['id'],                 // REQUIRED
            'email'    => (string) $u['email'],              // REQUIRED
            'username' => (string) ($u['username'] ?? ''),
            'name'     => (string) ($u['name'] ?? ''),
            'role'     => (string) ($u['role'] ?? ''),
        ],
    ], JSON_UNESCAPED_SLASHES)), '+/', '-_'), '=');
    return $payload . '.' . hash_hmac('sha256', $payload, $secret);
}

// Call at the top of every admin page, before any output.
function opsiq_admin_chat_refresh(): void
{
    if (empty($_GET['opsiq_identity_refresh'])) return;
    header('Content-Type: application/json; charset=utf-8');
    header('Cache-Control: no-store');
    $u = opsiq_admin_chat_user();
    $t = $u ? opsiq_admin_chat_token($u) : '';
    if ($t === '') { http_response_code(401); echo json_encode(['success' => false, 'login_required' => true]); exit; }
    echo json_encode(['success' => true, 'role' => 'admin', 'identity_token' => $t]);
    exit;
}

// Print before </body> on admin pages. Prints nothing for anyone who is not staff.
function opsiq_admin_chat_tag(): string
{
    $u = opsiq_admin_chat_user();
    $t = $u ? opsiq_admin_chat_token($u) : '';
    if ($t === '') return '';
    $src = 'https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=' . rawurlencode($t);
    return '<script async src="' . htmlspecialchars($src, ENT_QUOTES) . '" data-opsiq-widget="admin-chat"></script>';
}

Laravel

1

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET=… in .env with 'opsiq' => ['site_secret' => env('OPSIQ_SITE_SECRET')] in config/services.php on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Save the class as app/Support/OpsiqAdminChat.php; adjust isStaff() to your admin guard or role. Add the refresh middleware from the bottom of the code to your admin routes.

3

In your admin Blade layout before </body>: {!! \App\Support\OpsiqAdminChat::tag() !!}. Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

app/Support/OpsiqAdminChat.php
<?php
// app/Support/OpsiqAdminChat.php — no packages needed.
namespace App\Support;

final class OpsiqAdminChat
{
    /** WHO IS STAFF — adjust to your admin guard, role or gate. */
    private static function staff()
    {
        $user = auth('web')->user();                    // or auth('admin')->user()
        return ($user && $user->can('access-admin')) ? $user : null;
    }

    /** The admin token is base64url(payload) . '.' . hex HMAC — NOT a JWT. */
    public static function token(): string
    {
        $user = self::staff();
        $secret = (string) (config('services.opsiq.site_secret') ?: 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; config wins when set
        if (!$user || $secret === '') return '';
        $now = time();
        $payload = rtrim(strtr(base64_encode(json_encode([
            'site_key'      => 'YOUR_SITE_KEY',
            'iat'           => $now,
            'exp'           => $now + 3600,
            'authenticated' => true,
            'platform'      => 'laravel',
            'admin'         => [
                'id'       => (string) $user->id,           // REQUIRED
                'email'    => (string) $user->email,        // REQUIRED
                'username' => (string) ($user->username ?? $user->email),
                'name'     => (string) $user->name,
                'role'     => 'Admin',
            ],
        ], JSON_UNESCAPED_SLASHES)), '+/', '-_'), '=');
        return $payload . '.' . hash_hmac('sha256', $payload, $secret);
    }

    /** For the admin Blade layout, before </body>. Prints nothing for non-staff. */
    public static function tag(): string
    {
        $t = self::token();
        if ($t === '') return '';
        return '<script async src="' . e('https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=' . rawurlencode($t)) . '" data-opsiq-widget="admin-chat"></script>';
    }
}

/* Refresh — Admin Chat asks ?opsiq_identity_refresh=1&role=admin on the admin page it is on.
 * app/Http/Middleware/OpsiqAdminChatRefresh.php, added to your admin route group:
 *
 *   public function handle($request, \Closure $next) {
 *       if (!$request->query('opsiq_identity_refresh')) return $next($request);
 *       $t = \App\Support\OpsiqAdminChat::token();
 *       return $t === ''
 *           ? response()->json(['success' => false, 'login_required' => true], 401)->header('Cache-Control', 'no-store')
 *           : response()->json(['success' => true, 'role' => 'admin', 'identity_token' => $t])->header('Cache-Control', 'no-store');
 *   }
 */

WordPress / WooCommerce

1

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, add define('OPSIQ_SITE_SECRET', '…'); to wp-config.php instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Paste into your theme's functions.php or a small plugin. It shows Admin Chat inside wp-admin to users who can manage_options; change the capability to suit your team.

3

Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

functions.php
/* functions.php or a small plugin — OpsIQ Admin Chat inside wp-admin. */

if (!defined('OPSIQ_SITE_SECRET')) define('OPSIQ_SITE_SECRET', 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; wp-config.php wins when set

function opsiq_admin_chat_token(): string {
    if (!is_user_logged_in() || !current_user_can('manage_options')) return '';     // who counts as staff
    if (!defined('OPSIQ_SITE_SECRET') || OPSIQ_SITE_SECRET === '') return '';
    $u   = wp_get_current_user();
    $now = time();
    // The admin token is base64url(payload) . '.' . hex HMAC — NOT a JWT.
    $payload = rtrim(strtr(base64_encode(wp_json_encode([
        'site_key'      => 'YOUR_SITE_KEY',
        'iat'           => $now,
        'exp'           => $now + 3600,
        'authenticated' => true,
        'platform'      => 'wordpress',
        'admin'         => [
            'id'       => (string) $u->ID,                   // REQUIRED
            'email'    => (string) $u->user_email,           // REQUIRED
            'username' => (string) $u->user_login,
            'name'     => (string) $u->display_name,
            'role'     => (string) (reset($u->roles) ?: 'administrator'),
        ],
    ])), '+/', '-_'), '=');
    return $payload . '.' . hash_hmac('sha256', $payload, OPSIQ_SITE_SECRET);
}

// Refresh: Admin Chat asks ?opsiq_identity_refresh=1&role=admin on the admin page it is on.
add_action('admin_init', function () {
    if (empty($_GET['opsiq_identity_refresh'])) return;
    nocache_headers();
    $t = opsiq_admin_chat_token();
    if ($t === '') wp_send_json(['success' => false, 'login_required' => true], 401);
    wp_send_json(['success' => true, 'role' => 'admin', 'identity_token' => $t]);
});

// The loader, on every wp-admin page, for staff only.
add_action('admin_footer', function () {
    $t = opsiq_admin_chat_token();
    if ($t === '') return;
    echo '<script async src="' . esc_url('https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=' . rawurlencode($t)) . '" data-opsiq-widget="admin-chat"></script>';
});

Node.js / Express

1

No packages needed. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

adminRouter.use(opsiqAdminChat) on your ADMIN routes, after your session middleware; adjust isStaff(). It answers the refresh and sets res.locals.opsiqAdminChatTag.

3

Print res.locals.opsiqAdminChatTag (unescaped) before </body> in your admin layout. Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

opsiq-admin-chat.js
// opsiq-admin-chat.js — no packages needed.
const crypto = require("crypto");

const isStaff = (user) => !!(user && user.isAdmin);        // WHO IS STAFF — adjust

// The admin token is base64url(payload) + "." + hex HMAC — NOT a JWT.
function opsiqAdminChatToken(user) {
  const secret = process.env.OPSIQ_SITE_SECRET || "opsiq_whsec_YOUR_SITE_SECRET";   // this site's secret; the environment wins when set
  if (!isStaff(user) || !secret) return "";
  const now = Math.floor(Date.now() / 1000);
  const payload = Buffer.from(JSON.stringify({
    site_key: "YOUR_SITE_KEY",
    iat: now,
    exp: now + 3600,                                        // at most 24 hours
    authenticated: true,
    platform: "node",
    admin: { id: String(user.id), email: user.email, username: user.username || user.email, name: user.name || "", role: user.role || "Admin" },  // id + email REQUIRED
  })).toString("base64url");
  return payload + "." + crypto.createHmac("sha256", secret).update(payload).digest("hex");
}

// adminRouter.use(opsiqAdminChat)
function opsiqAdminChat(req, res, next) {
  const token = opsiqAdminChatToken(req.user);
  if (req.query.opsiq_identity_refresh) {
    res.set("Cache-Control", "no-store");
    return token
      ? res.json({ success: true, role: "admin", identity_token: token })
      : res.status(401).json({ success: false, login_required: true });
  }
  res.locals.opsiqAdminChatTag = token
    ? '<script async src="' + ("https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=" + encodeURIComponent(token)).replace(/"/g, """) + '" data-opsiq-widget="admin-chat"></script>'
    : "";
  next();
}

module.exports = { opsiqAdminChat };

Python (Flask)

1

No packages beyond Flask and flask-login. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Call init_opsiq_admin_chat(app) where you create the app, and adjust is_staff().

3

In your admin base template before </body>: {{ opsiq_admin_chat_tag }}. Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

opsiq_admin_chat.py
# opsiq_admin_chat.py — Flask + flask-login, no other packages.
import base64, hashlib, hmac, json, os, time, urllib.parse
from flask import request, jsonify
from flask_login import current_user
from markupsafe import Markup, escape

def is_staff(user):                                           # WHO IS STAFF — adjust
    return user.is_authenticated and getattr(user, "is_admin", False)

def opsiq_admin_chat_token():
    secret = os.environ.get("OPSIQ_SITE_SECRET") or "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; the environment wins when set
    if not secret or not is_staff(current_user):
        return ""
    now = int(time.time())
    # The admin token is base64url(payload) + "." + hex HMAC — NOT a JWT.
    payload = base64.urlsafe_b64encode(json.dumps({
        "site_key": "YOUR_SITE_KEY", "iat": now, "exp": now + 3600,
        "authenticated": True, "platform": "python",
        "admin": {"id": str(current_user.id), "email": current_user.email,           # REQUIRED
                  "username": getattr(current_user, "username", current_user.email),
                  "name": getattr(current_user, "name", ""), "role": "Admin"},
    }, separators=(",", ":")).encode()).decode().rstrip("=")
    return payload + "." + hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest()

def init_opsiq_admin_chat(app):
    @app.before_request
    def _opsiq_admin_refresh():
        if request.args.get("opsiq_identity_refresh"):
            t = opsiq_admin_chat_token()
            if t:
                resp = jsonify({"success": True, "role": "admin", "identity_token": t})
            else:
                resp = jsonify({"success": False, "login_required": True})
                resp.status_code = 401
            resp.headers["Cache-Control"] = "no-store"
            return resp

    @app.context_processor
    def _opsiq_admin_tag():
        t = opsiq_admin_chat_token()
        if not t:
            return {"opsiq_admin_chat_tag": ""}
        src = "https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=" + urllib.parse.quote(t, safe="")
        return {"opsiq_admin_chat_tag": Markup('<script async src="%s" data-opsiq-widget="admin-chat"></script>' % escape(src))}

Django

1

No packages needed. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in settings.py (for example os.environ["OPSIQ_SITE_SECRET"]) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Add "yourapp.opsiq_admin_chat.OpsiqAdminChatMiddleware" to MIDDLEWARE (after AuthenticationMiddleware) and "yourapp.opsiq_admin_chat.opsiq_admin_chat" to TEMPLATES context_processors. Staff = user.is_staff.

3

In your admin base template before </body>: {{ opsiq_admin_chat_tag }}. Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

opsiq_admin_chat.py
# yourapp/opsiq_admin_chat.py — no packages needed.
import base64, hashlib, hmac, json, time, urllib.parse
from django.conf import settings
from django.http import JsonResponse
from django.utils.html import format_html

def opsiq_admin_chat_token(user):
    secret = getattr(settings, "OPSIQ_SITE_SECRET", "") or "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; settings win when set
    if not secret or not user.is_authenticated or not user.is_staff:
        return ""
    now = int(time.time())
    # The admin token is base64url(payload) + "." + hex HMAC — NOT a JWT.
    payload = base64.urlsafe_b64encode(json.dumps({
        "site_key": "YOUR_SITE_KEY", "iat": now, "exp": now + 3600,
        "authenticated": True, "platform": "django",
        "admin": {"id": str(user.pk), "email": user.email, "username": user.get_username(),   # id + email REQUIRED
                  "name": user.get_full_name(), "role": "Superuser" if user.is_superuser else "Staff"},
    }, separators=(",", ":")).encode()).decode().rstrip("=")
    return payload + "." + hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest()

class OpsiqAdminChatMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response
    def __call__(self, request):
        if request.GET.get("opsiq_identity_refresh"):
            t = opsiq_admin_chat_token(request.user)
            resp = (JsonResponse({"success": True, "role": "admin", "identity_token": t}) if t
                    else JsonResponse({"success": False, "login_required": True}, status=401))
            resp["Cache-Control"] = "no-store"
            return resp
        return self.get_response(request)

def opsiq_admin_chat(request):
    t = opsiq_admin_chat_token(request.user)
    if not t:
        return {"opsiq_admin_chat_tag": ""}
    src = "https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=" + urllib.parse.quote(t, safe="")
    return {"opsiq_admin_chat_tag": format_html('<script async src="{}" data-opsiq-widget="admin-chat"></script>', src)}

.NET / C#

1

No packages needed. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OpsIQ:SiteSecret (user-secrets, the OpsIQ__SiteSecret environment variable or Key Vault) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

In Program.cs after app.UseAuthentication(): app.Use(OpsiqAdminChat.Refresh); staff = users in the "Admin" role (adjust).

3

In your admin layout before </body>: @Html.Raw(OpsiqAdminChat.Tag(Context)). Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

OpsiqAdminChat.cs
// OpsiqAdminChat.cs — no packages needed.
using System.Net;
using System.Security.Claims;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;

public static class OpsiqAdminChat
{
    // The admin token is base64url(payload) + "." + hex HMAC — NOT a JWT.
    public static string Token(HttpContext ctx)
    {
        var secret = ctx.RequestServices.GetRequiredService<IConfiguration>()["OpsIQ:SiteSecret"];
        if (string.IsNullOrEmpty(secret)) secret = "opsiq_whsec_YOUR_SITE_SECRET";   // this site's secret; configuration wins when set
        if (string.IsNullOrEmpty(secret) || !ctx.User.IsInRole("Admin")) return "";      // WHO IS STAFF — adjust
        var now = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
        var json = JsonSerializer.Serialize(new Dictionary<string, object> {
            ["site_key"] = "YOUR_SITE_KEY", ["iat"] = now, ["exp"] = now + 3600,
            ["authenticated"] = true, ["platform"] = "dotnet",
            ["admin"] = new Dictionary<string, string> {
                ["id"] = ctx.User.FindFirstValue(ClaimTypes.NameIdentifier) ?? "",      // REQUIRED
                ["email"] = ctx.User.FindFirstValue(ClaimTypes.Email) ?? "",            // REQUIRED
                ["username"] = ctx.User.Identity?.Name ?? "", ["name"] = ctx.User.Identity?.Name ?? "", ["role"] = "Admin" },
        });
        var payload = Convert.ToBase64String(Encoding.UTF8.GetBytes(json)).TrimEnd('=').Replace('+', '-').Replace('/', '_');
        using var h = new HMACSHA256(Encoding.UTF8.GetBytes(secret));
        return payload + "." + Convert.ToHexString(h.ComputeHash(Encoding.UTF8.GetBytes(payload))).ToLowerInvariant();
    }

    // app.Use(OpsiqAdminChat.Refresh)
    public static async Task Refresh(HttpContext ctx, Func<Task> next)
    {
        if (string.IsNullOrEmpty(ctx.Request.Query["opsiq_identity_refresh"])) { await next(); return; }
        ctx.Response.Headers["Cache-Control"] = "no-store";
        var t = Token(ctx);
        if (t == "") { ctx.Response.StatusCode = 401; await ctx.Response.WriteAsJsonAsync(new { success = false, login_required = true }); return; }
        await ctx.Response.WriteAsJsonAsync(new { success = true, role = "admin", identity_token = t });
    }

    public static string Tag(HttpContext ctx)
    {
        var t = Token(ctx);
        if (t == "") return "";
        return "<script async src=\"" + WebUtility.HtmlEncode("https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=" + Uri.EscapeDataString(t)) + "\" data-opsiq-widget=\"admin-chat\"></script>";
    }
}

Ruby on Rails

1

No gems needed. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

include OpsiqAdminChat in your admin base controller; adjust opsiq_staff.

3

In your admin layout before </body>: <%= opsiq_admin_chat_tag %>. Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

app/controllers/concerns/opsiq_admin_chat.rb
# app/controllers/concerns/opsiq_admin_chat.rb — no gems needed.
require "base64"
require "cgi"
require "json"
require "openssl"

module OpsiqAdminChat
  extend ActiveSupport::Concern

  included do
    before_action :opsiq_admin_identity_refresh
    helper_method :opsiq_admin_chat_tag
  end

  private

  def opsiq_staff                                        # WHO IS STAFF — adjust
    current_user if respond_to?(:current_user, true) && current_user&.try(:admin?)
  end

  # The admin token is base64url(payload) + "." + hex HMAC — NOT a JWT.
  def opsiq_admin_chat_token
    secret = ENV["OPSIQ_SITE_SECRET"].presence || "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; the environment wins when set
    staff = opsiq_staff
    return "" if secret.blank? || staff.nil?
    now = Time.now.to_i
    payload = Base64.urlsafe_encode64({
      site_key: "YOUR_SITE_KEY", iat: now, exp: now + 3600,
      authenticated: true, platform: "rails",
      admin: { id: staff.id.to_s, email: staff.email,              # REQUIRED
               username: staff.try(:username).to_s, name: staff.try(:name).to_s, role: "Admin" }
    }.to_json, padding: false)
    payload + "." + OpenSSL::HMAC.hexdigest("SHA256", secret, payload)
  end

  def opsiq_admin_identity_refresh
    return unless params[:opsiq_identity_refresh].present?
    response.headers["Cache-Control"] = "no-store"
    t = opsiq_admin_chat_token
    return render(json: { success: false, login_required: true }, status: :unauthorized) if t.blank?
    render json: { success: true, role: "admin", identity_token: t }
  end

  def opsiq_admin_chat_tag
    t = opsiq_admin_chat_token
    return "" if t.blank?
    helpers.tag.script(nil, async: true, src: "https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=#{CGI.escape(t)}", data: { opsiq_widget: "admin-chat" })
  end
end

Java (Spring Boot)

1

No libraries needed. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set opsiq.site.secret (for example from OPSIQ_SITE_SECRET) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Replace staff() with your admin lookup. The filter answers the refresh; @ControllerAdvice exposes opsiqAdminChatTag to views.

3

Admin Thymeleaf layout before </body>: <th:block th:utext="${opsiqAdminChatTag}"/>. Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

OpsiqAdminChat.java
// OpsiqAdminChat.java — no libraries needed.
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.util.HtmlUtils;

@Component
@ControllerAdvice
public class OpsiqAdminChat implements Filter {
    @Value("${opsiq.site.secret:opsiq_whsec_YOUR_SITE_SECRET}")   // this site's secret; opsiq.site.secret wins when set
    private String secret;

    /** WHO IS STAFF — replace: id, email, username, name, role. Null for anyone else. */
    private Map<String, String> staff(HttpServletRequest req) {
        if (req.getUserPrincipal() == null || !req.isUserInRole("ADMIN")) return null;
        String n = req.getUserPrincipal().getName();
        return Map.of("id", n, "email", n, "username", n, "name", n, "role", "Admin");
    }

    // The admin token is base64url(payload) + "." + hex HMAC — NOT a JWT.
    String token(HttpServletRequest req) {
        Map<String, String> u = staff(req);
        if (u == null || secret.isEmpty()) return "";
        try {
            long now = System.currentTimeMillis() / 1000;
            Map<String, Object> claims = new LinkedHashMap<>();
            claims.put("site_key", "YOUR_SITE_KEY"); claims.put("iat", now); claims.put("exp", now + 3600);
            claims.put("authenticated", true); claims.put("platform", "java"); claims.put("admin", u);   // id + email REQUIRED
            String payload = Base64.getUrlEncoder().withoutPadding().encodeToString(new ObjectMapper().writeValueAsBytes(claims));
            Mac mac = Mac.getInstance("HmacSHA256");
            mac.init(new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
            return payload + "." + HexFormat.of().formatHex(mac.doFinal(payload.getBytes(StandardCharsets.UTF_8)));
        } catch (Exception e) { return ""; }
    }

    @Override // Admin Chat refreshing on the admin page it is on
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        if (req.getParameter("opsiq_identity_refresh") == null) { chain.doFilter(request, response); return; }
        HttpServletResponse res = (HttpServletResponse) response;
        res.setHeader("Cache-Control", "no-store");
        res.setContentType("application/json");
        String t = token(req);
        if (t.isEmpty()) { res.setStatus(401); res.getWriter().write("{\"success\":false,\"login_required\":true}"); return; }
        res.getWriter().write("{\"success\":true,\"role\":\"admin\",\"identity_token\":\"" + t + "\"}");
    }

    @ModelAttribute("opsiqAdminChatTag")
    public String tag(HttpServletRequest req) {
        String t = token(req);
        if (t.isEmpty()) return "";
        String src = "https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=" + URLEncoder.encode(t, StandardCharsets.UTF_8);
        return "<script async src=\"" + HtmlUtils.htmlEscape(src) + "\" data-opsiq-widget=\"admin-chat\"></script>";
    }
}

Go

1

No modules needed. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Replace staff() with your session lookup and wrap your admin router: OpsiqAdminChatRefresh(adminMux).

3

Pass OpsiqAdminChatTag(r) to your admin layout and print it before </body>. Each staff member needs an OpsIQ agent account with the same email (or username): that is how their own permissions apply.

opsiq_admin_chat.go
// opsiq_admin_chat.go — standard library only.
package main

import (
    "crypto/hmac"
    "crypto/sha256"
    "encoding/base64"
    "encoding/hex"
    "encoding/json"
    "html"
    "html/template"
    "net/http"
    "net/url"
    "os"
    "time"
)

type OpsiqStaff struct{ ID, Email, Username, Name, Role string }

// WHO IS STAFF — replace with your session lookup. Return nil for anyone who is not staff.
func staff(r *http.Request) *OpsiqStaff { return nil }

// The admin token is base64url(payload) + "." + hex HMAC — NOT a JWT.
func opsiqAdminChatToken(r *http.Request) string {
    u, secret := staff(r), os.Getenv("OPSIQ_SITE_SECRET")
    if secret == "" {
        secret = "opsiq_whsec_YOUR_SITE_SECRET" // this site's secret; the environment wins when set
    }
    if u == nil || secret == "" {
        return ""
    }
    now := time.Now().Unix()
    body, _ := json.Marshal(map[string]any{
        "site_key": "YOUR_SITE_KEY", "iat": now, "exp": now + 3600,
        "authenticated": true, "platform": "go",
        "admin": map[string]string{"id": u.ID, "email": u.Email, "username": u.Username, "name": u.Name, "role": u.Role}, // id + email REQUIRED
    })
    payload := base64.RawURLEncoding.EncodeToString(body)
    mac := hmac.New(sha256.New, []byte(secret))
    mac.Write([]byte(payload))
    return payload + "." + hex.EncodeToString(mac.Sum(nil))
}

// OpsiqAdminChatRefresh answers Admin Chat's ?opsiq_identity_refresh=1&role=admin.
func OpsiqAdminChatRefresh(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        if r.URL.Query().Get("opsiq_identity_refresh") == "" {
            next.ServeHTTP(w, r)
            return
        }
        w.Header().Set("Cache-Control", "no-store")
        w.Header().Set("Content-Type", "application/json")
        if t := opsiqAdminChatToken(r); t != "" {
            json.NewEncoder(w).Encode(map[string]any{"success": true, "role": "admin", "identity_token": t})
            return
        }
        w.WriteHeader(http.StatusUnauthorized)
        json.NewEncoder(w).Encode(map[string]any{"success": false, "login_required": true})
    })
}

// OpsiqAdminChatTag prints the loader for staff only.
func OpsiqAdminChatTag(r *http.Request) template.HTML {
    t := opsiqAdminChatToken(r)
    if t == "" {
        return ""
    }
    src := "https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=YOUR_SITE_KEY&identity_token=" + url.QueryEscape(t)
    return template.HTML(`<script async src="` + html.EscapeString(src) + `" data-opsiq-widget="admin-chat"></script>`)
}

Zavedení cílového parametru identity na Laravel (hard-won notes)

Pokud je platforma Laravel (Botble, Bagisto, vlastní aplikace) a váš koncový bod je samostatný soubor, který boty rámec pro čtení logged- in admin, tři specifika ušetří vám hodiny - každý z nich produktivní selhání před tím, než se to naučil:

Připojit žádost před bootstrap

Vaši poskytovatelé služeb mohou vyřešit request z kontejneru během zavazadlového prostoru. Laravel vlastní životní cyklus váže zachycený požadavek první věc uvnitř Kernel::handle() - zrcadlem tohoto pořadí: $app->instance('request', Request::capture()) PŘED $kernel->bootstrap()Nebo dostaneš "Cílová třída [žádost] neexistuje".

Předpona session-cookie je HMAC-Keyed

Moderní Laravel předpovídá hodnoty cookie pomocí HMAC vypočteného pomocí APP Key (CookieValuePrefix) - a plain sha1(name."v2") Nikdy se to nedá srovnat. CookieValuePrefix::validate($name, $decrypted, $keys), se strukturálním zápěstím (40 hex chars + | v pozici40). Tell: relace id delší než40CHARS (81= prefix stále připojený) a relace, která se zatíží pouze _token V něm.

Kde se přihlašovatel nacházel

Razítko je login_<guard>_<sha1(guard class)> - pro výchozí webový kryt: 'login_web_' . sha1(Illuminate\Auth\SessionGuard::class). Proskenujte jakékoliv login_* Číselný klíč jako záloha pro vlastní stráže.

Debug jako most dělá

Loď a debug=1 režim, který označuje selhání STEP a výjimku - slepou chytač- všichni udělali živé nasazení nediagnostikovatelné. Botble most (od v1.0.7) je referenční: krokové značky na jádru / vázání / bootstrap / dešifrování / session / auth / db.

Laravel · kompletní cílový parametr identity (kopírovat, nastavit dvě konstanty, hotovo)
<?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]);
}

Stejný cílový parametr na jiných zásobách

Pouze změny na řádku "kdo je přihlášen?" - podpisový blok je všude stejný. Zaregistrujte se na serveru, nikdy v JavaScript.

WordPress · WHMCS· Symfony · plain PHP - vyměňte vyhledávání, uchovejte signer
<?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]);

Když to nefunguje - diagnostikovat v tomto pořadí

Widget se nikdy neobjeví, konzole říká "je vyžadován podepsaný admin identifikátor"

Váš cílový parametr se vrátil ne identity_token. Otevřete cílový parametr URL přímo v prohlížeči logged- v admin &debug=1 - uvidíte chybný krok. Na Laravel je to téměř vždy request- binding nebo cookie- prefix položka výše.

Historie a konverzace fungují, ale každý rozhovor říká "Admin přihlášení potřebné"

Klasický rozchod. Váš symbol chybí TOP- ÚROVEŇ authenticated flag - widget vlastní endpoint přijímá token, sdílený ověřovatel za chatovým proudem jej odmítá. Přidat "authenticated" => true beside exp.

"admin není upraven v OpsIQ" (HTTP 401)

Token ověřen, ale jeho uživatelské jméno + e-mail zápas ne OpsIQ Agente, přidejte sem ten agent OpsIQ → Tým, nebo přidat platformu e-mail na seznam agent je match- emaily, když se liší od jejich OpsIQ E-mail.

Vše 403s z prohlížeče, ale pracuje s curl

Předlet CORS odmítá jeden z vašich titulků požadavku. Váš koncový bod musí odpovědět OPTIONS a echo žádající původ, nebo jednoduše vyhnout vlastní hlavičky - widget potřebuje pouze cookie.

Pracoval včera, dnes selhal.

Kontrola exp: tokens jsou krátké-žil podle návrhu. Widget re- sondy automaticky, takže to obvykle znamená, že koncový bod přestal vidět relaci - rotace klávesy aplikace, session-driver změna, nebo cookie- doména změna.

💡
Admin widget se skryje, dokud identita nevyřeší, a každý chat / inbox / data volání je vynucen serverside proti shodnéOpsIQagent bez ohledu na cokoliv stránka tvrdí. Token odemyká UI; oprávnění vždy pochází zOpsIQ.
Vývojář

Totožnost návštěvníka

Identita spojuje anonymní návštěvníky se známými zákazníky. Po identifikaci, OpsIQ odkazy prohledávání historie, chaty a vstupenky na profil zákazníka.

Jak to funguje
Totožnost návštěvníkaPrůtok: uživatel se přihlásí na vašich stránkách, vydáte podepsaný token identity, a OpsIQ sjednocuje jejich sezení, chaty a vstupenky do jednoho profilu.Uživatelské protokoly vna vašich stránkáchPodepsaný symbolIdentita tokenu (HMAC)Jeden profilsessions+ chaty+ vstupenky
Totožnost návštěvníka

Dvě úrovně identity, a když je každý stačí

Úroveň 1 - neznačená nápověda

Řekni tomu widgetovi, kdo je ten návštěvník s plání.JavaScriptobjekt. Vyplňuje email a zákaznický ID v záznamu návštěvníků, takže vaše palubní deska ukazuje signed- v provozu a sessions připojit. Jedná se o HINT: každý může editovat ve svém prohlížeči, takžeOpsIQnikdy nezveřejňuje data o síle účtu.

Úroveň 2 - znaménko totožnosti

Váš server podepisuje krátkosrstý token s webhokem na webu tajemství. OpsIQ ověřuje podpis a teprve pak zachází s osobou jako osvědčený zákazník. To je úroveň, která odemyká odpovědi na účet v chatu zákazníka a vyhledávání konektorů. Použijte ji pro cokoliv cizí nesmí vidět.

⚠️
Úroveň1je zobrazení pohodlí. Úroveň2je autentizace. Pokud lze na otázku odpovědět pouze pro skutečného držitele účtu, potřebujete Úroveň2.
💡
Nemusíte psát Úroveň 2 ručně: Vzdálené stránky → Vaše stránky → Kódy → C. Signed-in zákazníci generují podpisový kód a refresh handler pro PHP, WordPressLaravel, Node.js, Python, Django, .NET, Rails, Java and Go WHMCS háček a Botble konektor most již podepsat zákazníky. Identita říká, kdo je zákazník; jejich objednávky nebo rezervace dosáhnout chatu přes konektor (s mostem soubor pouze tehdy, pokud platforma nemá API).

Úroveň 1 - nesignalizovaná nápověda

Nastavte objekt před skriptem widget, nebo zavolejte identifikovat () později, jakmile vaše aplikace bude vědět, kdo je přihlášený. Oba formuláře jsou čteny; použijte podle toho, co odpovídá vaší stránce.

JavaScript · obě podporované formy
<!-- 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.

Úroveň 2 - ukazatel totožnosti podepsaný serverem

Přesně stejný token smlouva jako admin widget, s customer předmět namísto admin 1. Podepište to na serveru a pošlete do widgetu. Dva podrobnosti rozhodnou, zda se potvrdí, a oba jsou snadno dostat špatně:

U HMAC pokrývá BASE64URL řetězec, neJSON

Podpis $payload64, ne $payload. Podpis syrového JSON produkuje symbol, který vypadá správně a je odmítnut pokaždé s podpisem nesoulad.

base64url, unpaddined

Přeložit +/ do -_ a svléknout = padding. Plain base64 náhodou přežít dnes; base64url je smlouva a je to, co každý OpsIQ ověřovatel a referenční konektor emituje.

ověřené je na úrovni TOP

Vedle site_key, iat a expJe to vaše tvrzení, že skutečný člověk je přihlášena, a OpsIQ odmítá token bez něj.

customer. id je povinný

Token s emailem se ověřuje jako podpis a pak je tiše upuštěn. Vždy pošlete ID.

Udržujte exp krátký

Zápis z několika minut do hodin, je to tvrzení, ne oprávněný.

PHP - podepište symbol identity zákazníka (tento přesný kód ověřuje)
<?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>';
🚫
Přihlásit se pouze na serveru. Token vyražený v prohlížeči JavaScript znamená předávat stránky tajemství každému návštěvníkovi, který dává komukoliv možnost vydávat se za jakéhokoliv zákazníka.

Stejná smlouva, tři povrchy.

Zákaznický chat na vašich stránkách

zákaznický subjekt, prošel jako identity_token na widget. php. pokrytý výše. Volitelný: s odstřihnutím A a konektorem chat již ověřuje zákazníky (rezervační nebo objednávkové číslo s důkazem, nebo e-mailový kód před objednáním). Vzdálené stránky, kódy, C generuje kód pro automatické rozpoznání zákazníků již přihlášených na vašich stránkách.

Admin chat uvnitř vašeho backendu

admin subjekt, předán opsiq/ vloženo /admin_widget.php. Stejný znaménko, jiný klíč k tématu. Viz "Admin widget v pozadí".

Podpora hlubokých odkazů portálu

Přísnější varianta: stejné nároky plus jti a single_use:pravda, a 120-druhý život, protože token cestuje v URL a musí být utrácet jednou. Neválejte to ručně. Nastavení, Podpora Portál má připravený snippet pro váš jazyk, a platforma mints to pro vás, když vaše oblast účtu běží na tomto serveru.

Co když návštěvník vyčistí sušenky?+

Stávají se anonymními, dokud nejsou znovu identifikovány. OpsIQ spojuje nový anonymní záznam s profilem zákazníka v okamžiku, kdy narážka nebo token dorazí.

Proč můj token potvrzuje záznam návštěvníků, ale ne otázky na účet?+

To je úroveň1/ Úroveň2split. Nepodepsaná nápověda vyplní záznam návštěvníků a nic jiného. Odpovědi na účet potřebují ověřený podpis.

Vývojář

Portál sign- in: kód pro každou platformu

Pošlete zákazníka, který je již přihlášen do Vaší aplikace přímo do vašeho portálu podpory, přihlášeni, bez druhého hesla. Tato stránka vysvětluje, jak předání funguje, každý nárok na token, nastavení a kompletní trasu pro každou platformu. Nastavení, Podpora Portál tiskne stejný kód s vlastní adresou portálu a klíč pracovní plochy vyplněn.

Jak to funguje

1
Zákazník klikne na podporu ve vaší aplikaci

Odkaz ukazuje na malou trasu na Vašem serveru, například /support-portal. Nikdy na odkaz, který již obsahuje token: token v stránce uniká přes zdroj stránky, historii prohlížeče a hlavičku Referer.

2
Kontrola tratě, která je přihlášena

Přečte si zákazníka z vlastního sezení. Návštěvník, který není přihlášen, je odeslán na vaše přihlášení a vrátí se na cestu později.

3
Trasa značí jednonásobný znak.

Standardní HS256 JWT podepsaný s tímto tajemstvím pro podepisování pracovního prostoru, které má pouze váš server. Vyprší po 120 sekundách a lze jej použít jednou.

4
Trasa se přesměruje na portál

Na portál stránky zákazník přišel z doby, kdy portál požádal o jeden (opsiq_portal_return, přijal pouze uvnitř vašeho portálu adresy), jinak portál domů. Reakce nese Referrerer- Policy: no-referrer a Cache-Control: no- store.

5
Portál ověřuje a podepisuje zákazníka v

Zkontroluje se podpis, klíč k pracovnímu prostoru, doba vypršení a jednorázové ID. Zákazník je nalezen nebo vytvořen e-mailem a jeho stávající požadavky jsou jim přiřazeny.

Totožnost, tvrzení podle nároku

site_key

Váš klíč k pracovnímu prostoru. Token vyrobený pro jiný pracovní prostor je odmítnut i když je správně podepsán.

iat / exp

Portál je v sekundách a za chvíli to vyprší. Portály jsou na 120 sekundy: musí přežít jen jeden přesměrování.

ověřeno: pravda

Vaše aplikace tvrdí, že to opravdu podepsalo tuto osobu. Požadované, na nejvyšší úrovni.

jti + single_use: true

Náhodné ID a jednorázová vlajka.

plošina

Bezplatné označení pro místo, odkud zákazník přišel (php, wordpress, whmcs...). Zobrazeno v profilu zákazníka.

customer. id a customer. email

Oba požadavky. ID je vlastní zákaznický ID aplikace; e-mail je způsob, jak portál najde zákazníka a odpovídá jeho požadavkům.

customer. name / external_id

Volitelné jméno displeje a id OpsIQ obchody proti vaší platformě.

Nastavení

1
Kopírovat trasu

Nastavení, Portál podpory, bezproblémový signál z vaší aplikace. Vyberte si, na čem běží vaše aplikace; kód pod seznamem má vyplněnou adresu portálu a klíč pracovní plochy s číslovanými poznámkami pro tuto platformu.

2
Tajemství je již v kódu.

Kopírovaná trasa obsahuje tajemství podepisování tohoto pracovního prostoru, takže funguje tak, jak je to vloženo. Chcete-li udržet mimo soubor, nastavit OPSIQ_SITE_SECRET (nebo nastavení rámce) na serveru místo: tato hodnota se používá jako první. Nikdy dát cestu na stránku, JavaScript, mobilní aplikace nebo veřejný repozitář: každý, kdo drží tajemství, se může přihlásit jako jakýkoliv zákazník.

3
Připojte své tlačítko Podpora na cestu

Například https://your-app.com/support-portal.

4
Zaregistrujte se v tlačítku pomocí aplikace

Portál Studio, Sign- in stránka, Použijte mé webové stránky přihlášení, Vaše přihlašovací stránka URL: Nastavte to na stejnou trasu. Portál přidává opsiq_portal_return sama o sobě a trasa přináší zákazníka zpět na tuto stránku, přihlášených.

5
Volitelné: odhlásit se všude

Nastavení, Portál podpory, Odevzdejte se všude: vaše aplikace sign- out URL, takže přihlášení z portálu také vypíše zákazníka z vaší aplikace.

6
Zkouška

Vytvořte podepsaný testovací odkaz na stejné stránce nastavení pro kontrolu portálu samotné, poté otevřete cestu a přihlaste se do aplikace.

WHMCS nepotřebuje žádný kód: WHMCS háček ze vzdálených stránek již přihlašuje klienty do portálu a přináší je zpět na stránku, na které byli.
💡
Podpisové tajemství je pro vás vyplněno. V Nastavení, Portál podpory, Bezproblémový sign- in z vaší aplikace, každý příklad již obsahuje toto stránky je vlastní tajemství, takže kód funguje jako dlážděná: není nic kopírovat nebo konfigurovat. Příklady na této stránce show opsiq_whsec_YOUR_SITE_SECRET Každý příklad hledá OPSIQ_SITE_SECRET (nebo vlastní nastavení vašeho rámce, pojmenované v jeho poznámkách) na serveru nejprve a používá, že když je nastaven, takže můžete přesunout tajemství ze souboru kdykoliv chcete, například ho otočit bez editace kódu. Ať tak či onak soubor běží pouze na vašem serveru: nikdy jej vložte do webové stránky nebo prohlížeče JavaScript, a nikdy ji odevzdat do veřejného úložiště, protože každý, kdo drží tajemství může zapsat jako některý z vašich zákazníků nebo zaměstnanců. WHMCS a Botble nemusí nic z toho: WHMCS Háček přichází s tajemstvím vyplněné, a Botble konektor ji naplní do mostu.

Kompletní trasy, nástupiště po nástupišti

OpsIQ server (self-hosted)

1

For a self-hosted OpsIQ: the route runs on your own OpsIQ server, so there is no secret to copy. OpsIQ reads this workspace's signing secret itself.

2

Save it as a page on that server, e.g. support-portal.php, and point your "Support" link at it.

3

Replace the body of $currentUser so it returns your signed-in customer (id, email, name), or null for a guest, and /login with your login page.

OpsIQ server (self-hosted)
/* OpsIQ server (self-hosted) — save as e.g. support-portal.php on your OpsIQ
 * server and link your "Support" button to it. OpsIQ reads the workspace's
 * signing secret itself, so there is nothing secret to copy. */

if (!function_exists('opsiq_portal_signed_url_for_site')) {
    require_once '/path/to/opsiq/opsiq/opsiq.portal_identity.php';
}

// 1. WHO IS SIGNED IN — replace the body. Return null for a guest.
$currentUser = static function (): ?array {
    $u = $_SESSION['user'] ?? null;
    return is_array($u) && !empty($u['id']) && !empty($u['email']) ? $u : null;
};
$user = $currentUser();
if (!$user) {
    header('Location: /login?return=' . urlencode($_SERVER['REQUEST_URI'] ?? '/'), true, 302);
    exit;
}

// 2. WHERE TO LAND — the portal page they came from, only if it is on the portal.
$portal = 'https://YOUR-OPSIQ/portal/your-workspace';
$back   = preg_replace('/#.*$/', '', (string)($_GET['opsiq_portal_return'] ?? ''));
$target = ($back === $portal || strpos($back, $portal . '/') === 0 || strpos($back, $portal . '?') === 0)
    ? $back : $portal;

// 3. MINT a one-time link (120 s) for this workspace.
$url = opsiq_portal_signed_url_for_site($target, 'YOUR_SITE_KEY', [
    'id'    => $user['id'],        // REQUIRED
    'email' => $user['email'],     // REQUIRED
    'name'  => $user['name'] ?? '',
], 120);
if (!$url) {
    http_response_code(503);       // fail closed: never send a customer to a guessed address
    exit('Support portal is not configured yet.');
}

header('Referrer-Policy: no-referrer');   // the token is in the URL
header('Cache-Control: no-store');
header('Location: ' . $url, true, 302);
exit;

PHP (no dependencies)

1

Save the snippet as a page in your app, e.g. support-portal.php.

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment (hosting panel, .env or SetEnv) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Replace the body of $currentUser with your app's signed-in customer, and /login with your login page.

PHP (no dependencies)
/* support-portal.php — a redirect route in your own app.
 * Mint at CLICK time: a token baked into an href leaks through page source,
 * browser history and the Referer header. */

// 1. WHO IS SIGNED IN — replace the body with your app's own session. Return null for a guest.
$currentUser = static function (): ?array {
    $u = $_SESSION['user'] ?? null;            // e.g. ['id' => 7, 'email' => '…', 'name' => '…']
    return is_array($u) && !empty($u['id']) && !empty($u['email']) ? $u : null;
};
$user = $currentUser();
if (!$user) {                                  // a guest: sign in first, then come back here
    header('Location: /login?return=' . urlencode($_SERVER['REQUEST_URI'] ?? '/'), true, 302);
    exit;
}

// 2. THE SECRET — server-side only. Fail closed without it.
$secret = (string) (getenv('OPSIQ_SITE_SECRET') ?: 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; the environment wins when set
if ($secret === '') { http_response_code(503); exit('Support portal is not configured.'); }

// 3. WHERE TO LAND — the portal page they came from, only if it is on the portal.
$portal = 'https://YOUR-OPSIQ/portal/your-workspace';
$back   = preg_replace('/#.*$/', '', (string)($_GET['opsiq_portal_return'] ?? ''));
$target = ($back === $portal || strpos($back, $portal . '/') === 0 || strpos($back, $portal . '?') === 0)
    ? $back : $portal;

// 4. MINT the token (standard HS256 JWT).
$b64 = static function ($v) {
    return rtrim(strtr(base64_encode(json_encode($v, JSON_UNESCAPED_SLASHES)), '+/', '-_'), '=');
};
$now = time();
$signing = $b64(['alg' => 'HS256', 'typ' => 'JWT']) . '.' . $b64([
    'site_key'      => 'YOUR_SITE_KEY',
    'iat'           => $now,
    'exp'           => $now + 120,                // URL-borne tokens live ~2 minutes
    'authenticated' => true,
    'jti'           => bin2hex(random_bytes(16)),
    'single_use'    => true,                      // one-time link; replay is refused
    'platform'      => 'php',
    'customer'      => [
        'id'          => $user['id'],             // REQUIRED
        'email'       => $user['email'],          // REQUIRED
        'name'        => $user['name'] ?? '',
        'external_id' => (string) $user['id'],
    ],
]);
$token = $signing . '.' . rtrim(strtr(base64_encode(hash_hmac('sha256', $signing, $secret, true)), '+/', '-_'), '=');

// 5. GO. The default is https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
$url = $target . (strpos($target, '?') === false ? '?' : '&')
     . 'site_key=' . rawurlencode('YOUR_SITE_KEY') . '&identity_token=' . rawurlencode($token);
header('Referrer-Policy: no-referrer');       // the token is in the URL
header('Cache-Control: no-store');
header('Location: ' . $url, true, 302);
exit;

Laravel

1

Run: composer require firebase/php-jwt

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET=… in .env with 'opsiq' => ['site_secret' => env('OPSIQ_SITE_SECRET')] in config/services.php on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Paste the route into routes/web.php. The auth middleware sends guests to your login and back.

Laravel
/* routes/web.php — composer require firebase/php-jwt
 * Link customers to  route('support.portal') */

Route::get('/support-portal', function (\Illuminate\Http\Request $request) {
    $user   = $request->user();                                   // guaranteed by ->middleware('auth')
    $secret = (string) (config('services.opsiq.site_secret') ?: 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; config wins when set
    abort_if($secret === '', 503, 'Support portal is not configured.');   // fail closed

    // Where to land: the portal page they came from, only if it is on the portal.
    $portal = 'https://YOUR-OPSIQ/portal/your-workspace';
    $back   = preg_replace('/#.*$/', '', (string) $request->query('opsiq_portal_return', ''));
    $target = ($back === $portal || str_starts_with($back, $portal . '/') || str_starts_with($back, $portal . '?'))
        ? $back : $portal;

    $now   = time();
    $token = \Firebase\JWT\JWT::encode([
        'site_key'      => 'YOUR_SITE_KEY',
        'iat'           => $now,
        'exp'           => $now + 120,
        'authenticated' => true,
        'jti'           => bin2hex(random_bytes(16)),
        'single_use'    => true,
        'platform'      => 'laravel',
        'customer'      => [
            'id'          => $user->id,          // REQUIRED
            'email'       => $user->email,       // REQUIRED
            'name'        => $user->name,
            'external_id' => (string) $user->id,
        ],
    ], $secret, 'HS256');

    // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    $url = $target . (str_contains($target, '?') ? '&' : '?')
         . 'site_key=' . rawurlencode('YOUR_SITE_KEY') . '&identity_token=' . rawurlencode($token);

    return redirect()->away($url)
        ->header('Referrer-Policy', 'no-referrer')
        ->header('Cache-Control', 'no-store');
})->middleware('auth')->name('support.portal');

WordPress

1

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, add define('OPSIQ_SITE_SECRET', '…'); to wp-config.php, above "That's all, stop editing", instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Paste the snippet into your theme's functions.php, or a small plugin (Code Snippets works).

3

Create an empty page with the slug support-portal and link your "Support" menu item to it. Guests are sent to wp-login and back.

WordPress
/* functions.php, or a small plugin. Create an empty page with the slug
 * "support-portal" and link customers to it. */

add_action('template_redirect', function () {
    if (!is_page('support-portal')) return;
    if (!is_user_logged_in()) { auth_redirect(); }                 // login, then back here

    $secret = defined('OPSIQ_SITE_SECRET') ? OPSIQ_SITE_SECRET : 'opsiq_whsec_YOUR_SITE_SECRET';   // this site's secret; wp-config.php wins when set
    if ($secret === '') wp_die('Support portal is not configured.', '', ['response' => 503]);   // fail closed

    // Where to land: the portal page they came from, only if it is on the portal.
    $portal = 'https://YOUR-OPSIQ/portal/your-workspace';
    $back   = preg_replace('/#.*$/', '', isset($_GET['opsiq_portal_return']) ? wp_unslash((string) $_GET['opsiq_portal_return']) : '');
    $target = ($back === $portal || strpos($back, $portal . '/') === 0 || strpos($back, $portal . '?') === 0)
        ? $back : $portal;

    $user = wp_get_current_user();
    $b64  = static function ($v) {
        return rtrim(strtr(base64_encode(wp_json_encode($v)), '+/', '-_'), '=');
    };
    $now     = time();
    $signing = $b64(['alg' => 'HS256', 'typ' => 'JWT']) . '.' . $b64([
        'site_key'      => 'YOUR_SITE_KEY',
        'iat'           => $now,
        'exp'           => $now + 120,
        'authenticated' => true,
        'jti'           => bin2hex(random_bytes(16)),
        'single_use'    => true,
        'platform'      => 'wordpress',
        'customer'      => [
            'id'          => $user->ID,              // REQUIRED
            'email'       => $user->user_email,      // REQUIRED
            'name'        => $user->display_name,
            'external_id' => (string) $user->ID,
        ],
    ]);
    $token = $signing . '.' . rtrim(strtr(base64_encode(hash_hmac('sha256', $signing, $secret, true)), '+/', '-_'), '=');

    // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    $url = $target . (strpos($target, '?') === false ? '?' : '&')
         . 'site_key=' . rawurlencode('YOUR_SITE_KEY') . '&identity_token=' . rawurlencode($token);
    nocache_headers();
    header('Cache-Control: no-store');
    header('Referrer-Policy: no-referrer');
    wp_redirect($url, 302);                                       // wp_redirect, not wp_safe_redirect: the portal is another host
    exit;
});

WHMCS

Already using the OpsIQ WHMCS hook from Sites (includes/hooks/opsiq_tracker.php)? It already signs your customers into the portal and brings them back to the page they were on, so you do not need this snippet. Just set Portal Studio → Sign-in page → Your login page URL to your WHMCS client area login. Use the code below only if you are not installing that hook.
1

Save part 1 as opsiq_support.php in your WHMCS root (next to clientarea.php).

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the hook, set $opsiq_site_secret = '…'; in configuration.php instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Save part 2 as includes/hooks/opsiq_support_link.php to add Support to the client-area menu.

WHMCS
/* Two files you own — no OpsIQ module, nothing to keep updated.
 *
 * 1) Save this part as  opsiq_support.php  in your WHMCS root. */

require __DIR__ . '/init.php';

$ca = new WHMCS\ClientArea();
$ca->initPage();
$ca->requireLogin();                                         // login, then back here

$secret = '';
if (is_file(__DIR__ . '/configuration.php')) {
    include __DIR__ . '/configuration.php';                  // defines $opsiq_site_secret
    $secret = isset($opsiq_site_secret) ? (string) $opsiq_site_secret : 'opsiq_whsec_YOUR_SITE_SECRET';   // this site's secret; configuration.php wins when set
}
if ($secret === '') { http_response_code(503); exit('Support portal is not configured.'); }   // fail closed

// Where to land: the portal page they came from, only if it is on the portal.
$portal = 'https://YOUR-OPSIQ/portal/your-workspace';
$back   = preg_replace('/#.*$/', '', (string)($_GET['opsiq_portal_return'] ?? ''));
$target = ($back === $portal || strpos($back, $portal . '/') === 0 || strpos($back, $portal . '?') === 0)
    ? $back : $portal;

$uid    = (int) $ca->getUserID();
$client = localAPI('GetClientsDetails', ['clientid' => $uid]);

$b64 = static function ($v) {
    return rtrim(strtr(base64_encode(json_encode($v, JSON_UNESCAPED_SLASHES)), '+/', '-_'), '=');
};
$now     = time();
$signing = $b64(['alg' => 'HS256', 'typ' => 'JWT']) . '.' . $b64([
    'site_key'      => 'YOUR_SITE_KEY',
    'iat'           => $now,
    'exp'           => $now + 120,
    'authenticated' => true,
    'jti'           => bin2hex(random_bytes(16)),
    'single_use'    => true,
    'platform'      => 'whmcs',
    'customer'      => [
        'id'          => $uid,                       // REQUIRED
        'email'       => $client['email'] ?? '',     // REQUIRED
        'name'        => trim(($client['firstname'] ?? '') . ' ' . ($client['lastname'] ?? '')),
        'external_id' => (string) $uid,
    ],
]);
$token = $signing . '.' . rtrim(strtr(base64_encode(hash_hmac('sha256', $signing, $secret, true)), '+/', '-_'), '=');

// Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
$url = $target . (strpos($target, '?') === false ? '?' : '&')
     . 'site_key=' . rawurlencode('YOUR_SITE_KEY') . '&identity_token=' . rawurlencode($token);
header('Referrer-Policy: no-referrer');
header('Cache-Control: no-store');
header('Location: ' . $url, true, 302);
exit;

/* 2) And this part as  includes/hooks/opsiq_support_link.php  to put a
 *    Support entry in the client-area navbar:
 *
 *    add_hook('ClientAreaPrimaryNavbar', 1, function ($navbar) {
 *        $navbar->addChild('opsiqSupport', [
 *            'label' => 'Support',
 *            'uri'   => 'opsiq_support.php',
 *            'order' => 60,
 *        ]);
 *    });
 */

Node.js / Express

1

Run: npm i jsonwebtoken

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment (.env with dotenv, or your host's settings) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Paste the route after your session / passport setup. Change /login if your login page lives elsewhere.

Node.js / Express
// npm i jsonwebtoken
const jwt = require("jsonwebtoken");
const crypto = require("crypto");

const PORTAL = "https://YOUR-OPSIQ/portal/your-workspace";
const onPortal = (u) => u === PORTAL || u.startsWith(PORTAL + "/") || u.startsWith(PORTAL + "?");

app.get("/support-portal", (req, res) => {
  const user = req.user;                                  // set by your session / passport
  if (!user) return res.redirect("/login?next=" + encodeURIComponent(req.originalUrl));

  const secret = process.env.OPSIQ_SITE_SECRET || "opsiq_whsec_YOUR_SITE_SECRET";   // this site's secret; the environment wins when set
  if (!secret) return res.status(503).send("Support portal is not configured.");   // fail closed

  // Where to land: the portal page they came from, only if it is on the portal.
  const back = String(req.query.opsiq_portal_return || "").replace(/#.*$/, "");
  const target = onPortal(back) ? back : PORTAL;

  const token = jwt.sign({
    site_key: "YOUR_SITE_KEY",
    authenticated: true,
    jti: crypto.randomBytes(16).toString("hex"),
    single_use: true,                                     // one-time link
    platform: "node",
    customer: {
      id: user.id,                                        // REQUIRED
      email: user.email,                                  // REQUIRED
      name: user.name,
      external_id: String(user.id),
    },
  }, secret, { algorithm: "HS256", expiresIn: 120 });     // sets iat + exp

  // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
  const url = target + (target.includes("?") ? "&" : "?")
    + "site_key=" + encodeURIComponent("YOUR_SITE_KEY") + "&identity_token=" + encodeURIComponent(token);
  res.set("Referrer-Policy", "no-referrer").set("Cache-Control", "no-store").redirect(302, url);
});

Node.js (no dependencies)

1

No packages needed. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Replace currentUser() with your app's signed-in customer, then call supportPortal(req, res) for GET /support-portal in your server.

Node.js (no dependencies)
// No packages needed — Node's own crypto is enough.
const crypto = require("crypto");

const PORTAL = "https://YOUR-OPSIQ/portal/your-workspace";
const b64 = (obj) => Buffer.from(JSON.stringify(obj)).toString("base64url");

// 1. WHO IS SIGNED IN — replace with your app's session lookup. Return null for a guest.
function currentUser(req) {
  return req.user || null;                                // { id, email, name }
}

// GET /support-portal
function supportPortal(req, res) {
  const here = new URL(req.url, "http://local");
  const user = currentUser(req);
  if (!user) {                                            // a guest: sign in first, then come back
    res.writeHead(302, { Location: "/login?next=" + encodeURIComponent(req.url) });
    return res.end();
  }
  const secret = process.env.OPSIQ_SITE_SECRET || "opsiq_whsec_YOUR_SITE_SECRET";   // this site's secret; the environment wins when set
  if (!secret) { res.writeHead(503); return res.end("Support portal is not configured."); }

  // Where to land: the portal page they came from, only if it is on the portal.
  const back = (here.searchParams.get("opsiq_portal_return") || "").replace(/#.*$/, "");
  const target = (back === PORTAL || back.startsWith(PORTAL + "/") || back.startsWith(PORTAL + "?")) ? back : PORTAL;

  const now = Math.floor(Date.now() / 1000);
  const signing = b64({ alg: "HS256", typ: "JWT" }) + "." + b64({
    site_key: "YOUR_SITE_KEY",
    iat: now,
    exp: now + 120,
    authenticated: true,
    jti: crypto.randomBytes(16).toString("hex"),
    single_use: true,
    platform: "node",
    customer: { id: user.id, email: user.email, name: user.name, external_id: String(user.id) },
  });
  const token = signing + "." + crypto.createHmac("sha256", secret).update(signing).digest("base64url");

  // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
  const url = target + (target.includes("?") ? "&" : "?")
    + "site_key=" + encodeURIComponent("YOUR_SITE_KEY") + "&identity_token=" + encodeURIComponent(token);
  res.writeHead(302, { Location: url, "Referrer-Policy": "no-referrer", "Cache-Control": "no-store" });
  res.end();
}

Python (Flask / FastAPI)

1

Run: pip install pyjwt (the Flask example also uses flask-login).

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Paste into the module that creates your app. @login_required sends guests to your login view and back.

Python (Flask / FastAPI)
# pip install pyjwt flask-login
import os, secrets, time, urllib.parse
import jwt
from flask import request, redirect, abort
from flask_login import login_required, current_user

PORTAL = "https://YOUR-OPSIQ/portal/your-workspace"

def portal_link(user, back=""):
    secret = os.environ.get("OPSIQ_SITE_SECRET") or "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; the environment wins when set
    if not secret:
        abort(503, "Support portal is not configured.")     # fail closed
    back = back.split("#", 1)[0]
    target = back if (back == PORTAL or back.startswith(PORTAL + "/") or back.startswith(PORTAL + "?")) else PORTAL
    now = int(time.time())
    token = jwt.encode({
        "site_key": "YOUR_SITE_KEY",
        "iat": now,
        "exp": now + 120,                                   # URL-borne: ~2 minutes
        "authenticated": True,
        "jti": secrets.token_hex(16),
        "single_use": True,                                 # one-time link
        "platform": "python",
        "customer": {
            "id": user.id,                                  # REQUIRED
            "email": user.email,                            # REQUIRED
            "name": getattr(user, "name", ""),
            "external_id": str(user.id),
        },
    }, secret, algorithm="HS256")
    # Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    return (target + ("&" if "?" in target else "?")
            + "site_key=" + urllib.parse.quote("YOUR_SITE_KEY", safe="")
            + "&identity_token=" + urllib.parse.quote(token, safe=""))

@app.route("/support-portal")
@login_required
def support_portal():
    resp = redirect(portal_link(current_user, request.args.get("opsiq_portal_return", "")), code=302)
    resp.headers["Referrer-Policy"] = "no-referrer"
    resp.headers["Cache-Control"] = "no-store"
    return resp

Django

1

Run: pip install pyjwt

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in settings.py (for example os.environ["OPSIQ_SITE_SECRET"]) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Paste the view into views.py and add path("support-portal/", views.support_portal) to urls.py. @login_required sends guests to LOGIN_URL and back.

Django
# pip install pyjwt   —   urls.py: path("support-portal/", views.support_portal)
import secrets, time, urllib.parse
import jwt
from django.conf import settings
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse, HttpResponseRedirect

PORTAL = "https://YOUR-OPSIQ/portal/your-workspace"

@login_required
def support_portal(request):
    secret = getattr(settings, "OPSIQ_SITE_SECRET", "") or "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; settings win when set
    if not secret:                                       # fail closed
        return HttpResponse("Support portal is not configured.", status=503)

    # Where to land: the portal page they came from, only if it is on the portal.
    back = request.GET.get("opsiq_portal_return", "").split("#", 1)[0]
    target = back if (back == PORTAL or back.startswith(PORTAL + "/") or back.startswith(PORTAL + "?")) else PORTAL

    now = int(time.time())
    token = jwt.encode({
        "site_key": "YOUR_SITE_KEY",
        "iat": now,
        "exp": now + 120,
        "authenticated": True,
        "jti": secrets.token_hex(16),
        "single_use": True,
        "platform": "django",
        "customer": {
            "id": request.user.pk,                        # REQUIRED
            "email": request.user.email,                  # REQUIRED
            "name": request.user.get_full_name(),
            "external_id": str(request.user.pk),
        },
    }, secret, algorithm="HS256")

    # Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    url = (target + ("&" if "?" in target else "?")
           + "site_key=" + urllib.parse.quote("YOUR_SITE_KEY", safe="")
           + "&identity_token=" + urllib.parse.quote(token, safe=""))
    resp = HttpResponseRedirect(url)
    resp["Referrer-Policy"] = "no-referrer"
    resp["Cache-Control"] = "no-store"
    return resp

.NET / C#

1

Run: dotnet add package System.IdentityModel.Tokens.Jwt

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OpsIQ:SiteSecret (user-secrets, the OpsIQ__SiteSecret environment variable or Key Vault) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Paste into Program.cs after app.UseAuthentication(). RequireAuthorization() sends guests to your login and back.

.NET / C#
// dotnet add package System.IdentityModel.Tokens.Jwt   —   Program.cs
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using Microsoft.IdentityModel.Tokens;

const string Portal = "https://YOUR-OPSIQ/portal/your-workspace";

app.MapGet("/support-portal", (HttpContext ctx, IConfiguration cfg) =>
{
    var secret = cfg["OpsIQ:SiteSecret"];
    if (string.IsNullOrEmpty(secret)) secret = "opsiq_whsec_YOUR_SITE_SECRET";   // this site's secret; configuration wins when set
    if (string.IsNullOrEmpty(secret))                     // fail closed
        return Results.StatusCode(503);

    var id    = ctx.User.FindFirstValue(ClaimTypes.NameIdentifier) ?? "";   // REQUIRED
    var email = ctx.User.FindFirstValue(ClaimTypes.Email) ?? "";            // REQUIRED
    var name  = ctx.User.Identity?.Name ?? "";

    // Where to land: the portal page they came from, only if it is on the portal.
    var back = (ctx.Request.Query["opsiq_portal_return"].ToString()).Split('#')[0];
    var target = (back == Portal || back.StartsWith(Portal + "/") || back.StartsWith(Portal + "?")) ? back : Portal;

    var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret));
    var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
    var now   = DateTimeOffset.UtcNow;
    var payload = new JwtPayload
    {
        { "site_key",      "YOUR_SITE_KEY" },
        { "iat",           now.ToUnixTimeSeconds() },
        { "exp",           now.AddSeconds(120).ToUnixTimeSeconds() },
        { "authenticated", true },
        { "jti",           Guid.NewGuid().ToString("N") },
        { "single_use",    true },
        { "platform",      "dotnet" },
        { "customer", new Dictionary<string, object>
            { { "id", id }, { "email", email }, { "name", name }, { "external_id", id } } },
    };
    var token = new JwtSecurityTokenHandler().WriteToken(new JwtSecurityToken(new JwtHeader(creds), payload));

    // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    var url = target + (target.Contains('?') ? "&" : "?")
        + "site_key=" + Uri.EscapeDataString("YOUR_SITE_KEY") + "&identity_token=" + Uri.EscapeDataString(token);
    ctx.Response.Headers["Referrer-Policy"] = "no-referrer";
    ctx.Response.Headers["Cache-Control"] = "no-store";
    return Results.Redirect(url);
}).RequireAuthorization();

Ruby on Rails

1

Add gem "jwt" to the Gemfile and run bundle install.

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment (or Rails credentials) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Save as app/controllers/support_controller.rb and add get "/support-portal", to: "support#portal" to routes.rb. Devise's authenticate_user! sends guests to login and back.

Ruby on Rails
# Gemfile: gem "jwt"   —   routes.rb: get "/support-portal", to: "support#portal"
require "jwt"
require "securerandom"
require "cgi"

class SupportController < ApplicationController
  before_action :authenticate_user!                      # login, then back here

  PORTAL = "https://YOUR-OPSIQ/portal/your-workspace"

  def portal
    secret = ENV["OPSIQ_SITE_SECRET"].presence || "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; the environment wins when set
    return head :service_unavailable if secret.blank?    # fail closed

    # Where to land: the portal page they came from, only if it is on the portal.
    back = params[:opsiq_portal_return].to_s.split("#").first.to_s
    target = (back == PORTAL || back.start_with?(PORTAL + "/", PORTAL + "?")) ? back : PORTAL

    now = Time.now.to_i
    token = JWT.encode({
      site_key:      "YOUR_SITE_KEY",
      iat:           now,
      exp:           now + 120,
      authenticated: true,
      jti:           SecureRandom.hex(16),
      single_use:    true,
      platform:      "rails",
      customer: {
        id:          current_user.id,                    # REQUIRED
        email:       current_user.email,                 # REQUIRED
        name:        current_user.try(:name).to_s,
        external_id: current_user.id.to_s
      }
    }, secret, "HS256")

    # Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    url = target + (target.include?("?") ? "&" : "?") +
          "site_key=#{CGI.escape("YOUR_SITE_KEY")}&identity_token=#{CGI.escape(token)}"
    response.headers["Referrer-Policy"] = "no-referrer"
    response.headers["Cache-Control"] = "no-store"
    redirect_to url, allow_other_host: true
  end
end

Java (Spring Boot)

1

Add io.jsonwebtoken:jjwt-api, jjwt-impl and jjwt-jackson (0.12+).

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set opsiq.site.secret in application.properties (for example from OPSIQ_SITE_SECRET) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Replace currentUser() with your user lookup. With Spring Security the route must be authenticated so guests go to login and back.

Java (Spring Boot)
// io.jsonwebtoken:jjwt-api / jjwt-impl / jjwt-jackson (0.12+)
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import jakarta.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.security.Principal;
import java.time.Instant;
import java.util.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;
import org.springframework.web.servlet.view.RedirectView;

@Controller
public class SupportPortalController {
    private static final String PORTAL = "https://YOUR-OPSIQ/portal/your-workspace";

    @Value("${opsiq.site.secret:opsiq_whsec_YOUR_SITE_SECRET}")   // this site's secret; opsiq.site.secret wins when set
    private String secret;

    /** WHO IS SIGNED IN — replace with your own lookup: id, email, name. */
    private Map<String, Object> currentUser(Principal principal) {
        return Map.of("id", principal.getName(), "email", principal.getName(), "name", principal.getName());
    }

    @GetMapping("/support-portal")
    public RedirectView supportPortal(Principal principal, HttpServletResponse response,
                                      @RequestParam(name = "opsiq_portal_return", defaultValue = "") String back) {
        if (principal == null) return new RedirectView("/login");               // login, then back here
        if (secret.isEmpty()) throw new ResponseStatusException(HttpStatus.SERVICE_UNAVAILABLE);   // fail closed

        // Where to land: the portal page they came from, only if it is on the portal.
        back = back.split("#", 2)[0];
        String target = (back.equals(PORTAL) || back.startsWith(PORTAL + "/") || back.startsWith(PORTAL + "?")) ? back : PORTAL;

        Map<String, Object> user = currentUser(principal);
        Map<String, Object> customer = Map.of(
            "id",          user.get("id"),                 // REQUIRED
            "email",       user.get("email"),              // REQUIRED
            "name",        user.get("name"),
            "external_id", String.valueOf(user.get("id")));

        Instant now = Instant.now();
        String token = Jwts.builder()
            .claim("site_key", "YOUR_SITE_KEY")
            .claim("authenticated", true)
            .claim("single_use", true)                     // one-time link
            .claim("platform", "java")
            .claim("customer", customer)
            .id(UUID.randomUUID().toString())              // jti
            .issuedAt(Date.from(now))
            .expiration(Date.from(now.plusSeconds(120)))
            .signWith(Keys.hmacShaKeyFor(secret.getBytes(StandardCharsets.UTF_8)), Jwts.SIG.HS256)
            .compact();

        // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
        String url = target + (target.contains("?") ? "&" : "?")
            + "site_key=" + URLEncoder.encode("YOUR_SITE_KEY", StandardCharsets.UTF_8)
            + "&identity_token=" + URLEncoder.encode(token, StandardCharsets.UTF_8);
        response.setHeader("Referrer-Policy", "no-referrer");
        response.setHeader("Cache-Control", "no-store");
        return new RedirectView(url);
    }
}

Go

1

Run: go get github.com/golang-jwt/jwt/v5

2

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

3

Replace currentUser() with your session lookup and register http.HandleFunc("/support-portal", supportPortal).

Go
// go get github.com/golang-jwt/jwt/v5
package main

import (
    "crypto/rand"
    "encoding/hex"
    "fmt"
    "net/http"
    "net/url"
    "os"
    "strings"
    "time"

    "github.com/golang-jwt/jwt/v5"
)

const portal = "https://YOUR-OPSIQ/portal/your-workspace"

type User struct{ ID, Email, Name string }

// WHO IS SIGNED IN — replace with your session lookup. Return nil for a guest.
func currentUser(r *http.Request) *User { return nil }

func supportPortal(w http.ResponseWriter, r *http.Request) {
    user := currentUser(r)
    if user == nil { // login, then back here
        http.Redirect(w, r, "/login?next="+url.QueryEscape(r.URL.RequestURI()), http.StatusFound)
        return
    }
    secret := os.Getenv("OPSIQ_SITE_SECRET")
    if secret == "" {
        secret = "opsiq_whsec_YOUR_SITE_SECRET" // this site's secret; the environment wins when set
    }
    if secret == "" { // fail closed
        http.Error(w, "Support portal is not configured.", http.StatusServiceUnavailable)
        return
    }

    // Where to land: the portal page they came from, only if it is on the portal.
    back := strings.SplitN(r.URL.Query().Get("opsiq_portal_return"), "#", 2)[0]
    target := portal
    if back == portal || strings.HasPrefix(back, portal+"/") || strings.HasPrefix(back, portal+"?") {
        target = back
    }

    jti := make([]byte, 16)
    rand.Read(jti)
    now := time.Now().Unix()
    token, err := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
        "site_key":      "YOUR_SITE_KEY",
        "iat":           now,
        "exp":           now + 120,
        "authenticated": true,
        "jti":           hex.EncodeToString(jti),
        "single_use":    true,
        "platform":      "go",
        "customer": map[string]any{
            "id":          user.ID,    // REQUIRED
            "email":       user.Email, // REQUIRED
            "name":        user.Name,
            "external_id": fmt.Sprint(user.ID),
        },
    }).SignedString([]byte(secret))
    if err != nil {
        http.Error(w, "sign failed", http.StatusInternalServerError)
        return
    }

    // Default target: https://YOUR-OPSIQ/portal/your-workspace?site_key=YOUR_SITE_KEY&identity_token=…
    sep := "?"
    if strings.Contains(target, "?") {
        sep = "&"
    }
    w.Header().Set("Referrer-Policy", "no-referrer")
    w.Header().Set("Cache-Control", "no-store")
    http.Redirect(w, r, target+sep+"site_key="+url.QueryEscape("YOUR_SITE_KEY")+"&identity_token="+url.QueryEscape(token), http.StatusFound)
}

Když je něco špatně

Portál se otevírá, ale je odepsaný.

Tajný nebo pracovní prostor klíč neodpovídá tomuto pracovnímu prostoru, token je starší než 120 sekund (zkontrolovat hodiny serveru), nebo stejný odkaz byl otevřen dvakrát. Generovat podepsaný zkušební odkaz: pokud to funguje, porovnat vaše tvrzení žeton s příkladem.

Vždycky přistane na portálu.

Return adresa nebyla uvnitř vašeho portálu, takže byla záměrně ignorována. Porovnejte ji s Portálem URL zobrazeným v Nastavení.

Hosté se místo přihlášení dopustí chyby

Nahraďte /login na trase s vaší skutečnou přihlašovací stránky a ujistěte se, že se vaše přihlášení vrátí na adresu, která byla uvedena.

Pracuje jen pro některé zákazníky.

customer. email nebo custoser. id je pro ně prázdný. Oba jsou povinné.

Vývojář

Klientský chat: rozpoznávat přikládané zákazníky

Volitelné. Většina stránek to nepotřebuje: s prostým chat snippet a konektor, chat ověřuje zákazníky sám, s rezervačním nebo objednávkovým číslem plus důkaz pro vyhledávání a emailem kód před objednáním. Přidat to, když chcete zákazníka, který je již přihlášen na vašich stránkách automaticky, s celým účtem. WHMCS už dělá to přes jeho háček. Vzdálené stránky, vaše stránky, kódy, C tiskne stejný kód s vaším klíčem webu vyplněn.

Jak to funguje

1
Vaše stránka tiskne chatovací značku

Pro signed- v zákazníkovi widget URL přenáší &identity_token=... podepsaný na vašem serveru; pro hosta je to plain tag. Nic tajného není na stránce: pouze token, který vyprší.

2
Chatování potvrzuje symbol

Podpis, klíč pracovní plochy a vypršení platnosti. Zákazník je pak znám na každé chatu, a váš konektor může odpovědět na své vlastní objednávky, rezervace nebo faktury.

3
Chatování se před koncem hodiny osvěží.

Volá to stránku, na které je?opsiq_identity_refresh=1& role = zákazník. Váš kód odpovídá {"úspěch": true, "identity_token":...", když je zákazník přihlášen, nebo 401 s {"úspěchem": false, "login_required": true}, když nejsou. Proto musí refresh ovladač běžet před otiskem stránky cokoliv.

Jak se liší od portálu token

Život

1 hodina (exp = iat + 3600) místo 120 sekundy, protože to jezdí každý chat žádost místo jednoho přesměrování.

Žádné jti nebo single_use

Stejný symbol se používá pro každou zprávu, dokud ji obnova nenahradí.

To samé ostatní.

site_key, iat, exp, ověřeno: pravda, platforma, a zákazník s požadovaným ID a e-mailem. Stejné tajemství, stejný podpis.

💡
Identita říká WHO zákazník je. Jejich objednávky, rezervace nebo faktury se dostanou na chat přes konektor: ten, který volá platformu API, nebo, pokud vaše platforma nemá API, konektor plus jeho mostní soubor (stavitel konektoru je jeden).
💡
Podpisové tajemství je pro vás vyplněno. V Dálkových Stránkách, vaše stránky, Codes, C, každý příklad již obsahuje toto místo je vlastní tajemství, takže kód funguje jako dlážděné: není nic kopírovat nebo konfigurovat. Příklady na této stránce show opsiq_whsec_YOUR_SITE_SECRET Každý příklad hledá OPSIQ_SITE_SECRET (nebo vlastní nastavení vašeho rámce, pojmenované v jeho poznámkách) na serveru nejprve a používá, že když je nastaven, takže můžete přesunout tajemství ze souboru kdykoliv chcete, například ho otočit bez editace kódu. Ať tak či onak soubor běží pouze na vašem serveru: nikdy jej vložte do webové stránky nebo prohlížeče JavaScript, a nikdy ji odevzdat do veřejného úložiště, protože každý, kdo drží tajemství může zapsat jako některý z vašich zákazníků nebo zaměstnanců. WHMCS a Botble nemusí nic z toho: WHMCS Háček přichází s tajemstvím vyplněné, a Botble konektor ji naplní do mostu.

Kompletní kód, nástupiště po platformě

WHMCS

Nothing to add: the WHMCS hook in Option 1 already signs your signed-in clients into the chat, refreshes the token on long visits, and signs staff into Admin Chat. No connector is needed for this.
1

Install the Option 1 hook as includes/hooks/opsiq_tracker.php. Do not also paste the plain chat tag.

2

Optional: add the WHMCS connector under Connectors if you also want the chat to answer about invoices, services and tickets. Identity works without it.

includes/hooks/opsiq_tracker.php
/* WHMCS: no extra code. Option 1 (the All-in-One WHMCS Hook) signs the signed-in
 * client into Client Chat, answers ?opsiq_identity_refresh=1 and signs staff into
 * Admin Chat. No connector is needed for identity. */

Botble (connector bridge)

Nothing to add for bookings: the Botble connector takes bookings as a guest checkout and finds existing bookings by booking number and proof, so guests do not need to sign in. Admins are signed in through the bridge (op=admin_embed).
1

Install the Botble connector under Connectors, copy its bridge file from the connector panel and upload it to public/. The panel fills in OPSIQ_HOST, OPSIQ_SITE_KEY and OPSIQ_SITE_SECRET for you.

2

Botble has no API, so the bridge file is how the chat reads rooms and takes bookings. To also recognise a guest who is already signed in on the hotel site, use the Laravel option with your customer guard.

public/opsiq-botble-bridge.php
/* Botble: no extra code for bookings.
 * The connector books as a guest checkout and finds bookings by booking number + proof.
 * In public/opsiq-botble-bridge.php fill OPSIQ_HOST, OPSIQ_SITE_KEY and OPSIQ_SITE_SECRET.
 * Admins: op=admin_embed */

PHP (no dependencies)

1

Save as opsiq-chat.php. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

At the very top of every page (or your front controller), before any output: require 'opsiq-chat.php'; opsiq_chat_refresh();

3

Just before </body> on every page: <?= opsiq_chat_tag() ?> — it replaces the plain chat tag. Replace opsiq_chat_user() with your signed-in customer.

opsiq-chat.php
<?php
/* opsiq-chat.php — signed-in customers for OpsIQ Client Chat. */

// WHO IS SIGNED IN — replace the body with your app's session. Return null for a guest.
function opsiq_chat_user(): ?array
{
    $u = $_SESSION['user'] ?? null;               // e.g. ['id' => 7, 'email' => '…', 'name' => '…']
    return is_array($u) && !empty($u['id']) && !empty($u['email']) ? $u : null;
}

function opsiq_chat_token(array $u): string
{
    $secret = (string) (getenv('OPSIQ_SITE_SECRET') ?: 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; the environment wins when set
    if ($secret === '') return '';                           // fail closed: plain chat, no identity
    $b64 = static fn($v) => rtrim(strtr(base64_encode(json_encode($v, JSON_UNESCAPED_SLASHES)), '+/', '-_'), '=');
    $now = time();
    $signing = $b64(['alg' => 'HS256', 'typ' => 'JWT']) . '.' . $b64([
        'site_key'      => 'YOUR_SITE_KEY',
        'iat'           => $now,
        'exp'           => $now + 3600,                      // the widget refreshes before this
        'authenticated' => true,
        'platform'      => 'php',
        'customer'      => [
            'id'          => $u['id'],                       // REQUIRED
            'email'       => $u['email'],                    // REQUIRED
            'name'        => $u['name'] ?? '',
            'external_id' => (string) $u['id'],
        ],
    ]);
    return $signing . '.' . rtrim(strtr(base64_encode(hash_hmac('sha256', $signing, $secret, true)), '+/', '-_'), '=');
}

// Call at the top of every page, before any output.
function opsiq_chat_refresh(): void
{
    if (empty($_GET['opsiq_identity_refresh'])) return;
    header('Content-Type: application/json; charset=utf-8');
    header('Cache-Control: no-store');
    $u = opsiq_chat_user();
    $t = $u ? opsiq_chat_token($u) : '';
    if ($t === '') { http_response_code(401); echo json_encode(['success' => false, 'login_required' => true]); exit; }
    echo json_encode(['success' => true, 'role' => 'customer', 'identity_token' => $t]);
    exit;
}

// Print before </body> on every page, instead of the plain chat tag.
function opsiq_chat_tag(): string
{
    $src = 'https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY';
    $u = opsiq_chat_user();
    $t = $u ? opsiq_chat_token($u) : '';
    if ($t !== '') $src .= '&identity_token=' . rawurlencode($t);
    return '<script async src="' . htmlspecialchars($src, ENT_QUOTES) . '" data-opsiq-widget="client-chat"></script>';
}

Laravel

1

Run: composer require firebase/php-jwt. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET=… in .env with 'opsiq' => ['site_secret' => env('OPSIQ_SITE_SECRET')] in config/services.php on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Save the class as app/Support/OpsiqChat.php, and add the small OpsiqChatRefresh middleware from the bottom of the code to the web group, so the widget can refresh its token on any page.

3

In your main Blade layout, just before </body>: {!! \App\Support\OpsiqChat::tag() !!}

app/Support/OpsiqChat.php
<?php
// app/Support/OpsiqChat.php — composer require firebase/php-jwt
namespace App\Support;

use Firebase\JWT\JWT;

final class OpsiqChat
{
    public static function token(): string
    {
        $user = auth()->user();
        $secret = (string) (config('services.opsiq.site_secret') ?: 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; config wins when set
        if (!$user || $secret === '') return '';                 // guest, or not configured
        $now = time();
        return JWT::encode([
            'site_key'      => 'YOUR_SITE_KEY',
            'iat'           => $now,
            'exp'           => $now + 3600,
            'authenticated' => true,
            'platform'      => 'laravel',
            'customer'      => [
                'id'          => $user->id,                      // REQUIRED
                'email'       => $user->email,                   // REQUIRED
                'name'        => $user->name,
                'external_id' => (string) $user->id,
            ],
        ], $secret, 'HS256');
    }

    /** For Blade: {!! \App\Support\OpsiqChat::tag() !!} before </body>. */
    public static function tag(): string
    {
        $src = 'https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY';
        $t = self::token();
        if ($t !== '') $src .= '&identity_token=' . rawurlencode($t);
        return '<script async src="' . e($src) . '" data-opsiq-widget="client-chat"></script>';
    }
}

/* Refresh: the widget asks ?opsiq_identity_refresh=1 on the page it is on.
 * Laravel 11+ — bootstrap/app.php:
 *
 *   ->withMiddleware(function ($middleware) {
 *       $middleware->web(append: \App\Http\Middleware\OpsiqChatRefresh::class);
 *   })
 *
 * app/Http/Middleware/OpsiqChatRefresh.php:
 *
 *   public function handle($request, \Closure $next) {
 *       if (!$request->query('opsiq_identity_refresh')) return $next($request);
 *       $t = \App\Support\OpsiqChat::token();
 *       return $t === ''
 *           ? response()->json(['success' => false, 'login_required' => true], 401)->header('Cache-Control', 'no-store')
 *           : response()->json(['success' => true, 'role' => 'customer', 'identity_token' => $t])->header('Cache-Control', 'no-store');
 *   }
 */

WordPress / WooCommerce

1

This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, add define('OPSIQ_SITE_SECRET', '…'); to wp-config.php instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Paste into your theme's functions.php or a small plugin. It prints the chat itself, so remove the plain chat tag if you added one.

3

For WooCommerce orders in the chat, add the WooCommerce connector under Connectors.

functions.php
/* functions.php or a small plugin — OpsIQ Client Chat with signed-in customers. */

if (!defined('OPSIQ_SITE_SECRET')) define('OPSIQ_SITE_SECRET', 'opsiq_whsec_YOUR_SITE_SECRET');   // this site's secret; wp-config.php wins when set

function opsiq_chat_token(): string {
    if (!is_user_logged_in() || !defined('OPSIQ_SITE_SECRET') || OPSIQ_SITE_SECRET === '') return '';
    $u   = wp_get_current_user();
    $b64 = static fn($v) => rtrim(strtr(base64_encode(wp_json_encode($v)), '+/', '-_'), '=');
    $now = time();
    $signing = $b64(['alg' => 'HS256', 'typ' => 'JWT']) . '.' . $b64([
        'site_key'      => 'YOUR_SITE_KEY',
        'iat'           => $now,
        'exp'           => $now + 3600,
        'authenticated' => true,
        'platform'      => 'wordpress',
        'customer'      => [
            'id'          => $u->ID,                     // REQUIRED
            'email'       => $u->user_email,             // REQUIRED
            'name'        => $u->display_name,
            'external_id' => (string) $u->ID,
        ],
    ]);
    return $signing . '.' . rtrim(strtr(base64_encode(hash_hmac('sha256', $signing, OPSIQ_SITE_SECRET, true)), '+/', '-_'), '=');
}

// Refresh: the widget asks ?opsiq_identity_refresh=1 on the page it is on.
add_action('init', function () {
    if (empty($_GET['opsiq_identity_refresh'])) return;
    nocache_headers();
    $t = opsiq_chat_token();
    if ($t === '') wp_send_json(['success' => false, 'login_required' => true], 401);
    wp_send_json(['success' => true, 'role' => 'customer', 'identity_token' => $t]);
});

// The chat tag, on every front-end page.
add_action('wp_footer', function () {
    $src = 'https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY';
    $t = opsiq_chat_token();
    if ($t !== '') $src .= '&identity_token=' . rawurlencode($t);
    echo '<script async src="' . esc_url($src) . '" data-opsiq-widget="client-chat"></script>';
});

Node.js / Express

1

Run: npm i jsonwebtoken. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

app.use(opsiqChat) after your session / passport middleware. It answers the refresh and sets res.locals.opsiqChatTag.

3

Print res.locals.opsiqChatTag (unescaped) just before </body> in your layout, instead of the plain chat tag.

opsiq-chat.js
// opsiq-chat.js — npm i jsonwebtoken
const jwt = require("jsonwebtoken");

function opsiqChatToken(user) {
  const secret = process.env.OPSIQ_SITE_SECRET || "opsiq_whsec_YOUR_SITE_SECRET";   // this site's secret; the environment wins when set
  if (!user || !secret) return "";
  return jwt.sign({
    site_key: "YOUR_SITE_KEY",
    authenticated: true,
    platform: "node",
    customer: { id: user.id, email: user.email, name: user.name, external_id: String(user.id) },  // id + email REQUIRED
  }, secret, { algorithm: "HS256", expiresIn: 3600 });     // sets iat + exp
}

// app.use(opsiqChat) — after your session / passport middleware.
function opsiqChat(req, res, next) {
  const token = opsiqChatToken(req.user);
  if (req.query.opsiq_identity_refresh) {                  // the widget refreshing on this page
    res.set("Cache-Control", "no-store");
    return token
      ? res.json({ success: true, role: "customer", identity_token: token })
      : res.status(401).json({ success: false, login_required: true });
  }
  const src = "https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY" + (token ? "&identity_token=" + encodeURIComponent(token) : "");
  res.locals.opsiqChatTag = '<script async src="' + src.replace(/"/g, """) + '" data-opsiq-widget="client-chat"></script>';
  next();
}

module.exports = { opsiqChat };

Python (Flask)

1

Run: pip install pyjwt flask-login. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Call init_opsiq_chat(app) where you create the app. It answers the refresh and gives templates opsiq_chat_tag.

3

In your base template, just before </body>: {{ opsiq_chat_tag }}

opsiq_chat.py
# opsiq_chat.py — pip install pyjwt flask-login
import os, time, urllib.parse
import jwt
from flask import request, jsonify
from flask_login import current_user
from markupsafe import Markup, escape

def opsiq_chat_token():
    secret = os.environ.get("OPSIQ_SITE_SECRET") or "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; the environment wins when set
    if not secret or not current_user.is_authenticated:
        return ""
    now = int(time.time())
    return jwt.encode({
        "site_key": "YOUR_SITE_KEY", "iat": now, "exp": now + 3600,
        "authenticated": True, "platform": "python",
        "customer": {"id": current_user.id, "email": current_user.email,       # REQUIRED
                     "name": getattr(current_user, "name", ""), "external_id": str(current_user.id)},
    }, secret, algorithm="HS256")

def init_opsiq_chat(app):
    @app.before_request
    def _opsiq_refresh():
        if request.args.get("opsiq_identity_refresh"):
            t = opsiq_chat_token()
            resp = jsonify({"success": True, "role": "customer", "identity_token": t}) if t \
                else (jsonify({"success": False, "login_required": True}), 401)
            if isinstance(resp, tuple):
                resp[0].headers["Cache-Control"] = "no-store"
            else:
                resp.headers["Cache-Control"] = "no-store"
            return resp

    @app.context_processor
    def _opsiq_tag():
        t = opsiq_chat_token()
        src = "https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY" + ("&identity_token=" + urllib.parse.quote(t, safe="") if t else "")
        return {"opsiq_chat_tag": Markup('<script async src="%s" data-opsiq-widget="client-chat"></script>' % escape(src))}

Django

1

Run: pip install pyjwt. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in settings.py (for example os.environ["OPSIQ_SITE_SECRET"]) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Add "yourapp.opsiq_chat.OpsiqChatMiddleware" to MIDDLEWARE (after AuthenticationMiddleware) and "yourapp.opsiq_chat.opsiq_chat" to TEMPLATES context_processors.

3

In your base template, just before </body>: {{ opsiq_chat_tag }}

opsiq_chat.py
# yourapp/opsiq_chat.py — pip install pyjwt
import time, urllib.parse
import jwt
from django.conf import settings
from django.http import JsonResponse
from django.utils.html import format_html

def opsiq_chat_token(user):
    secret = getattr(settings, "OPSIQ_SITE_SECRET", "") or "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; settings win when set
    if not secret or not user.is_authenticated:
        return ""
    now = int(time.time())
    return jwt.encode({
        "site_key": "YOUR_SITE_KEY", "iat": now, "exp": now + 3600,
        "authenticated": True, "platform": "django",
        "customer": {"id": user.pk, "email": user.email,             # REQUIRED
                     "name": user.get_full_name(), "external_id": str(user.pk)},
    }, secret, algorithm="HS256")

class OpsiqChatMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response
    def __call__(self, request):
        if request.GET.get("opsiq_identity_refresh"):
            t = opsiq_chat_token(request.user)
            resp = (JsonResponse({"success": True, "role": "customer", "identity_token": t}) if t
                    else JsonResponse({"success": False, "login_required": True}, status=401))
            resp["Cache-Control"] = "no-store"
            return resp
        return self.get_response(request)

def opsiq_chat(request):
    t = opsiq_chat_token(request.user)
    src = "https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY" + ("&identity_token=" + urllib.parse.quote(t, safe="") if t else "")
    return {"opsiq_chat_tag": format_html('<script async src="{}" data-opsiq-widget="client-chat"></script>', src)}

.NET / C#

1

Run: dotnet add package System.IdentityModel.Tokens.Jwt. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OpsIQ:SiteSecret (user-secrets, the OpsIQ__SiteSecret environment variable or Key Vault) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

In Program.cs, after app.UseAuthentication(): app.Use(OpsiqChat.Refresh);

3

In _Layout.cshtml before </body>: @Html.Raw(OpsiqChat.Tag(Context))

OpsiqChat.cs
// OpsiqChat.cs — dotnet add package System.IdentityModel.Tokens.Jwt
using System.IdentityModel.Tokens.Jwt;
using System.Net;
using System.Security.Claims;
using System.Text;
using Microsoft.IdentityModel.Tokens;

public static class OpsiqChat
{
    public static string Token(HttpContext ctx)
    {
        var secret = ctx.RequestServices.GetRequiredService<IConfiguration>()["OpsIQ:SiteSecret"];
        if (string.IsNullOrEmpty(secret)) secret = "opsiq_whsec_YOUR_SITE_SECRET";   // this site's secret; configuration wins when set
        if (string.IsNullOrEmpty(secret) || ctx.User.Identity?.IsAuthenticated != true) return "";
        var id = ctx.User.FindFirstValue(ClaimTypes.NameIdentifier) ?? "";      // REQUIRED
        var email = ctx.User.FindFirstValue(ClaimTypes.Email) ?? "";            // REQUIRED
        var creds = new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret)), SecurityAlgorithms.HmacSha256);
        var now = DateTimeOffset.UtcNow;
        var payload = new JwtPayload {
            { "site_key", "YOUR_SITE_KEY" }, { "iat", now.ToUnixTimeSeconds() }, { "exp", now.AddSeconds(3600).ToUnixTimeSeconds() },
            { "authenticated", true }, { "platform", "dotnet" },
            { "customer", new Dictionary<string, object> { { "id", id }, { "email", email }, { "name", ctx.User.Identity?.Name ?? "" }, { "external_id", id } } },
        };
        return new JwtSecurityTokenHandler().WriteToken(new JwtSecurityToken(new JwtHeader(creds), payload));
    }

    // app.Use(OpsiqChat.Refresh) — the widget refreshing on the page it is on.
    public static async Task Refresh(HttpContext ctx, Func<Task> next)
    {
        if (string.IsNullOrEmpty(ctx.Request.Query["opsiq_identity_refresh"])) { await next(); return; }
        ctx.Response.Headers["Cache-Control"] = "no-store";
        var t = Token(ctx);
        if (t == "") { ctx.Response.StatusCode = 401; await ctx.Response.WriteAsJsonAsync(new { success = false, login_required = true }); return; }
        await ctx.Response.WriteAsJsonAsync(new { success = true, role = "customer", identity_token = t });
    }

    public static string Tag(HttpContext ctx)
    {
        var t = Token(ctx);
        var src = "https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY" + (t != "" ? "&identity_token=" + Uri.EscapeDataString(t) : "");
        return "<script async src=\"" + WebUtility.HtmlEncode(src) + "\" data-opsiq-widget=\"client-chat\"></script>";
    }
}

Ruby on Rails

1

Add gem "jwt" and run bundle install. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

include OpsiqChat in ApplicationController.

3

In app/views/layouts/application.html.erb before </body>: <%= opsiq_chat_tag %>

app/controllers/concerns/opsiq_chat.rb
# app/controllers/concerns/opsiq_chat.rb — Gemfile: gem "jwt"
require "jwt"
require "cgi"

module OpsiqChat
  extend ActiveSupport::Concern

  included do
    before_action :opsiq_identity_refresh
    helper_method :opsiq_chat_tag
  end

  private

  def opsiq_chat_token
    secret = ENV["OPSIQ_SITE_SECRET"].presence || "opsiq_whsec_YOUR_SITE_SECRET"   # this site's secret; the environment wins when set
    return "" if secret.blank? || !respond_to?(:current_user, true) || current_user.nil?
    now = Time.now.to_i
    JWT.encode({
      site_key: "YOUR_SITE_KEY", iat: now, exp: now + 3600,
      authenticated: true, platform: "rails",
      customer: { id: current_user.id, email: current_user.email,          # REQUIRED
                  name: current_user.try(:name).to_s, external_id: current_user.id.to_s }
    }, secret, "HS256")
  end

  def opsiq_identity_refresh
    return unless params[:opsiq_identity_refresh].present?
    response.headers["Cache-Control"] = "no-store"
    t = opsiq_chat_token
    return render(json: { success: false, login_required: true }, status: :unauthorized) if t.blank?
    render json: { success: true, role: "customer", identity_token: t }
  end

  def opsiq_chat_tag
    t = opsiq_chat_token
    src = "https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY" + (t.present? ? "&identity_token=#{CGI.escape(t)}" : "")
    helpers.tag.script(nil, async: true, src: src, data: { opsiq_widget: "client-chat" })
  end
end

Java (Spring Boot)

1

Add io.jsonwebtoken:jjwt-api, jjwt-impl and jjwt-jackson (0.12+). This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set opsiq.site.secret (for example from OPSIQ_SITE_SECRET) on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Replace currentUser() with your user lookup. The filter answers the refresh on every page; @ControllerAdvice exposes opsiqChatTag to views.

3

Thymeleaf layout before </body>: <th:block th:utext="${opsiqChatTag}"/>

OpsiqChat.java
// OpsiqChat.java — io.jsonwebtoken:jjwt-api / jjwt-impl / jjwt-jackson (0.12+)
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.security.Principal;
import java.time.Instant;
import java.util.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.util.HtmlUtils;

@Component
@ControllerAdvice
public class OpsiqChat implements Filter {
    @Value("${opsiq.site.secret:opsiq_whsec_YOUR_SITE_SECRET}")   // this site's secret; opsiq.site.secret wins when set
    private String secret;

    /** WHO IS SIGNED IN — replace with your lookup: id, email, name. Null for a guest. */
    private Map<String, Object> currentUser(Principal p) {
        return p == null ? null : Map.of("id", p.getName(), "email", p.getName(), "name", p.getName());
    }

    String token(HttpServletRequest req) {
        Map<String, Object> u = currentUser(req.getUserPrincipal());
        if (u == null || secret.isEmpty()) return "";
        Instant now = Instant.now();
        return Jwts.builder()
            .claim("site_key", "YOUR_SITE_KEY").claim("authenticated", true).claim("platform", "java")
            .claim("customer", Map.of("id", u.get("id"), "email", u.get("email"), "name", u.get("name"),
                                      "external_id", String.valueOf(u.get("id"))))          // id + email REQUIRED
            .issuedAt(Date.from(now)).expiration(Date.from(now.plusSeconds(3600)))
            .signWith(Keys.hmacShaKeyFor(secret.getBytes(StandardCharsets.UTF_8)), Jwts.SIG.HS256)
            .compact();
    }

    @Override // the widget refreshing on the page it is on
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        if (req.getParameter("opsiq_identity_refresh") == null) { chain.doFilter(request, response); return; }
        HttpServletResponse res = (HttpServletResponse) response;
        res.setHeader("Cache-Control", "no-store");
        res.setContentType("application/json");
        String t = token(req);
        if (t.isEmpty()) { res.setStatus(401); res.getWriter().write("{\"success\":false,\"login_required\":true}"); return; }
        res.getWriter().write("{\"success\":true,\"role\":\"customer\",\"identity_token\":\"" + t + "\"}");
    }

    @ModelAttribute("opsiqChatTag")
    public String tag(HttpServletRequest req) {
        String t = token(req);
        String src = "https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY" + (t.isEmpty() ? "" : "&identity_token=" + URLEncoder.encode(t, StandardCharsets.UTF_8));
        return "<script async src=\"" + HtmlUtils.htmlEscape(src) + "\" data-opsiq-widget=\"client-chat\"></script>";
    }
}

Go

1

Run: go get github.com/golang-jwt/jwt/v5. This site's signing secret is already filled in, so the code works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET in the environment on the server instead: that value is used first. Keep this file on the server and never commit it to a public repository.

2

Replace currentUser() with your session lookup, and wrap your router: http.ListenAndServe(addr, OpsiqChatRefresh(mux)).

3

Pass OpsiqChatTag(r) to your layout template and print it before </body>.

opsiq_chat.go
// opsiq_chat.go — go get github.com/golang-jwt/jwt/v5
package main

import (
    "encoding/json"
    "fmt"
    "html"
    "html/template"
    "net/http"
    "net/url"
    "os"
    "time"

    "github.com/golang-jwt/jwt/v5"
)

type OpsiqUser struct{ ID, Email, Name string }

// WHO IS SIGNED IN — replace with your session lookup. Return nil for a guest.
func currentUser(r *http.Request) *OpsiqUser { return nil }

func opsiqChatToken(r *http.Request) string {
    u, secret := currentUser(r), os.Getenv("OPSIQ_SITE_SECRET")
    if secret == "" {
        secret = "opsiq_whsec_YOUR_SITE_SECRET" // this site's secret; the environment wins when set
    }
    if u == nil || secret == "" {
        return ""
    }
    now := time.Now().Unix()
    t, err := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
        "site_key": "YOUR_SITE_KEY", "iat": now, "exp": now + 3600,
        "authenticated": true, "platform": "go",
        "customer": map[string]any{"id": u.ID, "email": u.Email, "name": u.Name, "external_id": fmt.Sprint(u.ID)}, // id + email REQUIRED
    }).SignedString([]byte(secret))
    if err != nil {
        return ""
    }
    return t
}

// OpsiqChatRefresh answers the widget's ?opsiq_identity_refresh=1 on any page.
func OpsiqChatRefresh(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        if r.URL.Query().Get("opsiq_identity_refresh") == "" {
            next.ServeHTTP(w, r)
            return
        }
        w.Header().Set("Cache-Control", "no-store")
        w.Header().Set("Content-Type", "application/json")
        if t := opsiqChatToken(r); t != "" {
            json.NewEncoder(w).Encode(map[string]any{"success": true, "role": "customer", "identity_token": t})
            return
        }
        w.WriteHeader(http.StatusUnauthorized)
        json.NewEncoder(w).Encode(map[string]any{"success": false, "login_required": true})
    })
}

// OpsiqChatTag is printed before </body> in your layout.
func OpsiqChatTag(r *http.Request) template.HTML {
    src := "https://YOUR-OPSIQ/widget.php?site_key=YOUR_SITE_KEY"
    if t := opsiqChatToken(r); t != "" {
        src += "&identity_token=" + url.QueryEscape(t)
    }
    return template.HTML(`<script async src="` + html.EscapeString(src) + `" data-opsiq-widget="client-chat"></script>`)
}

Když je něco špatně

Chat zachází s logged- in zákazník jako host

Tag byl vytištěn bez identity_token (tajemství chybí na serveru, takže kód selže), nebo klíč nebo tajemství token pracovní prostor neodpovídá.

Nejdřív rozpoznán, pak po hodině host.

Refresh handler není dosažen: musí běžet před jakýmkoli výstupem, na každé stránce se zobrazí chat.

Ten obyčejný chat se ukazuje dvakrát.

Odstraňte prostou chatovou značku z vaší šablony: tento kód tiskne chat sám.

Vývojář

Moduly a SDK

OpsIQ poskytuje SDK balíčky a pluginy pro společné platformy.

Jak to funguje
Moduly a SDKČtyři balíčky: PHP SDK, Node.js SDK, WordPress plugin a WHMCS modul, každý s jeho instalační příkaz.PHPPHP SDKskladatel vyžaduje opsiq/sdkJSNode. js SDK@ info: tooltip opsiq/sdkWPWordPresspluginOne- click install & connectWHModul WHMCSPřidání k fakturaci + relé vstupenky
Moduly a SDKs
PHP SDK

Balíček skladatelů: Token identity generování, akce API helpers, ověření podpisu webháku.

JavaScript SDK

Browser- side: sledování, identita, vlastní akce, chat control.

WordPressplugin

Widget injekce, identita z WP uživatelských sessions, WooCommerce synchronizace.

Modul WHMCS

Plné integrace: widget, relé vstupenek, identity, admin AI.

Prodloužení tématu Shopify

Aplikace vložená s automatickou identitou zákazníka.

PHP SDK rychlý start

PHP SDK příklad
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);
Vývojář

Průzkum API, automatizace bez připojení

Survey Studio je určen pro použití stejného typu General API, interní exekutor, event bus a webhook operace jako zbytek OpsIQ. To umožňuje vývojářům integrovat konec až konec bez budování baleného konektoru.

⚠️
Stav realizace: pouze živý katalog platform.get.survey.config a platform.save.survey.config- To je... surveys.* a feedback.* níže uvedené rodiny jsou schválenou cílovou smlouvou a musí se vrátit unknown_action až do registrace.

Cílové akční rodiny

Typy, šablony a rychlé spuštění

surveys.types.*, surveys.templates.* a surveys.quick_launch.* seznam, náhled, ustrnout a potvrdit kompletní startéry.

Průzkumy a verze

surveys.create|get|list|update|archive|duplicate plus neměnná verze, validace a zveřejnění akcí.

Rozmístění a cílení

surveys.deployments.*, surveys.links.*, surveys.audiences.*, surveys.triggers.* a surveys.variables.*.

Informace a odpovědi

surveys.invitations.*, surveys.campaigns.*, surveys.recipients.*, surveys.responses.*, vývoz, reakční a analytická opatření.

Webové háky, import a zpětná vazba

surveys.webhooks.*, surveys.imports.*, feedback.items.*, feedback.analytics.*, feedback.sources.* a feedback.analysis.*.

Propojovací-volný průtok

1
Vytvořit a zveřejnit prostřednictvím General API

* akce s workspace- prised klíčem. Spisy deklarují povolení, riziko, potvrzení, idempotenci a suchozemské chování.

2
Přijmout svou obchodní událost

Odeslat podepsanou událost na přilétající webhook, např. zrušení objednávky nebo dokončeno po nástupu.

3
Mapovat v akcích & Triggers

Vyberte si OpsIQ Obecné API akce, jako je vydání pozvánky na průzkum nebo příprava kampaně, poté mapy polí z ověřeného spouštěcího užitečného zatížení.

4
Přihlásit se k událostem průzkumu

* životní cyklus podmnožiny do vašeho cílového parametru s podpisem, filtrem, retry, logem a autorizovaným přehráváním.

Cílový kanonický jev

Sdílený katalog bude zahrnovat průzkum / nasazení publikovat stav, publikum a spouštěcí rozhodnutí, pozvánky, vykreslování / start / parciální / resume / complete / leave, odezvu na změny stavu kampaně a selhání dodávek. Vysokoobjemové zaměření, posun a čas otázky pobyt v úložišti Průzkumné analýzy, pokud není výslovně zdokumentováno pro fan- out.

Konektor je volitelný. Přidává opakovaně použitelné nálezné platformy, ověřenou identitu, fakta, proměnné a výčet příjemců. General API plus Akce & Triggers / Webové háčky zůstává kompletní integrační cestou pro vývojáře, kteří nepotřebují balený konektor.
Vývojář

REST API

U OpsIQ REST API umožňuje programově přístup ke všem funkcím platformy.

Jak to funguje
REST APITerminál ukazující POST na OpsIQ API s klíčem pro doručitele, výpis otevřených vstupenek, a paged JSON odpověď.$ 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 }
REST API

Formát žádosti

Poslat klíč jako Authorization: Bearer opq_... nebo X-OpsIQ-Key: opq_...Použijte jednu autentizační hlavičku, ne obojí.

Formát žádosti API
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"
}

Společná akce

API je založena na činnosti: poslat action jméno v těle. Každý registrovaný správce JSON operace má stabilní název akce. POST {"action":"meta.actions"} (není vyžadován žádný klíč) pro autoritativní, per- install seznam, žádost o smlouvu, metadata rizika a rozsah. platform.routes.* Most zůstává pouze pro starší integraci.

crm.contacts.list

Seznam CRM kontaktů (rozsah crm. read). Params: q, status, source, tag, olovo skóre, limit.

crm.contacts.upsert

Resolve- or- vytvořit kontakt (rozsah crm. write). Params: email plus pole, tagy, poznámky.

crm.deals.list

Seznam CRM obchody (oblast působnosti crm... Params: status, stage_id, company_id, owner_admin_id, pipeline_id, limit.

crm.activities.record

Zaznamenejte celoživotní / podnikatelskou činnost pro kontakt (rozsah crm.write). Params: e-mail nebo contact_id, událost, hodnota, měna.

crm.conversions.record

Zaznamenejte konverzi (rozsah crm.write). Params: contact_id nebo e-mailem, conversion_type, hodnota, měna.

crm.events.list

Prověřte proud událostí CRM (rozsah crm. read). Params: limit.

tickets.list

Seznam vstupenek (rozsah tickets.read). Params: stránka, per_page, třídění, pořádek, status, priorita, department_id, assigned_admin_id, client_emailHledat.

tickets.get

Jeden lístek a jeho zprávy (rozsah tickets.read): ticket_id nebo ticket_number, include_messages, messages_limit.

tickets.reply

Odeslat odpověď na jízdenku (rozsah tickets.write): ticket_id nebo ticket_number, tělo, author_type, author_name- Vnitřní.

tickets.update

Aktualizovat tiket (rozsah tickets.write): ticket_id nebo ticket_number, status, priorita, předmět, department_id, assigned_admin_id.

tickets.open

Otevřít podpůrnou jízdenku (rozsah tickets.write): customer_email, customer_name, subjekt, tělo, priorita.

tickets.bulk

Spustit hromadnou frontu operace (rozsah tickets. write). Params: operace, ids.

conversations.list

Seznamte konverzace livechat (rozsah conversations.read). Params: stránka, per_page, status, assigned_admin_id, client_emailHledat.

conversations.get

Jeden rozhovor a jeho zprávy (rozsah conversations.read): conversation_id nebo thread_key, include_messages.

conversations.messages

Historie paged zpráv (rozsah conversations.read): conversation_id, strana, per_page, include_internal.

conversations.send

Odeslat zprávu do konverzace (rozsah konverzations.write): conversation_id, zpráva, sender_type- Vnitřní.

conversations.update

Přiřadit, re- status nebo re- titul konverzace (rozsah konverzaces.write). Params: conversation_id, status, assigned_admin_id, subjekt.

Connectors. list / . get / . test

Podívejte se, které konektory jsou instalovány, co každý z nich může dělat, a zda jeho pověření funguje (rozsah connectors. read).

automations.actions.list

Akce, které bude vaše akce stavitel provozovat (rozsah automaticky. read).

automations.triggers.list

Co bude střílet a za jakých podmínek (rozsah automatických. read).

automations.runs.list

Historie provádění pro ladění integrace (rozsah automaticky. read). Params: status, action_key.

departments.list

Odbory, do kterých můžete přesměrovat jízdenku (rozsah repartments. read).

notifications.list

Oznámení pro jednoho operátora (rozsah notifications.read): admin_id (vyžaduje se), unread_only.

analytics.export

Sekce zprávy jako CSV (rozsah analytics. read). Params: sekce, přednastaveno, od, do. Call analyticks. sections. seznam platných hodnot.

site_intelligence. sites. list / . reports. list

Monitorovací stránky a jejich SEO zprávy (oblast působnosti site_intelligence.read).

commerce. products. list / . get

Váš katalog Store, paged (rozsah commerce. read). Filtry: aktivní, kategorie, vyhledávání. .get vrací jeden produkt s jeho variantami.

commerce. orders. list / . get

Uložit objednávky (rozsah commerce.read). Filtry: status, payment_method, kanál, customer_email. Přines jeden po order_id nebo jeho ORD - reference, s řadovými položkami. Živá brána Checkout rukojeť se nikdy nevrátí.

commerce.refunds.list

Žádosti o vrácení a jejich stav (rozsah commerce. read).

commerce.quotes.create

Cena položky pro zákazníka (rozsah commerce. write). Zdroj store nebo konektor slimák. Vytvoří nic: žádná objednávka, žádná platba. Viz obchodní sekce.

lístky.csat.list / .get / .metrics

Odpovědi na míru jako data (rozsah tickets. read). Filtrovat podle hodnocení, jízdenky, agenta nebo období; .metrics vrací stejná čísla, která dashboard ukazuje.

conversations.ratings.list

Chatování konverzace vaši návštěvníci hodnotil, s komentářem, co vyvolalo hodnocení a agent připisoval (rozsah konverzaces. read).

knowledge.articles.list

Stránka prostřednictvím vašich článků nápovědy Centra (rozsah kb. read).

knowledge.articles.get

Jeden nápověda centrum článek id (rozsah kb. read). Params: article_id.

webhooks.events.list

Každá událost, kterou můžete přihlásit webhook koncový bod, s jeho užitečné zatížení. K dispozici na každém plánu, takže si můžete stavět proti němu před nákupem.

files.get

Short- live podepsaný odkaz ke stažení pro přílohu (rozsah files. read). Params: reference, ttl.

security.check

Zeptejte se, zda IP nebo e-mail je blokován nebo podezřelý zde (rozsah security.read). Kombinuje IP firewall, blocklist vstupenek a cached Security AI verdikt. ip, e-mail.

security.report

Hlášení zneužití váš systém pozorovaný (rozsah security. write). Nahráno jako bezpečnostní událost, klasifikované bezpečnostní AI okamžitě, a administrátoři jsou upozorněny na high-riziko verdicts. Params: ip, e-mail, druh, důvod, zdroj.

Security. blocklist. add / . list

Správa spamu pravidla vstupenky potrubí enforces (rozsah security.write / security .read). Stejný obchod jako stránka Vstupenky "Block odesilatel" ovládání. Params: druh (e-mail, doména, ip), hodnota, důvod, expires_hours.

💡
meta. actions je vždy autoritativní. Vrací každou akci, která je k dispozici na vaší instalaci s rozsahem, který každý potřebuje, takže nikdy nemusíte hádat nebo zakódovat tento seznam.

Sběr, filtrování a třídění

Každá akce v seznamu používá stejné parametry, takže se je naučíte jednou.

strana / per_page

Číslo stránky začínající na 1, a velikost stránky. Výchozí 50, maximálně 200. limit a offset jsou také přijímány, pokud dáváte přednost jim.

seřazeno / pořadí

Pole třídit podle, a asc nebo desc (výchozí desk). Každá akce přijímá pevný soubor druhů polí; vše ostatní je ignorováno spíše než chybování.

filters

Odeslat filtry jako objekt, nebo předat filtr jako parametr úrovně top- level. Neznámé filtry jsou ignorovány.

Co se vrátí

položky, strana, per_page, počet, celkem a has_more. Vyžadujte si stránky až do has_more je falešná.

Žádost o vyplněný, filtrovaný, tříděný seznam
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
}

Chyby

Každý neúspěch vrací stejný tvar, se stabilní code můžete větve na. Neshodují se na lidsky čitelné error text, který může být přeformulován.

Chyba
{
  "success": false,
  "code": "missing_scope",
  "error": "API key missing required scope. Needed one of: tickets.read, admin",
  "request_id": "req_8f2c1a9d4b7e"
}
Chybějící API klíč / Neplatný API kláves

Nebyl odeslán žádný klíč, nebo je špatně nebo vypršela. HTTP 401.

missing_scope

Klíč je platný, ale postrádá rozsah této akce potřebuje. HTTP 403.

read_only_key / action_restricted

Klíčem je pouze pro čtení, nebo tato akce není v jeho povoleném seznamu. HTTP 403.

unknown_action

Žádné takové akce. Volejte meta. acces pro aktuální seznam. HTTP 400.

chybějící_parametr / neplatný_parametry

Vyžadovaný parametr chybí, nebo není hodnota přijata. HTTP 400.

not_found

Záznam neexistuje, nebo není v pracovním prostoru tento klíč vidět. HTTP 404.

plan_feature_locked

Váš plán neobsahuje funkci, do které tato akce patří. feature, the plan_name v platnost a upgrade_url. Přezkoušení nepomůže, plán se musí změnit. HTTP 402.

license_required

Licence instalace není aktivní, takže do doby obnovení nebude probíhat žádná akce. HTTP 402.

selling_paused

Commerce-specific: obchod je vypnutý, takže nic nemůže být citován nebo objednán. HTTP 400.

rate_limited

Hodinové omezení tohoto klíče je využito. HTTP 429.

server_error

Něco selhalo na naší straně request_id identifikuje pokus, pokud potřebujete nahlásit. HTTP 500.

Bezpečné retry

Pokud se píše timesy ven nemůžete říct, zda to přistálo. idempotency_key a opakování stejného hovoru vrací původní výsledek místo toho, aby se práce dvakrát.

Idempotentní zápis
{
  "action": "tickets.reply",
  "ticket_id": 4192,
  "body": "Thanks, that is now fixed.",
  "idempotency_key": "your-unique-id-for-this-attempt"
}
Jak dlouho to trvá

Klíč je zapamatován pro 24 hodiny proti stejné akci a API Klíč.

Co dostaneš zpátky

Původní odpověď, plus idempotent_replay: pravda, takže můžete říct, že to bylo REPLAY.

Nevýhodě zůstávají vymahatelné.

Zapamatování si zapamatujte pouze úspěšných zápisů. Pokud se hovor nezdařil, odeslání je opět s stejným klíčem, což je to, co chcete.

Čtenky

Čtení ignoruje klíč, opakování čtení je neškodné.

Test bez změny

Přidat dry_run: true Váš klíč, mikroskopy a parametry jsou kontrolovány přesně tak, jak je obvyklé, pak se hovor zastaví, než bude něco vytvořeno nebo změněno.

Suchý běh: bezpečně ověřte průkaznost a užitečné zatížení
{
  "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."
}
Používejte dry_run při stavbě. Je to nejrychlejší způsob, jak potvrdit, že klíč má správné skopy a vaše užitečné zatížení je správně tvarované, aniž by se vytvořily testovací data, která pak budete muset vyčistit.

Mezní hodnoty sazeb

Mezní hodnota per- key

Konfigurovatelný hodinový limit na API klíč (výchozí 1000 požadavky za hodinu). Nastavte jej na klíč pod Nastavení,API Klíče.

Při překročení

HTTP 429 s kódem rate_limited, plus Retry- Po záhlaví vám řekne, kolik sekund čekat. Limita se resetuje v horní části příští hodiny.

Vědět, kde stojíš.

Každá odpověď nese X- RateLimit -Limit, X- RAteLimit-Resistující a X- rateLimis-Reset (Unix timestamp). Sledujte Zbývající a zpomalit, než vyběhnete spíše než čekat na odmítnutí.

Vyprávění 429 od 401

A 429 znamená počkat a zkusit to znovu. 401 znamená, že samotný klíč je chybný nebo prošlý, takže opětovné zkoušení nepomůže, dokud klíč nespravíte.

Preauth brute- silent guard

Opakované pokusy o selhání - auth od jednoho IP jsou řešeny odděleně. Platné klíče nikdy zakopnout to.

Nejlepší praxe

Stáhněte se, když Zbývající klesne, a ctít Retry- Po 429 místo aby se znovu okamžitě.

Verze a stabilita

Aktuální verze

v1. Každá odpověď nese X -OpsIQ-API-Verze a X...OpsIQ-API-Stav, abyste si mohli potvrdit, s čím mluvíte.

Jak budete varováni

Pokud je verze někdy v důchodu, odpovědi získat standardní Depreciation a Sunset hlavičky, a meta. acces zprávy deprimované a sunset_at. Zkontrolujte ty ve svém monitoringu a nebudete nikdy překvapeni.

Co se nezmění

Stávající názvy akcí, jejich parametry a kódy jejich chyb. Nová opatření a nová volitelná pole mohou být přidány kdykoli, takže ignorujte pole, která nepoznáváte, spíše než je nedáte do selhání.

Kompletní integrace, začít dokončit

Tohle je celá smyčka: najdi práci, přečti si ji, jednej na ní a potvrď, co jsi udělal.

Plný pracovní tok vstupenek přes 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}
💡
Vše výše funguje stejně pro konverzace: conversations. list, conversetions. get, convertions. send a converzations. update sledovat stejný vzor, parametry a tvar odezvy.

Více opracovaných příkladů

Každý z nich je kompletní, průhledný kus skutečné integrace, spíše než úlomek.

Stránka v každém záznamu, ve třech jazycích

Pravidlo je stejné všude: žádejte o další stránku až do has_more Nikdy neuhádneš, co je to všechno.

Python · stránka přes každý otevřený tip
import requests

API  = "https://your-opsiq-domain.com/api/v1.php"
HEAD = {"Authorization": "Bearer opq_your_api_key"}

def every(action, **params):
    """Yield every record for a list action, one page at a time."""
    page = 1
    while True:
        r = requests.post(API, headers=HEAD,
                          json={"action": action, "page": page, "per_page": 200, **params},
                          timeout=30)
        r.raise_for_status()
        body = r.json()
        if not body.get("success"):
            raise RuntimeError(f"{body.get('code')}: {body.get('error')}")
        yield from body.get("items", [])
        if not body.get("has_more"):
            return
        page += 1

for ticket in every("tickets.list", status="open"):
    print(ticket["ticket_number"], ticket["subject"])
Node. js · page přes každou stopu
const API = "https://your-opsiq-domain.com/api/v1.php";
const HEAD = { Authorization: "Bearer opq_your_api_key", "Content-Type": "application/json" };

async function* every(action, params = {}) {
  for (let page = 1; ; page++) {
    const res  = await fetch(API, {
      method: "POST",
      headers: HEAD,
      body: JSON.stringify({ action, page, per_page: 200, ...params }),
    });
    const body = await res.json();
    if (!body.success) throw new Error(`${body.code}: ${body.error}`);
    yield* body.items ?? [];
    if (!body.has_more) return;
  }
}

for await (const contact of every("crm.contacts.list", { status: "lead" })) {
  console.log(contact.email);
}
PHP · stránka přes každý otevřený tip
<?php
$api = "https://your-opsiq-domain.com/api/v1.php";

function opsiq(string $action, array $params = []): array {
    global $api;
    $ch = curl_init($api);
    curl_setopt_array($ch, [
        CURLOPT_POST           => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER     => [
            "Authorization: Bearer opq_your_api_key",
            "Content-Type: application/json",
        ],
        CURLOPT_POSTFIELDS => json_encode(["action" => $action] + $params),
        CURLOPT_TIMEOUT    => 30,
    ]);
    $body = json_decode((string)curl_exec($ch), true) ?: [];
    curl_close($ch);
    if (empty($body["success"])) {
        throw new RuntimeException(($body["code"] ?? "error") . ": " . ($body["error"] ?? "unknown"));
    }
    return $body;
}

$page = 1;
do {
    $res = opsiq("tickets.list", ["status" => "open", "page" => $page, "per_page" => 200]);
    foreach ($res["items"] as $t) {
        echo $t["ticket_number"], " ", $t["subject"], PHP_EOL;
    }
    $page++;
} while (!empty($res["has_more"]));

Vypořádejte se s každým selháním, které API může vrátit

Úlovek code, nikdy o znění errorTento obal je celá smlouva v jedné funkci.

Python · klient, který správně zpracovává každý chybový kód
import time, requests

RETRYABLE = {"server_error", "handler_unavailable"}

def call(action, **params):
    for attempt in range(4):
        r = requests.post(API, headers=HEAD, json={"action": action, **params}, timeout=30)
        body = r.json()
        if body.get("success"):
            return body

        code = body.get("code")

        if code == "rate_limited":
            # Honour Retry-After rather than guessing.
            time.sleep(int(r.headers.get("Retry-After", 60)))
            continue

        if code in RETRYABLE:
            time.sleep(2 ** attempt)
            continue

        # Everything below is permanent: retrying cannot fix it.
        if code == "plan_feature_locked":
            raise RuntimeError(f"Plan {body['plan_name']} lacks {body['feature']}: {body['upgrade_url']}")
        if code in ("missing_scope", "read_only_key", "action_restricted"):
            raise RuntimeError(f"This API key cannot do that: {body['error']}")
        if code in ("invalid_api_key", "missing_api_key"):
            raise RuntimeError("The key is wrong or expired; retrying will not help.")
        raise RuntimeError(f"{code}: {body.get('error')} (request_id {body.get('request_id')})")

    raise RuntimeError("Gave up after repeated retries")

Odpověď na špatné skóre spokojenosti během hodiny

Přečti si nízké skóre, otevři pro každého lístek a nikdy se nechovej dvakrát na stejném.

Zavřít smyčku na nešťastných zákazníků
# 1. Yesterday's detractors.
POST /api/v1.php
{"action":"tickets.csat.list","filters":{"max_rating":2},"days":1,"per_page":100}

# 2. For each one, open a follow-up ticket. The idempotency key is derived
#    from the response id, so re-running the job creates nothing twice.
POST /api/v1.php
{"action":"tickets.open",
 "customer_email":"[email protected]",
 "subject":"Following up on your feedback",
 "body":"We saw your rating and want to put it right.",
 "priority":"high",
 "idempotency_key":"csat-followup-8821"}

# 3. The same shape works for chat: conversations.ratings.list with
#    {"filters":{"max_stars":2},"days":1} returns the comment, what
#    prompted the rating and which agent it is credited to.

Citovat položku a jednat na odpověď obchodníka

Odmítnutí, které vám řekne, co máte sbírat
POST /api/v1.php
{"action":"commerce.quotes.create","source":"whmcs","item_id":"47","quantity":1}

# The merchant needs more from the customer before it can price this:
{
  "success": false,
  "code": "quote_refused",
  "error": "We need the domain this hosting plan is for.",
  "actionable": true,
  "missing": ["domain"]
}

# Ask the customer for exactly what "missing" names, then quote again.
POST /api/v1.php
{"action":"commerce.quotes.create","source":"whmcs","item_id":"47",
 "fields":{"domain":"example.ng"}}

{
  "success": true,
  "source": "whmcs",
  "quote": {
    "quote_id": "…",
    "totals": { "total": { "amount_minor": 306027, "currency": "NGN" }, "currency": "NGN" },
    "expires_at": "2026-09-05T12:34:56+00:00"
  },
  "ordering": { "creates_order": false, "confirm_via_api": false }
}
⚠️
Zobrazit zákazníka totals.total přesně tak, jak se vrátil. Množství ne vždy násobí jednotkovou cenu - hotel cituje jednu místnost na tři noci - takže číslo si vypočítat sami se může lišit od toho, co obchodník bude skutečně účtovat.

Webhook přijímač, který je bezpečný pro provoz ve výrobě

Ověřte, de- duplicate, odpovězte rychle, pak udělejte práci. Dodávky retry, takže stejná událost může dorazit více než jednou.

PHP · přijímač ve tvaru produkčního webhooku
<?php
// (verification exactly as in the Webhooks section, omitted here for brevity)

$event    = json_decode($raw, true);
$name     = $_SERVER["HTTP_X_OPSIQ_EVENT"] ?? ($event["event"] ?? "");
$delivery = $_SERVER["HTTP_X_OPSIQ_DELIVERY"] ?? "";

// 1. Already seen this delivery? Say OK and stop — do not redo the work.
if ($db->alreadyProcessed($delivery)) {
    http_response_code(200);
    exit(json_encode(["ok" => true, "duplicate" => true]));
}

// 2. Answer FAST. Anything slow belongs on your own queue: OpsIQ treats a
//    timeout as a failure and will retry the whole delivery.
$db->markProcessed($delivery);
$queue->push($name, $event);

http_response_code(200);
echo json_encode(["ok" => true]);

// 3. Your worker then routes on the event name.
//    conversation.rated        -> alert the team on a 1 or 2 star rating
//    ticket.created            -> mirror into your own helpdesk
//    crm.deal.won              -> post to #sales-alerts
//    commerce.payment.confirmed-> release the order in your fulfilment system

Plány a nároky

Každá akce patří do funkce produktu, a váš plán rozhodne, které funkce máte. Pokud váš plán neobsahuje funkci, akce odpovědi 402 - po kontrole klíče, takže neověřený volající se nedozví nic o vašem plánu, a než bude něco vytvořeno, takže blokovaný zápis se nikdy nestane napůl.

Plánovac- uzamčená akce
{
  "success": false,
  "code": "plan_feature_locked",
  "feature": "commerce",
  "plan_locked": true,
  "plan_name": "Growth",
  "upgrade_url": "https://…",
  "request_id": "req_8f2c1a9d4b7e"
}
Jak to říct, kromě problému s povolením

A403znamená, že KEY je příliš úzký - předělat ji s správným rozsahem a funguje. A402znamená, že účet nemá funkci - žádný klíč ji nemůže odemknout, plán se musí změnit.

Neopakujte 402

Není to přechodné. upgrade_url tomu, kdo vlastní účet, místo aby se stáhl a znovu to zkoušel.

Admin rozsah to neobchází.

Scopes vyjádřit, co klíčové emitent delegoval; plán vyjadřuje, co si koupil účet. Admin- scoped klíč stále dostane 402 pro funkci, kterou plán postrádá.

Zjistěte to, než odplujete.

V feature každá činnost potřeby je zveřejněna v akčním adresáři níže a v meta.action, takže můžete zkontrolovat ve stavebním čase spíše než objevovat ve výrobě.

Nejrychlejší způsob, jak přesně vidět, kde je klíč stojí meta.me. Zpráva hlásí platný plán, všechny funkce, které nese, a každý krok, který tento klíč nemůže volat s důvodem pro každého.

meta. me - co ten klíč dokáže
POST /api/v1.php
Authorization: Bearer opq_your_api_key

{"action":"meta.me"}

{
  "success": true,
  "key": { "name": "Reporting", "scopes": ["tickets.read"], "permissions_mode": "read_only" },
  "plan": { "name": "Growth", "features": { "ticket_system": true, "commerce": false } },
  "capabilities": {
    "available_action_count": 812,
    "blocked_actions": {
      "commerce.orders.list": "plan_locked:commerce",
      "tickets.reply":        "read_only"
    }
  }
}
Zavolejte meta. me nejprve, když integrace chová jinak mezi dvěma instalací. To odpovídá "proč tento klíč nemůže udělat, že" v jednom požadavku, aniž by někdo otevřít admin.

Citace ceny

commerce.quotes.create ceny jednu položku pro jednoho zákazníka. To nic nevytváří - žádná objednávka, žádné platební relace, žádný držený akciový trh - takže je bezpečné volat, zatímco zákazník je stále rozhodování.

Citovat položku
POST /api/v1.php
Authorization: Bearer opq_your_api_key

# Your own Store
{"action":"commerce.quotes.create","source":"store","item_id":"12","quantity":2}

# A connected merchant platform, priced for a known customer
{"action":"commerce.quotes.create","source":"whmcs","item_id":"47",
 "fields":{"domain":"example.ng"},
 "customer":{"connector_customer_id":"1042"}}
Kupec vyhrává celkem

Pro připojenou platformu, celkový pochází z tohoto obchodníka a není nikdy přepočítán zde. Množství ne vždy násobí jednotkovou cenu - hotel cituje jeden pokoj na tři noci - tak ukázat součet jste byli uvedeny, ne jeden jste pracovali ven.

Refusal vám řekne, co chybí.

Pokud obchodník potřebuje více od zákazníka, dostanete quote_refused s missing seznam pojmenování polí, která mají sbírat, a vlastní formulace obchodníka, které musí ukázat.

Objednávka není API volání

Citace je orientační. Potvrzení se stane tam, kde zákazník je - podepsaná karta v chatu, nebo vlastní pokladní - nikdy prostřednictvím tohoto API. Odpověď říká, že v ordering.

Při prodeji je pozastaveno

Pokud obchod vypnul prodej, cituje odpovědi selling_paused Místo toho, aby si někdo něco koupil.

Ostatní cíle

Téměř vše, co potřebujete je jeden POST /api/v1.phpTo jsou výjimky a k čemu je každý z nich.

/api/v1/openapi.php · /api/v1/postman.php · /api/docs/

Stroj smlouvy a lidské reference. Žádný klíč není potřeba, takže můžete prozkoumat, než budete mít jeden.

/api/ai_stream.php

Server- odeslané události pro živé chatu odpovědi, jak jsou generovány. Řeka, ne JSON akce.

/api/writing.php

Starší AI- psaní koncový bod. Vše, co dělá, je také k dispozici jako writing.* akce na /api/v1.php,, které by měly být provedeny v rámci nové práce.

/api/inbox_copilot.php

Návrh, přepis a třídění vstupenky vložené do vašeho vlastního admina.

/api/v1/si/…

Zpravodajská služba stránek jako malý REST API - stránky, plazy, problémy, klíčová slova, příjmy - pro společnosti CI, které chtějí začít plazit po nasazení a přečíst výsledek.

/api/connectors.php?slug=&token=

Tam, kde je připojená platforma POST k vám přichycena vlastní webháky. Token je vyražen, když zapnete konektor.

/api/integrations/*.php

Integrační motor: běží a potvrzuje akce, a nejprodávanější, identity a jízdy události. Používá svůj vlastní typ klíče, vydané v rámci API & Webhook stavitel.

💡
Všechny se řídí stejnými pravidly plánu jako akce. Funkce, kterou váš plán nezahrnuje odpovědi 402 zde také, ve stejném tvaru.

Každá akce, s rozsahem, který potřebuje

Tento seznam je generován z běžícího katalogu, takže vždy odpovídá verzi, na které jste. meta.actions vrací stejné informace jako JSON.

2420 named actions: 804 reads, 1616 writes and 69 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: 606; explicit: 63; route_inferred: 1633; source_inferred: 118.

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: route_inferred. 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

Write. Scope: administration.write, admin. Contract: declared_dynamic. Admin Notifications Mark All Read

administration.notifications.mark.read

Write. Scope: administration.write, 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

analytika (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.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

Write. Scope: analytics.write, 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.save.widgets

Write. Scope: analytics.write, admin. Contract: route_inferred. Dashboard Save Widgets

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 (40)

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.meeting.decide

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meeting Decide

chat.meeting.outcome.set

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meeting Outcome Set

chat.meeting.type.delete

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meeting Type Delete

chat.meeting.type.save

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meeting Type Save

chat.meeting.types.list

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meeting Types List

chat.meetings.list

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Meetings List

chat.online.admins

Write. Scope: chat.write, admin. Contract: route_inferred. Chat Online Admins

chat.permissions.list

Write. Scope: admin. Contract: route_inferred. Chat Permissions List

chat.permissions.revoke

Write. Scope: admin. Contract: route_inferred. Chat Permissions Revoke

chat.permissions.save

Write. Scope: admin. Contract: route_inferred. Chat Permissions Save

chat.permissions.upload.avatar

Write. Scope: 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

obchod (11)

commerce.analytics.snapshot

Read. Scope: commerce.read, analytics.read, admin. Contract: explicit. Read privacy-safe storefront analytics

commerce.orders.get

Read. Scope: commerce.read, admin. Contract: explicit. Get one Store order with its line items

commerce.orders.list

Read. Scope: commerce.read, admin. Contract: explicit. List Store orders in the bound workspace

commerce.pages.list

Read. Scope: commerce.read, admin. Contract: explicit. List storefront pages and promotional modals

commerce.products.get

Read. Scope: commerce.read, admin. Contract: explicit. Get one Store product with its variants Required fields: product_id.

commerce.products.list

Read. Scope: commerce.read, admin. Contract: explicit. List Store products in the bound workspace

commerce.quotes.create

Write. Scope: commerce.write, admin. Contract: explicit. Quote an item for a customer (creates nothing) Required fields: source, item_id. Retry-safe with idempotency_key.

commerce.readiness.get

Read. Scope: commerce.read, admin. Contract: explicit. Check demo readiness and merchant go-live readiness

commerce.refunds.list

Read. Scope: commerce.read, admin. Contract: explicit. List Store refund requests in the bound workspace

commerce.storefront.catalog.get

Read. Scope: commerce.read, admin. Contract: explicit. Discover Store themes, designs, blocks and promotional shells

commerce.storefront.get

Read. Scope: commerce.read, admin. Contract: explicit. Get the bound workspace storefront configuration

communications (21)

communications.auth.check

Read. Scope: 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: route_inferred. Generate a connector package Required fields: spec.

connector_builder.get

Read. Scope: connector_builder.read, admin. Contract: route_inferred. Load a Builder specification Required fields: slug.

connector_builder.import.curl

Write. Scope: connector_builder.write, admin. Contract: route_inferred. Import cURL into Connector Builder

connector_builder.import.openapi

Write. Scope: connector_builder.write, admin. Contract: route_inferred. Import OpenAPI into Connector Builder

connector_builder.import.postman

Write. Scope: connector_builder.write, admin. Contract: route_inferred. Import Postman into Connector Builder

connector_builder.list

Read. Scope: connector_builder.read, admin. Contract: declared_dynamic. 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: route_inferred. Run Builder conformance tests Required fields: slug.

connector_builder.update

Write. Scope: connector_builder.write, admin. Contract: route_inferred. Update a generated connector Required fields: slug, spec.

connector_builder.validate

Read. Scope: connector_builder.read, admin. Contract: route_inferred. Validate a Builder specification Required fields: spec.

connectors (51)

connectors.action

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Action

connectors.backfill

Write. Scope: connectors.write, admin. Contract: route_inferred. Start connector backfill Required fields: slug.

connectors.backfill.route.connectors.backfill

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Backfill

connectors.backfill.status

Read. Scope: connectors.read, admin. Contract: route_inferred. 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.draft

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Ai Draft

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.schema

Read. Scope: connectors.read, admin. Contract: declared_dynamic. Connectors Builder Schema

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: route_inferred. Synchronize connector customers Required fields: slug.

connectors.disable

Write. Scope: connectors.write, admin. Contract: route_inferred. Disable a connector Required fields: slug.

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: route_inferred. Enable a connector Required fields: slug.

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: route_inferred. Read connector settings Required fields: slug.

connectors.settings.save

Write. Scope: connectors.write, admin. Contract: route_inferred. Save connector settings Required fields: slug, settings.

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 (38)

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.ratings.list

Read. Scope: conversations.read, admin. Contract: explicit. List rated Client Chat conversations

conversations.resolve

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Resolve

conversations.saved.replies

Write. Scope: conversations.write, admin. Contract: declared_dynamic. Admin Client Chat Saved Replies

conversations.saved.reply.add

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Add

conversations.saved.reply.ai.generate

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Ai Generate

conversations.saved.reply.delete

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Delete

conversations.saved.reply.save

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Save

conversations.send

Write. Scope: conversations.write, admin. Contract: source_inferred. Conversations Send Retry-safe with idempotency_key.

conversations.send.route.admin.client.chat.send

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Send

conversations.tags.set

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Tags Set

conversations.thread

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Thread

conversations.threads

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Threads

conversations.toggle

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Toggle

conversations.toggle.attachments

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Toggle Attachments

conversations.toggle.call.button

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Toggle Call Button

conversations.typing

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Typing

conversations.unarchive

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Unarchive

conversations.update

Write. Scope: conversations.write, admin. Contract: explicit. Update a conversation status, assignment or subject Retry-safe with idempotency_key.

conversations.upload

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Upload

crm (260)

crm.ab.results

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Ab Results

crm.access.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Access Set

crm.access_log.list

Read. Scope: admin. Contract: source_inferred. Crm Access Log List

crm.account.health

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Account Health

crm.account.health.board

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Account Health Board

crm.account.health.refresh

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Account Health Refresh

crm.account.plan.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Account Plan Get

crm.account.plan.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Account Plan Save

crm.account.plans.due

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Account Plans Due

crm.account.timeline

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Account Timeline

crm.activities.list

Read. Scope: crm.read. Contract: explicit. List CRM contact activities

crm.activities.record

Write. Scope: crm.write. Contract: explicit. Record a CRM contact activity Required fields: contact_id, activity_type. Retry-safe with idempotency_key.

crm.activity.feed

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Activity Feed

crm.agent.toggle

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Agent Toggle

crm.ai.policy.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Ai Policy Get

crm.ai.policy.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Ai Policy Save

crm.ai.policy.simulate

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Ai Policy Simulate

crm.ai.trace

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Ai Trace

crm.approval.decide

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Decide

crm.approval.delegate.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Delegate Set

crm.approval.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Approval List

crm.approval.policy.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Policy Get

crm.approval.policy.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Policy Save

crm.approval.settings

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Approval Settings

crm.approve.apply

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Approve Apply

crm.approve.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Approve List

crm.approve.reject

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Approve Reject

crm.approve.update

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Approve Update

crm.ask

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Ask

crm.assign.owner

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Assign Owner

crm.assignment.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Assignment Get

crm.assignment.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Assignment Save

crm.attachment.delete

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Attachment Delete

crm.attachment.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Attachment List

crm.attachment.upload

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Attachment Upload

crm.autobook.meeting

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Autobook Meeting

crm.autodeal.mode

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Autodeal Mode

crm.book.meeting

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Book Meeting

crm.booking.link.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Booking Link Save

crm.booking.links.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Booking Links List

crm.build.apply

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Build Apply

crm.build.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Build Get

crm.build.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Build List

crm.build.plan

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Build Plan

crm.build.rollback

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Build Rollback

crm.bulk

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Bulk

crm.bundle.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Bundle Set

crm.calendar.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Calendar Status

crm.capture.status

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Capture Status

crm.comm.policy.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Comm Policy Get

crm.comm.policy.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Comm Policy Save

crm.command.snapshot

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Command Snapshot

crm.companies.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Companies List

crm.company.hierarchy

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Company Hierarchy

crm.company.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Company Save

crm.company.set.parent

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Company Set Parent

crm.company.suggest.related

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Company Suggest Related

crm.connectors.catalog

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Connectors Catalog

crm.consent_log.list

Read. Scope: crm.read. Contract: source_inferred. Crm Consent Log List

crm.contact.churn

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Contact Churn

crm.contact.draft.email

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contact Draft Email

crm.contact.enrich

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contact Enrich

crm.contact.propose.email

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contact Propose Email

crm.contacts.detail

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts Detail

crm.contacts.erase

Write. Scope: admin. Contract: source_inferred. Crm Contacts Erase Retry-safe with idempotency_key.

crm.contacts.export

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts Export

crm.contacts.import.list

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts Import List

crm.contacts.import.run

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Import Run Retry-safe with idempotency_key.

crm.contacts.list

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts List

crm.contacts.next_action

Read. Scope: crm.read. Contract: source_inferred. Crm Contacts Next Action

crm.contacts.open_chat

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Open Chat Retry-safe with idempotency_key.

crm.contacts.open_ticket

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Open Ticket Retry-safe with idempotency_key.

crm.contacts.resync

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Resync Retry-safe with idempotency_key.

crm.contacts.save

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Save Retry-safe with idempotency_key.

crm.contacts.send_email

Write. Scope: crm.write. Contract: source_inferred. Crm Contacts Send Email Retry-safe with idempotency_key.

crm.contacts.upsert

Write. Scope: crm.write. Contract: explicit. Crm Contacts Upsert Required fields: email. Retry-safe with idempotency_key.

crm.contract.amend

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contract Amend

crm.contract.price.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contract Price Set

crm.contract.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contract Save

crm.contract.usage

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contract Usage

crm.contracts.list

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Contracts List

crm.conversation.intel

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Conversation Intel

crm.conversions.goals.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Conversions Goals Delete Retry-safe with idempotency_key.

crm.conversions.goals.list

Read. Scope: crm.read. Contract: source_inferred. Crm Conversions Goals List

crm.conversions.goals.save

Write. Scope: crm.write. Contract: source_inferred. Crm Conversions Goals Save Retry-safe with idempotency_key.

crm.conversions.list

Read. Scope: crm.read. Contract: source_inferred. Crm Conversions List

crm.conversions.record

Write. Scope: crm.write. Contract: source_inferred. Crm Conversions Record Retry-safe with idempotency_key.

crm.create.video.meeting

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Create Video Meeting

crm.customer.auto.sync

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Customer Auto Sync

crm.customer.auto.sync.status

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Customer Auto Sync Status

crm.customer.emails

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Customer Emails

crm.customer.payments

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Customer Payments

crm.data.steward.bulk.propose

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Data Steward Bulk Propose

crm.data.steward.inbox

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Data Steward Inbox

crm.data.steward.propose

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Data Steward Propose

crm.deal.advance

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Deal Advance

crm.deal.coach

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Deal Coach

crm.deal.coach.action

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Deal Coach Action

crm.deal.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Deal Get

crm.deal.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Deal Save

crm.deal.splits.get

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Deal Splits Get

crm.deal.splits.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Deal Splits Set

crm.deals.advance

Write. Scope: crm.write. Contract: explicit. Advance a CRM deal to another stage Required fields: deal_id, stage_id. Retry-safe with idempotency_key.

crm.deals.create

Write. Scope: crm.write. Contract: explicit. Create a CRM deal Required fields: title. Retry-safe with idempotency_key.

crm.deals.detail

Read. Scope: crm.read. Contract: explicit. Get one CRM deal Required fields: deal_id.

crm.deals.list

Read. Scope: crm.read. Contract: explicit. List CRM deals

crm.deals.list.route.crm.deals.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Deals List

crm.deals.update

Write. Scope: crm.write. Contract: explicit. Update a CRM deal Required fields: deal_id. Retry-safe with idempotency_key.

crm.detail

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Detail

crm.draft.outreach

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Draft Outreach

crm.enrich.account

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Enrich Account

crm.erase

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Erase

crm.events.catalog

Read. Scope: crm.read. Contract: explicit. List subscribable CRM domain events

crm.events.list

Read. Scope: crm.read. Contract: explicit. List durable CRM domain events

crm.export

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Export

crm.export.all

Read. Scope: crm.read, admin. Contract: route_inferred. Contact Export All

crm.field.add

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Field Add

crm.field.policy.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Field Policy Get

crm.field.policy.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Field Policy Save

crm.field.remove

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Field Remove

crm.fields.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Fields List

crm.forecast.board

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Forecast Board

crm.forecast.snapshot

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Forecast Snapshot

crm.form.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Form Save

crm.forms.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Forms List

crm.health.repair.catalog

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Health Repair Catalog

crm.health.smoke

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Health Smoke

crm.health.snapshot

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Health Snapshot

crm.home.persona.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Home Persona Set

crm.identity.rules.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Identity Rules Get

crm.identity.rules.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Identity Rules Save

crm.import.list

Read. Scope: crm.read, admin. Contract: route_inferred. Contact Import List

crm.import.run

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Import Run

crm.inbound.activity

Read. Scope: crm.read. Contract: source_inferred. Crm Inbound Activity

crm.inbound.endpoints.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Inbound Endpoints Delete Retry-safe with idempotency_key.

crm.inbound.endpoints.list

Read. Scope: crm.read. Contract: source_inferred. Crm Inbound Endpoints List

crm.inbound.endpoints.save

Write. Scope: crm.write. Contract: source_inferred. Crm Inbound Endpoints Save Retry-safe with idempotency_key.

crm.inbound.endpoints.test

Write. Scope: crm.write. Contract: source_inferred. Crm Inbound Endpoints Test Retry-safe with idempotency_key.

crm.leaderboard

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Leaderboard

crm.lifecycle.evaluate

Write. Scope: crm.write. Contract: source_inferred. Crm Lifecycle Evaluate Retry-safe with idempotency_key.

crm.lifecycle.rules.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Lifecycle Rules Delete Retry-safe with idempotency_key.

crm.lifecycle.rules.list

Read. Scope: crm.read. Contract: source_inferred. Crm Lifecycle Rules List

crm.lifecycle.rules.save

Write. Scope: crm.write. Contract: source_inferred. Crm Lifecycle Rules Save Retry-safe with idempotency_key.

crm.list

Read. Scope: crm.read, admin. Contract: route_inferred. Contacts List

crm.mailbox.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Mailbox Status

crm.meeting.book

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Meeting Book

crm.meeting.cancel

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Meeting Cancel

crm.meeting.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Meeting List

crm.meeting.reschedule.accept

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Meeting Reschedule Accept

crm.meeting.reschedule.reject

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Meeting Reschedule Reject

crm.merge

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Merge

crm.message.send

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Message Send

crm.messaging.provider.delete

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Messaging Provider Delete

crm.messaging.provider.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Messaging Provider Save

crm.messaging.provider.test

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Messaging Provider Test

crm.messaging.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Messaging Status

crm.next.action

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Next Action

crm.object.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Object Save

crm.objects.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Objects List

crm.offline.pull

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Offline Pull

crm.offline.push

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Offline Push

crm.open.chat

Read. Scope: crm.read, admin. Contract: route_inferred. Contact Open Chat

crm.open.ticket

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Open Ticket

crm.outreach.campaigns.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Campaigns Delete Retry-safe with idempotency_key.

crm.outreach.campaigns.list

Read. Scope: crm.read. Contract: source_inferred. Crm Outreach Campaigns List

crm.outreach.campaigns.save

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Campaigns Save Retry-safe with idempotency_key.

crm.outreach.campaigns.send

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Campaigns Send Retry-safe with idempotency_key.

crm.outreach.send

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Send Retry-safe with idempotency_key.

crm.outreach.templates.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Templates Delete Retry-safe with idempotency_key.

crm.outreach.templates.list

Read. Scope: crm.read. Contract: source_inferred. Crm Outreach Templates List

crm.outreach.templates.preview

Read. Scope: crm.read. Contract: source_inferred. Crm Outreach Templates Preview

crm.outreach.templates.save

Write. Scope: crm.write. Contract: source_inferred. Crm Outreach Templates Save Retry-safe with idempotency_key.

crm.payments.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Payments Status

crm.pipeline.data

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Pipeline Data

crm.price.resolve

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Price Resolve

crm.pricebook.entry.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Pricebook Entry Set

crm.pricebook.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Pricebook Save

crm.pricebooks.list

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Pricebooks List

crm.privacy_settings.get

Read. Scope: crm.read. Contract: source_inferred. Crm Privacy Settings Get

crm.privacy_settings.save

Write. Scope: admin. Contract: source_inferred. Crm Privacy Settings Save Retry-safe with idempotency_key.

crm.product.archive

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Product Archive

crm.product.revenue

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Product Revenue

crm.product.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Product Save

crm.products.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Products List

crm.propose.meeting

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Propose Meeting

crm.propose.outreach

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Propose Outreach

crm.prospecting.dashboard

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Prospecting Dashboard

crm.prospecting.icp.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Prospecting Icp Save

crm.prospecting.import

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Prospecting Import

crm.prospecting.research

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Prospecting Research

crm.prospecting.score

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Prospecting Score

crm.prospecting.sequence

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Prospecting Sequence

crm.qualification.checklist.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Qualification Checklist Get

crm.qualification.checklist.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Qualification Checklist Save

crm.quota.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Quota Save

crm.quote.get

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Quote Get

crm.quote.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Quote Save

crm.quotes.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Quotes List

crm.record.delete

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Delete

crm.record.fields.get

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Record Fields Get

crm.record.fields.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Fields Save

crm.record.get

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Record Get

crm.record.history

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Record History

crm.record.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Save

crm.record.share.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Share Set

crm.record.share.unset

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Share Unset

crm.record.shares

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Record Shares

crm.records.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Records List

crm.restore.email.consent

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Restore Email Consent

crm.resync.from.platform

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Resync From Platform

crm.retention.catalog

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Retention Catalog

crm.revert

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Revert

crm.runtime.policy.get

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Runtime Policy Get

crm.runtime.policy.remote.wipe

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Runtime Policy Remote Wipe

crm.runtime.policy.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Runtime Policy Save

crm.save

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Save

crm.scoring.rule.ai

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Scoring Rule Ai

crm.scoring.rule.delete

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Scoring Rule Delete

crm.scoring.rule.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Scoring Rule List

crm.scoring.rule.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Scoring Rule Save

crm.segments.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Segments Delete Retry-safe with idempotency_key.

crm.segments.list

Read. Scope: crm.read. Contract: source_inferred. Crm Segments List

crm.segments.members

Read. Scope: crm.read. Contract: source_inferred. Crm Segments Members

crm.segments.preview

Read. Scope: crm.read. Contract: source_inferred. Crm Segments Preview

crm.segments.save

Write. Scope: crm.write. Contract: source_inferred. Crm Segments Save Retry-safe with idempotency_key.

crm.segments.suggestions.accept

Write. Scope: crm.write. Contract: source_inferred. Crm Segments Suggestions Accept Retry-safe with idempotency_key.

crm.segments.suggestions.dismiss

Write. Scope: crm.write. Contract: source_inferred. Crm Segments Suggestions Dismiss Retry-safe with idempotency_key.

crm.segments.suggestions.list

Read. Scope: crm.read. Contract: source_inferred. Crm Segments Suggestions List

crm.semantic.search

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Semantic Search

crm.send.email

Write. Scope: crm.write, admin. Contract: route_inferred. Contact Send Email

crm.send.email.route.crm.send.email

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Send Email

crm.send.for.signature

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Send For Signature

crm.send.payment.link

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Send Payment Link

crm.sequence.action

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Sequence Action

crm.sequence.runs

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Sequence Runs

crm.setup.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Setup Status

crm.sharing.rules.get

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Sharing Rules Get

crm.sharing.rules.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Sharing Rules Save

crm.subject.registry

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Subject Registry

crm.subscriptions.list

Read. Scope: crm.read, admin. Contract: route_inferred. Crm Subscriptions List

crm.subscriptions.rollup

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Subscriptions Rollup

crm.subscriptions.sync

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Subscriptions Sync

crm.task.create

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Task Create

crm.tasks.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Tasks List

crm.team.parent.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Team Parent Set

crm.team.rules.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Team Rules Set

crm.team.save

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Team Save

crm.teams.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Teams List

crm.territory.set

Write. Scope: crm.write, admin. Contract: route_inferred. Crm Territory Set

crm.video.status

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Video Status

crm.views.delete

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Views Delete

crm.views.list

Read. Scope: crm.read, admin. Contract: declared_dynamic. Crm Views List

crm.views.save

Write. Scope: crm.write, admin. Contract: declared_dynamic. Crm Views Save

crm.webhooks.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Webhooks Delete Retry-safe with idempotency_key.

crm.webhooks.list

Read. Scope: crm.read. Contract: explicit. List CRM outbound webhook endpoints and recent deliveries

crm.webhooks.save

Write. Scope: crm.write. Contract: source_inferred. Crm Webhooks Save Retry-safe with idempotency_key.

crm.webhooks.test

Write. Scope: crm.write. Contract: source_inferred. Crm Webhooks Test Retry-safe with idempotency_key.

crm.workflows.delete

Write. Scope: crm.write. Contract: source_inferred. Crm Workflows Delete Retry-safe with idempotency_key.

crm.workflows.list

Read. Scope: crm.read. Contract: source_inferred. Crm Workflows List

crm.workflows.save

Write. Scope: crm.write. Contract: source_inferred. Crm Workflows Save Retry-safe with idempotency_key.

zákazníci (44)

customers.analyze

Write. Scope: customers.write, journey.write, admin. Contract: route_inferred. Analyze a customer journey with AI Required fields: client_id.

customers.behaviour

Read. Scope: admin. Contract: route_inferred. Cdp Behaviour

customers.behaviour.analyze

Write. Scope: 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: admin. Contract: route_inferred. Cdp Client Analyze

customers.client.delete

Write. Scope: admin. Contract: route_inferred. Cdp Client Delete

customers.client.export

Write. Scope: admin. Contract: route_inferred. Cdp Client Export

customers.client.journey

Read. Scope: 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: 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: route_inferred. Get a customer profile Required fields: client_id.

customers.journey

Read. Scope: customers.read, journey.read, admin. Contract: route_inferred. Get a complete customer journey Required fields: client_id.

customers.list

Read. Scope: customers.read, crm.read, admin. Contract: route_inferred. List known customers

customers.outreach.prepare

Write. Scope: customers.write, crm.write, admin. Contract: route_inferred. Prepare CRM outreach for a customer Required fields: client_id.

departments (1)

departments.list

Read. Scope: departments.read, admin. Contract: source_inferred. Departments List

e-mail (2)

email.template.send

Write. Scope: email.write, admin. Contract: source_inferred. Send one governed workspace email template Required fields: template, to. Retry-safe with idempotency_key.

email.templates.list

Read. Scope: email.read, admin. Contract: source_inferred. List email templates available to this workspace

engagement (163)

engagement.ab.autowinner

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ab Autowinner

engagement.ab.bandit

Write. Scope: engagement.write, 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

Write. Scope: engagement.write, 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

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Approval Decide

engagement.approval.request

Write. Scope: engagement.write, 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

Write. Scope: engagement.write, 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

Write. Scope: engagement.write, 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

Write. Scope: engagement.write, 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

Write. Scope: engagement.write, 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

Write. Scope: engagement.write, 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

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

hr (48)

hr.agent.incident.close

Write. Scope: hr.write, admin. Contract: route_inferred. Close an agent incident — the same act that lifts the suspension it caused Required fields: incident_uuid, resolution.

hr.agent.step

Write. Scope: hr.write, admin. Contract: route_inferred. Run one agent step: gate verdict, execution and outcome reported separately Required fields: run_uuid, agent_key, tool_key, jurisdiction, purpose.

hr.agent.step.status

Read. Scope: hr.read, admin. Contract: route_inferred. What actually happened at a step (permitted, executed, proven, failed, compensated) Required fields: run_uuid, seq.

hr.agent.takeover

Write. Scope: hr.write, admin. Contract: route_inferred. A human takes an agent run; no further agent steps are accepted Required fields: run_uuid.

hr.agent.tool.grant

Write. Scope: hr.write, admin. Contract: route_inferred. Grant an agent a tool for one jurisdiction and purpose, up to a risk ceiling Required fields: agent_key, tool_key, jurisdiction, max_risk, purpose.

hr.agent.tools

Read. Scope: hr.read, admin. Contract: declared_dynamic. List the registered typed tools an agent may use, and open agent incidents

hr.ai.corrections

Write. Scope: hr.write, admin. Contract: declared_dynamic. Bundle recent reviewer corrections into a dataset; it is pending privacy review and trains nothing

hr.ai.quality.overview

Read. Scope: hr.read, admin. Contract: declared_dynamic. The AI quality board: sampled defect rate, override pressure per workflow, coaching reception

hr.booking.slots_reconcile

Write. Scope: hr.write, admin. Contract: declared_dynamic. Release booking slots whose claim never became a booked meeting

hr.connectors.certify

Write. Scope: hr.write, admin. Contract: route_inferred. Certify an HR connector (scope sandbox|production; production demands provider-side proof under dual control) Required fields: connector_class, connector_key, scope, evidence, submitted_by.

hr.connectors.health

Read. Scope: hr.read, admin. Contract: route_inferred. One connector account's health: certification level and scope, last reconciliation verdict, failures and webhook backlog Required fields: account_uuid.

hr.decisions.appeals

Write. Scope: hr.write, admin. Contract: route_inferred. File an appeal against an AI decision on a person's behalf; it must be heard by an independent human Required fields: decision_uuid, subject_type, subject_id, grounds.

hr.decisions.explanation

Read. Scope: hr.read, admin. Contract: route_inferred. Plain-language explanation of one AI decision: what was looked at, which policy, and how to appeal Required fields: decision_uuid, audience.

hr.employee.provision

Write. Scope: hr.write, admin. Contract: route_inferred. Provision seatless employee access and send the invitation Required fields: person_uuid.

hr.employee.restore

Write. Scope: hr.write, admin. Contract: route_inferred. Lift an employee access suspension (written reason required) and provision again Required fields: person_uuid, reason.

hr.experience.metrics

Read. Scope: hr.read, admin. Contract: route_inferred. Measured persona experience metrics (self-service rate, decision cycle, coaching usefulness, quality) from live journeys

hr.global.readiness

Read. Scope: hr.read, admin. Contract: declared_dynamic. The whole launch picture: 15-gate leadership score, release readiness checks and jurisdiction coverage

hr.identity.facets

Read. Scope: hr.read, admin. Contract: route_inferred. List a person's identity facets and open conflicts Required fields: person_uuid.

hr.identity.link

Write. Scope: hr.write, admin. Contract: route_inferred. Link an identity facet to a person Required fields: person_uuid, facet_type, facet_key.

hr.interview.room.connect

Write. Scope: hr.write, admin. Contract: route_inferred. Connect the AI to interview media; refuses unless media really reaches the worker Required fields: media_uuid.

hr.interview.room.consent

Write. Scope: hr.write, admin. Contract: route_inferred. Record or withdraw consent for ONE interview purpose (recording, biometric_liveness, transcription) Required fields: media_uuid, purpose, state.

hr.interview.room.pause

Write. Scope: hr.write, admin. Contract: route_inferred. Pause a live interview Required fields: media_uuid.

hr.interview.room.provision

Write. Scope: hr.write, admin. Contract: route_inferred. Provision an interview room (a place to meet — NOT AI participation) Required fields: session_uuid, transport, accommodation_route.

hr.interview.room.state

Read. Scope: hr.read, admin. Contract: route_inferred. Read an interview room, including whether the AI is actually participating Required fields: media_uuid.

hr.interview.room.takeover

Write. Scope: hr.write, admin. Contract: route_inferred. A human takes the interview; the AI cannot speak in it again Required fields: media_uuid, reason.

hr.jurisdiction.capabilities

Read. Scope: hr.read, admin. Contract: route_inferred. What this product may do in one country, per feature, with the law behind each answer Required fields: code.

hr.jurisdiction.change.raise

Write. Scope: hr.write, admin. Contract: route_inferred. Report a change in the law; a high or critical one suspends every lane in that jurisdiction at once Required fields: pack_key, summary, severity.

hr.jurisdiction.coverage

Read. Scope: hr.read, admin. Contract: declared_dynamic. Computed coverage for every market: released pack, named counsel owner, cited sources, passing tests

hr.jurisdiction.explain

Read. Scope: hr.read, admin. Contract: route_inferred. Why an action about one person is allowed, reduced or blocked, with the rule and citation Required fields: person_uuid, feature.

hr.jurisdiction.pack.release

Write. Scope: hr.write, admin. Contract: route_inferred. Put a drafted policy pack into effect; refused without a named counsel owner and a cited law Required fields: release_uuid.

hr.learning.overview

Read. Scope: hr.read, admin. Contract: declared_dynamic. Read courses, paths and enrolments

hr.leave.overview

Read. Scope: hr.read, admin. Contract: declared_dynamic. Read leave types and requests

hr.lifecycle.lanes

Read. Scope: hr.read, admin. Contract: declared_dynamic. Every lifecycle lane with its mode, KPIs and whether a live tool path really exists behind it

hr.marketplace.overview

Read. Scope: hr.read, admin. Contract: declared_dynamic. Read HR connector accounts, conflicts and deliveries

hr.org.tree

Read. Scope: hr.read, admin. Contract: declared_dynamic. Read the organisation tree

hr.people.create

Write. Scope: hr.write, admin. Contract: route_inferred. Create an HR person Required fields: display_name.

hr.people.get

Read. Scope: hr.read, admin. Contract: route_inferred. Get one HR person Required fields: person_uuid.

hr.people.list

Read. Scope: hr.read, admin. Contract: declared_dynamic. List HR people

hr.people.update

Write. Scope: hr.write, admin. Contract: route_inferred. Update an HR person Required fields: person_uuid, display_name, primary_email.

hr.postings.list

Read. Scope: hr.read, admin. Contract: declared_dynamic. List job postings

hr.readiness.read

Read. Scope: hr.read, admin. Contract: declared_dynamic. Run the HR release readiness report

hr.release.verify

Write. Scope: hr.write, admin. Contract: declared_dynamic. Run the four HR release gates (schema, manifest, probe, readiness)

hr.requisitions.create

Write. Scope: hr.write, admin. Contract: route_inferred. Create a requisition Required fields: title, openings, justification.

hr.requisitions.list

Read. Scope: hr.read, admin. Contract: declared_dynamic. List requisitions

hr.thread.delete

Write. Scope: hr.write, admin. Contract: route_inferred. Delete a workforce conversation; refused while it is under legal hold Required fields: thread_uuid, reason.

hr.thread.legal_hold

Write. Scope: hr.write, admin. Contract: route_inferred. Place or lift a legal hold on a workforce conversation Required fields: thread_uuid, on, reason.

hr.thread.retention

Write. Scope: hr.write, admin. Contract: route_inferred. Set a conversation's retention class (standard|extended|permanent) Required fields: thread_uuid, retention_class.

hr.threads.retention_sweep

Write. Scope: hr.write, admin. Contract: declared_dynamic. Run the conversation retention sweep; legal holds are never swept

intent (6)

intent.clear

Write. Scope: intent.write, admin. Contract: declared_dynamic. Intent Clear

intent.funnel

Read. Scope: intent.read, analytics.read, admin. Contract: route_inferred. 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: route_inferred. 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 (78)

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.get

Read. Scope: kb.read, admin. Contract: explicit. Get one Help Center article Required fields: article_id.

knowledge.articles.ids

Write. Scope: kb.write, 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.og.image.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Og Image 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: route_inferred. Help Center Settings Save

knowledge.center.subhero.dark.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Subhero Dark Upload

knowledge.center.subhero.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Subhero Upload

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.hero.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Widget Hero Upload

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.moderate

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Comments Moderate

knowledge.comments.moderation.list

Read. Scope: kb.read, admin. Contract: route_inferred. Kb Comments Moderation List

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

Write. Scope: kb.write, 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: route_inferred. Delete a lead Required fields: lead_id.

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: route_inferred. List leads

leads.stats

Read. Scope: leads.read, analytics.read, admin. Contract: declared_dynamic. 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: route_inferred. Update a lead Required fields: lead_id, status.

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

plošina (926)

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

Write. Scope: platform.write, 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.spoke

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Spoke

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: admin. Contract: declared_dynamic. Api Keys Catalog

platform.api.keys.create

Write. Scope: admin. Contract: route_inferred. Api Keys Create

platform.api.keys.delete

Write. Scope: admin. Contract: route_inferred. Api Keys Delete

platform.api.keys.list

Read. Scope: admin. Contract: declared_dynamic. Api Keys List

platform.api.keys.revoke

Write. Scope: admin. Contract: route_inferred. Api Keys Revoke

platform.api.keys.update

Write. Scope: admin. Contract: route_inferred. Api Keys Update

platform.audit.export

Read. Scope: 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

Write. Scope: platform.write, 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.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.commerce.actf.execute

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Actf Execute

platform.commerce.actf.policy.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Actf Policy Save

platform.commerce.actf.review

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Actf Review

platform.commerce.actf.simulate

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Actf Simulate

platform.commerce.analytics.report

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Analytics Report

platform.commerce.analytics.report.email

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Analytics Report Email

platform.commerce.autonomy.issue

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Autonomy Issue

platform.commerce.autonomy.status

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Autonomy Status

platform.commerce.collections.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Collections Delete

platform.commerce.collections.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Collections Save

platform.commerce.customer.block

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Customer Block

platform.commerce.customer.credit.add

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Customer Credit Add

platform.commerce.customer.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Customer Save

platform.commerce.customers.list

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Customers List

platform.commerce.digital.codes.import

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Digital Codes Import

platform.commerce.digital.config.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Digital Config Save

platform.commerce.digital.file.upload

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Digital File Upload

platform.commerce.fulfilment.transition

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Fulfilment Transition

platform.commerce.intelligence.economics.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Intelligence Economics Save

platform.commerce.intelligence.market.price.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Intelligence Market Price Save

platform.commerce.intelligence.market.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Intelligence Market Save

platform.commerce.kit.apply

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Kit Apply

platform.commerce.kit.preview

Read. Scope: commerce.read, admin. Contract: route_inferred. Commerce Kit Preview

platform.commerce.kits.list

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Kits List

platform.commerce.launch.readiness

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Launch Readiness

platform.commerce.menu.ai.build

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Menu Ai Build

platform.commerce.menus.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Menus Save

platform.commerce.merchandising.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Merchandising Save

platform.commerce.midmarket.operations

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Midmarket Operations

platform.commerce.onboarding.ai.draft

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Onboarding Ai Draft

platform.commerce.onboarding.apply

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Onboarding Apply

platform.commerce.option.sets.generate

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Option Sets Generate

platform.commerce.option.sets.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Option Sets Save

platform.commerce.option.templates

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Option Templates

platform.commerce.order.refundable

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Order Refundable

platform.commerce.order.ship

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Order Ship

platform.commerce.order.shipments

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Order Shipments

platform.commerce.orders.list

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Orders List

platform.commerce.orders.transition

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Orders Transition

platform.commerce.page.ai.draft

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Page Ai Draft

platform.commerce.page.ai.refine

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Page Ai Refine

platform.commerce.page.render

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Page Render

platform.commerce.pages.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Pages Delete

platform.commerce.pages.list

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Pages List

platform.commerce.pages.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Pages Save

platform.commerce.price.advice

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Price Advice

platform.commerce.products.ai.copy

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Products Ai Copy

platform.commerce.products.bulk

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Bulk

platform.commerce.products.catalog.meta

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Products Catalog Meta

platform.commerce.products.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Delete

platform.commerce.products.duplicate

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Duplicate

platform.commerce.products.export.csv

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Products Export Csv

platform.commerce.products.image.alt.ai

Read. Scope: commerce.read, admin. Contract: route_inferred. Commerce Products Image Alt Ai

platform.commerce.products.image.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Image Delete

platform.commerce.products.image.update

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Products Image Update

platform.commerce.products.image.upload

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Image Upload

platform.commerce.products.images.list

Read. Scope: commerce.read, admin. Contract: route_inferred. Commerce Products Images List

platform.commerce.products.images.reorder

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Products Images Reorder

platform.commerce.products.import.csv

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Import Csv

platform.commerce.products.list

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Products List

platform.commerce.products.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Products Save

platform.commerce.refunds.complete.manual

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Refunds Complete Manual

platform.commerce.refunds.request

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Refunds Request

platform.commerce.returns.transition

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Returns Transition

platform.commerce.size.charts.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Size Charts Delete

platform.commerce.size.charts.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Size Charts Save

platform.commerce.store.maturity

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Store Maturity

platform.commerce.storefront.brand.import

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Storefront Brand Import

platform.commerce.storefront.domain.remove

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Storefront Domain Remove

platform.commerce.storefront.domain.set

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Storefront Domain Set

platform.commerce.storefront.logo.upload

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Storefront Logo Upload

platform.commerce.storefront.page.ai.seo

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Storefront Page Ai Seo

platform.commerce.storefront.slug.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Storefront Slug Save

platform.commerce.supply.chain

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Supply Chain

platform.commerce.variants.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Variants Delete

platform.commerce.variants.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Variants Save

platform.commerce.wallet.topup.refund

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Wallet Topup Refund

platform.commerce.wallet.topups.list

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Wallet Topups List

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.event.taxonomy

Read. Scope: platform.read, admin. Contract: declared_dynamic. Diag Event Taxonomy

platform.diag.identity.restitch

Write. Scope: admin. Contract: declared_dynamic. Diag Identity Restitch

platform.diag.recheck

Write. Scope: platform.write, admin. Contract: route_inferred. Diag Recheck

platform.diag.recheck.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Diag Recheck All

platform.diag.report

Write. Scope: platform.write, admin. Contract: route_inferred. Diag Report

platform.diag.unmute

Write. Scope: platform.write, admin. Contract: route_inferred. Diag Unmute

platform.dismiss.credit.alert

Write. Scope: 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.widget.advanced

Read. Scope: platform.read, admin. Contract: route_inferred. Get Widget Advanced

platform.governance.summary

Read. Scope: platform.read, admin. Contract: route_inferred. Governance Summary

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.hr.access.grant.manual

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Access Grant Manual

platform.hr.access.policy.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Access Policy List

platform.hr.access.policy.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Access Policy Set

platform.hr.access.request

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Access Request

platform.hr.access.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Access Revoke

platform.hr.accommodation.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Accommodation List

platform.hr.accommodation.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Accommodation Resolve

platform.hr.agent.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Assign

platform.hr.agent.compensation.retry

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Compensation Retry

platform.hr.agent.compensation.sweep

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Agent Compensation Sweep

platform.hr.agent.compensations

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Agent Compensations

platform.hr.agent.incident.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Incident Close

platform.hr.agent.register

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Register

platform.hr.agent.step

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Step

platform.hr.agent.step.status

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Agent Step Status

platform.hr.agent.tool.auth

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Tool Auth

platform.hr.agent.tool.grant

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Tool Grant

platform.hr.agent.tools

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Agent Tools

platform.hr.ai.act.build

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Ai Act Build

platform.hr.ai.act.export

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Ai Act Export

platform.hr.ai.act.fria.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Ai Act Fria Record

platform.hr.ai.act.notice.publish

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Ai Act Notice Publish

platform.hr.ai.act.overseer.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Ai Act Overseer Assign

platform.hr.ai.act.overseer.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Ai Act Overseer Revoke

platform.hr.ai.act.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Ai Act Overview

platform.hr.ai.metering.export

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Ai Metering Export

platform.hr.ai.metering.overview

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Ai Metering Overview

platform.hr.ai.metering.settings.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Ai Metering Settings Save

platform.hr.ai.status

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Ai Status

platform.hr.analytics.ask

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Analytics Ask

platform.hr.analytics.snapshot

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Analytics Snapshot

platform.hr.app.move

Write. Scope: platform.write, admin. Contract: route_inferred. Hr App Move

platform.hr.appeal.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Appeal List

platform.hr.appeal.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Appeal Resolve

platform.hr.application.history

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Application History

platform.hr.application.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Application List

platform.hr.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Assign

platform.hr.auto.offer.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Auto Offer Run

platform.hr.autonomy.lane.demote

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Autonomy Lane Demote

platform.hr.autonomy.lane.install

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Autonomy Lane Install

platform.hr.autonomy.lane.promote

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Autonomy Lane Promote

platform.hr.autonomy.lane.review

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Autonomy Lane Review

platform.hr.autonomy.lane.shadow

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Autonomy Lane Shadow

platform.hr.autonomy.lanes

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Autonomy Lanes

platform.hr.autonomy.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Autonomy Overview

platform.hr.availability.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Availability Save

platform.hr.band.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Band Approve

platform.hr.band.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Band List

platform.hr.band.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Band Save

platform.hr.benchmarks.contribute.now

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Benchmarks Contribute Now

platform.hr.benchmarks.opt.in

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Benchmarks Opt In

platform.hr.benchmarks.opt.out

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Benchmarks Opt Out

platform.hr.benchmarks.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Benchmarks Overview

platform.hr.benefit.enroll

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Benefit Enroll

platform.hr.benefit.plan.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Benefit Plan Save

platform.hr.bias.audit.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Bias Audit List

platform.hr.bias.audit.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Bias Audit Run

platform.hr.booking.link.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Booking Link Save

platform.hr.booking.slots.reconcile

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Booking Slots Reconcile

platform.hr.breaker.reset

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Breaker Reset

platform.hr.broadcast.audience.options

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Broadcast Audience Options

platform.hr.broadcast.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Broadcast List

platform.hr.broadcast.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Broadcast Preview

platform.hr.broadcast.send

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Broadcast Send

platform.hr.budget.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Budget Set

platform.hr.calibration.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Calibration Close

platform.hr.calibration.move

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Calibration Move

platform.hr.calibration.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Calibration Open

platform.hr.capabilities.get

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Capabilities Get

platform.hr.capability.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Capability Set

platform.hr.capability.trail

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Capability Trail

platform.hr.cards.refresh

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Cards Refresh

platform.hr.case.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Assign

platform.hr.case.attachment.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Attachment Add

platform.hr.case.attachment.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Case Attachment List

platform.hr.case.categories

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Case Categories

platform.hr.case.event.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Event Add

platform.hr.case.get

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Case Get

platform.hr.case.grant.access

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Case Grant Access

platform.hr.case.intake.mailbox

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Intake Mailbox

platform.hr.case.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Case List

platform.hr.case.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Open

platform.hr.case.route

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Route

platform.hr.case.thread

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Thread

platform.hr.case.tighten

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Tighten

platform.hr.certification.define

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Certification Define

platform.hr.certification.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Certification List

platform.hr.certification.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Certification Record

platform.hr.certification.state

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Certification State

platform.hr.certification.types

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Certification Types

platform.hr.check.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Check List

platform.hr.check.manual.result

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Check Manual Result

platform.hr.check.order

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Check Order

platform.hr.check.requery

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Check Requery

platform.hr.check.void

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Check Void

platform.hr.checkin.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Checkin Record

platform.hr.coach.feedback

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Coach Feedback

platform.hr.coach.me

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Coach Me

platform.hr.coach.receive

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Coach Receive

platform.hr.comp.change.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Comp Change Approve

platform.hr.comp.change.request

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Comp Change Request

platform.hr.compliance.build

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Compliance Build

platform.hr.compliance.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Compliance List

platform.hr.connector.cert.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Connector Cert Revoke

platform.hr.connector.cert.submissions

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Connector Cert Submissions

platform.hr.connector.cert.submit

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Connector Cert Submit

platform.hr.connector.certify

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Connector Certify

platform.hr.connector.health

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Connector Health

platform.hr.connector.options

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Connector Options

platform.hr.connector.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Connector Revoke

platform.hr.contract.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Contract List

platform.hr.copilot.apply

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Copilot Apply

platform.hr.copilot.plan

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Copilot Plan

platform.hr.copilot.recipes

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Copilot Recipes

platform.hr.copilot.reject

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Copilot Reject

platform.hr.correction.dataset.build

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Correction Dataset Build

platform.hr.correction.datasets

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Correction Datasets

platform.hr.correction.privacy.review

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Correction Privacy Review

platform.hr.course.enroll

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Course Enroll

platform.hr.course.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Course Save

platform.hr.course.skills.tag

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Course Skills Tag

platform.hr.decision.appeal.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Decision Appeal Assign

platform.hr.decision.appeal.file

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Decision Appeal File

platform.hr.decision.appeal.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Decision Appeal Resolve

platform.hr.decision.appeals.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Decision Appeals List

platform.hr.decision.explanation

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Decision Explanation

platform.hr.decisions.recent

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Decisions Recent

platform.hr.directory.visibility.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Directory Visibility Get

platform.hr.directory.visibility.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Directory Visibility Set

platform.hr.discipline.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Discipline Decide

platform.hr.discipline.propose

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Discipline Propose

platform.hr.document.access.log

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Document Access Log

platform.hr.document.deletion.request

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Deletion Request

platform.hr.document.hold

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Hold

platform.hr.document.intake

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Intake

platform.hr.document.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Document List

platform.hr.document.requirement.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Requirement Add

platform.hr.document.requirement.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Requirement Remove

platform.hr.document.review.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Review Approve

platform.hr.document.reviews

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Document Reviews

platform.hr.dsr.list

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Dsr List

platform.hr.dsr.transition

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Dsr Transition

platform.hr.email.intake.log

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Email Intake Log

platform.hr.employee.access.events

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Employee Access Events

platform.hr.employee.provision

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Employee Provision

platform.hr.employee.restore

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Employee Restore

platform.hr.employee.suspend

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Employee Suspend

platform.hr.employment.activate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Employment Activate

platform.hr.employment.end

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Employment End

platform.hr.enterprise.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Enterprise Approve

platform.hr.equipment.delivered

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Equipment Delivered

platform.hr.equipment.request

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Equipment Request

platform.hr.equipment.returned

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Equipment Returned

platform.hr.escrow.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Escrow Resolve

platform.hr.evidence.a11y.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Evidence A11y Record

platform.hr.evidence.attest

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Evidence Attest

platform.hr.evidence.dr.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Evidence Dr Record

platform.hr.evidence.ledgers

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Evidence Ledgers

platform.hr.evidence.load.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Evidence Load Record

platform.hr.evidence.owner.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Evidence Owner Assign

platform.hr.expense.confirm

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Expense Confirm

platform.hr.expense.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Expense Decide

platform.hr.expense.handoff

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Expense Handoff

platform.hr.expense.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Expense Overview

platform.hr.expense.policy.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Expense Policy Save

platform.hr.experience.metrics

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Experience Metrics

platform.hr.expiry.run

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Expiry Run

platform.hr.fairness.cohort.define

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Fairness Cohort Define

platform.hr.fairness.cohorts

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Fairness Cohorts

platform.hr.fairness.evaluate

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Fairness Evaluate

platform.hr.faq.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Faq Delete

platform.hr.faq.draft

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Faq Draft

platform.hr.faq.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Faq List

platform.hr.faq.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Faq Save

platform.hr.faq.state

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Faq State

platform.hr.feedback.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Feedback List

platform.hr.feedback.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Feedback Record

platform.hr.flag.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Flag Set

platform.hr.flags.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Flags Get

platform.hr.frontline.overview

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Frontline Overview

platform.hr.gig.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Gig Decide

platform.hr.gig.post

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Gig Post

platform.hr.global.readiness

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Global Readiness

platform.hr.goal.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Goal Create

platform.hr.goal.draft

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Goal Draft

platform.hr.goal.update

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Goal Update

platform.hr.grievance.file

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Grievance File

platform.hr.grievance.outcome

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Grievance Outcome

platform.hr.headcount.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Headcount Approve

platform.hr.headcount.draft

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Headcount Draft

platform.hr.headcount.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Headcount List

platform.hr.hire

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Hire

platform.hr.hiring.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Hiring Decide

platform.hr.holiday.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Holiday Save

platform.hr.identity.admin.options

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Identity Admin Options

platform.hr.identity.conflict.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Identity Conflict Resolve

platform.hr.identity.coverage.plan

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Identity Coverage Plan

platform.hr.identity.facets

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Identity Facets

platform.hr.identity.history

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Identity History

platform.hr.identity.link

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Identity Link

platform.hr.identity.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Identity Revoke

platform.hr.identity.verification.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Identity Verification Record

platform.hr.incident.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Incident List

platform.hr.incident.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Incident Open

platform.hr.incident.step

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Incident Step

platform.hr.interview.recording.start

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Recording Start

platform.hr.interview.recording.upload

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Recording Upload

platform.hr.interview.review

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Review

platform.hr.interview.room.answer

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room Answer

platform.hr.interview.room.ask

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Ask

platform.hr.interview.room.connect

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Connect

platform.hr.interview.room.consent

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Consent

platform.hr.interview.room.end

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room End

platform.hr.interview.room.leave

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room Leave

platform.hr.interview.room.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Interview Room List

platform.hr.interview.room.observe

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room Observe

platform.hr.interview.room.pause

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Pause

platform.hr.interview.room.provision

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Provision

platform.hr.interview.room.reconnect

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room Reconnect

platform.hr.interview.room.resume

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room Resume

platform.hr.interview.room.state

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room State

platform.hr.interview.room.takeover

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Takeover

platform.hr.interview.schedule

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Schedule

platform.hr.interview.transcript.correct

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Transcript Correct

platform.hr.investigation.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Investigation Close

platform.hr.investigation.finding

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Investigation Finding

platform.hr.investigation.hold

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Investigation Hold

platform.hr.investigation.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Investigation Open

platform.hr.investigation.triage

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Investigation Triage

platform.hr.iplan.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Iplan Approve

platform.hr.iplan.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Iplan Create

platform.hr.iplan.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Iplan List

platform.hr.iscore.human

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Iscore Human

platform.hr.iscore.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Iscore Run

platform.hr.isession.attach.meeting

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Isession Attach Meeting

platform.hr.isession.control

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Isession Control

platform.hr.isession.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Isession List

platform.hr.isession.liveness

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Isession Liveness

platform.hr.isession.schedule

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Isession Schedule

platform.hr.job.arch.analyse

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Job Arch Analyse

platform.hr.job.arch.apply

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Arch Apply

platform.hr.job.arch.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Arch Approve

platform.hr.job.arch.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Job Arch Overview

platform.hr.job.arch.propose

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Arch Propose

platform.hr.job.arch.reject

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Arch Reject

platform.hr.job.family.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Family Save

platform.hr.job.level.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Level Save

platform.hr.job.profile.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Profile Save

platform.hr.job.version.draft.ai

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Version Draft Ai

platform.hr.job.version.publish

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Version Publish

platform.hr.job.version.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Version Save

platform.hr.job.versions

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Job Versions

platform.hr.jurisdiction.capabilities

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Jurisdiction Capabilities

platform.hr.jurisdiction.case.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Case Run

platform.hr.jurisdiction.case.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Case Save

platform.hr.jurisdiction.change.assess

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Change Assess

platform.hr.jurisdiction.change.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Change Close

platform.hr.jurisdiction.change.raise

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Change Raise

platform.hr.jurisdiction.coverage

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Jurisdiction Coverage

platform.hr.jurisdiction.explain

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Jurisdiction Explain

platform.hr.jurisdiction.overlay.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Jurisdiction Overlay List

platform.hr.jurisdiction.overlay.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Overlay Save

platform.hr.jurisdiction.pack.draft

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Pack Draft

platform.hr.jurisdiction.pack.release

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Pack Release

platform.hr.jurisdiction.pack.withdraw

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Pack Withdraw

platform.hr.jurisdiction.release.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Jurisdiction Release List

platform.hr.jurisdiction.rule.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Rule Save

platform.hr.jurisdiction.source.declare

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Jurisdiction Source Declare

platform.hr.jurisdiction.transfer.declare

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Transfer Declare

platform.hr.kill.flip

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Kill Flip

platform.hr.kill.toggle

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Kill Toggle

platform.hr.kiosk.register

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Kiosk Register

platform.hr.kiosk.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Kiosk Revoke

platform.hr.knowledge.pack.install

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Knowledge Pack Install

platform.hr.knowledge.pack.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Knowledge Pack Remove

platform.hr.knowledge.packs

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Knowledge Packs

platform.hr.leadership.score

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Leadership Score

platform.hr.learning.assign.mandatory

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Learning Assign Mandatory

platform.hr.learning.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Learning Overview

platform.hr.leave.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Leave Decide

platform.hr.leave.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Leave Overview

platform.hr.leave.policy.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Leave Policy Save

platform.hr.leave.type.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Leave Type Save

platform.hr.letter.issue

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Letter Issue

platform.hr.letter.kinds

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Letter Kinds

platform.hr.letter.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Letter Preview

platform.hr.listening.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Listening Close

platform.hr.listening.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Listening Overview

platform.hr.listening.run.due

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Listening Run Due

platform.hr.listening.schedule.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Listening Schedule Save

platform.hr.listening.schedule.state

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Listening Schedule State

platform.hr.loop.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Approve

platform.hr.loop.correct

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Correct

platform.hr.loop.evaluate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Evaluate

platform.hr.loop.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Loop Overview

platform.hr.loop.propose

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Propose

platform.hr.loop.release

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Release

platform.hr.loop.rollback

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Rollback

platform.hr.loop.snapshot

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Snapshot

platform.hr.marketplace.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Marketplace Overview

platform.hr.meeting.book

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Meeting Book

platform.hr.meeting.cancel

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Meeting Cancel

platform.hr.meeting.propose

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Meeting Propose

platform.hr.meeting.reschedule

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Meeting Reschedule

platform.hr.meetings.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Meetings Overview

platform.hr.meetings.reconcile

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Meetings Reconcile

platform.hr.mentor.propose

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Mentor Propose

platform.hr.module.toggle

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Module Toggle

platform.hr.new.hire.checkin.state

Read. Scope: platform.read, admin. Contract: route_inferred. Hr New Hire Checkin State

platform.hr.offer.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Offer Approve

platform.hr.offer.draft

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Offer Draft

platform.hr.offer.esign.confirm

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Offer Esign Confirm

platform.hr.offer.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Offer List

platform.hr.offer.send

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Offer Send

platform.hr.offer.withdraw

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Offer Withdraw

platform.hr.onboarding.checkins.book

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Onboarding Checkins Book

platform.hr.onboarding.draft.tasks

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Draft Tasks

platform.hr.onboarding.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Onboarding Overview

platform.hr.onboarding.plan.buddy

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Plan Buddy

platform.hr.onboarding.plan.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Plan Close

platform.hr.onboarding.plan.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Plan Create

platform.hr.onboarding.task.block

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Task Block

platform.hr.onboarding.task.done

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Task Done

platform.hr.onboarding.task.skip

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Onboarding Task Skip

platform.hr.onboarding.task.unblock

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Task Unblock

platform.hr.onboarding.task.verify

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Task Verify

platform.hr.onboarding.template.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Template Save

platform.hr.one.on.one.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr One On One List

platform.hr.one.on.one.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr One On One Record

platform.hr.opportunity.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Opportunity Decide

platform.hr.opportunity.post

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Opportunity Post

platform.hr.org.chart

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Org Chart

platform.hr.org.legal.entities

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Org Legal Entities

platform.hr.org.legal.entity.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Org Legal Entity Create

platform.hr.org.location.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Org Location Create

platform.hr.org.locations

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Org Locations

platform.hr.org.map.overview

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Org Map Overview

platform.hr.org.map.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Org Map Remove

platform.hr.org.map.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Org Map Save

platform.hr.org.tree

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Org Tree

platform.hr.org.unit.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Org Unit Create

platform.hr.org.unit.move

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Org Unit Move

platform.hr.override.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Override Record

platform.hr.overtime.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Overtime Decide

platform.hr.path.enroll

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Path Enroll

platform.hr.path.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Path Save

platform.hr.pay.equity.overview

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Pay Equity Overview

platform.hr.pay.gap.evaluate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pay Gap Evaluate

platform.hr.payroll.import

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Payroll Import

platform.hr.payroll.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Payroll Overview

platform.hr.payroll.provider.exceptions

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Payroll Provider Exceptions

platform.hr.payroll.reconcile

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Payroll Reconcile

platform.hr.payslips.issue

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Payslips Issue

platform.hr.people.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr People List

platform.hr.perf.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Perf Overview

platform.hr.person.create

Write. Scope: platform.write, admin. Contract: route_inferred. Create an HR person Required fields: display_name.

platform.hr.person.get

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Person Get

platform.hr.person.identifier.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Person Identifier Add

platform.hr.person.identifier.read

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Person Identifier Read

platform.hr.person.identifiers

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Person Identifiers

platform.hr.person.update

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Person Update

platform.hr.pilot.outcome.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pilot Outcome Record

platform.hr.pipeline

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Pipeline

platform.hr.policy.activate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Policy Activate

platform.hr.policy.compile

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Policy Compile

platform.hr.pool.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pool Create

platform.hr.pool.member.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pool Member Add

platform.hr.pool.member.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pool Member Remove

platform.hr.pool.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Pool Overview

platform.hr.portal.address

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Portal Address

platform.hr.portal.slug.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Portal Slug Save

platform.hr.position.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position Assign

platform.hr.position.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position Create

platform.hr.position.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Position Overview

platform.hr.position.profile.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position Profile Set

platform.hr.position.reports.to

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position Reports To

platform.hr.position.state

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position State

platform.hr.position.vacate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position Vacate

platform.hr.posting.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Posting Close

platform.hr.posting.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Posting Create

platform.hr.posting.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Posting List

platform.hr.posting.publish

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Posting Publish

platform.hr.probation.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Probation Open

platform.hr.probation.review

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Probation Review

platform.hr.profile.address.format

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Profile Address Format

platform.hr.profile.address.write

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Address Write

platform.hr.profile.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Decide

platform.hr.profile.ownership.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Profile Ownership Get

platform.hr.profile.ownership.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Ownership Set

platform.hr.profile.pending

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Profile Pending

platform.hr.profile.photo.clear

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Photo Clear

platform.hr.profile.photo.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Photo Set

platform.hr.profile.reveal

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Reveal

platform.hr.profile.section.end

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Section End

platform.hr.profile.section.write

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Section Write

platform.hr.profile.sections

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Profile Sections

platform.hr.pulse.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pulse Close

platform.hr.pulse.issue

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pulse Issue

platform.hr.pulse.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Pulse List

platform.hr.pulse.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pulse Open

platform.hr.pulse.results

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Pulse Results

platform.hr.quality.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Quality Overview

platform.hr.quality.sample.draw

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Quality Sample Draw

platform.hr.quality.samples

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Quality Samples

platform.hr.quality.verdict

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Quality Verdict

platform.hr.queue.agent.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Queue Agent Add

platform.hr.queue.agent.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Queue Agent Remove

platform.hr.queue.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Queue Save

platform.hr.readiness.report

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Readiness Report

platform.hr.recognise

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Recognise

platform.hr.relations.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Relations Overview

platform.hr.release.gates

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Release Gates

platform.hr.release.verify

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Release Verify

platform.hr.req.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Req Create

platform.hr.req.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Req List

platform.hr.req.reject

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Req Reject

platform.hr.req.transition

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Req Transition

platform.hr.review.cycle.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Review Cycle Open

platform.hr.review.include

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Review Include

platform.hr.review.respond

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Review Respond

platform.hr.review.template.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Review Template Save

platform.hr.rubric.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Rubric Approve

platform.hr.rubric.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Rubric Create

platform.hr.rubric.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Rubric List

platform.hr.run.replay

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Run Replay

platform.hr.run.start

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Run Start

platform.hr.run.step

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Run Step

platform.hr.run.takeover

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Run Takeover

platform.hr.scenario.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Scenario Run

platform.hr.schedule.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Schedule Save

platform.hr.screening.correct

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Screening Correct

platform.hr.screening.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Screening List

platform.hr.screening.review

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Screening Review

platform.hr.screening.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Screening Run

platform.hr.screening.verify

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Screening Verify

platform.hr.security.assurance.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Security Assurance Record

platform.hr.service.item.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Service Item Save

platform.hr.servicedesk.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Servicedesk Overview

platform.hr.shadow.compare

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Shadow Compare

platform.hr.shift.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Shift Add

platform.hr.shift.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Shift Assign

platform.hr.signature.cancel

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Signature Cancel

platform.hr.signature.confirm

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Signature Confirm

platform.hr.signature.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Signature List

platform.hr.signature.request

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Signature Request

platform.hr.signin.design.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Signin Design Get

platform.hr.signin.design.save

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Signin Design Save

platform.hr.skill.challenge.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Skill Challenge Resolve

platform.hr.skills.infer.sweep

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Skills Infer Sweep

platform.hr.skills.infer.text

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Skills Infer Text

platform.hr.skills.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Skills Overview

platform.hr.skills.taxonomy.adopt

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Skills Taxonomy Adopt

platform.hr.status

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Status

platform.hr.succession.nominate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Succession Nominate

platform.hr.succession.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Succession Open

platform.hr.succession.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Succession Overview

platform.hr.swap.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Swap Approve

platform.hr.swap.decline

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Swap Decline

platform.hr.sync.conflict.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Sync Conflict Resolve

platform.hr.talent.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Talent Overview

platform.hr.thread.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Delete

platform.hr.thread.dm

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Dm

platform.hr.thread.legal.hold

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Legal Hold

platform.hr.thread.outreach

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Outreach

platform.hr.thread.post

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Post

platform.hr.thread.read

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Thread Read

platform.hr.thread.retention

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Retention

platform.hr.thread.search

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Thread Search

platform.hr.threads.inbox

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Threads Inbox

platform.hr.threads.retention.sweep

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Threads Retention Sweep

platform.hr.time.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Time Decide

platform.hr.time.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Time Overview

platform.hr.title.history

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Title History

platform.hr.title.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Title Record

platform.hr.training.requirement.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Training Requirement Save

platform.hr.truth.register

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Truth Register

platform.hr.turnover.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Turnover Run

platform.hr.verifier.verdict

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Verifier Verdict

platform.hr.wb.grant

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Wb Grant

platform.hr.wb.identity

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Wb Identity

platform.hr.wb.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Wb List

platform.hr.wb.read

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Wb Read

platform.hr.wb.state

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Wb State

platform.hr.workforce.dashboard

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Workforce Dashboard

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: 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.interrupted

Read. Scope: platform.read, admin. Contract: declared_dynamic. Interrupted

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: 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: 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.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.media.ready

Read. Scope: platform.read, admin. Contract: route_inferred. Media Ready

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.meta.channels.switch.page

Write. Scope: platform.write, admin. Contract: route_inferred. Meta Channels Switch Page

platform.observe

Read. Scope: platform.read, admin. Contract: declared_dynamic. Observe

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.draft.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Draft Delete

platform.outreach.draft.list

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Draft List

platform.outreach.draft.save

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Draft Save

platform.outreach.messages.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Messages Delete

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.send.detail

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Send Detail

platform.outreach.send.retry

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Send Retry

platform.outreach.sends.list

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Sends List

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.pause

Read. Scope: platform.read, admin. Contract: declared_dynamic. Pause

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: admin. Contract: route_inferred. Purge

platform.purge.all

Write. Scope: 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.resume

Read. Scope: platform.read, admin. Contract: declared_dynamic. Resume

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.silence

Read. Scope: platform.read, admin. Contract: declared_dynamic. Silence

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.regenerate.secret

Write. Scope: platform.write, admin. Contract: route_inferred. Sites Regenerate Secret

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.takeover

Read. Scope: platform.read, admin. Contract: declared_dynamic. Takeover

platform.terminate

Read. Scope: platform.read, admin. Contract: route_inferred. Terminate

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.trust.evidence.report

Write. Scope: platform.write, admin. Contract: declared_dynamic. Trust Evidence Report

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: route_inferred. 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 (169)

portal_studio.accessibility.evidence.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Accessibility Evidence Save

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.analytics.breakdown

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Analytics Breakdown

portal_studio.analytics.load

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Analytics Load

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

Read. Scope: portal_studio.read, 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.delete

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Audience Delete

portal_studio.audience.explain

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Audience Explain

portal_studio.audience.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Audience List

portal_studio.audience.preview

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Audience Preview

portal_studio.audience.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Audience Save

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.experiment.control

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Experiment Control

portal_studio.experiment.results

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Experiment Results

portal_studio.experiment.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Experiment Save

portal_studio.experiments.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Experiments List

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.history

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Design History

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.feed

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Operations Feed

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.personalization.delete

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Personalization Delete

portal_studio.personalization.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Personalization List

portal_studio.personalization.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Personalization Save

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.diff

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Release Diff

portal_studio.release.evidence

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Design Release Evidence

portal_studio.release.history

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Release History

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.field

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Restore Field

portal_studio.restore.published

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Restore Published

portal_studio.revert

Read. Scope: portal_studio.read, 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.signin.methods

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Signin Methods

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: route_inferred. Analyze sales with AI

sales.chart

Write. Scope: sales.write, admin. Contract: route_inferred. Sales Chart

sales.compare

Read. Scope: sales.read, analytics.read, admin. Contract: route_inferred. 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: route_inferred. 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: declared_dynamic. 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

bezpečnost (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: route_inferred. Get a session journey Required fields: session_id.

sessions.list

Read. Scope: sessions.read, analytics.read, admin. Contract: route_inferred. 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: admin. Contract: route_inferred. Opsiq Branding Clear

settings.opsiq.branding.upload

Write. Scope: 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: route_inferred. List Site Intelligence alerts

site_intelligence.alerts.resolve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Resolve a Site Intelligence alert Required fields: alert_id.

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: route_inferred. 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: route_inferred. 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: route_inferred. List Site Intelligence crawls

site_intelligence.crawls.status

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Get crawl status

site_intelligence.dashboard

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. 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: route_inferred. 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: route_inferred. 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: route_inferred. 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: route_inferred. Start a Site Intelligence analysis

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

Stav (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.

průzkumy (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.

tým (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: admin. Contract: route_inferred. Team Perf Activity

team.perf.ai.compare

Write. Scope: admin. Contract: route_inferred. Team Perf Ai Compare

team.perf.ai.review

Write. Scope: admin. Contract: route_inferred. Team Perf Ai Review

team.perf.availability

Write. Scope: admin. Contract: route_inferred. Team Perf Availability

team.perf.award.finalize

Write. Scope: 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: admin. Contract: route_inferred. Team Perf Award Void

team.perf.claim.pay

Write. Scope: admin. Contract: route_inferred. Team Perf Claim Pay

team.perf.claim.recover

Write. Scope: admin. Contract: route_inferred. Team Perf Claim Recover

team.perf.claim.reject

Write. Scope: admin. Contract: route_inferred. Team Perf Claim Reject

team.perf.clear

Write. Scope: 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: admin. Contract: route_inferred. Team Perf Data

team.perf.heatmap

Write. Scope: admin. Contract: route_inferred. Team Perf Heatmap

team.perf.history

Write. Scope: admin. Contract: route_inferred. Team Perf History

team.perf.pay.all.claims

Write. Scope: 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: 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: 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: admin. Contract: route_inferred. Team Perf Reward Budget Authorize

team.perf.reward.claims

Write. Scope: admin. Contract: route_inferred. Team Perf Reward Claims

team.perf.reward.pay

Write. Scope: admin. Contract: route_inferred. Team Perf Reward Pay

team.perf.reward.payouts

Write. Scope: admin. Contract: route_inferred. Team Perf Reward Payouts

team.perf.reward.period.finalize

Write. Scope: 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: admin. Contract: route_inferred. Team Perf Reward Period Reverse

team.perf.reward.period.void

Write. Scope: admin. Contract: route_inferred. Team Perf Reward Period Void

team.perf.reward.save

Write. Scope: admin. Contract: route_inferred. Team Perf Reward Save

team.perf.reward.state

Write. Scope: admin. Contract: route_inferred. Team Perf Reward State

team.perf.trends

Write. Scope: admin. Contract: route_inferred. Team Perf Trends

team.perf.v2.data

Write. Scope: admin. Contract: route_inferred. Team Perf V2 Data

team.perf.v2.export

Write. Scope: admin. Contract: route_inferred. Team Perf V2 Export

team.perf.v2.live

Write. Scope: admin. Contract: route_inferred. Team Perf V2 Live

team.perf.v2.reward.sheet

Write. Scope: admin. Contract: route_inferred. Team Perf V2 Reward Sheet

team.perf.v2.settings

Write. Scope: admin. Contract: route_inferred. Team Perf V2 Settings

team.perf.v2.settings.save

Write. Scope: 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

vstupenky (77)

tickets.ai.summary

Write. Scope: tickets.write, 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.csat.get

Read. Scope: tickets.read, admin. Contract: explicit. Get the CSAT response for one ticket Required fields: ticket_id.

tickets.csat.list

Read. Scope: tickets.read, admin. Contract: explicit. List ticket CSAT responses in the bound workspace

tickets.csat.metrics

Read. Scope: tickets.read, admin. Contract: explicit. CSAT metrics for a period (the tickets dashboard numbers)

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.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: route_inferred. Block a visitor Required fields: visitor_id.

visitors.list

Read. Scope: visitors.read, analytics.read, admin. Contract: route_inferred. List visitors

visitors.table

Read. Scope: visitors.read, admin. Contract: route_inferred. Visitors Table

háčky (1)

webhooks.events.list

Read. Scope: webhooks.read, crm.read, admin. Contract: explicit. List outbound webhook events and their payloads

psaní (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.

Jsou k dispozici OpenAPI a Postman?+

Ano. Vygenerovaný OpenAPI 3.0 Doklad je na /api/v1/openapi.php, generovaná sbírka Postman je na /api/v1/postman.php, a lidsky čitelné developerské dokumenty jsou na /api/docs/.

Jak mohu pracovat s více než jedním pracovním prostorem?+

Poslat site_key v požadovaném těle vybrat pracovní prostor. Klíč vydaný pro jeden pracovní prostor zůstane připnutý k němu; klíč s admin kontextem může vybrat libovolný pracovní prostor, který je povoleno vidět, a je odmítnut pro každý není.

Které akce mohou číst pouze klíčový hovor?+

Každá akce označená jako čtení. Nastavte režim oprávnění na klíč read_only a každé psaní je odmítnuto read_only_keyTakže integrace zpráv nemůže nic změnit ani omylem.

Proč mě nenašli za něco, co vidím v administrátorovi?+

Klíč je nahlížen do pracovního prostoru. Záznamy v ostatních pracovních prostorech se vrací not_found spíše než chyba v povolení, takže API Nikdy nepotvrzuje, jestli něco existuje jinde.

Vývojář

Bezpečnostní API

Jedna bezpečnostní smlouva pro každý konektor a integraci: požádat OpsIQ co to ví o IP nebo odesílatel, a krmit zpět zneužívání váš vlastní systém vidí.

OpsIQ se již brání: IP Firewall blokuje útočníky, potrubí jízdenek filtruje spam, a Security AI klasifikuje pachatele a navrhuje bloková pravidla. API otevře tuto inteligenci pro vaše další systémy. Platforma fakturace, klientský portál nebo vlastní aplikace může zkontrolovat návštěvníka před důvěrou, a nahlásit, co pozoroval, aby se celá instalace učí z každého povrchu.

Co můžeš udělat

Zkontrolujte, zda před důvěrou

Security. Zkontrolujte odpovědi s firewall stavu, jakékoliv spam pravidlo odpovídající odesílateli, a cached AI verdikt pro IP. Jeden hovor, jeden konsolidovaný názor.

Nahlaste, co jste viděl.

Bezpečnost. Zpráva zaznamenává pozorování jako bezpečnostní událost, má bezpečnostní AI klasifikovat IP A upozorní administrátory, když se verdikt vrátí s vysokým rizikem. OpsIQ vidí přímo.

Sdílet spam pravidla

Security. blocklist. add a security. Blocklist. list číst a psát stejná spam pravidla, která stránka Vstupenky používá, takže odesílatel zablokovaný v jednom systému je blokován všude.

Hlášení zneužití z konektoru
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"
}

Kokosy a bezpečnost

security.read

Potřebné pro bezpečnost. Kontrola a bezpečnost. Blocklist. liste. bezpečné poskytnout zprávu integrace.

security.write

Potřebné pro bezpečnost. Zpráva a bezpečnost. Blocklist. add. Dejte to pouze systémům, které chcete krmit pravidla a zprávy v.

Nic není tiše zničeno.

Blocklist odesílatel stále přistává v pohledu Spam, kde jízdenku lze přečíst a obnovit.

Platforma se chrání sama.

The server's own IP Adresy nemohou být nikdy zablokovány, blokovány nebo hlášeny prostřednictvím tohoto API, takže špatně nakonfigurovaná integrace nemůže platformu spustit.

💡
Mint klíč pod Integrations, pak API Keys, a dát mu pouze bezpečnostní aplikace, které potřebuje. Plný požadavek smlouvy pro každou akci je v meta. acces a dokument OpenAPI.
Používají to moje stávající konektory automaticky?+

Outbound synchronizace je již automatická: při zablokování IP, připojené platformy jsou sdělovány přes bezpečnostní synchronizaci konektoru. API je příchozí polovina. Namiřte konektor nebo vlastní kód na tyto čtyři akce s klíčem nesoucím bezpečnostní senzory.

Kde žijí pravidla spamu?+

Jeden obchod. Záložka Vstupenky Block odesilatel ovládání, spam AI v Nastavení, a tento API všechny pracují proti stejnému blocklist, takže je přesně jedno místo k hledání.

Vývojář

Události API

Pošlete vlastní události ze serveru nebo webové stránky na OpsIQ pro analýzu, experimenty, CRM spouštěče a podmínky webháku.

Jak to funguje
Události APITrack () volání odeslání vlastní demo_booked událost do OpsIQ, který krmí cíle přeměny, segmenty a spouštěče.OpsIQ.track ("demo_booked", {hodnota: 0, plán: "pro"});Přepočítávací cíleSegmentySpouštěče a WebhákyProhlížeč (OpsIQ.track) nebo serverside POST /v1/events
Události API

Postranní události prohlížeče

Sledování událostí prohlížeče
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "button_clicked", {
  button: "signup",
  page: "/pricing",
  variant: "green"
}]);

Server- side události

Serverside, rekordní aktivity a konverze proti kontaktu prostřednictvím akce API. Použití crm.activities.record pro celoživotní / obchodní činnost a crm.conversions.record pro konverzi. events.send akce; příchozí přijímač CRM událostí žije na /v1/inbound.php?t=<token> pro systémy třetích stran, které vtlačují události do.

Serverboční činnost (akce 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"
}

Úmluva o pojmenování

Dot notace

"Rozkaz. Vyplněn." Ne "Příkaz vyplněn.

Minulý čas

"Button. Klikl" ne "Butt. Click."

Buď konkrétní.

"cena.plan_selected"Ne"user_action".

Vývojář

Jak data proudí přes OpsIQ

Pochopení toku dat vám pomůže debugovat integrace a optimalizovat výkon.

Jak to funguje
Jak datový tokData proudí z widget a maják do OpsIQ jádro (CDP, diagram identity, mozek AI, analytika, CRM) pak ven pomocí webháků a REST API.Widget& majákJádro OpsIQCDP · graf identityAI mozekanalytika · CRMWebháky venREST API
Průtok dat

Příchozí datový tok

1
Maják widget

U JavaScript widget posílá zobrazení stránky, kliknutí a chatu zprávy na /beacon.php.

2
Požití události

Události uložené v opsiq_events s site_key, typ akce, zákazník, a vlastnosti.

3
Sezení

Session stavitel skupiny stránky zobrazení do zasedání (přes cron).

4
Řešení totožnosti

Po identifikaci jsou anonymní záznamy spojeny s profilem zákazníka.

5
Synchronizace konektoru

Konektory vytáhnou data z vnějších platforem a uloží se v pouzdře konektoru.

6
Kontext AI

AI sestavuje kontext z: historie návštěvníků, zákaznický profil, konektorová data, KB a instantní.

Odchozí datový tok

1
Požáry událostí

Vnitřní požáry událostí (ticket. created, chat. message, order. complete).

2
Pracovní fronta

Událost umístěná ve frontě na práci async.

3
Dispečink Webhook

Dispečerské značky a posílají na všechny upsané koncovky.

4
Znovu opakovat selhání

Neúspěšné dodávky se znovu zkoušely s exponenciální zálohou.

Nastavení

Odkaz na nastavení

Nastavení je řídící centrum pro pracovní prostor. Vše níže je načten do pracovního prostoru, kde jste, takže jeden účet může provozovat několik značek s různými identitami, chatu chování a retenční pravidla.

Najít nastavení

V Nastavení je asi šest set jednotlivých ovládacích prvků, které jsou rozděleny do jedenácti záložek seskupených pod čtyřmi menu.

Nastavení vyhledávání (Ctrl + K)

Stiskněte Ctrl + K, nebo Cmd + K na Mac, kdekoliv na stránce Nastavení. Zadejte jednoduchými slovy a stiskněte Enter pro skok přímo k ovládání. Hledání toleruje malé typy a rozumí souvisejícím slovům, takže plánovač najde Cron a soukromí najde ovládací prvky sledování. To pouze ukazuje nastavení, které vaše role může otevřít.

Pracovní prostor a plán

Generál a licence.

Podpora AI a zákazníků

Admin AI asistent, Klient Chat, OpsIQ psaní a podpora portálu.

Údaje a správa

Sledování a ochrana soukromí, oprávnění a zabezpečení.

Systém

Cron Setup (pouze pro sebe) a Nebezpečí zóny.

Ukládání

Každá karta uschová na vlastní pěst pomocí vlastního tlačítka Uložit. Klient Chat a OpsIQ Zápis je jejich pin na obrazovku. Uložte před přepínacím záhlavím, změny nejsou přenášeny přes.

Hluboké vazby

Aktivní záložka je zapsána do adresy stránky, takže může být karta označena nebo zaslána kolegovi.

Obecně: Obchodní identita

Nejdůležitější karta na stránce. AI čte tyto hodnoty v každé odpovědi, zprávy a denní stručné.

Obchodní název

Používá se ve zprávách AI, denních slipech a formulaci na míru. Srovnejte si webovou stránku footer.

Podnikatelský průmysl

Analýza AI, olověné bodování, stručné a průzkumné presety. Vyberte si z webhostingu, e- commerce, SaaS, realitní, agentura, poradenství, zdravotní péče, vzdělání, finance nebo obecné podnikání.

Jazyk systému

Jazyk zobrazený každému, kdo si nevybral svůj vlastní. Každý agent může přepsat v jejich profilu.

Použít jazyk prohlížeče

Zobrazí signate-in stránku v návštěvníkově vlastním jazyce. Jakmile si tam někdo vybere jazyk, jeho volba vyhraje a to ho nikdy nepřekoná.

Časový rozpis systému

Zóna, v níž běží celý systém: data, zprávy, plány a pozadí cron. Použijte svůj operační časový rozchod, nikoli vaši zákazníci.

Obecné: GeoIP a sledování

Databázová cesta GeoIP2

Plnou cestu k GeoLite2-City. mmdb. Autodetekuje na prvním zatížení přes cPanel, Plesk, DirectAdmin, Cloudways, Docker a plain Linux nebo Windows. Přidat GeoLITE2-ASN. mmddb ve stejné složce pro návštěvníka poskytovatele internetu.

Geo zdrojový režim

Pouze GeoLite2, GeoLeite2 s Cloudflare záloha, nebo Cloudflare pouze.Cloudflare režimy vyžadují proximaci stránky Cloudflare, s návštěvní umístění hlavičky povoleny pro město a region detail.

Časový limit zasedání

Nečinnost před návštěvou je považována za ukončenou. Výchozí 14400, což je čtyři hodiny.

Živé refresh interval (y)

Jak často se živé krmivo osvěžuje. Výchozí 30 sekundy.

Aktivní práh (min)

Jak dlouho se návštěvník počítá jako živý po jejich poslední stránce zatížení. Výchozí 2 minut. Jedná se o Live Feed drop- off, ne délka relace.

Údržba údajů (dny)

Odstraní shromážděné a generované záznamy v minulosti: analytika, chat, vstupenky, zpětná vazba, transakce, AI telemetrie, integrační protokoly a CRM aktivity. 0 uchovává vše navždy. Nastavení, autentický obsah a příjem souhlasu nejsou nikdy odstraněny.

Když je rozhovor smazán

Výběr, kolik z vymazané konverzace zůstane na záznamu: plný záznam, záznam bez rozhovoru, nebo pouze skóre. Odstranění vždy skrývá chat z schránky a historii návštěvníka. Plánováno retence a zapomenout návštěvník vždy vymazat v plném rozsahu bez ohledu na to.

Track bot provoz

Počítá se s plazi jako návštěvníky. Vynechte to; nafoukne počet návštěvníků a podělá každou zprávu.

Povoleno vyskakování průzkumů zpětné vazby

Zobrazí widget pro návštěvníky, který je široký a přístupný. Oddělené od chatových průzkumů v rámci Klientského chatu, Support Flow.

Obecné: AI funkce

Master přepne na každý povrch AI. Vše je výchozí a ušetří na pracovní prostor.

AI Trariage na vstupenky

Upřesňuje každý lístek podle kategorie, priority a sentimentu a na horní straně tipu zapíše shrnutí závitů.

Shrnutí AI Triage hover

Zobrazí triage tagy a shrnutí v nástrojovém tip, když agent otáčí řádek v seznamu tipů. Vyžaduje AI Trary.

Inbox Copilot (skladatel)

Přidá návrh AI odpověď, Warmer, Shorter, Formální a omluvy tlačítka pod políčko odpovědi na tip. Nic odešle bez agenta.

Ask- OpsIQ Copilot

Page- vědomi plovoucí kopilot na každé admin stránce. Ví, který zákazník, faktura nebo jízdenka je otevřena.

Dobré ráno.

Na první otevřené každý den copilot představuje urgentní vstupenky, opožděné odpovědi a čekání chaty. Neděle produkovat týden v recenzi.

Obecné: peníze, značka, záloha

OpsIQ Základní měna

Každá peněžní částka v admin je převeden na tuto měnu pro zobrazení. Konektory ukládají vlastní zdrojovou měnu; nastavit, že na konektor.

Automatické synchronizace FX rates

Obnovuje sazby každých šest hodin z volného veřejného krmiva bez API klíče. Můžete přidat ruční sazby, které přepínají kanál. S autosynchronizace off, měny bez manuální sazby jsou ponechány nekonvertované.

Povolit funkce obchodu a účtování

Vypnout. Zapnutí ukazuje stránku Prodej a Konverze, palubní desky příjmové karty a Živé zpravodajské služby. S tím vypnuto, každá cena povrch je skryt a prodejní stránka opustí menu.

Obchodní slovní zásoba

Učí OpsIQ vaše znění: zda regenerační, slovo pro obnovení, co prodáváte, a jak se tomu říká kupujícím.

Značení a loga

Dva uploads, jeden pro lehké pozadí (admin sidebar) a jeden pro tmavé (sign- in page). PNG, JPG, Web P nebo SVG až do 3 MB.

Agentko pro zpravodajskou službu, povolte soukromé cíle SSH

Automaticky implementující SEO agent se připojí přes SSH. Soukromé, loopback a vyhrazené adresy jsou zablokovány ve výchozím nastavení jako anti- SSRF opatření. Povolit pouze na self-hosted instals, které musí dosáhnout místního serveru.

OpsIQ Backup / Obnovit

Exportuje každé nastavení a OpsIQ-vlastněný stůl plus nahrané soubory. Obnovit nahrazuje OpsIQ pouze konfigurace a záznamy; nikdy se nedotkne klientů, faktur, vstupenek, služeb, domén, objednávek nebo transakcí.

⚠️
Vezměte zálohu před použitím cokoliv v Nebezpečí zóny. Záloha žije v Obecné a akce smazat živě v Nebezpečné zóně, takže je snadné dosáhnout tlačítka smazání bez exportu první.
Nastavení

Nastavení: Bezpečnost

Ochrana pro admin sign- in, vaše personální účty a data OpsIQ sbírá. Zákaznický signál pro podporu portálu je nastaven samostatně.

Ochrana při signalizaci

Google reCAPTCHA

Zastaví boti a kreditní nádivku na admin sign- in. Vyberte v3 (neviditelný, bodovaný) nebo v2 (checkbox), nastavit práh v3 skóre, a dodat stránky a tajné klíče. Tyto stejné klávesy jsou znovu použity pomocí formuláře podpory portálu požadavek.

Automatické přihlášení-Zablokování

Blokuje adresu po několika poruchách v okně, na několik hodin. Můžete přizpůsobit uzamčená-stránka zprávy a ukázat malé čekání-obrazovka rozptýlení.

Zpevnění přihlašovací údaje

Zásada hesla s minimální délkou, odmítnutí hesel nalezených ve známých porušeních, omezení účtu na kreditní náplň, povinný dvoufaktor pro každou admin, návrat hesla před nebezpečnými činy a signalizace nového zařízení v záznamech.

Jednosměrný signál zapnutý (OIDC)

Personál sign- in prostřednictvím svého poskytovatele identity. Potřebuje emitenta URL, ID klienta a tajemství klienta. Automatické poskytování domén, jeden na řádek, vytvářet uživatele automaticky na první sign- in.

Jednosměrný signál zapnutý (SAML 2.0)

Pro poskytovatele, kteří hovoří SAML. OpsIQ dodává odpověď ACS URL a SP ID entity; dodáte ID IDP subjektu, sign- in URL, volitelné označení-out URL a X.509 podepisování certifikátu. Pole atributu e-mail a název jsou potřebná pouze pro nestandardní názvy atributů.

SCIM Provisioning

Vytvoření, aktualizace a deaktivace řízení OpsIQ účty.OpsIQ zásobuje SCIM základ URL Vygenerujete zde označené žetony, takže můžete být odvoláni, aniž byste porušili zbytek.

Výhrůžky, blokování a sbírka

Odlétající Egress Allow- list

Omezení, které externí hostitele těchto konektorů pracovní plochy mohou volat. Spojením s SSH cílovou kontrolu v obecné.

Výstraha Scoring a Auto- Block

Blokuje návštěvníka, jakmile jejich skóre hrozby projde práh. 0 zakáže. Podívejte se na stránku Bezpečnostní přehled po dobu jednoho týdne před výběrem čísla.

Blokovat zprávu o stránce

Zpráva, kterou návštěvník vidí, jako prostý text nebo vlastní obrazovku bloku HTML.

Hlavní webové vitálie od skutečných návštěvníků

Měří LCP, INP a CLS z reálných sezení.

Zachycené, znovu-bezpečné doručení události

Vlastní akce fronty v prohlížeči a dodávat v dávkách s retry, snížení ztráty na špatné mobilní připojení.

Podepsané sledovací majáky

Real widget Embeds nesou rotující kryptografický token, takže padělané sledovací data mohou být zamítnuty. Vypnuto ve výchozím nastavení; umožňuje změnit, jak embeds ověřovat, takže nejprve test.

Bezpečnostní upozornění

Vypnuto ve výchozím nastavení. Detekce a blokování běží bez ohledu na to,. Tato karta kontroluje, zda vám bude řečeno, a kolik AI pomáhá.

Povolit bezpečnostní záznamy

Hlavní vypínač pro tuto kartu.

Práh přihlašovací vlny

Kolik neúspěšných signálů v krátkém období se počítá jako vlna, která stojí za varování.

IP reputace inteligence

Přidá výhružné skóre pro návštěvníky, kteří se objevují ve veřejných zdrojích zneužívání.

Hlídka na místě

Přesčasy a kontroly doby platnosti TLS, upozornění před propadem osvědčení.

Bezpečnostní analytik a informace o incidentu v AI

Přidává vysvětlitelný verdikt k podezřelé aktivitě a skupinové útoky do jediného čitelného incidentu, spíše než proudu událostí.

Autopilot politiky

Jedná sama o sobě, mění to, co se z incidentu naučí, na navrhované nebo použité pravidlo. Nechte toho, dokud si nepromyslíte jeho návrhy a nebudete s nimi souhlasit.

Denní bezpečnostní stravovací a týdenní postoj poradce

Denní rekapitulace na stránce Bezpečnostní přehled a týdenní seznam tvrzených kontrol, které ukazují, co je chráněno a co je stále otevřené.

Automatické vypršení platnosti opozdilých návrhů

Navrhované blokové pravidlo, které jste nikdy nejednali, vyprší samo o sobě, místo aby se hromadilo.

Replay pro sezení

Povolit přehrávání relace session

Rekordy návštěvníků pro přehrávání. Když se replay knihovna není nikdy načtena, takže není třeba nic zakládat. Nahrávky jsou odebírány vzorky a privacy-mask, a jsou sledovány na stránce Session Replay pod Analytics.

Rychlost odběru vzorků, maximální zachycení, zadržování

Jaký podíl z nahrávání, jak dlouho může běžet jediná nahrávka a kolik dní je vedeno.

⚠️
Session replay záznamy skutečné lidi pomocí vašich stránek. Udržujte rychlost vzorku a uchovávání tak nízké, jak bude stále odpovídat na vaši otázku, a zveřejnit ve svém upozornění na soukromí.
Nastavení

Nastavení: Sledování a ochrana soukromí

Co OpsIQ může sbírat a jak dlouho každý druh záznamu přežije.

Vyloučení

Vyloučené oblasti IPs a CIDR

Adresy nikdy sledovat, jeden na řádku, přesné adresy nebo CIDR rozsahy. Nejčistší způsob, jak udržet svůj vlastní tým mimo své analytické, protože to pokrývá každého na této adrese spíše než jen signed- v admins.

Vyloučené cesty URL

Vzorky stránek nikdy nesledovaly, jedna na řádek, divoké karty s hvězdičkou. Například /admin/* udržuje celou zadní kancelář mimo záznam návštěvníků.

Politika uchovávání údajů

Per- subsystém auto- očista ve dnech. Oddělené od celkového nastavení uchovávání dat v obecné a z čištění nebezpečné zóny.

Poznámky k interakcím AI

Telemetrie důvěry drží krátké náhledy na dotaz a odpověď. Výchozí 90 dny. To má nejvíce zákaznický text, takže zkraťte to nejprve při utahování soukromí.

Události týkající se využití AI

Výchozí dny 90. Pouze čísla, žádný obsah zpráv.

Sledování činnosti

Výchozí dny 365. Udržujte to nejdéle, je to vaše důkazní stopa.

Diagnostika

Zdravotní záznamy systému. Výchozí dny 30.

Nezodpovězené otázky

Seskupení otázek, na které AI nemohla odpovědět. Výchozí dny 90. Projděte je na Otázkách, které AL vynechala před vypršením platnosti.

Hlídací psi a export

Metrické Anomálie Alarty

Denní srovnání včerejšího s nedávnou základní hodnotou, upozorňující, když metrický pohybuje více než váš práh. Výchozí 35 procent. Vypnuto ve výchozím nastavení.

Export skladu

Nightly skládky zasedání, návštěvníků, pageviews a souvisejících tabulek pro vaše vlastní BI zásobník, ve formátu si vyberete, uchováván po řadu dní. Vypnuto ve výchozím nastavení.

Nastavení

Nastavení: Admin AI asistent

Plovoucí asistent, který váš personál používá v admin, s přístupem k živé čtení k klientům, faktury, vstupenky, servery a cron protokoly. Jiný asistent od zákazník- čelí jeden pod Client Chat.

Povolit OpsIQ AI Widget

Zobrazí tlačítko asistenta na každé admin stránce.

Rozvržení a chování

Poloha rohovky, šířka panelu (320 do 600 px), maximální výška (400 do 900 px), poloměr rohu (0do 24), velikost písma, a matné sklo rozmazané za panelem.

Zobrazit rychlé žetony

One- klepněte na tlačítko zkratky pod hlavičkou. Nejrychlejší způsob, jak se pro většinu zaměstnanců.

Zobrazit modelovou informaci

Zobrazí, který model odpověděl a jak dlouho to trvalo. Užitečné při ladění náklady, hluk pro každodenní použití.

Per- admin přístupová brána

Pouze ukazuje asistent signed- in admin, jehož uživatelské jméno a e-mail odpovídají OpsIQ agent přidělený do tohoto pracovního prostoru. Vlastníci vždy projít. Použijte tlačítko Zkontrolujte můj přístup před povolením, nebo můžete zamknout svůj vlastní tým ven.

Al Persona

Zobrazení názvu, záhlaví tagline a vlastní uvítací zprávy zobrazené při otevření panelu.

Chytré rychlé akční žetony

Upravit štítek a základní příkaz pro každou zkratku, přidat vlastní, nebo reset do selhání. Štítek je to, co zaměstnanci vidět, příkaz je to co AI obdrží.

Barvy a tvar

Tvar čipu (pilulka, zaoblené, čtvercové), barvy čipů, téma karty a tvar odpalovače (kulatá, stříkací, čtvercová), s živým náhledem.

Paměť konverzací

Asistent si pamatuje každou osobu historii přes prohlížeč sessions, až na 120 zprávy, uložené ve vaší vlastní databázi. Vymažte ji začít znovu.

Nastavení

Nastavení: Klient Chat

Šifrování chatu, které používají vaši zákazníci, a největší oblast nastavení. Šest podkaret, s hlavním spínačem a Uložit připnuté na horní část karty.

Práce přes podkarty v pořadí na nové instalaci: Identita a kopírování, Vzhled, Chování, Podpora Flow, Znalostní školení. Pokročilý je infrastruktura a může čekat.

Totožnost a kopie

Identifikační značka

Widget jméno, tagline, AI jméno, název používaný pro systém a neaktivní oznámení, a jak se objeví jména agenta. Agent Název Zdroj rozhoduje mezi reálnými jmény, vlastní jméno nebo team label.

In- Chat pozdrav

Dvě pozdravy, jeden pro všechny návštěvníky a jeden pro identifikované návštěvníky. Otázka začíná více konverzace než prohlášení.

Popup Teaser

Plovoucí zpráva před chatem je otevřena, s vlastním názvem, velikost písma a barvy. AI může psát kávová zrna, s ovládacími prvky pro kolik generovat, kolik ukázat za návštěvu a mezeru mezi nimi.

Náboje a odpalovací zařízení

Celý scénář: požádat o jméno a e-mail, potvrzení, požadovat člověka, bez agentů k dispozici, jízdenka vytvořena nebo zrušena, předání čeká. Asi dva tucty jednotlivých řádků v skládací panel.

Status a nedovolená oznámení

Tři uživatelsky viditelné zprávy: agent zavře chat, návštěvník se ztišil, a agent ruce zpět do AI. Vyhněte se interní formulace jako vyřešené nebo triaged.

Skladatel a návrhy

Vstupní pokladní, talk- to-a- lidský štítek a navrhované úvodní otázky. Tři dobré návrhy odkloňují více vstupenek než stránka článků.

Spouštěč, Icon a Avatars

Ikona spouštěče, volitelná ikona, když je otevřená, velikost odpalovače a obrázky pro člověka a AI.

Vzhled

Téma a sklo

Tématický režim, prémiový preset barev, intenzita rozmazaných a opacita, plus přepínače pro animace, oddělovací čáry, skrývání řádku stavu, skrývající kartu do schránky zpráv a skrytí tlačítka close. Začněte s přednastaveným, nastaví desítky barev najednou.

Hlavní barvy

Spouštěč, hlavička, pomocný panel, odkazy, tlačítka, systémová upozornění a skladatel, každý s barvou start a konec pro gradienty. Použitá výchozí možnost skla je ignoruje a udržuje transparentní povrch.

Panel, bublina a čipy

Kolem třiceti pickers pokrývající panel, hranice, text, vstupní plocha a každý typ bubliny (návštěvník, AI, agent, psaní, systém) plus sugesce čipy a jejich stav vznášedla. Otevřete pouze pro přesné shodování značky, a zkontrolujte kontrast na bublinkové text.

Rozvržení a tvar

Šířka a výška panelu, poloměr rohu, velikost písma, pozice obrazovky, tvar odpalovače, styl bubliny a zda se zobrazují avatary. Otestujte šířku telefonu.

Chování

AI automaticky odpoví

Hlavní vypínač pro odpovědi na AI. Vypnuto znamená, že každá zpráva čeká na člověka.

Lidské následná opatření a přirozené dvojité-textování

Jemný follow- up, když návštěvník ztichne, a volitelné krátké druhé zprávy, jak by člověk poslat jeden. Tunded s max. follow-ups per silence, první zpoždění, pozdější multiplikátor, přítomnosti okna a maximální sekvence okno. Může být omezena na pracovní hodiny, a potlačena po jednoduchém poděkování.

Odpovědi na psací stroj a tempo odpovědi

Ať už odpovědi zadejte slovo za slovem, a jak rychle asistent odpoví, přednastaveným nebo vlastní minimum a maximální zpoždění v milisekundách. Malé zpoždění čte jako více člověk než okamžitá odpověď.

Živý překlad

Každý agent čte a píše ve svém vlastním jazyce, zatímco návštěvník čte jejich.

Po volnoběhu se vraťte zpět do AI.

Zápis o nečinnosti agenta před tím, než AI obnoví konverzaci.

Automaticky otevřít chat

Sekundy, než se widget otevře sám.0nikdy neotvírá. Narušitelné na mobilní; nechte na0pokud není testováno.

Chytřejší odpovědi

Plánování dopředu pro jednopass odpovědi, myšlení hloubka, volitelný samostatný model pro agent odpovědi, ukazující úvahy návštěvníkům, tolerování chybných hlásek, dlouhotrvající konverzace paměti, omezení asistenta pouze pro vaše podnikání, ceny v měně návštěvníka, a jak se objeví odkazy. Pouze mluvit o své podnikání by mělo být na téměř každý.

Úspora nákladů

Skips znalosti hledání pozdrav, jako je hi a díky, a udává nejdelší odpověď v žetonech. Trimy náklady beze změny kvality odpovědi na skutečné otázky.

Jazyky

Který jazyk widget podporuje a jak si vybere jednu pro návštěvníka.

Odpovědi na účet zákazníka

Odpovědi z vlastního účtu znakového zákazníka, volitelně nahlížet živě, a volitelně naložené pouze v případě potřeby. Čtení - pouze ve všech případech; načtení - když - potřeboval znatelně snižuje náklady.

Výše náhrad

Asistované žádosti o vrácení peněz, kde asistent shromažďuje detaily a ruce na osobu. Nikdy dokončí náhradu sama.

Rozhovor a widget

Udržování minulých rozhovorů, pokračování chatu přes vaše připojené stránky, draggable okno, žádat hosty o e-mail, a nechat váš tým obrátit chat do vstupenky.

Funkce widget

Emoji picker, přílohy s volitelným paste- only módem, AI pochopení obrazu, inline ikony, mikrofon, talk-to- agent tlačítko, zvuk návštěvníka, náhled připojení, hlasové-volání a izolaci relace. AI obrázek je to, co umožňuje návštěvník vložit chybový screenshot a získat užitečnou odpověď.

Admin Inbox, oznámení a uvítací pop

Návštěvník uvítá vyskakování, plus upozornění vašich agentů: inbox zvuky, oznámení na plochu, šepot zvuky, zda soukromé šeptání pípnutí, a interval pro průzkum inbox.

Podpůrný tok

Lidská práce

Jak jsou žádosti o osobu přiřazeny, sekund agent musí reagovat, zda se vrací chatu na AI, a zda AI pokračuje, když vyprší timeout. Nastavit to před tím, než jít živě nebo návštěvník, který žádá člověka prostě čeká.

Pracovní doba

Otevírací doba, časová zóna a zavřená hodinová zpráva. Mimo tyto hodiny nebude AI nabízet člověka. Oddělený rozvrh od pracovní doby vstupenek v rámci OpsIQ Psaní.

Odpovědi, když je AI vypnutý

První odpověď na novou zprávu, odpověď, když je někdo již fronta, a jak dlouho před opakováním.

Offline formulář

Zobrazí kontaktní formulář místo chatu.

Vyhledávání lístků a oznámení oddělení

AI povědomí o vstupenkách, takže návštěvník citující číslo jízdenky dostane svůj skutečný status, a které oddělení AI může směřovat do. Built- in panel ukazuje skutečné příjemce pro každé oddělení, vyřešil stejným způsobem oznamovatel řeší je, takže můžete vidět, než zákazník dělá, že oddělení upozorňuje nikoho.

Nápověda centrum v widget chatu

Umožňuje návštěvníkům procházet publikované články, aniž by opustili chat. Vyberte si místo, kde se objeví vstupní bod, štítek dolní lišty a ikonu, a zda nabídnout odkaz na celé centrum nápovědy. Vypnuto ve výchozím nastavení.

Hodnocení konverzací

Hvězdná rating se spustí, když agent uzavře chat, když předávka skončí, nebo po nečinnosti období, které nastavíte. Vyberte jeden nebo dva spouštěče, ne všechny.

Post- Chat Survey

Krátký průzkum, kdy návštěvník uzavře chat, s vaší otázkou, zpoždění, načasování a čepice za návštěvu. Návštěvníci mohou také e-mailem nebo stáhnout přepis. Jedna otázka dostane odpověď; tři ne.

Post- Chat emailové šetření

Následné sledování emailem po ukončení konverzace, volitelně v jazyce návštěvník chatoval, s kontrolou nad zpoždění, předmět, intro, otázka, jak tlačítek štítky a díku- jste řádek.

Odpověď Zpětná vazba

Palce nahoru a palce dolů na každé odpovědi AI, krmit kvalitní palubní desky.

Archiv konverzací

Autoarchiv po dnech, automatické řešení po minutách ticha a odstranění archivovaných rozhovorů po dnech. Nastavuje se třetí místo retence, vedle General a sledování.

Školení znalostí

Na ničem jiném v Client Chat nezáleží.

Výcvik na znalostech internetových stránek

Proplíží vaše stránky, aby asistent může odpovědět z něj. Až deset startovní odkazy, limit stránky, hloubka odkazu, a vyloučené složky. Jeden URL lze testovat před celou plazit. Vyloučit Checkout, účet a admin cesty.

Vložení

API klíč a model, který mění stránky na vyhledávatelný význam spíše než klíčové slovo shoduje.

AI Znalostní organizátor

Jedno kliknutí a AI čte každý FAQ a plazil stránku a třídí je do kategorií.

FAQ, ověřené odpovědi

Otázkové a odpovědi páry zachází jako nejvyšší prioritu zdroje, každý se statusem, hmotnost a kategorie. Vyhledatelné, importable z JSON, a AI může psát je z popisu vašeho podnikání. Když asistent dostane něco špatně, napsat FAQ: to předčí plazí stránky, takže fix je okamžitý.

Pokročilé

Výkonnost a limity

Interval hlasování, omezení rychlosti zpráv a okno, maximální velikost připojení, pokusy o připojení na okno a povolená rozšíření souboru. Seznam rozšíření je bezpečnostní kontrola, držte ji pevně.

Realtime Delivery

Okamžitá zpráva a status doručení místo hlasování, přes Pusher, Ably nebo Firebase, s nouzovým volebním intervalu. Volba je v pořádku pro většinu stránek.

Spustit oznámení

Upozornění na zařízení pro agenty prostřednictvím Pusher Beams nebo _OneSignal, se zájmem o zařízení.

Webový push (VAPID)

Prohlížeč tlačit pomocí vlastních generovaných kláves bez třetího poskytovatele strana. Generované zde, ne v Nebezpečí zóny.

Sdílet hlas, video a obrazovku

TURN pověření tak volá připojit prostřednictvím restriktivních sítí, pomocí Cloudflare nebo Twilio pověření nebo vlastní TURN URL, uživatelské jméno a kreditní.

Zadat pracovní tok

Nastavení pracovního prostoru agenta spíše než nastavení návštěvníků: první odpověď SLA v minutách, uložené zobrazení fronty, klávesové zkratky a paleta příkazů, vyhledávání v rámci konverzace a zákaznické lístky v inspektorovi.

Zprávy

WhatsApp, SMS, Facebook Messenger, Instagram, Telegram, X přímé zprávy a LINE, každý s vlastním AI automatickou odpovědí přepínač, plus pojistný spínač pro AI akce na kanálech, debuci odpovědi a WhatssApp re- angažovací šablonu. Každý kanál přistane ve stejné inbox jako web chat.

Živý Widget Náhled v dolní části aktualizace karty, jak budete upravovat. Použijte ji místo přečtení své webové stránky zkontrolovat změnu.
Nastavení

Nastavení: Šablony

Každý emailOpsIQodešle, a jeden design, který je všechny rámečky. Upravit znění jakékoli zprávy, a psát šablony své vlastní pro cokolivOpsIQještě neposílá.

Jeden design, mnoho zpráv

V globální e-mailová šablona je obal: vaše logo, hlavička, karta, typografie a footer, s prázdným prostředníkem. Každá zpráva OpsIQ posílá je vložen do tohoto středu. Upravte obal jednou a každý e-mail se mění společně - odpovědi na tiket, účtenky Store, heslo reset, připomínky rezervace, PeopleOS dopisy, a cokoliv si napíšete.

Bez tohoto obalu nelze poslat e-mail z OpsIQ. Je aplikován na jediném místě, kterým každá zpráva zanechává zprávu, takže později přidaná zpráva nemůže minout.

Upravit zprávu

1
Otevřít nastavení, pak šablony

Zprávy jsou seskupeny podle toho, co jsou: vstupenky a portál, Store, sign- in a účet bezpečnost, rezervace, konverzace a oznámení, zprávy, PeopleOS dopisy, a vaše vlastní.

2
Stiskněte Upravit na ten, který chcete

Získáte předmět, bohatě textový editor s HTML zobrazení můžete přepnout na žít, a náhled dokončeného e-mailu přesně tak, jak příjemce obdrží - váš obal v ceně.

3
Použít proměnné čipy

Čipy nad editorem jsou fakta, která se mění: číslo tipu, odkaz na objednávku, čas rezervace. Klikněte na jeden, aby upustil, kde kurzor je.

4
Uložit

Pouze tato zpráva je zapsána. Zanechte pole prázdné a udržuje svou built- ve znění; pilulka na řádku vám řekne, v jakém stavu je.

💡
Proměnná, kterou nepoužíváte, se odstraní, když je odeslán email, a tak je linka, na které sedí. Proto rezervace bez telefonního čísla nikdy neposílá "Telefon:" s ničím po něm.

Napište si vlastní šablonu

Použijte to pro zprávu.OpsIQještě neposílá: oznámení o dodání, připomínka k obnovení, uvítací balíček, licenční klíč. Dostane vše, co dostane zpráva built- in - editor, náhled, pravidla plánu a váš globální design - a váš vlastní systém ji posílá přesAPI.

1
Stiskněte Přidat šablonu

Tlačítko je umístěno v horní části stránky Šablony a opět vedle "Vaše vlastní šablony".

2
Řekni to.

Název se stane odkazem, který vám systém odešle, zobrazený pod polem, jak jste zadali - například x_custom_delivery_booked. Nemůže se změnit poté, protože něco už bude posílat.

3
Řekni, co je pro a když je poslán

Tyto dvě řádky jsou to, co jste vy a vaši kolegové četli na stránce Templats za rok od nynějška. Mají hodnotu 30 sekund.

4
Seznam částí, které se mění

Komma- oddělené, například: název, kdy, tracking_linkKaždý se stane {{variable}} můžete se dostat do předmětu nebo zprávy, a váš systém vyplní v čase odeslání.

5
Napište předmět a zprávu

Jednoduché věty jsou jemné - řádek přestávky se stávají odstavce. Napište pouze MESSAGE; logo, hlavička a footer pochází z globální šablony.

6
Vytvořit, pak otevřít

Objevuje se v "Vaše vlastní šablony" s plným editorem a živý náhled, stejný jako každá budova-ve zprávě.

⚠️
Write the message, not the whole page. A template that carries its own <html> document is refused, because a whole document would slip past the wrapper and your email would go out with none of your branding on it.

Posílání vlastní šablony

Dva výzvy na produkt API. Volající dodává příjemce a proměnné - nikdy formulaci a nikdy design, takže integrace nemůže posílat neznačkovou poštu přes váš pracovní prostor ani tiše měnit to, co říkáte svým zákazníkům.

Seznam šablon a proměnných, které každý z nich má
POST /api/v1.php
Authorization: Bearer YOUR_API_KEY

{ "action": "email.templates.list", "mine": true }
Pošli to.
POST /api/v1.php
Authorization: Bearer YOUR_API_KEY

{
  "action": "email.template.send",
  "template": "x_custom_delivery_booked",
  "to": "[email protected]",
  "to_name": "Ada Obi",
  "variables": {
    "name": "Ada",
    "when": "Thursday 11 September, 14:00",
    "tracking_link": "https://track.example.com/AB12"
  }
}
💡
Variabilní názvy jdou BEZ rovnátek v telefonu API. email. templats. list je vrátí přesně ve tvaru, ve kterém je předáte.

Šablony a váš plán

Zpráva, na kterou nemáte službu

Pobyty jsou uvedeny s odkazem "Viz plány" a žádný editor - takže můžete vidět, co OpsIQ by odeslat, a co odemyká.

Vlastní šablony

Vyberte si službu šablonu patří, když ji vytvoříte, nebo nechat na každém plánu. Pracovní prostor bez této služby vidí, že je uveden, ale nemůže editovat nebo odeslat.

Sign- in, bezpečnost, oznámení a emailový test

Nikdy neplantoned. Neschopnost opravit heslo resetovat vlastní administrátoři obdrží by byl špatný druh zámku.

Otázky

Mohu změnit návrh pouze na jednu zprávu?+

Ne, a záměrně. Design je obal a je sdílen, což je to, co udržuje každý email rozpoznatelně vaše. Co je per- zpráva je formulace, panel faktů a všechny tlačítka přidáte uvnitř zprávy.

Co se stane s mým textem, když zmáčknu Reset?+

Reset se objeví pouze na globální šabloně, a nahrazuje to, co je v editoru s built- v designu. Nic není psáno, dokud stisknete Uložit, takže můžete zavřít dialog změnit svůj názor.

Omylem jsem vymazal jednu z mých šablon.+

Odstranění trvá dva kliknutí přesně z tohoto důvodu - první paže a řekne vám, co přestane fungovat. Pokud je již pryč, vytvořit znovu se stejným názvem a stejný odkaz se vrací; pouze text musí být přepsán.

Může konektor nebo add- on přinést své vlastní šablony?+

Ano. Balíček přepravuje mail_templates.json ve svém vlastním adresáři a jeho zprávy se objevují pod "Vývojářské šablony" se stejným editorem, náhledem, obal a plánovací branou. Vaše znění upravuje patří do vašeho pracovního prostoru a přežívá aktualizaci balíčku.

Nastavení

Nastavení: OpsIQ Psaní

Vstupenky odpověděl písemně: automatické odpovědi, rodné letenky systém, eskalace, pracovní hodiny, směrování a zákazníků- čelí e-maily.

Automatická odpověď

Zobrazit tlačítka OpsIQ

Přidá psací pomocná tlačítka pro vaše agenty v admin.

Povolit automatické zodpovězení tipu

Vyvolá nové vstupenky a odpovědi a odpoví na ně po zpoždění. Začněte s tím a recenzi návrhů na týden. Refundy, zrušení a změny přístupu by měly vždy oslovit člověka.

Oddělení pro automatickou odpověď

Které oddělení auto- odpověď může odpovědět v. Vše, co není uvedeno je ponecháno pro člověka, což je bezpečný výchozí.

Plán zodpovědného zpoždění (minuty)

Jak dlouho čekat, než automaticky odpověď odešle. Okamžitá odpověď se čte jako robot, několik minut se čte jak rychlý tým.

Max AI odpovědi na letenku podle oddělení

Kšiltovka, například Billing 1 a podpora 3Bez čepice se může zaplést nit.

Délka odpovědi, status a totožnost

Maximální psaní tokeny, stav vstupenky po odpověď a po eskalaci, a které admin účet automatické odpovědi jsou připisovány. Použijte jasně pojmenovaný účet, aby personál mohl říct AI odpovědi od lidí.

Původní provoz jízdenek

Systém původního tipu

Systém vstupenek zabudovaný do OpsIQ, pro instalace bez externí helpdesk.

Přijíždějící e-mail do rodné vstupenky

Mění příchozí e-mail na lístky. OpsIQ dodává cílový parametr URL, auth token, script path a PHP binárně. Cokoliv, co může poslat do tohoto koncového bodu, může vytvářet tipy, takže udržet token tajemství.

Víceotáčecí odpovědi a zpoždění a decount

Zda AI stále odpovídá, jak konverzace pokračuje, a zda to čeká klidné okno, takže tři rychlé zprávy dostat jednu zvažovanou odpověď. Tiché okno je nejlepší jednotné nastavení pro automatické odpovědi pocit uvažování.

Portál veřejné podpory

Stránka, na kterou může někdo zvýšit a sledovat jízdenku s volitelnou vítací linkou. Jeho adresa a vzhled jsou nastaveny v záložce Portal Support.

Formát čísla tipu

Kolik náhodných písmen se objeví v generovaných číslech tipu.

Email zákazníci ve svém vlastním jazyce

Ticket e-maily podle jazyka zákazníka. Personál e-mail nikdy nemění jazyk: oznámení, oddělení upozornění, instruktáž a plánované zprávy zůstávají ve vašem jazyce systému.

Potvrzení a potvrzení

Pevné potvrzení nových tipů, plus potvrzující zprávy při otevření tipu, při ponechání zpětné vazby a při uzavření tiketu, každý s živou náhled. K dispozici je také globální obal e-mailové šablony a odkaz za zobrazení tlačítka tipu.

AI screening spamu

Screens vstupenky z neznámých odesílatelů, a může volitelně přesunout podezření spam na vlastní pěst. Nechte automatické odjezd, dokud jste sledovali jeho úsudek.

Automatické-close volnoběžné tipy

Uzavře jízdenku po několika klidných dnech. V závěrečné zprávě řekněte zákazníkovi, jak se má znovu otevřít.

Pracovní doba (kalendář SLA)

Časová zóna, otevírací a zavírací doba, pracovní dny a svátky pro první-odpověď a rozlišení časovače. Samostatný harmonogram od pracovní doby pod klientem chat.

Automatické přidělení nových tipů

Automatické přiřazení, volitelně pouze agentům, kteří jsou online, s dovednostmi agenta a citlivostí na zápas pro směrování založené na dovednostech.

Navrhnout duplikát tipů

Spots když zákazník otevře lístek blízko k tomu, který již má, s nastavitelnou citlivostí na zápas.

Průzkum spokojenosti po uzavření

Emails a survey day after closing. Výsledky se zobrazí na stránce CSAT.

Upozorňovat oddělení e-mailem

Emailuje oddělení, když nová jízdenka dorazí. Příjemci jsou členové tohoto oddělení, ne adresa poštovní schránky oddělení, což je vstupenky na příchozí adresu.

Co může Al číst

Přístup k údajům o klientech AI

Master switch plus individuální oprávnění pouze pro read- only pro shrnutí profilu klienta, faktury, transakce, kreditní bilance, produkty a služby, domény, připojené servery a přehled účtu vysoké úrovně. Začněte s profilem shrnutí a přidejte kategorie jako odpovědi je třeba.

Eskalace a znalosti

Povolit eskalaci vstupenek AI

Přesune jízdenku do lepšího-vhodné oddělení před odpovědí. Vyberte si povolená oddělení, kontrola zpoždění, a můžete napsat vlastní eskalační upozornění pokyny. Zapněte vnitřní eskalaci poznámka, aby váš tým vidět, proč se lístek přesunul.

Nastavení znalostí

Zda odpovědi používají zákaznický jazyk, zda čerpávají na plazivé odkazy a FAQ, zda AI čte obraz a PDF přílohy, režim odpovědi na znalosti, ať už dovážené JSON používají znalosti a zda se mohou objevit zdrojové odkazy. Používejte prolezlé odkazy a FAQ by měly být zapnuté, nebo AI je odhad.

Zastavit auto- odpověď po lidské odpovědi

Jakmile personál odpoví, AI přestane odpovídat na ten lístek.

Pokyny k lístku a e-mailu

Free- text pokyny tvarování tón a obsah pro každou odpověď, s načtením pracoval příklad. Buďte konkrétní o tom, co AI nesmí nikdy dělat.

Importovat znalosti JSON

Nahrát nebo vložit soubor znalostí JSON pro asistenta.

Studio tlačítek

Plná designérka pro tlačítko na míru: styl zobrazení, velikost, štítek, ikona, tvar, minimální šířka, styl pozadí s primárními a sekundárními barvami, úhel sklonu, hranice, poloměr rohu, stín, typografie, vycpávání, animace, pohyb a barvy vznášedla a zaostřovací kroužek, plus vlastní CSS box pro cokoliv, co ovládací prvky nepokrývají.

Nastavení

Nastavení: Portál podpory

Stránka, kde lidé zvyšují a sledují jízdenky a čtou vám nápovědy. Tato záložka kontroluje, jak je dosaženo a jak se zákazníci přihlásí; jeho vizuální design probíhá v Support Portal Studio.

Portálový ateliér nebo vestavěný portál vstupenek: který chci?

Jedná se o dva různé produkty a lidé je neustále míchají. Řeší různé problémy a běžet oba dohromady je normální.

Podpora Portálové Studio: místo, kam posíláte zákazníky

Studio navrhuje kompletní podpora stránky, které OpsIQ hostuje pro vás. Má vlastní webovou adresu, nebo svou vlastní doménu, a nese celý self-servisní zkušenosti: pomoci články s vyhledáváním, formulář žádosti, historie vstupenek, zákaznický sign- in a asistent. Vyberte šablonu, práci přes téma, Navigace, Rozvržení, znalosti, Footer, Značka, Vstupenky, asistent, Form a CSS, náhled na plochu, tablety a velikosti telefonu, pak publikovat.

Používejte ji, když Chcete jednu značkovou destinaci můžete ukázat každý zákazník na, a vy byste raději nepostavit nebo udržovat podpůrnou oblast uvnitř svých vlastních webových stránek.

Vložený portál vstupenek: vstupenky na vaše vlastní stránky

Vložené listy pouze zážitek z vstupenky na stránce vašich vlastních webových stránek. Zákazníci otevírají, sledují a odpovídají na žádosti o podporu, aniž by někdy opustily vaše stránky, a vaše vlastní hlavička, navigace a design zůstat přesně tak, jak jsou. Nastavte rozložení, vzhled a pravidla přístupu v widget stavitel, náhled výsledku, pak zkopírujte vložený snippet do vaší stránky.

Používejte ji, když již máte webové stránky nebo aplikaci s vlastním designem, a chcete podporu, aby se stalo uvnitř něj spíše než předání zákazníka na jinou adresu.

Krátká verze

Studio staví místo, kam posíláte zákazníky. Vložené přináší lístky tam, kde jsou již vaši zákazníci. Mnoho podniků běží jak, vkládání widget vstupenky v jejich oblasti účtu pro in- kontextové žádosti při zachování hostitelského portálu jako plné self-service destination s články a vyhledávání. Jsou nezávislé přepínače.

Adresa a přístup

Režim přístupu

Zda je portál otevřen komukoliv nebo omezen na zákazníky značeného čísla. Otevřené portály dostanou více vstupenek a spamu.

Volby rozložení

Zda portál a nápověda centrum sdílet jednoho hrdinu nebo použít dva, které navigace a footer objeví na obou površích, a štítek navigační sekce.

Portálová adresa

Uživatelé adresy. Vyberte si jméno a OpsIQ zobrazí výsledný portál a odpovídající adresy centra nápovědy. Změna později přeruší odkazy, které jste již odeslali.

Vaše vlastní doména

Slouží portálu z domény, kterou vlastníte, jako je podpora. Your domain. com.

Portál vloženého vstupenky

Přepínače na drop- in widget popsané výše, a otevře vložené stavitel, kde si vyberete rozložení, vzhled a přístupová pravidla, náhled výsledku a kopírovat snippet pro vaši stránku. To není Portal Studio: Studio navrhuje hostovaný portál, to dává vstupenky uvnitř vlastního webu. Oba mohou být uvedeny najednou.

Jak se zákazníci přihlásit

Toto jsou vaše zákazníky sign- in volby. Sign- v Personal je nakonfigurován v Nastavení, Bezpečnost.

Metody sign- in

Které volby se objeví na stránce sign- in. Připojení a emailová sign- v práci automaticky.

Sociální signál

Poskytovatelé spotřebitelských účtů, každý potřebuje ID a tajemství klienta, s přesměrovanou adresou poskytnutou OpsIQ pro registraci u tohoto poskytovatele.

Jednoznačný (OIDC)

Zákazník sign- in prostřednictvím poskytovatele identity, s emitentem URL, ID klienta, tajné a volitelně povolený e-mailový doménový seznam.

Zákazník SAML 2.0

U SAML ekvivalentní. OpsIQ dodává odpověď ACS URLa SP ID entity; dodáváte ID, sign- in a sign- out URLs, X.509 certifikát a volitelné názvy atributů. Turn SAML v Sign- in metodách, nebo se neobjeví.

Bezproblémový signál z vaší aplikace

Podepsaný hluboký odkaz, takže zákazník již přihlásil do vaší aplikace přistává v portálu bez přihlášení znovu. OpsIQ dodává podpisové tajemství, portál URL a klíč pracovní plochy, kompletní trasa pro váš jazyk (PHP, Laravel, WordPress, WHMCS, Node.js, Flask, Django, .NET, Rails, Java, Go, a na self-hosted installs OpsIQ server sám), step-by- step setup notes, a generátor pro podepsaný zkušební odkaz. Použijte generátor před zapsáním jakéhokoliv kódu.

Jak funguje trasa

Váš zákazník klikne na odkaz Podpora, který ukazuje na trase. Trasa zjistí, že zákazník přihlásil do vaší aplikace (host je poslán na přihlašovací a zpět), čte tajemství ze svého serveru, podepíše jednominutový token, který vyprší za dvě minuty, a přesměruje na portál s no- referenrer a no- store hlavičky, takže token není cached nebo unikl.

Vlastní tlačítko Portál

V Portal Studio, Sign-in stránce, zapněte Pomocí mé webové stránky přihlášení a nastavit Vaše přihlašovací stránku URL Portál přidává opsiq_portal_return (na stránce, na které byl zákazník); trasa ji vyznamenává pouze tehdy, je-li uvnitř vaší adresy portálu a přináší zákazníka zpět, podepsal.

WHMCS

Nic k napsání: WHMCS háček ze vzdálených stránek již přihlašuje klienty do portálu a zpracovává zpáteční adresu. Nastavte Přihlašovací stránku URL Na vaši WHMCS Přihlášení klientské oblasti.

Odhlásit se všude.

Přihlášení z portálu také přihlašuje zákazníka z vaší aplikace.

Příjem a ochrana

Pole formuláře žádosti

Které strukturované pole formulář žádosti sbírá. Každý další pole ztrácí podání, takže se zeptejte pouze na to, co potřebujete k třídění.

Ochrana proti spamu a zneužívání

Medvídek a omezení sazby vždy chrání veřejný formulář. Na vrcholu můžete zablokovat jednorázové e-mailové adresy, přidat vlastní blokované domény, a přidat CAPTCHA pomocí Google reCAPTCHA nebo Cloudflare Turnstile. reCAptCHA znovu používá klíče již nastavené v Nastavení, Bezpečnost; Turnstie klávesy jsou zadány zde.

Portálové analytiky

Předem-pouze shrnutí aktivity portálu za posledních třicet dní.

Nastavení

Nastavení: Licence, zóna Cron a nebezpečí

Skupina System, plus ovládání přístupu týmu, které rozhoduje, kdo se podívá na záložku Nastavení.

Přístup k týmu a oprávnění

Per- admin oprávnění

Každý admin dostane explicitní soubor oprávnění, která zahrnují přístup k chatu, které sekce Nastavení mohou upravovat, a jejich oddělení. Každý, kdo má plnou roli správce vždy má každé svolení. Oprávnění nastavení rozhodnout, které karty osoba vidí, tak udělte nejtěsnější sadu, která jim umožní pracovat.

Licence

Ukazuje váš současný průkaz, jaký máte nárok a jaké je jeho postavení.

Nastavení cron

Self- hosted installs only. Na cloudu OpsIQ běží pro vás plánované úkoly a karta je skryta. Jeden řádek crontab řídí každý plánovaný úkol: tiket auto- odpověď, eskalace směrování, výměnná -rate refresh, poštovní hlasovací a konektorové synchronizace.

1
Kopírovat řádek

Karta zobrazuje přesnou řádku crontab pro váš server se správným PHP binárním již zvoleným.

2
Přidat to do crontab

Spustit crontab -e jako uživatel, který běží PHP a vložit jeden řádek. Na cPanel použít nástroj Cron Jobs místo.

3
Ověřit

Během minuty se rozsvítí tlukot srdce, teď použijte Run a otestujte ho, raději než abyste čekali.

Obraz tlukot srdce ukazuje poslední běh, dobu trvání a to, co bylo zpracováno jak pro automatickou odpověď frontu a e-mailové a konektorové ankety. Varuje, když poslední spuštění přišlo z manuálního webového tlačítka spíše než skutečný server cron, a když srdeční tep je stagled.

Nebezpečí

Smazat všechna sledovací data

Prostírá vše, co OpsIQ shromáždil nebo generoval. Zaškrtněte, co mají obsahovat a zadejte potvrzovací frázi přesně. Nastavení a konfigurace stránek, blokované adresy, vše, na čem váš tým napsal (znalostní základna, FAQ, překlady, portální návrhy, definice akce) a potvrzení souhlasu jsou zachovány.

Očistit data starší než

Stejný průzkum omezený na záznamy starší než 30, 60, 90 nebo 180 Pro automatické zadržení valení použijte místo toho retenční hodnoty v obecné a sledovací jednotce a nechte to provést plánovaný úkol.

🚫
Exportovat zálohu z Nastavení, Obecné před použitím cokoliv v Nebezpečí zóny. Tyto akce nelze odčinit.
Nastavení

Správa vašeho týmu

Pozvat členy týmu a přiřadit role k ovládání, kdo může mít přístup k čemu.

Tým
Tým a odděleníTýmová obrazovka: stůl administrátorů s kontaktem, rolí odznak (majitel, Full Admin, Agent) a oddělení, ke kterým každý může přístup.Tým a oddělenípracovní prostorTým a oddělení+ Uložit admin uživateleKONTAKTÚlohaODDĚLENÍAO[email protected]Ada OwusuCity in California USAMajitelVšechnyKM[email protected]Kojo MensahCity in California USAKompletní adminVšechnyRT[email protected]Rita TettehCity in New York USAAgentÚčtováníSB[email protected]AgentPodpora1TEAMPozvat a spravovat administrátory2ROLESMajitel · Full Admin · Agent3SCOPEDPřístup do oddělení
Skutečný týmový obraz: každý admin s jejich kontaktem, rolí a odděleními, které mohou oslovit, agenti prohledáni, majitelé plní.

Role

Majitel

Plný přístup včetně licence, fakturace a nebezpečné zóny.

Kompletní admin

Plný přístup kromě licence a nebezpečné zóny. Může spravovat administrátory.

Agent

Pouze pro přidělenou sekci, lístky, chaty a analytiku.

Pozvaní členové týmu

1
Jdi do týmu.

Přejít do týmu v postranní čáře.

2
Klikněte na Pozvat

Zadejte e-mail člena týmu.

3
Nastavit roli

Vyberte si majitele, Full Admin, nebo Agent.

4
Přiřazování oddělení

Pro agenty vyberte přístupná oddělení.

5
Poslat pozvánku

Obdrží email s linkem na nastavení.

Nastavení

Výkonnost týmu

Jak se váš tým podpory provádí. Přístup je na základě povolení, ne podle role: View oprávnění otevře stránku, řízení svolení odemyká cíle, QA a kolegium-identifikace čtení, a reward- financial povolení je to, co přidává kartu Odměny. Tým vedení může být uveden kterýkoli z nich, aniž by se stal úplným administrátorem.

Výkonnost týmu
Výkonnost týmuObrazovka týmové výkonnosti: agenti zařazeni do kategorie složeného bodového řádku, CSAT a zůstatek odměny s tlačítkem Pay za řadu.Výkonnost týmupracovní prostorVýkonnost týmuZÁSTUPCESkóreCSATROZVAHARTRita TettehCity in New York USA4.8$42PlatitSBSam Boateng4.5$28PlatitKMKojo MensahCity in California USA4.2$15PlatitAOAda OwusuCity in California USA4.9$51Platit1SCOREDKompozitní výkon2CSAT & LOADRatingy + objem3REWARDSZůstatky platebního zprostředkovatele
Skutečná týmová obrazovka: každý agent skóroval na hlasitosti a CSAT, s odměnou zůstatek můžete vyplatit za řadu.

Jak je stránka organizována

Tým výkon je pět karet. Každý odpovídá na jinou otázku, a jsou objednány tím, jak naléhavě obvykle potřebují vás.

Středisko pro velení 01

Stav živé fronty, výsledky zákazníků proti vašim cílům, jak byla kapacita vynaložena, situace, které vyžadují rozhodnutí, a index per--spoluhráčů upravený dokázanýmzpůsobem.

02 Spoluhráči

Leaderboard, uznání (nejvíce zlepšené a pruhy), questy, a opt- v kontrole pro ty, kteří mohou vidět pořadí.

03 Kvalita

Scorecards, zaznamenané hodnocení, dohoda recenzenta opravená o Chance- opravené recenze, posun recenzentů a spory o důkazy.

Odměny 04

Hodnota tokenu, výplatní nároky a přidělení stanoveného období: autorizovat financovaný strop, přezkoumat náhled, dokončit.

05 Historie

Jak se pracovní prostor pohyboval v čase: trendová metrika s grafem a 28-denní heatmap ukazující, kdy tým skutečně pracoval. Každá karta se skrývá, dokud není dostatek historie k nakreslení.

Odbodováno není nula

Spoluhráč bez dostatečného zpracovaného objemu - nebo jehož rozměry s důkazy tvoří méně než polovinu nastavené hmotnosti - je zobrazen jako Unscored. Jejich skóre, hodnost a pásmo jsou prázdné a jejich rozpad je skryt. To je záměrné: vykreslování chybějící měření jako nula staví někoho na spodní část žebříčku pro mít klidný týden. Prahové hodnoty důkazů jsou konfigurovatelné pro pracovní prostor v cílech & bodování.

Oba důkazy prahy dělat různé práce a to stojí za to udržet je od sebe. Minimální zařízené rozhodne, zda někdo je bodován vůbec. Minimální hodnocení nemá vliv na skóre: rozhoduje o ocenění a odměňování způsobilosti. Takže spoluhráč může být plně skóroval a zařadil a stále není způsobilý pro toto období, protože příliš málo zákazníků hodnotil je.

💡
Každá postava je oskenována do pracovního prostoru, který sledujete, a časového rozsahu, který si vyberete. Spoluhráč pracující ve dvou oddělených pracovních prostorech má nezávislý záznam v každém. Dvě výjimky stojí za to vědět: web GROUP je jeden pracovní prostor, takže jeho členské domény jsou měřeny společně; a All- weby zobrazit záměrně měří vše najednou.

Index výkonnosti

Kompozice pěti rozměrů, každý měřený proti cíli jste nastavit spíše než proti kolegům, pak tažen směrem k středu, když důkazy za ním je tenký. Všimněte si směru: úprava pohybuje figurku směrem 70, takže tenké vynikající skóre se stáhne dolů a tenké špatné skóre je vytaženo nahoru. Špatný první týden na čtyřech rozhovorech není ustálený verdikt buď. Jako důkaz hromadí upravený údaj konvertuje na surový jeden.

Kvalita

Spokojenost zákazníků z ověřené zpětné vazby. Doplňují výsledky QA skóre tam, kde existují a jsou řízeny.

Reakce

První reakční doba na percentilech P50 a P90, proti vašim cílům.

Usnesení

Čas rozlišení a jednodotyková rychlost rozlišení.

SLA

Nahrávání proti SLA, které jste nakonfiguroval, plus riziko a narušení počtu.

Správcovství

Znovu otevřít a převádět sazby - práce, která se vrací.

💡
Váhy jsou konfigurovatelné a relativní; nemusí být zcela 100. Chybějící důkazy mohou pouze snížit index, nikdy zvýšit - plná nakonfigurovaná hmotnost zůstává ve jmenovateli.

Kapacita a produktivní doba

Okupace, produktivní čas, řešen za výrobní hodinu a online podíl okna. Využití není záměrně hlášeny: potřebuje plánované hodiny jako jmenovatel, OpsIQ nemá rozpis nebo posun zdroj, a nahrazen jmenovatel by byl odhad nosí procentuální znaménko. To zní jako nedostupný s tímto důvodem připojený.

⚠️
Hlášení pouze. Okupace říká, jak byl čas strávil, nikdy, jak dobře to bylo vynaloženo, a to nikdy peníze, brány nebo velikosti platby. Spoluhráč bez handle- time důkazy se čte jako nedostupný, nikdy jako nula.

Zajištění kvality

Scorecard je rubrika recenzenti skóre skutečné konverzace proti. Pouze publikovaná verze může získat hodnocení, a zveřejnění nové verze nikdy přepíše to, co již bylo vstřelil. Přezkum je důkaz o jednom rozhovoru, ne verdikt na osobu.

Dohoda o přezkumu

Hlášen jako "Chance- corrected statistika" (Cohen 's a Fleiss' kappa), není hrubý podíl dohody. Dva recenzenti, kteří projdou všechno dohodnout 100% času, zatímco nesou žádné informace.

Přezkumník drift

Zda recenzent skóre systematicky těžší nebo měkčí než jejich kolegové na stejné konverzace - srovnání se zbytkem panelu, není trend v čase. Potřebuje interakci přezkoumán nezávisle více než jednou.

Spory

Spoluhráč může formálně zpochybnit důkazy zaznamenané o nich. Otevřené spory bloky reward- období dokončení, dokud je vyřešen.

Self- review

Spoluhráč nemůže předložit hodnocení sebe sama.

⚠️
AI- hodnocené hodnocení nemůže ovlivnit plat, dokud je zveřejněna kalibrace ukazuje model souhlasí s lidskými recenzenty dostatečně úzce, měřeno kappa proti minimálnímu vzorku. Otevřená brána znamená, že model souhlasí se lidmi dostatečně blízko počítat - to nikdy neznamená, že je model správný.

Uznání

Samotný ranking má zdokumentované selhávání režimů: metrická hra, vyhoření, a veřejné zahanbení toho, kdo je poslední. Tři alternativy sedí vedle něj.

Nejvylepšenější

Měřeno proti předchozí rekord spoluhráče, nikdy proti kolegům, s zmenšením tak malý jmenovatel nemůže koupit výhru.

Proudové sítě

V jednotlivých obdobích, která splňují pevný, deklarovaný bar - průměrný rating, zpracovaný objem, počet ratingů a negativní- zpětná vazba, všechny absolutní čísla. Každý může držet pruh současně, takže to nevytváří žádné pořadí, a kolega s výjimečným měsícem nemůže zlomit váš.

Opt- in ranking

Vypnuto standardně. Spoluhráč vždy vidí svůj vlastní index; zda vidí kolegy je rozhodnutí pracovní prostor. Percentile kapely mohou být zveřejněny místo absolutních pozic.

💡
Uznání se nikdy nedotkne peněz. Pruh nemůže financovat výplatu nebo rozbít jeden, a nejvíce zlepšené není kategorie ocenění.

Úkoly

Cíl, ke kterému tým pracuje, měřeno proti pevnému deklarovanému baru spíše než proti sobě navzájem - takže každý může vyčistit stejné hledání ve stejném období.

Oblast působnosti a kadence

Individuální nebo týmová; jednorázová, opakovatelná nebo sezónní s explicitním oknem.

Kritéria

Rozhovory řešeny, ratingy obdržené, aktivní dny, průměrný rating, nebo negativní zpětná vazba. Všechny absolutní - žádný metrický, jehož hodnota závisí na tom, co kolegové udělali.

Ochránce kvality

Požaduje se na každé výpravě s objemem cíle. Trefit počet, zatímco kvalita padá pod podlahu brání hledání spíše než dokončit, a to je uvedeno jako zadržený, ne nedokončený.

Opakovací limity

Víčko na dobu neurčitou, poháněné nejpomalejším kritériem, plus volitelné chlazení před tím, než se může počítat opakování.

Týmové questy

Sdílený pokrok bez předspoluúčasti publikovaných, takže týmová výprava se nemůže stát žebříčkem.

Trénování

Trenérské zasedání je rekord, ne chat. Má trenér, spoluhráč je koučování, plánovaný čas, dohodnuté body k hovoru, a shrnutí napsané poté. Skutečné chaty, lístky a QA hodnocení jsou připnuty k tomu jako důkaz, takže konverzace je ukotvena na práci, která skutečně se stala spíše než na zapamatovaný dojem.

Řečnické body

Dohodnuto před zasedáním, takže spoluhráč není vchází do překvapení.

Důkazy

Chaty, vstupenky a QA hodnocení připojené k relaci. Pin ukládá odkaz - typ a ID - není kopie, takže vždy ukazuje na živé záznamu. OpsIQ neověřuje id před přijetím.

Akční body

Každý s vlastníkem a termín splatnosti. Položka po datu je zobrazena jako zpožděný - odvozený stav, ne status, který si někdo musí pamatovat nastavit.

Soukromý vzkaz

Trenérův vlastní vzkaz. Kolega, který je koučován, ho nikdy nemůže přečíst - ne jako agent, ne jako manažer, ne jak majitel. Tento šek běží před každým dalším povolením a nelze jej přepsat.

Kdo může vidět sezení

Trenér, spoluhráč a kdokoliv s výkonnostním povolením vedení týmu. Nikdo jiný, včetně ostatních spoluhráčů ve stejném oddělení.

Audit

Každý výtvor, aktualizace, pin, odpinutí a dokončení je zaznamenáno s tím, co se změnilo, kým.

💡
Koučování je záměrně odděleno od bodování a od peněz. Sezení nemění ničí index, neruší odměnu, a neobjevuje se na žebříčku.

Odměny a odměny

Nahrávaná aktivita převádí na žetony s peněžní hodnotou, kterou nastavíte. Cesta k platbě je záměrně pomalá a každý krok se zaznamenává.

1
Nastavit symbolickou hodnotu

Kolik žetonů se rovná kolik peněz a jakou má každá činnost hodnotu.

2
Autorizace financovaného stropu

Po uzavřenou kalendářní dobu, celý správce uvádí maximální žetony, které může platit. Uložení formuláře nastavení nepovoluje rozpočet, a nemůže změnit strop, který již byl povolen.

3
Přezkoumat náhled

Příjemci, rezervní a důvod, proč je někdo nezpůsobilý. Otevřené důkazy tento krok blokují.

4
Dokončit

Přídělový poměr je trvale zaznamenáván s důkazy za ním. Období, které alokované nic nelze zrušit a re- spustit přímo. Ten, který vydal žetony musí být obrácen první: OpsIQ píše kompenzační záznam proti každé peněžence a nikdy smaže originál, takže kniha stále ukazuje, co se stalo a proč, a teprve pak je období uvolněno. Odvrácená verze odmítá, pokud někdo již vyinkasoval více než částka byla získána zpět, a jména, kdo a tím, jak moc.

⚠️
Způsobilost vyžaduje ověřenou zpětnou vazbu od zákazníků. Kvalita AI skóre může doplnit, že úsudek, ale nikdy nahradit, a spoluhráč ukázal jako Unscore není způsobilý. Každý přispěvatel je omezen na 25% nad jejich očekávaný podíl období, takže jeden velmi vysoký objem měsíc nemůže absorbovat celý rozpočet.
💡
Majitel účtu se nepodílí na odměňování ani na symbolických odměnách, bez přepínače: povolují financovaný strop a dokončují každý příděl a není nad nimi nikdo, kdo by schvaloval, co by si sami platili. Jejich práce je měřena, bodována a hodnocena na tabuli přesně jako kdokoliv jiný.

Všichni ostatní se účastní ve výchozím nastavení, tým vede a spolumajitelé zahrnuty. Chcete-li někoho vynechat, otevřít je v Team & Departments a vypnout Takes část v odměňování a možnosti odměny. Jejich práce je stále skóroval a ukázal, že přestanou být kandidátem od tohoto bodu, a nic již dokončeno není dotkl.

⚠️
Nikdo neschválí peníze pro sebe. Protože lidé, kteří se mohou zúčastnit jsou také lidé, kdo mohou schválit výplaty, OpsIQ odmítá výplatu nebo úvěr do své vlastní peněženky, placení vlastního nároku, dokončení období, ve kterém byste byli placeni, a dokončení ocenění byste vyhráli. Další plný správce nebo majitel musí udělat. Platit všechny pohledávky přeskočí svůj vlastní a hlásí to jako přeskočil, ne selhala.

Kdo vidí a dělá co

Zobrazit výkon týmu

Rada, živý stav, kapacita a přehled kvality pracovního prostoru.

Správa týmového výkonu

Cíle a bodování, exporty, skóre a hodnocení QA, koučování, questy a čtení, které nesou údaje o kolegiích, jako jsou per- admin historie a historii ocenění.

Zobrazit odměnu týmu finance

Zůstatky, peněžní hodnoty, směnky a platební reference - oddělené od důkazů o výkonnosti, protože jsou v blízkosti výplaty.

Pouze úplný správce

Každá peněžní mutace: vyplácení odměny, placení nebo zamítnutí pohledávky, schválení rozpočtu, dokončení, zrušení či zvrácení přídělu a stanovení sazby token- to- cash. Ty nemohou být delegovány udělením povolení.

Používat ji spravedlivě

Index výkonnosti je řídící důkazy, ne automatické rozhodnutí o zaměstnání. Otevřete zdroj konverzace za číslem před jednáním na něm, a zvážit složitost případů, plány, dovolenou a dostupnost potřeby. Jeden těžký týden nevypadá nic jako trvalý vzor.

Nastavení

Vaše stránky (pracovní prostory)

Stránky (pracovní prostory) vám umožní spravovat více webových stránek z jedné OpsIQ instalace. Každý má svůj vlastní sledování, AI, konektory a přístup do týmu.

Stránky
Vaše stránkyDisplej stránek: seznam pracovních míst, každý s doménou, typ, konektor, status odznak a tlačítko Otevřít, plus Add- nové stránky.Vaše stránkypracovní prostorVaše stránky+ Přidat nový webSshop.acme.comeCommerce · Shopify konektorAktivníOtevřítHhost.acme.comHosting · WHMCS konektorAktivníOtevřítBblog.acme.comObsah · žádný konektorNastaveníOtevřít1MULTI-SITEJeden pracovní prostor na každé místo2ISOLATEDData nikdy nemísí3PER-SITEVlastní nastavení a konektory
Skutečná obrazovka Stránky: každé místo je vlastní izolovaný pracovní prostor (vlastní doména, konektor a nastavení), přidaný a otevřený z jednoho seznamu.

Vytvoření webu

1
Přejít na připojené stránky

Přejít na propojené stránky.

2
Přidat nový web

Zadejte název, doménu a popis.

3
Kopírovat klíč k webu

Každý web dostane unikátní klíč (site_xxx) pro widget snippet.

4
Nastavit nezávisle

Každá stránka má své vlastní AI, konektory a nastavení.

Kolik stránek můžu mít?+

To záleží na tvém plánu, zkontroluj si detaily.

Nastavení

Licence a plán

Vaše OpsIQ licence kontroluje funkce, limity stránek a AI kreditní zůstatek.

Licence
Licenční centrumLicenční centrum OpsIQ: plán, odznak aktivního stavu, klíč k maskované licenci, měřič AI- kreditní a tlačítko Force-Remote-check.Licenční centrumpracovní prostorOpsIQ licenční centrumPlánPodnikáníStavAktivníKlíčOPSIQ-••••-••••-2F9CÚvěry AI$68 vlevoSilová dálková kontrola1PLAN & STATUSAktivní, na první pohled2KEYHMAC- cachled lokálně3CREDITSAI balance & limit
Skutečné licenční centrum: váš plán a aktivní stav, maskovaný klíč, váš AI- kreditní zůstatek a one-click force re-verification.
Licenční klíč

Zadejte v Nastavení > Licence. Validováno proti licenčnímu serveru OpsIQ.

Rychlostní rychlost / ověření

OpsIQ běžně čte podepsanou místní licenční cache a v případě potřeby obnovuje validaci. Použijte Silou dálkovou kontrolu, pokud potřebujete okamžitý výsledek; diagnostika identifikuje DNS, HTTPS nebo server- time problémy.

Plán

Určuje dostupnost a limity.

Mezní hodnota místa

Maximální počet pracovních míst.

Úvěry AI

Pokud používáte Managed AI, váš kreditní zůstatek je uveden zde.

Konec platnosti

Před vypršením doby platnosti se prokluz, aby se zabránilo přerušení služby.

Co se stane, až mi vyprší licence?+

Sledování, jízdenky a CRM pokračuje. AI má pauzu až do obnovení. Data jsou zachována.

Nastavení

Profil, heslo a ověření dvou faktorů

Každý administrátor si může zachovat svou vlastní identitu, pracovní preference, heslo a ověření dvou faktorů.

Produktová obrazovka
Můj profilProfil stránka odděluje osobní údaje, jazyk / časové pásmo, avatar / podpis, heslo a dva-faktor autentizace.Můj profilpracovní prostorPROFILKompletníTIMEZONEEvropa / Athény2FAPovolenoŽIVÝ VÍDEJ PRACOVNÍHO SPACENázev a e-mailOsobní identitaUpravitJazyk a časové pásmoData a rozhraníUpravitAvatar a podpisOdpovědi a přítomnost týmuUpravitHeslo a 2FAOchrana účtuBezpečné1UPDATE PROFILEIdentita a lokalita2SECURE LOGINHeslo a 2FA3SAVEAplikujte na tento admin
Profil stránka odděluje osobní údaje, jazyk / časové pásmo, avatar / podpis, heslo a dva-faktor autentizace.

Nastavení profilu patří k administrátorovi znakového tvaru a nemění značku pracovního prostoru. Použijte jedinečné heslo a povolit autentizaci dvou faktorů. Změna e-mailu nebo nastavení ověřovací funkce může vyžadovat opětovné ověření nebo nové označení.

Nastavení

Oznamovací preference

Kontrola preferencí oznámení, které provozní události se dostanou k administrátorovi ve výrobku nebo e-mailem.

Produktová obrazovka
Oznamovací preferenceStránka oznámení poskytuje per- event in- app a e-mailové volby plus seznam aktuálních oznámení.Oznamovací preferencepracovní prostorIN-APPZapnoutE-mailSelektivníUNREAD4ŽIVÝ VÍDEJ PRACOVNÍHO SPACEPřidělený tiketIn- app a emailZapnoutZákazník odpovědělIn- appZapnoutRiziko SLAIn- app a emailZapnoutSchválení AIIn- app a emailZapnout1CHOOSE EVENTSPouze užitečné signály2CHOOSE CHANNELIn- app nebo email3PŘEZKUMNedávná oznámení
Stránka oznámení poskytuje per- event in- app a e-mailové volby plus seznam aktuálních oznámení.

Předpisy zahrnují zadání vstupenek, odpovědi zákazníků, upozornění SLA, chatu a akce pro schválení AI. Udržet někde aktivní operační signály; vypnutí emailu nemusí nutně vypnout oznámení v rámci aplikace.

Nastavení

Přehled bezpečnosti

Bezpečnostní přehled je první obrazovka pro hodnocení bloků, přihlašovacích útoků, hrozeb sessions, bezpečnostních trendů a integrity událostí.

Produktová obrazovka
Přehled bezpečnostiSecurity Přehled kombinuje aktuální karty rizika, a 14-Denní trend, seznam útočníků, stav událostí a integrity.Přehled bezpečnostipracovní prostorACTIVE BLOCKS18FAILED LOGINS42HIGH THREAT3ŽIVÝ VÍDEJ PRACOVNÍHO SPACEAutomaticky zablokované7-celkový denní počet a zdrojTrendPoslední útočníciIP, země a důvodPřezkumBezpečnostní událostiVýsledek rizika a akceKrmivointegrita hash@-@ chainTaper- evidentní řetězec událostíPlatné1READ HEADLINESoučasná expozice2OPEN EVIDENCEÚtočníci a události3AKTBlokovat, vyšetřovat, vyvážet
Security Přehled kombinuje aktuální karty rizika, a 14-Denní trend, seznam útočníků, stav událostí a integrity.

Použijte hlavní karty pro třídění, poté otevřete související Audit, Selhal Logins, Blocked IPs nebo JavaScript Záložka Chyb pro práci na záznamní- úrovni. 14-day trend je užitečnější než jeden hrot. Vysoce-hrozící sezení by měla být zkoumána proti návštěvníkům, požadavek a autentizace důkazy před permanentní blok je aplikován.

Nastavení

Evidentní evidenční zpráva auditora

Účetní záznamy zaznamenávají, kdo co udělal, kdy, k němuž vznést námitku, na jaké úrovni rizika a zda uspěl.

Produktová obrazovka
Audit činnostiNa stránce auditu je možné vyhledat, zda je to zřejmé, činnost s akcí, aktérem, rizikem, cílem a výsledkem.Audit činnostipracovní prostorUdálosti18.2kHIGH RISK21INTEGRITYPlatnéŽIVÝ VÍDEJ PRACOVNÍHO SPACESpojovací zařízení povoleno[email protected] · ShopifyÚspěchAPI klíč zrušen[email protected] · klíč 19ÚspěchNastavení se změnilo[email protected] · AIÚspěchPovolení zamítnuto[email protected] · exportovatBlokováno1FILTEROpatření, riziko a subjekt2INSPEKTCíl a výsledek3EXPORTCSV nebo JSON
Na stránce auditu je možné vyhledat, zda je to zřejmé, činnost s akcí, aktérem, rizikem, cílem a výsledkem.

Filtr podle činnosti, rizika a činitele; vývoz CSV nebo JSON pro šetření. Hašišový řetězec pomáhá odhalit chybějící nebo změněné řádky auditu, ale nenahrazuje chráněné zálohy a omezený přístup do databáze. Zacházet s auditními vývozy jako citlivými, protože mohou identifikovat uživatele, záznamy a bezpečnostní opatření.

Operace

Diagnostika

Diagnostika přemění kontroly subsystému na výsledky v oblasti zdraví prostého angličtiny a přímé další akce.

Produktová obrazovka
DiagnostikaDiagnostika skupiny kontroly zdraví widget, AI, vstupenky, integrace, Site Intelligence, pozadí úkoly, automatizace CRM, licence a skladování.Diagnostikapracovní prostorZDRAVÍ13WARNING2POSLEDNÍ1ŽIVÝ VÍDEJ PRACOVNÍHO SPACEWidgetVýstupní body Beacon a chatZdravýÚkoly související s pozadímCron tepová frekvence pozděVarováníE-mailZkouška na výstupu selhalaSelhaloKonektoryRegistr a příjem událostíZdravý1REFRESHProvést aktuální kontroly2OPEN WARNINGPřečíst důkazy3FIX AND RETESTPotvrdit navrácení
Diagnostika skupiny kontroly zdraví widget, AI, vstupenky, integrace, Site Intelligence, pozadí úkoly, automatizace CRM, licence a skladování.

Stránka kontroluje rychlost stránek, pořadí / klíčová slova / backlink / lokální data, AI a akční brána, vstupenky, crawler / audity, integrace / event příjem, úkoly pozadí, CRM automatizace, licence, widget a související služby produktu. Úmyslně hlásí, že operator- čitelné příčiny spíše než odhalování surových tajemství.

Po změně, Obnovit a potvrdit postižený subsystém vrátí zdravé. Zelená diagnostika stránka je nezbytná, ale není dostačující pro spuštění; vyplňte také předběžný seznam.

Nastavení

Bezpečnost a přístup

OpsIQ obsahuje více bezpečnostních vrstev pro ochranu admin, data, a API přístup.

Jak to funguje
Bezpečnost a přístupBezpečnostní štít vedle povolených ovládacích prvků: dvoufaktor, OIDC SSO, SCIM 2.0, OAuth2 PKCE, CSRF / CSP, IP Firewall, omezení sazeb a tajný trezor.Twofaktor (TOTP)OIDC SSOSCIM 2.0OAuth2 PKCECSRF + CSPIP firewallMezní hodnoty sazebTrezor tajemství
Bezpečnost

Bezpečnostní prvky

Autorizace administrátora

Email / heslo s volitelným 2FA.

Uzamčení přihlášení

Dočasný zámek po příliš mnoha neúspěšných pokusech.

IP blokování

Blok IPs nebo CIDR se pohybuje od přístupu ke sledovaným stránkám.

Skórování hrozeb

Výhružné skóre na základě chování. Vysoce ohrožené návštěvníky lze automaticky zablokovat.

Vymáhání HTTPS

Vyžaduje všechna spojení. HTTP přesměruje na HTTPS.

Záhlaví HSTS

StrictTransportSecurity zabraňuje sestupným útokům.

Ochrana proti korozi

Všechny admin formuláře zahrnují CSRF tokeny.

Ochrana XSS

Všechny vstupy uživatele unikly. Záhlaví CSP omezují provedení skriptu.

Ochrana SSRF

Odchozí webové háky blokují soukromé / interní adresy IP.

Doporučené nastavení

1
Povolit 2FA

Pro všechny administrátorské účty.

2
Silná hesla

Minimální 12 znaky, smíšené.

3
Přezkumné účty

Odstranit přístup pro bývalé členy týmu.

4
Monitorovat neúspěšné přihlášení

Každý týden zkontrolujte podezřelé vzorce.

5
Udržujte aktualizovány

Okamžitě aplikujte aktualizace pro bezpečnostní záplaty.

Nastavení

Role a oprávnění

Rolery - Na základě přístupového řízení můžete kontrolovat, co každý člen týmu může udělat.

Role a oprávnění
Role a oprávněníMatrice roleby- schopnosti: Vlastník má všechno; Full Admin postrádá fakturační a nebezpečné zóny; Agent má pouze oskenované vstupenky.Role a oprávněnípracovní prostorNASTAVENÍVYHRAZENÍNEBEZPEČÍKONTROLYMajitelKompletní adminAgentscoped13 ROLESMajitel · Full Admin · Agent2GRANULARPer- page + per- department3DEFAULT-DENYZapomenuté cesty zablokované
Role matice na první pohled: Majitel dostane všechno, Full Admin všechno kromě fakturace a nebezpečné zóny, Agent pouze jejich koupené vstupenky.

Výchozí role

Majitel

Všechno včetně licence, nebezpečné zóny a řízení instalace.

Kompletní admin

Všechno kromě licence a nebezpečné zóny.

Agent

Reagovat na assigned- oddělení vstupenky a chaty, zobrazit analytiky. Žádné nastavení, tým, nebo přístup k bezpečnosti.

Můžu si vytvořit vlastní role?+

Tři role plus úkol oddělení dává zrnitou kontrolu.

Nastavení

Blokovaný IPs

Správa IP adres zablokovaných z přístupu k vašim sledovaným stránkám.

Blokovaný IPs
Blokovaný IPsZablokované...IPs obrazovka: block- an-IP/ CIDR formulář vedle stolu Blokovaných adres s každým zápisem, datem, důvodem a tlačítkem Odblokovat.Blokovaný IPspracovní prostorBlokovat IP / CIDR203.0.113.0/24Důvod (nepovinné)BlokZablokované adresy203.0.113.9Jun 12 · brutální sílaOdblokovat45.12.0.0/16Jun 10 · Nevyžádaná poštaOdblokovat102.89.6.2Jun 9 · zneužíváníOdblokovat1BLOKIP nebo CIDR2LISTKdo a kdy, s rozumem3UNBLOCKJedno kliknutí
Pravý Block IPs displej: zablokovat jeden IPnebo CIDR rozsah, a spravovat seznam, každý s datem, důvod a one-click odblokovat.

Jak blokovat

1
Přejít na bezpečnost > Blokované IPs

2
Přidat rozsah IP nebo CIDR

Příklad: 203.0.113.42 nebo 203.0.113.0/24

3
Přidat důvod

Dokument, proč: spam, zneužívání, škrábání atd.

Bude blokování mít vliv na legitimní uživatele?+

Pokud zákazníci sdílejí společnost IP nebo VPN, blokování, že IP Všechny na něm zablokuje.

Nastavení

Neúspěšné přihlášení

Všechny neúspěšné přihlašovací pokusy k vaší OpsIQ admin.

Neúspěšné přihlášení
Neúspěšné přihlášeníProměnná selháno-loginy: tabulka účtů /IPs s počtem selhání, čas posledního pokusu a tlačítko Block na řádku.Neúspěšné přihlášenípracovní prostorNeúspěšné přihlášeníÚČET / IPPOSLEDNÍPosledníAKCE[email protected] · 41.62.10.47Před 2 metryBlok[email protected] · 102.89.6.23Před 18mBlokneznámý · 45.12.9.712Před 26 mBlok[email protected] · 88.21.4.921h předBlok1WATCHNeúspěšné přihlášení2COUNTSNa účet / IP3AKTBlokovat z řady
Skutečný neúspěšný záznam: každý účet /IP s jeho počet selhání a poslední pokus, blokovat brute- size zdroj přímo z řady.

Co každý záznam ukazuje

Datum / čas

Když se to stalo.

E-mail

Použitá e-mailová adresa.

IP adresa

Zdroj pokusu.

Země

Geografická poloha.

Důvod

Špatné heslo, zamčené, nebo nenalezeno.

Varovné příznaky

Mnoho pokusů, stejný e-mail

Hádání hesel. Zajistit 2FA je povoleno.

Mnoho pokusů, různé e-maily

Automatický útok. Blokovat zdroj IP.

Neobvyklé země

Pokud je váš tým místní, cizí pokusy jsou pravděpodobně útoky.

Nastavení

Analytik zabezpečení AI

Opt- in analytikem vrstva nad bezpečnostními stránkami: verdikt, incidenty slipy, denní trávení, týdenní kontrola držení těla, Zeptejte se bezpečnosti, a 0Nikdy se nekoná na cestě pro návštěvníky.

Každá stránka Security zaznamenává, co se stalo, ale čtení je stále trvá úsudek. AI bezpečnostní analytik dodává, že soud na místě, a to je postavena k tomu, aby téměř nic netrávil: nikdy sedí v majáku nebo přihlašovací cestě, deterministické pravidla řeší zjevné případy bez volání AI, verdikt jsou cached, a analytik je nejlepší výstup je determinační pravidlo, které pak vynucuje navždy na nulové žetony. Zapněte funkce v Nastavení → Bezpečnost; všechny výchozí vypnuty.

Co to přidává

Verdikt čipy + Vysvětlit

Zablokováno IPs a selhané logins řádky ukazují benigní / podezřelý / nepřátelský čip se skóre sebevědomí. Vysvětlit otevírá odůvodnění, použité skutečnosti, a one-click Block / Release akce. Cached 24h, takže re- prohlížení IPje zdarma.

Incidentní informace

Související události se shlukují do jednoho incidentu (přihlašovací vlna, URL scan, autoblock burst) s prostou anglickou časovou osou a doporučeným dalším krokem. Probíhající útoky se skládají do stejného incidentu.

Denní stravovací

Jeden rekapitulace za den: včera versus vaše základní linie, bloky, incidenty, a jediná věc, která dělat. Tiché dny vyslat deterministické vše jasné na nulové žetony.

Týdenní kontrola polohy

Pondělí zpevnění kontrolní seznam (2FA mezery, výluka práh versus skutečný objem útoku, upozornění off) s vážností, úsilí a přesné opravy na položku.

Zeptejte se bezpečnosti.

Otázková schránka na bezpečnostní přehled, která odpovídá z vašeho živého bezpečnostního státu. Hluboké serverové otázky jsou předány admin inženýr chatu spíše než uhodl.

Návrhy politiky + autopilot

Analytik navrhuje konkrétní bloková pravidla jako schválené / Vyřazovací karty; schválená pravidla vynucují nulové tokeny s počítačem live hit. Volitelný autopilot automaticky schvaluje pouze nejbezpečnější pravidla.

Nastavení

Analytik zabezpečení AI (security_ai_enabled)

Master switch. Umožňuje verdikt čipy, Vysvětlit a zeptat se bezpečnosti. Pouze nejednoznačné IPs dosáhnout modelu, přichycen do jednoho hovoru.

Incidentní informace (security_ai_incidents)

Seřazuje události do incidentů a píše každý nový příběh. Běží na stávající hodinový bezpečnostní cron.

Denní stravovací zařízení (security_ai_digest)

Jeden bezpečnostní rekapitulace za den na zvonek a Přehled. Tiché dny nestojí nic.

Týdenní kontrola polohy (security_ai_posture)

Pondělní utvrzovací kontrolní seznam na Přehledu. Kontrolní seznam je plně deterministický.

Politika autopilota (security_ai_autopilot)

Umožňuje analytikovi aktivovat své nejbezpečnější návrhy bez dozoru: reverzibilní čas-omezené bloky, jediný IPs nebo rozsahy, které nejsou širší než /24, nikdy nesdílené / mobilní / soukromé, s limitem 10 za hodinu, vždy auditované a nerealizovatelné.

💡
Každý hovor je označen security_ai s vlastním měsíčním uzávěrem v AI Config → Náklady Guardrails (výchozí 300k tokeny). Pokud je uzávěrka stisknuta, funkce deterministické čtení. Blokování, výluky a upozornění nikdy záviset na tomto rozpočtu. Analytik nemůže nikdy smazat data, změnit nastavení, dotknout se účetní knihy auditu, nebo provést trvalý zákaz.
Operace

Cron a automatizace

OpsIQ používá jeden program produktů pro spuštění e-mailové hlasování, automatizace lístků, analytické rollupy, retence, AI fronty, CRM práce, zprávy a konektorové práce.

Produktová obrazovka
Cron a automatizaceJeden produkt cron vstup dodává tlukot srdce; OpsIQ rozhoduje, která vnitřní pracovní místa jsou splatná.Cron a automatizaceserverHeartbeatKaždou minutu.RUNNERcron/all.phpHEALTHNastaveníŽIVÝ VÍDEJ PRACOVNÍHO SPACESjednocený běžec výrobkůopsiq/cron/all.phpPožadovánoVstupenky a e-mailové frontyKrátká plánovaná práceAktivníAnalytika a retenceVnitřní kadencePlánovanéPřevodové hřídeleDeklarované události v oblasti cronKopírovat1INSTALL ONE LINESpustit program produktů každou minutu2CHECK CRON SETUPPotvrdit tlukot srdce CLI3USE DIAGNOSTICSVyšetřit pozdě nebo neúspěšná práce
Jeden produkt cron vstup dodává tlukot srdce; OpsIQ rozhoduje, která vnitřní pracovní místa jsou splatná.

Požadovaný produkt cron vstup

Přidat tento řádek do crontab pro stejný server a PHP prostředí, které běží OpsIQ:

OpsIQ produkt crontab vstup
* * * * * php /path/to/opsiq/opsiq/cron/all.php >> /tmp/opsiq-cron.log 2>&1

Nahradit /path/to/opsiq s instalační kořenem. Použijte plnou cestu PHP CLI, když hostitel potřebuje například jednu /usr/bin/php8.4.

Nepoužívejte horní hladinu /cron.php pro práci s výrobky. V tomto úložišti, který běžec patří do samostatné non-produkt služby mimo tuto příručku. OpsIQ produktový běžce je opsiq/cron/all.php.

Co sjednocený plánovač řídí

Vstupenky a fronty AI

Proces, které se mají provádět autoodpovědi, eskalace, schválení a další práce na produktu v rámci fronty.

Příchozí e-mail

Zpravodajské služby nakonfigurované poštovní schránky, kde je zvolenou metodou příjmu.

Analytika a zasedání

Sestavuje zasedání a obnovuje plánované agregáty, když jsou splatné.

CRM a zapojení

Skóruje, pracuje, probíhá, kampaň a je možné provádět zprávy.

Zadržování a údržba

Provádí práce na čištění, archivu, ukončení platnosti a integritě.

Konektory

Vysílá konektory cron předplatitelů a hlasovací lístky pouze pro nainstalované, zapnuté a konfigurované konektory.

Ověřit cron

  1. Otevřít Nastavení - Nastavení chronu a potvrdit, že výrobce existuje.
  2. Použití Běž hned. jednou, pak potvrďte admin a hlasovací srdce beats aktualizace.
  3. Kontrola Diagnostika pro pozdní srdeční tep, PHP CLI, databáze nebo problém s cestou souborů.
  4. Prohlédněte si /tmp/opsiq-cron.log nebo cestu záznamu, kterou jste zvolili, když manuální běh selže.

Udržujte konektory krátké, idempotentní a workspace- scoped. Šarže dlouhé synchronizace a ukládat kurzor / kontrolní bod, aby další běh může pokračovat bezpečně.

🚫
Když produkt cron zastaví, čas-based OpsIQ práce zastaví nebo se opozdí, i když běžné admin stránky mohou stále načíst.
Operace

Operace s hnacím zařízením

Hostované OpsIQ nasazení využívá stejné produktové obrazovky a pracovní toky, zatímco hosting operátor spravuje server vrstvy. Obchodní sign- up, plány, fakturační a účetní portálové postupy jsou mimo tuto příručku.

Produktová obrazovka
Zařazování hostitelůHosted provoz se mění, kdo udržuje infrastrukturu; nemění, jak zákazníci používají OpsIQ.Zařazování hostitelůpracovní prostorPRODUCT UIStejný OpsIQINFRASTRUCTUREOperator-řízenéWORKSPACE DATAIzolovanéŽIVÝ VÍDEJ PRACOVNÍHO SPACEBěh aplikacePHP, webový server a databázeSprávaProduktový cronPlánovaný provozovatelem hostinguOvěřitZálohování a aktualizacePoskytovatel politiky a důkazůPřezkumNastavení OpsIQSites, AI, team a konektoryVáš tým1OPERATE OPSIQ NORMALLYPoužít stejnou navigaci produktů2VERIFY SERVICE HEALTHPoužívejte diagnostické a stavové důkazy3KNOW RESPONSIBILITYOddělené nastavení produktu od hostingové práce
Hosted provoz se mění, kdo udržuje infrastrukturu; nemění, jak zákazníci používají OpsIQ.

Co obvykle hostující operátor spravuje

  • Web server, PHP runtime, databázová služba, TLS a úložiště.
  • Jednotný produkt cron a jeho server- level protokoly.
  • Aktualizace aplikací, monitorování infrastruktury a proces zálohování stanovený dohodou o hostování.

Co stále spravuje správce OpsIQ

  • Instalace webových stránek a widget, nastavení AI, znalosti, poštovní schránky a pracovní toky pro podporu uživatele.
  • Přístup do týmu, oddělení, bezpečnostní kontroly, API klíče, konektory, automatizace a data-retence nastavení.
  • Ověření výrobku pomocí diagnostiky, protokolu auditů, zkoušek konektorů a skutečných kontrol koncového stavu.

Provozní kontroly

Nepředpokládejte, že řízená služba znamená, že každý produkt integrace je zdravý. Potvrďte nejnovější zálohovací důkazy a retenční politika s hostingovým operátorem, a používat OpsIQ Diagnostika po změnách DNS, e-mail, AI poskytovatelé, webové stránky nebo konektory.

Tato část zahrnuje pouze operace produktů. Komerční správa nastupování, předplatné, fakturace a zákazníků- účet zůstává mimo příručku OpsIQ.

Operace

Self- hosting OpsIQ

Sám-hostitel OpsIQ instalace běží na infrastrukturu, kterou ovládáte. Jste zodpovědní za runtime, databáze, TLS, produkt cron, zálohy, aktualizace a monitorování.

Produktová obrazovka
Self- hostingSelf- hosting poskytuje řízení infrastruktury a dělá váš tým zodpovědný za každou provozní závislost.Self- hostingserverPHP8.4+DATABASEMySQL 5.7+SCHEDULERKaždou minutu.ŽIVÝ VÍDEJ PRACOVNÍHO SPACEProdloužení runtimekudrnaté, pdo_mysql, mbstring, jsonPožadovánoDalší rozšířeníxml, opensdl, zip, intl, gdPožadovánoAlternativa databázeMariaDB 10.3+ s InnoDBPodporovánoDopravaPřístup HTTPS a odchozí poskytovatelOvěřit1PREPARE THE SERVERSrovnat požadavky na runtime2INSTALL AND CONFIGUREPoužít vyhrazenou databázi a HTTPS3ADD PRODUCT CRONSpustit opsiq/ cron / all. php
Self- hosting poskytuje řízení infrastruktury a dělá váš tým zodpovědný za každou provozní závislost.

Minimální softwarová smlouva

PHP

PHP 8.4 nebo novější. Požadovaná rozšíření: curl, pdo_mysql, mbstring, json, xml, openssl, zip, intl and gd.

Databáze

MySQL 5.7+ nebo MariaDB 10.3+ pomocí InnoDB. Vytvořte vyhrazenou databázi a least- privilegovaný uživatel aplikace.

Webový server

Apache nebo Nginx nakonfigurované pro přední regulátor OpsIQ, statická aktiva a požadované přepisy.

HTTPS

Požadováno pro admin sessions, widget provoz, API klíče, webháky a volání poskytovatele.

Přístup na východ

Umožněte DNS a HTTPS přístup k AI, e-mailu, konektoru a licenčním koncům, které skutečně povolíte.

Přístup k souborům

Uživatelé webových a CLI musí být schopni číst soubory aplikací a psát pouze do zdokumentovaných míst runtime / store.

CronCity in New York USA

Spustit OpsIQ plánovač produktů každou minutu se stejnou konfigurací aplikace a přístupem k databázi jako webový proces.

Instalace sekvence

  1. Nahrát uvolnění do zamýšleného kořene dokumentu a zachovat dodanou strukturu adresáře.
  2. Vytvořte databázi a aplikační uživatele, pak zadejte databázi, kanonický URL a nastavení licence.
  3. Spusťte tok instalátoru / nastavení a vytvořte první účet vlastníka.
  4. Povolit HTTPS a ověřit přesměrování, cookies a veřejné widget /API cesty.
  5. Přidat jednotnou produktovou skupinu OpsIQ:
Self- hosted produkt cron
* * * * * php /path/to/opsiq/opsiq/cron/all.php >> /tmp/opsiq-cron.log 2>&1
  1. Otevřít Nastavení - Nastavení a diagnostika chronu; jednou spusťte plánovač a vyřešte každou neúspěšnou závislost.
  2. Nastavit zálohu, obnovit testování, retenční a aktualizační postupy před přidáním výrobních dat.

Aktualizace v pořádku

  1. Před změnou souborů si přečtěte poznámky k vydání a zkontrolujte požadované PHP / rozšíření.
  2. Zálohovat databázi a soubory aplikace / konfigurace, pak prokázat zálohování lze obnovit v testovacím místě.
  3. Rozmístěte nové soubory bez vymazání konfigurací nebo runtime dat specifických pro instalaci.
  4. Spusťte dodávaný proces migrace / předletu a ověřte přihlášení, widget sledování, vstupenky, e-mail, AI, konektory a cron.
  5. Pro zdokumentované okno pro vrácení dat si nechte předchozí vydání a zálohování databáze k dispozici.
🚫
Úroveň úložiště /cron.php není OpsIQ Plánovač produktů. Pointová automatizace produktu pouze na opsiq/ cron / all.php.
⚠️
Nevymazávejte.schema_cache.json jako rutinní údržba. Odstraňte ji pouze tehdy, pokud návod k produktu výslovně vyžaduje přestavbu schema- cache.
Operace

Průvodce výrobou

Kontrolní seznam a osvědčené postupy pro provoz OpsIQ ve výrobě.

Průvodce výrobou
Průvodce výrobouA go- live checklist: vlastní doména a SSL, AI vyškolený, konektory a cron, zálohy a retence, a týmové role.Přehledpracovní prostorNež půjdeš žítVlastní doména + SSL nakonfigurovánoAI trénovaný na tvůj obsahZkoušené konektory · běh na cronZálohování naplánováno · Retenční sadaPřidělené role týmu & přezkoumáno1GO-LIVEKontrolní seznam před spuštěním2OVĚŘENÍDoména · SSL · Zálohování3CONFIDENTLoď, když je zelená
Přesný seznam, takže nic není vynecháno: doména + SSL, vyškolený AI, testované konektory a cron, zálohy a retence, a týmové role.

Než se to stane.

Nakonfigurováno HTTPS

SSL nainstalován, HTTP přesměrovává, HSTS zapnuto.

Běžící Cron

Ověřte pomocí diagnostiky stránky.

Zkoušená AI

Chat jako zákazník. Ověřte přesnost a tón.

Nainstalovaný widget

Na všech stránkách webu. Ověřte si to živým krmivem.

Nakonfigurováno zálohování

Automatizovaná denní databáze a zálohování souborů.

Chyba při zaznamenávání

Chybové záznamy PHP jsou povoleny a monitorovány.

Tým pozván

Všichni členové mají účty se správnými rolemi.

Znalostní základna obsažena

Alespoň 5-10 články.

Denní: Zkontrolujte palubní desku, jasné fronty vstupenek, spot- check AI konverzace.

Týdenní: Recenze AI Insights, aktualizace KB, kontrola výkonu týmu, přezkum bezpečnosti.

Měsíční: Recenze analytických trendů, auditní konektory, aktualizace AI školení, ověření záloh.

Operace

Kontrolní seznam před spuštěním

Spusťte zdrojové brány a před spuštěním nebo prvním uvedením do provozu dokončete kontrolu produktu. Příkaz, který je k dispozici, není důkazem, že prošel ve Vašem prostředí.

Produktová obrazovka
Ověření uvolněníZobrazení výhybek ukazuje, že je nutné spustit bránu; neoznačuje je tak, jak prošly.Ověření uvolněníserverSANDITEPHP 8.4SOURCE GATESSpustit lokálněOUTCOMEVykazované údajeŽIVÝ VÍDEJ PRACOVNÍHO SPACEPožadovaná rozšířeníZkontrolujte před apartmáBránaSyntaktický výběr PHPVšechny soubory PHP projektuBránaHodnocení AI a PHPUnitSpustit, když jsou přítomny závislostiBránaStatické a prohlížečské kontrolySpustit při konfiguraciBrána1RUN THE CHECKSZachytit skutečný výstup2FIX EVERY REQUIRED FAILURENenahrazujte důkazy předpoklady3TEST THE PRODUCTOvěřit cesty skutečných uživatelů
Zobrazení výhybek ukazuje, že je nutné spustit bránu; neoznačuje je tak, jak prošly.

Zdroj a uvolňovací brány

Spusťte kontrolu úložiště z instalačního kořene a uchovejte jejich kompletní výstup s vydáním záznamu.

Primární předletová brána
php tools/preflight.php
Rozšířená uvolňovací brána
php tools/release_gate.php

Předlet kontroluje běh PHP 8.4 a vyžaduje prodloužení, provede syntaxe PHP, spustí AI vyhodnocovací lodní bránu a plnou sadu PHPUnit a provádí kontroly PHPStan / Node při instalaci těchto nástrojů. Rozšířená brána zahrnuje také kouřovou, čistou instalaci / schéma a kontrolu konce prohlížeče, když je jejich prostředí nastaveno.

Přeskočení kontroly není průchod. Zaznamenejte, proč nebyl k dispozici, nainstalujte chybějící závislost nebo spusťte ji do správného prostředí CI / staging před uvolněním.

Kontroly produktů

1. Autentizace a role

Přihlaste se jako každá zamýšlená role; ověřte si povolené a zamítnuté stránky / akce.

2. Widget a sledování

Načíst reálné stránky v soukromém prohlížeči; ověřte provoz majáku, Live Feed, návštěvník a relace záznamy.

3. Chat a AI

Položit reprezentativní otázky; ověřit znalosti uzemnění, bezpečnost, eskalace a historie AI.

4. Vstupenky

Vytvořit, přiřadit, odpovědět, eskalovat, zavřít a znovu otevřít přes každou povolenou cestu příjmu.

5. E-mail

Testovací odchozí dodávka a každá nakonfigurovaná příchozí poštovní schránka nebo cesta webhooku.

6. CRM a analytika

Vytvořit řízený kontakt / deal / konverze a ověřit přístrojové desky, nádobky, bodování a zprávy.

7. Konektory

Spustit zkoušky připojení, jedno čtení, jeden bezpečný zápis / suché běh a webhook / hlasovací cesty pro každý povolený konektor.

8. API a háčky

Ověřte úzké skoky, omezení sazeb, idempotentní retry, podpisy a duplikát manipulace.

9. Cron

Spusťte jednotný program produktů a potvrďte všechny potřebné tlukot srdce v Cron Setup / Diagnostics.

10. Bezpečnost

Ověřit 2FA, CSRF / řízení zasedání, záznamy o auditu, zrušení klíče a izolaci pracovního prostoru.

11. Zálohování a obnovení

Obnovit aktuální zálohu do samostatného zkušebního prostředí a ověřit data a konfiguraci.

12. Pozorovatelnost a návrat

Potvrdit záznamy / upozornění, zachovat ID žádosti a prokázat postup zpětného vrácení.

⚠️
Vydejte se pouze po každé požadované bráně a obchodní-kritické cestě má aktuální důkazy pro přesné uvolnění a prostředí.
Vývojář

Web Push na třetích stránkách

Upozornění na push prohlížeč (včetně OpsIQ Push Campaigs) potřebují servisní pracovník sloužil ze stejného ORIGIN jako stránka.OpsIQ widget zatížení z vašeho OpsIQ nasazení, takže třetí strana stránky nemohou zaregistrovat OpsIQ je pracovník přímo. Hostit jeden malý soubor na webu vlastní doménu, aby bylo možné tlačit tam. Kamery dodávají prostřednictvím metody podpory obou.

Jak to funguje
Web pushOS- styl push notification nad dvěma doručovacími kartami: Built- in VAPID a Pusher Beams.Tvůj obchodVáš vozík čeká · 10% Vypnuto dnesTeďStavební- in (VAPID)Žádná třetí stranaSoubor s jedním hostitelemPusher NosníkyPoužijte svůj účetHostit pracovníka
Web push

Proč je to potřeba?

Prohlížeče jen nechat stránku zaregistrovat servisní pracovník z jeho vlastního původu. Widget zatížení cross-původ z vašeho OpsIQ nasazení, takže nemůže nainstalovat tlakový pracovník na zákaznické stránky, dokud hostitel pracovník na místě původu, widget tiše přeskočí tlačit (bez chyby, žádné předplatné). Máte dvě možnosti níže;OpsIQ Push Campaigs publikovat přes oba.

Volba A · Self- hostované webové Push (VAPID, žádná třetí strana)

1. Stáhněte si pracovníka z vašeho nasazení OpsIQ: https://YOUR-OPSIQ/opsiq/opsiq-push-sw.js

2. Nahraj to do svého webová kořene takže je dosažitelný na https://yoursite.com/opsiq-push-sw.js. Widget Automaticky detekuje tuto cestu na stránce je vlastní původ a registruje ji, žádná drobná změna potřeba. (Používá úzký rozsah, takže nikdy nahradit servisní pracovník již spustit.)

Nepovinné: pokud je nutné hostit na nestandardní cestě, nasměrujte widget na něj před je akceptován pouze tehdy, pokud pochází ze stejného místa:

Volitelné · pouze pokud soubor není NOT na kořenu webu
<script>window.OpsIQ=window.OpsIQ||{};window.OpsIQ.pushSwUrl="/custom/opsiq-push-sw.js";</script>

3. V OpsIQ, generovat VAPID klávesy (Nastavení → Klient Chat AI → Advanced → Web Push). Widget pak žádá návštěvníky o povolení k oznámení a předplatné je.

Za CDN /Cloudflare? Ujistěte se, /opsiq-push-sw.js vrací HTTP 200 (Vyčistěte cache, pokud to bylo 404 před nahráním; cached 404 bude blokovat registraci).

Možnost B · Pusher Beams (řízený poskytovatel)

1. V nastavení OpsIQ nastavte poskytovatele push na Pusher Nosníky a vcházejte do svých beamů Identifikace účastníka a Tajný klíč.

2. Hostit Beams servisní pracovník na místě kořene jako /service-worker.jsRozumím. https://YOUR-OPSIQ/opsiq/pusher-beams-service-worker.js, nebo sloučit tuto řádku do vašeho stávajícího kořenového pracovníka:

Pracovník na korálech, hostitel na https://yoursite.com/service-worker.js
importScripts("https://js.pusher.com/beams/service-worker.js");

3. Widget automaticky načte Beams SDK a připíše každému návštěvníkovi per- site úrok opsiq-site-<your-site-key>Žádné další vedení není potřeba.

Jak se kampaně šíří

Tlačit kampaně publikovat prostřednictvím oba metody najednou: návštěvníci na sebe-hostovaný VAPID pracovník získat šifrované webové Push, a návštěvníci přihlášeni přes Pusher Beams dostat Beamse publikovat. Každý návštěvník je dosaženo prostřednictvím toho, co se přihlásili, takže můžete spustit same-původ VAPId na některých stránkách a cross-Origin Beamsi na jiných.

HTTPS je vyžadován pro servisní pracovníky a Web Push (localhost je osvobozen od testování). Admin chat inbox již používá stejný Beams mechanismus zájmu pro upozornění operátora.

Operace

Řešení problémů

Společné otázky a jak je napravit.

Obecné

Prázdná stránka+

Zkontrolujte chybové protokoly PHP. Příčiny: starý PHP (potřeba 8.4+), chybějící rozšíření, DB připojení selhalo, špatná oprávnění souboru.

Přístrojová deska ukazuje nuly+

Kontrola: widget nainstalován? Cron běh? Datový rozsah správný? IP vyloučen?

AI

AI neodpovídá.+

Kontrola: nakonfigurovaný poskytovatel? API platný (použít zkušební připojení)? Vyčerpaný rozpočet? Sestava Workspace AI správně?

AI dává špatné odpovědi+

Kontrola: Znalostní základna aktuální? Prompt jasné? Propojovací vyhledávače vrací správné údaje? Recenze konverzace v historii AI.

AI je pomalý.+

Závisí na tom: Poskytovatel API rychlost, kontext velikost (velké KB = více tokenů = pomalejší), sítě latence. Zkuste rychlejší model.

Sledování

Widget chybí+

Kontrola: skript ve zdroji stránky? Chyby JS v konzoli? Blokování CSP? Ad blocker?

Neznámá země+

GeoIP není nakonfigurován. Použijte Cloudflare (automatická) nebo MaxMind GeoLite2 databáze.

Vstupenky

Emaily nevytvářející lístky+

Kontrola: schránka připojena? Cron běží? Změněno heslo aplikace? IMAP nastavení správně?

Automatická odpověď nefunguje+

Kontrola: povoleno? Oddělení povoleno? AI nakonfigurováno? Cron běh? Člověk odpověděl první?

Konektory

Spojení selhalo+

Kontrola: oprávnění správně? Klíč vypršel? API přístupný ze serveru? Základna URL Je to tak?

Připojeno, ale bez dat+

Kontrola: API klíčové skopy? Synchronizace Webhook povolena? Cron běh?

Výkonnost

Pomalé stránky+

Kontrola: výkon databáze (SHOW PROCESSLISLX), paměť PHP (zvýšení na 1GB), možnost opcache, zkrácení retenčního období.

Operace

Widget neloguje návštěvy

Použijte tuto cílenou kontrolu, pokud widget zatížení nesprávně nebo Live Feed zůstane prázdné.

Kdy widget není logování návštěv, ověřte klíč k webu, načíst stránku v soukromém prohlížeči, zkontrolujte prohlížeč Síť / Console panely pro blokované maják nebo widget žádosti, přezkoumat Content- Security-Policy a ad blokátory, potvrdit, že web je aktivní v OpsIQ, a otevřít diagnostiku. Viditelná chatovací bublina neprokáže sám o sobě, že analytický maják byl přijat.

Odkaz

Glosář

Definice pojmů používaných v rámci OpsIQ.

Akce

Něco, co může AI udělat přes konektor nebo plošinu.

Agent

Člen týmu s omezeným přístupem, nebo agent AI.

BYOK

Přineste si vlastní klíč, poskytnete svůj vlastní AI API klíč.

Konektor

Modul integrující vnější platformu s OpsIQ.

CSAT

Skóre spokojenosti zákazníků.

Platí

Příležitost k získání příjmů v CRM.

Oddělení

Kategorie vstupenek pro řízení tratě a přístupu.

Eskalace

Přesun letenky na jiné oddělení nebo z AI na člověka.

GeoIP

Detekce polohy návštěvníka z IP adresy.

HandoffCity in New York USA

Převádím rozhovor z Al na člověka.

Totožnost

Podepsaný symbol identifikující návštěvníka webových stránek.

Znalostní základ

Články, které AI používá k zodpovězení otázek.

Olovo

Návštěvník, který ukazuje záměr nákupu.

Olověné skóre

0-100 číslo udávající pravděpodobnost přeměny.

Stadium životního cyklu

Pokud je zákazník: Olovo, Prospect, Zákazník, Na riziko, Koordinováno.

Spravovaná AI

AI je poskytována jako součást vašeho plánu OpsIQ.

Potrubí

Vizuální deska stádií.

RBAC

Rolery-založené na přístupovém řízení.

Sezení

Série zobrazení stránek v timeout okno.

Klíč pro stránky

Jedinečný identifikátor pro sledované webové stránky.

SLA

Dohoda o úrovni služeb, časy odezvy cíle.

TokenCity in New York USA

Jednotka AI. Zhruba 4 znaky = 1 Token.

Důvěřujte vrstvě

Bezpečnostní systém kontroluje autonomii AI.

Webhook

HTTP volání zpět pro oznámení událostí.

Widget

JavaScript kód vložen na vašich webových stránkách.

Pracovní prostor

Stránka s vlastním sledováním, AI, konektory a tým.

Odkaz

Sežeň si další pomoc.

Pokud tato dokumentace neodpovídá na vaši otázku:

Admin AI

Klikněte v adminu na tlačítko "Zeptejte se OpsIQ". Má přístup k této dokumentaci a vašim platformám.

Podpůrná jízdenka

Zahrnout: to, co jste zkoušeli, co se stalo, co očekáváte, a jakékoli chybové zprávy.

E-mail

E-mailová podpora s licenčním klíčem a popisem vydání.

Tipy pro účinné žádosti o podporu

Zahrnout stránku

Která admin stránka (URL nebo název).

Zahrnout nastavení

Přesné nastavení jména a aktuální hodnoty.

Zahrnout chybu

Přesná chybová zpráva s kódy.

Zahrnout kroky

Co jsi udělal, krok za krokem.

Zahrnout očekávané vs aktuální

Co by se mělo stát, nebo co se stalo.

💡
Čím konkrétnější je vaše žádost, tím rychlejší odpověď. "Nefunguje" vyžaduje šetření. "Kliknutím na Uložit na AI konfiguraci dává chybový kód 502" dostane přímou odpověď.