OpsIQ Документація

Побудувати, працювати і OpsIQ_.

Це повна документація для OpsIQ. Встановити продукт, запустити підтримку, налаштувати AI, керувати CRM, встановити віджет, побудувати роз'єми, викликати REST API, отримувати вебхоки, додатки для ринку пакетів та керувати самоприховане розгортанням.

Керівництво по роботі з клієнтамиКерівництво адміністратораКерівництво розробникаCRM посиланняКонтактори SDKРЕСТ API_Самостійно
Промисловість

Сфера даної книги

Все OpsIQ _, в одному місці: як працює кожен екран, як підключити власні системи і як його побудувати. Почати де завгодно, розділи слідувати тим же замовленням, що й у адміністратора бічного брусу.

Промисловість
ДокументаціяПідручник організований навколо OpsIQ продукт, після того, як і той самий порядок, як бічний панель адміністратора.ДокументаціяOpsIQ продуктAUDIENCEОператориБУЛІДРозробникиRUNАдміністраториОГЛЯД РОБОТИЗареєструватися OpsIQЕкрани та робочі процесиВключенийУніверсальні інженерні рішення OpsIQРоз'єми, APIs і віджетВключенийУніверсальні інженерні рішення OpsIQБезпека, cron та розгортанняВключенийПосиланняПакет, API та Webhook контрактиВключений1CHOOSE AUDIENCEОператор або розробник2FOLLOW THE UIДзеркальне вікно OpsIQ3USE SOURCE TRUTHСтан отримано зі збирання
Підручник організований навколо OpsIQ продукт, після того, як і той самий порядок, як бічний панель адміністратора.
Портал - Web Studio

Використовуйте виділений адміністратор та керівництво розробника для архітектурної архітектури, сторінок, компоненти, попередній перегляд, Центр допомоги, ідентичність, SCIM, керовані релізи, розширення, міграції та сертифікація.

Відкрийте портал студії

Що тут

Запуск товару

Кожен екран в адміні: аналітика, чат, квитки CRM, бази знань, Site Intelligence, просування та порталу клієнтського рахунку. Що кожен сторінка робить, які номери мають значення і що робити, коли вони виглядають неправильно.

Підключення ваших систем

The website widget, email mailboxes, inbound and outbound webhooks, and the connector library for platforms like Shopify, WooCommerce, WHMCS, Zendesk, Stripe, Slack and Gmail.

Побудувати свій власний

Конструктор роз'ємів без коду, дії та тригери, якщо ви не будете використовувати роз'єднувачі на всіх, і REST API з кожним дією, обсягом та кодом помилок.

Оперити

Роль та дозволи, безпека, діагностичні системи, резервні копії та як розміщене, так і само приховане розгортання.

Де можна почати

1
Якщо ви замовляєте OpsIQ день до дня

Щоб отримати доступ до розділу екрана в бічному рядку, кожен відкриває з яких сторінок для того, щоб ви могли зупинитися як тільки у вас є які вам потрібно.

2
Якщо ви вводите його

Додати налаштування, Безпека, Діагностика, Крон та виробництво. Це розділи, які вирішують, чи все інше тримає роботу.

3
Якщо ви будуєте інтеграцію

Почати в роз'ємах, потім конструктора з'єднувача, далі REST API і вебхоки. Читати ті, щоб ви бачили кожен спосіб OpsIQ може говорити про іншу систему.

💡
Два речі змінюють те, що ви бачите. Дозволяє приховати сторінки вашої ролі не можна відкрити, тому розділ описаний тут може бути відсутній з вашого боку панелі. Задайте адміністратора для перевірки вашої ролі. І роз'єми здійснюють етикетку зрілості виробництва, Beta, Preview або шаблону; хідна будівля і його роз'єднувач проявляються повноваження на якому у вас є, а не ця сторінка.
Почати тут

Що OpsIQ для вашого бізнесу

OpsIQ is a complete AI-first business operating platform. It replaces your analytics, live chat, helpdesk, CRM, SEO toolkit, integration middleware, and developer platform with a single unified admin where every tool shares the same customer context. Instead of stitching together 8-12 separate SaaS products, you install OpsIQ once and operate everything from one screen.

Платформа
OpsIQ єдина платформаЦентральний мозок AI підключений до живого чату, CRM, квитків, Site Intelligence, просування та аналітики.жива чатАкціїА. А. CRM_Веб-сайт IntelАвіаквиткиАналітикаOpsIQ_БРЕНЕР1ONE WORKSPACEКожен інструмент в одному адміністратору2SHARED BRAINОдин клієнт3ANYWHEREХмара або самостійне хостинг
OpsIQ - це одна платформа з одним спільним контекстом клієнтів, кожен інструмент живиться і працює тим самим AI мозку.

Усе OpsIQ · детально

Аналіз веб-сайтів та відвідувачів

Відстеження відвідувачів в режимі реального часу

Кожна сторінка завантаження, натисніть, прокрутка та навігаційна подія захоплюється в режимі реального часу. Див. хто зараз перебуває на вашому сайті, які сторінки вони переглядають, як довго витрачають, і де вони прийшли з того, що всі без сторонніх cookie-файли.

Журнал відвідувачів та сеанси

Повна історія кожного відвідувача з пристроєм, браузером, операційною системою, країною, містом, референтом, параметрами UTM, цільовою сторінкою та роздільною здатністю особистості. Сесій групової сторінки переглядаються в подорожі, тому ви можете побачити весь шлях відвідувача.

Відтворення сеансу

Часовий режим відтворення захоплених відвідувачів сеансів. Див саме те, що користувач зробив: рухи мишки, кліки, прокрутки, переходи сторінок і форму взаємодії. Використовуйте його для діагностики UX питань, розуміння точок згоряння та перевірки переходів перетворення.

Жива кормова

В режимі реального часу, як це відбувається. Дивитися перегляд сторінок, чат починається, формує подання та інтенсивні сигнали оновлення кожні кілька секунд. Фільтрувати за містом, пристрій або референт для фокусування на конкретних сегментах трафіку.

Топ сторінки

Список сторінок, що посвідчує час участі, швидкість відмов, перетворення та активність підтримки. Визначте свій найбільший вміст і сторінки, які потребують вдосконалення.

Георозвідувальний

Країна, місто та регіони розбиття з картами. Пристрої та розподіл браузера, аналіз джерел трафіку, відстеження пошукових систем і оглядів проникнення ринку.

Інтенсивне воронку

Відстежуйте відвідувані сигнали (при відвідуванні сторінки, повторне повернення, шаблони перегляду документів та підтримку взаємодії) для виявлення відвідувачів, які, ймовірно, будуть купувати, чинити або потрібна допомога.

A / B експерименти

Виконайте розгалу тести на вашому сайті безпосередньо з OpsIQ_. Створіть варіанти, встановіть розподіл трафіку, визначте цілі перетворення та виміряйте статистичне значення. Не потрібно зовнішнього інструменту тестування.

JavaScript відстеження помилок

Захоплення клієнтського боку JavaScript помилок з вашого сайту автоматично. Див. повідомлення про помилки, сліди за стеками, уражені браузери, кількість частот і які сторінки спровокують їх. Видаляє передові проблеми без окремого моніторингу помилок.

Журнал подій

Кожна відстежена подія (видання сторінок, користувацькі події, чат-співчинки, подання анкет, покупки) у пошуку, фільтрова логіна з повним метаданих.

Продаж і перетворення

Відстежуйте замовлення, дохід, повернення коштів, оновлення підписки та перетворення атрибутів на джерела трафіку, кампанії та подорожі відвідувачів. Виручіть панельи з порівнянням термінів та аналізом трендів.

Магістр

Високоінтенсивні відвідувачі, які визначаються поведінкових візерунках. Оцінка ведеться на основі відвідувань сторінок, часу на сайті, частоти повернення, підтримки взаємодій та користувацького сигналу. Корми безпосередньо призводить до CRM-провідника.

Site Intelligence (SEO and content analysis)

Сайт crawls

Автоматичне видалення вашого всього сайту для відкриття сторінок, виявлення ламкості посилань, пошуку відсутніх мета-тегів, перевірки зображення alt text, валідувати канонічний URLs, і мапа структури сайту. Графік роботи порожнечі щодня, щотижнево або на вимогу.

Технічний SEO-аудит

Comprehensive technical analysis: page speed scores, mobile responsiveness, Core Web Vitals, SSL certificate status, redirect chains, duplicate content detection, crawl depth analysis, and structured data validation.

Аудит контенту

Оцінюйте кожну сторінку для якості вмісту, підрахунку слів, оцінки продуктивності, щільність ключових фраз, структуру заголовка, співвідношення внутрішнього/зовнішнього посилання та свіжості. Визначте тонкий вміст, дублікати сторінок і проміжки вмісту.

Пошук AI-powered

Сеймантичний пошук по всьому вмісту сайту. Запитайте про природні мовні питання щодо вашого контенту та отримуйте відповіді на сторінку AI-синтета з посиланнями на джерело.

Відстеження рейтингу SERP

Моніторинг рейтингу пошукових систем для цільових ключових фраз у Google та інших двигунах. Відстежуйте зміни позиції з часом, порівнюйте конкурентів і див. які сторінки рангу за якими умовами.

Дослідження ключових фраз

Відкрийте можливості ключових фраз на основі вашого контенту, аналізу конкурентів та даних об’ємів пошуку. Отримайте пропозиції для нових тем контенту, довгострокових варіацій і цілей оптимізації вмісту.

Аналіз зворотного зв'язку

Створіть свій вхідний профіль посилання. Подивіться, які посилання на сайт, відстежуйте нові та втрачені посилання, проаналізуйте якірний розподіл тексту і виявляти можливості для зв'язку.

Місцева SEO-мережа

Для бізнесу з фізичними локаціями: візуалізуйте видимість локального пошуку через географічну сітку. Дізнайтеся, як ваші рейтинги залежать від місця розташування, відстані від вашого бізнесу та пошуку.

синхронізація профілю Google Business

Підключіть свій обліковий запис Google Business до OpsIQ. Огляди синхронізації, повідомлення, Q&A, фотографії та інформація про бізнес. Керуйте своїм листом GBP з внутрішньої сторони OpsIQ. Відповідаючи відгукам, публікувати повідомлення та контролювати інсайти.

Графік роботи

У розділі «Репортери» опубліковані звіти про SEO та аналітику, що створюються на графіку (щотижнево, щотижня). До звітів належать зміни рейтингу, тенденції руху, технічні проблеми, знайдені та продуктивність контенту. Виявлено білий лабораторний вихід для агентств.

Підтримка AI-powered

Клієнт AI чат

AI answers customer questions on your website 24/7 using your knowledge base, connected platform data (orders, accounts, subscriptions), and custom training prompts. Supports multiple AI providers: Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google), and Grok (xAI).

Адміністрування штучного інтелекту

У панелі адміністратора AI, яка допомагає вам писати відповіді на квиток, проконсультувати з клієнтами, аналізувати тенденції підтримки клієнтів, переглядати дані клієнтів у підключених платформах та виконувати дії через систему роз'єму.

Знання AI

AI заповнюється в ваших базових статтях, записах, документації про продукт та підключених даних платформи. Вона не є галуцинатом. Відповіді від вашої актуальної інформації або ескалати при невизначеності.

Автодозвол для людини

Коли AI не може вирішити питання, виявляє розчарування або клієнт просить людину, він автоматично стикається з командою з повним контекстом розмови. Конфігурація відхилення / часу автовідновлення назад до AI.

Підказки для навчання AI

Написати окремі інструкції для підключення штучного інтелекту та адміністратора-забезпечення AI. Контролюйте тон, межі, правила зарахування, заборонені теми і бізнес-специфічна поведінка. Підтримується перетворна конфігурація простору.

Історія та аудит AI

Кожен AI-бесіда з'єднується з повним запитом / відгуками, використання токенів, відстеження вартості, використовуваного постачальника та версія моделі. Переглядайте розмови для виявлення проміжок навчання і поліпшення точності AI.

Інсайти AI

Автоматизований аналіз схем розмови AI. Див. загальні питання, норми роздільної здатності, задоволення від клієнтів за темою та зонами, де AI потребує кращого тренування.

Пер-робочий простір AI config

Ми можемо використовувати для основного продукту та GPT-4o для вторинного бренду.

АІ BYOK

Два режими AI: керований штучним інтелектом (включається в свій план, немає API ключ, необхідний) або принести свій власний ключ (користуйтеся власними ключами) OpenAI/Anthropic Українська / Русский API ключ для повного контролю за моделлю вибору та витратами. Обидва класу, які працюють з будь-яким режимом.

Бюджети та контроль вартості AI

Налаштуйте щомісячні токени бюджети, за межі зборами та сповіщеннями про низький рівень. Відстежуйте витрати на провайдера, за робоче місце і за розмову. Запобігайте витратам бігу з твердими стельами.

Tickets and helpdesk

Система ратифікації

Повна довідка з відділеннями, пріоритетами (нижчий/середній/високий/урентний), статусами, SLA Відстеження, внутрішні ноти, відповіді клієнтів, вкладення файлів та різьбові розмови. Не потрібна зовнішня допомога.

Тривалість AI та автоповорот

AI автоматично запускає вхідні квитки на відділ і пріоритет. Увімкніть автоматичне повернення для безпечного відділення. Проекти AI та надішлемо відповідь після настроювання (за замовчуванням: 2 хвилин), щоб людина могла переходити спочатку.

Вживання електронної пошти

Підключіть поштову скриньку (Gmail, IMAP_, або провайдер-специфічний) для автоматичного створення квитків з вхідних електронних листів. Відповіді на повідомлення електронної пошти про квиток оновлюється нитками квитка.

Портал - укр.

Поставити заявку на сайті, вказавши інформацію про своє замовлення.

Квиткові муфти

Займіть дублікати квитки в одну нитку. З'єднувані квитки демонструють [Межен] на предметній лінії. Історія розмови збереглася у виживання квитка.

Повернутися до AI

Після того, як людина- агент бере квиток, скористайтеся "Повернення до AI" для того, щоб дозволити штучно відновити AI на цьому квитку. Корисно, коли людська частина вирішена, але клієнт має наступні питання, які AI можуть оброблятися.

Копілот у коробці

Управління квитками AI-просування з віконного вигляду. Копілот пропонує відповіді, підбиває історію розмови, рекомендує пріоритетні / вихідні завдання та може виконувати дії на підключених платформах.

Підтримка чату та в режимі реального часу

Чат вбоксі

У режимі реального часу клієнт чат здійснював уніфікованій папці. Див. всі активні розмови, особистість клієнтів, історія спілкування та побажання AI. Кілька агентів можуть співпрацювати на бесіді.

Правила проактивного чату

Повідомлення про чат на основі поведінки відвідувача: час на сторінці, специфічний URL відвідавши, прокручуйте глибину, повертаємо кількість відвідувань, вихідний вхід або користувацькі події. Приклад: показати повідомлення про допомогу після 60 секунди на сторінці ціноутворення.

Чат віджет

Застосунок для чату, вбудованого на вашому сайті. Підтримує чат AI, чат живих агентів, подача квитків, пошук бази знань та особистість відвідувачів. Відповідальний, доступний і брендований.

Дослідження CSAT

Збір рейтингу задоволеності клієнтів після чату та взаємодії з квитанціями. Розробка опитувань з власними питаннями, рейтинговими масштабами і підказками. Результати подаються в командну продуктивність та AI-інсайти.

Пост-чатківське опитування електронної пошти

Після закінчення чату відвідувачі з відомою електронною поштою можуть отримувати одну фірмову пошту з резюме AI, що було оброблено і одним клацанням миші "Як це легко?" Так/No. Як тільки за ниткою підписали однокористувацькі посилання, кожен відправив в'язану, а результат землі на сторінці Зворотній зв'язок як власний сигнал вистачить зірочки in-chat.

Фігура ідентичності

Кожен пункт зворотнього зв'язку, який надає їм інформацію: ім'я, електронна пошта, натискання кнопки-провайдера до повного контакту з клієнтами та CRM, а також одноразові електронні листи або AI-draft відповіді, що закладаються в актуальному вигляді.

Написання AI

Окремий помічник написання AI для складання електронних проектів, відповідей квитків, анонсів та комунікацій клієнтів. Використовуйте власний запит (не чат-міз) для професійного написання бізнесу.

АІ-Перший CRM

Центр CRM

Єдиний екран, що показує весь CRM-статей: значення трубопроводу, швидкість дії, майбутні завдання, діяльність агента та рекомендації AI. Мобільна домашня сторінка є щоденною відправкою.

Контакти та компанії

Керуйте контактами з клієнтами з повними профілями: ім'я, електронна пошта, телефон, компанія, теги, життєвий етап, історія спілкування, історія квитків, історію купівлі та спеціальні поля. Контакти посилання на компанії для B2B управління відносинами.

Дальзаг та дошка трубопроводів

Візуальна плата канбані з настройованими етапами. Перетягніть пропозиції між сценаріями, встановіть значення, відзначте власників, відстежувати близькі дати та диви значення трубопроводів на кожному етапі. Підтримані декілька трубопроводів.

Тренінг з питань штучного інтелекту

AI аналізує кожну угоду і забезпечує тренерів: сигнали ризику (на тихому, конкуренті згадували, проблеми бюджету), рекомендації щодо виконання заходів, ймовірність виграшу та запропоновано дотримуватися термінів.

Прогнози та звіти

Доведено прогнози на основі даних трубопроводів, історичних замкнених ставок та швидкості роботи. До звітів відносяться трубопровід за стадіями, власником, джерелом, коефіцієнтами перетворення, середній розмір договору і тривалість циклу продажів.

Проспективи агента (SDR)

АІ-потужний проспект, який визначає потенційних клієнтів з ваших даних відвідувачів, веде сигнали та підключена діяльність платформи. Займає цілі, проводимо початкові повідомлення і бали призводять до якості.

Послідовності продовження

Автоматичні багатоступінкові послідовності виконання: електронна пошта, очікування, електронна пошта та перевірка відповіді, ескалація. Захищаючи послідовності нових проводів, затримані пропозиції, поштові перевірки та реінтенсивації кампанії.

рятувальний цикл та затримка

Відстежуйте етапи життєвого циклу клієнтів (лід, перспектива, клієнт, розтирається) з автоматизованими переходами. Засіб для утримання відслідковує сигнали для подрібнених сигналів і пропонує втручання.

Стюардеса даних

АІ агент, який постійно очищає і збагачує ваші CRM дані: deduplicates контактів, заповнює відсутні поля, перевіряє електронні листи, стандартизує назви компаній та прапорці.

Побудувати CRM

Конфігурація CRM: розповісти AI, який виглядає процес продажів і він будує ваші етапи трубопроводу, спеціальні поля, шаблони угод та правила автоматизації.

Перевірка стану здоров’я CRM

Автоматизований аудит якості даних CRM: дублікати контактів, угоди без наступних кроків, стебло трубопроводів, відсутність контактної інформації та пов'язаності даних.

Довіра Диял

Трирівневий контроль автономії для кожного агента CRM AI: Автопілот (AI діє самостійно), Copilot (AI пропонує, людські затвердження), а також керівництво (AI дотримується тільки). Встановити диал пер агента, на тип дії та поріг значення угоди.

Чотири агенти з штучного інтелекту

CRM працює чотири спеціалізовані агенти AI: Steward (якісна інформація), SDR (проспектування), Retention (попередня профілактика), аналітик (рекпортація та інсайтів). Кожен агент має власний баланс довіри.

Роз'єми та інтеграція

Перебудовані роз'єми

Готові роз'єми для Shopify, WooCommerce, BigCommerce, Магенто 2, PrestaShop, OpenCart, osCommerce, WordPress, WHMCS, Zendesk, Stripe, Amazon SES, Postmark, Resend, SendGrid, Mailgun, Gmail, IMAP, Slack і Google Business Profile. Кожен роз'єм приносить специфічні дії AI, знання та синхронізацію даних.

Конструктор з'єднувачів

Створення користувальницьких роз'ємів для будь-якої платформи, немає коду, AI-просайдера або повного коду. Будильник підтримує REST і GraphQL APIs, OAuth авторизація коду потоку, webhook автореєстрація з Stripe і прості схеми підписів, патологія (зміщена сторінка, курсор та посилання-голова), список/error трансформує, багатофункціональний контекст та ринкова упаковка.

Авторизація штучного роз'єму

ConnectorBuilderAI допомагає вам побудувати роз'єми: описуйте, що ви хочете і він пропонує дії, пише запити обробників та карт API відповіді. Руки автентичності, патологія та обробка помилок автоматично.

OAuth потоку для будь-якого роз'єму

Генетичні застосунки OAuth блокування, який працює з будь-яким роз'ємом. Підтримка PKCE, управління сайтами, автоматичне оновлення токени. Роз'єднувачі визначають їх OAuth параметри та OpsIQ ручки потоку.

Можливість підключення автобусів (подовження платоспроможності)

Роз'єми не просто додають дії платформи. Вони можуть використовувати основні функції через можливість "автобусів". З’єднувач заявляє можливості (кальендар, збагачення, припис в CRM; локальні_список, рейтинг_data in Site Intelligence; web_analytics in Analytics; pay_provider in Payments; e-mail_sync in Mailbox; video_meeting in Comms) і реалізує свій невеликий набір методу; OpsIQ Виводить його через Реєстрабельність і провідує її в УІ, Замовник 360 часовий ряд, і дії AI. Кілька роз'ємів можуть запропонувати однакову можливість без замка-включення. Див. роз'єднувачі/PLATFORM_CONNECTORS.md.

Перед установкою проти ринкового ярусу

Роз'єми, що живуть в одному з двох ярусів. Перед установлені роз’єми (поєднувачі /) є реєстратором-активним із коробки, зберігають стійке посилання і найбільш використовуваний провайдер для можливості (наприклад, Google Calendar, Gmail, Google Business Profile). Роз'єми ринку (marketplace_connectors/) виявляються відкритими, але інерційні до моменту встановлення, наприклад. Microsoft 365 Календар, Outlook, Документація, Stripe, GA4, SerpApi, Zoom. Кожна мостова поверхня списку ринку, тому UI і AI може підказати "встановити з ринкового місця" (notify-to-install) коли можливість не має готових провайдерів, ніколи не зламаної кнопки.

Роз'єм ринку

Видаліть ваші роз'єми до OpsIQ маркетплей. Роз'єми пакетів з профільом.json, знання.json, робоча опалубка.json, і підписані архіви. Маркетплей підтримує безкоштовні та платні роз'єми з багатоканальним векселем.

Підписка

Всі роз'єми є криптографічно підписаними для перевірки цілісності. Зареєстровано реєстрацію часу в установці. Використовуйте інструмент відставки_all_connectors, щоб перезаписатися після оновлення.

СмартЛокап

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

Договір про дію

Генеральний OpsIQ API публікує всі зареєстровані JSON операція як відкрита названа дія. Використовуйте мета.actions для загального та точного типу контрактів; роз'ємні пакети оголошують власні дії постачальника через єдиний виконавець.

Рецепти роз'єму

При побудові рецептів робочого процесу, які об'єднують декілька дій з роз’єму в загальний бізнес-процес. Приклад: "Коли новий порядок надходить на Shopify, створити квиток, оновити CRM і відправити повідомлення про Slack".

Синхронізація знань

Роз’єми оголошують теми знань, які спрацьовують на базу знань AI. Практичні статті, інструкції з налаштування та етапи усунення неполадок автоматично доступні для AI без введення ручних знань.

Платформа розробника

РЕСТ API_

А назва JSON API охоплює кожен зареєстрований адміністратор JSON робота, з API-Використовуємо автентифікацію робочого простору, обсяги, обмеження швидкості, написання повідомлень idempotent, OpenAPI та створену колекцію Postman.

Вебхуки

Вимкніть вебхоки для всіх основних подій: замовлення, рахунки, підписки, квитки, чати, веде, реєстрація користувачів і відмова від візерунка. Доставка асинхронів через чергу роботи, термінальні ретри, захист SSRF та автоматичні після 15

Підписування Webhook

Кожен вихідний вебхоок підписаний з HMAC-SHA256. Вивірте підписи на ваш приймальний кінець, щоб забезпечити автентичність вебок. Стабільний захід_id для обробки idempotent.

Вегет SDK

JavaScript SDK для відстеження віджету з роздільною здатністю ідентичності, користувацького відстеження подій, програмне забезпечення управління чатом та налаштування сторінки. Встановлення рецептів для React, Vue, Next.js, WordPress, Shopify, і статичні HTML.

Плагіни та SDK

Сервер-за межами SDKs і плагінів для спільних кадрів. WordPress плагін, WHMCS Модуль, і загальні бібліотеки інтеграції PHP / Node.js.

Події API

Push користувальницькі події в OpsIQ від Вашого бекенда: покупки, підписки, використання функцій, помилки або будь-який бізнес-захід. Події з’являються в часовому режимі відвідувачів та подаються в аналітику та контексті AI.

Тригери кулінарні книги

Побудувати автоматизовані робочі процеси, що запускаються подіями: новий квиток, чат почав, відвідувач виявлений, стадія угоди змінилася або на замовлення. Тригери виконують роз'ємні дії, надсилають вебокки, оновлення записів або повідомляють вашу команду.

API будівельників

Візуальне API і вебхоок конструктор всередині адміністратора. Налаштуйте кінцеві точки, тестові запити, оглядові відповіді та дебвугові інтеграції без залишку OpsIQ.

Команда та адміністрування

Контроль доступу на основі ролей

Три ролі: Власник (повний доступ, вексельна зона), Повне адміністрування (всі операції, крім зони зарахування та небезпеки), а Агент (тільки приписовані відділення, відсутні налаштування доступу). Всі чутливі сторінки важко відхилені роллю.

Команда виступу панель

Власник і повний адміністративно-навколо приладу, що показує час вирішення завдань, розподіл навантаження на роботу, глибині ручки, розбиття каналів, аналіз трендів, відповідність SLA, CSAT агентом, відхилення ставок, командних валків та найбідніших годин. Оновлений в режимі реального часу.

Відстеження та відстеження інформації про користувачів

Віджет з реального часу, який-is-online віджет в адмін навігації. Детекція присутності серця (необхідно)60-друга пінг, 300-друга широта, авто-пруна після 120 дні. Дивись, які адміністратори в даний час активні та на яких сторінках.

Налаштування простору Per-work

Кожен підключений сайт (робочий простір) може мати власну конфігурацію AI, налаштування роз'єму, відділеннях квитків, брендинг та операційні правила. Глобальні за замовчуванням каскад для робочих просторів, які не перенаправлені ними.

Багато сайтів

Керуйте кількома веб-сайтами з одного OpsIQ admin. Кожен сайт має власний трекінг, дані відвідувачів та налаштування. Переключення між сайтами від адміністратора навігація.

Система шаблонів електронної пошти

Реєстровані шаблони електронної пошти для всіх автоматизованих комунікацій: повідомлення про квиток, чат-транси, вітальні листи, пароліски та системні сповіщення. Редагування HTML шаблони з прямим переглядом, змінними чіпсами ({{customer_name}}, {{ticket_id}}), і глобальний контроль макетів.

Імпорт і експорт

Імпортні контакти, квитки та знання статті з CSV/JSON. Експорт даних відвідувачів, аналітичних звітів та CRM записів. Портабельність даних для міграції між системами.

Безпека, дотримання та операції

Підприємство SSO

ОйдК (OIDC)OpenID Підключення) єдиного входу з повним робочий час: відкриття, авторизація, зворотний зв'язок, перевірка підпису JWKS, користувацьке та доменне регулювання, надання послуг JIT і охорона стану. SAML конфігураційна підтримка.

GDPR та відповідність даних

Вбудований DSAR (Пошук доступу до даних): експорт та видалення даних клієнтів по всій системі. Заборонені дані контактного рівня, що спрацьовуються, квитки, чати, записи CRM та електронні журнали. Консультаційні політики управління та збереження інформації.

IP блокування та захист від брючних посилок

Блок специфічний IPs або діапазони від доступу до вашого сайту або адміністратора. Автоматичне блокування після налаштування невдалих спроб входу в логін. Заборонений логін з IP, часовий апарат і агент користувача.

HSTS та головки безпеки

HTTP Strict Transport Security, Дозволяє-політичні заголовки та безпечну конфігурацію файлів cookie. Самостійні розгортання можуть додавати CSP заголовків через налаштування сервера.

Вимкнення вебхока

Блоки охоронців SSRF для приватних/метаданих IP діапазони. Доставка асинхронів запобігає повільним кінцевим точкам від блокування вашого додатка. Авторозчинний після 15 послідовні збої запобігають відходи ресурсу на пошкоджених точках.

Золяція робочих місць

Роз’єм інформації між робочими просторами. Відвідувачі, квитки, чати, CRM-записи та AI-бесіди об’єднані до робочої зони. Витоки даних кросвордів не завадять на шарі запиту.

Управління циклами

Підтримка щомісячних, щоквартальних, напіврічних, дворічна та термінів оплати. Нормалізація валют для багатовалютних шлюзів. Перетворення валюти на отримання точну звітність доходів.

Автоматизація роботи з броньованими та плановими системами

Вбудована система cron для планових завдань: створення звітів, очищення даних, оновлення підписки, оновлення AI, роз'ємні синці та ретитри. Діагностика здоров'я з індикаторами попередження.

Політика збереження даних

Налаштуйте, як довго відвідувачі сеансів, чат-транси, історію AI розмови та журнали подій зберігаються. Автоматичне очищення літніх даних для управління зберіганням і дотримання політики збереження.

Діагностика та здоров’я

Система охорони здоров'я, що показує статус Крону, підключення бази даних, статус AI-провайдера, рівень роз’ємів, тарифи на доставку вебок та використання накопичувачів. Попередження щодо питань конфігурації та продуктивності пляшок.

Хто OpsIQ для

Інтернет-магазинів

Магазини

Відстежуйте кожного відвідувача з посадки на придбання. Давайте відповідь AI "Чи є моє замовлення?" за допомогою живого Shopify/WooCommerce/Великі комерційні дані. Керуйте послугами авто-реплів AI. Запустіть договірний трубопровод для оптових і B2B веде. Атрибутовий дохід до джерел трафіку та кампаній. Відстежуйте відмову від кошика з відновленням робочих процесів.

СааС та програмні компанії

СааС

Моніторинг тестових записок та прийняття функцій з релеймуванням сеансу. Відстежуйте, які сторінки документації перетворюються. Автоматична підтримка AI заземлюється у вашому пристрої API docs. Управління надходжень на підписку та розширенням в CRM. Підключіть вашу облікову платформу (Stripe, WHMCS) для відстеження в режимі реального часу МРР. Використовуйте агент з життєвого циклу CRM, щоб виявити та запобігти руйнуванню.

Енергетика та фрілансери

Агенція

Пропонуємо портали з аналітикою та підтримкою білоглобів для клієнтів. Відстежуйте, що через кілька сайтів клієнтів з одного адміністратора. Використовуйте CRM-провідник для управління перспективами і проектами ведеться. Створіть спеціальні роз'єми для клієнтських платформ за допомогою конструктора Connector. Генерувати брендовані SEO звіти з Site Intelligence. Розширити роз’єми ринку як ціннісно-додані послуги.

Хостинг і інфраструктура

Закупи хостинг »

Глибоко WHMCS інтеграція з 80+ дії AI для пошуку замовлень, управління сервісами, DNS, і надання. Авто-попередньо на поширені питання про хостингу за допомогою базових статей бази знань. Відстежуйте роботу сторінки статусу сервера. Керуйте технічними пропозиціями підтримки з тріажем AI. Використовуйте цикл рахунків для щомісячного використання планів життєвого хостингу.

Підприємства-виховання

Підтримка

Зареєструватися 40-70% Відстежуйте роботу команди з часом вирішення, відповідність SLA та CSAT агентом. Використовуйте написання AI для професійної відповіді на складання. Моніторингайте тенденції підтримки AI з інсайтами AI.

Маркетингові та SEO-комунальні послуги

Маркетинг

Повний набір даних Site Intelligence: crawls, технічні SEO-аудити, аналіз контенту, відстеження рівня SERP, ключові слова, моніторинг зворотного зв'язку та локальна мережа SEO. Управління профілю Google. Заплановані звіти про біло-лаборатор для клієнтів. Тестування A/B вбудоване в віджет відстеження. Кампанія інтрибутція по всіх каналах.

Засновники та команди

Стартові

Почати з просто відстеження та чату, безкоштовно додати квитки, коли ви отримуєте об'єм підтримки. Ввімкніть CRM при запуску продажів. Підключіть платформи, як ви приймаєте їх. OpsIQ ваги від однієї особи, що робить все 50- команда операцій з персоналом з RBAC, відділеннями та відстеженням пер-агенту.

Підприємство та багатобрендове

Корпоративний

Підприємство SSO з OIDC для централізованої автентифікації. Багатофункціональна просторова ізольованість для окремих брендів або поділів. Переробочий простір конфігурації AI з різними постачальниками та моделями. Розробка індивідуального роз'єму з дистрибуцією ринку. Аудитні причепи, GDPR інструменти відповідності та політики збереження даних.

Що OpsIQ заміни

Google Analytics + Гарячий берег + Плеймозний

Повна аналітика веб-сайтів з відстеженням відвідувачів, релей сеансу, рейтинги сторінок, георозвідка, інтенсивні воронки, перетворення припливу, події, експерименти A/B та JS, всі зручності конфіденційності, все на одній платформі.

Інтерком + Дрифт + Тідіо

АІ-потужний чат з знанням, багатопрофільним AI підтримка, автодозволенням для людини, проактивними правилами чату, історією спілкування, опитуваннями CSAT та створення квитків від чату.

Zendesk + Освіжаючі

Система ратифікації квитків з відділеннями, пріоритетами, SLA, тріаж AI, автоматично закріплюється за допомогою вбудованої затримки, вставки електронної пошти, складання квитка, злиття квитків, копілоту та повернення на AI-здатку.

HubSpot + Трубопровід + Salesforce

AI-перший CRM з чотирма спеціалізованими агентами штучного інтелекту (Steward, SDR, Retention, Analyst), контроль на трасі Dial автономії, дошка трубопроводів, тренерка по роботі з коучингом, прогнозування, послідовностей, управління життєвим циклом та природною мовою CRM конфігурації.

Ahrefs + SEMrush + Moz

Інформація про сайт з автоматичними пошуками, технічним SEO аудитом, аналізом вмісту, AI-пошуком, відстеженням рейтингів SERP, дослідженням ключових слів, аналізом зв' язків, локальною SEO-граткою і запланованими білими звітами.

Запір + Робити + користувальницький середній посуд

Роз'єм SDK з 25+ попередньо вбудовані роз'єми, конструктор роз'єднувачів (не-код/AI-розроблений/full-code), OAuth потік, webhook auto-реєстрація, великий каталог визначення дії роз'єму, які стають виконувані тільки при встановленні відповідного з'єднувача, ввімкненого, настроюваного і перевіреного, SmartLookup, ринкових та підписаних пакетів.

Менеджер з продажу Google Business

Повний роз'єм GBP: управління рецензією, публікація повідомлень, управління Q&A, завантаження фотографій, синхронізація інформації про бізнес, відстеження інсайтів та відповіді на AI-powered огляд, всі з внутрішньої сторони OpsIQ_.

Інструменти шаблону електронної пошти

Реєстровані шаблони електронної пошти з візуальним редактором, переглядом в реальному часі, змінними чіпами, глобальним управлінням макетів та налаштуваннями для всіх автоматизованих комунікацій.

Управління командними приладами

Вбудована команда виконання: часи вирішення, навантаження, відповідність SLA, CSAT агентом, розвідні ставки, найдовші години, відстеження часу в режимі реального часу і проривів відчуження.

GDPR інструмент відповідності

Нарциси DSAR обробка, видалення даних по всіх системах, управління згодою, політики зберігання та слухових причепів, вбудованих в платформу, не закручуються.

Два видання

Розгортання

OpsIQ працює на керованій інфраструктурі. Робота продукту є однаковою; інфраструктура, оновлення та резервні копії керуються оператором хостингу. Цей посібник документує документи, що належать до бази даних, а саме:OpsIQ час роботи, а не маркетингові або комерційні рахунки.

Модуль самоприховане

Встановити OpsIQ на власний сервер для повного контролю над даними, брендингом, оновленнями та інтеграціями. Вимагає PHP 8.4+, MySQL 5.7+ або MariaDB 10.3+, HTTPS і OpsIQ єдиний крон. Підтримує WHMCS інтеграція як модуль додатків. Повний суверенітет даних.

Рекомендований порядок читання

1
Швидкий старт

Перейдіть на сторінку 30- хвилини, щоб отримати відстеження, чат та базовий AI, який працює на вашому сайті.

2
Dashboard та аналітика

Дізнайтеся, як читати дані відвідувачів, встановити повторення сеансу, визначити результати та зрозуміти шаблони трафіку.

3
Сайт-розвідка

Запустіть свій перший SEO-крав, перевірте своє технічне здоров’я та встановіть відстеження рівня SERP для ваших цільових ключових фраз.

4
Авіаквитки та підтримка

Налаштуйте відділення, налаштовуйте автозареєстрацію з AI, підключайте ввігацію електронної пошти та навчіть штучний інтелект для обробки спільних питань.

5
CRM Comment

Організувати контакти, побудувати свій трубопровод, налаштувати агенти AI, встановити рівень довіра і дати тренеру з питань штучного інтелекту.

6
Інструменти для підключення та розробника

Підключіть свій e-commerce/billing платформу, зробіть користувальницький роз'єм, встановіть вебокки та інтегруйте через REST API.

💡
Новий OpsIQ? Почати з посібником швидкого старту нижче. Ви можете відстежити та перевірити базовий чат AI, що працює під час 30 хвилини.
Почати тут

Швидкий запуск 30 до 1 2 3 4+

Стежте за цими кроками, щоб отримати OpsIQ _. Кожен крок будується на попередньому. До кінця ви будете мати відстеження відвідувачів, AI чат і базову підтримку квитків.

Комплекти
Швидкий контроль запускуНаправлений контроль за налаштуванням, що показує встановлення віджету, підключення платформи, навчання AI, запрошення команди та жива, з 60 відсотковий прогрес бару.ПочатиsetupВстановіть OpsIQ віджетОДОНПідключіть платформу WHMCS, Shopify...)ОДОНВідвідайте ваш AI на вашому сайтіОДОНЗапрошення вашої командиПеревірити і йти житиПрогресування3 з 5 · 60%1STEP 1Встановіть віджет2STEP 2Підключіть та навчайте AI3STEP 3Запрошення та йти жити
Про нас 30- хвилинний шлях: встановити віджет, підключити платформу, навчити AI, запросити команду, потім піти жити.

Про нас 30 Налаштування протоколу

1
Активувати ліцензію

Введіть свій ключ ліцензії OpsIQ admin. Перейти на налаштування, введіть ключ ліцензії, який поставляється для цієї установки, і натисніть кнопку Активувати. Ви повинні бачити зелений "Активний" значок.

2
Налаштуйте свій бізнес-ідентифікатор

Зайдіть до налаштування та заповніть назву вашого бізнесу, промисловість, часовий пояс, валюту за замовчуванням та години підтримки. Ця інформація використовується AI при відповіді на питання клієнтів і аналітикою для звітів про часові зони-посудомі.

3
Оберіть провайдер AI

Перейдіть до розділу Налаштування ШІ і оберіть вашого постачальника. Параметри: Claude (Anthropic), GPT- 4o (OpenAI), Gemini (Google) або Grok (xAI). Введіть ваш API ключ, якщо ви використовуєте власний ключ або скористайтеся керованим штучним інтелектом, якщо такий доступний у вашому плані. Натисніть « Перевірити з’ єднання » для перевірки.

4
Встановіть віджет відстеження

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
Підключіть свій сайт

Якщо ви використовуєте Shopify, WooCommerce, WHMCS Підтримувана платформа, яка надає доступ до AI для замовлення даних, профілів клієнтів та підтримки контексту.

6
Запрошення вашої команди

Перейдіть до пункту Команда, натисніть кнопку Запросити, введіть адресу електронної пошти і роль агента (Власник, Повний адмініструвач або Агент). Агенти мають доступ лише до відділів, які ви їм присвоїли. Власники та повні адміни бачать все.

The fastest possible path (5 minutes)

Крок 1: Встановити віджет

Скопіюйте фрагменти з підключених сайтів і вставте його на свій сайт. Це дає вам змогу негайно відстежити.

Крок 2: Увімкнути AI

Зайдіть на конфігурацію AI, оберіть провайдера, введіть ключ і заощаджуйте. АІ чат тепер активний на вашому сайті.

ОДЯГ

Ви можете додати квитки, CRM та роз'єми пізніше.

День 2: Зробіть це корисно

Додати знання

Перейти до бази знань і додати 5-10 Статті про найпоширеніші питання. AI використовує ці, щоб відповісти на клієнтів точно.

Створення відділень

Поставте квитки до міста, щоб створити принаймні 2 відділи (наприклад, "Салес" і "Підтримка"). Призначте членів команди кожному.

Написати відгук про AI

Зайдіть до AI Training та напишіть запит Замовника AI, який описує ваш бізнес, тонус і правила зарахування.

Тестування розмови

Відкрийте свій сайт в приватному браузері та чаті з AI як клієнт. Перевірте, що відповіді є точними і тональними.

Тиждень 1: Побудувати ваші операції

Підключіть електронну пошту

Встановити поштову скриньку (Gmail, IMAP_, або роз'єм провайдера) так само електронні листи клієнтів автоматично створюють квитки.

Налаштування автозапчастин

Увімкнути квиток автоматично заповнювати для безпечного відділення. Встановіть 2 хвилини затримки, щоб людина могла переходити спочатку.

Аналіз відгуків

Перевірте Dashboard щодня. Подивіться на кількість відвідувачів, швидкість відмов, сторінки та продажі, якщо підключено відстеження.

Почати CRM

Відкрита CRM AI і дайте OpsIQ імпорт контактів з підключених платформ. Огляд дошки трубопроводу.

Місяць 1: Оптимізація

Огляд історії AI

Перевірте історію AI щотижня. Подивіться на неправильні відповіді, пропущені питання та можливості для отримання знань.

Додати проактивні правила

Створіть правило: якщо відвідувач на сторінці ціноутворення для 60+ секунд, покажіть повідомлення про чат, чи потрібна допомога.

Побудувати роз'єм

Якщо ви використовуєте платформу, яка не має вбудованого роз'єму, скористайтеся конструктором роз'єднувача для створення одного.

Налаштування вебок

Розгортання OpsIQ до Ваших внутрішніх інструментів з використанням вихідних вебок для квитків, чату та подій продажів.

Чи можу я пропустити AI і просто використовувати відстеження?+

Так. АІ провайдер необов'язково. OpsIQ працює як чистий аналітичний і касовий майданчик без AI. Ви можете включити AI пізніше, коли ви готові.

Чи можна пропустити роз'єми і додати їх пізніше?+

Так. Роз'єми збагачують AI за допомогою специфічних даних, але OpsIQ працює без них. Почати з відстеженням і чатом, потім підключати платформи при необхідності.

Що робити, якщо я ще не маю веб-сайт?+

Ви все ще можете використовувати OpsIQ для квитків, CRM та командного співробітництва. Відстеження віджету є необов'язковою. Додайте його при готовності вашого сайту.

Як дізнатися, чи встановлено віджет?+

Відвідайте веб-сайт в приватному / анонімному браузері. Потім перевірте OpsIQ Живий корм. Ви повинні бачити свій візит в межах 15 секунди. Якщо немає, перевірте: (1) – хіппе, що засвідчується правильно, (2) є ключем сайту правильно, (3) є блокувальниками оголошень або заголовками CSP, що блокують скрипт.

Почати тут

Повний товар на карті

OpsIQ не є однією з функцій. Це адміністратор оператора, веб-сайт віджету, шар підтримки AI, система квитка/довідка, повна CRM з чотирма агентами AI, люкс Site Intelligence, платформа роз'ємів з ринковим місцем та поверхнею розробника. Тут кожен компонент містить.

Оператор адмін

Dashboard, живий корм, журнал відвідувачів, сеанси, релей сесія, топ-сторінки, георозвідувальна воронка, журнал подій, A / B експерименти, JS відстеження помилок, продаж і перетворення, веде, AI CRM (команд центр, контакти, компанії, угоди, трубна дошка, угода тренерів, прогноз, перспектива, послідовності, життєвий цикл, стевер, Data steward, Будувати мій CRM, CRM налаштування ринку, CRM API_), квитки, чат inbox, проактивні правила, опитування CSAT, електронні проекти, поштові скриньки, AI конфігурації, AI тренінгові сайти, AI інновації, мережеві розробки, підключення AI, компоненти AI, мережевих систем управління знаннями, роз'єднувачів, підключення, розширення бази даних

Замовник-факувальні поверхні

Відстеження веб-сайтів віджету (аналітика beacon + чат + квиток, посольство + пошук бази знань), клієнт AI чат, портал про подання квитків, переглядай особу токени, завантаження файлів, віджет опитування CSAT та центр допомоги клієнтів.

АІ-Перший CRM

Центр команд, контакти, компанії, угоди, дошка трубопроводів з перетягуванням, тренером із питань штучного інтелекту (іноземні сигнали, найближча реакція, ймовірність виграшу), прогнозування доходів, перспективний агент (SDR), автоматизований послідовність спостереження, управління життєвим циклом та зберіганням, агент з зберігання даних (розробка, збагачування, перевірку, перевірка) Створення CRM (натуральна мова налаштування), CRM конфігурація, CRM перевірки здоров'я, Trust Dial (Autopilot/Copilot / Manual per агент), чотири спеціалізовані агенти (Steward, SDR, Retention, Analyst), CRM API _2_

Сайт Інформаційно-аналітичний центр

Автоматизований сайт crawls, технічний SEO-аудит (швидкість, мобільний, Core Web Vitals, SSL, перенаправлення, структуровані дані), перевірка вмісту (з підрахунку слів, прочитуваності, щільність ключових фраз, структура заголовків), AI-powered semantic search, відстеження рівня SERP по двигунах, ключові слова з можливістю забивання, аналізу зворотного зв'язку та моніторингу, локальна візуалізація сітки, синхронізація профілю Google Business Profile (огляди, повідомлення, Q&A, фотографії, інсайти), заплановані звіти (daily/weekly/monthly/ місяць), а також білий-label PDF вихід для агенцій.

АІ та автоматизація

Клієнт AI чат (multi-provider: Claude, GPT-4o, Gemini, Grok), адміністратор AI асистента, AI-розробник, автозняття з настройковим ревертом, робочою зоною конфігурації штучного інтелекту, керованого AI та BYOK Режими, токени бюджетів та контроль за витратами, стеження з історії AI, аналіз інтелекту, квитковий тріаж AI, кв.м. авто-ремонт із затримкою, написанням AI (сепаративна підказка), а також копілотом адміністратора.

Роз'єми та інтеграція

25+ pre-built connectors (Shopify, WooCommerce, BigCommerce, Magento 2, 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), generic OAuth flow with PKCE, connector marketplace with paid distribution, connector signing and verification, SmartLookup fuzzy matching, a large catalogue of HTTP action definitions whose availability depends on connector installation, enablement, configuration and validation, knowledge sync, and workflow recipes.

Платформа розробника

REST API (visitors, events, tickets, contacts, settings, connectors), OpenAPI spec, API key management, outbound webhooks (async, signed, retried, SSRF-guarded, auto-disable), Events API for custom event ingestion, widget SDK with identity resolution, triggers cookbook, action contracts, connector SDK, marketplace packaging, server-side SDKs (PHP, Node.js), WordPress plugin, and WHMCS module.

Налаштування та операції

Бізнес-ідентифікатор, конфігурація AI в робочому просторі, налаштування відстеження, безпека (HSTS, Permissions-Policy, IP блокування, захист від брютів), RBAC (Owner/Full Admin/Agent), управління командою та запрошення, панель виконання команд, відстеження присутності адміністратора, система шаблону електронної пошти (реєстр-драйв, візуальний редактор, змінні чіпси), дизайнер опитування, доменне знання, налаштування квитків, брендування, політики зберігання даних, управління циклами обліку рахунків (помісячно через термін служби), валютна нормалізація, імпорт/експорт, діагностика, автоматизація крон і зона небезпеки.

Безпека та відповідність

Підприємство SSO (OIDC з перевіркою JWKS, надання JIT), SAML налаштування, GDPR/DSAR обробка (експорт і видалення по всій системі), видалення даних за контактом, управління згодою, ізоляції робочих місць (обмежений контрольний пункт), слухові причепи, не вдалося відслідковувати логін, IP блокування, вихідний webhook SSRF охоронець і політики збереження даних.

Міста-виробник

Управління штучного інтелекту проксіюється через OpsIQ Про компанію URL, Сайт-розвідник провайдера дзвінків, ліцензійна перевірка, звіти про здоров’я, PDF надання та експорт даних, всі маршрутизовані через кінцеву точку постачальника, не прямій API дзвінки з сервера.

Що таке адміністратор

Ташборд

БРОНЮВАННЯ

Щоденний центр команд: огляд трафіку, кількість відвідувачів живого відвідувача, загальний обсяг продажів, підтримка глибини черг, попередження активності AI та швидких дій.

Жива кормова

Аналітика

Поточний час відвідувача: перегляди сторінок, чат починається, форму подання та інтенсивні сигнали оновлення кожні кілька секунд з країною, пристроєм і фільтрами реферера.

Журнал відвідувачів

Аналітика

Повний запис візиту: пристрій, браузер, ОС, країна, місто, референт, UTM парами, landing page, ідентичність та повна історія перегляду сторінок.

Сесій

Аналітика

Перегляд: потік сторінок, час на сторінці, глибина прокрутки, шлях перетворення та вихідна сторінка для кожного сеансу відвідувачів.

Відтворення сеансу

Аналітика

Часовий відтворення захоплених подій: рух мишки, кліки, прокрутки, переходи сторінок і форму взаємодії для UX діагностики.

Топ сторінки

Аналітика

Рейтинг продуктивності сторінок: візити, час залучення, швидкість відмов, перетворення, підтримка взаємодій та напрямок тренду.

Георозвідувальний

Аналітика

Географічні звіти: поломка країни/міста з картами, розподіл пристроїв, обмін трафіком, джерелами ринку та проникненням на ринок.

Інтенсивне воронку

Аналітика

Відстеження відпрацьованих даних: візити до ціноутворення, частота повернення, перегляд документів, підтримка взаємодій та користувацькі сигнали з ймовірністю перетворення.

Журнал подій

Аналітика

Історія подій: перегляд сторінок, користувацькі події, чати, покупки, подання форм з повним метаданих та фільтруванням.

A / B експерименти

Аналітика

Спліт тестування: створення варіантів, виділення трафіку, визначення цілей, вимірювання значення та декларування переможців, всі з внутрішньої сторони OpsIQ.

JS помилки

Аналітика

Захоплення помилок Frontend: повідомлення, сліди стека, уражені браузери, частота, постраждалі сторінки та відстеження трендів.

Продаж

Продаж

Виручити панель: замовлення, оновлення, повернення коштів, приплив на джерело, продуктивність кампанії, порівняння періоду та аналіз тенденцій.

Магістр

Продаж

Провідне управління: забивання, джерело атрибуту, CRM статус, контактні дані, поведінкові сигнали та маршрутизація трубопроводів.

А. А. CRM_

CRM Comment

Повний CRM: командний центр, контакти, компанії, угоди, дошка трубопроводів, тренерство, прогноз, перспектива, послідовність, життєвий цикл, стевард даних та здоров'я.

Авіаквитки

Підтримка

Підтримка inbox: відділи, пріоритети, SLA відстеження, AI triage, автозапчастини, внутрішні ноти, вкладення файлів, злиття та управління статусом.

Чат вбоксі

Підтримка

Живі розмови: AI і людський чат, ручка, співпраця, історія спілкування, особистість клієнтів та колекція CSAT.

Чернетки електронних листів

Підтримка

Управління електронною поштою: вхідна пошта на квитки, AI-просований відповідь композиції, вибір шаблонів та налаштування поштових скриньок.

Налаштування AI

А. А.

Налаштування постачальника: виберіть Claude/GPT-4o/Gemini/Грок, введіть API Ключові або увімкнені керованого AI, встановленої моделі, температури та токени бюджетів на робочому просторі.

Аспірантура

А. А.

Проблемне авторство: клієнтські та адміністратор-замовлення підказок, правила зарахування, правила тонування, правила заборонених тем і гранична конфігурація.

Історія

А. А.

Конверситетний аудит: повний запит / журнали, використання токенів, вартість за розмову, постачальник, модельна версія та результат вирішення.

Інсайти AI

А. А.

Аналіз шаблонів: загальні питання, норми роздільної здатності, частота відключення, задоволення за темою та визначенням проміжок.

База знань

А. А.

Зміст навчання AI: статті, записи з питань пошуку, док-файли, знання роз'ємів та користувацькі записи. Семантичний і ключовий пошук фрази для штучного заземлення.

Конектори

Інтеграції

Інтеграція hub: встановлені роз'єми, стан здоров'я, інвентаризація дій, управління обліковими записами, браузери ринку та конструктора.

З'єднувані сайти

Налаштування

Управління сайтом: відстеження фрагмента, ключ сайту, налаштування віджету, настройки доменів та ізоляції робочих місць на місці.

Команда

Налаштування

Управління Користувачами: запрошують учасників, призначають ролі (Венер/Повний адміністратор/Агент), встановіть доступ до відділу та керувати дозволами.

Командна робота

Налаштування

Опс метрики: час вирішення, навантаження, відповідність SLA, CSAT агентом, розвідні ставки, найдовші години і аналіз тенденції.

Налаштування

Налаштування

Конфігурація: бізнес-ідентифікатор, налаштування AI, відстеження, безпека, брендування, зберігання, шаблони електронної пошти, вексельна система, імпорт/експорт, діагностика та зона небезпеки.

ЛІТЕРА

Налаштування

Управління планами: ліцензія, особливості плану, використання метрики, дата оновлення та опції оновлень.

Почати тут

Керівництво по картону

Укладання нової установки в роботу OpsIQ робоче місце і може бути лівою і відновлена без втрати прогресу.

Екран продукту
НавісНа борту відображається кожен кут встановлення, його поточний стан і наступна дія для завершення.Навісробоча зонаPROGRESS60%COMPLETED6ЕКСТВіджетиОГЛЯД РОБОТИЛІТЕРАПеревірка ліцензії продуктуОДЯГАудиторіяВиберіть провайдера та тест ключОДЯГПозначитиБізнес-ідентифікатор та тонОДЯГВеб- сайтДодати сайт і встановити віджетНаступний1COMPLETE BASICSЛіцензійна, бренд, AI2CONNECT DATAСайт і роз'єм3VERIFY LAUNCHКоманда, електронна пошта, перевіряючі
На борту відображається кожен кут встановлення, його поточний стан і наступна дія для завершення.

Рекомендована послідовність

  1. Ліцензія: внести відповідальність і підтвердити робочу площу.
  2. АІ-провайдер: оберіть провайдер/модель, введіть облікові дані та запустіть тест з'єднання. AI може бути пропущений, якщо робоче місце спочатку буде використовувати аналітичні дані і квитки тільки.
  3. Бізнес-ідентифікатор: встановити назву, промисловість, опис, клієнтообмінний тон і деталі бренду, які використовуються віджетом та AI.
  4. Роз'єм: Увімкніть принаймні одну зовнішню платформу, коли OpsIQ _для замовлень, клієнтів, квитків, електронної пошти або іншого контексту платформи.
  5. Сайт і віджет: створити сайт/робочий простір, скопіювати ключ сайту і перевірити приватний візит до мережі Live Feed.
  6. Команди та маршрутизація: Запрошення адміністраторів/агентів, створення відділень, встановлення маршрутизації електронної пошти та підтвердження параметрів повідомлень.
  7. Відгуки про Go-live: test chat, квиток, синхронізація роз'єму, cron, вихідний email, webhooks і безпеки заголовків.

Передача в бортове місце повинна показувати завершені кроки, а не захопити решту.

Почати тут

Адміністрування та дозволи

The OpsIQ Sidebar - це дозвіл-довідник. Ця карта пояснює, де кожен операційний район живе і чому сторінка може бути не видно кожному адміністратору.

Екран продукту
OpsIQ _НавігаціяУ бокових групах OpsIQ за робочою зоною; окремі посилання з'являються лише при наявності поточної ролі.OpsIQ _Навігаціяробоча зонаGROUPS8ПІБДозвіл на використанняSEARCHДоступнийОГЛЯД РОБОТИПідтримкаАвіаквитки, електронна пошта, CSAT, знанняВідкритоCRM CommentКонтакти, трубопроводи, пропозиції, перспективаВідкритоАвтоматикаРобочі процеси, правила, ціліВідкритоБезпека та конфіденційністьОгляд, аудит, згода, блокиАдміністратор1PICK A GROUPЗібрати бічну панель2CHECK ROLEПриховані засоби обмежені3USE PAGE HELPВідкрийте розділ відповідності
У бокових групах OpsIQ за робочою зоною; окремі посилання з'являються лише при наявності поточної ролі.
Підтримка

Квитки, команда електронної платформи, CSAT, Центр допомоги і чатботи.

CRM Comment

щоденні продажні поверхні: CRM Головна, командний центр, контакти, трубопровід, прогноз, життєвий цикл, перспектива, сегменти, лідерство, затвердження угод, дані steward, інструменти росту та потік активності.

Автоматика

Цілі та завдання перетворення подій.

Маркетинг

Аутрейч, проактивні повідомлення, анонси, Промо-студія, Студія обстеження, штовхання кампаній та екскурсійних турів.

Аналітика

Повідомляти поверхні першим — Аналітика Hub, AI Insights, продажі, клієнти, веде, воронки, тести A/B, реплести сеансу, спеціальні панельні прилади та заплановані звіти — з сирим відвідувачем, сесія, сторінка, географія і журнали подій у субсекції Raw Data.

Стійкі сторінки

Огляд сайту, робота команди та зворотний зв'язок сидять за межами груп як прямі записи.

Інтеграції

Роз'єми, дії та тригери, поштові скриньки, проекти, налаштування електронної пошти, вхідні кінцеві точки, вихідні вебокки та API ключі.

Безпека та конфіденційність

Огляд безпеки, конфіденційність та відповідність файлів cookie, згоду на проведення перевірок, не вдалося увійти в систему, блокування IPs і JavaScript помилки.

Налаштування

Основи робочої сфери (генеральні, командні, сайти, мови), потім згортаються підрозділи: AI Brain (інструкції, налаштування, оцінка, історія), CRM Setup (будівельник, користувацькі поля, забивання, здоров'я), Дані та Здоров'я (діагностика, експорт) і Отримання Стартова (на борту, допомога).

Сторінки, що не можна відкрити, приховані з боковини. Сторінки поточного плану не включають перебування видимого з Модернізація тег і відкрити екран оновлення додатку.

Прямі маршрути все ще перевіряють сервер-за межами. Прихильник не є обов'язковим посиланням: кожен захищений дія повинен пройти його дозвіл і робочі місця перевірки.

Аналітика

Центр аналітики

Аналітика hub надає підтримку, чат, AI, відвідувачу та агентів, що звітують у один робочий простір з експортованими результатами.

Екран продукту
Центр аналітикиАналітика Hub показує діапазон дати, метричні карти та вкладки для підтримки, чату, AI, відвідувачів та агента.Центр аналітикиробоча зонаТИКЕТИ184AI RESOLVE63%CSAT_4.7ОГЛЯД РОБОТИПідтримкаСтворено, закритий, кінець, SLAВкладкаБалачкаЧас роботи з AI/людом та часом обробкиВкладкаА. А.Конфіденція, зворотний зв'язок, використання токенівВкладкаАкумуляторОб'єм, швидкість і задоволенняВкладка1CHOOSE DATESЗареєструвати або користуватись2CHANGE TABПідтримка агента3EXPORTЗавантажити CSV
Аналітика Hub показує діапазон дати, метричні карти та вкладки для підтримки, чату, AI, відвідувачів та агента.

Фільтри та контрольні

  • Використовуйте попередній або користувальницький з/до діапазон, потім перезавантажити будь-яку картку і діаграму за той же період.
  • Експорт CSV експортується активний аналітичний вигляд, а не скріншот.
  • Операційне копіювання є автоматичним; зміна сайтів зміни базового набору даних.

Які заходи для кожної вкладки

  • Підтримка: квитки, створені/закриті/передбачувані, перші відповіді, дозвіл, перша контактна роздільна здатність, SLA та пріоритетні / вихідні / статистика розбиття.
  • Контакт: Стартували сесії, AI-рішення, ескалації, відмова, час обробки, повідомлення за сеанс та AI/люд/all CSAT.
  • AI: середня впевненість, низька відповідальність, точність трієсу, зворотний зв'язок, дефлекція знань, використання токену/кашею, а також предмети, які потребують рецензування.
  • Відвідувач: тенденції руху та залучення до обраного періоду.
  • Агент: заочне навантаження, швидкість, закриття та задоволення заходів.

Використовуйте аналітичний центр для перехресного огляду; використовуйте виділені відвідувачі, квитки, CSAT, AI History та сторінки продуктивності команди, коли вам потрібно вивчити рівень запису.

Аналітика

Дяшборд

Dashboard - це ваш щоденний центр команд. Він показує трафік, продажі, підтримку навантаження, активність AI та показники перетворення в одному виді. Відкрийте його щоране, щоб зрозуміти, що відбулося ніч і які потреби сьогодні.

Ташборд
Огляд панельної панеліОгляд екрана, керований OpsIQ Intelligence AI панель (з щоденним коротким, смарт-оповіщення, прогноз), KPI віджет плитка і семиденний віджет трафіку, плюс контроль за розкладом.Оглядробоча зонаOPSIQ ІНТЕЛІГЕНЦІЯПідбір аналізів та OpsIQЩоденне брифінгСмарт сповіщенняПрогнозРесет макетВІЗОРСЬКІ ТОНИ2,481+12%ОБОВ'ЯЗОК$8.2k+5%ВІДКРИТТЯ КУРСИ143 SLAТрафік · Останній 7 до 11AI-FIRSTOpsIQ Панель управління розвідки2WIDGETSКПІ плитка ви влаштуєте3ЦЕНА ЗА ЧАСРозмітка перезавантаження в будь-який час
Екран реального огляду: OpsIQ Ви влаштовуєте себе розвідувальну панель (запишіть аналіз і він пише) над віджетами KPI.

Картки Dashboard пояснені

жива

Кількість людей на вашому сайті прямо зараз. Це оновлення кожного 15 секунди (налаштувати). Відвідувач "активний" якщо вони завантажили сторінку в активному порозі (за замовчуванням: 90 час.

Унікальні відвідувачі

Скільки людей відвідали ваш сайт в вибраному діапазоні дати. OpsIQ _2 визначаються відвідувачі по комбінації відбитків пальців, печива та (за наявності) автентичної ідентичності.

Новий проти повернення

Перш за все, відвідувачі сайту побачать. Повернувшись до відвідувачів, ви можете побачити більше. Високий коефіцієнт повернення коштів означає, що ваш контент приносить людям назад. Дуже низький відсоток повернення може означати, що ви не зберігаєте інтерес.

Нормативно-правова форма

Відсоток відвідувачів, які залишили після перегляду тільки однієї сторінки. Ставка на відмову вище 70% на цільових сторінках зазвичай означає, що сторінка не відповідає очікуванням відвідувачів, неправильному вмісту, повільному завантаженні або поганий мобільний досвід.

Середній час на сторінці

Скільки часу відвідувачів витрачають на кожну сторінку в середньому. Дуже короткі часи (від 10 секунд) на сторінках контенту, які пропонують контент не засвоюється. Дуже довго час на сторінці чекауту може вказувати плутанини.

Заблоковано загрозу

IP адреси, які OpsIQ ідентифікований як потенційно шкідливий на основі забивання загроз, ударних спроб або ручних блоків. Натисніть, щоб побачити блоковані IPs Список.

Продаж сьогодні / в цьому тижні / в цей місяць

Виручити з підключених джерел продажу (Shopify, WooCommerce, Stripe, і т.д.). Якщо продажі показувати нуль, перевірте, що ваш роз'єм платформи підключений і синхронізація.

Графік трендів

Графік роботи на графіку показує кількість відвідувачів за вибраним діапазоном дати. Подивіться на шаблони: дорожні походи (кампанії, прес згадки), діпси (дивитися, святкові дні) та стійких тенденцій.

Джерела

Де ви приїжджаєте з: прямо, Google, соціальні медіа, електронні кампанії, реферальні сайти. Використовуйте це для розуміння того, які маркетингові канали працюють.

Кращі браузери

Chrome, Safari, Firefox, Edge та інші. Якщо веб-переглядач має незвично високий рівень відмов, ви можете мати можливість мати CSS або JavaScript питання сумісності.

Почасова схема теплоти

Сітчаста гра, що показує активність відвідувачів за годину дня і день тижня. Використовуйте це для того, щоб вирішити, коли планувати підтримку зсувів, коли надсилати оголошення, а при запуску просування.

Останні відвідувачі

Останні кілька відвідувачів з країною, сторінками, пристроєм та джерелом. Корисно для швидкого очисного місця під час кампаній.

Використання фільтра діапазону дати

Натисніть на дату пікіровка вгорі праворуч від панелі інструментів. Пресети: Сьогодні, Вчора, Останнє 7 день, Останній 30 днів, Цього місяця, Останній місяць, Індивідуальний діапазон. Всі карти та діаграми оновлення при зміні діапазону. Діапазон дати знаходиться у вашому настроєному часовому поясі (встановлюється в налаштуваннях).

На прикладі

Дослідження швидкості унції

Сценаріо:
Виграшний курс, що стрибає з 45% до 78% на цьому тижні. Що відбулося?
Що робити:

Перевірити:1) Чи можна змінити конкретну сторінку посадки? Перейдіть до Топ-сторінок та сортуйте за курсом bounce. (2) Чи відправляється кампанія на неправильну сторінку? Перевірте Топ Джерела для нових рефераторів. (3) Чи поломка сайту на мобільних пристроях? Перевірити переадресацію браузера для тарифу мобільного бунтування. (4) Чи є це бот трафік? Перевірте лічильники та деталі відвідувачів для підозрілих шаблонів.

Zero відвідувачів на панелі інструментів

Сценаріо:
Випадкові шоу 0 Ви можете скористатися послугами сайту.
Що робити:

Перевірити:1) Чи встановлено віджет відстеження? Переглянути код і пошук вашого веб-сайту OpsIQ скрипт.2) Чи правильно сайт ключа? Порівняйте дані-під ключ у скрипті з ключем в підключених сайтах. (3) Чи є CDN або кеш, що подається застібкою сторінки без скрипта? Очистити кеш CDN. (4) Чи блокувальник реклами або заголовок CSP, що блокує скрипт? Перевірте консолі браузера для блокування запитів.

Читання часової теплової карти

Сценаріо:
Напередодні Днями, але нічого не на вихідних.
Що робити:

Це шаблон трафіку B2B. Ваші відвідувачі працюють з переглядом бізнес-годинників. Застосування: (1) Графік роботи персоналу на будні дні. (2) Відправте електронні кампанії Вівторок-четверк. (3) Вікні обслуговування вікон безпечні. (4) Розгляньте, пропонуючи живий чат тільки під час пікових годин.

Перехід трафіку з невідомого джерела

Сценаріо:
Ви бачите раптове походу 500 відвідувачів за годину від невідомого референта.
Що робити:

Перейти до Відвідувачів і фільтрувати за допомогою вікна часу. Перевірте:1) Чи є вони реальні відвідувачі або боти? Подивіться на тривалість сеансу, сторінки переглядаються та різноманітність браузера. (2) Якщо реальна, яку сторінку вони висаджують? (3) Перевірити референт URL. Хтось може бути пов'язаний з вами від Reddit, Hacker News або популярного блогу. (4) Якщо це трафік для ботів, перевірте загрозу і розглянемо блокування IP діапазон.

Чому мій відвідувач відрізняється від Google Analytics?+

OpsIQ кількість відвідувачів по-різному. Використовує відбитки пальців і файли cookie, в той час як GA використовує різні моделі файлів cookie. Бот фільтрування, ставки блокування реклами та порядок завантаження сценаріїв також може викликати відмінності. A 10-20% варіант нормалізується.

Чи можу я поєднати панель інструментів в іншому інструменті?+

Дяшна панель призначена для OpsIQ admin. Для зовнішньої звітності використовуйте REST API вивести дані аналітики та відображати його у власній панелі інструментів або BI.

Що означає «загроз»?+

Він рахує IP адреси, які OpsIQ має прапорець або блокований на основі забитих загроз, повторно не вдалося увійти, або ручних блоків. Натисніть кнопку «під ключ» щоб побачити деталі та керувати блоками.

Аналітика

Журнал відвідувачів

Журнал Відвідувача показує кожен візит на ваш трекінг веб-сайти. Кожен рядок - це одне завантаження сторінки з одного відвідувача. Використовуйте його для вивчення поведінки відвідувачів, пошуку руху кампанії та діагностування проблем відстеження.

Журнал відвідувачів
Журнал відвідувачівЖурнальний столик з фільтром (дата, пошук)IP/email/city, джерело, пристрій) та стовпці для IP/email, місце розташування, джерело, пристрій та час, з прапореним загрозою рядка.Журнал відвідувачівyoursite.com7 до 1Search IP_, електронна пошта, місто...Джерело ▾Пристрої ▾IP/ EMAILЛІКАЦІЙДжерелоПРИСТРОЙВІЧ[email protected]_США · Нью-ЙоркgoogleТорговий центр2m41.62.10.4Великобританія · ЛондонdirectМобільний6m[email protected]_DE · Берлінutm: adsМобільний14m203.0.113.9NG · ЛагосreferralТорговий центрthreat1–25 з 3,402Сесія →1FILTERДата · пошук · джерело · пристрій2REAL COLUMNSIP/Пошта · розташування · пристрій · загроза3DRILL INВідкриваємо повну сцену
Журнал реального відвідувача: фільтр за датою, пошуком та пристроєм, потім прочитайте кожен візит IP/email, місце розташування, джерело, пристрій і час, загрози, позначені червоним кольором.

Що показує кожен рядок

IP Контакти

Відвідувачі IP адреса. Анонімізований якщо IP Аномізація включена в налаштуваннях. Натисніть, щоб побачити всі візити з цього IP.

Країна та місто

Detected from the IP address using GeoIP data. Requires MaxMind GeoLite2 database or Cloudflare geo headers. Shows "Unknown" if GeoIP is not configured.

ПАРТНЕРСТВО URL

На сторінці відвідувача завантажили. Натисніть, щоб побачити повну URL. Довгий URLs обрізаються у вигляді таблиці.

Реферер

Де прибув відвідувача перед посадкою на сайті. "Дивід" не означає референт (книжки, задані URLs, деякі посилання на додаток).

Пристрої та браузери

Тип пристрою відвідувача (десктоп, мобільний, планшет) та браузер (Хреом, Safari, Firefox тощо). Зібрані з головки Користувача-Агента.

Дата і час

Коли сторінка була завантажена, в налаштуваннях часового поясу.

Клієнти

Якщо відвідувач виявлений (вказаний токени або логін), то ім'я чи по електронній пошті. В іншому випадку відображається як анонімно.

Фільтри

Дата- діапазон

Фільтрувати візити до певного періоду часу. За замовчуванням: останні 7 Днів.

Юридична адреса

Пошук по IP веб-сайт URL, реферер, країна або електронну пошту клієнта.

Джерело

Фільтр за джерелом трафіку: Прямий, органічний, соціальний, рефераловий, Плата, електронна пошта.

Пристрої

Фільтрувати за допомогою настільного комп'ютера, мобільного або планшета.

Нові

Покажіть лише відвідувачі, які ніколи не були бачити.

На прикладі

Знайти відвідувачів з конкретної кампанії

Сценаріо:
You launched a Google Ads campaign with UTM parameter utm_source=google&utm_medium=cpc&utm_campaign=summer-sale. How do you find those visitors?
Що робити:

У журналі Відвідувача використовується поле пошуку і тип "літ-продаж". Пошук перевіряє референт URLs стор.URLs, так що параметри UTM будуть відповідати. Ви також можете відфільтрувати за допомогою джерела = Подати в звуження далі.

Знайти клієнта, який повідомив про проблему

Сценаріо:
Якщо ви хочете дізнатися більше про своє запитання?
Що робити:

Пошук по електронній пошті адреси в журналі Відвідувача. Якщо вони були зареєстровані, їх особистість з'явиться. Встановити дата діапазону до вчора. Подивіться на візити для оформлення сторінок навколо 3pm. Натисніть їх сеанс, щоб побачити повний потік сторінки і будь-який JavaScript помилки.

Виберіть петлю вдарунку або скребковий апарат

Сценаріо:
Ви помітили IP адреса має 500+ візити в одну годину, всі до тієї ж сторінки.
Що робити:

Це, швидше за все, бот, скребок або зламаний сценарій. Перейти до Візанту Log і шукати тим, що IP. Перевірте:1) Чи є всі візити на тій же сторінці? (2) Чи відомий агент користувача бот? (3) Чи є тривалість сеансу завжди 0 секунди? Якщо підтверджено як бот, перейдіть до служби безпеки і заблокуйте IP.

Журнал відвідувачів проти сеансів

Журнал відвідувачів

Визначте, що на сторінці є обов’язковими для використання файлів.

Сесій

Групові сторінки переглядаються в подорожі. Один рядок за сеанс відвідування. Найкраще для: розуміння потоку користувачів, тривалість вимірювальної сесії, визначення шляхів перетворення.

Жива кормова

В даний час на вашому сайті ми покажемо відвідувачів. Найкраще для: моніторингові кампанії в прогресі, розмітки високих відвідувачів, можливості підтримки.

Чому я бачу власні візити в журналі?+

OpsIQ дотримуйтесь всіх відвідувань за замовчуванням. Щоб виключити свій власний трафік, додайте ваш IP адреса до виключеного IPs Список в Налаштуваннях > Відстеження.

Чому відвідувач шоу «Невідомий» країна?+

GeoIP пошук вимагає або Cloudflare геоголовки (автоматична при використанні Cloudflare) або файл бази даних MaxMind GeoLite2. Перевірити налаштування > Шлях GeoIP, щоб забезпечити доступ до файлів бази даних та прочитано.

Скільки часу зберігаються дані відвідувачів?+

Дані відвідувача зберігаються на період зберігання, встановлених у налаштуваннях (за замовчуванням: 90 днів). Після цього старі записи автоматично очищаються за допомогою роботи з утриманням корони.

Аналітика

Сесій

Сесій групувати декілька переглядів сторінок з тієї ж особи в одну подорож. Хоча Журнал Відвідувача показує індивідуальні завантаження сторінок, сеанси показують, як люди переміщаються через ваш сайт від посадки до виходу.

Сесій
СесійЖурнал Сесія з IP, країна, пристрій, джерело, тривалість та сторінки колони, і позначений загрозний ряд.Сесійyoursite.comКраїна (NG)Журнал сеансівIP(S)КРАЇНАПРИСТРОЙДжерелоБУРАЦІЯПІБ41.62.10.4УКРАЇНСЬКАТорговий центрgoogle3m 12s6102.89.6.2НГМобільнийdirect1m 05s388.21.4.9ОДЯГТорговий центрutm: ads7m 48s11203.0.113.9АМЕРИМобільнийreferral0m 42s21SESSION LOGГрупові поїздки2COLUMNSКраїна · пристрій · джерело · тривалість3THREATРизико-психіаційних сесій
Журнал реального сеансу: кожен відвідувач подорож як ряд (IP_, країна, пристрій, джерело, тривалість та сторінки) з ризикованими сесійами, що зазначають червоним кольором.

Як працює сеанси

Сесія починається, коли відвідувач завантажує свою першу сторінку. Вона продовжується, як вони навігують на більше сторінок. За сеансом закінчується, коли Відвідувач неактивний для часу сеансу (за замовчуванням: 30 хвилин) або закриває свій браузер. Так само людина повертається після закінчення часу створює нову сеанс.

Що показує кожен сеанс

Перша сторінка

Сторінка посадки, де відвідувач вступив на сайт. Це говорить вам, який контент приваблює людей.

Останні новини

Якщо ви не хочете, щоб зробити це з вами, то ви можете порівнювати.

Кількість сторінок

Скільки сторінок відвідувача переглядаються в цьому сеансі. Більшість сторінок зазвичай означає більше залучення, але це також може означати відвідувачів втрачено.

Тривалість

Час від першого завантаження сторінок до останнього навантаження. Сесія з 0 секунди є відмовами (видалення сторінки, не подальшої взаємодії).

Джерело

Джерело трафіку для цієї сесії (реж., Google, соціальний, реферал тощо).

Країна

Визначена країна від відвідувача IP адреса.

БУТ

Якщо відвідувач, який залишив після перегляду лише одну сторінку. Вимкнені сеанси мають червоний показник.

Перетворення

Якщо відвідувач завершився відстеження події перетворення (купівля, реєстрація, подання форми) під час проведення цієї сесії.

Фільтри

Юридична адреса

Пошук по IP, електронна пошта, сторінка URL, або референт в рамках сеансів.

Тип

Фільтрувати нові відвідувачі (перша сесія коли-небудь) або Повернення відвідувачів.

Джерело

Фільтр за допомогою джерела трафіку.

Країна

Фільтрувати за містом, щоб побачити сеанси з конкретної області.

Закуски/Покарання

Фільтр для показання тільки відмовлених сеансів або сеансів, які зафіксовані як загрози.

На прикладі

Профіль клієнта високої чіткості

Сценаріо:
Клієнт просто зробив велику покупку. Ви хочете зрозуміти свою подорож перед покупкою.
Що робити:

Пошук по електронній пошті в Сесіях. Подивіться на всі свої сеанси:1) Скільки разів вони відвідали перед покупкою? (2) Які сторінки вони виглядали? (3) Чи використовують чат або відкрити квиток? (4) Який був загальний час від першого візиту до покупки? Це говорить вам типову подорож купівлі для клієнтів високої якості.

Виявлення логіну з нового місця

Сценаріо:
Клієнт зазвичай ввійшов з Нігерії, але ви бачите сеанс з Росії.
Що робити:

Пошук по електронній пошті клієнтів в Сесіях. Порівняйте країну останніх сеансів. Якщо сеанс раптом з'являється з незвичайної країни, це може бути законним про подорожі або компромісний рахунок. Перевірте:1) Чи була спроба відмовити входу перед успішним? (2) Чи був IP змінити в одному сеансі? Прапорити його для перегляду, якщо підозрілий.

Що таке різниця між сеансом та відвідувачем?+

Відвідувач – людина (або браузер). Сесія є одним візитом від тієї особи. Такий же відвідувач може мати багато сеансів протягом часу. Сеанси, що закінчуються після закінчення строку.

Як OpsIQ ідентифікувати зворотні відвідувачі?+

OpsIQ Використовуйте поєднання файлів cookie, відбитків пальців браузера та автентифікованих жетонів. Якщо відвідувач очищає свої файли cookie і не ввійде, вони з'являться як новий відвідувач.

Аналітика

Жива кормова

В даний час на сайті в режимі реального часу ми автоматично оновлюємо всі дані. 15 секунди (налаштовується). Використовуйте його під час кампаній, запуску продукту та періодів підтримки для перегляду чого відбувається прямо зараз.

Жива кормова
Жива кормоваПоточний час діяльності показує кількість онлайн-візорів та живлення останніх дій відвідувачів за межами країни.Жива кормоваyoursite.com37відвідувачів онлайнДіяльністьзаразУСА · перегляд /pricing2sВеликобританія · почав чат5sDE · додано в кошик9sCA · завершено реєстрацію1RIGHT NOWПобачити, хто на місці2AUTO-REFRESHОновлення кожного 15s3АКЦІЇПеремикач в чат
Дивись, хто на вашому сайті це другий і що вони роблять, освіжаючи автоматично кожен 15 час.

Як працює

У режимі реального живлення випило сервер на налаштованому інтервалі оновлень. Кожен рядок показує відвідувача в даний час на вашому сайті: їх поточний сайт, країна, пристрій, джерело, тривалість сеансу та кількість сторінок. Зелені виділені джерела вказують нову активність з останнього оновлення. Натисніть будь-який ряд відвідувачів, щоб побачити його повну інформацію про сеанс.

Налаштування

Реверситет

Як часто оновлення живих кормів. За замовчуванням: 15 секунд. Низькі значення (нижчі значення)5-10s) дати більш швидке оновлення, але використовувати більше ресурсів сервера. Вищі значення (30-60s) простіше на сервері, але менше в режимі реального часу.

Активний поріг

Як довго відвідувач вважається "активним" після останнього завантаження сторінок. За замовчуванням: 90 секунди. Якщо відвідувач завантажує сторінку, а потім читає його для 2 хвилин без натискання, вони зникнуть від живого корму після порогу.

Кнопка запобіжника

Натисніть кнопку Запобігти автоматичному реверсу. Корисно, коли ви хочете читати деталі без оновлення списку. Натисніть Резюме для перезавантаження.

На прикладі

Покажіть гарячий свинець під час кампанії

Сценаріо:
Ви працюєте з запуском продукту. Відвідувач просто переглядав вашу сторінку, потім функції, а потім ціноутворення і тепер на сторінці замовлення.
Що робити:

Це високоінтенсивна поведінка. У живому кормі:1) Натисніть відвідувача, щоб побачити їх сеанс. (2) Якщо вони починають чат, AI буде мати свій повний шляховий контекст. (3) Якщо вони залишають без покупки, вони стають лідером на сторінці Провідних. (4) Розглянемо створення проактивного правила, щоб показати чат повідомлення при відвідуванні сайту.

Занадто багато відвідувачів з того ж IP

Сценаріо:
Ви дивитесь 20 відвідувачів з тієї ж IP адреса, всі на різних сторінках.
Що робити:

Це може бути:1) Офіс з загальним інтернетом. Перевірте, чи переглядають візити реальної людини (різдвяні сторінки, розумні тривалість сеансу)2) Бот або скребок. Перевірте, чи є сеанси дуже короткими (0-1 секунди) або попадання сторінок систематично. (3) Тест на навантаження. Якщо ви працюєте автоматизовані тести, виключіть IP від відстеження.

Чому шоу живого корму 0 відвідувачів, коли мій сайт має трафік?+

Перевірити:1) Чи встановлений сценарій віджету на вашому сайті? (2) Чи правильно сайт ключ? (3) Чи пройшов активний поріг? (4) Чи використовують агресивні блокувальники оголошень, які заблокують скрипт відстеження?

Чи можна фільтрувати живу корм за допомогою країни або пристрою?+

Жива кормова активна для відвідувачів. Для фільтрованих переглядів використовуйте сторінки Відвідувача або сеансів з їх параметрами фільтра. Життєвий корм навмисно простий для моніторингу в режимі реального часу.

Аналітика

Топ сторінки

На сайті ви знайдете найбільшу кількість сторінок. Вона займає сторінки, використовуючи візити, залучення, перетворення та підтримку діяльності. Використовуйте його для визначення вашого найкращого контенту, пошуку підшкірних сторінок і відкриттів сторінок, які генерують питання підтримки.

Топ сторінки
Топ сторінкиУ рейтингу найбільш відвідуваних сторінок з горизонтальними візитними барами та підрахунками.Топ сторінкиyoursite.comНайпопулярніші сторінки/pricing3,402/2,910/docs1,740/blog/seo-guide980/signup6401RANKEDНайпопулярніші сторінки2SIGNALSВідвідування та перетворення3FINDСторінки, що приводяться квитки
Ви можете переглянути вміст та сторінки, які генерують підтримку.

Що показує кожен сайт

ПАРТНЕРСТВО URL

Повне URL шлях. Схожі сторінки (наприклад, варіанти продукту) групуються, якщо активовано групування.

Погляд

У вибраному діапазоні дати завантажено загальна кількість разів.

Унікальні відвідувачі

Скільки людей дивилися на цю сторінку (особа перегляду тієї ж сторінки двічі кількість записів, як 1 унікальний).

Нормативно-правова форма

Проценти відвідувачів, які залишили свій сайт після перегляду тільки цієї сторінки. Висока відмова на сторінках посадки = проблема. Високий рівень бунтування на сторінках "завдяки ви"= Нормально.

Середній час

Скільки часу відвідувачів витрачають на цю сторінку в середньому. Дуже коротко = не читання. Дуже довго на сторінці форми = плутанність.

Початок чату

Скільки чатів було розпочато з цієї сторінки. Високий чат починається на сторінці продукту, означає опис товару може бути незнімним.

Підтримувані квитки

Скільки квитків на підтримку були створені відвідувачами, які на цій сторінці. Високий рівень квитка = потенційна проблема UX або контенту.

На прикладі

Пошук сторінок, які підтримують дані

Сценаріо:
Яка сторінка не вдається?
Що робити:

Сортувати Топ Сторінки за допомогою "Підтримка квитків" або "Чому починається". Подивіться на товар або сторінки доставки з високими підрахунками. Сторінка з найбільшою підтримкою питань, ймовірно, має незнімну інформацію. Виправити вміст сторінок і контролювати, чи можна зберегти питання зниження.

Знайдіть сторінки з високою швидкістю виходу

Сценаріо:
Ви хочете знати, де люди залишають свій сайт найчастіше.
Що робити:

Сортувати за швидкістю відмов на спуску. Ігноровані сторінки, які природно виводяться в пункти (завдяки ви сторінок, сторінки підтвердження). Зосереджуватися на сторінках, які повинні зберігати відвідувачів, що займаються продуктами, ціноутворенням, функціями. Ці дані потребують кращого вмісту дзвінків або чіткого контенту.

Чому показувати сторінку 0 я знаю, що це отримує трафік?+

Перевірити:1) Чи встановлено віджет відстеження на цій конкретній сторінці? Односторінкові програми можуть не вогненно переглядати сторінки за змінами маршруту. (2) Чи виключена сторінка в налаштуваннях відстеження? (3) Чи є CDN, що обслуговує кеш-версію без скрипта відстеження?

Аналітика

Георозвідувальний

Geo Intelligence показує, що відвідувачі приходять з країни, міста, пристрою та джерела. Використовуйте його для розуміння географічних ринків, вирішення на підтримку мови, планування регіонального маркетингу і виявлення підозрілих моделей трафіку.

Геокопія
ГеорозвідувальнийКарта відвідувачів розташованих поруч з рейтингом барів на основі розрахунків.Георозвідувальнийyoursite.comВідвідувачі за місцем розташуванняАМЕРИУКРАЇНСЬКАОДЯГКАТАЛОНГ1MARKETSКраїна, місто, пристрій2PLANМова та регіони3WATCHНепарний трафік
Де ви приїжджаєте з країни, міста та пристрою, щоб розмір ринків і місце незвичайного трафіку.

Що ви бачите

Топ країни барна карта

У верхній частині країни, які посвідчують особу відвідувачів. Натисніть країну для свердління до даних міського рівня.

Країна тісто

Візуальна поломка трафіку за містом. Понад відсоткових відсотків.

Повний заміський стіл

Кожна країна з відвідувачами в вибраному періоді, показуючи кількість відвідувачів, кількість сеансів, рівень відмов і швидкість перетворення.

Місто свердло-відправлення

Виберіть країну, щоб побачити міста, в якій країні є найбільш відвідувані країни.

How GeoIP detection works

OpsIQ Виявляє розташування відвідувачів двома способами:1) Cloudflare геоголовки. Якщо Ваш сайт стоїть за Cloudflare, виявлення країни є автоматичним і точним. (2) База даних MaxMind GeoLite2. Завантажити безкоштовну базу даних та налаштовувати шлях у налаштуваннях. Визначення рівня міста вимагає бази даних GeoLit2-City, а не просто бази даних країни.

VPN та проксі- трафік

Відвідувачі, які використовують VPN-сервіси, з'являються до місця розташування VPN-сервера, не їхнє місцезнаходження. Це за допомогою дизайну. OpsIQ не можна і не варто намагатися обійти VPN-служби. Якщо ви бачите незвичайні схеми країни, розгляньте, що 10-20% Користувачі можуть використовувати VPN-сервіси.

На прикладі

Невибагливий трафік країни

Сценаріо:
Ви працюєте з нами, але 30% з Індії.
Що робити:

Перевірити:1) Чи є ці реальні відвідувачі? Подивіться на тривалість сеансу та сторінки, які переглядаються. Дуже короткі сесії з високою відмовою = ймовірні боти. (2) Чи ви можете дізнатися про вас через Google? Перевірте референт. (3) Чи можуть вони бути потенційними клієнтами на новому ринку? Якщо трафік є справжньою і займається, враховуючи інфографічне ціноутворення або контент.

Вирішуючи мовну підтримку

Сценаріо:
Ви хочете дізнатися, чи варто перевести сайт на іспанську мову.
Що робити:

Дивитися на сторінці Geo Intelligence. Якщо іспансько-мовні країни (Іспанія, Мексика, Колумбія, Аргентина та ін) разом представляти більше 10% Ваш трафік з низькими показниками відмов, переклад варто розглянути. Також перевірте: чи відвідувачі з цих країн перетворюються на аналогічні тарифи на ваш первинний ринок?

Планування переходу регіонального забезпечення

Сценаріо:
Для різних часових поясів необхідно визначитися з командами підтримки.
Що робити:

Використовуйте часову термокарту (на Dashboard) у поєднанні з Geo Intelligence. Якщо 40% з Європи та Європи 35% з США, потрібно покриття для обох часових поясів. Теплова карта показує саме, коли кожен регіон найбільш активний.

Країна з відвідуваннями, але не замовлення

Сценаріо:
Німеччина показує 500 відвідувачів цього місяця, але нульові продажі.
Що робити:

Інвестига:1) Чи не конкурентоспроможні на цей ринок? (04/07/2019)2) Ви відправляєте в Німеччину? Перевірте, чи згадується ваша сторінка доставки Німеччини. (3) Чи доступна ваша заявка в EUR? Валюта невідповідна причинами покинутих виїздів. (4) Чи є ці відвідувачі з одного джерела, яке може бути низьким трафіком?

Чому відвідувач шоу «Невідомий» країна?+

GeoIP не налаштований. Або встановити Either Cloudflare (який автоматично додає геоголовки) або завантажте базу даних MaxMind GeoLite2 і встановіть шлях файлу у налаштуваннях > GeoIP Path.

Чи можу я блокувати трафік з конкретних країн?+

OpsIQ не блокувати по країні. Використовуйте свій веб-сервер або Cloudflare Правила брандмауера для заміського блоку.OpsIQ фокусується на видимості, не контролю доступу на рівні мережі.

Аналітика

Інтенсивне воронку

Важкий Воронка класифікує відвідувачів, які вони здаються намагатися зробити: переглядати, дослідження, порівняти, купити, отримати підтримку або залишити. Використовуйте його для розуміння балансу наміру на вашому сайті і виявлення де відвідувачі випадають.

Інтенсивне воронку
Інтенсивне воронкуПорівняти для купівлі з підрахунками, плюс підтримки і вилучення чіпів.Інтенсивне воронкуyoursite.comВиброхвост 8,200Дослідження · 4,100ПІБ 1,650HYIP_ 520Підтримка 6%Виброхвост 11%1CLASSIFYЯкі відвідувачі хочуть2STAGESПереглянути, щоб купити3ФІКСЗнайти крапельний
Сесії, що класифікуються нематеріальними (брусками, дослідженнями, порівняння, покупка) так ви можете побачити саме там, де люди знижують.

Непристойні категорії

Пожертвувати

Відвідувачі випадково дивляться навколо. Короткі сеанси, кілька сторінок, не визначених цілей.

Дослідження

Відвідувачі, які читають продукт / сторінки подразнення, docs або зміст блогу. Довгий час на сторінці, кілька сторінок вмісту.

Порівняти

Відвідувачі, які переглядають ціни, порівняння тарифів або функцій. Часто повертаються відвідувачів.

Покупка

Відвідувачі на кастингу, візку або реєстраційних сторінках. Висока інтенсивність. Це можливості перетворення.

Підтримка

Відвідувачі на сторінках допомоги, контактних сторінок або стартового чату. Вони потребують допомоги.

Бінг

Відвідувачі, які залишили після однієї сторінки. Низький зв'язок.

Як читати воронку

Перетворення воронки

Сценаріо:
1,000 Відвідувачі переглядали ціни. 270 Відкритий чат. 92 початок виїзду. 64 оплачено. 18 Відкриті квитки підтримки.
Що робити:

Сторінка цін є досить міцною, щоб створити непристойний. Чат важливий в шляху купівлі: 27% Відвідувачі цін беруть участь в чаті перед покупкою. Підтримувані квитки після виїзду можуть вказувати активацію або виплату конффузії. Дія:1) Забезпечити AI-чат відповідей на цінові питання. (2) Розслідування 18 Пост-шекаутська підтримка квитків на загальні проблеми.

Фільтри часу

Використовуйте фільтр для порівняння непристойних шаблонів протягом періодів. Наприклад, порівняти Black Friday тиждень до нормального тижня. Ви повинні бачити пікіровка в "Купити" і можливо "Підтримка-пошук", якщо ваші акції створюються згубними.

Як працює OpsIQ класифікувати непристойний?+

OpsIQ Шукаємо сторінку URLs Поведінка сеансу та часові візерунки. Порівняння сторінок цін, які не входять до складу. Виселення сторінок сигналу покупка інтенсива. Допоможи/контактні сторінки сигнального супроводу вхідних даних. Класифікація на основі гемериста, а не AI-накопичувача.

Чи можна налаштувати нематеріальні категорії?+

Не в даний час. Категорії вбудовані на основі поширених шаблонів веб- поведінки. Спеціальна класифікація інтенсива полягає у Дорожньому карті.

Аналітика

Воронки, зберігання і доріжки

Зробіть замовлення, щоб зробити замовлення на сайті або за допомогою сторінки. Ви можете знайти і відкрити для себе маршрути відвідувачів сайту.

Екран продукту
ВоронкиНа замовлення воронки відображається кожен крок сторінки/виходу, що залишилися відвідувачі та відсоток перетворення.Воронкиробоча зонаSTEPS4CONVERSION28.4%WINDOW72h_ОГЛЯД РОБОТИЗгідно з тарифами1,420 відвідувачів100%План вибрано780 відвідувачів54.9%Дата виїзду530 відвідувачів37.3%Замовити завершено403 відвідувачів28.4%1DEFINEВибрані 2–8 крок2СЕРЕДОВИЩАВстановити вікно перетворення3ІМПРОВЕЗнайдіть найбільшу кількість крапель
На замовлення воронки відображається кожен крок сторінки/виходу, що залишилися відвідувачі та відсоток перетворення.

Воронки

Створіть іменний воронку з 2 до 8 сторінки або події кроки. Встановіть вікно перетворення за годинниками; відвідувач тільки тоді, коли замовлені кроки відбуваються всередині цього вікна. Використовуйте падіння між кроками, щоб вибрати де перевіряти повторення, помилки, швидкість сторінки або повідомлення.

Закінчення

Перевірити відвідувачів груп в щотижневі когорти і показати, скільки повернення. Виберіть 6, 8 або 12 Щотижневий горизонт. Зберігати визначення когорта, стабільне при порівнянні релізів або кампаній.

Доріжки

Шляхи списують найбільш поширені послідовності сторінок. Виберіть довжину шляху від 2 до 5 Щоб зберегти результат читаються. Використовуйте його, щоб знайти несподівані тури, загальні виходи та зміст, які неодноразово передують перетворення.

Спеціальні воронки – аналітичні визначення, не автоматики. Для реагування на завершений етап, створення цілі перетворення, сегмент, тригер або робоче навантаження.

Аналітика

Відтворення сеансу

Сесія Replay дозволяє переглядати часовий ряд того, що відвідувач зробив на вашому сайті: які елементи вони клацали, як вони прокручуються, де вони поховали, і які вони типовані (з конфіденційними полями маскуються). Використовуйте його для діагностики проблем UX, перевірки звітів помилок та розуміння конфузії клієнтів.

Відтворення сеансу
Відтворення сеансуРесплей-плеєр, що показує перегляд сторінки з курсором, панель інформації про сеанс та часовий скраб.Відтворення сеансуyoursite.comКупити заразСЕСІЯDuration 3m 12s14 клацанняUS · Робочий стілХром 1241WATCHКлацання, прокрутка, тип2MASKEDЧутливі поля приховані3DIAGNOSEПеревірка звітів про помилки
Релей точно те, що відвідувач зробив: кліки, прокрутки, натискання (чутливі поля маскуються), на часовій скрабі.

Пошук правої сесії

З сторінки сеансів, пошукайте сесії з повідомленнями, високі сторінки не мають перетворення або сеанси від клієнтів, які подали заявку на підтримку. Натисніть значок відтворення для відкриття часового перегляду.

Які реплести

Час

У горизонтальному барі показувати події з часом. Натисніть в будь-який час, щоб стрибати до цього моменту.

Навігація по сторінці

Кожна сторінка завантаження з’являється в сегменті на часовій лінії. Ви можете побачити точний шлях відвідувача.

клацання

На сторінці реконструкція показані події, як на часовій лінії, так і як висвітлення.

Прокрутка

Глибина прокрутки відстежується так, що ви можете побачити, як далеко не читати відвідувача.

Форма взаємодії

Запишіться на сторінку та введіть події. Введення тексту у пароль і чутливі поля зашифровано за замовчуванням.

Конфіденційність та маскування

Сесійські релейні маски, чутливі форми за замовчуванням. Парольові поля, введення кредитних карток та поля позначені даними-opsiq-маска ніколи не записана. Ви можете налаштувати додаткові правила маскування в налаштуваннях > Відстеження. Якщо політика відповідності вимагає її, ви зможете повністю відхилити відтворення.

Діагностика розбитого маршруту

Сценаріо:
"Я спробував купити, але кнопка нічого не зробила".
Що робити:

Знайдіть свій сеанс на сторінці сеансів (пошук по електронній пошті). Відкрийте релей. Див. розділ сторінки чекаю. Подивіться:1) Чи натисніть праву кнопку? (2) Чи був JavaScript помилка виникають? (Чека сторінки помилок JS для цього часу.)3) Чи було перезавантаження сторінки або показати повідомлення про помилку? (4) Чи був необхідний поле порожнім? Респлей показує, що сталося.

Скільки сховище використовує повторне відтворення сеансу?+

Відновлення даних зростає з об'ємом трафіку. Використовуйте налаштування збереження для автоматичного очищення старих даних відтворення. Для високотрафних сайтів слід враховувати період затримки короткого повторення (наприклад,, 30 днів) керувати зберіганням.

Чи можна відвідувачі вибрати для відтворення?+

Якщо "Респект Не Трекінг" включений у налаштуваннях, відвідувачі з DNT не записуються. Ви також можете виключити конкретні сторінки з релей в налаштуваннях відстеження.

Аналітика

Журнал подій

Журнал подій показує всі події, які OpsIQ записано: сторінки переглядів, кліків, чат починається, створення квитків, продажі та користувацькі заходи. Використовуйте його для налагодження інтеграцій, перевірки доставки webhook і розуміння послідовності дій.

Журнал подій
Журнал подійЖурнал хронологічної події з кольоровими зашифрованими тегами: перегляд сторінок, чат, продаж, вебок та користувацькі.Журнал подійyoursite.compageviewТУ У /pricing_12:04:01chat.startВеликобританія · Відкрито віджет12:04:09Продам$49.00 · замовити #104212:05:22вебкаpayment.succeeded12:05:23customdemo_booked12:06:101EVERYTHINGЩо записано2DEBUGДоставка веб-гоок3ORDERПереглянути точну послідовність
Часовий ряд всіх OpsIQ записів (погляди сторінок, чати, продажі, вебхоки, користувацькі події) для розлучення та аудиту.

Вбудовані події (автоматичний)

⚠️
Ці events-log імена — що OpsIQ записів на часовій лінії відвідувачів для аналітики, розвантаження та аудиту. Вони різні словники з лексики від веб-сайт Якщо ви будуєте ресивера вебгока, скористайтеся переліком в розділі Webhooks або зателефонуйте webhooks.events.list; підспівши до назви з цього столу не буде доставлено нічого.

Кожен рядок показує назву, яку ви Відправити и канонічне ім'я OpsIQ магазини вона як. Обидва записані: сире ім'я, яке ви надане, і канонічне, це карти до, тому звіт, написаний на онсонічну податку, зберігає роботу, яка б не була використана трекером.

pageview page.viewed

Навантаження сторінок трекера. Включає URL_, назва, реферер і часовий апарат. page_view і view Приймаються як і те ж саме.

chat_open JavaScript licenses API Веб-сайт Go1.13.8

Відкриваємо чат віджет.

chat_send Підтримка. chat_message_sent

Відвідувач надсилає повідомлення чату. Відповідає сторона зберігається як support.chat_message_received.

ticket_open JavaScript licenses API Веб-сайт Go1.13.8

Створення квитка підтримки. ticket_create приймається як і те ж саме; відповідей та закривки зберігаються в якості support.ticket_replied і support.ticket_closed.

form_submit form.submitted

Подано форму трекінгу. submit Прийнята як і те ж саме.

purchase Торгівля. purchase_повний

Придбання завершено. purchase_success, і продаж псевдонімів order.completed, sale.completed, payment.completed і invoice.paid, всі приймаються з підключеної платформи.

верстка Торгівля. checkout_started

Відсутні виїзди. Схожі: cart_view, checkout_view, checkout_intent, checkout_abandon, add_to_cart.

login_success Юридична адреса: м. Київ, вул. Соборна, буд. 2

Вивіски відвідувачів. Недолік від login_failed, зберігають як identity.login_failed; блокування login_lockout_created.

Підписка conversion.signup

Відвідувач завершує підпис. Провідний lead, зберігають як conversion.lead.

js_error error.js

A JavaScript помилка захоплюється на долоні сторінки.

💡
Назва заходу, яку ви надішлемо, що не є одним з цих псевдонімів, як і раніше записаний дієсловатим — нічого не падає. Він просто не має канонічного картографування, тому він не буде розгортатися в звітах на основі податкової системи.

Спеціальні події

Ви можете надсилати спеціальні заходи з вашого веб-сайту або сервера до OpsIQ. Спеціальні події корисні для відстеження дій, специфічних для Вашого бізнесу: кнопки кліки, використання функцій, відеопрогравачів, завантаження тощо.

JavaScript · користувацький захід від браузера
// Send a custom event from the browser
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "plan_selected", {
  plan: "pro",
  billing: "annual",
  value: 99
}]);
PHP · записувати контактну активність з вашого сервера
// 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);

Фільтруючі події

Тип події

Фільтр за певними назвами події: перегляд сторінок, чат. started, квиток. created і т. д.

Дата- діапазон

Показати події з певного часу.

Юридична адреса

Пошук даних подій за ключовим словом URL, e-mail, значення нерухомості події.

Скільки триває події?+

Заяви, які слідують за встановленою політикою збереження в налаштуваннях. 90 днів. Ви можете налаштувати високі події (покупки, заходи безпеки) з більшою тривалістю зберігання.

Чи можу я використовувати події в експериментах A / B?+

Так. При створенні експерименту ви обираєте події перетворення. Будь-який вбудований або користувацький захід може використовуватися в якості цілі перетворення.

Аналітика

A / B експерименти

Експерименти дозволяють перевірити дві версії сторінки або функції та вимірювати, які краще виконують. OpsIQ треків вражень, перетворення і статистичне значення.

A / B експерименти
A / B експериментиДво варіантів порівняння ставок перетворення карт, з значним значенням переможця та визначенням на провідному варіанті.A / B експериментиyoursite.comСортант А4.2%· Конверсія 1,020 переглядиСортування BВІНІЄР6.8%· Конверсія 1,005 перегляди+62% Підйомник 96% значна1ЦЕНА ЗА ЧАСДва варіанти головка-голова2СЕРЕДОВИЩАПеретворення та значення3КУРСИДекларувати переможця
Запуск двох варіантів, перегляд перетворення та статистичне значення, а також проголосити переможця.

Як працює експерименти

1
Створіть експеримент

Надайте ім'я, визначте початкову метричну (подія з питань конфверсії), і встановіть варіанти (контроль та тест).

2
Запуск

OpsIQ випадково призначає відвідувачів до варіантів і відстежує їх поведінку. Не змінюйте експеримент, поки він працює.

3
Читати результати

Після того, як зібрано достатню кількість даних, перевірте рівень довіри.95% впевненість, що ви можете 95% не випадково.

Експериментальні стани

Проекти

Ви можете змінити варіанти і метрики.

РОБОТА

Активно призначає відвідувачів до варіантів. Не відредагуйте під час роботи.

Завершений

Зменшення статистичного значення або було ручним зупиненням. Результати завершені.

Архів

Результати були розглянуті і експеримент не потрібно в активному списку.

Кращі практики

Визначте свій метричний перед запуском

Вирішуйте, що ви міряєте до початку. Вибираючи метричну після перегляду результатів вводять ухибки.

Включає внутрішній трафік

Додати команду IP звертайтесь до списку виключень, щоб співробітники не отримували результатів.

Запуск досить довго

Не зупиняйте експеримент після 100 відвідувачів. Вам потрібно сотні або тисячі відвідувачів за варіантом для надійних результатів.

Тестувати одну зміну часу

Якщо ви зміните заголовок і колір кнопки, ви не знаєте, які зміни викликали поліпшення.

Записатися на Вашу адресу

Після закінчення експерименту, замітка якого варіант виграний і чому ви вибрали для його реалізації.

Скільки відвідувачів потрібно для дійсного експерименту?+

Залежно від базової частоти перетворення і розміру ефекту, який ви хочете виявити. Як правило великого пальця: принаймні 500 відвідувачів за варіант 20% розмір ефекту. Для менших ефектів потрібно тисячі.

Чи можу я запустити декілька експериментів одночасно?+

Так, але будьте обережні. Якщо два експерименти впливають на одну сторінку, результати їх можуть взаємодіяти. Він безпечніше для запуску експериментів на різних сторінках або функції одночасно.

Аналітика

JavaScript помилки

JavaScript Помилки збираються помилки клієнтів від відвідувачів сайту. API Зателефонуйте, або відсутній ресурс показує тут. Використовуйте його для пошуку та виправлення помилок, які впливають на реальні клієнти.

JS помилки
JavaScript помилкиПерелік заданих помилок переднього входу з точки зору тяжкості, вихідний файл, браузер і кількість випадків.JavaScript помилкиyoursite.comОстанні помилкиТипПосольство: не можна читати x з невизначенимcheckout.js:42 · Хром×214404 завантаження /assets/app.cssІндекс · Сафарі×88Неприємний (і обіцянки) NetworkErrorapi.js:17 Українська×51Попередження про розвантаження: події. js · Край×331CAPTUREПохибки клієнтів2IMPACTГрафіки та браузери3ФІКССквош реальні помилки
Важкі відвідувачі, які вражають поверхню коду тут (повідомлення, джерело, браузер і як часто) так ви можете виправити те, що питання.

Що показує кожен помилки

Повідомлення про помилку

JavaScript текст помилки (наприклад, "TypeError: Не можна прочитати властивості не визначених).

ПАРТНЕРСТВО URL

Яка сторінка сталася помилка.

Браузер і пристрій

Який тип браузера і пристрою бачив помилку. Деякі помилки є специфічними для браузера.

Стека слід

Місце розташування коду, де виникла помилка. Натисніть для розширення повного сліду за стеками.

Перший погляд

Коли ця помилка вперше з'явилася.

Останній

Коли ця помилка була останнім часом.

Гарантійність

Скільки разів ця помилка була записана.

Відкриті сеанси

Скільки різних сеансів відвідувачів, які пережили цю помилку.

Пріоритетні помилки

Не всі JavaScript Помилки потребують негайної уваги. Пріоритетність:1) помилки на критичних сторінках (видання, реєстрація, логін), (2) помилки з високими підрахунками сеансу, (3) помилки, які з'явилися останнім часом (зміна коду від змін), (4) помилки на вашому власному коді (не сторонніх скриптів).

Виправлення зламаного кнопки

Сценаріо:
The JS Errors page shows "TypeError: Cannot read properties of undefined (reading submit)" on /checkout, affecting 45 sessions this week.
Що робити:

Це означає 45 не вдалося завершити виїзд. Кроки:1) Відкрийте сторінку в тому ж комбінації браузера/device. (2) Відкривайте консолі браузера та відтворюйте помилку. (3) Перевірити слід стека, щоб знайти точний рядок коду. (4) Виправлення помилки, розгортання та контроль кількості помилок, що йде на нульовий.

Чи працює OpsIQ помилитися від сторонніх сценаріїв?+

Так, OpsIQ захоплює всі JavaScript помилки на сторінці, в тому числі помилок з сценаріїв аналітики, чат віджетів та скриптів оголошень. Фільтрувати URL у стеці слід орієнтуватися на власний код.

Як я можу виключити відомі нешкідливі помилки?+

Ви не можете пригнічувати конкретні помилки в OpsIQ, але ви можете відфільтрувати список на сторінці URL або повідомлення про помилку. Виправлення або ігнорування помилок з розширення браузера (наприклад, помилки від невідомого джерела).

Продаж

Продаж і перетворення

Відстеження продажів підключає ваш магазин або вексельну платформу до OpsIQ, так що ви можете бачити дохід поряд з поведінкою відвідувачів. Кожна покупка приписується до подорожі відвідувача, тому ви знаєте, які сторінки, кампанії та канали, які надходять на диск.

Продаж
ПродажЕкран з продажу: доходи, загальний з контрольом в режимі реального часу, пошук та останній стіл покупок (дата, клієнт, платформа, сума, джерело).Продажyoursite.comОБОВ'ЯЗОК$42,180+18%За весь час ▾Пошук електронної пошти, IP_, Ім'я користувачаОстанні покупкиДЕРЖАВИКУСТОМЕРПЛАТФОРМАБУДИНОКДжерелоМар 3[email protected]_Shopify_$49googleМар 3[email protected]_WooCommerce_$129directМар 2[email protected]_Stripe_$480магазини1ОБОВ'ЯЗОКЗамовлення та оновлення2RECENT PURCHASESДата · клієнт · сума3ATTRIBUTEDДо джерела трафіку
Відправлення даних, що надходять на ринок, після чого нові покупки (дата, клієнт, платформа, сума), кожен атрибутований до джерела трафіку.

Продаж приладової панелі

Продажі

Відправлення замовлень, що завершуються сьогодні. Вирішуйте з кожним новим замовленням події з підключеної платформи.

Цього тижня / цього місяця / загальний

Повернення коштів здійснюється з цих сум.

Графік трендів

Графік роботи на лінії, що показує добовий дохід за вибраним діапазоном дати. Подивіться на походи (промоції, акції) та копачі (виробки, сезонні).

Кращі джерела перетворення

Які джерела трафіку призводять до більшості покупок. "Дизайн" покупців часто зауважили ваш сайт. "Google" покупці знайшли вас через пошук.

Останні покупки

Останні замовлення з електронною поштою, сумою, валютою та товарами придбані.

Непідтверджені покупки (помічник подорожі)

Коли трекер бачить відвідувачів, що досягають підтвердження покупки в браузері, але не підключена платформа повідомила про те, що продаж ще і клієнт подорож показує ряд Покупцем (не підтверджено) з бурштиновою значкою. Вона ніколи не підраховує доходи. Коли платформа підтверджує продаж, підтверджена покупка замінює її.

Зволоження

Роз'єми продажів не залежать від одного вебхука. Кожен сигнал оплати платформа надсилається може відкрити продаж, а Договір роз'єму 2.3 перечитає власний список готових продажів на графіку (попередня година в робочому просторі) так вебхока платформа ніколи не поставила про продаж. Оператори можуть запустити її за вимогою від командного рядка з інструментами/sales_reconcile.php.

Керівництво налаштування платформи

Shopify_

Перейти до роз'ємів >Shopify. Створити користувацький додаток у вашому Shopify admin (Налаштування> Додатки та канали продажів > Розробити програми). Гранти для перегляду: читання_orders, read_customers, read-products. Копіювати Адміністратор API доступ до токени. У OpsIQ, введіть домен свого магазину (наприклад, your-store.myshopify.com) і токен доступу. Натисніть кнопку Test Connection. Якщо успішним, увімкніть синхронізацію вебхока для повідомлень про порядок в режимі реального часу.

WooCommerce_

Перейти до роз'ємів >WooCommerce. У Вашій увазі WordPress адмін, йти WooCommerce> Налаштування > Розширений > REST API. Створіть ключ з дозволом на читання/запису. Скопіюйте ключ споживача та секрет споживача. У OpsIQ Увійти на сайт URL, ключ споживача та секрет споживачів. Натисніть кнопку Зв'язатися з тестом

Великий

Перейти до Connectors > BigCommerce. У вашому адміністратору BigCommerce, перейдіть на розширені налаштування >API Рахунки. Створити V2/V3 API Рахунок з читаним обсягом для замовлень, клієнтів та продуктів. Скопіюйте доступ до токену, ідентифікатора клієнта і API шлях. Вкажіть їх в OpsIQ і тест.

Магніто 2

Перейти до системи Connectors > Magento. У вашому адміністратору Магенто перейти в систему > Інтеграція. Створіть нову інтеграцію з API ресурсний доступ до продажів, клієнтів і каталогів. Активувати інтеграцію та копіювати токени доступу. Введіть його в OpsIQ з базою Magento URL.

Магазини

Перейдіть до плагінів > PrestaShop. У вашому попередньому адміністратору Prestashop вирушайте в розширені параметри > Webservice. Увімкніть веб-сервіс і створіть новий ключ. Отримайте доступ до замовлень, клієнтів та продуктів. Скопіюйте ключ і введіть його в OpsIQ з вашим магазином URL.

Електронний

Перейти до Connectors > OpenCart. Генерація API Випадкові дані з панелі адміністратора OpenCart. Введіть API URL, ім'я користувача та ключ в OpsIQ. Роз'єм використовує REST OpenCart API для замовлення та даних клієнтів.

osCommerce_

Перейти до Connectors > osCommerce. Налаштування доступу до бази даних або API Цілі, як задокументовані в налаштуваннях роз'єму. Інтеграція osCommerce зазвичай вимагає прямого доступу до бази даних або користувача API модуль.

Stripe_

Перейти до роз'ємів > Stripe. Скопіювати ваш Stripe обмежений API ключ від Stripe Дешборд (Дельоппери > API ключі. Для Клієнтів, зборів, рахунків та передплатників необхідно ознайомитися з доступом до Замовника, тарифів OpsIQ. Настроювання вебхока кінцевої точки для подій в режимі реального часу.

Спеціальні / інші платформи

Використовуйте REST API або webhooks для відправки заходів з продажу з будь-якої платформи. Надіслати замовлення.повнені події з електронною поштою, сумою, валютою та предметами. Дивитися події API секція для форматування корисного навантаження.

Розуміння вашого торгового середовища

Кращі джерела перетворення

Виставки, які канали приносять оплату клієнтів. Якщо Google приносить 1000 Відвідувачі та гості 50 продажі, тобто 5% швидкість перетворення. Якщо електронна пошта приносить 200 Відвідувачі та гості 30 продажі, що є 15%. Електронна пошта є більш ефективним для відвідувачів.

Повернення коштів

Відстежуються замовлення окремо. Вони знижують надходження сітки в цілому. Якщо ставки повернення висотні від певного джерела, трафік може бути низькою якістю.

Обробка валюти

OpsIQ зберігає початкову валюту транзакцій та суму. Багатовалютні підприємства дивляться дохід у кожній валюті. Нормалізовані звіти використовують налаштований курс обміну.

На прикладі

100 відвідувачів, нульові продажі

Сценаріо:
Ваша сторінка ціноутворення отримує 100 відвідувачів за добу, але нульові перетворення.
Що робити:

Інвестига:1) Використовуйте Респлей сеансу на відвідувачів сторінки ціноутворення. Дивіться, як вони взаємодіють з Табличкою цін. (2) Перевірити Топ-сторінки на сторінці ціноутворення та часовий візит. (3) Перевірити чат-бесіди від відвідувачів сторінки ціноутворення. Які питання вони запитують? (4) Порівняйте сторінку ціноутворення для конкурентів.5) Спробуйте експеримент A/B з різними макетами ціноутворення.

Атрибут для маркетингової кампанії

Сценаріо:
Ви відправляєте електронний бюлетень з тегами UTM. Як ви виміряєте його вплив на дохід?
Що робити:

Перейти на продаж і фільтр за допомогою джерела. Пошук по кампанії UTM параметр. Ви побачите: (1) Скільки відвідувачів прийшли з електронної пошти. (2) Скільки перетворюються на продаж. (3) Загальний атрибут доходу до кампанії. (4) Порівняти з тим же періодом до проведення акції.

Чому продажі показують нульовий, хоча мій магазин має замовлення?+

Перевірити:1) Чи підключений і корисний роз'єм платформи? Перейти до роз'єднувачів і перевірити статус. (2) Чи ввімкнено синхронізацію webhook? Якщо використовувати опитування, це працює робота cron? (3) Чи має роз'єм правий API Сфери? Для Shopify, вам потрібно прочитати_orders.

Як працює OpsIQ атрибут продажу до відвідувача?+

Коли замовлення надходить через роз'єм, OpsIQ відповідає листуванню клієнтів до відома відвідувача. Якщо Відвідувач відстежувався перед покупкою, продаж приписується до подорожі відвідувачів, включаючи джерело трафіку, сторінку посадки та історію сеансів.

Чи можу я вручну додати продаж?+

Ви можете надсилати події з продажу через REST API або вебхоки з будь-якої системи. Формат заходу задокументовано в Заході API секція.

Торгівля

Побудувати, запустити і працювати на рідному майданчику

Компанія Storefront є OpsIQ_' рідний магазин для товарів, сторінок, оглядів, рекламних панелей, чекауту, облікових записів клієнтів та AI-продюсерів у чаті Клієнта та підтримані соціальні канали.

Старт маркетингу→Торгівля

1
Виберіть робочу площу

Підтвердіть сайт, який ви налаштовує. Продукти, налаштування, сторінки, замовлення та аналітика виділені до цього робочого простору.

2
Увімкнути електронної комерції та Shopfront

Загальні налаштування → ECommerce є батьківським органом. Торгівля, створення замовлення та платежі залишаються окремими, тому ви можете переглянути каталог безпечно.

3
Паблістні продукти

Налаштуйте тип продукту, ціну, валюту, інвентарю, варіанти/за бажаннями, медіа та fulfilment. Переглядайте вибір товарів і вираховуємо до публікації.

4
Налаштування оплати та виконання

Підключіть шлюзу або додайте банківський переказ, готівку або контроля. Фізичні товари потребують зони доставки або збору; цифрові товари вимагають захищених файлів або кодів.

5
Запуск запускати Готовність

Виправте кожен блокувальник і перевірте кожну попередження, після чого заповніть замовлення піскобокса з публічного магазину.

Старший контент та політика

Нові та оновлені магазини отримують редагований текст стартового старту для Про нас, Умови та умови, Конфіденційністьй Повернення коштів та повернення коли ті пори порожні. Виконуючи копію торгового марки ніколи не перезаписуються.

  • Замініть кожен [Add …] запит і STARTER TEMPLATE помітити перед запуском.
  • Використовуйте справжню правову назву, контактний маршрут, профір пообіцяє, правила повернення, методи зберігання даних, періоди збереження та ринки.
  • Забезпечити консультацію, які ви обслуговуєте. Стартер працює на основі оперативного керівництва, не консультує з правових питань.

Дизайн, сторінки та акції

Дизайн та розробка сайтів

Виберіть тему і композицію, потім налаштуйте друкарську форму, заповнює/градієнти, форми, ширину, рух, поход та світло / тек. Перед збереженням перегляньте робочий стіл та телефон.

Про, Зв'язатися з нами

Створіть кожну сторінку з повторюваних блоків. Кожен блок має варіанти преміум-дизайну. Тримайте такі блоки, як статистика, команда, нагороди або котирування до того моменту, поки їх зміст не буде істинним.

Настроювання сторінок

Выберите звання, слига, герой, SEO і замовили блоки; попередній перегляд під час проекту, потім публікувати. Заповідні маршрути магазину такі як віза, реєстрація, облік та політика не можуть бути використані.

Рекламні поппи та бічні панелі

Створіть модальну сторінку з принаймні одним блоком. Виберіть преміум дизайн, центр / лівий/право/зниз розміщення, завантаження/глибокий/витяговий спандровок, задню частину руху, ширину, купон і одноразову поведінку. Перевірте близько, клавіатуру та телефонне планування.

Меню і піддон

Посилання на сторінки, товари, колекції, політики, облікові записи/допомоги/переваги, модалі чи безпечне зовнішній URLs. Підголовні елементи підтримують один спад / рівень mega-menu.

Клієнт чат і соцмережі

Увімкнути продаж чату Клієнта, потім виберіть де клієнти можуть придбати. Помічник шукає каталог і просить сервер для авторитетної цитати; сервер -не модель - відтворює підписану картку замовлення. Підтвердження відбувається тільки через цю карту на сайті або перевірену взаємодію на соціальній каналі.

WhatsApp, Посланник,Instagram, Telegram, ЛІНІЯ, SMS та X використовують обліковий запис каналів постачальника як ідентифікатор каналу. Списання електронної пошти все ще збирається для отримання квитанцій. Замовлення роз'єму зберігає підписаний універсальний контракт і торгово-авторитивний загальний; Конфігурація торгових точок не змінює цей договір.

Аналіз даних

Огляд унікальних відвідувачів, переглядів товарів, доповнення кошика, замовлення починається / об'єктивів/комплецій, перетворення, підтверджені накази, надходження валюти, придбання, пристрої, країни/міста, верхні продукти, відновлення та попередження про якість даних. Перетворення використовує явно позначені публічно-Сточні події; валютні загальні збори ніколи не мовчать поєднаний. Зловживання означає, що вибраний діапазон не може відповісти на питання перетворення - не нульовий відсоток.

Головна OpsIQ API

Використовуйте ключ ведмедя з commerce.read; analytics.read також надає аналітичний знімок. У ключових умовах працює простір, що є авторитетним.

Типовий магазинчитає
{ "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 } }

Зберігати за допомогою інтернет-магазину, URL_, меню та стартовий стан. Каталог магазинів повертає кожну тему, дизайн сторінки, тип блоку, блокувати склад і преміум-розкрутку оболонок так віддалені будівельники ніколи не спрацьовуються на вибір. Список сторінок повертається на замовлення сторінки і преміум модалі. Аналітика повертає агрегати без ідентифікаторів замовника. Готовність повертає дієві перевірки запуску. OpenAPI і Postman використовують ці ж контракти.

Закінчення передпокою

  1. Desktop and phone: додому, пошук, товар / Варіант, кошик, перевірка чеків, обліковий запис, відстеження, завантаження, Про, Зв'язатися, політики, перегляд книг, сторінки, меню та кожен живий промоак.
  2. Повний один пісочниця платіж і перевірити статус замовлення, отримання, запас та виконання.
  3. Помістіть замовлення чату і один порядок провайдера-пошти на кожен ввімкнений соціальний канал.
  4. Підтвердіть події, які з'являються під правильною поверхнею та валютою в розділі «Розвідка».
⚠️
Почати текст політики робить магазин незрівнянним, але він не робить перевірку правової копії. Запуск готовності зберігає попередження до кожного запиту.
Продаж

Магістр

Провідні відвідувачі або клієнти, які демонструють покупку чи підтримку. OpsIQ автоматично виявляє, що ведеться на основі поведінки: відвідування сторінок ціноутворення, зворотні візити, чатові взаємодій, розселення починається і висока залученість. Використовуйте сторінку Провідника для визначення послідовності та подачі ваших клієнтів CRM трубопроводи.

Магістр
МагістрПровідний екран: пошук таблиці з IP/email, розташування, пристрій, джерело та часові колонки, і джерело та країну.Магістрyoursite.comПошук IP, місто, країна ...English, Українська, Français...IP/ EMAILЛІКАЦІЙПРИСТРОЙДжерелоЧАС41.62.10.4Великобританія · ЛондонМобільнийgoogle4m 12s[email protected]_США · Нью-ЙоркТорговий центрdirect7m 02s[email protected]_DE · БерлінМобільнийutm: ads5m 40s203.0.113.9CA · ТоронтоТорговий центрgoogle3m 28s1DETECTEDНайпопулярніші відвідувачі2TOPПровідні джерела та країни3ENRICHEDIP, розташування, пристрій, час
В якості пошуку таблиці (IP/email, місце розташування, пристрій, джерело, час на місці) з джерелами та країнами.

Що робить свинець

Відвідування сторінки цін

Відвідувачі, які переглядають сторінку ціноутворення або плани, активно розглядаються з покупкою.

Повернення візитів

Відвідувачі, які повернулися в кілька разів, але ще не перетворюються.

Читання взаємодії

Відвідувачі, які починають чат, активно шукають допомогу, або передчасному роздрібу або після-платно.

Запуск

Відвідувачі, які досягають сторінки виїзду, але не завершують покупку.

Подання форм

Відвідувачі, які подають форму контакту, демо-заявку або реєстраційну форму.

Висока сторінка залучення

Відвідувачі, які переглядають багато сторінок з тривалістю сеансу, глибоко вивчаються.

Провідна докладна панель

Натисніть будь-який свинець, щоб побачити їх повний профіль:

Зручність

Ім'я, електронна пошта, компанія ifknown. Анонімні провідні шоу IP і місце розташування.

Сесій

Всі сеанси з цього приводу, тривалість та джерело.

Перегляд сторінок

Кожна сторінка, яку вони відвідали, замовляється від рецепції.

Джерело

Як ви знайшли: органічні, платні, соціальні, реферальні, прямі.

Провідний рахунок

А.А.0-100 оцінка на основі інтенсивності поведінки, резистентності та інтенсивної сторінки.

Стан CRM

Чи додано це керівництво CRM як контакт або угода.

Наконечник продаж

АІ-генерований припуск на те, що робити далі (наприклад, "Візитний тариф 3 раз · розглянути проактивний зовнішній вигляд").

Висока вартість свинцю значка

Ведучі з рахунком вище 80 Отримайте значок «Висока вартість». Це ваші гарячі перспективи. Допитайте їх на зовнішній вигляд, проактивний чат або запис CRM-провідника.

На прикладі

Робота гарячою свинцем

Сценаріо:
Підсумок здивує вашу сторінку ціноутворення 3 час в 2 Днів, почав чат запитати про плани підприємства, але не придбали.
Що робити:

Це високоінтенсивний свинець. Кроки:1) Ознайомтеся з деталями для компанії та інформації про роль. (2) Огляд скрипта чату для конкретних потреб і заперечень. (3) Створіть угоду в CRM з зібраною інформацією.4) Визначте завдання на виконання замовлення з продажу. (5) Якщо вони повертаються на сторінку ціноутворення, правило проактивного чату може викликати персоналізоване повідомлення.

Конвертувати анонімні приводи до CRM контактів

Сценаріо:
У вас є 50 анонімно призводить до високих показників, але не адреси електронної пошти.
Що робити:

Варіанти: (1) Створіть проактивне правило, яке пропонує знижку або ресурс для отримання електронної пошти на сторінках високої доступності. (2) Використовуйте чат віджет, щоб попросити електронну пошту при анонімних відвідувачів почати розмову. (3) Додайте ідентифікатор, щоб записувати ваші облікові записи для входу/відправлення користувачів, які автоматично визначаються.

Як обчислюється результат?+

У балі розглянуто: референцію відвідувань (відсоток = вище), частоту відвідувань, які переглядаються сторінки (прив’язка/виїзд = вища), тривалість сеансу (довга = вищий), взаємодії чатів (понад = вище) та повернення візитів (багаторазові сесії = вище).

Чи можна налаштувати правила забивання свинцю?+

Так. У CRM конфігурації можна додати правила, що прискорюють рахунок на основі конкретних ключових слів, подій, джерел або шаблонів сторінок.

CRM Comment

Ваш CRM · запустіть тут

OpsIQ Надання послуг, повних AI-перших CRM, які захоплюють правду клієнта, очищає дані, веде оцінку, пропозиції тренерів, прогнози доходів і актів, з інтелектом веб-сайтів, підтримкою, квитками, продуктами та платежі як один живий графік. Кожна дія AI є джерелом, пояснюваного, реверсивного та схвалення керованої.

А. А. CRM_
Огляд CRM AIНабір для довірчих сигналів Copilot з чотирьох карт агента AI: Стюард, Проспектор, Затримка та аналітик.А. А. CRM_робоча зонаДовіра ДиялМагістрКопілотАвтопілотСкільки коштує AI на власнійД. В.СтюардесаDedupe, збагачування,верифіковані даніСДРПроспекторЗнайти & оцінкановий бізнесРТЗакінченняПрямокутний хурн,відновлення приводуА. А.АналізаторЗручності та прогнозироз'яснення чисел1AI-FIRSTЧотири спеціалісти2YOU DECIDEДовіра Dial автономії3TRUSTEDДжерело та реверсійна
Компанія «I-перший CRM» працює на чотирьох фахівців, а також Trust Dial, що вирішує, скільки вони роблять самостійно.

Огляд CRM сторінок

АІ CRM (Консульсний центр)

Почати тут

Ваш щоденний домашній екран: імпульс доходу, який штучний інтелект знайшов, що це зроблено, чергу затвердження, наступні переміщення, здоров'я агента і ROI.

Контакти

БРОНЮВАННЯ

Люди та компанії в області CRM_. Пошук, фільтр, бал і управління профіліми.

Трубопровід

БРОНЮВАННЯ

Візуальна дошка з драпіруваннями, ймовірністю виграшів та тренерами AI.

Прогнози та звіти

БРОНЮВАННЯ

Прогнозування дошки: відповідаючи, ймовірно, кращий випадок, з інтервалами довіри і відстеження точності.

Теплий цикл

БРОНЮВАННЯ

Де кожен клієнт стоїть: активна, на ризиках, розширення готових, оновлення через або розтирання.

Побудувати CRM

Конфігурація

Опишіть ваш CRM Налаштування на звичайну англійську мову. OpsIQ генерує оборотний план і застосовує його на затвердження.

CRM Здоров'я

Голоси

Сторінка самоочисника: схеми, агенти, маршрути, дії AI та показники живих даних.

Як OpsIQ зберігати сейф

Запитати до вступу

АІ-пропозиції йдуть на чергу затвердження. Ви затвердите, відредагуйте або відхиляєте кожну. Ніщо не відбувається без вашої відповіді.

Не перезаписати

Коли AI пропонує зміну, вона показує поточну вартість та запропоновану цінність. Захист від перевірених даних людини.

Все дуже легко

Кожен AI записується в журналі. Ви можете скасувати будь-яку зміну одним клацанням миші.

Можливість

Кожен рекомендаційний аудит AI показує свою причину та джерела даних, які він використовується.

Знову? Почати тут

1
Інтелектуальний CRM

Натисніть AI CRM на ліву навігацію. Центр командування показує поточний стан.

2
Перевірка CRM здоров'я

Відкрити CRM Health для перевірки схеми, агентів та маршрутів готово.

3
Імпортні контакти

Якщо активується роз'єм (роз’єм)Shopify, WHMCS, і т.д.), контакти автоматично імпортуються. В іншому випадку імпорт через CSV або створити вручну.

4
Створення трубопроводу

Перейти до Pipeline і створити свій перший трубопровод з етапами (наприклад, Провідний, Кваліфікований, Пропозитивний, Неготиційований, Вон, Загублений).

5
Додати вашу першу угоду

Створіть угоду з контактом, встановіть суму та стадію, і дайте інструкції з тренера Deal.

Чи потрібно використовувати CRM?+

No. CRM необов'язково. OpsIQ працює ідеально, як відстеження + підтримка AI-платформи без CRM. Увімкніть його, коли ви готові керувати продажами та відносинами з клієнтами.

Чи може CRM працювати без роз'ємів?+

Так. Ви можете створювати контакти та пропозиції вручну. Роз’єми збагачують CRM даними платформи (замовлення, підписки, квитки) але не потрібні.

Що таке шар довіри?+

Система безпеки Trust Layer - це система безпеки, яка контролює те, що AI може зробити. Режим Copilot (default): AI пропонує, схвалення людини. Режим автоматичногопілота (оп-в): AI діє автоматично на низькорослі, оборотні операції.

CRM Comment

Модуль для дому AI CRM

Команда Центру – це ваш щоденний брифінг. Відкрийте його з ранку, щоб побачити те, що сталося, якою потрібна увага і що робити далі.

Центр
Центр CRMCRM-будинк з регульованими навантаженнями, вагою до перевантаження KPI та AI-пропозицією із затвердженням та звільненням на кожному ряду.Центр CRMробоча зонаПрогнозВиграшний курсТрубопровідЦЕ QT · ЦЕ З$74k87%АІ пропозиції · затвердження чергСтворити угоду · Acme $24kвід чату з покупцемЗатвердженняЗняттяПеремістити Nimbus → Пропозиціяпозитивна відповідь виявленаЗатвердженняЗняттяЗаява про роботу в мережібездіяльність 7 до 1ЗатвердженняЗняття1TOGGLEПрогноз · Виграшний курс · Трубопровід2AI PROPOSESПропозиції, етапи, завдання3YOU DECIDEЗатвердження або звільнення
Центр реального командного центру: перехід між прогнозом, швидкістю вигра та трубопровідною лінією, а також робота з чергою пропозицій AI, затвердження або звільнення угод, етапу переміщення і завдань, які він пропонує.

Що показує Центр команд

Сьогодні номери

Вартість трубопроводу, виграє/місце, нові веде, активні пропозиції та тенденції доходу, знімок вашого поточного стану.

Що OpsIQ знайдено

AI-розкриті інсайти: заставні пропозиції, рахунки на основі райдужів, нові можливості, проблеми якості даних та ринкові сигнали.

Що OpsIQ

Дії, які приймають AI (в Autopilot) або пропонуються (у Copilot): аванси етапу, оновлення показників, збагачення контактів та створення завдань.

Подача заявки

Виконувати пропозиції AI, які чекають на Ваше рішення. Кожен показує запропоновану дію, аргументацію та докази. Затвердження, редагування або відхилення.

Далі переходи

AI-відкритий список 10 найважливіших речей, які сьогодні роблять: слідувати за гарячою угодою, перевірте обліковий запис на дискусію, вивчає новий свинець і т. д.

Стан помічника

Здоров'я агентів AI: Капуста, Стюардеса даних, Деал Динал Коучинг, СДР, Затримка. Зелений = біг, бурштин = потребує уваги, червоний = помилка.

Результати

Відстеження ROI: вплив на AI, час, збережений, точність прогнозування та порівняння ручних CRM-працювань.

Ранковий стислий процес

1
Читати сьогодні номери

Перевірте тенденції охорони та доходів трубопроводів. Ви на цьому місяці?

2
Очистити чергу затвердження

Огляд кожної пропозиції AI. Затвердження безпечних дій, редагування яких необхідно, відхилити погані пропозиції.

3
Перевірити те OpsIQ Знайдено

Чи існують нові можливості?

4
Робота в наступному списку переходів

Вже в першу чергу, AI отримав відзнаку про те, що вони мають вирішальний вплив.

Зняття після закінчення часу

Сценаріо:
Ти був на тиждень. Що сталося, коли ви пішли?
Що робити:

Відкрийте командний центр і перевірте:1) "Що таке OpsIQ"Діє" показує всі дії AI під час вашої відсутності. (2) "Затвердження анкет" показує пропозиції, які чекають на ваш відгук. (3) "Що таке OpsIQ знайдений" виділяється терміновими предметами. (4) Встановити діапазон дати приладу до вашого періоду відсутності, щоб побачити тренд.

CRM Comment

Контакти, компанії та угоди

CRM організовує свої ділові відносини на чотири об'єкти: контакти (народи), компанії (організації), пропозиції (рекламні можливості), завдання (фольво-апічні дії).

CRM об'єкти
CRM об'єктиЗв'язатися з нами, деталь та завдання об'єктів у підключеному графіку.CRM об'єктиробоча зонаКонтактлюдина · електронна пошта · телефонКомпаніяaccountsДеалможливість отримання прибуткуОБЛАДНАННЯспостереження дій1OBJECTSКонтакти, компанії, угоди2LINKEDОдин підключений графік3TASKSДотримуйтесь інструкцій
Чотири основні об'єкти (контакти, компанії, угоди та завдання) пов'язані з одним графіком клієнтів.

Контакти

Що таке контакт

Користувач у Вашому CRM_. Вони можуть бути клієнтом, перспективою, партнером або лідером. Контакти мають електронну пошту, ім'я, компанію, теги, етап життєвого циклу і бал про гарячість.

Пошук контактів

Використовуйте рядок пошуку, щоб знайти ім'я, електронну пошту, компанію або теги. Використовувати фільтри: етап життєвого циклу, лідерський бал, джерело, країна, останній дата діяльності, призначений власником.

Профіль контакту

Натисніть на контакт, щоб побачити свій повний профіль: особиста інформація, компанія, пропозиції, діяльність, квитки, чати, відвідування сайтів, загальний бал і AI-інсайти.

Офіціантка

А.А.0-100 Оцінка, що обчислюється з сигналів поведінки: візити веб-сайтів, залучення електронної пошти, взаємодії чату, історії покупок та рецепції. Вища = гаряча.

Торгові товариства

... докладніше...
Посилання на контакт- компанію

Компанія «Контакти» надає послуги з надання послуг, які надаються компанією електронної пошти або ручного призначення.

Заяви

Що таке угода

Можливість отримання доходу. У пропозиції є назва, кількість, трубопровод, етап, ймовірність виграшу, близька дата, присвоєна власником та пов'язаними контактами/компанії.

Виграймо ймовірність

Відсотковий шанс виграти угоду. Встановити вручну або обчислюється AI на основі ваших історичних даних виграшу. Приводить до масштабного прогнозу.

Здоров'я

Зелений (здоровий), амбер (не ризик), або червоний (загальна). На основі резиденції активності, тривалості етапу та сигналів залучення.

Завдання

Що таке завдання

Наказом про виконання дії, призначених особою. Завдання мають назву, дату, пріоритет, тип (всі, лист, зустріч, інші), а також зв'язаний контакт/виписання.

АІ-генеровані завдання

AI створює завдання автоматично, коли виявить щось необхідне: слідувати за встановленою угодою, реагувати на обліковий запис у рядку, вивчити новий лідер.

Знаходження гарячих проводів

Сценаріо:
Ви хочете бачити всі контакти з високою словесною мовою, які не були контактовані нещодавно.
Що робити:

Перейти до контактів. Фільтрувати за допомогою: Провідний бал > 80, Країна = Велика Британія, Остання активність > 7 днів тому. Сортувати за рахунок свинцю нащадку. Це ваші гарячі нехтовані призводить, першочергуйте вихідний.

Створення угоди з контактом

Сценаріо:
Зв'язатися з вами просто вираженим інтересом до вашого плану підприємства під час чату.
Що робити:

Відкрийте контактний профіль. Натисніть кнопку "Створити угоду". Введіть назву угоди (наприклад, "Acme Corp - Enterprise Plan"), кількість, трубопровод і етап (наприклад: "Каліфіковано"). Встановити найближчу дату та призначити його собі. Коучинець Deal почне відстежувати цю можливість.

CRM Comment

трубопровод (супровідна дошка)

Трубопровід – це візуальна дошка, де працює через етапи зліва направо. Перетягніть та опустіть карти для заздалегідь пропозиції. Кожна карта показує суму угоди, ймовірність виграшу і стан здоров’я.

Трубопровід
CRM-провідникЕкран трубопроводу з відкритими деталями, Open-value, Weighted-forecast та Атрибутовані форми, нова кнопка затвердження AI і дошка Lead/Qualified/Won.Трубопровідробоча зонаВідкрити пропозиції23Відкрита вартість$128kПрогноз погоди$74kАтрибутові пропозиції12+ Нова угодаЗатвердження черги2 для переглядуЛІДВПВ$4kЛЮДИНИ$6kЦІНАНамавтобус$30kП'яти$9kБУТОрбіт$48k1LIVE STATSПрогноз погоди та прогнози2AI QUEUEЗатвердження пропозицій3BOARDДрагоманові пропозиції за етапом
Екран реального трубопроводу: живі стати (відкрита вартість, ваговий прогноз), черга AI Затверджує пропозиції та дошка для перетягування.

Використання дошки трубопроводу

1
Переглянути ваші пропозиції

На кожному головку стовпа відображається загальна вартість акцій на даному етапі.

2
Перетягніть до заздалегідь

Перетягніть картку на наступний етап. Виграшно і миттєво відраховує оновлення. Якщо переміщення не виходить (похильність оцінки), карта повертається до початкового положення.

3
Перевірити значки карт

Зелений значок = здорова (відсотна активність, на доріжці). Амбер = при ризику (повільнюється, потребує уваги). Червоний = стиглий (не активність занадто довго).

4
Натисніть для деталей

Натисніть на картку для відкриття панелі деталь з контактами, діяльністю, Деал Тренер короткий і швидкий дії.

Затвердження

У черзі затвердження AI на сторінці трубопроводу з’являються пропозиції, які хочуть зробити AI, чому та докази. Ви можете:

Затвердження

Прийміть пропозицію як-і. Дія проходить через Trust Layer і записується в журналі.

Редагування

Змінення пропозиції до затвердження. Наприклад, зміна запропонованого етапу або налаштування суми.

Реквізити

Окреслити пропозицію. AI дізнається про відмову, щоб зробити краще пропозиції в майбутньому.

Визначте ймовірність

Виграшна ймовірність може бути встановлена вручну або обчислена AI. Коли штучний інтелект розраховує його, він використовує модель, що навчається на власних закритих пропозиціях (вон і втрачено). Якщо у вас недостатньо історичних даних, AI використовує ймовірність за замовчуванням. Імовірність приводить до масштабного прогнозу: $10,000 вся в соку 30% ймовірність сприяє $3,000 до прогнозу «як правило»

Переміщення угоди на гонщик

Сценаріо:
Клієнт підписав договір та сплачується.
Що робити:

Перетягніть картку до етапу «Вон». OpsIQ буде:1) Розмітити угоду як закритий. (2) Оновити прогноз. (3) Додати активність «Вон» на часовий ряд. (4) Якщо налаштовано, запустіть webhook захід (crm.deal.won).5) Оновити стадію життєвого циклу контакту до "Customer."

Розмітка застрягання угод

Сценаріо:
Ви хочете знайти пропозиції, які були в одному етапі занадто довго.
Що робити:

Дивитися червоні (стальовані) значки на дошці трубопроводу. Ці угоди не мали активності довше, ніж налаштований пороговий пороги повороту (збір в конфігурації CRM > Трубопроводи). Натисніть кожну угоду, щоб побачити реагацію тренера Deal Coach для реанімації.

Чи можу я мати декілька трубопроводів?+

Так. Перейти до CRM конфігурації > Трубопроводи для створення додаткових трубопроводів. Загальні випадки використання: окремі трубопроводи для нового бізнесу проти оновлення, або для різних продуктів / послуг.

Що відбувається, коли я перетягую угоду "Lost"?+

У разі виникнення втрати, ми будемо раді запросити. З моменту зняття угоди з діючої дошки, але можна знайти в закритому фільтрі. Залишається контакт у CRM.

CRM Comment

Деал тренер

У рамках програми «Деал Коучин» ви можете ознайомитися з умовами охорони здоров’я, сигналами ризику, ключовими людьми, кваліфікацією, препією наради та запропонованими наступними діями. Все є зафіксовано. Тренер показує, що квиток, чат або активність кожного претензії до нього надходить.

Тренер з питань оренди
Тренер з питань орендиСписок проблемних карток, що списують сигнали з ризиками AI із джерелами доказів, які знаходяться на стадії рекомендації AI та кнопки «Довідник».Тренер з питань орендиробоча зонаAcme Корп · $24,000Етап: Пропозиція · 60% winРИЗИК СИГНАЛИНемає відповіді в 10 до 1Чемпіон пішов тихимКомпетатори, зазначені в чатіДжерела: квиток #482 · чат 6/12 · нитка електронної поштиАІ рекомендуєЗалучення господарської діяльностіПокупець з ROI рекап7-day Закритий план.Проект електронної пошти1SIGNALSЧому може бути слига2SOURCEDКожна заява цитує докази3АКЦІЇОдин клік наступний крок
Тренер заявляє, що угода може ковзати (вчитель сигналу цитує джерело) і руки, які ви повинні прийняти наступний рух.

Що говорить вам тренер

Ознака здоров'я

Чому справа здорова, на ризику або затримана. Особливі сигнали: дні в стадії, останні контактні дані, частота діяльності, згадки конкурентів, шаблони об'єктивів.

Сигнали

Категоризований в: заперечення, згадки конкурентів, обговорення цінових пропозицій, індикатори ризику, оновлення/розширювальні сигнали. Кожен сигнал зв'язується з його джерелом (перекладач читацького квитка, квиток, електронна пошта, активність).

Чемпіон і блокатор карті

Хто допомагає угоді (збірник) і хто протипожежний (блокатор). На основі аналізу взаємодії та контактних ролей.

Кваліфікація контрольних перевірок

MEDDICC або BANT контрольний список (настрочений) показує, які кваліфікаційні критерії будуть виконані і відсутні. Сорт: A, B, C, D або F.

Засідання преп

Перед запланованою зустріч тренер генерує короткий: порядок, ключові точки для покриття, питання про те, щоб запитати, ризики для вирішення та матеріалів, які підготували.

Відповісти та планувати виклик

Запропоновані повідомлення або скрипт виклику на основі поточного стану угоди та останніх взаємодій.

Часова лінія

Кожен претендує на тренера, який надає посилання на джерело: номер квитка, ідентифікатор чату, дата діяльності або відвідування сайту.

Як використовувати тренер

1
Читати короткий

Відкрийте будь-яку угоду та прокрутіть до розділу Deal Coach. Читати статус здоров’я та ключові сигнали.

2
Закриті кваліфікаційні зазори

Перевірте кваліфікаційний контроль. Якщо «Економічний Покупець» відсутній, плануйте і залучати до держателя бюджету.

3
Акт на пропозиціях

Тренер пропонує конкретні наступні дії. Натисніть, щоб створити завдання, проведіть електронну пошту або заплануйте зустріч, всі маршрути по черзі затвердження.

Підготовка до проведення великих зустрічей

Сценаріо:
Ви вже маєте зустріч з проспектом в майбутньому про угоду $50,000 _.
Що робити:

Відкрийте угоду та ознайомтеся з розділом Prep. Вона показує:1) Основні точки розмови на основі останніх взаємодій. (2) Об'єкти, які піднялися в чаті минулого тижня. (3) Компетор, який згадується у квитку підтримки. (4) Питання, які запитують про свій час. (5) Фактори ризику для вирішення проактивно. Використовуйте цей короткий опис, щоб підготувати орієнтований, доказовий порядок.

Розуміння того, чому справа в ризику

Сценаріо:
Побудований в даній справі, що дозволяє нам бути поганим.
Що робити:

Натисніть угоду і прочитайте пояснення здоров'я Deal Coach. Це може сказати: "Ця угода була в Пропозиційному етапі для 22 дні (попередня: 14). Останній контакт був 11 днів тому. Первинний контакт відкрив квиток підтримки про проблеми міграції даних 5 днів тому (ticket #T-892). Придбання: звертайте увагу на занепокоєння з міграції та заплануйте дзвінок. Тепер ви точно знаєте, що виправити.

CRM Comment

Прогнози та звіти

Прогностування плати з дефективним діапазоном, роз’ясненнями щодо зміни рівня, а також відстеження точності, щоб ви могли довести і пояснити ваші номери.

Прогноз
ПрогнозКвартально прогнозний номер з товаром, кращими віниками та трубопровідними смугами і точністю.Прогнозробоча зонаЦЕ КАРТЕР$312k87% до метиКОМІТЕТКращий випадокТрубопровідЗразок, що зважився на здоров'я та історії · точність відстежується за часом1КАТЕГОРІЇТовари для трубопроводу2AI-WEIGHTEDЗа здоров'я3PROVABLEТочність відстежується
Згідно з даними, що ви можете захистити його від відповідальності за використання штучного інтелекту.

категорії прогнозів

Перенесення

Пропозиції з 80% або більш висока ймовірність виграшу. Це ваш найбільш ймовірний виграш. Це повинно бути мінімальний очікуваний дохід.

AI-ваговик, ймовірно,

Усі відкриті пропозиції, які вагові за допомогою AI-калькуляції ймовірності виграшу. Це найбільш реалістичне прогнозування того, що ви будете закриті.

Кращий випадок

Всі відкриті пропозиції на повній вартості. Це максимально можливий дохід, якщо все ідеально (не рідко робить).

інтервали конфігурації

Анжела 80% імовірний гурт показує реалістичний діапазон. Приклад: "Ви, ймовірно, закриєте між $45,000 і $72,000 ІІІ квартал.

Що змінилося і чому

Прогноз включає в себе щотижневу зміну аттрибуту. Коли ваш прогноз знизиться по $15,000, звіт пояснюється тим, що саме пропозиції викликали зміни: "Далі А просочений на наступний квартал (04/07/2019)$8,000), Deal B втратив ($5,000), Deal C зменшено в значення ($2,000)."

Відстеження від нещасних випадків

Прогноз MAPE

Mean Absolute Percentage Помилка: як далеко від ваших прогнозів було історично. Низько краще. MAPE 15% означає, що ваші прогнози зазвичай знаходяться в межах 15% фактичних результатів.

Вимірювання ймовірності

Вимірювальний бал, як добре перемагати ймовірності відповідає дійсним результатам. Якщо угоди на сайті 70% ймовірність, що насправді виграти 70% час, калібрування хороша.

Щотижневі знімки

OpsIQ захоплює знімок вашого прогнозу на тиждень (через трон). Згодом ви можете побачити, як покращується точність ваших прогнозів.

Рулети та попередження

Перетворення за кадром

Скільки коштує переїзд з кожного етапу до наступного. Якщо 80% перейде з Кваліфікованого до Пропозиції, але тільки 20% Ви маєте право на отримання пропозицій.

Курс валют

Які джерела свинцю виробляють найбільш виграші. Інвестуйте більше у високопрограшних джерелах.

Пер-власна продуктивність

Як кожен учасник команди з продажу: виграні, значення трубопроводу, середній розмір угоди, рівень виграшу.

Повідомлення

Сандбайнінг (нереально низькі можливості), перезбавлення (нереалістично висока), а також чиння-в-руск (висока ймовірність пропозиції, що показують високий сигнали).

Розуміння падіння прогнозу

Сценаріо:
Прогнози, що випадають з $180,000 до $155,000 з минулого тижня.
Що робити:

Відкрийте сторінку прогнозу та перевірте "Що змінено". Звіт показує: "Згода про корп (Acme Corp)$15,000) переїхали на втрачений, обраний конкурент. Угода про Beta Inc ($8,000) Закрита дата на наступний квартал. Нова угода з ТОВ «Гамма» ($3,000) додано цей тиждень. "Незмінна зміна -$20,000 + $3,000 = -$17,000, пояснюючи падіння від $180K до $163K (з рештою $8K пояснюється регулюванням ймовірності на інших пропозиціях).

CRM Comment

Знайдіть новий бізнес

Випробувано з метою пошуку та дослідження потенційних клієнтів. Опишіть Ваш ідеальний клієнт, додайте цільові компанії та дайте дослідження AI, забивайте та проведіть перший погляд.

Проспектування
ПроспектуванняПерелік компаній з перспективних питань AI, які мають відповідні ноти, бали та проек-аутреагувати.Проспектуванняробоча зонаПроспекти, які знайшли агента SDRТОВ "Нідервін"СааС · 50 кадровий супровід88Проект аутреагКобаль МфгВиробництво · 200 Персонал74Проект аутреагМеса Роздрібна торгівляЕлектронна пошта · 30 персонал69Проект аутреагЗдоров'я в ВегасіОхорона здоров'я · 80 персоналу63Проект аутреаг1FINDЦільові рахунки за цільові джерела AI2ПАРАФіт & intent рангований3DRAFTДля Вас, щоб ви зрозуміли, що вам потрібно знати
SDR агент знаходжує цільові компанії, забиває їх на придатність і протягує перший підсумковий зовнішній вигляд для вашого огляду.

Налаштування одноразового часу

1
Опишіть ідеальний клієнт

Перейти до CRM конфігурації > Перспективи. Опишіть ваш ідеальний профіль клієнтів (ICP): цільові галузі, розміри компаній, назви робочих місць, географічне фокус, умови виробництва та мінімальний показник придатності. Приклад: "B2B SaaS компанії з 50-500 працівники США/Великобританія з продажу забудовників, з VP продажів або Головою Зростання як основного контакту.

2
Додати цільові компанії

Вкажіть домени компанії або імена, які ви хочете вивчити. Ви також можете дозволити компаніям AI за допомогою ICP.

3
Результати досліджень

Компанія AI збагачує кожну компанію доступними даними: розмір, промисловість, тек-стека, останні новини та підіймається за рахунок пояснення.

4
Затвердження

Для хороших компаній AI продемонстрував персоналізоване повідомлення першого типу. Огляд та затвердження у черзі.

Підсумок

Кожна перспектива отримує 0-100 відповідати балу на основі п'яти факторів:

ICP впис

Як і компанія відповідає вашим ідеалам замовника (промисловість, розмір, місце розташування).

Невідкладні сигнали

Чи є на увазі, що вони потребують вашого продукту зараз? Постання роботи, зміни техніка, скарги про конкурентів.

Бюджетний проксі

На ринку, на основі яких є можливість отримати доступ до бюджету.

Познайомитись з продуктами

Який продукт є для бізнесу на основі промисловості та технології.

Підтримувані

Якщо ви можете ефективно служити нашим клієнтом (часовий пояс, мова, складність).

Дослідження цільової компанії

Сценаріо:
Ви хочете оцінити, чи є acme.com варто ходити.
Що робити:

Додати acme.com до списку перспектив. AI повертається: Підібрати рахунок 78/100 (добрий варіант). Причини: B2B SaaS, 120 Співробітники США, нещодавно отримали VP з продажу (відправлення про надзвичайний сигнал), використовують конкурент X (концерт продукту). Придбання сигналів: відвідали сторінку ціноутворення двічі на місяць (від відстеження сайту). Найкращий контакт: [email protected] (VP of Sales). Проектований абітурієнтом довідок про останні візити та сторінки ціноутворення.

CRM Comment

Автоматичні послідовності виконання

Наслідки автоматизації багатоступінчастого спостереження: мікс електронної пошти, очікування, завдання, виклик і дії веб-гонок, які автоматично затверджують початкове відправлення.

Послідовності
Послідовності продовженняПотокове значення: електронна пошта, почекайте три дні, електронної пошти, потім завдання, з виявленням відповіді.Послідовності продовженняробоча зонаПісля того, як ви затвердили першу відправку →Електронний листВступЗачекайте3 до 1Електронний листПідписатисяОБЛАДНАННЯДзвоните доКроки можуть бути електронні, чекаю, завдання або вебхоок. Відповідь автоматично підписує послідовність.1AUTOMATEБагатоступінчастий спостережник2STEPSВеб-сайт · e-mail · expect · webhook3YOU APPROVEПерший відправник забитий
Автоматичний багатоступінковий спостережник (email, expect, email, завдання) який ви затвердили перший і відповідає автоматично.

Як працює послідовність

1
Створіть послідовність

Визначте кроки: електронна пошта, почекайте 3 дні, електронна пошта, очікування 5 днів, завдання (все, якщо немає відповіді), електронна пошта. Кожен крок електронної пошти має шаблон, який ви можете налаштувати.

2
Записати контакти

Додайте контакти до послідовності. AI також може запропонувати зарахування з результатів пошуку.

3
Автоматичне виконання

Кроки автоматично запустіть на графік. Якщо контакт відповідей в будь-якій точці, то послідовність паузи автоматично.

4
Результати відстеження

Переглядайте відкриті тарифи, відповідайте ціни, конвертацію та відписки на крок. Використовуйте це для оптимізації вашої послідовності.

Відповісти розуміння

Коли контакт відповідей, AI класифікує відповідь:

Додаток

Цікавить, хоче говорити. Послідовні паузи, завдання, створене для спостереження.

Об'єкт

Повинні бути не відхиленими. Наслідки паузи, завдання, створене з описом об'єктів.

Відправити

Хочеться зупинити отримання повідомлень. Зв'язатися з нами назавжди пригнічує.

Не зараз

Цікаві, але терміни невірно. Суть паузи, сонце завдання створене.

Вонг людина

Не правильний контакт. Відсутність зупиняється, уточнюйте за посиланням.

Підтримка

Питання підтримки, що не відповідають продажам. Відповідність паузи, квиток створений.

Антиспам захисту

Можливість підключення

Відповідні запити на відзнаку відразу ж та пригнічують контакт з усіма майбутніми послідовностями.

Щоденне відправка ковпачок

Робочий простір-рівень щоденного ліміту (за замовчуванням: 1,000 Електронні листи). Запобігає масовим відправляє, що сповіщує спам-фільтри.

Обмеження контакту

Максимальний розмір 1 повідомлення за контакт в день. Запобігає перекручування окремих осіб.

Переробка

Покроки, які перевищили щоденну капелюшку, відкладені до наступного дня. Вони ніколи не падають або пропущені.

Що відбувається, якщо контакт відкриває квиток підтримки в рамках послідовності?+

Послідовність паузи автоматично. Підтримка робить пріоритет над вихідним способом. Послідування може бути вручну відновлено після вирішення питання підтримки.

Чи можу я пройти тестові кроки?+

Не можна створювати дві послідовності з різними повідомленнями та порівняти їх результати.

CRM Comment

Інструменти зростання

Одна сторінка під CRM, яка має двигун зростання: відторгнення доходів (MRR/ARR), каталог продуктів, свинцево-капсувальні форми, посилання на бронювання та витоки свинцю. Все тут пишеться прямо в CRM, тому подання або заброньований дзвінок є контактом з історією, не ряд у таблиці поширення.

Що живе на сторінці

Відправка доходів

Прибуток

MRR і ARR прозвучали з вашого реального векселеджера. Абоненти групуються від платежів за платформу, цикл виставлення посилюється з платіжних розривів, а передплатна клацання при перерахуванні платежу минуле 1.5 час свого циклу. Посилання клієнтів до CRM контакти автоматично, коли випробуваєте електронний лист.

Каталог продукції

Каталог

Один джерело правди для того, що ви продаєте. Цитати натягують назву та список ціни з каталогу і прийняті котирування розгортаються в дохід за товаром. Архів продуктів, вони ніколи не видаляються.

Стійки для керма

Захоплення

Кожна форма отримує вказану сторінку і розширить код для вашого власного сайту. Відповіді стають контактами, власник отримує повідомлення, а правила маршрутизації призначає лідера.

Книжкові посилання

Слухання

Розсилка на сайті організатора, часовий пояс і існуючі зустрічі. Для отримання запрошення на зустріч, по електронній пошті про те, що ви підтверджуєте підтвердження та повідомляє організатора.

Провідний маршрут

РУХА

Правила Територія запускаються першими, потім правила поля (зробіть поле, таку як країна або джерело), після чого круглий робін через свій рефлекторний басейн. Маршрути КОНТАКТИ ТА ДЕАЛС так само, що статус угоди: виграна угода все ще потребує власника для введення комісійної винагороди, відповідальності облікового запису та дотримання режиму роботи, а також у господарському чи командному режимі невидимий кожному, але керуючому. Записи, створені автоматом (продається роз'єм, чат, імпорт) не здійснюють інтерактивних творців, тому вони маршрутуються тим самим правилами створення, ніж ліворучний власник.

Створіть свій перший вигляд

1
Інструменти відкритого росту

Перейти до CRM, потім Інструменти зростання, після чого розділ Провідних форм.

2
Ім'я та підбір полів

Введіть ім'я та список з роздільною здатністю, наприклад назву, електронну пошту, телефон, поле для телефону.

3
Поділитися або посольство

Скопіюйте посилання на розміщену сторінку в будь-якій точці світу, або скопіювати коди та вставити її на будь-яку сторінку вашого веб-сайту.

4
Прибуток проходу

Кожен подач - це CRM контакт з формою. Підписаний актив, повідомлення власника та автоматичне витоку.

💡
Для отримання інформації про роботу, ми використовуємо власні сайти.opsiq.help, тому посилання завжди вирішує правильні дані.

Вбудовані захисти

Боти бачать успіх, ви нічого не бачите

Поле прихованого медовогопоту безшумно відкинути повідомлення бота.

Витрата обмежена

Десять заявок за годину IP адреса по формах і бронюванням.

Консент залишає чесний

Відправлення форми не дає згоди на маркетинг. Тільки явна свідчення про згоду.

Без подвійного бронювання

Просування в момент бронювання слота відреставрований на основі перевірки свіжої доступності.

Де дані про віддачу коштів з моменту відновлення?+

З тієї ж комерції під керівництвом вашої сторінки продажу, що використовує, за допомогою роз'ємів для рахунків. Використовуйте Re-sync від billing після підключення нової платформи.

Чи можна використовувати форми без сайту?+

Так. Кожна форма має на своєму власному адресі, що працює автономно, з або без JavaScript.

CRM Comment

Зручності для обміну повідомленнями (SMS і WhatsApp)

Один роз'єм, до двадцяти воріт. Підключіть SMS і WhatsApp провайдерів ви фактично використовуєте, позначте один як за замовчуванням, і підберіть будь-який з них при налаштуванні контакту. Консент перевіряється CRM перед будь-яким шлюзом зв'язується.

Налаштуйте

1
Увімкнути роз'єм

На сторінці Роз'ємів, відкрити протокол обміну повідомленнями (SMS і WhatsApp) та включити його.

2
Додати провайдер

У той же ящик або в CRM Інструменти зростання, заберіть шлях від випадаючого (Twilio, Vonage, Termii, Meta WhatsApp Cloud, Infobip і багато іншого), вставте його API - Кримінал та підключення. Можна додати кілька, включаючи одну й ту саму шлюзу двічі з різними рахунками.

3
Дріт вебхука

Кожен запис провайдера показує свій власний веб-сайт URL за допомогою кнопки копіювання. Вставте його в зворотний зв'язок і вхідні налаштування для отримання статусу доставки та відповідей назад OpsIQ.

4
Відправити контакт

Відкрийте контакт і використовуйте кнопку SMS або WhatsApp. Якщо більше одного провайдера підтримує канал, вибираєте вибір; інакше використовується за замовчуванням.

Перший

Надано згоду тільки

Відома згода не погоджується. Відправлення від претензій, якщо надана SMS-згода. WhatsApp дасть згоду на те саме.

До-неконтактний завжди виграє

Неконтактний прапорець блокує кожен канал, незалежно від того, що ще встановлюється.

Пригнічення відзначена

Зв'язки з переліком пригнічення ніколи не помічаються.

Відмова від імені їх причини

Заблоковано надсилати повідомлення, що ви точно знаєте, чому ви можете виправити дані замість здогадування.

Для розробників: контракт вебхоок

URL форма

https://your-address/opsiq/cron/messaging_webhook.php?sk=SITE_KEY&e=ENTRY_ID&t=TOKEN. Перехідний токен, що видається, коли провайдер підключений і ніколи не обертається на редагування.

Формати розуму

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

Ефекти

Повідомляємо про те, що вихідний рядок під проводом, який несе повідомлення провайдера, що надходить або відмовлено. Включені повідомлення відповідають контактним номером телефону всередині робочого простору, земельні ділянки як повідомлення. received активність і позначте розмову відповів.

Режим в'язання

Відповіді про відмову від токени Wrong або відсутні 403_. Невідомі навантаження нараховуються і ігноруються, ніколи не жирні, тому неправильне налаштування шлюзу неможливо зламати кінцеву точку.

Які підтримані шлюзи?+

Twilio, Vonage, Plivo, MessageBird, Sinch, Infobip, Telnyx, ClickSend, Termii, Africa's Talking, BulkSMS, Textlocal, Meta WhatsApp Cloud, 360dialog, SMSAPI, Gupshup, Kaleyra, D7 Networks, Hubtel, and a custom HTTPS webhook for anything else.

Чи безпечні умови?+

Попереднє редагування записів з порожнім секретом зберігає збережені.

Чи можна надсилати повідомлення AI?+

Так, через зареєстровані дії, які вимагають підтвердження та запуску тієї ж згоди воріт. AI також може списувати підключених постачальників для пояснення того, що є доступним.

CRM Comment

Збереження та вирощування клієнтів

Управління життєвим циклом допомагає захистити існуючі надходження. Кожен обліковий запис отримує оцінку ризику, оцінка здоров'я, рівень розширення та рекомендований успіх грибуку.

Теплий цикл
Дошка для життєвого циклуДошка для життєвого циклу клієнтів (на борту, Активний, At-risk, Renewal) з барами здоров'я на кожній картці рахунку.Теплий циклробоча зонаОНБОАРДУВАННЯАкмеСонцезахисний 40АКТИВНІСТЬГлобзикСонцезахисний 88ІнтехСонцезахисний 76АР КримСокілентСонцезахисний 28ОБОВ'ЯЗОКУмбраНовини 12dexpansion +$8k1STAGESНа борту відновлення2SCOREDЗдоров'я та розширення3PLAYBOOKРекомендований наступний рух
Клієнти, які переходять через бортове, активне, на-різак і оновлення, кожен забитий для здоров'я та розширення з ігровою книгою.

Дошка життєвого циклу

Етап мапи

Візуальна дошка, яка показує кожен обліковий запис: Провідний, перспектива, оппортуність, Замовник, Розширення, поновлення, на ризиках, Чурнований.

At-risk accounts

Нарахування, що зазначають високий ризик розмиття. Кожен показує верхній драйвер (попередній криш, бездіяльність, відмова від оплати) і рекомендовану можливість заощадити гру.

Можливості розширення

Облік, які показують сигнали готовності купувати більше: високий рівень використання, запити функцій, план запитів.

Заново

Підрахунок з майбутніми датами оновлення. Сортовано за рівнем ризику та значенням доходів.

Як OpsIQ Визначають ризик виникнення курчат

Чурн ризику обчислюється з декількох сигналів, які випливають разом:

CRM сигнали

Знежирене здоров'я, бездіяльність, останні втрати, зниження активності.

Підтримувані сигнали

Підрахунок квитків, обсяги квитка, негативне відправлення, ескалації.

Залучення продукції

Частота входу, використання сторінок, відвідування сторінки, API Дзвінки.

сигнали

Виплата, перерахунку рахунків-фактур, розрахункові запити, відміна відвідувань сторінок.

Відео

Зберегти гру

Для рахунків-дисків: не можна забувати проактивно, звертайтесь до концерну, оберіть підтримку, за необхідності ескалувати.

НОВИНКА ЗІРІВ

Для продовження оновлення: підтвердження задоволення, використання оглядів, надання відповідної цінності, отримання стимулу при необхідності.

Гра з розжарюванням

Для готових облікових записів: присутні варіанти оновлення, поділитись історіями успіху, демонструвати ROI.

Прийняти гру

Для проведення підготовки рахунків: пропонують навчання, поділяють кращі практики, дозволяють їм не використовувати.

Помиття курчат перед цим буває

Сценаріо:
Клієнт, який зазвичай журнали в щоденному режимі не зареєстрований 2 тижнів, і вони відкриваються 3 підтримка квитків в цьому місяці.
Що робити:

Дошка життєвого циклу позначає цей обліковий запис як « під загрозою » з драйверами: неактивність (14 днів з часу останнього входу) і підтримує пік (3x нормальну кількість квитків). Рекомендована поведінка: активний дзвінок, щоб зрозуміти що відбувається. Чи є проблема у продукті? Чи вони оцінюють конкурентів? Ранні заходи можуть врятувати обліковий запис.

CRM Comment

Збереження даних, які миються

Засіб для зберігання даних автоматично знаходить та фіксує проблеми з якістю даних: дублікати, відсутні поля, невідповідності та зашифрування записів.

Стюардеса даних
Стюардеса данихПерелік питань, які стосуються якості даних (супутникові, відсутні, застібки, формати), кожен з одним клацанням кнопки фіксації.Стюардеса данихробоча зонаЗнайдено питання щодо виявлення даних, які були знайденіДублікат[email protected] і [email protected]Об' єднатиПроксимус12 контакти не мають компаніїЭнріхСплав38 доручені для 90+ дніРедагуванняКонтакториТелефонні номери в 4 форматиВиправити всі1CATCHESПомилка, зазори, стебла2EXPLAINSЧому він закріпив3FIXESНа Ваше узгодження
Засіб для зберігання даних CRM чисто, пошук дублікатів, зазорів, записів та поганих форматів, фіксації на затвердження.

Що він ловить

Дублікатні контакти

Кілька записів для тієї ж особи (наприклад, [email protected] і [email protected]). Стюард пропонує зважувати їх.

Дані про зміну даних

Контакти без електронної пошти, угоди без сум, компаній без доменів. Заповненням запасних джерел.

Нездійснені записи

Договір без пов’ язаних контактів, контакти без компаній. Пропонує посилання на основі домену електронної пошти і контексту.

Невідповідності

У разі виникнення проблеми в стадії "Вон" з 20% _імовірність, контакт відзначений "Customer" без угод, компанія з незрівняною галуззю.

Етапи роботи

Задоволення, які були в одному етапі для занадто довгих або контактів, етап життєвого циклу якого не відповідає їх діяльності.

Як використовувати

1
Відкрийте список стейвардів

Перейти до CRM та знайти розділ «Стильовий центр даних» (або відкрити його з CRM Health).

2
Затвердження сейфів

Зелені елементи безпечні: прозорі дублікати, очевидні відсутні дані. Затвердження цих насипних даних.

3
Рекомендую відпочинок

З метою отримання дозволу на роботу з використанням деяких видів продукції, які ви можете отримати в будь-який час.

Очищення дублікатів контактів

Сценаріо:
"Джон Сміт"[email protected])" і "Дж. Сміт ([email protected])": однакова електронна пошта, різні назви відображення.
Що робити:

steward пропонує злиття: зберігати запис з більшою активністю, об'єднати інші пропозиції та заходи запису. Огляд пропозиції, регулювати ім'я виживання дисплея при необхідності і схваленні. Історія записів зберігається в зв'язаному контакті.

CRM Comment

Побудувати CRM

Побудувати мій CRM дайте вам описувати вашу CRM Налаштування на звичайну англійську мову. OpsIQ генерує перевірений, реверсний план і застосовує його на затвердження. Не кодування, не натискаючи вручну налаштування.

Побудувати CRM
Побудувати CRMгенерований CRM план етапів, полів і сегментів на правому рівні.Побудувати CRMробоча зонаОпишіть бізнесМи – це web-дизайнерське агентствопродаж щомісячних фіксаторів іодно-off проекти на малибізнес.Побудувати CRMГенерований планЕтапи: Провідний → ЗатримувачТипи пропозиції: фіксатор, проектПоле: щомісячне значенняРішення: SMB, агентствоПослідовність: бортовийЗатвердження та застосування1DESCRIBEПлайн-англійці2AI PLANSЕтапи, поля, сегменти3APPROVEПриклад · немає кодування
Опишіть свій бізнес в штатній англійській мові; OpsIQ протягувати весь CRM (ваги, поля, сегменти) і застосовує його на затвердження.

Як працює

1
Опишіть, що ви хочете

Види звичайного англійського опису вашої CRM-апаратури. Приклад: "Пошук відновлювального трубопроводу з етапами: Майбутні, Зв'язані, неговори, Зановлені, Загублені. Оцінка призводить до більшої кількості, коли вони виглядають в двічі".

2
Огляд плану

OpsIQ Показує перегляд того, що буде створено: конвеєр, етапи, ймовірності етапів, правила оцінювання, правила життєвого циклу. Перегляньте кожен елемент.

3
Застосувати

Натисніть на кнопку Застосувати для виконання плану. Кожна зміна записано як пакет, який ви можете скасувати в одному кліку.

4
Повернути назад, якщо це потрібно

Якщо щось не вірно, натисніть кнопку Не перевернути весь пакет. Ваш CRM повертається до його попередньої держави.

Що можна побудувати

Труби та етапи

Створення наведених трубопроводів з індивідуальними етапами, обмеженнями за замовчуванням та пороги повороту.

Правила оформлення

На основі поведінки: "Попередня вища, коли вони переглядають ціноутворення", "Найменше, коли ви відвідуєте сторінку кар'єри".

Правила життєвого циклу

Автоматично передові етапи життєвого циклу: "Поїзд до SQL, коли вони вимагають демо", "Додати Замовнику при виграші."

Користувальницькі поля

Додати поля до контактів, угод або компаній: текст, номер, дата, вибрати, прапорець, URL Електронна пошта:

Кваліфікація контрольних перевірок

Визначте MEDDICC або BANT контроль за рівнем Deal Coach.

Налаштування реноваційної труби

Сценаріо:
Ви керуєте підписками SaaS та потребуєте трубопроводу для оновлення.
Що робити:

Тип: «Створити реставраційний трубопровод. Етапи: 90 Днів з 10%), 60 Днів з 25%), Зв'язатися 40%), Негоди ()60%), Зановлений (100%), Чурнед (0%). Встановити порогу повороту до 14 дні. OpsIQ генерує план, ви переглядаєте його і натисніть кнопку Застосувати. Рослина з'являється на вашій сторінці трубопроводів відразу.

Що робити, якщо я описую щось, що не можливо?+

Якщо ви запитуєте щось за межі своїх можливостей (наприклад, "Інтегрувати з моїм користувацьким API"), вона відхиляє запит і пояснить те, що це може зробити замість.

Чи можу я скасувати зміни?+

Так. Кожна акція «Моє CRM» захоплюється як оборотний пакет. Перейдіть до CRM Health > Історія змін, щоб побачити всі пакети та скасувати будь-який з них.

CRM Comment

Налаштування CRM вашого способу

Налаштування CRM для команд, які віддають перевагу натисканню над набором. Всі налаштування, які створюють мій CRM, можуть створювати також як традиційні форми поля.

Труби та етапи

Створіть, перейменуйте та видаліть трубопроводи і етапи. Визначте ймовірність виграшу за етапом. Встановіть поріг повороту (неділя без активності до угоди позначений «розкладний»).

Користувальницькі поля

Додавання полів до угод, контактів або компаній. Типи поля: текст, номер, дата, вибір (попередньо заданими опціями), прапорець, URL, e-mail. Користувальницькі поля з'являються на профілі об'єкта і в фільтрах.

Кваліфікація контрольних перевірок

Визначте список перевірок Deal Coach використовує для оцінки угод. Виберіть MEDDICC, BANT або спеціальний набір критеріїв. Кожен пункт може бути позначений обов'язковим або необов'язковою.

Правила етапу життєвого циклу

Визначте автоматичні переходи етапу: коли контакт відповідає умові (оцінки, подає форму, робить покупку), їх життєвий цикл автоматично засувається.

Правила оформлення

Поведінка або зменшити рейтинги свинцю на основі поведінки. Приклади: "Подивитися сторінку ціноутворення = +15 точки, "Завантажений білийпапір = +10 Теги, "Відео сторінка кар'єри = -5 очок. Мінімальний розрахунок можна встановити (наприклад, «здивитись ціноутворення принаймні 2 час(ів)

Збережені перегляди

Створіть іменні комбінації фільтрів + сусла для контактів, угод або компаній. Розширюйте перегляд з командою. Встановіть зовнішній вигляд за типом об'єкта.

Додавання правила забивання свинцю

Сценаріо:
Ви хочете зв'язатися з тим, хто переглядає сторінку ціноутворення двічі або більше, щоб отримати більш високий бал.
Що робити:

Перейти до CRM конфігурації > Провідні правила Scoring. Натисніть кнопку Додати Rule. Встановити: Захід = "pageview", URL В наявності:/pricing", мінімальний розрахунок =2, Посилення результату =20. Заощаджувати. Наступного разу забіги балки, контакти, що відповідають даним правилом, отримають +20 до їх свинцю бал.

CRM Comment

CRM Охорона здоров'я

CRM Health – це самодіагностика, яка вирішить CRM правильно і безперебійно працює.

Перевірка здоров'я
Перевірка CRM охорони здоров'яКільце для здоров'я забите на 92 перемістити контрольний список перевірок та попередження.Перевірка CRM охорони здоров'яробоча зона92ЗДОРОВ'ЯЕтапи трубопровідної системи, налаштованіРоз'єм, пов'язаний і імпортУвімкнення агентів AI!Не активна послідовність спостереження!12 контакти відсутній компанії1АудиторіяВизначте налаштування2FLAGSЩо відсутні3ПАРАОдин загальний номер
Аудит на один сторінці CRM аудиторський супровід: загальний рівень здоров'я плюс контрольний список, який встановлюється правильно і що ще потребує уваги.

Що перевіряється

Симпатична

У таблиці бази даних існують і правильні колонки. Якщо пропущено міграцію, то CRM Health буде його зашифровано.

Аспіранти

Всі CRM агенти (Capture, Data Steward, Deal Intelligence тощо) зареєстровані та здорові. Зелений = робота, бурштин = потребує уваги, червоний = помилка.

Маршрути

CRM API Зареєстровані маршрути та кінцеві пункти AJAX.

Дії AI

У Реєстрі дій CRM зареєстровано каталог заходів. Якщо відсутні дії, самостійно запроваджують CRM Health.

Кількість даних

Усього зв'язку, компанії, угоди, завдання та події. Корисно для перевірки імпорту і поточного збору даних.

Після перевірки налаштування

Після першого налаштування CRM, відкрити CRM-систему і перевірити всі перевірки зелені. Якщо будь-який бурштин або червоний, натисніть пункт для діагностики пояснення та запропонованої фіксації.

Як часто варто перевірити CRM Health?+

Перевірте після початкової налаштування, після основних оновлень і коли-небудь поведінка CRM здається неправильним. Самі проблеми CRM Health (як відсутні реєстрації дій) просто відкривши сторінку.

CRM Comment

CRM підключення для розробників

Про нас CRM виводить повну громадську ІНВЕСТ API і вихідні вебхуки так що він підходить для будь-якого стека без ручної експорту.

API кінцеві точки

Афінтикація

API ключ (Authorization: Bearer opq_...) з об'ємною crm.read або crmwrite. POST до /api/v1.php з дією та сайтом_key.

Контакти

crm.contacts.list (search + filter),crm.contacts.detail (за ID),crm.contacts.upsert (create or update),crm.контакти.Зберегти.

Заяви

crm. deals. list, crm-deals, crM. deals. create, crman. deales. update, crms. deali. advance (всі через шар довіри).

Дії

crm. activities. list (часова лінія для контактних/deal), crm,activity. record (логове нова активність).

Події

crm. events. list (знімний змінний корм з курсором із щирим запахом), crm,events,catalog (список доступних типів подій).

Створіть угоду 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
}

Події Webhook

opsiq.contact.upsert

Якщо контакт створений або оновлений. Це контактна подія для підписки; немає окремого створеного заходу.

Контакти. lifecycle_changed

Пожежний при переході контакту на інший етап життєвого циклу.

Контакти

Вийшов при зміні контактного стану.

contact.conversion

Вогненний при переході записується на контакт.

Контакт tag_added

Вогнетривкий при додаванні тегу в контакт.

contact.erased

Вогнем, коли контакт стерти за запитом про конфіденційність.

crm.deal.created

Вогонь при створенні угоди.

Крм. deal. stage_changed

Вогненна угода переходить на інший етап.

crm.deal.won

Вогнем, коли угода закривається як перемогла.

crm.deal.lost

Вогнем, коли справа закривається як втрачена.

crm.company.created

Вогненна компанія, яка створена.

crm.task.created

Вогненно, коли створюється нове завдання (гуманний або штучний інтелект).

email.replied

Пожежний при контакті відповідей на вихідну електронну пошту.

email.bounced

Пожежний при відключенні електронних повідомлень.

💡
Дзвоните до webhooks.events.list Для авторитетного набору на вашому встановленні, з перевантаженням кожного заходу. Він генерується від коду доставки, тому він ніколи не може бути не погоджуватися з тим, що насправді прибуває. Повний список також відображається в розділі Webhooks.

Усі події вебгока - це HMAC-сигналізація та перерозподіл на відмову. URL в Налаштуванні > Webhooks, або обпилювач crm.events.list з щирим змінним живленням.

Syncing CRM контакти в Google Sheets

Сценаріо:
Ви хочете, щоб кожен новий CRM контакт з'явився в Google Sheet для вашої команди маркетингу.
Що робити:

Настроювання абонента вебхука opsiq.contact.upsert. Вказуйте його на веб-додатки Google Apps або веб-застосунок Zapier URL. Завантажити завантаження включає ім'я контакту, електронну пошту, компанію, лідерський бал і джерело. Ваш скрипт задає ряд до Google Sheet для кожного нового контакту.

CRM Comment

Секції

За допомогою наших послуг, ви можете скористатися фільтрами для CRM-переглядів, вихідних, рекламних акцій та інших інструментів.

Екран продукту
СекціїРедактор сегмента поєднує умови, показує кількість матчів і дозволяє оператору вибрати живий фільтр або засвідчений знімок.Секціїробоча зонаРежимЦЕНА ЗА ЧАС:LOGICВСІMATCHES1,248ОГЛЯД РОБОТИЕтапи роботирівний Активний клієнтГолосОстання активністьв наявності 30 до 1ГолосКраїнарівний ВеликобританіяГолосВисока непристойнаоцінка принаймні 70Голос1CHOOSE MODEЖивий або знімок2ADD RULESВсі або NY3REUSEПокупки та CRM
Редактор сегмента поєднує умови, показує кількість матчів і дозволяє оператору вибрати живий фільтр або засвідчений знімок.

A жива сегмент перерахунку на поточні дані, коли він використовується. A сперма в жопе занурює поточний список учасників, який корисний при перерахуванні аудиторії не повинен змінюватися після узгодження.

Вибрані ВСІ коли кожен стан повинен відповідати або БУДЬ коли один стан досить. Огляд поточного рахунку в режимі реального часу перед збереженням. Системні сегменти можуть бути видимими, але захищені від звичайного редагування.

CRM Comment

Забивка свинцю

В результаті, коли в кінцевому рахунку, можна використовувати правила, що перетворюються на поведінку та профілі сигналів.

Екран продукту
Забивка свинцюВедуться забивання показує діючі правила, вікно згортання та позитивне або негативне зміна показників кожного правила.Забивка свинцюробоча зонаПРАВИЛЬНІ12SCORED8,412HOT LEADS286ОГЛЯД РОБОТИДіяльність з цін3+ візити 14 до 1+20Покупка ключових фразмістить міграцію або підприємство+15Підтримати ризикскарга на випадок 30 до 1-10Довіра джерелоПартнер рефера+121DESCRIBE RULEВикористовуйте звичайний англійський2REVIEW FIELDSSignal, вікно, точки3RESCOREЗастосувати до робочої зони
Ведуться забивання показує діючі правила, вікно згортання та позитивне або негативне зміна показників кожного правила.

Будівля правила AI може перетворити звичайну англійську інструкцію в структуроване правило. Кожне правило все ще слід переглянути до активації: підтвердити активність або ключове слово, мінімальний обсяг, розкочування вікна та зміну показників.

Позитивні та негативні правила можуть співати. Використовуйте Редакційна робоча зона Після зміни правила матеріального права, що існують контакти, оцінюються в рамках нової моделі. Оцінка може подавати сегменти, маршрутизація, перспективи та умови робочого процесу.

CRM Comment

Продаж керма

У складі команди є можливість отримати прибуток, комісійний та відкритий трубопровод на обраний місяць.

Екран продукту
Продаж кермаЩомісячний лідерський щит займає представників продажів, зберігаючи виручку, комісійну та відкритий трубопровод.Продаж кермаробоча зонаPERIODлип.TEAM QUOTA82%БУТ184 тис. фунтівОГЛЯД РОБОТИАфіни104% · £62k виграв1stбензо88% кв.м.2-йРИТА76% · £ 43k вигратиІІІВідкритий трубопровод£312k в командіРедагування1CHOOSE MONTHПорівняйте один період2CHECK QUOTAЗатримка відповідей3COACHВикористання контексту трубопроводів
Щомісячний лідерський щит займає представників продажів, зберігаючи виручку, комісійну та відкритий трубопровод.

Цінність цін є лише тоді, коли кожен представник має поточний квот і угоди мають правильний власник, суму, валюту та найближчий статус. Використовуйте провідну раду для тренерства та визнання не як єдиний якісний захід; паруйте його з проблемами здоров'я, активність та точність прогнозів.

CRM Comment

Погодження про надання послуг

Визначені рішення, які вимагають реєстрації керівника перед висотними пропозиціями.

Екран продукту
Погодження про надання послугПолітика затвердження визначає два пороги цін і черга показує, що не вимагають жодних рішень.Погодження про надання послугробоча зонаPOLICYУвімкнутиWAITING6OLDEST3h_ОГЛЯД РОБОТИРівень 1Пропозиції £10,000МенеджерРівень 2Пропозиції £50,000СтаршийПідприємство£72,000 · запит на БенЗакінченняПроект міграції£18,500 · запитати РітаЗатверджено1SET THRESHOLDS0 вимкнено ярус2REQUESTВідповідає угоду3КУРСИЗатвердження або відхилення
Політика затвердження визначає два пороги цін і черга показує, що не вимагають жодних рішень.

Увімкнути політику та встановити рівень 1 і рівень 2 пороги. Поріг порогів 0 Вимкнено, що ярус. Коли немангер намагається виграти угоду або над порігом, OpsIQ створює запит про затвердження замість мовної зміни етапу.

Менеджери та адміністратори не заблоковані політикою. Кожне рішення має зберігати запитувача, затвердження, час і причину проведення перевірок.

CRM Comment

Правила життєвого циклу

Правила життєвого циклу автоматично перемістіть контакти між етапами, коли дані їх відповідають збереженому стані.

Екран продукту
Правила життєвого циклуПравила життєвого циклу оцінюваються за пріоритетом; перша кореляція зміни контактної стадії.Правила життєвого циклуробоча зонаАКТИВНІСТЬ7RUNSНічнийPRIORITYНайвищий першийОГЛЯД РОБОТИПровідний → КваліфікованийОцінка ≥ 60 та недавнє навантаженняПріоритет 100Кваліфіковано → ЗамовникПроведення заходуПріоритет 90Клієнт → На ризикнемає активності для 60 до 1Пріоритет 70На ризиках → ЗамовникНова покупка або відповідьПріоритет 601PICK STAGESВід і до2DEFINE FILTERСектор-стиль JSON3ORDER RULESПерший матч виграшів
Правила життєвого циклу оцінюваються за пріоритетом; перша кореляція зміни контактної стадії.

Кожне правило має вихідний етап, місце призначення, активний прапор, пріоритет і сегментний фільтр. Робота на регулярному життєвому циклі оцінює першокласні пріоритети та зупиняється після першого матчу для контакту.

Правила повинні бути взаєморозумісненими. Уникайте двох активних правил, які можуть переходити в одну і ту ж контактну форму під час однакового ходу. Випробуйте фільтр проти сегмента перед його активуванням.

CRM Comment

CRM потік діяльності

Потокове навантаження на робочу зону поєднує в собі клієнтів і операційних заходів, тому команди можуть розслідувати те, що відбулося без відкриття кожного модуля.

Екран продукту
CRM-активністьПотокове навантаження, квиток, електронна пошта, webhook, перетворення та аномальні події з фільтрами і піхви.CRM-активністьробоча зонаОРЕНДА2,804CUSTOMERS1,126ANOMALIES14ОГЛЯД РОБОТИЧат вирішений[email protected] · АІЗАМОВИТИКвиток відповівТ-1048 · Поповнення4mВхідний західsubscription.upgraded12mПеретворенняЗамовити #7788 · £14919m1FILTERПодія та клієнт2OPEN CONTEXTПерейти до запису3PAGE RESULTSЗбережіть розслідування, пов'язані
Потокове навантаження, квиток, електронна пошта, webhook, перетворення та аномальні події з фільтрами і піхви.

Фільтр за типом події, датою, контактом або станом замовника (включаючи оплату клієнтів). Подача є читаною моделлю записаної діяльності; вона не замінює вихідний квиток, розмова, угоду або роз'єм. Відкрийте пов'язаний запис перед прийомом чутливої дії.

CRM Comment

Робочі процеси

Відповідає на захід і запускає замовлену серію дій, в тому числі затримані кроки, відновлені кроном.

Екран продукту
Робочі процесиЗапуск робочого процесу показує його спуск, завершені дії, затримка очікування та наступний крок.Робочі процесиробоча зонаАКТИВНІСТЬ9RUNNING42БРАЙД1ОГЛЯД РОБОТИТригерcontact.createdПочатокКрок 1Надіслати листОДЯГПротиОфіціант 2 до 1ОчікуванняКрок 2Створення завдання з продажуНаступний1CHOOSE TRIGGERЗахід розпочинає роботу2ORDER STEPSДії та затримки3MONITORЗроблено через cron
Запуск робочого процесу показує його спуск, завершені дії, затримка очікування та наступний крок.

Створіть робочий процес, вибравши спуску, додаючи кроки в порядку і дайте його. Затримуються затримки, не проводяться запитом браузера; єдиний уніфікований cron відновлюється через робочі процеси.

У комплекті з відкритими шаблонами можна скористатися підписом, після отримання підтвердження замовлення та отримання демо-підтвердження. Зареєструвати шаблон, замінити його одержувачів/застосунок, потім перевірити контрольний запис перед широкою активацією.

Проектувати дії, які будуть idempotent. Ретри не повинні надсилати дублікати запитів на отримання грошей або створювати дублікатів записів.

Підтримка

Авіаквитки

Квитки – це ваш формальний канал підтримки. Вони мають відділення, пріоритети, цілі SLA, вкладення, внутрішні ноти та повне різьблення розмови. Квитки можуть прибути з OpsIQ admin, форма квитка / збірка, e-mail ingestion, ескалація чату, роз'єм або API.

Авіаквитки
Деталі квитківКвиток з мета-бюро (природа, відділ, SLA, статус), бесідна нитка та проект AI і дії повернення коштів.Квитокробоча зонаТ-12345ПріоритетВисока якістьУКРРозсилкаSLA_3h 12m leftСтанВідкритоЯ заряджав двічі на мійАбонемент на червень 3.А. А.Підтвердити дублікатиоплата, обробка повернення коштів.АІ-проєкт відповідьПовернення1THREADEDПовна розмова + ноти2SLA & ROUTINGПріоритет, депт, таймери3AI DRAFTВідповісти письмово для вас
Кожен квиток надає своїм пріоритетом, відділом, таймером SLA і повну нитку, а AI може продемонструвати відповідь на вас.

Як протікає квиток

1
Прибуток квитків

Клієнт надсилає повідомлення через електронну пошту, чат-ескалацію, квиток, або адміністратор створює один. Квиток отримує унікальний ідентифікатор (наприклад, T-12345_).

2
Трьох

AI читає тему та тіло, призначає пріоритет (Low/Normal/High/Urgent), пропонує відділ, а також визначає відправку. Це відбувається автоматично, якщо тривал включений.

3
Відправити

Агент відкриває квиток, прочитає контекст (профільний профіль, дані платформи з роз'ємів, попередніх квитків), а також пише відповідь. AI може продемонструвати відповіді та редагування агента перед відправленням.

4
Закрити

При вирішенні питання агент закриває квиток. Замовник повідомляється. Якщо клієнт відповідає після закриття, квиток автоматично відновлюється.

Пертикетні дії

Відділ зміни

Перемістити квиток на інший відділ (наприклад, від Генерального до Білла). Корисно при початковому маршруті неправильно.

Призначте агенту

Призначте квиток до конкретного учасника команди. Присвоюваний агент бачить квиток в розділі «Мої квитки».

Додати внутрішню замітку

Написати ноту видимого тільки персоналу. Використовуйте для: пошуки, причини повернення коштів, контекст інженерії, попередні зобов'язання. Внутрішні ноти ніколи не з'являються до клієнтів.

Квитки

Поєднуйте дублікати квитків з одного замовника. Об'єднаний предмет квитка отримує тег [MERGED]. Всі повідомлення від обох квитків зберігаються у виживання квитка.

Відповідність консервованих речовин

Вставте шаблон попереднього запису відповіді. Варіанти, такі як {{customer_name}} і {{ticket_id}} автоматично замінюють.

А. Реврит

Додайте AI покращуйте свій проект відповідь: налаштувати тон, скорочений / довжину, закріпити граматику або перекласти. Ви переглядаєте результат перед відправленням.

Зміна пріоритету

Набір до низьких, нормальних, високих або термінових. Пріоритет впливає на таймери SLA і сортове замовлення.

Змінити стан

Налаштуйте, чекаючи на Клієнта, розпоряджатися або закрити.

Ведуться роботи: обробка нещастям замовника

По електронній пошті: "Я заряджу двічі на підписку"

Сценаріо:
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.
Що робити:

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.

Департаменти

Створюйте відділення в налаштуваннях > Квитки > Відділи. Загальні відділи: Генеральний, Біллінг, Технічні умови, Продаж, Зловживання, На борту. Кожен відділ може мати різні правила автоматичного повернення, знання AI та завдання команди.

Консервовані відповіді

Створіть багаторазові шаблони відповіді в налаштуваннях > Квитки > Консервовані відповіді. Докладні консервовані відповіді включають:

Приклад консервованого шаблону відповіді
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}}

Мергування квитків

Коли клієнт надсилає той же запитання кілька разів (через електронну пошту та чат, або дві окремі листи), ви можете об'єднати дублікати. Перейти до квитка натисніть кнопку Мерж, виберіть інший авіаквиток для злиття. Виживання квиток отримує всі повідомлення від обох квитків. Предмет зливається на сайті [MERGED] вказує його комбінований.

Підключені платформи слідують зливу. Коли квитки також знаходяться на підключеній платформі (WHMCS, Zendesk, портал SaaS клієнт), злиття відбувається також: платформа об'єднує її копії, тому квиток ви продовжуєте показує перші повідомлення та відповіді на пов'язаний квиток. Об'єднаний квиток, який ніколи не на цій платформі має свою розмову додано в збережений авіаквиток як приватна кадрова замітка, ніколи не відповідав замовнику електронною поштою. Об’єднання зроблено всередині платформи (наприклад, у випадку, наприклад, в рамках платформи (для прикладу, вказаних нижче) WHMCS) об'єднує OpsIQ квитки таким же чином.

Пріоритет та SLA

Низькі

Не-хірургічні питання, запити функцій, загальний зворотний зв'язок. Цільова відповідь: 24 годин.

Нормативно-правова форма

Стандартні питання підтримки. Цільова перша відповідь: 8 год.

Висока якість

Важкий бізнес-клієнта. Попереднє реагування: 4 год.

Урбан

Послуга вниз, інцидент безпеки, втрати даних, помилка векселя. Цільова перша відповідь: 1 час.

При створенні квитка і паузи при статусі «Очікування на Замовнику». Якщо пропущена мета SLA, квиток виділяється і додатково зараховується.

Чи можна покупцям побачити внутрішні ноти?+

Ні. Внутрішні ноти суворо штатно. Вони не з'являються в порталі квитків замовника, повідомлення електронної пошти або будь-яку поверхню, що знаходиться на сайті замовника.

Що відбувається, коли закритий квиток відповів?+

Квиток автоматично відреагує і повертається в активну чергу. Команда не повідомляє про нову відповідь.

Чи можна заблокувати квиток, щоб запобігти подальшим відповідей?+

Так. Використовуйте опцію Lock Thread для запобігання як клієнт, так і AI від додавання нових відповідей. Корисно для вирішення спорів або закритих розслідувань.

Підтримка

Сервісна майстерня: SLA, рівень статусу та якість

Контрольний зал для того, як працює ваша підтримка: політики SLA з застібками, календарами бізнес-годин, обмеженим станом потоку, налаштуваннями CSAT та перемикачами функцій підприємства. Відкрийте його з сторінки квитків (На сторінці Сервісу в зоні операцій).

Політика конфіденційності SLA

Кожен новий квиток отримує перший і термін вирішення з найбільш конкретної активної політики: відділ + пріоритет бити відділення, поб'є пріоритет, збиваємо за замовчуванням. Попередня частина автоматично призупиняє роботу в разі необхідності отримання квитка або утримування.

Сходи з ескорту

Замість одного порушення дії політика може визначитися з шістьма кроками: наприклад, попереджати прикметника на 75% вікна, адміністратори оповіщення 100%, перепризначати іменнику 150%. Кожен крок вогневий точно один раз за квиток.

Графік роботи та календарі

З діловим графіком, SLA цілодобово опікується тільки під час робочого часу, тому квиток відкрився п'ятниця ввечері не порушується суботами. Назви календарів (часовий пояс, дні, години, святкові дні) можна прикріпити до індивідуальних політик для команд в різних регіонах.

Потік стану

З / до матриць, що зміни статусу адміністратори можуть зробити, з попередньою задакцією Zendesk. Автоматизація, вхідна пошта та відповіді на замовлення клієнтів завжди звільняються, тому строга матриця ніколи не може джемувати трубопровод. Додатково потрібно схвалений знак перед закриттям.

Затвердження

Агенти, які вимагають реєстрації на квиток (повернення поріг, винятку політики). Названий затвердження або будь-який Повний Адміністратор вирішує з заявкою; заявники ніколи не затверджують своє замовлення. Закінчення затвердження поверхні як банер на вказану папку.

Книжкові зв'язки

Посилання на квитки, пов'язані з дублікуванням, дублікатом, батькам або блокуванням; розщеплення відповідей на новий пов'язаний квиток (версія об'єднання, без повідомлення про клієнта); заблокувати квитки для повідомлень в додатку і додатково надсилати адреси електронної пошти CC на вихідні відповіді.

Жива папка і зіткнення

З вказаним в режимі реального часу, нові квитки та відповіді з'являються для агентів протягом декількох секунд через існуючий потік повідомлення. У квитку агенти дивляться, хто інший переглядає і отримайте сповіщення банера, коли вже пишеться відповідь. Кнопка "клай" призначає квиток на себе.

Випробування AI-програм

Правила маршрутизації можуть відповідати на сигнали про тривігацію AI: пріоритет, категорія, обмеження та ризики засвідчення, а також відобразити значення користувацького поля з вашої анкети порталу. Правила використання цих умов залишаються безперешкодними до включення функції.

💡
Кожен підприємець переключає кораблі OFF. Повертаючи одну на службу → Якість і автоматизація є опти-в; залишаючи їх не зберігає поведінку ідентично перед оновленням.
Чому клієнт все ще може відреагувати закритий квиток, коли мій матриця забороняється закрити → відкрити?+

Матриця тільки регулюють дії ADMIN. Клієнт-розпоряджені відповіді, електронні відповідей та автоматизація навмисно звільняються так сувора політика ніколи не може заблокувати клієнтів або розірвати трубопровод.

Досягнення SLA Сходи заміняють старі дії порушення?+

No. Поліції, що зберігаються з однією порушенням дії, не забезпечують роботу. Схід замінює єдиний дію тільки на політику, де ви визначаєте кроки.

Підтримка

Авто-реплі і ескалація

Автоматично-реплі дозволяє AI реагувати на нові квитки автоматично. Ескортація переходить до різних відділів, коли AI виявить спеціалізовані потреби. Обидві функції працюють у рідних квитків та електронних листах.

Авторемонт
Автовідповідь на тікетиВідповідаючи інформацію про нові квитки, затримку від AI відвідають від знань та контексту, після чого відправлено або збережений як проект.Авторемонтробоча зонаКоли новий квиток прибуваєНовий квитокбудь-яке джерелоПроти2 min_Відповіді AIКБ + контекстСентабо проектЯкщо людина відповідає затримку, автоматично повертається. Не можна ескалувати до іншої частини спочатку.1DELAYЛюдина отримує перший шанс2AI REPLIESВід КБ + контекст3OR ESCALATEМаршрут за незручним
Нові квитки отримують коротку затримку (так люди можуть стрибати), потім відповідають AI від своїх знань, відправлених або переглянуті як проект.

Як працює авторемонт

1
З'являється квиток

Новий квиток створений з будь-якого джерела (email, чат, портал, API).

2
Відповідати відгук

OpsIQ очікування настрочену затримку (за замовчуванням: 2 хвилини. Це дає змогу відреагувати людей першими.

3
Перший відгук виграшів

Якщо людина відповідає затримку, автоматично повертається. Якщо ні, AI генерує відповідь.

4
Генерувати та надсилати

AI читає квиток, перевіряє бази знань, контекст роз'єму та історію клієнтів, потім пише відповідь. Відповідь надіслана (або чергається як проект для огляду, в залежності від налаштувань).

Як працює ескалація

1
Налагодження відділень

Налаштуйте, які відділення можуть отримувати ескалації (наприклад, Billing може бути скалькує від Генерального директора, Технічні умови можна зашифрувати з Генерала).

2
Повідомити про квиток

Перед автозаправкою AI класифікує квиток, який запроваджує: вексельні, технічні, повернення, зловживання тощо.

3
Перемістити, якщо це потрібно

Якщо квиток, який не відповідає відділу ескалації, квиток переноситься. Внутрішня замітка пояснюється тим, чому.

4
Генерація в новому голосі

Відповідає за допомогою знань відділу призначення та навчання AI.

Налаштування посилання

Автоповорот

Магістральний перемикач. Включіть автозаправки AI для квитків.

Дозволені відділення

Які відділення можуть отримувати автозаправки. Почати з низькими підрозділами (Загальні, продажі) перед наданням вексельних послуг.

Проти

Як довго чекати до відповідей AI (в секундах). За замовчуванням: 120 1 час (2 хвилини. Встановити 0 для миттєвих відповідей.

Розклад

За бажанням встановити різні затримки для робочих годин проти.

Стоп на адмін відповідь

Якщо агент з людини відповідає перше, скасуйте автопопередню. За замовчуванням:

Увімкнення

Увімкнути автоматичне маршрутування на підставі квитка вказаний.

Відділи етики

Які квитки на відділення можна зарахувати.

Стан ескалації

Який статус встановити при ескалації (наприклад, Open, Pending).

Замітка проекції

Чи можна додати внутрішню замітку, яка пояснює причину ескалації.

Складання електронних листів

Квитки, створені з електронної пошти (повідомлення поштових скриньок або MX-підіслане доставки) слідувати за тим самим автоматичним і правилами засобування. AI відповідає відповідь на електронну пошту клієнту. Проекти електронної пошти йдуть до проекту чергу для перегляду, якщо налаштовано.

Чи буде авто-реплі на рахунки AI?+

Ми рекомендуємо використовувати автоматичне повернення коштів для відділення Billing. Ми рекомендуємо почати з автоматичного поповнення рахунків і дозволяє йому тільки після того, як ви навчили AI комплексними знаннями та ретельно тестували.

Що робити, якщо AI не відповідає?+

Якщо клієнт відповів, що відповідь не була неправильною, людина повинна переплітатися. Огляд історії AI для розуміння того, чому AI дав неправильну відповідь, то оновлення бази знань або навчання AI для запобігання його знову.

Чи можу я переглянути автозаправки перед відправленням?+

Так. Встановити режим доставки до "Драфта" замість "Авто-сенд". Авто-реплі протягувати з'являться у проектах, які будуть розглянуті перед відправкою.

Підтримка

Портал - укр.

В будь-якому місці, на якому ви можете переглянути свої квитки, створювати нові та відповіді, всі без внесення OpsIQ admin.

Як працює
Портал - укр.Портал підтримки, вбудований в сайт, що показує клієнт своїх власних квитків та нову кнопку.yoursite.com/supportЦентр підтримкиНовий квитокВАШІ КЛІПКИ#1042 · Питання повернення коштівВідкрито#1038 · Допомога налаштуванняРозчин#1031 · Копія накладівЗакінчення1EMBEDДодати в будь-який сайт2SELF-SERVEКлієнти дивляться свої квитки3NO LOGINНадійно керуються ідентифікацією
Портал - укр.

Три згортання смаків

Внутрішня вбудовування

Вкажіть, що ви хочете зробити замовлення.

Floating віджет

Покажіть плаваючу кнопку, яка відкриває портал квитків в панелі. Аналогічно до чату віджету.

Афінішування

Потрібні підписи на ідентичність. Замовники дивляться тільки власні квитки.

Монтаж

Ticket and chat embed
<!-- 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.

генерація токени

For authenticated mode, your server signs a short-lived token with the site secret. This token tells OpsIQ who the customer is so they see only their own tickets. It is a standard HS256 JWT: any JWT library works. The secret never goes into a page.

PHP · генерувати токени ідентичності
<?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, генерувати токени ідентичності
// 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 });
}

Особливості віджету

Список учасників

Відповідав, що статус-фільтрований список. "Отримаєте тебе" відзначає прапори квитки команда відповів.

Помилки

Повний перегляд розмови з багатим текстом, вкладками та часом.

Проект автозаправка

Клієнти, які відповідей автоматично задаються, тому вони не втрачають роботу, якщо вони навігують.

Живе опитування

Віджети опитування для нових відповідей кожен ~12 секунд.

Розчин / відкрита

Клієнти можуть самостійно перекривати квитки одним кліком.

Внутрішній персонал ноти не показані клієнтам у посольстві квитків. Це межа з безпекою, яка є обов'язковим.
Підтримка

Чат вбоксі

У чаті є де ваша команда керує розмовами з клієнтами. Вона показує активні чати, присвоєні бесіди, AI-handled chats і архівовані історії.

Чат вбоксі
Чат вбоксіУ вікні чат-пане з трьох агентів: список розмов, бесіда з AI-проєктами чіпа та панелі інструментів для відвідувачів/CRM.Чат вбоксіробоча зонаДЖДДжейн.де мій запитМАЙБУТЧоловічапитання про зарахуванняРТРИТААІ керуєтьсяДе мій порядок?Змішані сьогодні · UPSПроект AI готовийВідповісти...ВІЗОРДжейн ДоTürkçe, English, Русский, Українська...3 минулі замовленняЛТВ $480CRM CommentЕтап: Замовник1UNIFIEDЩо живе чат2CONTEXTВізитник + CRM панелі3AI ASSISTПроекти та резит
Один увімкніть для кожного чату, список розмов, нитку з AI-проектом на тапці, а також повний відвідувач + CRM контекст.

Управління розмовами

Активні чати

В даний час ми використовуємо файли cookie.

Шахрайство

Умовляння, де AI відповідає. Ви можете взяти будь-який час, натиснувши кнопку "Джон".

Призначте мені

Ви можете самостійно ознайомитися з нашими пропозиціями.

Очікування

Умовлення, де клієнт чекає відповідь.

Архіви

Виконавець. Потрібні слова, дата та клієнт.

Відправка від AI до людини

Коли ви берете розмову з AI, слідуйте цими трьома правилами:

1
Вітаю особисто

Вступіть себе за назвою. "Привіт, це Сара від команди підтримки."

2
Референційне дослідження

Покажіть, що ви читаєте розмову. "Я можу бачити вас про статус замовлення".

3
Настроювання очікування

Розкажіть, що відбувається поруч. "Я шукаю це зараз і буде відповідь на вас за кілька хвилин."

Перемикач AI на/вимкнення за бесіду

Використовуйте AI-розсилку у верхній частині кожної розмови. Коли AI наводиться, AI генерує відповіді. При вимкненні може відповісти тільки агенти людини. AI запам'ятовує контекст розмови навіть при вимкненні і спині.

Режим роботи / з годин

Налаштуйте робочі години в налаштуваннях. Зовні бізнес-годинники, AI може:1) Продовжити відповідь на клієнтів, (2) Покажіть повідомлення "назад" і створіть квиток на допуск, або (3) Уідключити чат повністю і показати форму квитка. Виберіть поведінку, яка відповідає моделі підтримки.

Поручання жорстких розмов

1
Заспокоїти

Не відповідає емоційній інтенсивності замовника. Порушуючи їх розчарування без захисту.

2
Збір фактів

Перед тим як реагувати на те, що збираються відповідні дані: реквізити замовлення, статус облікового запису, попередні квитки.

3
Ескорт рано

Якщо ситуація передбачає повернення коштів, правових загроз, зловживання або безпеку, засвідчення старшого члена команди, а не намагатися її самостійно.

Чи можу я мати чат-компанію (агент для агента)?+

Так. Використовуйте внутрішні ноти в розмові для спілкування з іншими агентами. Ці ноти ніколи не видно замовнику.

Що відбувається, коли я закриваю чат?+

Якщо клієнт надішле нове повідомлення пізніше, створюється нова розмова.

Підтримка

Обмін каналів

Підключіть WhatsApp, Facebook Messenger, Instagram DM, Telegram та LINE, щоб клієнти повідомлень вже надсилали вам прибути в одному вікні, як ваш чат веб-сайтів, відповів той же помічник AI.

Кожен канал поводиться однаково один раз: повідомлення про клієнтів стає розмовою в чаті, ваш помічник AI відповідає його за допомогою тих же знань і інструкцій, як чат вашого веб-сайту, і будь-який агент може зайняти. Ніщо про ваш AI потребує налаштування на каналі.

Як виглядає підключення

Facebook Messenger & Instagram ·

Один клік. Відкриваємо роз'єми → Facebook Messenger & Instagram DM, натисніть кнопку Підключення, вписання з обліковим записом Facebook, що керує вашим обліковим записів та виберіть сторінку. Instagram поставляється з ним, коли ваша сторінка має професійний обліковий запис Instagram.

WhatsApp_

Один клік, де ваш провайдер пропонує його: відкрити роз'єм для обміну повідомленнями та використовувати Connect WhatsApp, потім слідувати за посиланнями Meta для вибору або створення вашого WhatsApp Бізнес номер. В іншому випадку пасувати облікові дані з будь-якого з 20 шлюзи.

Контакти

Дві хвилини. Повідомлення @BotFather в Telegram, відправити /newbot, оберіть назву і закінчення імені користувача в "боті", і вставте токен, що дає вам змогу Telegram роз'єм. OpsIQ реєструє вебхоок для вас.

ЛІНКА

Створення повідомлень API канал у розробниках.line.biz, вставте секрет Каналу і доступ до токена, потім скопіюйте вебхоок URL показаний OpsIQ в LINE і відключіть свої автозаправки.

СМС

Додайте провайдера (Twilio, Vonage, Termii та інші) у Центрі обміну повідомленнями з його обліковими записами та номером відправника.

Кожен роз'єм показує свої покрокові інструкції всередині ящика, включаючи точно те, що копіювати і де. Вам ніколи не потрібно забудовника для параметрів одним кліком.

Поверніть канал на

Підключення каналу не запускає його. Перейти до Настроювання → Клієнт чат → Продовжити → Канали обміну повідомлення, переключіть на майстер-роз’єм і потім окремий канал. Кожен канал має власний AI автоматично заглиблюється, тому ви можете пілотувати один перед відкриттям відпочинку.

1
Підключення каналу

У роз'ємах, використовуючи інструкції в цьому ящику роз'єднувача.

2
Тестування підключення

Натисніть кнопку Тест. Це робить реальний виклик для провайдера і каже вам, що неправильно, якщо все це не так.

3
Увімкнути канали обміну повідомленнями

Налаштування→Клієнт чат→Просунутий. Увімкніть майстер-переключення, потім канал.

4
Надіслати повідомлення

З іншого облікового запису, повідомлення про вашу сторінку, номер або бот. Вона повинна з'явитися в чаті Inbox протягом декількох секунд і отримати відповідь AI.

Відповісти вікна

Якщо ви не хочете, щоб зробити замовлення на сайті. Ви можете звернутися до служби підтримки. OpsIQ Ви маєте право на те, що вам потрібно знати.

WhatsApp_

24 годин з останнього повідомлення замовника. Після цього ви можете надіслати затверджений шаблон, який налаштовує в одній розширеній вкладці.

Посланник & Instagram

24 годин для нормальних відповідей; агенти можуть відповісти на 7 Через добу при людському надходженні мета.

Телеграма, ЛІНІЯ, SMS

Не передбачено вікно.

⚠️
Якщо відповідь не вдається тому, що вікно закрито, розмова показує чому. Це правило платформи, а не OpsIQ ліміт.

Загальні питання

Чи відповідає клієнти, що AI?+

Тільки якщо ви їх розкажете. Відповідь на вашу сторінку, номер або бот точно так само як людина відповідь буде. Інструкція AI контролює тон і чи він сам визначає.

Чи може агент приймати над серединною верстви?+

Так. Відкрийте розмову в чаті Inbox і натисніть кнопку Приєднуйтесь. AI зупиняється, ви тип і клієнт бачить безперервну нитку на їх боці.

Що робити, якщо я відключаю канал?+

Використовуйте відключення на роз'єм. Історія повідомлень зберігається; нові повідомлення просто зупиняються, і платформа розповіла про припинення відправлення їх.

Чи можна використовувати два робочі місця, які використовують той же Facebook сторінку?+

No. Сторінка належить до одного робочого простору в часі. Підключення його десь іншого пересувається, а перший робочий простір зупиняється отримувати повідомлення, тому відключення навмисно не від’єднання між собою.

Підтримка

Реальні чат-бесіди

Ці приклади показують, як добре підготовлений клієнт AI повинен обробляти загальні сценарії. Використовуйте їх для тестування тренування штучного інтелекту і виявлення проміжків.

10 приклади розмов

1. Повернення клієнта з проханням про замовлення

Сценаріо:
Замовник: Привіт, я помістив замовлення 3 днів тому і не отримали ніякого повідомлення про доставку. Замовлення #ORD-5523.
Що робити:

АІ повинен:1) Подивитись замовлення #ORD-5523 через роз'єм.2) Повідомити про поточний стан та відстеження інформації, якщо це можливо. (3) У разі затримки замовлення, визнайте затримку і надайте розрахунковий час. (4) Не ввімкніть статус доставки, якщо роз'єм не має одного.

2. Проспективи з питань ціноутворення

Сценаріо:
Замовник: скільки коштує тарифний план Pro? Ви можете замовити щорічний рахунок?
Що робити:

АІ повинен:1) відповідь від бази знань з діючим ціноутворенням. (2) Пояснення різниці між щомісячними та річними векселями. (3) Якщо відповідь не в бази знань, скажеш і запропонує підключення їх з продажами.4) Не входити до ціноутворення, що не є базою знань.

3. Злий клієнт вимагає повернення

Сценаріо:
Клієнт: Це смішно! Ваш продукт не працює і я хочу, щоб мої гроші назад.
Що робити:

АІ повинен:1) Акносова фрустрація спокійно. (2) Запитати на номер замовлення або електронну пошту облікового запису. (3) Пояснення процесу повернення коштів. (4) Створити квиток підтримки або засвідчіть до агента людини.5) Не обіцяє повернення коштів, що вимагає узгодження людини.

4. Двохрядний корпус краю

Сценаріо:
Клієнт: Я був заряджений двічі на цьому місяці. Мій банк показує два витрати $29.99.
Що робити:

АІ повинен:1) Доповнення занепокоєння. (2) Зберіть відповідні деталі (email, дати оплати).3) Скарга, що вексельні питання вимагають рецензування людини. (4) Створіть квиток на відділ біллінгу з деталями. (5) Встановити пріоритет до High.

5. Багатомовний клієнт

Сценаріо:
Замовник: Бонджур, je voudrais savoir si vous livrez en France?
Що робити:

АІ повинен:1) відповідь на мову замовника, якщо ця мова підтримується. (2) відповідь на питання про доставку в Францію з бази знань. (3) Якщо мова не підтримується, відповідь на мову за замовчуванням і згадка про те, які мови доступні.

6. Після годинної розмови

Сценаріо:
Клієнт: Привіт, є хтось там? Я хочу допомогти з моїм обліковим записом.
Що робити:

АІ повинен:1) Якщо налаштовується після годин AI, відповідь та допомога. (2) Якщо після години створює квитки, скажімо: "Наша команда наразі відсутня. Я створив квиток на підтримку для Вас і хто буде дотримуватися під час проведення ділових годин".3) Забезпечити номер квитка.

7. Попередньокупець магазину

Сценаріо:
Замовник: Як працює ваш продукт у порівнянні з [Competitor X]?
Що робити:

АІ повинен:1) Опишіть міцність вашого продукту, що насправді. (2) Не поганий умінь конкурента. (3) Якщо є сторінка порівняння в бази знань, посилання на неї. (4) Якщо клієнт запитує про особливості, які ви не маєте, бути чесною.

8. Замовник хоче рекомендувати

Сценаріо:
Клієнт: Я запустив невеликий інтернет-магазин з про 100 замовлень на місяць. Який план підходить для мене?
Що робити:

АІ повинен:1) Запитати уточнення питань, якщо це необхідно (наприклад, які функції найбільш важливі).2) Рекомендувати план на основі бази знань. (3) Негайна причина, чому план підходить для своїх потреб. (4) Згадка, що вони можуть почати з меншим планом і оновити пізніше.

9. Замовник намагається отримати несанкціоновану знижку

Сценаріо:
Замовник: я бачив онлайн, що ви даєте 50% знижки. Чи можу я мати один?
Що робити:

АІ повинен:1) Помітно пояснюйте поточні акції, якщо вони існують. (2) Не створювати або обіцяти знижки, які не в бази знань. (3) Якщо клієнт наполегливо з'єднує їх з командою продажів.

10. Замовник потребує допомоги з функцією

Сценаріо:
Клієнт: Як я експортую свої дані? Я не можу знайти кнопку експорту.
Що робити:

АІ повинен:1) Забезпечити покрокові інструкції з бази знань. (2) Включіть точний шлях сторінки та місце розташування кнопки. (3) Якщо функція вимагає конкретного плану, згадка про це.4) Якщо функція не існує, будьте чесними і пропонують альтернативи.

Підтримка

Виїзд та заспокійливість

Коли живий чат потребує реальної людини, AI відповідає два питання: які команда володіє цією розмовою, і хто повинен бути повідомлений. Обидва налаштовані в налаштуваннях, клієнт чату, підтримки Flow, під відділами штучного інтелекту.

Вибір яких відділів AI може використовуватися

Два ящики на цій панелі є білим. Відділи, що переміщуються в право, є єдиними, AI може переходити до або відкрити квитки. Будь-який зліва наліво, невидимий йому, навіть якщо кафедра існує і працює. Почати звуження і додати відділення, як ви персоналуєте їх.

💡
У разі відсутності відділення ввімкнено OpsIQ Повернутися до спадкових маршрутів по кожному відділі, він може знайти. Треба, що як безпека сітка, не вибір конфігурації.

Хто отримує ескалацію

Це частина більшості людей очікує на налаштування та не потрібно. Коли AI замовляє чат, OpsIQ Електронний лист людей, прикріплених до цього відділу. Ви керуєте цим переліком один раз, на сторінці Команди та відділів, і як каскація квитка та ескалація чату слідувати за ним.

Члени команди

Кожен активний адміністратор, який прикріплюється до відділу, отримує власний копію. Прихильники та відключені рахунки продаються.

Первинний адміністратор

Використовується при додаванні команди, тому засвідчення все ще досягає когось.

Нікому

Неможливе розміщення. Вимкнення панелі позначок, що відділення в червоному кольорі та штучному інтелекті не говорить відвідувачеві.

⚠️
Власна адреса електронної пошти відділу навмисно ніколи не використовується як одержувач. Ця адреса є поштовою скринькою відділу, одна вхідна пошта відповідає відкритим квиткам. За допомогою спеціальної розсилки було відправлено його на новий квиток, а не досягаючи особи.

Улов-все відділення

У цьому розділі є обов'язково фіксувати всі дані. Він отримує чати AI не вдалося впевнено розмістити, а це останній курорт, а не нормальний шлях.

1
Очистити сигнали

Закупівля слів йде в відділ білінга, хостинг і повідомлення про помилки до технічної частини, купуючи слово на продаж.

2
АІ-класифікатор намагається наступний

Якщо ключові слова незгодні, модель читає розмову та вибирає із включених відділів.

3
Потім лову-всі

Тільки якщо ви приїжджаєте порожній, то лов-все відділення отримує чат.

4
Торговий центр

Якщо лов-всі є відділом продажів і відвідувач не показав купівельного сигналу, OpsIQ Шукаємо супровід або технічний відділ замість того, щоб звичайні питання підтримки не накопичувалися в продажах.

Що розповів відвідувач

Якщо ви не можете вийти, AI говорить про те, що повідомлення в чаті немає. Він не буде вимагати повідомлення про те як людина була оповіщена при наданні електронного листа.

Панель говорить «Не одне, щоб повідомити» для відділення+

Не додається. Відкрита команда та відділи, прикріпіть не менше одного активного адміністратора, потім перезавантажте сторінку налаштувань. Панель прочитає живо.

Чи можуть чат-ескалації піти десь іншим, ніж команда?+

Так. На замовлення, раніше збережена для відділу, все ще перенадає список команд. Нові налаштування повинні прикріпити людей до відділення замість того, щоб місце було підтримано.

Чому мій лов-все пропущений?+

Якщо це, і відвідувач не показало сигналу про купівлю, OpsIQ маршрутів для підтримки або технічного відділу з метою.

Підтримка

Поштові скриньки та протяги

OpsIQ може підключитися до поштових скриньок електронної пошти, щоб автоматично створювати квитки з вхідної електронної пошти та надсилати відповіді як електронну пошту. Крім того, AI-drafted відповідей на огляд людини.

Електронний лист
Email в квитокIMAP поштова скринька на лівій подачі, що надходить в квиток з AI-розвантажувальним відповіддю на право.Електронний листробоча зона[email protected] · IMAPЗапит на повернення коштів[email protected]_Не вдається увійти[email protected]_Копія рахунків[email protected]_Ticket #1042з електронної пошти · ОблікЯ хотів би повернути коштидублікати заряду...Проект AIОгляд & Надіслати відповідь1INGESTIMAP _Переадресація в2TO TICKETSВимикачі автоматично3AI DRAFTSВідповідей на огляд
Надіслати електронну пошту IMAP (або переадресацію), ввімкніть кожну на різьблений квиток, і дозвольте AI проголосувати відповідь на огляд.

Підключення поштової скриньки

Протоколи

IMAP (найбільші провайдери), Gmail API (Google Workspace), або Microsoft Graph (Outlook) 365).

Налаштування необхідних

Хост, порт, шифрування (SSL/TLS), ім'я користувача, пароля або пароль додатка, папка (зазвичай INBOX).

Кафедра картографування

Скопіювати поштову скриньку в відділенні квитка. Повідомляємо [email protected] Створити квитки у відділі "Підтримка".

Налаштування Gmail (покроковий крок)

1
Увімкнути 2-Step Перевірити

Перейти до облікового запису Google > Безпека > 2-Використання та увімкнення його.

2
Створити пароль додатка

Перейти до облікового запису Google > Безпека > Пароль додатків. Виберіть "Пошта" та "Інші (інформація)OpsIQ)». Копіювати 16- пароля

3
Вступ до OpsIQ

Перейти до електронної пошти > Поштові скриньки > Додати. Встановити господар: imap.gmail.com, порт: 993, шифрування: SSL Ім'я користувача: [email protected], пароль: пароля програми.

4
Тестування

Натисніть кнопку Перевірити підключення. Якщо успішно, OpsIQ Починати опитування для нових електронних листів за встановленим інтервалом.

Outlook 365 Налаштування

1
Перевірити IMAP

Вступ Outlook Налаштування > Пошта > Синхронізація електронної пошти, забезпечення IMAP ввімкнути.

2
Використовуйте пароль додатка або сучасний

Якщо MFA ввімкнено, створіть пароль додатку. В іншому випадку використовуйте звичайний пароль.

3
Вступ до OpsIQ

Місце проведення: outlook.office365.com, порт: 993, шифрування SSL Ім'я користувача: [email protected].

cPanel Налаштування веб-сайту

1
Знайди IMAP Налаштування

Вступ cPanel > Облікові записи електронної пошти, натисніть на свій обліковий запис електронної пошти для IMAP налаштування.

2
Вступ до OpsIQ

Хост: як правило mail.yourdomain.com або ім'я сервера, порт: 993 (SSL) або 143 (STARTTLS), ім'я користувача: повна адреса електронної пошти.

Проекти електронної пошти AI

Коли автоматично запускається режим «Draft», AI створює відповіді на проекти, які з’являються в черзі проекту. Ви можете:

Редагування

Читати проект і перевірити точність.

Редагування

Перевірити текст, тони або вміст перед відправленням.

Написати

Затвердити проект і відправити його як відповідь на електронну пошту.

КРЕДИТ

Видаліть проект, якщо він не підходить.

Авто-сенд

Якщо увімкнено впевненість, що це досить висока і автоматично відправляється після налаштування затримки.

Чому електронні листи не перетворюються на квитки?+

Перевірити:1) Чи підключена поштова скринька і здорова? Подивіться на зелений статус в електронній пошті > Поштові скриньки. (2) Чи працює робота cron? Попит на електронну пошту вимагає cron. (3) Чи фільтрується електронна пошта або пересувається в папку, відмінну від INBOX?

Чи можу я використовувати декілька поштових скриньок?+

Так. Кожна поштова скринька може бути позначена в інший відділ. [email protected] йде на підтримку, [email protected] переходить до Billing.

Підтримка

Задоволення клієнтів (CSAT)

CSAT заходи квиток і задоволення чату, поверхні нещасливих відповідей і порівнює результати AI та людини.

Екран продукту
Задоволення клієнтівСторінка CSAT поєднує в собі карти, детракторний контроль, коментарі, відділення та агенти розбиття, а також зворотний зв'язок чату.Задоволення клієнтівробоча зонаРЕЗУЛЬТАТИ386AVERAGE4.6POSITIVE91%ОГЛЯД РОБОТИПротидія з детрактором12 Відповіді оцінено 1–2РедагуванняОгляди квитківSent 24h після закриттяАвтоматичнаВідгуки про балачкуА.А. 4.5 · Людина 4.7ПлеймейтВид з агентаОцінка та оцінка результатівТренінги1WATCH AVERAGEВикористовуйте тренд, не один бал2FOLLOW DETRACTORSЧитати коментар3COMPARE FAIRLYАІ та людини
Сторінка CSAT поєднує в собі карти, детракторний контроль, коментарі, відділення та агенти розбиття, а також зворотний зв'язок чату.

Проведення опитування квитків здійснюється після закриття (без 24 години пізніше). Позитивна відповідь - це рахунок 4 або 5. Використовуйте детракторну чергу для показників 1 або 2 і прочитайте квиток/розмовлення перед контактом з замовником.

Відповіді про чату окремо для AI-розчинених та слухняних розмов. Розміри зразків не повинні використовуватися для оцінки агентів або моделей.

Підтримка

Команда електронних трансляцій

Сторінка електронної пошти дозволяє авторизуватися оператору надсилати повідомлення про всі активні агенти, вибрані агенти або відділ та переглядати історію відправлення.

Екран продукту
Електронна поштаКоманда e-mail композитора показує аудиторію, тему, повідомлення та історію доставки.Електронна поштаробоча зонаРЕЦИПІТЕНТИ12DELIVERED11БРАЙД1ОГЛЯД РОБОТИВідповідальністьВсі активні агентиВибраніТемаЛипень підтримка rotaГотовіПовідомленняГрафік та ескалація нотГотовіІсторіяПопередній трансляцію і результатПереглянути1CHOOSE PEOPLEВсі, вибрані або команди2WRITE CLEARLYТема і повідомлення3REVIEW HISTORYПідтвердити результат
Команда e-mail композитора показує аудиторію, тему, повідомлення та історію доставки.

Ця сторінка призначена для внутрішніх операційних повідомлень, не маркетингу клієнтів. Виберіть найменшу точну аудиторію, імена та адреси попереднього перегляду, а потім відправити. Доставка використовує настрочений вихідний шлях електронної пошти і записів результат.

Підтримка

Поштові скриньки, доставка та вхідні електронні листи

Налаштуйте, як OpsIQ надсилайте електронну пошту, перетворюйте вхідні повідомлення в квитки і доводить домен відправлення готове.

Екран продукту
Налаштування електронної поштиНалаштування електронної пошти об'єднують вихідні маршрути, від ідентичності, введення поштових скриньок, перевірки працездатності та тестової електронної пошти.Налаштування електронної поштиробоча зонаБУТSMTP_MAILBOXES3ОДЯГПройтиОГЛЯД РОБОТИЗ'єднувач з кольоровим роз'ємомSMTP / роз'єм провайдераКонфігураціяВід айдентикиSupport <[email protected]>ГотовіIMAP поштова скринька[email protected] · ІНБОКПокриттяМожливістьSPF · DKIM · DMARCПройти1CHOOSE OUTBOUNDРоз'єм або SMTP2CONNECT INBOXIMAP або труба3ЦЕНА ЗА ЧАСНадіслати і перевірити
Налаштування електронної пошти об'єднують вихідні маршрути, від ідентичності, введення поштових скриньок, перевірки працездатності та тестової електронної пошти.

Вихідний лист

Повні адміністратори можуть вибрати кращий роз'єм електронної пошти; OpsIQ задняється назад, щоб налаштувати SMTP/ доставка по електронній пошті при відповідному. Встановити від імені/адреси, відправити тест і перевірити перевірку 24-почасна послідовність/факультивація метрики.

Поштові скриньки

IMAP mailbox потребує ім'я, адреса електронної пошти, цільовий відділ, хост, порт, режим безпеки, ім'ям користувача, пароль, папка, стан опитування та вибір сертифікатів. Використовуйте Подати зараз для перевірки загартування перед очікуванням корони.

Миттєвий пілінг

На одному сервері можна передати повідомлення про сире RFC822 безпосередньо. Сервер віддаленої пошти може запускати сире повідомлення на захищену вхідну кінцеву точку з використанням його токена. Обидва шляхи надходять однаково дедупації, різьблення та витоку.

Можливість

Перевірка SPF / DKIM / DARC є довідковими доказами для налаштованої з домена. Зелений чек не гарантує розміщення папок, але відмову слід зафіксувати перед відправкою повідомлень про виробництво.

Підтримка

Портал підтримки Studio

Підтримка порталу Studio розробляє та публікує досвід підтримки клієнтів без використання зовнішніх засобів для забезпечення зовнішнього зображення.

Екран продукту
Портал підтримки StudioПортал студії пропонує чуйний перегляд з темою, навігацією, знаннями, квитанцією, асистентом, формою, нижньою колонкою та матеріалами. CSS контроль.Портал підтримки Studioробоча зонаTEMPLATEМодернізаціяОГЛЯДТорговий центрДЕРЖАВИПроектиОГЛЯД РОБОТИТемаБрендові кольори та типографіяРедагуванняНавігаціяЗнання, квитки, асистентРедагуванняФорма замовленняПоле, маршрутизація та копіюванняРедагуванняПаблиДійсно і в прямому ефіріРедагування1CHOOSE TEMPLATEПочати з структури2PREVIEW SIZESDesktop для мобільних телефонів3PUBLISH SAFELYРекомендувати
Портал студії пропонує чуйний перегляд з темою, навігацією, знаннями, квитанцією, асистентом, формою, нижньою колонкою та матеріалами. CSS контроль.

Використовуйте шаблон як початкова точка, потім налаштуйте тему, макет, навігація, пошук знань, форма квитка, помічник, нижній колонтитул, бренд, поведінка квитків, користувацький CSS і загальні налаштування. Preview Desktop, планшет та мобільний до публікації.

Підтримка

Знання проміжків

У разі виникнення проблем з клієнтами, AI не може відповісти на впевненість, що команда може покращити покриття.

Екран продукту
Знання проміжківУ черзі пропущено або незгодні питання і слідує, чи вирішила команда.Знання проміжківробоча зонаOPEN GAPS28REPEATED9RESOLVED116ОГЛЯД РОБОТИОбмеження міграціїПотрібні 14 разВисока якістьПідтримка вихіднихПотрібні 8 разСереднійТерміни повернення коштівПотрібні 6 разСереднійAPI регіониПотрібні 3 разНизькі1REVIEW QUESTIONДивитися контекст розмови2CHOOSE FIXСтаття або підказка3RESOLVEПеревірити наступну відповідь
У черзі пропущено або незгодні питання і слідує, чи вирішила команда.

Відкрийте зазор, щоб читати оригінальне питання і по сусідній розмові, потім виберіть правильний виправити: оновити існуючу статтю, створити нову статтю знань, додати бізнес-фахівець, виправити дані роз'єму або змінити інструкції з ескалації. Змітайте це вирішити тільки після оцінки або реального тесту повертає прийнятну відповідь.

Підтримка

Керування сторінкою стану

Сторінка управління статусом, що надає послуги охорони здоров'я та інциденти з використанням компонентів, сучасних станів і оновлень.

Екран продукту
Адміністрування стануІнформація про надання послуг, що надаються користувачами, можуть публікувати чіткі та перевірені часом сервісні дані.Адміністрування стануробоча зонаOVERALLОпераційнийКОМОНЕНТИ7INCIDENTS1ОГЛЯД РОБОТИВеб- сайтОпераційнийЗеленийAPI_Оцінено продуктивністьДивитисяВживання електронної поштиОпераційнийЗеленийПоточний інцидентAPI Дослідження затримкиВідкрито1UPDATE COMPONENTВиберіть прозорий стан2POST INCIDENTОстанні оновлення3RESOLVEЗакрити з резюме
Інформація про надання послуг, що надаються користувачами, можуть публікувати чіткі та перевірені часом сервісні дані.

Використовуйте компонентні стани послідовно. Коли інцидент впливає на клієнтів, опублікувати початкове повідомлення, додавати часові оновлення як зміни фактів і закривати з'єднанням резюме. Не використовуйте сторінку стану в якості внутрішнього дебюгового журналу; чутлива діагностика належить до OpsIQ і журнали серверів.

А. А.

Налаштуйте свій AI

Налаштування штучного інтелекту — це місце, де ви можете обрати постачальника, модель і параметри управління вартістю. OpsIQ підтримує декілька постачальників: Claude (Anthropic), GPT- 4o (OpenAI), Gemini (Google) і Grok (xAI). Ви можете використовувати власні API ключ (BYOK) або керований штучний інтелект, якщо він доступний у вашому плані.

Налаштуйте AI
Налаштування AIПанель налаштувань AI: керований-AI / BYOK провайдера, сенсор моделі та щомісячний датчик відтоку.Налаштування AIробоча зонаНалаштування AIПро компаніюКерований AIВаш ключ (BYOK_)Модель:клауд · збалансованийЩомісячний бюджет AI62%1TWO MODESА. А. BYOK2PICK A MODELШвидкість проти глибини3BUDGETSКонтроль за витратами та вартості
Виберіть керований AI або власний ключ, заберіть модель для швидкості проти глибини і щомісячно проведіть з токенним бюджетом.

Вибір постачальника

Клод (Claude)Anthropic)

Сильна причина, обережність з фактами, добре в наступних складних інструкціях. Моделі: claude-sonnet-4-20250514, застібка-3.5-sonnet. Найкращі для: підтримка розмов, технічні питання, детальний аналіз.

GPT-4o (OpenAI)

Швидкий, творчий, хороший загальний знання. Моделі: gpt-4o, gpt4o-mini. Найкраще для: швидке реагування, креативне написання, широкі питання знань.

Gemini (Google)

Хороші питання, багатомовна підтримка. Моделі:gemini-2.0-гри,gemini-1.5-про. Кращий для: багатомовний супровід, фактичні погляди.

Грос (xAI)

Швидко, лаконічні відповіді. Моделі: grok-3-mini-fast. Найкраще для: швидкі відповіді, випадковий тон.

BYOK проти керованого AI

BYOK (Включіть свій власний ключ)

Ви надаєте свій власний API ключ від провайдера. Ви платите провайдеру безпосередньо. Повний контроль за вибором моделі та використанням.

Керований AI

АІ забезпечується в рамках OpsIQ Планування. Ні API ключ, необхідний. Використання здійснюється на умовах кредитного балансу вашого плану.

Налаштування покрокового налаштування

1
Перейти до вмісту AI

У OpsIQ admin, навігувати на налаштування > Конфігурація AI.

2
Оберіть провайдер

Виберіть ваш провайдер AI з випадаючого боку.

3
Електронний ресурс API ключ

При використанні BYOK, введіть свій API ключ. Для керованого AI це автоматично ручиться.

4
Оберіть модель

Виберіть конкретну модель для використання. Менші моделі швидше і дешевше. Більшість моделей дають якісні відповіді.

5
Тестове підключення

Натисніть кнопку "Завантажити підключення" для перевірки API Теплий знак – це робота. Зелена закладка — це успіх.

6
Зберегти

Натисніть кнопку Заощаджувати для активації конфігурації AI.

Контроль витрат

Щомісячний бюджет

Налаштуйте максимум щомісячних витрат на токени AI. Коли досягнуто бюджету, особливості штучного інтелекту граціозно деградують (короткорезні відповіді, не авто-реплячі), а не повністю зупиняючись.

Перекоси токени ліміт

Максимальні токени на одну розмову. Запобігає перехресних розмов від споживаючих зайвих кредитів.

Попередження з низьким рівнем балансу

Коли ваш кредитний баланс AI падає нижче порогу (за замовчуванням: 50,000 _kens), попередження з'являється в адміністраторі. Встановити це в конфігурації AI.

Налаштування простору Per-work

Налаштування AI є пер-робочим простором. Якщо ви керуєте декількома сайтами, кожен робочий простір може використовувати різні провайдери, модель та бюджет. Робочий простір успадковує глобальні за замовчуванням, якщо перейменувати. Щоб налаштувати робочі місця: ввімкніть до робочого простору, потім перейдіть на налаштування AI і заощаджуйте налаштування там.

Початок API ключі

Anthropic (Клодий)

ЗАМОВИТИ console.anthropic.com > API Ключі > Створити ключ. Скопіювати ключ від "sk-ant-".

OpenAI (GPT)

ЗАМОВИТИ platform.openai.com > API Ключі > Створити новий секретний ключ. Скопіювати ключ від "sk-".

Українська (uk)Gemini)

ЗАМОВИТИ aistudio.google.com > Отримувати API Ключові слова. Створення ключа для вашого проекту. Скопіювати ключ.

xAI (Грок)

ЗАМОВИТИ console.x.ai > API Ключі. Створіть і скопіюйте ключі.

Тестування на налаштування AI

Сценаріо:
Після в'їзду на ваш API ключ, натисніть кнопку "Завантажити підключення". Ви повинні бачити зелену замітку і відповідь зразка від AI.
Що робити:

Якщо тест не виходить:1) Перевірте, що API ключ правильно (не зайвих пробілів).2) Перевірте, що ваш обліковий запис має вексельні рахунки з постачальником. (3) Перевірте, що ім'я моделі діє. (4) У разі використання Managed AI, перевірте вашу ліцензію.

Який провайдер краще?+

Компанія GPT-4o є одним з кращих провайдерів. Claude відмінно підходить для підтримки бесід. Gemini ручка з декількома мовами добре. Спробуйте кожен і див, який виробляє найкращі результати для вашого конкретного випадку використання.

Чи можу я переключити провайдера пізніше?+

Так. Зміна провайдера та API В будь-який час зберігається історія розмови. AI використовуватиме новий провайдер для всіх майбутніх бесід.

Що відбувається, коли я виконую кредити?+

АІ деградує благотворно: відповіді стають коротшими, автоматично заглиблюються паузи, а адміністратор показує попередження про низький рівень. Основні відстеження, квитки та CRM продовжують працювати без AI.

А. А.

Смартер і дешевший чат

Набір опти-в контрольних пристроїв, які роблять чат вашого клієнта або смартером (з причинами рахунку замовника, як агента людини) або дешевше (відправляє AI меншим, або відповідей в декількох кроках). Кожен контроль вимкнено за замовчуванням і незалежною, перетворюючи одну на ніколи не змінює будь-яку іншу поведінку. Більшість живих під Settings > Клієнт Чат > Behaviour; кілька є на Налаштування вашого AI та Поїзд ваш AI.

Розумний відповідей (режим агенції)

Відповіді про нормальний чат-бот від одного погляду. З Режим агента На жаль, асистент може зробити кілька перевірок на рахунках з використанням одного повороту та перехресного їх налаштування, наприклад «до того, що я відкривав квитки і є достатньо балансу для мого наступного оновлення? Відповідь на одну відповідь з математиками зроблено. Він залучає тільки перевірених клієнтів на обліковому записі або обміняцьких питаннях; все інше працює нормальним одностороннім способом.

Режим агента

До декількох переглядів, які читаються на черзі, перехресні перед відповідями. Увімкніть, коли у вас підключена платформа (WHMCS, Shopify, Stripe, Zendesk і т.д.). Оф=на сьогоднішній односторонній поведінка, незмінний.

Проведення глибини для відповідей агента

Як важко визначити причини моделі на складних поворотах (низ /середній/високий). Почати на Низьке, більшість питань підтримки ручать добре.

Модель агента

Приколіть більш міцну модель, просто для розворотів складного агента, тому щоденний чат залишається на світлі, дешевої моделі і тільки жорсткі повороти оплачуються за глибину. Заглушка = Ваш нормальний клієнт-чат модель.

План попереду · одноходові відповіді (beta)

На блоці планують вийняти рішення, які шукають і чи потрібна база знань, а потім відповідей на головний виклик ONE замість декількох кроків. Підключення в режим Агента не можна включити, якщо Режим агента знаходиться. Таке відповідь якість, менше дзвінків по багаточастинкових питаннях.

Розмова та розуміння

Довгострокова пам'ять (бета)

Тримає короткий пробіг старих повідомлень (ім'я, квиток/носія, суми, рішення) так що помічник залишається послідовним через дуже довгі чати без перезапуску всієї трафаретної. Найкраще для підтримки-гаїв, довгих ниток; пар з режимом Агента.

Допуск до типо

Читання невеликих наборів ("ми відкриті квитки", "необхідні рахунки") як призначені слова, так що правовідносин не знайдено. Працює з кожним підключеним майданчиком. Від за замовчуванням; корисний для мобільного чату.

контекст облікового запису Lean

Тільки прикріплює обліковий запис клієнта, коли питання насправді про свій рахунок (баланс, рахунки, квитки, послуги), пропускає його на загальні запитання. Вирізає вартість без втрати якості. Помічник все ще може викинути рахунок в режимі реального часу, коли вона потребує.

Економія вартості

Пошук знань про вітання (бета)

"Привіт", "танки" і "ок" не запускають пошуки знань бази, відповіді ніколи не використовують його. Будь-яке повідомлення з реальним змістом все ще шукає як нормальне.

Найдовший відповідь дозволено (токени)

Caps як довго один відповідь може бути. Відповісти довжина є найдорожчою частиною виклику, так що чутливий ковпачок (середній 500 для підтримки) є одним з найбільш ефективних управління витратами чату. Тільки знижує ваш глобальний ліміт, ніколи не піднімає його.

Настроювання штучного інтелекту

Глибина мислення (помічник і адмін чат)

Скільки модель думає перед відповіддю (мінімально до високих). Тримайте чат клієнтів на мінімальному / низу для швидкості; резервуйте вище налаштування аналізу та копілоту адміністратора.

Пер-AI модель (за роботою)

Кожен AI-пристрій (вітний чат, квиток, підсумки, аналіз, адміністратор copilot, акції, Site Intelligence та багато іншого) може працювати на власній моделі. Світло, де значення швидкості, сильний де якість має. Заблокувати поверхню = провайдер за замовчуванням для цієї роботи.

Контроль вартості адміністратора чату

У адміністратора копілот може зберігати обмежену робочу пам'ять та завантажувати лише інструменти, які необхідні для питання (танні інструменти) замість кожного інструменту.

На поїзді AI

Інструкція по стиснення

Ваша інструкція подається на кожен оборот, тому їх довжина є рекурентною вартістю. Кнопка Compress перезаписує слот, щоб сказати те ж саме в меншій кількості слів. Вона відмовляється від повторення, якщо вона буде скидати будь-який {variable} _/Право і повідомляє про те, що він захищений, так що це ніколи мовчить зміни значення.

"What's already in the brain" (ℹ️)

Покажіть, що OpsIQ вже знає про ваш бізнес на слоті, тому ви можете видалити все, що ви повторилися в інструкції.

💡
Де відбувається гроші? Для короткого супроводу чату введення (вступи + дані облікових записів + історія, відправлені кожен поворот) зазвичай коштує більше, ніж коротка відповідь, кешування та худий контекст допомогти більшості там. Для тривалого створеного вмісту виводять домінанти. Відповісти-довжина шапки і нижча глибина мислення окупаються там. Див. Настроювання вашого AI для збереження оперативної кешування на, що робить велику повторну частину кожного повороту дешево.
Чи можна ці зміни, як чат вже відповідає?+

Немає. Кожен контроль вимкнено за замовчуванням і незалежною. Вимкніть одну на тільки додає свою поведінку; відключіть його повертає чат, щоб точно як він працював перед.

Що робити?+

Запустіть щоденний чат на легкому моделлю і стирайте більш міцну модель агента. Потім, якщо у вас підключена платформа, ввімкніть режим Агента, потім плануйте заздалегідь, після довгого з'єднання пам'яті. Тоді худий контекст, пропускаємо-KB-для-вітань, а відповідь шапка. Нарешті компресуйте свою інструкції. Подивіться кілька реальних чатів після кожного зміни.

Набір Агента адміністратора: веб-пошук, рункі книги, місії, передача файлів

Адміністратор AI чат є робочим інженером, не просто вікно питання. Він може здійснювати дослідження закріплює на сайті, зберігати бібліотеку ваших операційних процедур, патрулювати свої сервери в розкладі і переміщати файли. Більшість з них приводиться запитуючи для нього в чаті; одне, що ви налаштований передній, який він використовує веб-провайдера, налаштувати сторінку штучного інтелекту.

Пошук сайтів

Вбудований

Засіб шукає веб-додатків, повідомлень про помилки та поточну інформацію, коли він працює. З коробки це використовує DuckDuckGo, які не повинні ключів і ніяких налаштувань.

Виставки

У чаті

У вас є можливість отримати доступ до Інтернету. Якщо ви хочете, щоб зробити це, то наш сайт використовує файли cookie та інші файли cookie.

Місія

Розклад

Заплановані патрульні записи. "Що вранці перевірте дисковий простір і журнали помилок і скажіть мене". Знаходиться на вашому адміндіт.

Передача файлів

У чаті

Запитайте файл логу та отримуйте посилання на приватне завантаження, або з'явився один файл, який копіюється з одного підключеного сервера до іншого. Обидва захоплені 5 MB.

Пошук адміністратора сайту (настановити ваш AI)

Пошук провайдера

Що використовує веб-браузер агента. За замовчуванням DuckGo: без ключів, безкоштовно, працює на кожній установці. Пошук Brave, Tavily і Serper.dev (Google результати) зазвичай повертає кращі результати, але кожен потребує API ключ від цього провайдера. Якщо ключовий постачальник не вдається з будь-якої причини (повний ключ, квота використовується вгору, мережеві неприємності), що пошук повертається до DuckDuckGo автоматично, тому пошук ніколи не йде темним.

Search API ключ

Для вашого обраного провайдера, тільки потрібно для Brave, Tavily або Serper. Після того як він знову замаскувати і ніколи не відображається на сторінці; вставте новий для його заміни. За допомогою цього провайдера працює активна лише тоді, коли обидва провайдери та її ключі зберігаються.

Виставки

Коли агент працює лише через роботу, яку ви хочете зробити так само, як знову, скажте "Зберегти, що як runbook називається нічним способом". З того часу на ньому бачить книгу за назвою в кожній сесії, а коли ви просите роботу по імені (або описати його) він витягує кроки і слідуйте їм. Ви можете попросити її у список, оновлення або видалення книжок будь-який час.

💡
Підручник є настановою, не безкоштовною проходкою. Коли агент слідує один, кожен крок, який змінив сервер все ще йде через режим поточного дозволу і показує звичайні карти затвердження. Запускник ніколи не може обійти схвалення.

Місія

Місія - це повторювана робота агента, яка працює самостійно: годинно, щодня в встановлений час або щотижневий день. Місії прочитаються по дизайну. Вони можуть читати сервери, дані і веб, але вони ніколи не можуть змінити нічого; вони розслідують і повідомляють. Коли місія закінчиться, пошук землі як повідомлення на вашому адмін-дзвонику. Скажіть "відновити ранковий патрул зараз" для того, щоб викликати один за запитом, або попросіть агента до списку, паузи або видалення місій.

⚠️
Місія, які виводяться в роботу OpsIQ cron, тому необхідно налаштувати (див. Cron і автоматизація). Один-включення "запустити його зараз" від чату працює навіть між кроновими пробігами на більшості серверів.

Переміщення файлів

Запитайте файл («Оберіть мені сьогодні журнал помилок з веб-сервера») і стадій агента, він відповідає за посилання на приватне завантаження. Посилання тільки працює для зареєстрованих адміністраторів та закінчується після про день. Файли копуються в 5 MB_; для будь-якого більшого, запитайте агента для стиснення або підстригти його на сервері першим.

Засіб також може копіювати один файл між двома підключеними серверами, знову до 5 MB. Запис на пункт призначення оброблюється як будь-яка інша зміна, що робить: в режимі запитати спочатку затвердження карти, існуючий файл повертається вгору, і копія є оборотним. Для безпеки вміст файлу перечитується з джерела в даний момент наноситься копіювання, не приймається від чату.

А. А.

Поїздка на AI

Навчання AI є де ви навчите OpsIQ як бути поведінкою. Ви пишете підказки, які визначають особистість, межі, фокус знань та правила ескалації. Подумайте про це, як написання посібника для підготовки до нового агента підтримки.

Поїзд AI
Поїздка на AIРедактор інструкцій AI з вкладками Замовника/Admin та plain-Ukrainian tone, завжди і ніколи не правила.Поїздка на AIробоча зонаЗамовник AIА. А.ТонПо-друге, лаконічність, ніколи не штовхає.ЗавждиПропозиція для вирішення спорів вексельних послуг.НеймовірноВиміряти повернення коштів без перевірки рахунку.1TWO MANUALSАО «Айс»2PLAIN ENGLISHТон, завжди, ніколи3GROUNDEDПлюси бази знань
Відвідайте AI як новий прокат, керівництво по роботі з клієнтами та адміністраторами, написані на звичайному англійському (внутрішньо, завжди, ніколи), заземленому у вашому КБ.

Двох навчальних майданчиків

Клієнт AI підказка

Контроль, як AI говорить для ваших клієнтів в чаті віджет. Це найбільш важлива підказка, щоб отримати право.

АІ-проксим

Контроль якості AI допомагає вашій команді адміністратора в панелі приладів оператора. Це ручить внутрішні запити і виконання дій.

Написання великого клієнта AI-підказка

Ваш запит на AI-провайдер повинен обкладигати ці напрямки:

1
Зручність

Хто є AI? Надайте йому ім'я, роль та особистість. Приклад: "Ви Luna, дружній і зрозумілий помічник підтримки клієнтів для Acme Store".

2
Тон і стиль

Як це потрібно спілкуватися? Приклад: "Чи є професійним, але теплим. Використовуйте просту мову. Уникайте бангону. Зберігати відповіді лаконічно (03/22/2019)2-3 абзаци макс."

3
Знання

Що слід знати і не знаю? Приклад: "Ви знаєте про нашу продукцію, ціноутворення, доставку та політику повернення. Ви не знаєте про конкуренційних товарів або рішень внутрішньої компанії".

4
Правила епарації

Коли він повинен віддати перевагу людині? Приклад: "Складений до агента людини, коли: клієнт просить повернення коштів, згадує юридичну дію, повідомляє про питання безпеки або запитає те ж саме питання три рази."

5
Що робити, щоб не зробити

Важкі межі. Приклад: "Необхідно обіцяні повернення коштів. Ніколи не поділяють формули внутрішнього ціноутворення. Не дозволяйте продуктові функції, які не існують. Нікола не давати медичну, юридичну або фінансову консультацію".

Приклад підказок

Приклад запиту клієнтів AI · Інтернет-магазин
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
Приклад запиту клієнтів AI · хостинг компанії
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

Відновити свій час

1
Запуск з основами

Почати з ідентичністю, тоном і ключовими кордонами. Не намагайтеся обкладати все в день.

2
Огляд історії AI щотижневий

Читання розмов, де AI дав неправомірні або субоптимальні відповіді.

3
Оновлення запиту

Додайте спеціальні правила для усунення проблем. Наприклад: якщо AI зберігає перспективні повернення коштів, додайте «Необхідно обіцянку повернення коштів. Скажіть, що ви замовляєте вексельну команду».

4
Додати знання

Якщо AI не може відповісти на питання, додайте відповідь на базу знань, а не намагайтеся вписати все у підказці.

⚠️
Зберігати ваш запит під 2,000 слов. Понад довгих оперативних запитів можна заплутати AI і збільшити витрати на токени. Детальну інформацію про бази знань не потрібно.
Що таке різниця між підказкою та базою знань?+

Підказка визначає особистість, межі та правила. База знань забезпечує фактичну інформацію (таблички продуктів, ціноутворення, політики). AI читає як, але оперативна поведінка форм при КБ надає відповіді.

Чи можу я мати різні підказки для різних відділів?+

Підказка є пер-робочим простором. Якщо вам потрібна різна поведінка AI для різних відділів, скористайтеся базою знань для надання галузевої інформації та згадувати контекст відділу у Вашій перспективі.

А. А.

Історія

Історія AI показує кожну розмову з AI, яка мала з клієнтами та адміністраторами. Використовуйте її для перевірки продуктивності AI, пошуку невірних відповідей і виявлення проміжків підготовки.

Історія
ІсторіяЖурнал AI виходить з значками типу, питання і відповіді, час відгуку та результат.Історіяробоча зонаКожен AI-перетворювач, записанийбетменQ: де мій порядок?A: відправлено сьогодні, відстеження UPS ...0.9s, зЗабронюватиВідповідає за T-12345визнання відшкодування, що підтверджується1.4sdraftedадміністраторСуммаризация этожных квитків12-line резюме2.1sроботбетменQ: скасувати підпискуз людини0.7sescalated1EVERY TURNПромпт, відповідь, дія2SEARCHABLEФільтри та експорт3OWNER-ONLYПовний аудит
Кожен AI-перетворювач (чат, проект квитків, дія адміністратора) увійшов до точного запиту, відповіді, тривалості та результату.

Що показує кожен бесід

Дата і час

Коли розмова відбувалася.

Клієнти

Ім'я та електронна пошта, якщо відомо, інакше IP і країна.

Канали

Чат віджет, квиток автоматично заповнюється, електронний проект або адміністратор AI.

Повідомлення

Повний текст розмови: повідомлення клієнтів та відповіді на AI.

Використання токенів

Скільки токенив розмови споживали. Висока використання жетона може вказувати на AI, що дає надмірно дієслові відповіді або розмова пішли в колах.

Дії, які приймають

Будь-які дії AI, виконані під час розмови (розповнено замовлення, створеного квитка тощо).

Гарантії

Якщо CSAT включений, рейтинг задоволеності клієнтів для цієї розмови.

Проблеми пошуку

Пошук по ключовому

Пошук конкретних тем, щоб побачити, як AI керує ними. Приклад: пошук "повернення" для перевірки, якщо AI слідує політиці повернення коштів.

Фільтр за рейтингом

Розкажіть лише низькопротежені розмови, щоб зосередитися на незадоволених клієнтів.

Фільтр за каналом

Показати тільки автоматичні пропозиції квитків для перевірки автоматизованих відповідей окремо від чату.

Сортування за допомогою токенів

Ви можете вказати проблеми: обрамлення AI, що йде в колах або не відповідаючи на запитання.

Щотижневий аудит

1
Перевірте неоцінені розмови

Чи вирушили неправильний переклад? Чи був це проміжок знань, питання тону або неправильна відповідь?

2
Перевірити високоточні розмови

Чи може бути штучний інтелект? Чи не зрозуміє це питання?

3
Навчання

Для проміжок знань додайте статті до бази знань. Для питань поведінки, оновлення AI підказка. Для повторення неправильних відповідей додайте чіткі правила корекції.

Знаходження проміжків знань

Сценаріо:
Пошук AI Історія для "інсталяції" та пошуку 15 «Я не маю специфічних інструкцій з монтажу для цього виробу».
Що робити:

Це означає, що Ваш бази знань відсутні інструкції з монтажу. Створіть базові статті для кожного етапу встановлення продукту. Після додавання їх перевірте, запитуючи питання про встановлення AI.

А. А.

Інсайти AI

AI Insights автоматично аналізує шаблони розмов і поверхні, що діє на основі: загальні питання, тенденції задоволення, проміжки знань та схеми зараження.

Інсайти AI
AI-інсайти (Intelligence Hub)The Intelligence Hub: оглядовий центр AI сьогодні, Smart Alerts, оцінка-a-Lead / Analyse-A-Page інструмент, а також інтелектуальний інтерфейс 14-День шаблону трафіку.Інсайти AIробоча зонаБУРЕЙФтрафік вгору 12%; 3 гарячі дроти; 2 пропозиції, необхідні для спостереження.Смарт-альтеріїПеревірити помилкиВимкнено /pricingНовий гарячий свинець з СШАЗакінчення минулого тижняОцінка Lead / Аналізувати сторінкуIP або URL…Пробіг14-День шаблон трафіку1БУРЕЙФАІ пише ранковий підсумок2SMART ALERTSАномалі поверхневі3ON DEMANDОцінка свинцю · аналіз сторінки
Реальний розвідувальний центр: огляд AI-писання сьогодні, смарт-аертів для аномалії, на вимогу забивають і аналізують сторінку, а також 14-денний шаблон трафіку.

Що показувати

Топові питання

Найпоширеніші питання. Якщо "Як я скидаю пароль?" - #1, Ваше знання бази вимагає відвідуючого пароля.

Сатисфактичні тенденції

CSAT забирає час. Чи є задоволення AI, поліпшення або декларування? Садден краплі можуть вказати зміни бази знань, які зламали щось.

Нормативно-правовая форма

Який відсоток бесіди вирішує AI без втручання людини? Ставка вище 70% добре. Нижче 50% – АІ потребує більше тренінгів.

Причини виникнення ескорту

Чому бесіди віддають перевагу людям. Загальні причини: клієнт запитував людину, AI не може відповісти, чутлива тема, питання про вексельні послуги.

Знання проміжків

Теми, де AI часто говорить "Я не знаю" або надає відповіді на низьку конфіденційність.

Середня довжина розмови

Скільки повідомлень за бесіду. Дуже довгі розмови (10+ повідомлення) може вказувати на AI, не розуміючи питання.

Використання інсайтів для поліпшення

Сценаріо:
АІ-інтерфейс показує, що 23% ескалації – це «Попит на гарантії» та штучний інтелект не може відповісти.
Що робити:

Це чіткий проміжок знань. Кроки:1) Написати вичерпну інформацію про гарантії в бази знань, що охоплює всі гарантійні умови, процес розгляду та виключення. (2) Оновити AI запит на довідкову інформацію. (3) Монітор AI Insights наступний тиждень, щоб побачити, якщо зниження рівня гарантій.

А. А.

А. А. Грибенко

Адміністратор AI (Ask)OpsIQ) допоможе Вашій команді керувати OpsIQ з в рамках адмін панелі. Ви можете попросити його шукати дані, роз'ясовувати функції, підбити квитки і виконувати дії платформи.

А. А.
А. А. ГрибенкоПодати заявку OpsIQ командна коробка з картою дії AI-пропонованої платформи, що показує параметри та підтверджує/визначаєте.Зареєструватися OpsIQробоча зонаЗареєструватися OpsIQПідтвердити послугу зарахування рахунку #4821А. А.Накладна дія: suspend_serviceрахунок: #4821 (додаток) $120)Платформа: WHMCS · оборотний; перевіренийПідтвердженняСкасувати1ASK ANYTHINGПлайн-Англійські команди2PROPOSE FIRSTДія показана до її ходу3YOU CONFIRMСкопіювати та аудитувати
Розкажіть адміністратор AI, який ви хочете на рівнинній мові; він пропонує точний ефект (скопд, реверсійний, перевірений) і чекає на підтвердження.

Що таке адмін AI може зробити

Перегляд даних

Запитати: "Показати мені всі квитки з [email protected]" або "Що таке статус замовлення #ORD-5523?"

Суммари

Запитати: "Суммаринізувати останні 10 квитки «Що таке питання підтримки?

Особливості

Запитайте: "Як я налаштувати автореплі? або "Що означає курсову карту?"

Виконання дій

Запитайте: "Зберіть квиток на літак [email protected] про вексельні рахунки або «Клозаний квиток Т-12345"

Запити на платформу

Як ми вже давно отримали?

Приклад розмов

Шукаємо клієнта

Сценаріо:
Адміністратор запитує: "Знайти клієнта" [email protected] і показати мені свою недавню активність
Що робити:

AI виглядає замовником у всіх підключених джерелах даних: візиторські сесії, квитки, чат-бесіди, замовлення та CRM контакти. Повертаємо резюме про нещодавню активність з посиланнями на кожен елемент.

Отримання щоденного резюме

Сценаріо:
«Що відбулося сьогодні?
Що робити:

The AI summarizes: "Today you had 245 visitors (up 12%), 8 new tickets (3 resolved by AI), 2 new orders totaling $198, and 1 chat escalation about a shipping delay."

Виконання дії

Сценаріо:
Адміністратор запитує: "Змінити квиток T-5523 пріоритет до термінового"
Що робити:

АІ підтверджує: "Я змінив квиток Т-5523 пріоритет від Нормального до невідкладного стану. Це буде впливати на SLA таймер. Підтвердження? Ви підтверджуєте, і дія виконана.

💡
Адміністратор AI виконує дії, які зареєстровані в Реєстрі дій. Не можна заборонити дії або системи доступу назовні OpsIQ_.
А. А.

АІ сценаріїв клієнтів

Цей розділ охоплює загальні сценарії AI клієнтів з очікуваною поведінкою та порадами для тренувань.

Замовник AI
АІ сценаріїв клієнтівБібліотека питань клієнтів, пов'язаних з очікуваною реальністю AI та тегом результатів для кожного.АІ сценаріїв клієнтівробоча зонаБібліотека сценаріїв · очікувана поведінка AI"Чи є моє замовлення?"Зробіть замовлення за допомогою роз'єму, дайте відстеженняРозчин"Я хочу повернення коштів"Акноулин, ніколи не обіцяє · рука для людиниПередача«Я сервіс внизу?Перевірка стану, звітування поточного стануСтан"Чи можу я підключити свій рахунок"Підтвердіть неприпустимо, потім маршрут до людиниПідтвердження1SCENARIOSЗагальні питання2EXPECTEDЯк AI повинен відповісти3ЦЕНА ЗА ЧАСЗнайти проміжки тренувань
Бібліотека реальних питань клієнтів і саме те, як AI повинен обробляти кожну, щоб перевірити ваші тренування та знайти зазори.

Бібліотека сценаріїв

Запит на статус замовлення

Сценаріо:
Замовник: "Чи є моє замовлення #12345?"
Що робити:

Розширення поведінки AI:1) Подивитися замовлення через роз'єм платформи. (2) Повідомити поточний статус (обробка, відправлено, доставлено).3) Включіть номер відстеження, якщо це можливо. (4) Якщо замовлення затримується, визнайте і надайте розрахунковий час. (5) Не пропустіть інформацію про відстеження винаходу.

Запит на скидання пароля

Сценаріо:
Клієнт: "Я забув пароль і не можу увійти в систему"
Що робити:

Розширення поведінки AI:1) Забезпечити дії списання пароля від бази знань. (2) Включіть посилання на скидання або шлях сторінки. (3) Згадка, що скидання електронної пошти може зайняти кілька хвилин. (4) Найсучасніші перевірки папки спаму. (5) Якщо клієнт все ще не може скинути, засвідчивши людину.

Запит на використання

Сценаріо:
Замовник: «Чи можна додати темний режим на мобільний додаток?
Що робити:

Розширення поведінки AI:1) Дякую за припуск. (2) Скаргайтеся, як запити будуть оброблятися (зареєстровані, перевірені, допиталізовані).3) Не пообіцяти функцію буде побудована. (4) Якщо існує аналогічна функція, згадуйте її.

Спірайтінг

Сценаріо:
Замовник: «Я заряджав, але мій сервіс не працює»
Що робити:

Розширення поведінки AI:1) Акносова фрустрація. (2) Перевірити статус сервісу при можливості. (3) Ескларат в відділі білінга з усіма деталями. (4) Не обіцяє повернення коштів.5) Встановити пріоритет квитка на високий рівень.

Виклична справа

Сценаріо:
Замовник: «Що погода, як в Лондоні сьогодні?
Що робити:

Розширення поведінки AI:1) Політно перенаправлений. "Я ваш помічник підтримки [Компанія] і може допомогти з питаннями про нашу продукцію та послуги. Для погодніх інформації, спробуйте погодну послугу".2) Запитайте, якщо вони мають питання про продукт.

Як перевірити поведінку AI?+

Відкрийте свій сайт в приватному / анонімному браузері та чаті з AI як клієнт. Спробуйте загальні питання, випадки крою та рекламні сценарії. Перевірте, що AI дотримується ваших правил швидкого доступу і використовує вміст бази знань правильно.

А. А.

Основа знань AI

База знань – це бібліотека статей, які AI використовують для відповіді на питання. Якщо клієнт запитує щось, AI шукає базу знань для відповідних статей та використовує їх для створення точної, обґрунтованої відповіді.

База знань
База знаньДжерелом, що подають в магазин знань, потім штучним інтелектом, генеруючи заземлений, наведено відповідь.База знаньробоча зонаДжерелаВеб-сайт crawlДопомогаЧасті запитанняІмпортні докиЗнаннясперма в жопе + ключове словоА. А.Наземна відповідьз джерелом цитованих джерел.«Оплата коштів 3–5роб. дні1INGESTCrawl, FAQ, імпорт2RETRIEVEСмантичний + ключове слово3GROUNDEDВідповідає Вашому вмісту
Зробіть свій сайт і імпортуйте док-файли в базу знань; AI отримує правильні частини та відповіді, заземлюючий і цитується.

Як працює

1
Клієнт запитує питання

«Що таке політика повернення?

2
AI шукає базу знань

OpsIQ знаходить статтю "Повернення" за допомогою відповідних ключових слів та смислового значення.

3
АІ генерує відповідь

АІ прочитав статтю та написує природну відповідь на основі вмісту статті.

4
Клієнт отримує точну відповідь

Відповідність заповнюється у своїй реальній політиці, не загальними даними навчання AI.

Створення кращих статей

Одна тема за статтю

Написати окрему статтю для кожної теми: політика повернення, тарифи на доставку, налаштування облікового запису, скидання пароля. Не об'єднайте невідповідні теми.

Напишіть нам

Почати питання клієнтів запитати, потім надати відповідь. Це допомагає AI відповідати питанням до статей.

Ви можете бути певними

"Повернення необхідно бути ініційованими в межах 30 Дні доставки краще, ніж "У нас є політика повернення"

Включити краю випадки

Що про міжнародні декларації? Що про цифрові продукти? Що щодо товарів, придбаних на продаж? Винятоки.

Зберігати його актуальним

Переглядайте статті щоквартально. Видаляє застарілу інформацію. Оновлення ціноутворення, політики та процедури при зміні.

Стартер статей, які ви повинні писати

Доставка та доставка

Вартість доставки, час відправлення, відстеження, міжнародна доставка та затримки з перевезеннями.

Повернення і повернення коштів

Повернення вікна, умови, процес, часовий пояс і винятки.

Управління обліковими записами

Скинути пароль, зміна електронної пошти, видалення облікового запису та експорт даних.

Вартість та оплата

Планування описів, цикл рахунків, способи оплати, рахунки та валюту.

Керівництво по продукту

Як використовувати кожен товар або функцію. покрокові інструкції з скріншотами.

Виправлення несправностей

Загальні проблеми та рішення. Помилки і їх виправлення.

Інформація про контакт

Режим роботи, підтримка каналів, час реагування та шляхи їх зарахування.

Юридична та комплаєнс

Конфіденційність, умови надання послуг, GDPR запити даних.

Знання роз'єму

Кожен роз'єм може сприяти знанням AI. При включенні роз'єднувача, його вбудовані статті знань ( каталог продуктів, загальні питання, налаштування платформи для усунення несправностей) автоматично доступні до AI. Ви можете переключити знання роз'яснень або вимкнено в роз'ясненнях Роз'єму.

Бюджетний квартал

База знань має настройову стелю токени (за замовчуванням: 32,000 kens), яка контролює, скільки контексту знань надходить в AI за розмову. Якщо база знань дуже велика, AI вибирає найбільш актуальні статті в цьому бюджеті. Підвищити стелю, якщо AI не знаходить відповідних статей; зменшити його, якщо потрібно знизити витрати токена.

Скільки статей я маю?+

Почати з 5-10 Статті, що охоплюють найбільш поширені питання. Додайте більше, як ви виявите зазори через AI History та AI Insights. Більшість підприємств потребують 20-50 статті для комплексного покриття.

Чи можна імпортувати статті з іншої системи?+

В даний час статті створюються вручну OpsIQ_. Ви можете копіювати вміст після існуючих запитань, центрів допомоги або документів.

Який формат має бути в статті?+

Найкращий текст Плайн. АІ розуміє природну мову краще, ніж структуровані HTML або розмітка. Напишіть, як ви поясните клієнту.

А. А.

Оцінювання та оглядова робота

Оцінка встановлює критичні питання клієнтів в повторюваних тестах для якості відповіді, цитувань, засвідчення та безпеки дій.

Екран продукту
Оцінка AIАІ Оцінювання списків золотистих тестових випадків, необхідних поведінки, останніх результатів та запланованих годинних годинників.Оцінка AIробоча зонаSETS6CASES84PASS RATE96%ОГЛЯД РОБОТИПолітика доставкиНеобхідна довідкаПройтиЗапит на повернення коштівОбов'язкове підтвердження людиниПройтиНепідтримувані вимогиЗаборонена діяПройтиМіграція питанняВитратне джерело відсутніФайл1CREATE CASESЗолотий вхід і правила2RUN SAFELYВибух або жива ова3WATCHГрафік роботи щодня або щотижня
АІ Оцінювання списків золотистих тестових випадків, необхідних поведінки, останніх результатів та запланованих годинних годинників.

Повні адміністратори можуть створювати оціночні набори з підказкою, очікуваними вихідного етикеток, необхідні цитування, правила підтвердження людини, очікування та заборонені дії. Запуск набору безпосередньо, сушіння або відтворення вибраної історії.

Спортивний годинник графіки щоденних або щотижневих перевірок через cron і працює обмежена кількість випадків (до восьми місяців) огляд збої поряд із постачальником / моделлю, оперативною версією, інформаційною версією та пропозиціями щодо зміни поведінки виробництва.

А. А.

Мова та переклад

Мова керує перекладом текстів та поведінки, що використовуються при OpsIQ ознайомтесь з мовою замовника.

Екран продукту
МовиМова мови показує мову джерела, перекладати мови, протягувати/живий стан та поведінку клієнтів.Мовиробоча зонаДжерелоУкраїнськаLANGUAGES4ЖИТТЯ3ОГЛЯД РОБОТИФранцузькаІнтерфейс та вмістЦЕНА ЗА ЧАС:НімецькийІнтерфейс та вмістЦЕНА ЗА ЧАС:ІспанськаПроектний перекладПроектиПідписатись на розсилкуВідповісти на викриту мовуВвімкнено1SET SOURCEОригінал мови оператора2ADD LANGUAGEПереклад на фоні3PUBLISHПроекти або жити
Мова мови показує мову джерела, перекладати мови, протягувати/живий стан та поведінку клієнтів.

OpsIQ переводить оператор-замовлення тексту клієнта. Встановити мову джерела правильно перед створенням перекладів, додати цільові мови, потім переглянути проекти до публікації. "Зовнішня мова клієнтів" контролює мову відповіді; переклад інтерфейсу віджету регулює його кнопки, етикетки та системний текст.

Переклади можуть бути прокладені або живі. Не варто спиратися на машинний переклад для юридичних, повернення, безпеки чи технічного завдання без рецензування людини.

У списку буде показано всі місця, де містяться ваші власні тексти, а також кількість повідомлень: повідомлення балачки клієнта, пропозиції, активні повідомлення, потоки балачок, екскурсії з керуванням, оголошення, бульбашка з попередженнями тощо. Дослідження та форми. Випробувано на поверхні опитування кожного опублікованого дослідження повністю: назва, кожен запит, кожен варіант відповіді, кнопки, ласкаво просимо і подяку-ви копіюєте, сторінки хрому та сторінки результатів. Ключові слова прив'язані до ідентифікатора питання і значення опції, тому повторення питань або варіантів ніколи не втратить переклад, а також перемовляючи одне повідомлення тільки те, що повідомлення. Опубліковані живі анкети пропонуються за замовчуванням; проекти приєднуватися до того, коли ви розширили обсяг.

У разі, якщо мова йде про те, що мова є однією з вас, то в іншому випадку вона використовує вашу мову системи. Його шість редагованих полів переведені на цій сторінці теж, і поведінка має власний перемикач у налаштуваннях чату Клієнта.

Повідомлення про проведення конференцій охоплює один раз фіксованих текстових операторів, а кожен клієнт отримує в цій мові: визнання квитка, відкриття, замкнені та зворотні підтвердження, підписки на департамент і порт вітальний рядок. (Авто-реплоще AI не потребує цього, він вже відповідає мовою замовника.) З Клієнти електронної пошти в своїй мові ввімкнено OpsIQ Письмову, електронну пошту квитка вирішить мову одержувача в цьому порядку: мова, яку вони забрали на порталі або Довідковий центр (приміщено на квиток), місцевість на записі контакту, потім мова, яка була написана, виявлена локально по діапазоні сценаріїв та маркерних слів, без зовнішнього виклику. Всі мови, вибрані на сторінці мов ніколи не використовуються, тому функція інертна додається до мов. Глобальні HTML Поповнення електронної пошти навмисно не перекладається: це розмітка, а не проза. Персоналізація електронної пошти (повідомлення, повідомлення про відділ, аналітики, планові звіти, щотижневий травень) завжди використовує системну мову.

PeopleOS HR

РОБОТА: система управління робочими ресурсами

Запуск життєвого циклу працівника з перерахування на борт з мобільним самообслуговуванням, свідченими робочими процесами, заданими інтеграціями та управління персоналом над чутливими рішеннями.

Інтерактивна карта системи
Центр життєвого циклу "Любовські рятувальники"A three-dimensional PeopleOS dashboard linking recruiting, employees, payroll, learning and governed AI.Центр "Самопоміч"ЛІЖНІСТЬЛЮДИ248Відкриті ропи12КОНТРОЛЮ ГАРЯЧІ15 / 15ЛІФЕНТИКРекрутитиМолодаКультураЗакінченняПерехідONE РЕКОРДІдентифікатор + свідоцтва про зайнятістьХУМАН КОНТРОЛАпеляційний, корекція, приймПРОВЕДЕННЯВідсутні та випускні докази
PeopleOS зберігає життєвий цикл, контролює та підтверджується одним регламентом.

Адміністратори

Операція

Управління людьми, організація, рекрутинг, бортове обслуговування, документи, залишають, коляски розвідувальні роботи, переваги, продуктивність, навчання, відносини співробітників, аналітика та управління.

Співробітники та менеджери

Самообслуговування

Використовуйте мобільний портал для приватних записів, запитів, документів, на борту, часу, оплати пояснень, навчання, інформації про компанію та права.

Розробники

Подовжити

Використовуйте запечену hr.* дії та перегляд platform.hr.* операції за допомогою одного контракту, а також класів з роз'ємом. Згенерований індекс у PeopleOS API перерахунку на кожен з його обсягів.

⚠️
PeopleOS не є платним лідером, юридичним радником, бюро чи постачальником ідентичності. Сертифіковані зовнішні системи зберігають свої обов’язки. зелена технічна перевірка ніколи не створює правову затвердження або докази провайдера.

Начало » Продукти » PeopleOS HR

PeopleOS HR входить до плану підприємства. На кожному іншому платному тарифі він є доповненням: власник рахунку відкриває Ажурирано → Додати-ons & Tokens, підбирає ярус PeopleOS HR і або починає безкоштовно пробну роботу або додає її прямо. Яруси відрізняються тим, скільки людей та скільки рекрутингових, інтерв'ю та AI діяльності вони здійснюють. Ціни та ліміти встановлюються на рахунок, не записані в продукт, тому дивляться поточні яруси на рівні ТПП України. Який модуль робить, поверхня на поверхні, знаходиться на Сторінка продукту PeopleOS HR.

Хто може додати його

Платний план, який активний. Безкоштовний тариф не може додавати його, і платний план що ще всередині власного плану повинен чекати до закінчення розгляду.

Безкоштовна пробна версія

Ви не забираєте. Коли він закінчується без покупки, вхідні імена знімаються і нічого заряджаються. Ніщо ніде видалиться: записи знову в момент додано додачу.

Коли він не належить

PeopleOS HR не з'являється в бічній панелі, командної палітри, налаштування або допомога у додатку. Напряме посилання на сторінку HR пропонує додаток замість сторінки.

Переміщення ярусної кришки

Коли ярус досягне ліміту сторінки, ви можете змінити свій ярус. Редагування або видалення того, що вже існує ніколи не заблоковано.

Самостійні установки

Замовляючи проїзд в ліцензію. Додати до відправлення на сайті OpsIQ _/- та встановити забрати його у наступному чеку ліцензії.

Налаштування першого потоку

Все нижче - це реальний екран; нічого тут не потрібно розробника.

1
Перетворення модуля на

Відкрито Голоси→HR Головна. Пружба починається з перемикача майстра, PeopleOS HR: з ним немає HR-сторінки або поверхні працівника допускається. Переключення перемикача на два кліки підтвердження; вимкнення одного кліку. AI перемикається нижче його (розвантажувальний додаток, екранування додатків, автономних помічників, інтерв'ю AI, автоматичне постачання відправлення, перевірка особистості) залишається до тих пір, поки ви вирішите.

2
Додайте налаштування Setup Copilot

Відкрито Голоси→Комплекти Copilot і сказати, що ви хочете в звичайну мову: політика залишає за собою свої дні та помітити, публічні свята для країни, категорія випадку з її SLA, рахунок шапка, навісний шаблон, щомісячний імпульс. Ви отримуєте план назад з тим, що він розуміє і що це було прийнято. Ніщо не працює до підтвердження; середньо-русковий крок потребує другої особи; кожен запуск залишає чек.

3
Назва порталу працівника

Відкрито Голоси→Передня лінія→Дизайн сигналу. На самодостатній установці порталу живе на /hr/<address>; Адреса порталу перейменувати його відразу і старі посилання, що зберігаються, тому що стара адреса переадресації. У хмарі портал знаходиться /hr на робочому просторі не потрібно звертатися.

4
Побачити сайт кар'єри

Відкрито Універсальні інженерні рішення → Рекрутинг. Кожна публікація ви публікуєте з затвердженого запиту на сторінку публічних кар’єрів; посилання Відкрийте сторінку публічних кар'єрів у верхній частині рекрутингу показує, що кандидат бачить.

5
Зареєструвати кіоску для спільних пристроїв

Відкрито Голоси→Передня лінія→Кіоскс і вибрати Реєстрація кіоску. Пристрій токен відображається один раз; відкрити сторінку kiosk на планшеті або ПК (це /kiosk на порталі хост) і вставте його. Люди годинника у своїй роботі електронної пошти та PIN, або з короткочасним кодом бейджу від їх порталу. Відкликання kiosk зупиняє пристрій одночасно.

6
Вирішити, які працівники можуть зробити для себе

Відкрито Настроювання→Про компанію. Кожна сила самообслуговування (записи, запити, документи, залишають, оплачують пояснення та так далі) встановлюється на кожного працівника, менеджерів тільки або однієї команди і команд під ним. Кожен змінює записи, які зробили її і чому, і влада ви вимкнете, пояснюється співробітнику, а не мовчазно відсутній.

7
Додати людей і дати їм доступ

Ввімкнено Голоси→Народи створити людину, їх працевлаштування та їх менеджер. Надання доступу до порталу тільки один раз має дійсну електронну пошту і призначене для роботи відносини; запрошення виходить з того ж екрану і на борту починається від подорожі, яку ви встановили.

життєвий цикл

Планування та рекрутинг

Створіть затверджені реквації, публікуйте вакансії, отримуйте заявки через повторно-безпечні вебоки, відгуки структури, графік інтерв'ю, реєстр рішень, пропозиції про випуск та прокат.

Приєднуватися та надавати

Зробіть резервні копії, зберіть правильний варіант документа, обладнання для запиту, надайте затверджені шаблони доступу та надати доступ до безспинного порталу.

Робота і вирощування

Відправка, графіки, роз'яснення, переваги, витрати, цілі, відгуки, огляди, навчання, навички, внутрішні можливості, успішність та аналітика робочої сили.

Підтримка та захист

Забезпечити приватні HR-підтримки, регламентовані випадки праці, юридичні заготовки, запити на дані, корекція, пояснення, звернення та незалежний огляд людини.

Зміна та виїзд

Використовуйте ефективні зміни працевлаштування, відкликання доступу, відновлення обладнання, реконструйовані зовнішні постачальники, зберігання та збереження необхідних доказів.

Доступ і особистість

Можливість отримання інформації про працевлаштування та перевірки зовнішніх ідентичностей. API об’єми шару на вершині маршрутних дозволів і ніколи не обійти їх.

Додати новий працівник

Сценаріо:
Створіть людину, присвоюйте працевлаштування та менеджера, надайте доступ до порталу, потім відкрийте подорож на борту.
Що робити:

Використовуйте сухий хід і idempotency для API. Підтвердіть особу, яка має дійсну електронну пошту та призначене для трудових відносин перед відправленням доступу.

За допомогою дублікатів

Сценаріо:
Два зовнішні системи виявляються однаковими робочими засобами.
Що робити:

Посилання як перевірені особи до канонічної особи, так і для вирішення конфлікту прямо. Не об'єднайте записи, просто тому що два значення розкладу електронної пошти відповідають.

PeopleOS HR

HR-роботи та портал працівників

Як працює кожен з основних напрямків PeopleOS, які працівники дивляться після реєстрації.

Молодь та організація

Утримання канонічної особи, зайнятості, типу працівника, керівника, команди, місця розташування, навичок, документів та ефективної організації.

Послуги з підбору та переробки

Переміщення з затвердженого переоснащення до посту, заявки, структурованих доказів, інтерв'ю, рішення, пропозиції та оренди за допомогою маршрутів проживання і оскарження.

На борту та документи

Призначте замовлені власники-специфічні дії; зберіть, ознайомтеся, зареєструйте, протримуйте та видаліть документи з редакцією та доказами доступу.

Час, залиште і розкладаючи

Визначені типи, баланси, запити, затвердження, свята, наявність, календарні події та стійкість.

Плата, переваги та витрати

Сплачувати, затвердити робочі заходи для оплати праці, виключення з розвідувальних робіт, керувати вигодами та відшкодуванням боргу.

Продуктивність і зростання

Мета роботи, контрольні завдання, відгуки, калібрування, навчання, навички, наставники, внутрішні можливості та успіх.

HR-сервіс та зв’язки

Надайте працівникам приватній підтримці при збереженні гравітації, дисципліни, знеболюючий і ущільнювальну справу доказів в спеціальних дозволах.

Аналітика та планування

Використовуйте заходи, плани на головні рахунки, бендикти та досвід, отримані з записів; ніколи не заважають відсутні результати як успіх.

Портал співробітників

Огляд

Потрібні ваші побажання, зміни з останнього візиту, відкриті запити, майбутні події, на борту прогресу і анонсів.

Профіль та запис

Зайнятість, перевірений запис, документи, дозволи, запити про конфіденційність та виправлення запитів.

Підтримка та завдання HR

Приватні розмови, запити, дії, які потребують працівника та службових завдань, що відображаються окремо.

Ваші перші дні

Відповідність своєчасного виконання на борту з власником, за рахунок держави, завершення та заблокованої роботи.

Час і час

Баланси, подарують запити, наявність, графіки та наслідки календаря.

Навички та зростання

Навчання, навички доказів, цілей, зворотного зв'язку, наставників та внутрішніх можливостей.

Моя оплата, пояснено

Інформація про відрахування заробітної плати, яка дозволяється бачити працівника.

Компанія

Довідник та організаційний графік, обмежений для представників інформації, які вибирають або полісують, дозволяють їх ділитися.

Права та рішення

Роз’яснення, звернення, узгодження, виправлення, доступу та видалення запитів.

💡
Портал - мобільний. Картка облікового запису залишається доступним, навігацією та розкриттям контенту самостійно на широкому екрані, а також перенаправлення мобільного навігаційного простору, а не натисканням або обкладинка сторінки. Довгий пояснювальний копію належить до доступних інструментів або компонентів розкриття.

Безпечна робоча послідовність

1
Настроювання політики та дозволів

Налаштуйте юрисдикцію, ролі, погодження шляхів, збереження, згоду та контроль функцій перед завантаженням живих записів.

2
Підключення зовнішніх постачальників

Встановіть відповідний підписаний пакет, введіть принаймні-прив’язкові показники та пропустіть з'єднання і конформаційні тести.

3
Запуск в пісочниці або тіні

Вправа повних робочих процесів з детермінованими даними та порівняння очікуваних доказів перед наданням реальної реалізації.

4
Випускаються під подвійним керуванням

Різні авторизовані рецензенти, які перевіряють провайдера, безпеку, конфіденційність, правовий, справедливість та доступність.

PeopleOS HR

AI, справедливість, відео та правові елементи

Компанія «Любов» проводить автоматизацію як керований інструмент: дозвіл на політику, спробоване виконання, результат провайдера та докази є окремими фактами.

Контроль AI та агента

Кожен агент використовує зареєстровані інструменти з метою, юрисдикцією, класом ризику та максимальною автономністю. Прийміть людину, роз’єднувачі ланцюгів, інциденти і зміни юрисдикції припиняють виконання. Корекції можуть формувати запропонований датасет, але не поїздювати нічого до іншого уповноваженого особи, що завершує огляд конфіденційності.

Культура

Визначте когорти, мінімальні правила вибірки, метрики, оціночну ідентичність та юридично вивільнене оцінювання. Відсутні дані не містяться; він ніколи не перетворений в прохід.

Роз’яснення та звернення

Побудувати пояснення від ущільненого рішення та доказів політики. Відправити звернення до незалежного людини і зберегти результати.

Юридичні послуги

Випускають політику країни тільки з іменним бухгалтером, цитують правові джерела та пропускні тести. Законодавство високої тяжкості змінює призупинені уражені смуги.

Еразмус Мундус

Помічники системи, клас ризику, оцінка впливу на фундаментальні права, повідомлення, перенапруги, дозатори та докази.

Відеоекранний крайовий

Надання не участі

hr.interview.room.provision створює місце зустрічі. Тільки hr.interview.room.connect може довести медіа-середовище, що досягається працівником.

Згода на використання спеціального призначення

Запис, транскрипт і біометрична живота є окремим вибором. Витрата діє на обране призначення.

Аналіз нетипових явищ

Відео договір не має поля або способу емоції, уваги, привабливості, раси, інвалідності чи зовнішнього вигляду.

Маршрути та маршрути

Рецензент може взяти на себе постійно для сеансу, а також доступний маршрут розміщення тексту.

Затримання та видалення

Роз'єм повідомляє зашифрований транспортний засіб, політику зберігання та посилання на провайдера, а також має підтримувати внутрішнє видалення.

Номер створений, штучний інтелект

Сценаріо:
Зопарковий номер URL існує, але медіа-мистечок не доставив аудіо/відео на інтерв'ю.
Що робити:

На зустрічі, як це передбачено та AI участь у помилкових роботах. Займіть доступ до шляхів інтерв’ю та розміщення тексту.

Callback коментує перевірку

Сценаріо:
Укладено завершення звітів фонограми.
Що робити:

Запис зворотного дзвінка як натяка, потім перемістити провайдера. Тільки автентичне реагування стану може оновити перевірку.

🚫
Технічна оцінка доступності може бути записана її оцінювачем, але інтестація WCAG вимагає окремої особи. Випробувано докази про надання послуг, юридичний випуск та справедливість також вимагають своїх справжньих іменних власників.
PeopleOS HR

PeopleOS API та розробка роз'ємів

Використовуйте загальний API для керованих операцій з персоналом та типу роз'ємних контрактів на авторські зовнішні системи.

Головна API джерела правди

JSON до POST /api/v1.php. Відкрийте робочу поверхню через meta.actions, OpenAPI на /api/v1/openapi.php, а також постмена /api/v1/postman.php. Утворений індекс нижче несе точний показник заліку hr.* дії та перегляд platform.hr.* операції в цій будівлі, тому нічого на цьому сайті забирається вручну.

Список людей
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}'
Схил-біг написати
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}'

Використання hr.read або hr.write тільки в міру необхідності. Маршрут адміністратора цілі все ще перевіряє свою дозвіл. Написання вимагають стабільного ключа від idempotency; високий ризик пишеться, що вимагає підтвердження. Зняття перехресних збої з тим же ключем і станом відновлення запиту після невизначеного часу.

Кожен залікований р.* дія

48 curated hr.* actions (22 reads, 26 writes) and 484 reviewed platform.hr.* operations, out of 2415 named actions in this build. Generated from the action registry, the same source as meta.actions, OpenAPI and Postman.

Мистецтво, організація та ідентичність (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, primary_email, worker_type.

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.

Реквізити та повідомлення (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.

Залишити, дізнаватися та роз'ємувати ринзамін (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.

Сертифікація та здоров’я (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.

Веб-камера (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.

Агенти та лайсерські верстати (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.

Юридична практика (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.

Рішення та звернення (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.

Якість 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.

Робочі розмови та затримка (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.

Готовність і випуск (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).

Класи з'єднувача

Рекрутинг

hr_job_board, hr_background_check, hr_identity_verification, hr_assessment і hr_tax_right_to_work.

Позбавлення і навісування

hr_esignature, hr_calendar, hr_video і hr_equipment_it.

Операції з трудовим колективом

hr_payroll, hr_benefits, hr_learning, hr_expense_payment, hr_directory і hr_data_warehouse.

Контакти

hr_messaging Відправляється на додаток. Договір не містить методу читання працівника.

Навігація кінцевих точок шлюзу

Універсальні інженерні рішення 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

Вежа вимагає HTTPS, блокує небезпечні/приватні цілі, штифти, що діють DNS результати, не слід перенаправлення, обмеження розміру відповіді, вимагає JSON, здійснює детермінативну ідемпотенцію та підтримує часові HMAC в обох напрямках. Webhooks завжди підкаже, як і раніше постачальника повторного запиту.

Вхідні двері вебхока

Три відкриті двері отримують зворотний зв'язок провайдера: POST /opsiq/ajax_api.php?ajax=hr_connector_webhook (Петерія) connector_class, connector_key, topic), ?ajax=hr_esign_webhook (connector_key, offer_uuid, provider_refй ?ajax=hr_check_webhook (check_uuid). Кожна людина виправдає тіло за допомогою сертифікованого роз'єму, огорить доставку так і реплести штампів, а записи тільки припинили повторне перебування; відповідь провайдера змінюється запис. Кожна відмова є однаковою генізацією відповіді на ціль. PeopleOS не дає вихідних подій в Інтернеті сьогодні: webhooks.events.list є повноваження і імена, ні в hr сім'я, тому обпилення hr.* Читає чи використовує hr.connectors.health.

Детальні посилання

Повний посібник для НУО

Читати далі doc/contracts/PEOPLEOS_HR.md в автономному режимі установки для кожного оператора, API, роз'єм, webhook і правила випуску.

Договір розробника шлюзу

Пакет «Рибка» містить README.md, DEVELOPER.md, connector_contract.json, hr_profile.json і проявляється підписаний файл.

PeopleOS HR

Тестування та готовність до виробництва

Заява про початок відповідає доказам. Потрібна готовність пакету, сертифікація провайдерів, правове затвердження, оцінка справедливості та атестація доступності навмисно відокремлені.

1
Важкий код і контракти

Запуск PHP синтаксису, HR PHPUnit, маршрут/API Паритет, OpenAPI/Postman перевіряє, пакет проявляється і JSON Перевірка схеми.

2
Вправа повні робочі процеси

Тест рекрутингу, AI огляд, інтерв'ю/відео, бортовий, підписи, залишити, оплачувати, портал, повідомлення, модалі та роз’ємні шляхи збою.

3
Тест чуйний і доступний UI

Привід настільного, планшетного та телефонного макета; клавіатури, фокус, етикетки, контрастність, перелив, панелі інструментів, сповіщення прокрутка і самостійне навігація.

4
Збір зовнішніх доказів

Використовуйте реальні провайдери, які випускають, правові політики, дані про представницьку справедливість та незалежну атестацію КАГ.

5
Випускаються під подвійним керуванням

Рецензент відрізняється від подавця затверджує роз'єм і випускає докази. Відкликання або вбити-відьмикання роз'єднувача, якщо його доказ закінчується.

Що означає кожен результат

Пакети

Файли не змінилися з моменту оформлення документів. Не доведено сторонніх рахунків-фактур.

Пісочна коробка

Визначення поведінки та стану переходить у конформацію. Не доведеться реальний провайдер, термін дії або видалення.

Сертифікований роз'єм

Специфіка робочого простору перерахувала п'ять зобов’язань провайдера за подвійним контролем.

Технічний звіт ВКАГ

Автоматизовані та оціночні докази існують для названих поверхонь. Це не другий оскарження особи.

Запуск готової

Усі необхідні ворота зелені одночасно і не вичерпуються докази, відкликані, відсутні або протиріччя життя здоров'я.

⚠️
Не створює законну, справедливість, провайдер або незалежний запис завіряє, щоб очистити ворота. Записувати блокувальника і власника замість того, що він відмовляється від непідтримуваних претензій.
Чому встановлюється роз'єм, але все ще не доступна?+

Встановлюємо наявність пакету. Увімкніть його, заощаджуйте реальні найменші облікові дані, пропустіть тест з'єднання, після чого надайте відповідність обсягу виробництва акаунтів PeopleOS за допомогою справжніх доказів провайдера та іншого рецензента.

Чому вебок не змінився запис?+

Відкликання може бути дійсним, але тільки підказка. Перевірте вказку веб-гоока, кінцеву точку та результат конденсації. Люди зміни авторитетного стану лише після повторного запиту.

Де є повний машинний HR API?+

Дзвоните до мета.actions і фільтр для hr, і платформи.hr; або використовуйте /api/v1/openapi.php і /api/v1/postman.php. Вони генеруються з одного реєстру даних.

Підтримка

Довідковий центр

Центр Допомоги – це самодовідомий сайт, побудований з статей, які ви публікуєте. Клієнти можуть прочитати і шукати його на своїй публічній сторінці та прямо всередині чату віджет, тому вони можуть знайти відповіді на власній перед тим як коли-небудь відкрити розмову. Все в ній йде від бази знань, так що той же зміст, який базує ваш AI також працює вашої громадської допомоги.

Де побачити клієнтів

Свій публічний сайт

Чистий, пошуково-довідковий сайт на сайті /help.php. Клієнти, які переглядають категоріями, пошуком та відкриттям будь-якої статті. Ви можете надати її власний ім'я та стиль.

Усередині чат віджет

За допомогою посилання в чат віджету, щоб клієнти могли шукати свої статті без залишку чату. Якщо вони ще потребують особи, то вони один відступають від початку розмови.

Поверніть його

1
Відкрий сторінку Центру допомоги

ЗАМОВИТИ Config, then Help Center у адміністратора та перемикачі Увімкнути центр допомоги.

2
Подаруйте ім'я та вигляд

Встановіть ім'я Центру Допомоги, яка показує в заголовку та вкладці браузера і підберіть візуальний стиль. Ви можете вимкнути навігацію для чистої сторінки без меню.

3
Публікація деяких статей

Не пропустіть, поки ви не публікуєте статті до неї. Наступна частина охоплює як.

Публікація статей до центру допомоги

Статті, які живуть в області знань. У Центрі допомоги видається стаття, яка була опублікована і позначена громадськістю. Є кілька способів зробити це:

Публікація однієї статті

Відкрийте статтю, розмітивши її опублікованим і ввімкніть варіант показати його в Центрі допомоги.

Побачити все відразу

Використання Публікація Всі кнопка для натискання вашого цілого опублікованого набору до центру допомоги в одному кліку, замість того, щоб зробити їх одним у часі.

Перетворення запитів на статті

Уже є запитання? Використовуйте Повідомити всі щоб перетворити їх на допомогу статті, тому вони сидять разом з усіма іншими.

Імпорт наявної бази знань

Переміщення з іншої допомоги в письмовій формі? Імпорт КБ кнопка на вкладці Статті приносить існуючу базу знань для вас. У Вас є три способи його вказувати за вашим змістом:

Подати заявку URL

Подаруйте свою адресу вашого поточного центру допомоги. Якщо вона розпізнає платформу (наприклад, Zendesk) він читає точну категорію з цієї платформи. В іншому випадку це кравляє сайт і перебудує структуру зі сторінок, імпортуючи тільки реальні статті та пропускає логін, ціноутворення та контактні сторінки.

Підберіть підключений додаток

Якщо платформа вже підключена до цього робочого простору, вона має базу знань, вона показує її в спадку під час Імпорт з підключеного додатку. Виберіть його і імпортувати, немає URL _/ пароля потрібно. Додаток тільки вказаний раз він підключений і налаштувати.

Завантажити CSV

Немає на сайті в точку? Завантажити таблицю з title, categoryй body стовпчики. Покласти Parent / Child в стовпці категорії, щоб побудувати непристойні категорії.

Який варіант ви обираєте, ви отримуєте перший: статті, які ви знайшли, груповані за категоріями, кожен з прапорець, щоб ви не могли б втратити нічого, що ви не хочете. Ніщо зберігаються до натисніть Імпорт. Після цього ви можете Недо весь імпорт одним клацанням миші або Ре-синк a URL або імпорт з'єднання пізніше, щоб витягти нові та змінені статті.

💡
Розробники: будь-який роз'єм може рекламувати свою базу знань до цього випадаючого процесу, декларуючи kb_capabilities блокувати в його settings.json (тип kb_source, з adapter і base_template). Див. розділ роз'ємів та посилання на платформу-підключника.

Організація з AI

Центр допомоги для тих, хто хоче знайти і легко шукати. Організація з AI кнопка робить вибачення за вас. В одному кліку вона читає ваші опубліковані статті, сортує їх в чутливі категорії і додає теги. Вона створює категорію, коли він потребує один, використовує категорію, яка вже підходить, і пропускає все, що ви вже організували, так що ви можете запустити його знову будь-який час, який ви додаєте нові статті. Увімкніть Давайте AI організовувати в субкатегорії У налаштуваннях Центру Допомоги також можна подати статті під настройками Parent / Child категорії, які зручно після імпорту бази знань, що мали підсекції.

💡
Категорії дають клієнтам спосіб переглядати, і теги заточувати пошук як на публічній сторінці, так і в віджеті. Ви можете перейменувати або переміщати речі післявправлення. AI дає вам сильний початковий пункт, не налаштування ви застрягаєтесь з.

Центр допомоги в чаті

Ви можете показати Центр Допомоги прямо всередині чат віджету, так що люди шукати відповіді перед тим як вони повідомлення. У налаштуваннях Вашого чата виберіть де з'явиться посилання на допомогу:

У заголовку

Невелика ікона допомоги у верхній частині віджету.

На дно

Під поле повідомлень можна змінити текст посилання, наприклад "Пошуковий центр допомоги".

І місця

Покажіть її в заголовку і внизу для найбільш видимості.

Посилання на допомогу має власний контроль кольору під налаштуваннями віджету. Залиште його на Ні щоб відповідати кольором пускача, або підібрати СОЦІАЛЬНІ колір або Градієнт. Усе це допоможе відчути вашу тему віджету, тому завжди вона виглядає як частина вашого бренду.

Поставте свій центр допомоги на власний веб-сайт

З коробки, який ви вже маєте чистий, доступний адресу власного (наприклад, /help/your-help-center). Ви можете піти на один крок далі і подати його під вашими власний домен, так і для клієнтів і пошукових систем див. його в складі вашого бренду, наприклад yourdomain.com/help або help.yourdomain.com. Все зберігає роботу над вашим доменом: посилання, зображення, пошук та рейтинги статті.

Під Вашим сайтом

Вступ Налаштування, потім Центр допомоги, відкрити Вечеря Виберіть свій сайт, щоб знайти і купити в книжковому магазині. Знайдіть налаштування (Cloudflare_, Nginx або Apache), скопіюйте готовий блок, і вставте його на свій сайт. Кожен варіант має Керівництво по налаштуванню кнопка поруч з ним з точними кроками.

На піддомені

Допфер help.yourdomain.com? Так само панель має піддоменний варіант. На Cloudflare Піддомен - це найнадійніший маршрут, і він дає вам чистою адресою ніщо після неї.

💡
Використання Cloudflare? Він тільки працює свого працівника за адресою, яка проксіюється через Cloudflare(помаранчева хмара). Ваш головний домен часто вказує прямо на вашому сайті, тому правило, розміщене на головному домені може спокійно зробити нічого. Відповідаючи спосіб проксіований піддомен як help.yourdomain.com. Керівництво Setup пролягає вам через один DNS запис і маршрут.
Добрий день SEO. Після того, як ваш центр допомоги знаходиться на вашому власному домені, пошукові системи індексують ваші статті під вашим брендом. Кожна сторінка заявляє свою правильну адресу і карта сайту перераховує їх, тому ж стаття ніколи не буде індексована двічі.
💡
Використовуйте посилання на допомогу в Інтернеті? У налаштуваннях чат віджета "Відкрити в центрі допомоги", встановити Де посилання йде до Ваш власний домен і введіть цю ж адресу. Потім посилання на статтю, відкриті на вашому домені, а також, не на сайті OpsIQ

Як зробити свій центр допомоги

За одинархівських голосів Центр допомоги має свій власний аналітика. Перемикачайте його на налаштуваннях Центру Допомоги і тихо записує, як люди використовують вашу допомогу: найдивовижніші статті, які вони шукають, а пошуки, які вийшли порожнім (до готового до запису), працюючи країну відвідувачів та пристрій самостійно, тому не потрібно віджет чату, встановлених для звіту. Кожен номер показаний для як Ви можете побачити, як кожен користувач насправді використовується.

💡
Аналітика залишається без переключення, і ви можете мати відвідувач IP адрес анонімізовані. Ніщо записується перед тим, як вибратися в розділі ".

Виберіть, що з'являється на кожній сторінці

Кожен розділ Довідкового центру ( категорії на головній сторінці, популярні статті, список статей по сторінці категорії та багато іншого) має своє власне просте правило. Для кожного можна показати або приховати її, і показати Всі предмети, кількість, що Xxx siffredi, або тільки ті, які ви Зручності з зіркою. Коли правило захоплює список, клієнти все ще отримують посилання "Показати всі", тому нічого не дійсно виходить з точки зору досягнення.

Ви також вирішуєте, як виглядають корисні голоси: приховані, дружнє співвідношення як "12 з 14 Визначте цю корисну, або звичайну кількість пальчиків. Мінімальне налаштування позначок зупиняє нову статтю, що показує awkward "0 з 0".

Дивись, які статті працюють

Кожна стаття показує Чи є це корисним? запит. Кожен так чи ні враховується за статтю, тому ви можете бачити на погляді, які статті відповідають питанням, і які потрібні повторити. Повторені голоси з того ж відвідувача ігноруються, тому кількість залишають чесною.

Текстові та етикетки

Ви можете змінити заголовки та етикетки на Довідковому Центрі, щоб відповідати голосу. Залиште будь-яку порожню і вона повертається до нечутного за замовчуванням, тому ви тільки редагуєте слово, яке ви дійсно хочете змінити.

Допоможи центру, що веде свою бібліотеку з AI. Кожна стаття ви публікуєте тут, є однаковим змістом AI, який використовує для відповіді на чати та квитки, тому покращуючи один покращує інші.

Загальні питання

Чи потрібно писати окремий контент для Центру допомоги?+

Ні. Він побудований з тих же знань бази даних AI вже використовує. Побачити статтю, щойно і це може служити як для того, щоб вони отримували задоволення від інших знань.

Чи можу я зберегти деякі статті внутрішнє?+

Так. Ви публікуєте та відмітивте громадськість у Центрі допомоги. Будь-який неопублікований відпочинок з нього.

Чи зможуть клієнти доїхати до особи?+

Так. Віджет допомагає посилання, що сидить від початку розмови, тому самодогляд ніколи не пасує нікому.

ріст і SEO

Site Intelligence (SEO suite)

Site Intelligence - це OpsIQ_'s вбудований SEO та бірю знань. Він сповідає ваш сайт, як пошуковий двигун, треки, де ви займаєтесь, досліджує ключові слова, дивиться за посиланнями і конкурентів, відсканує вашу локальну присутність карти, перевіряє швидкість сторінки і перетворює його на всі звіти клієнтів, з аналітиком AI, що пояснює те, що виправити і може продемонструвати виправлення. Це преміум функції; при включенні він з'являється як Site Intelligence в боковому барі. Кожна інформація залишається окремим, коливить, рейтинги і звіти ніколи не перемішуються між доменами.

Сайт-розвідка
Сайт Диспетчерська панельSEO-гайна панель, що показує рахунок сайту, відстеження ключових фраз та тренд трафіку.Сайт-розвідкаyoursite.com86САЙТ ЗДОРОВ'Я3 критичні питанняВідстеження ключових фразаі-довідник#3жива чат саа#7crm для агенцій#12Органічні натискання1КРАВЛЗнайдіть технічні питання2ТРКRanks, keywords, backlinks3АНАЛИСТВиправлення та фіксування проектів
Огляд Site Intelligence: огляд сайту-збірковий бал з останнього крою, відстеження рівня живого ключа, тренд органічних кліків і триступінчастої петлі: crawl, доріжки, дати AI протягувати закріпки.

Отримання інформації про сайт

Сайт Інформаційно-аналітичний центр «Сучасні технології» Ажурирано → Додати-ons & Tokens, підбирає ярус Сайту і починає безкоштовної пробної або додає її прямо. Безкоштовний план, або платний тарифний план все ще всередині власної моделі, не можна додати його. Доки він належить люкс прихований від бічного бруса і прямий посилання пропонує додатковий варіант; коли ярус досягається сторінка пропонує наступний ярус; коли судові закінчується без покупки кодування знімається і нічого не стягується. Тіри та ціни живуть на рахунок, тому дивляться поточні яруси на сторінці пропонують наступний ядер; коли випробування закінчиться без придбання договору знімаються і нічого заряджаються. Тирс і ціни живляться на рахунку, так що подивитися поточні яреця на сайті ТПП України.

Запуск кравця · початок тут

crawl OpsIQ відвідання ваших сторінок, шлях пошуковий двигун буде знаходитися на технічних питаннях: ламкості, відсутні заголовки, тонке зміст, повільні сторінки, індексуючі проблеми.

1
Почати люльку

На сайті, натисніть кнопку «Почати роботу». OpsIQ черги та роботи через ваші сторінки у фоні; індикатор стану показує прогрес.

2
Читати звіти

Коли закінчуються, відкрийте питання та список сторінок. Кожен номер групи з високою тяжкістю, щоб ви вперше зазначали найбільші виграші.

3
Допомогти AI

АІ-аналітик виробляє одномовний короткий опис того, що це неправильно і чому він має значення, і може генерувати запропоновані виправлення, які ви переглядаєте до застосування.

Що сліди для розвідки сайту

Скидання та здоров'я сайту

Сканування ваших сторінок для технічних питань SEO та списків кожної сторінки з її проблемами. Виконайте будь-який час, або заплануйте його.

Відстеження рейтингу

Додайте ключові слова, які ви піклуєтеся про; OpsIQ перевіряє, де ваш сайт займає і відстежує рух за часом.

Дослідження ключових фраз

Відкрийте для себе нові ідеї ключових фраз, щоб визначитися з тренером із ключем AI, який допоможе апріоріту.

Посилання

Бажаєте, що ви не хочете пов'язувати з вашим сайтом.

Компетатори

Додайте конкурентові домени та порівняйте видимість на їх основі, з аналізом конкурентів AI.

Місцева (карта) сітка

Скануйте локальну видимість через географічну сітку, щоб побачити де ви покажете на мапі, а також інструменти для профілю Google Business.

Швидкість сторінки

Виконайте сторінки-швидких перевірок, щоб ви могли виправити повільні сторінки, які боляче рейтинги та перетворення.

АІ-контент

Ви можете використовувати всі необхідні для заповнення та налаштування даних.

Звіти

Побудувати друковані, клієнточитні звіти про все вище.

Підключіть Google для точної інформації

Два роз'єми Google перетворюються в реальні цифри:

Google Пошук консолі

Юридична адреса

Ви можете переглянути всі дані, які ви повинні знати про файли cookie та інші способи використання файлів cookie.

Google Analytics 4

Торговий центр

Додайте дані про трафік та взаємодію з SEO, щоб звіти відображають видимість і поведінку разом.

Заплановані звіти про освіження та біло-лабор

Ви не повинні працювати все вручну. Заплановані оновлення повторних коливок, перевірка ключових фраз, переадресації посилань, локально-полосних сканування та формування звітів на курсі (щотижнево або щотижня залежно від плану і обсягу). Ці дані запускаються через OpsIQ cron, див. розділ Cron і автоматизація. Угенеровані звіти експортуються як друковані, клієнтно-читатні документи: агентства надсилають кожного клієнта регулярне оновлення SEO, а тому що всі дані домену окремо, кожен клієнт тільки ніколи бачить їх самостійно.

Деякі функції Site Intelligence викликають зовнішніх постачальників даних та AI через OpsIQ- Налаштований провайдер. Вони працюють з коробки, коли люкс включений для вашого плану. Якщо оновлення не запускається, підтвердіть OpsIQ cron працює (див. Крон і автоматизація).
Чи потрібно додавати будь-який сайт для SEO відстеження?+

Пошук, відстеження рейтингу, дослідження ключових слів і посилання працюють безпосередньо на вашому сайті. Щоб отримати дані щодо трафіку та точних результатів пошуку, з’ єднайте Google Search Console і GA4.

Чи можу я відслідкувати більше одного домену?+

Так. Додайте кожному домену окремо; свої кралі, рейтинги та звіти, які залишаються повністю ізольованими від одного іншого.

Як часто варто сповзати?+

Щотижневий є великою кількістю сайтів, коли ви хочете змінити вміст або структуру. Встановіть графік так, щоб ви не забули.

ріст і SEO

Автозавантаження (SEO агент)

Автоімплитація є частиною Site Intelligence, яка фактично стосується фіксації crawl і аналітика AI, замість того, щоб ви зрозуміли. Засіб працює строго від того, що Site Intelligence вже знайшов (не може не викликати зміни) і йде кожну закріпку через одну ж безпечну петлю: сухий попередній перегляд, ваше погодження на стадії, живе написання, автоматичне знімання, а також повторне сканування, яке доводить відкритість кількість вирушає. Це функція керованого-AI-тільки; вона з'являється як Автозбірка (рокет) дія всередині розділу Site Intelligence і її поки ви не вимкнете.

Автозавантаження
Автозавантаження SEO агентаПроведення показу рекомендованих SEO-фіксаторів, які переміщаються через попередній перегляд, затвердження та інформаційне написання, з доведеною рекрутинговою.Автозавантаженняyoursite.comРекомендовані фіксаціїAdd missing <title>затвердженоEnglish, Українська, Français...затвердженоКарта сайту xmlоглядДРИ-РАН ПЕРЕГЛЯД (ДМК)+ <title>AI Helpdesk - OpsIQ</title>+ <meta name=description ...>- <title>Home</title>ЗатвердженняКорабельПРОВЕДЕННЯ ІТ - РЕКРАВІТВипадкові питання 124Збережені1ОГЛЯДСушильна дифузія кожної фіксації2ПІДТРИМКА ТА САЙТSSH або розміщення API3ПРОВЕД & РОСЛАКРе-краса + знімок
Як працює сеанс: агент списує виправлення Site Intelligence вже рекомендується, показує сухий риф кожного, застосовує ті, які ви затверджуєте над SSH або ведучий API, знімки перед кожним письмом і переривками довести кількість відкритих матеріалів.

Що можна змінити

Цей домен не використовує файли cookie, щоб перевірити цю інформацію. Продовжуючи використовувати відповідні платформи, які охоплюють:

Налаштування сервера

Sitemap.xml, robots. txt та перенаправлення, канонічні та заголовкові правила в . htaccess (Apache / LiteSpeed) або настройка nginx.

Реверсальні ланцюги

Захоплює багатооповий репрямий ланцюг до одного хміль прямо до фіналу URL, всередині того ж керованого блоку . htaccess, так швидкість і обмеження значення навантаження через додаткові затискачі.

Page <head>

Знаючі або слабкі назви сторінок, мета описи, канонічні теги і структуровані блоки даних (шмама)

WordPress SEO

Йоаст, Ранг Маф і SEOPress titles & meta, and image alt text, застосований через WP-CLI на SSH шлях або поїздка API на розміщеному шляху.

WordPress структуровані дані

Додати JSON-LD (шмама) на сторінки, які відсутні. На сторінках SSH Шлях невеликий керований помічник (додатковий плагін) роздрукує розмітку, так що він працює або без SEO-опагіну; на розміщеному шляху ваш SEO плагін переносить його.

Внутрішні посилання

Додає один відповідний внутрішній зв'язок всередині існуючого WordPress зміст для порятунку сторінок сиріт і підключення пов'язаних листів. Один посилання на сторінку, ніколи не всередині заголовка, наявний зв'язок або короткий код, і завжди схвалено вами першими.

Тінь-сторінок зміст перезаписів

Проекти, що повністю замінюють контент для тонких сторінок (повернуті на варіант crawl, див. нижче). Кожен проект розглядається і схвалений вами перед будь-яким опублікуванням, а старий вміст зберігається так, щоб він був відновлений.

Сторінка кешу (Cache)WordPress)

Увімкніть кешування сторінки W3, коли crawl знаходить проблеми швидкості та встановлено плагін, тому сторінки швидше подають.

Shopify SEO

Продукт і збірка SEO-заголовки & описи, сторінка та блог-частина SEO, плюс 301 перенаправлення, через Shopify Поповнення API.

Webflow SEO

Per-page SEO title and meta description through the Webflow Data API v2.

Приготуйте застібки автоматично (дві варіанти кравця)

Панель налаштування Site Intelligence для домену (його настройки crawl) має два варіанти, які вирішать скільки ліній агента перед вами раніше часу. Обидва вимкнені за замовчуванням і як використовувати AI кредит, тому ви переключите їх тільки при бажанні, щоб працювати зроблено для вас.

Авто-пропілен AI фіксує після кожного crawl

Кожен люль також пише вміст бетонної фіксації ( назви, мета описи, альт текст, схеми, перенаправлення) для того, що він знайшов, тому кріплення готові переглянути і застосувати момент завершення крою замість створення пізніше попиту. Використовуйте AI кредит на кожному кролі.

АІ перезаписи вмісту (в сторінках)

Засіб може пробудувати повну заміну контенту для тонких сторінок. Ніщо ніколи не публікується на власній: кожен проект з'являється як зміна ви переглядаєте стороні і схвалення або відхилити, попередній вміст зберігається так, що він є реверсивним, і це обмежено кількома сторінками на проході. Використання AI кредит на проект.

💡
Всі варіанти тільки підготують і протягують роботу. Кожна зміна все ще йде через те ж саме затвердження, зніміть і відкочуйте як будь-який інший виправити, так що перевертаючи їх на ніколи не кладеться до себе щось життя.

Два способи з'єднання

SSH / SFTP доріжка

Самолікування

Для сайтів на своєму сервері агент з'єднує SSH/SFTP за допомогою облікових записів, які ви зберігаєте, редагує налаштування сервера та файли сторінок безпосередньо, і працює WP-CLI для WordPress. Найкращий, коли у вас є доступ до оболонок і хочете повністю контролювати файли.

Хід-API шлях (без) SSH)

Немає оболонок

For platforms that do not allow SSH, the agent works entirely through an official API connector, WordPress (REST + Application Passwords), Webflow (Data API v2) and Shopify (Admin API). Nothing is installed on the host.

💡
Wix і Squarespace не мають публічного SEO-запису API, так на цих платформах Автоімпланмент працює в консультативному режимі: він показує вам точний зміни для того, щоб зробити (точне ім'я, мета або налаштування) для вас, щоб застосувати вручну. Все інше - це читання по-справжньому та безпечно.

Перетворювати роз'єми

Засіб досягає кожної платформи за допомогою роз'єму:

Вбудований

Shopify і WordPress роз'єми корабля з OpsIQ, просто увімкніть їх під роз'ємами і додайте облікові дані магазину / сайту.

З маркетплею

Webflow, Wix і Squarespace встановити з роз'ємів → Marketplace, потім підключіть те саме.

Як проходить сеанс

1
Підберіть застібки

Відкриваємо Автозавантаження (рок) з розділу «Інформаційна розвідувальна інформація». Вона списує питання Site Intelligence вже знайшли, що вона може виправити на цьому домені.

2
Перегляд кожного зміни

Для кожного засобу виявляє сухий дифут (звідси, що він напише) до будь-яких торкнень живого сайту.

3
Затвердження крок за кроком

Ви затвердите (або пропустити) кожну зміну окремо. Ніщо не наноситься без вашого явного хода на цьому кроці.

4
Вона пише, потім знімки

На затвердження агента робить зміни в режимі реального часу SSH або ведучий API і зберігає перший знімок, тому будь-які зміни можна розкачати назад.

5
Провіть його, жити

Як це стосується кожного зміни агента, який відразу ж перекидає на сторінку і показує пер-степ «фіксоване життя» вироку, тому вам слідкувати за кожним фіксуванням землі на живій сторінці, як це відбувається. Наприкінці він знову поповнює весь сайт і підтверджує кількість відкритих матеріалів, що знизилися.

Безпека та зарахування

SEO-аудит

Засіб може лише зробити те, що Site Intelligence рекомендується для цього домену. Він не може внести довільні зміни на ваш сайт або сервер.

Поза «69»

Кожен запис попередньо переглядається як дифу і наноситься тільки після того, як ви затвердите, що конкретний крок.

Знімок і зворотний дзвінок

Знімок зберігається перед кожним записом, тому будь-які зміни можна перевернути.

Живий контроль за кроком

Кожна змінна сторінка перевидалюється миттєво, вона написана і отримує «фіксоване життя» вироку, тому фіксація підтверджена на сторінку в прямому ефірі, не тільки у закриванні повторного закриття.

Зміст ніколи не автоматично опубліковано

Внутрішні посилання та тонкі сторінки перезаписи є більш високою, тому вони завжди показали вам для затвердження і ніколи не застосовуються автоматично, будь-який режим ви працюєте.

Управління тільки

Авто-імплівці працює на керованому AI; блокується при використанні робочого простору (BYOK) ключів.

Розсилка

АІ-токени вексель зазвичай, як ви використовуєте їх, плюс один плати за використання через автоматичне сеансу відбору проб, обидва намальовані з того ж Managed-AI кредит.

Автозавантаження здійснюється за замовчуванням. Увімкніть його на сторінці конфігурації AI (карта автозабору) і переконайтеся, що роз'єм для вашої платформи підключений першим.
Чи змінюєте все без запитань?+

Немає. Кожна зміна попередньо переглядається як сухий риф і наноситься тільки після того, як ви затвердили цей точний крок. Знімок зберігається перед кожним записом, так що ви можете розкачати назад.

Чи потрібна я SSH доступ?+

Не на WordPress, Shopify або Webflow. Ті, хто працює через свою офіційну APIs без доступу до оболонок. SSH є лише одним з двох шляхів, які використовуються при бажанні агента для редагування конфігурації сервера та файлів безпосередньо на вашому сервері.

Як мені це було?+

Після внесення затверджених засобів, що перетворює сайт і показує кількість відкритих матеріалів до та після того, щоб підтвердити виправлення знизилися питання.

Чи буде він перезапис або публікувати вміст сторінки на власній мові?+

Немає. Зміст AI відмовляється, поки ви не повернете їх на параметри люка, вони обмежені кількома тонкими сторінками за прохід, і кожен проект показує вам для узгодження бічних сторін перед будь-яким опублікуванням. Попереднє вміст зберігається, тому повтор може завжди бути відновлений.

Чи можна використовувати його з власними ключами AI?+

No. Автозавантаження є керованим-AI тільки і заблоковано в BYOK_. Вексельні пункти AI зазвичай плюс один платний за використання на сеанс, з того ж Мангед-А кредит.

Зростання та залучення

Студія "Огляд"

Огляд студії - це робоча зона для створення редагованих опитувань, які можна доставити як багату сторінку стендів, віджет або вбудовану зібрану. Поточний продукт також надає посилання на розміщення, підписані проекти попереднього перегляду, приватні запрошення, QR-огляд, перегляд відповіді та оглядовий аналіз. Віджет веб-сайту є одним вибором доставки; він не визначення опитування.

⚠️
Поточний-власний знак: Досвід створення та попереднього перегляду преміум-класу, конструктор survey capability, and Survey-owned provider registry/health boundary are available now. Survey Studio still needs the independent multi-deployment architecture, signed-token Survey Identity Gateway, targeting/variable wiring, CRM Outreach send flow and typed surveys.* API_.

Створіть опитування

1
Виберіть, як люди візьмуть на це

Поточний майстер пропонує сторінку та посилання на сайт, віджет веб-сайтів і вбудоване зібрання. Затверджений потік цілей починається з типу опитування та пізніше додає CRM електронну пошту, приватні посилання та QR-завантаження як вибір першого класу.

2
Виберіть мету

Підберіть NPS, CSAT, CES, зворотний зв'язок продукту, після очищення, на борту сайту, захід, вебінарі, підтримка, свинець / демо, випробування, свідчення, дослідження, співробітник, збір або загальний зворотній зв'язки.

3
Використовуйте повний шаблон або запустіть порожні

Поточний каталог вже готовий редагувати стартери, які зафіксовані метою. Вибір шаблону створює проект з копіювання: зміна анкети не змінює пускача або інше опитування.

4
Налаштування або швидкий огляд

Налаштуйте відкритість кожного питання, дизайн, поведінка та контроль доставки. Швидкий огляд відкриває той самий проект на кінцевому клієнтогляду. Ніщо публікує або автоматично надсилається.

Вибір та поведінка

Каталог товарів та послуг

Відповідна сторінка брендованої з власною сторінкою URL_. Використовуйте приватні запрошення та випереджання, коли кожен одержувач потребує контрольованого посилання. Окуляри для обміну QR на цьому сайті.

Віджет веб- сайту

Мигрований канал спадщини. Він може використовувати сторінку, географію, пристрій, відвідувач, дата, вибірка, охолодження, відвідування та правила квоти. Вона все ще повертається за допомогою спадкового активного віджету міст під час побудови архітектури розгортання.

Внутрішня вбудовування

Відповідне опитування, яке розміщене на сторінці, порталі, продуктах або довідковому центрі. Не вимагається Studio Акція.

Електронний лист

Сьогодні Студія може створювати запрошення. HTML і приватні посилання. Спільне надсилання повідомлень з контактів/ сегментів CRM, з дозволом, пригніченням, розкладанням, повторними спробами та кореляцією відповідей — це схвалена мета інтеграції CRM Outreach.

Розробка та перегляд

Опитування сторінок мають оглядові теми та сторінки-навчання сімей, чуйні контрольи, вітальня і копіювання завершення, а також підписаний проект попереднього перегляду. Дизайнер попередній перегляд повноширокий нижче редактора, не вузькі бічні рейки. Він використовує реальний час розміщення в санкбоксеванському каркасі і підтримує настільний, планшетний і телефонний ширини; попередньо перегляд трафік не пише відповіді або аналітику.

💡
Опитувальники не залежать від студії просування. Цільова мета, ідентичність, активи, рендерінг та аналітика повинні бути опубліковані на сайті опитування. Зміст акції може бути використаний тільки через явну одноразову копію / імпорт, який створює дані з розшифровки; пізніше редагування реклами не повинно мати ефекту.

Повний продукт форми

Самостійні розгортання

ЦЕНА ЗА ЧАС:

Один опитування може мати окремо редакцією сторінки, віджету, посольства, CRM електронної пошти, приватного зв'язку та QR-розгортання, кожен з власним станом, дизайном, аудиторією та аналітикою. Кожен опитувальник може бути виведене, вимкнено або видалено.

CRM Outreach та кампанії

ЦЕНА ЗА ЧАС:

Створіть перевірену аудиторію з сегментів CRM та роз'ємів, заморожуйте її в необмежену версію, випишіть одну підписку на запрошення кожного і надішлемо через пінізований вихідний електронний роз'єднувач з підтримкою поставок.

Комплекти та перевірка

ЦЕНА ЗА ЧАС:

Списки, вибір зображення, завантаження файлів, підпис, адреса, телефон, заголовки та багатий текст, з довжиною min/max, електронна пошта/URL/номер пресетів, настройка тексту помилки та заповнення запиту URL параметри.

Логічні, формули, результати

ЦЕНА ЗА ЧАС:

І/ОР умовних груп, галузевих правил, безпечного двигуна формули над відповідями та баловими гуртами, які здійснюють власну сторінку результатів: забиті ділянки вікторини на її вироку.

Мова, kiosk, prefill

ЦЕНА ЗА ЧАС:

A visitor language dropdown listing only languages with real translations, kiosk mode for shared tablets (bigger targets, auto-reset, no redirects), a prefill link builder, and editable secure-badge and footer text.

Версія A/B тестування

ЦЕНА ЗА ЧАС:

Побачити варіант месенджера на будь-якому розгортанні з розщепленням трафіку. Відвідувачі присвоюються, відповіді штампуються версією, що фактично подаються, а порівняння таблиці показує відповідь, завершення та середній бал за версію. Проможливе переможця в одному кліку.

Щотижневий травень

ЦЕНА ЗА ЧАС:

Щотижнева електронна пошта з останнім 7 днів опитування KPI, найважчих опитувань, імпульс зворотнього зв'язку та останні короткий час AI, відправлений через вигнутий роз'єм. Налаштуйте його в Центрі доставки, Автоматизація.

Вступ

ЦЕНА ЗА ЧАС:

Згідно з переліком, які можуть редагувати, публікувати або видаляти опитування. Подання дозволу (чотирьох) вимагає другого адміністратора для виходу точний проект; редагування скидає затвердження. Проектні посилання дозволяють рецензенту бачити реальний проект без реєстрації в.

Платформа розробника

ЦЕНА ЗА ЧАС:

Договір роз'єму 2.2, типовані опитування.* та зворотний зв'язок api/v1, канонічне опитування.* події, міцні підписані вебгоки з Slack і формати реле Google Sheets, і одновідповідний PDF експорт.

Зростання та залучення

Аналіз та відгуки є різними продуктами

Експертиза аналітики пояснює, як саме опитування досягне людей та виконання. Зворотній зв'язок пояснить, що клієнти говорили по всіх дозволених джерелах і які справи повинні зробити про це. Два продукти, пов'язані між собою, але не діляться або перезаписувати аналітичну правду.

Аналіз опитування

Вищений з індивідуального опитування в студії обстеження, не від глобальної навігації. Вона вимірює відповідальність, вплив, тригерна поведінка, починається, завершення, відмова, питання та тертя гілки, частування, розгортання/там/перетворення результатів і надійність виконання часу.

Огляд відгуки та Inbox

Один дозвіл-довідник хронологічний корм для проведення перевірок, отримання спадщини віджету зворотного зв'язку, чату та квитка CSAT, відгуки про квиток, оцінка клієнтів AI-анкерів, корисні голоси та схвалені джерела зовнішнього/стуту.

Аналітика зворотного зв'язку

Аналізує значення для клієнта: початкові тенденції показників, теми/ темки, настрої, емоції, наміри, невідкладність, запити, скарги, похвала, сегменти шляху/ продукту/ послуги/ команди, критики і результати замкнутої петлі.

Власники даних

Відповіді на обстеження залишаються авторитетними в пам'яті опитування. Зворотній зв'язок зберігає реставрований вихідний посилок і отриманих сигналів, після чого завантаження допускаються докази про попит. Один завершений відгук стає найбільш одним елементом зворотного зв'язку.

⚠️
Поточна сторінка зворотного зв'язку все ще має браузер для реагування на опитування та окрему поштову скриньку віджетів, а також її штучний інтелект не використовує повну нормалізовану модель джерела. Єдиний огляд / Inbox / Analytics / Джерела та дизайн здоров'я є цілі реалізації.

NPS, CSAT, CES, зірки, великий палець і корисність завжди повинні зберігати свій оригінальний метод, масштаб, зразок, вікно дати і деномінатор. Вони ніколи не повинні бути в поєднанні з одним невиключним середнім.

ріст і SEO

Студія Просування

Студія просування перетворює ваш сайт в двигун перетворення. Дизайн спливаючих вікон, банерів, слайд-іншрутів, топ/знімних барів, повноекранних приймок, вбудованих блоків і навіть перенаправлення на основі країни, а потім показати правильне повідомлення правому відвідувачу в потрібний момент. Все доставляється через OpsIQ Віджет вже на вашому сайті, тому немає нічого зайвого для установки. Ви розробляєте і заощаджуйте кампанії в будь-який час; вони тільки показують один раз, коли ви поширите їх і студію переключається на робочому просторі.

Студія Просування
Дизайн студіїДизайн візуальної кампанії з блоками палітри, поп-ап на полотні та об'єктивною панеллю.Рекламна майстерня - Дизайн-студіяБЛОГx{first_name}_!Отримаєте 15% з Вашого першого замовленняSAVE15Клайм мій купонАРГЕТИНГКраїнаСША, КаліфорніяТригерВипадковийА/Б розщеплення50 / 50Пабли1ДИЗАЙНДрагоблоки на полотні2ПАРАГЕТКраїна, сторінка, аудиторія3СЕРЕДОВИЩАА/Б переможець + AI Insight
Візуальний дизайнер: блоки палітри зліва, ваша кампанія на полотні (насить персоналізований купон за допомогою {first_name} Tken), а також призначення + опубліковане панель праворуч.

Великий малюнок

Посада

Що

One promotion: a pop-up, banner, bar, slide-in, full-screen, inline block or geo-redirect. Each has a goal: sales, lead, sign-up, chat, survey, announcement.

Дизайн та варіанти

Яка

Ви створюєте вигляд у візуальному редакторі. Кожна економія створює нову версію, тому ви завжди можете відкачати назад. Ніщо коли-небудь втрачено.

Мета

Хто

Хто бачить його: країна, сторінка, пристрій, джерело трафіку, повернення проти нового, графіка та (з роз'ємом) своїх зареєстрованих клієнтів.

Тригери

Коли

Коли з'являється: миттєво, на затримці, на прокрутці, при виході-вмісті, коли свічка, натискання, після N сторінок або від чату / активності квитків.

Аналітика

Результати

Живі враження, натискання клавіш, перетворення, воронку з крапельного відключення, країна / сторінка / пристрій розщеплює, переможців A/B та інсайт AI.

Запустіть своє перше просування в 5 кроків

1
Почати з шаблону або заготовки

Відкрийте рекламну студію та натисніть кнопку Нова кампанія, або підберіть готовий дизайн з галереї шаблонів. Проект відкриває в дизайнера.

2
Складання

Перетягніть в блоки, заголовки, текст, кнопки, зображення, значки, статистика, відлік, форми, купони, відео, рейтинги, шпин-колеса. Колір стилю, градієнти та 3D ефекти з слайдерами. Preview Desktop / Tablet / Mobile і використовувати Безкоштовний рух для розміщення будь-якої точки.

3
Втілення

Тип жетонів, як {first_name}, {country} або {company} в будь-який текст. На показі, що вони стають реальними значеннями відвідувачів.

4
Цільовий і тригер

Виберіть, хто бачить його (знижка, сторінка, пристрій, аудиторія) і коли він вогонь (глибина, прокрутка, вихід-розклад). Залиште правило порожнім для того, щоб означати кожного.

5
Перевірте, потім публікуйте

Натисніть кнопку Перевірте швидкий сканування попереднього доступу, потім Publish. Він йде в режимі реального часу і починає збирати аналітику.

Блоки можна побудувати

ТУТ

БРОНЮВАННЯ

Подається згідно з, абзац, список, цитата, зображення, іконка, значок, статистика, дивіденд і променя, будівельні блоки будь-якого повідомлення.

Дзвоните до дії

БРОНЮВАННЯ

Кнопки з реальними діями: відкрити посилання, почати чат, створити квиток, копіювати купон або стрибати на сторінку.

Ургені та захоплення

ПАР

Відлік таймерів, форм (email / телефон / текст), розкривається купон і відео посольства.

Gamified & зворотний зв'язок

ПАР

Шпин-в-прайонні колеса, скретч-карти, NPS / зіркові рейтинги та багатоступінчасті воронки.

Відтворення & ефекти

ПАР

Колонки, прогресові стовпчики, соціальна частка, соціальні вистойки, так/не два кроку, вікторини та 3D ефекти, тент, світлий, паралакси, скломорфізм.

Персоналізація токени

Види будь-якого з цих у заголовках, абзаци, кнопках, значках, статутах, списках або котируваннях. Вони замінені на живу інформацію відвідувача, що вказується на те, що показує просування (всередині очищається для безпеки):

Доступні жетони
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)

Призначення посилання

Країна та розташування

Показати тільки в (або приховувати) обраних країн, міст або часових поясах через GeoIP. Відмінно для регіональних пропозицій або гео-рекламних.

Сторінки та URLs

Вимкніть певні сторінки, використовуючи рівні / починається з / містить / regex і виключіть сторінки.

Пристрої

Desktop, планшет або мобільний, наприклад, стрункий бар на мобільних пристроях, модальний на робочому столі.

Тип відвідувача

Нові, повертаючи, відомі (в CRM) або анонімні; сегменти CRM, фаза життєвого циклу, рівень лідера чи мова браузера.

Джерело трафіку

УТМ (utm_source, utm / Campaign) або на сайті, наприклад, тільки відвідувачів з конкретного оголошення.

Графік та частота

Почати / дати закінчення, часові вікна, і як часто людина може бачити її (за сеансом, в день, після того, як вони закриваються / натисніть кнопку / конвертер).

А/Б розщеплення трафіку

Показати на відсоток відвідувачів і запустити варіанти голови-голови; той же людина завжди бачить однаковий варіант.

Аудиторія (логені)

З роз'ємом ввімкнено, цільове за допомогою живого облікового запису, наприклад, клієнтів з неплатними рахунками або активними абонентами.

Тригери

Підберіть, як з'являється акція: Відразу після затримки на глибину прокрутки, на виході-вмісті, коли свічка, натискання елемента, після ряду сторінок дивиться, на форму-обранку або від чату / активності квитків. Розробники можуть вогонь один з власних коду з власним кодом window.OpsIQPromo.fire('event').

Цільові логовані клієнти (підключники)

Що робить OpsIQ акції спеціальні: підключіть платформу як WHMCS (або будь-який роз'єм, який підтримує аудиторію) і студія може зацікавити відвідувачів своїм статусом в реальному часі.

1
Увімкнути роз'єм аудиторії

Підключаючи, ввімкніть те, що ви набирає аудиторію (WHMCS Виходить з коробки. Замовники визнаються надійно при введенні на цю платформу, OpsIQ ніколи не довіряє електронну пошту, що вказана.

2
Додати правило аудиторії

У цільовій кампанії > Аудиторія, яка вимагає в'їзду і додавати правила, такі як неплатні рахунки >= 1, підписка на минулий рахунок або банківський кредит > 0.

3
Персоналізуйте дані

Використовуйте жетони, такі як {first_name} або {balance_due}. Нагадка «Ви маєте рахунок-фактуру» написати себе.

Цільова слухання небезпечна: якщо роз'єм не може підтвердити факт (або відвідувач не ввійшов), то просування просто не показує, тому заготовка-закупчення не досягає неправильної особи. Побудувати власний роз'єднувач? Див "Сприяння цільовим аудиторам" нижче.

Підключена торгівля (студія суперпотужності)

Картки товару з магазину

Дані про життя

Блок продукту витягує реальні елементи (ім'я, ціна продажу, зображення, посилання) прямо з WHMCS, WooCommerce, Shopify або ваш OpsIQ векселевізія. Натисніть кнопку "Кеп свіжа" і на карті оновлюється його ціна від платформи кожні години при публікації.

Купони-провізовані

Купони

Блок купона може створити реальний код знижки у вашому магазині, який ви публікуєте, тому код відвідувача розкриває завжди працює при оформленні замовлення.

Замовити послугу

Атрибут

Реальні замовлення від ваших платформ відповідають по відношенню до кампаній, які можна швидко (за допомогою купона або електронною поштою) так що дохід ви бачите з фактичних продажів, не оцінений.

Реальний соціальний доказ

Довіра

У соціально-безпечному ticker можна привести до справжньої недавніх замовлень (далі – «Ада» замовляє План Starter · 2h назад»), прізвище та пункт, тільки ніколи не сплачуються електронні листи або суми.

Експерименти та подорожі

A/B варіанти та авто-winner

Спліт трафіку за допомогою варіантів дизайну, дайте студію автоматично пропагувати статистичний переможець або вручну на оптимізатора bandit, який переміщує відвідувачів до того, що перетворюється як докази.

Підйомник

Забронюйте скибочку відвідувачів, які нічого не бачать, тому ви можете довести саму акцію викликає ліфт.

Варіанти сегмента

Кожен сегмент отримує свою версію.

Тригерні експерименти

Варіанти можуть також перевірити WHEN, щоб з'явитися: негайно проти затримки проти виходу-інтенту, вимірюваної голови до голівки.

Подорожі (поїзд)

Цільова місія, що хтось зробив з іншої кампанії ( "Попередня кампанія А але не конвертувала") для побудови багатоступінкових послідовностей просування.

Чайники

При цьому, замкнений спливаючий пристрій не вирушає.

Знайте, що це відбулося

Натисніть на карті

Дизайнер

У дизайнеру, щоб перехопити карту для фарбування реальних відвідувачів натискає над кожним блоком вашого дизайну.

Крок воронку

Воронки

Багатокрокові кампанії показують, що люди знизилися, екран за допомогою екрану.

Порівняйте кампанії

Спортивний

Покладіть до чотирьох кампаній на бічну сторону (імппреси, кліки, перетворення), виділіть кращу вартість.

Щотижневий сюжет і травень

А. А.

Кожен понеділок одружитися в ваших повідомленнях; 📖 Щотижнева кнопка оповідання пише звичайний підсумок з наступними кроками, коли ви хочете один.

Комфортабельний

АІ-копіот і ідеї

Чат з дизайнерським копілотом для редагування полотна («зробити наголовку терміново, додати відлік»), отримати ідеї кампанії зі своїх даних трафіку, перевести кампанію за країну або автоматично зафіксувати низький рівень дизайну.

Бренд Kit імпорт

Команда читає ваш сайт і пропонує своїм реальним брендовим кольором та шрифтами; заощаджуйте та кожен пікір веде їх з ними.

Багатоекранні воронки

Кроки блоків видають істинний пероральний редагування: вкладки для кожного екрану, додати або переадресувати екрани, а попередній перегляд слід разом.

Ім'я та наявність

Ім'я важливих версій ("Опублічний кандидат"), відновлення будь-якого з них і подивитися попередження, коли командний партнер оновлюється однаковою походою.

Пристрої смуги і лінійки

Диви настільні, планшетні та мобільні сторони по одному вигляду; для точного розміщення фіксуються піксельні лінійки.

Запрошення сторінки та каналів

Кожна кампанія може бути самотньою, розміщеної на сайті для біоів та QR-кодів, а також посліду продувної пошти для захоплених проводів або одноклітинного проекту.

Безпека підприємства

Публікація вікон заморожування (змінні періоди), аварійний пауза-всі перемикач, погодження, аудит причеп і версія зворотного відключення.

Чи потрібно додати код на сайт?+

Немає. Акції поставляються таким же OpsIQ Віджет вже встановлений. Дизайн, опублікування.

Чи будуть відвідувачі бачити однаковий спливаючий і надійшло?+

No. Настроювання частоти (за сеансом / в день або зупинка після того, як хтось закривається, натискає або перетворюється). Наноситься чуйні за замовчуванням.

Хто може публікувати?+

Видавництво, паусирування та розкотування спини обмежені власниками робочого простору і повним адміністраторам. Будь-який учасник команди може створювати і проектувати проекти.

ріст і SEO

Дизайн-студія

Дизайн-проектувальник – це чуйний редактор блоків для будівництва, рецензування, редагування та публікації досвіду кампанії.

Екран продукту
Дизайн-студіяУ дизайнера поєднуються живу канву, приладові попередні перегляди, блоки, зміни персоналізації, коментарі та історію виконання.Дизайн-студіяробоча зонаVIEWPORTТорговий центрВЕРСІЯv12ДЕРЖАВИПроектиОГЛЯД РОБОТИГерой блокПодається згідно з:РедагуванняБлок пропозиційЗнижка та терміниРедагуванняПерсоналізаціяКонтакти та активні зміни кампаніїГотовіПеревірка запускуКоментарі та перевіркуРедагування1BUILD BLOCKSРедагування макета2ОГЛЯДDesktop, планшет, мобільний3PUBLISHВерсія
У дизайнера поєднуються живу канву, приладові попередні перегляди, блоки, зміни персоналізації, коментарі та історію виконання.

Використовуйте блоки для складання досвіду, попереднього перегляду кожного підтримуючого огляду та вставки затверджених змінних персоналізації. Огляд коментарів та AI-медіа прованс перед запуском. Економія створює версії так попередній дизайн може бути перевірений або відновлений.

ріст і SEO

Шаблони просування

Шаблони надають пошукову, категоризовану стартову галерею для рекламних кампаній.

Екран продукту
Шаблони просуванняУ галереї шаблонів фільтри преміум макетів і застосовані кольори бренду робочого простору, коли шаблон стає проектом.Шаблони просуванняробоча зонаКАТЕГОРІЯПеретворенняRESULTS24БРЕНДПрикладОГЛЯД РОБОТИВигідна пропозиціяМодал з терміновістю та КАТАРецензіяНовий відвідувачБанкнер і список перевагРецензіяЗапуск продуктуГерой, доказ і відлікРецензіяЗапит на зворотний зв'язокКомпактний запит опитуванняРецензія1FILTERКатегорія та пошук2ОГЛЯДОглянути повний дизайн3USEСтворення фірмового проекту
У галереї шаблонів фільтри преміум макетів і застосовані кольори бренду робочого простору, коли шаблон стає проектом.

Пошук або фільтр за категоріями, додаткові результати завантаження, перегляд повного досвіду, потім виберіть Використання шаблону. Нова кампанія залишається проектом і може бути змінена в конструкторі просування до публікації.

ріст і SEO

Аналіз реклами

Аналіз реклами підключає враження та натискання на перетворення, контекст аудиторії, результати дії роз’ємів та навчання кампанії.

Екран продукту
Аналіз рекламиАналіз реклами показує продуктивність заголовка, аудиторію та провокаційні поломки, призводить до результатів експортно-роз’ємних дій.Аналіз рекламиробоча зонаIMPRESSIONS42.8kТРК6.4%CONVERSIONS814ОГЛЯД РОБОТИКраїнаУкраїна · 31%ВідхилитиУКР/pricing · 22%ВідхилитиТригерВступ вхідного · 44%ВідхилитиРоз'єм діїКупон створений · 97% ПРАВИЛАРезультат1СЕРЕДОВИЩАІмпресія для перетворення2SLICEСторінка, країна, пристрій3LEARNЗастосувати інсайт
Аналіз реклами показує продуктивність заголовка, аудиторію та провокаційні поломки, призводить до результатів експортно-роз’ємних дій.

Читання вражень, швидкість та перетворення натискання разом. Перервувати результати по країні, сторінці, запуску та пристрою; експорт захоплених призводить до необхідності. Результати дії роз'єму показують, чи обіцяний промо-кодом фактично ран. AI Insight та вивчення підсумків повинні бути оброблені як гіпотези для перевірки, не автоматичне підтвердження.

ріст і SEO

Анонси

Повідомлення про публікацію в зоні сповіщення віджету з додатковими настройками, графіком та викликом до дії.

Екран продукту
АнонсиРедактор повідомлень включає зміст, аудиторію, сегмент, правило сторінок, активну дату та візуальний стиль.Анонсиробоча зонаАКТИВНІСТЬ3AUDIENCEСекментиРАЗПЛАНМар 22–29ОГЛЯД РОБОТИЗаголовокПланування технічного обслуговуванняГотовіТУТВідобразити повідомленняГотовіПАРАЧитати оновленняДодатковоГолосPricing pages · active customersМета1WRITEНазва та маркування2ПАРАГЕТАудиторія, сегмент, сторінка3РАЗПЛАНАктивне вікно
Редактор повідомлень включає зміст, аудиторію, сегмент, правило сторінок, активну дату та візуальний стиль.

Виберіть всіх відвідувачів, підписаних відвідувачів або нових відвідувачів; додатково вузькі аудиторії з контактним сегментом і правилом сторінки. Встановити активний-від / активних до дати та активного прапора. Преміальний стиль пресетів і кольорів змінюють презентацію, але не замінюйте чіткий зміст.

ріст і SEO

Пошневі кампанії

Пошта подає повідомлення про браузери для підписки відвідувачів після того, як вони залишили сайт.

Екран продукту
Пошневі кампаніїВідштовхуючий композитор показує абонентський доступ, зміст, медіа, дії, цільові правила та порядок.Пошневі кампаніїробоча зонаSUBSCRIBERS8,214СЕНТР31.6kCLICK RATE5.8%ОГЛЯД РОБОТИЗаголовокВаш кошик чекаєГотовіТілоПовернення сьогодні безкоштовноГотовіПАРАВідкрити кошикГотовіРозкладНадіслати зараз або плануватиПроекти1PREPARE PUSHНазва, тіло, іконка2ПАРАГЕТАудиторія, сегмент, сторінка3SENDГрафік роботи або проект
Відштовхуючий композитор показує абонентський доступ, зміст, медіа, дії, цільові правила та порядок.

Налаштування клавіш Web Push спочатку під налаштуваннями Web Pug. До участі відвідувача можна віднести назву, тіло, ікону, зображення героя, значок, CTA та до двох кнопок дії; постійне повідомлення залишається до взаємодії відвідувачів.

Цільова аудиторія, додатковий сегмент контакту та правило сторінки. Заощаджуйте проект, заплануйте його або відправляйте відразу. Використовуйте підписку і натисніть метрики, щоб суддя досягне. HTTPS і правильно розміщений сервіс працівник буде потрібно на вбудованих сторонніх сайтах; див. Веб-Пуш на сторонніх сайтів.

ріст і SEO

Проактивні повідомлення

Проактивні повідомлення, що досягаються автоматично, ніж правило відвідувача, перед тим як вони просять. Ви будуєте кожну норму з трьома частинами: що повинно відбуватися, коли вона повинна бути пожежою, і як часто. Все доставляється через OpsIQ Віджет вже на вашому сайті.

Проактивний
Проактивні повідомленняПроактивно-рульний композитор в трьох частинах: оберіть дію (чат, банер, тур, штовхач, електронна пошта), додайте умови та встановлюємо частотний прохолод.Проактивні повідомленняробоча зона1 · Діячати повідомленняБРОНЮВАННЯТурПішохідЕлектронний лист2 · Умовиpage = /pricingчас на сторінці > 20sповернення3 · ЧастотаПісля сеансуСтан1АКЦІЇЧат, банер, електронна пошта, push ...2CONDITIONSСторінка, час, рахунок, повернення3БРОНЕНТНІСТЬОхолодження за відвідувач
Кожен проактивний правило – це три варіанти: що відбувається (чат, банер, тур, поштовх, електронна пошта, вебхоок), коли (замовлення), і як часто (покриття).

Три частини правила

1
Що потрібно (дія)

Покажіть чат бульбашки або на сторінці банера, запустіть Путівник тур, надішліть веб-шрифт або електронну пошту, призначте кафедру, або ввімкніть сайт. Жетони люблять {{visitor_name}} і {{page_title}} стати реальними значеннями.

2
Коли слід вогнети (замовлення)

Вузький, який запускає його: сторінка/URL, час на сторінці, глибина прокрутки, свинцевий рахунок, повернення проти нових, беззаперечних умов правило подає для кожного відвідувача. Додайте принаймні одну з цілей її. Умови об'єднуються з І.

3
Як часто (частота)

Встановити охолоджу, так що така ж людина не стержає, наприклад, раз на сеанс або один раз в день. Кожне правило має статус/вимкнення.

⚠️
Робочий простір для блокування "Час часу/іделей" дозволяє виконувати дії сервера (email, push, webhook, assign) на графіку відомих контактів, які не в даний час знаходяться на сторінці, так що ви можете "Електронний свічник гарячих проводів" автоматично. Він потребує OpsIQ Cron run. Залиште його, якщо ви хочете жити тільки на сайті nudges.
Чи буде він вогонь для всіх?+

Тільки якщо ви не додаєте умов. Додати принаймні одну умову (сторінку, рахунок, повернення...) для цілей правих відвідувачів.

Як це стосується витрат і екскурсій?+

Вони працюють разом: проактивне правило може почати екскурсію, а чат-бот Flow можна викликати за допомогою проактивного правила. Починайте з одним правилом чат-повідомлень, потім нашаровуйте інші.

ріст і SEO

Потоки чатбота

Чатбот Флус скрипт розгалуження розмов всередині чат віджету (походи, ключові слова відповіді, керовані доріжки) без коду. Потік є набором підключених кроків (невідділення): ви запитаєте питання, відвідувач забирає варіант, і потік відправляє їх вниз по відповідному відділенні. Тільки Активні витрати працюють на вашому сайті.

Як працює
Потоки чатботаПотік полотна: вітання вузьких гілок на три кнопки опції, кожен приводить до наступного кроку, подивіться порядок або від руки до людини.ВітанняПривіт! Як допомогти?Відстежуйте своє замовленняПитання про оплатуПоговорити про людинуЗамовити→ Гуманітарний агентТригери: Привітання · Ключове слово · Керівництво · Після годинників · On-chat-end
Потоки чатбота

Повільний проти AI · при використанні

Використовуйте потік

Коли шлях передбачуваний і ви хочете, щоб він був ідентичним кожен раз: кроки бронювання, повернення майстра, "який план?" оберіть, збираючи електронну пошту перед входом. Пороги ніколи не просочуються.

Використання AI

Коли питання відкриті, "докладає цю роботу з моїм налаштуванням?". Відповіді клієнтів чат AI від ваших навчальних знань. Потік може бути переданий до АІ (або людини) на будь-якому етапі.

Тригери

Вітання

Запускає як повідомлення про відкриття, коли відвідувач вперше відкриває чат.

Ключове слово

Запускає, коли відвідувач видає слово, яке Ви вказали (наприклад, повернення коштів, ціноутворення, анулювання).

Після затримки / Після затримки

Починає час, коли в розмові здаються контактні дані.

На чати / Проактивний

Запускає як чат обгортає (наприклад, рейтинг), або запускається правилом проактивного повідомлення.

Побудувати один в чотири кроки

1
Створення потоку

Натисніть кнопку Новий потік, ім'я його, заберіть тип запуску (і ключові слова, якщо ключове слово), зберегти. Він починає вимкнено.

2
Відкриваємо полотно

Натисніть кнопку редагування полотно. Візуальний конструктор, де ви додаєте кроки (повідомлення, питання з кнопками, відділеннями) та підключіть їх.

3
Додати гілки і ручний відключення

Для кожного вибору пишіть відділення на наступний крок. Кінцеві доріжки, вирішуючи, подаючи в AI або перенести до людини.

4
Увімкнути

Натисніть Увімкнути. Відключення потоку відбувається в режимі реального часу. Вимкніть будь-який час, не втратите дизайн.

Чи заміняє AI?+

Ні. Вони працюють з боком. Використовуйте витрати для передбачуваних шляхів та AI для відкритих питань; потік завжди може бути від руки до обох.

ріст і SEO

Екскурсії по Львову

Помічені тури є покроковими прогулянками, які вказують на частини вашої сторінки з мовними бульбашами та прожектором, що походять відвідувача через бортовий або новий варіант. Вони повністю тематичні і вбудовані в візуальний дизайнер з прямим переглядом. Екскурсія проходить тільки тоді, коли вона позначена Активною.

Як працює
Екскурсії по ЛьвовуЗнімена сторінка з кільцем spotlight навколо кнопки Додавання і тематичний читання міхура 1 з 4 з наступною кнопкою.+ Додати угодуКРОК 1 ЗОЛОГІЯ 4Створіть свій перший договірНатисніть тут, щоб додати угоду з вашим трубопроводом.Далі →
Екскурсії по Львову

Як будується тур

Кроки

Кожен крок встановлює елемент і показує міхур з вашим текстом. Додайте стільки зупинок, як прохідні потреби та замовте їх.

Пресети та тема

Почати з попереднього запису або розробити власний бульбаш (колади, градієнти, прожектор) з живим переглядом на правому.

Тригер

Додатково за посиланням проактивний ріел так тур автозапуски, коли це правило пожежі (наприклад, зворотний візитник першого панельного візиту).

Активний букмекер

Похід на екскурсію можна буде тільки в той час як Активний. Не слід брати його без видалення.

Побудувати один в чотири кроки

1
Новий тур

Натисніть кнопку Новий екскурс, ім'я та додаткове посилання проактивний рут, щоб він автоматично запустив.

2
Додати кроки

Додайте кожну зупинку: оберіть елемент, який він вказує на і напишіть текст бульбашки. Замовляйте до стежки.

3
Складання

Підберіть заміський або стиль бульбашки самостійно. У прямому ефірі попередній перегляд показує саме те, що відвідувачі дивляться.

4
Активувати

Тиц Активний і економить. Тур тепер може бігти, на власний тригер або розпочати правилом проактивного повідомлення.

Як розпочати тур?+

У власній тригері або через дії «Гуїнської поїздки» проактивне повідомлення, тому ви вирішите, які відвідувачі дивляться який тур і коли.

ріст і SEO

Мета

Перетворення Цілей перетворюють активність, яку ви піклуєтесь про (у разі виникнення вебгока, повідомлення про чат, дозвіл квитка) у записане перетворення з повним припливом. Коли діяльність вогневих, OpsIQ ввімкнено конвертацію проти контакту та зв'язків, що надходить до кампаній, сегментів і джерел, які призвело до цього.

Як працює
МетаПотік цілі: платіж. succeed webhook події стає записаним "purchase" конвертація Варто $49, приписаний до свого джерела та кампанії, з швидкою застарою попередньо встановленими чіпами вище.Швидкий стартStripe придбатиДемо заброньованіПідписка на розсилкуpayment.succeededвебкаПеретворення"Пух" · $49Атрибутджерело · кампанія
Мета

Визначте мету в трьох кроках

1
Підберіть запобіжну активність

Натисніть кнопку Нова мета перетворення. Виберіть тип активності, який підраховує як конвертація або використовувати Quick-start preset, Stripe покупки, Demo забронювати, Інформаційний бюлетень підпис або передплата розпочато.

2
Ім'я та налаштування значення

Подаруйте перетворення назви (опуб, демо_броньований, підпис) і додатково фіксоване значення та вікно інтрибутції.

3
Зберегти

Заощаджуйте і ввімкніть. Відтепер, коли активність пожежі, OpsIQ записувати перетворення на контакт з припливом до передових посилань.

Цілі вже провідовані в вхідні вебхуки: будь-яка мета, яка подає перевагу вводам типу вхідних подій автоматично моментом події землі. Використовуйте сторінку Inbound Webhooks для підключення Stripe, Calendly або будь-якої системи, яка може POST JSON_
Що може бути конвертація?+

Будь-яка записана активність: вхідний вебхоок (плато. succeeded), захоплення електронної пошти чату, дозвіл на квиток, що завгодно в режимі контакту.

Аналітика

Користувальницькі панелі

Настроювання Dashboards дозволяє вам побудувати власний вигляд метриків, які мають значення, замість того, щоб спиратися тільки на стандартний огляд. Додати віджети, які ви хочете, перетягніть і змінити їх в макет, який вам подобається, зберегти його та поділитися ним з командою.

Користувальницькі панелі
Користувальницькі панеліДешборд конструктор з KPI і діаграмою віджету плитки, зоною занурення та кнопкою Додати-widget.Користувальницькі панеліробоча зонаМій панель+ Додати віджетВІЗОРАТОРИ2,481ОБОВ'ЯЗОК$8.2kТРАФТИКПеретягніть віджет тутТОП-ПІГРИ/pricing/docs/signup1ADD WIDGETSПідбір метрики та діаграм2ARRANGEПеретягніть та перезавантажте3СХАРЕЗ командою
Створіть власну дошку: додайте KPI, діаграму та списку віджетів, перетягніть і змініть їх у макет, який ви хочете, після чого поділте його командою.

Побудувати один в трьох кроках

1
Додати віджети

Натисніть кнопку Додати віджет і виберіть метричний або діаграму, який ви хочете відстежувати. Повторіть все, що ви хочете на дошці.

2
Влаштування макета

Перетягніть віджети, щоб перемістити і перетягнути їх краю до змін. KPI через верхній частині, діаграми нижче. Що б не читати краще.

3
Зберегти та ділитися

Заощаджуйте панель і поділіть його командою, щоб кожен дивився однакові цифри.

Зберігати окремі дошки для окремих робочих місць (дошка "займається" з підрахунками в режимі реального часу, а також "місячний огляд" дошка зі тенденцією графіки) так кожен залишається зосередженим.
ріст і SEO

Аутрейкові кампанії

Аутрейч OpsIQ, , 1:1 і об'ємний двигун електронної пошти: складання персоналізованого повідомлення або запуску кампанії до CRM сегмент, з виявленням відповіді, контроль за відправкою часу, відстеження відкритої / клацанням миші, відстеженняпікселя та одноразового повідомлення. Це погоджується на використання CAN-SPAM / CASL сумісність.

Аудиторія
Аутрейкові кампаніїЕкран Outreach з Composer/Campaigns/Templates/Replies та рекламний столик, що показує відправлені, відкритість і відповідь-rate.Аудиторіяробоча зонаПоходиКомпозиторШаблониВідповідейКАМПАНІЯСЕНТРВідкритоКРЕДИТЧервень1,20048%7%Триває стежити34062%14%Виграшний82039%5%Відповісти виявлення автостопів слідувати-ап · один клік відписати на кожен посилок11:1 & BULKКомпоз або кампанія2TRACKEDВідкриваємо, натискає, відповідей3COMPLIANTВідписка вбудована в
Двигун Outreach: відправка 1:1 або запускати кампанії до сегмента, відстеження та відповіді, і перебування у співвідношенні з вбудованим відмовою від підписки та виявлення відповіді.

Чотири вкладки

Композитор

Написати персоналізований 1:1 Електронний лист {tokens} від контакту і CRM.

Походи

Відправте до CRM сегмента, запланованого або зараз, з ковпаками та контрольом часу.

Шаблони

Відмінні шаблони повідомлень для повторного вилучення.

Відповідей

Відповіді про виявлення записів і автостопів слідувати-допомогам, хто відповів.

Як проходить кампанія

1
Підбір аудиторії

Оберіть сегмент CRM (або завантажити список). Відхилення та згода наноситься автоматично.

2
Написати

Напишіть повідомлення з іменами токени; попередьте відгук у реальний контакт.

3
Розклад і відправлення

Відправляйте зараз або в кращому режимі. Відкрийте записи пікселя, натисніть кнопку та відповіді.

Зовні - це згода і пригнічення, що нараховуються один клік відписки на кожному посилці, а також слід CAN-SPAM / CASL. Відповіді автоматично припиняються подальші подальші спостереження.
Аналітика

Графік роботи

Заплановані звіти електронної пошти обраного метричного набору для вибраних одержувачів за розкладом (податково, щотижневий або щомісячний) як друкований, білий-лаборатор PDF. Встановити його один раз і звітні землі в папках автоматично через OpsIQ хрон.

Графік роботи
Графік роботиГрафік роботи: таблиця звітів з графіком, одержувачами та останню погодою.Графік роботиробоча зонаГрафік роботи+ Заощаджувати звітЗВІТРАЗПЛАНРЕЦИПІТЕНТИЛІСТ СЕНТЩотижневий трафікПисьма 9:00[email protected]_2d назадSEO звітЩомісячний[email protected]_Мар 1Розпродаж резюмеДоля[email protected]_todayВиготовлений як біло-лабораторний PDF за допомогою OpsIQ кепікі1AUTOMATEDЩоденне · щотижневе · місяць2БІЛОБЕЛЬPDF клієнтам3РЕЦИПІТЕНТИГрафік роботи
Встановити звіт один раз (метричний набір, діапазон, графік, одержувачі) і OpsIQ електронні листи білого плити PDF автоматично на вашому курсі.

Встановити звіт

1
Виберіть те, що відправити

Підберіть метричний набір (трафічний, SEO, продажі, підтримка ...) і дата- діапазону.

2
Встановити графік та одержувачі

Щоденно, щотижневий або щомісячний, в той час як ви обираєте, до одного або декількох одержувачів електронної пошти.

3
Зберегти

Заощаджуйте і ввімкніть. Звіт прогенерує та видає повідомлення самостійно за графіком, без ручного кроку.

💡
Заплановані звіти, що проходять через OpsIQ cron, якщо звіт не прибув, підтверджує роботу з кроном (див. Крон і автоматизація).
Конфіденційність

Конфіденційність та відповідність

Сторінка конфіденційності та комплаєнсу є одним місцем, щоб показати аудитора, який ви керуєте персональними даними, відповідально: згода привелигер, лог доступу адміністратора, політики збереження даних і готової до друку DPA_, в одному вкладці. Тільки повний адміністратор може відкрити його.

Конфіденційність та відповідність
Конфіденційність та відповідністьСекран конфіденційності та комплаєнсу: вкладки для консенсу, Вхідний запис, резиденції та DPA, з замовленістю привели до списку грантів і відкликань на каналі.Конфіденційність та дотриманняробоча зонаКонсентний привідЖурнал доступуРезиденціїDPA_КонтактКАНАТЕГАКЦІЇДЕРЖАВИ[email protected]_Електронний листНаданоМар 12[email protected]_pushВідкликаніМар 10[email protected]_marketingНаданоМар 9Пошукова перевірка кожного з дозволів та відкликання, по каналу1КОНСЕНТНИЙ ЕЛЕКТРОЛЮЧПодання кожного гранту2ACCESS LOGХто доторкнувся даних3DPA_Друкований шаблон
Один ревізор-рекрутинговий екран: пошукова згода привели (повороти/відкликання каналу), журнал доступу, які доторкнулися дані, налаштування резиденції / затримки, і друкований DPA_.

Чотири вкладки

Консентний привід

Пошукова звітність про надання згоди та відкликання, за допомогою контакту, каналу (email, push, SMS, in-widget), дії, джерела та дати. Ваш доказ погодився контакт (або змалювався).

Журнал доступу

Хто на вашій команді переглядав, редагував, експортували, видалили або повідомлення про дані контакту з адміністратором, контактними даними, діями, зазначеною причиною та IP_. Точно те, що регулятор просить.

Затримка та збереження

Декларуйте, де зберігаються дані робочого простору, встановивши скільки днів поспіль роботи (03/22/2019)0= назавжди, і записувати контролер даних та DPO.

DPA шаблони

Друкована обробка даних Додаток, яка заповнюється вашим контролером, адресою, DPO, резиденцією та збереженням. Друк або збереження як PDF.

Конфіденційність та комплаєнсові пари з студія з згоду на використання файлів cookie (який збирає згоду) та сторінку експорту (яка виробляє копію даних для DSAR). Див. також Cron і автоматизація за нічним збереженням чистоти.
Конектори

Підключіть свої платформи

посилання роз'ємів OpsIQ на зовнішні платформи: інтернет-магазини, платіжні системи, сервісні процесори, постачальники електронної пошти та користувацькі сайти APIs. Після підключення AI може виглядати замовлення, дані клієнтів, підписки та інші дії з Вашим затвердженням.

Як працює
Роз'єми hubOpsIQ ядро підключений до WHMCS, Shopify, Stripe, WooCommerce, SendGrid і Google Business Profile, кожен показує підключений статус.WHMCS_Shopify_Stripe_WooCommerce_Надіслати сіткуБРОНЮВАННЯOpsIQ_БРОНЮВАННЯ1PLUG IN25+ попередньо вбудовані роз'єми2AI CONTEXTДані платформи3ACTIONSЗ Вашого дозволу
Конектори

ЗП OpsIQ

Ось і ми можемо самі зателефонувати одержувачу.

WHMCS_

Розсилка

Веб хостинг: клієнти, послуги, квитки, рахунки-фактури, домени, сервери.

Shopify_

Електронна комерція

Електронна комерція: замовлення, клієнти, товари, інвентар, платежі, вебхоки.

WooCommerce_

Електронна комерція

WordPress e-commerce: замовлення, клієнти, товари, купони, доставка.

WordPress_

укр

Зміст та користувачі на сайті WordPress Веб-сайт

Квадратура

Платежі

Оплата та точка продажу: замовлення, клієнти, каталог.

osCommerce_

Електронна комерція

Електронна комерція Legacy: замовлення, клієнти, товари.

Hotel Болонья

БУХ

А.А Botble CMS сайт готелю через підписаний OpsIQ міст. Довідкова реалізація платформи без API.

Zendesk_

Підтримка

Helpdesk: tickets, users, organizations, comments.

Google Business Профіль

Маркетинг

Місцевий бізнес: відгуки, публікації, статті та повідомлення, огляди. Використання OAuth

Календар подій

Продуктивність

Календарі та події. Використання OAuth_

Gmail і IMAP

Електронний лист

Поштові скриньки: вхідна та вихідні поштові скриньки, адресно-книжкова синхронізація.

Надіслати сітку

Електронний лист

Посилання електронної пошти: надсилайте електронні листи та встановіть шаблони.

Пошта

Електронний лист

Посилання електронної пошти: відправка електронних листів через Mailgun.

Slack, Телеграма, ЛІНІЯ, X DM

Розсилка

Обміняти канали для вхідних і вихідних розмов.

Мета канали

Розсилка

Facebook Messenger, Instagram DM і WhatsApp.

Site Intelligence (GA4, Search Console)

Аналітика

Аналітика та дані пошуку SEO Suite.

Збагачення веб-сайтів та CRM Імпорт

CRM Comment

Збагачування та імпортування клієнтів.

Доступний з ринку

Ці видаються пакети, не частина установки. Встановіть один з роз'ємів, Marketplace і він копіюється в папку живих роз'єднувачів, після чого воно буде точно так само, як вище.

Stripe_

Торговельний майданчик

Платежі: платежі, рахунки, підписки, виплати, спори.

Великий

Торговельний майданчик

Електронна комерція: замовлення, клієнти, товари, категорії, бренди.

Магніто 2

Торговельний майданчик

Електронна комерція: замовлення, клієнти, товари, категорії, інвентар.

Магазини

Торговельний майданчик

Електронна комерція: замовлення, клієнти, товари, правила кошика, перевізники.

Електронний

Торговельний майданчик

Електронна комерція: замовлення, клієнти, товари, категорії.

Amazon SES, Постмарк, Смоктейл

Торговельний майданчик

Доставка електронної пошти в режимі 24/7

Jira, Лінійка

Торговельний майданчик

Відстеження проекту та відстеження проектів.

Зом, Microsoft Calendar, Outlook Mail

Торговельний майданчик

Графіки та повідомлення.

DocuSign, Аполлон, SerpApi,Google Analytics

Торговельний майданчик

Написати відгук про пошукові системи, пошук та аналітика.

Webflow, Wix, Squarespace

Торговельний майданчик

Веб-сайти.

💡
Список роз'ємів переходить як пакети. У статті є список авторів для установки: що вказано, що час відкриття, і вкладку Marketplace показує, що ви можете додати.

Встановлення роз'єму

1
Перейти до роз'ємів

Навігатор для роз'ємів в бічній панелі адміністратора.

2
Знайти роз'єм

Перегляд списку або пошуку. Роз'єми групуються за категоріями.

3
Увімкнути

Натисніть роз'єм і навімкнути Увімкнено.

4
Введіть облікові дані

Заповніть необхідні поля: API ключ, URL, токени і т.д. Кожен роз'єм має специфічні вимоги, що задокументовані в панелі налаштувань.

5
Тестове підключення

Натисніть "Test Connection". Зелений результат означає роз'єм може досягати зовнішньої платформи. Червоний результат показує помилку.

6
Налаштування функцій

Виберіть, які функції включають: синхронізацію знань, синхронізація вебхоок, дії AI. Не всі роз'єми підтримують всі можливості.

Які роз'єми дають вам

АІ-контекст

AI може виглядати дані клієнтів, замовлення, підписки та багато іншого через роз'єм. Коли клієнт чати, AI має реальні дані платформи для посилання.

АІ контекст (репортажні автори)

КонтекстПровідер вашого роз'єму живить квиток-AI чителювний рахунок власника квитка. Вирішити замовника шляхом customer_id коли відомо; інакше, на автозаправках квитків, де прапор ctx customer_trust_email вірно, подивіться рахунок customer_email (перевірений відправник квитків). Віддалені платформи викладають /context/customer-by-email ендто і роз'єм викликає його. Це те, що AI процитує реальний баланс/іноземець замість того, щоб сказати “зберегти логін”. Заслужено, що об'єктиви оператора (для підключення) класу (або для використання даних), які надаються оператором (у тому числі).customer_sections, customer_allow_credit) і перебування строго почитано, ніколи не видає секрети.

Каталог клієнтів (з'єднувачі)

Ваш роз'єм IdentityProvider живить три універсальні варіанти квитків: lookupCustomerById() (карта кусоммера), lookupCustomerServices() (табл./послуги), та listCustomers($query,$limit): "Пошук клієнта або типу електронної пошти" пікіровка на рідній папці Compose-New-Ticket. Повернути рядки {id, external_id, name, email, company, phone, platform, platform_label}. Віддалене правило: Якщо Ваші клієнти живуть в іншій базі даних або службі, викопайте їх на платформу API всередині цих методів, ніколи не читайте інші таблиці системи безпосередньо (в таких методах) OpsIQ DB вони порожніх власників місць, тому локальне читання повертає порожній пікір. Перевірити віддалений шлях на налаштування API URL; зберігати локальне читання тільки як одно-DB падати.

Електронні квитки, виявлення та маршрутизація (контролери)

Коли вхідна електронна пошта стає рідним квиток, OpsIQ Виявляє відправника за допомогою виклику lookupCustomerById(0, ['email'=>$sender]) по кожному роз'єму; перший матч "власників" замовника і його platform мука штампується на ticket.created події _pipe_owner_platform (empty = гість)WHMCS-скоптер e-mail відкриває квиток в WHMCS (WHMCS номер, віддзеркалений як один), при цьому невідомого відправника залишається рідним гостем. Якщо ви з'єдналися від дзеркала рідних квитків на власну платформу, Ваше ім'я ticket.created обробник повинен заглушувати на цьому: if (array_key_exists('_pipe_owner_platform',$payload) && $payload['_pipe_owner_platform'] !== '<your-slug>') return;. ключ відсутні на непірованих (чат/ручних/AI) квитки, тому дзеркало як раніше. Контроль за погодженням з боку команди та відділів → Відкриті квитки через електронну пошту (Аніон / Замовники тільки / Off).

Акції

AI може виконувати дії через роз'єм: створювати квитки, оновити замовлення, скасувати підписки, всі з вашим схваленням через Trust Layer.

Знання

Роз’єми сприяють формуванню специфічних знань на AI. Shopify роз'єм додає усунення несправностей електронної комерції; WHMCS роз'єм додає знання хостингу.

Імпорт бази знань (кон’єрні автори)

Якщо ваша платформа має знання бази, оголошуйте kb_capabilities блок в settings.json (тип kb_source) і ваш роз'єм з'являється в редакторі Help Center Імпорт КБ → Імпорт з підключеного додатку Випадок, коли це ввімкнено і налаштовано в робочому просторі. Він декларативний, ніякий метод реалізації: ім'я вбудованого adapter (zendesk Для точного вузького центру допомоги API_, або crawl для будь-якого місця КБ та base_template як https://{subdomain}.zendesk.com, який OpsIQ заповнюється з збережених налаштувань вашого роз'єму. Потенціали ніколи не залишають сервер; браузер тільки надсилає шлам роз'єднувача. Для підтримки нової платформи додайте нову платформу, додайте opsiq_kb_<platform>_manifest() перехідник і посилання на його ім'я. Повне посилання: connectors/PLATFORM_CONNECTORS.md §5.

Вебхуки

Деякі роз'єми реєструють вебхуки з зовнішнім майданчиком для сповіщення про події в режимі реального часу (нові замовлення, оновлення квитків тощо).

Відстеження продажів

E-commerce роз'єми живлять дані про доходи продажів на борту продажу для атрибуту та аналітики.

💡
Роз'єми є робочим простором. Кожен робочий простір може мати різні роз’єми, що містяться в різних облікових записах. A WHMCS робоче місце використовує WHMCS роз'єм;Shopify робоче місце використовує Shopify роз'єм.
Чи можна використовувати декілька роз'ємів одночасно?+

Так. Ви можете мати Shopify для замовлень та Stripe для платежів в одному робочому просторі. AI об'єднує дані з усіх підключених роз’ємів.

Що робити, якщо мій сайт не зазначений?+

Використовуйте конструктор Connector для створення індивідуального роз'єму для будь-якої платформи з REST API. Або перевірте Marketplace для вбудованих роз’ємів спільноти.

Чи працює роз'єми з самоприхватом OpsIQ?+

Так. Роз'єми працюють однаково в хмарних і самоприхватних виданнях.

Конектори

Договір роз'єму продажів і векселів

Кожен роз'єм торгівлі використовує той самий договір про проведення переговорів. WHMCS - це довідкова реалізація, але SaaS Bridge, магазини, платіжні постачальники, ринкові роз'єми та пакети конструкторів Connector повинні обробити однакові правила.

Що кожен торговий роз'єм повинен публікувати

Один авторитетний під керівництвом

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.

Стабільність джерела

Платформа є роз'ємом реєстру шламу, таких як whmcs, shopify або opsiq_saas. Traffic_source містить перевірені набуття при поставці; в іншому випадку використовуйте цей же шлам, як випадаючий. Визначається магазин, не відображають етикетки. OpsIQ Вирішує ім'я безпечного роз’єму в інтерфейсі UI.

Ідемпотенції

Захід_id повинен бути детермінований. Карта принаймні одна незмінна замовлення_рефл, рахунок-фактура_ref або підписка_ref так вебхоок речення і заповнюється тим самим подією замість створення дублікатів продажів. service_ref визначає уражений продукт або сервісний екземпляр, коли існує один.

Час генерації:

was_at - це час оплати або економічного виживання, який повідомляється початковою платформою. Ніколи не заміняйте історичні дати оплати з часом імпорту.

Гроші та FX

Відправте початкову суму та дійсну трилетеру ISO валюти. Якщо налаштування роз'єму дозволяє OpsIQ FX перетворення, звіт перетворюється в робочу площу звітності валюті; інакше звіти зберігають магазин або рахунок на платформі валюти. Код роз'єднувача не повинен жорсткого коду звітної валюти або курсу обміну.

Евіденс-на основі життєвого циклу

Використовуйте нові, поновлення, оновлення, повернення або невідомі. Класифікуйте з причини рахунку, підписки чи зв'язки з сервісами, тип лінії-item або іншого авторитетного джерела. Повторна покупка того ж замовника не автоматично відновлюється.

Зобов'язання з продажу

Тільки позитивні оплачені нові, поновлення або законно невідомі торгові чеки належать до продажів та конверсії. Повернення коштів повідомляються по поверненню і чисто-відновленню аналітики. Кредит на рахунку, гаманець топ-ап, токен Топ-ігри і Додати фонди залишаються вексельними подіями і ніколи не підраховують як продаж, перетворення, обсяг замовлення або дохід від продажу.

CRM залишається окремим

CRM-пакети представляють собою і діяльність з експлуатації трубопроводів. Вони не комерціонуються продажами, якщо підключена платформа для оплати або зберігання видає ріелтору в режимі реального часу або рахунку через цей контракт.

Кожен сигнал оплати відкриває ряд

Не залежно від одного імені події. Коли платформа надсилає кілька підтвердження однієї оплати (внесок платно, замовлення, платіж додана, оплата завершено) будь-який з них може відкрити рядок під проводом, коли платформа підтверджує продаж оплачена; відбитки продажу обвалюється шблами в один ряд.

Заплановано реконциркуляцію (Contract 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.

Прибувні проекції

opsiq_conversions і dashboard підсумки сумісні з проекціями, що перебудовані від під керівництвом. Роз'єми не повинні обробляти виступ як фінансового джерела правди. Виконавець дозволяє повторно оцінювати отримані ряди без видалення базової історії вексель.

Дистанційна платформа

Віддалений роз'єм зчитуває свою платформу через налаштовані автентичні API_. Він ніколи не може залежати від односерверних таблиць бази даних. Точний автентичний доменний сайт_key подається з роз'єднувачом Реєстрацій і повинен бути застосований до кожного запису на під керівництвом та заправки. Робоче місце або груповий обсяг тільки прочитано час агрегації; він ніколи не розширюється, що зберігається власність події.

Canonical pay-event приклад

Нормалізація торгівельної події
{
  "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"
}

Роз'єм конструктора картування

Коли продажі та вексельні рахунки включений у Конструктор, розмір карти, валюту, статус джерела і дата джерела, плюс принаймні одне замовлення, рахунок-фактура або посилання на підписку. Планування карт при API виводить авторитетне значення життєвого циклу. Згенерований SalesIngest проходить кожен рядок через той же норматор Торгового процесу, який використовується вбудованими і ринковими роз'ємами.

⚠️
Кредит та Додавання фондів, які мають намір зберігати в історії рахунків, контексті балансу клієнтів і аналізі на чолі. Виключаючи їх з продажу не видаляється; він запобігає їх перенагріванню комерціональної продуктивності.

lifecycle_type вирішує, що стає CRM-рішенням

lifecycle_type не є аналітичним ярликом. OpsIQ _читує, чи входить продаж до CRM-проводу, тому кожен роз'єм продажів приймає рішення про те, чи має він намір або ні.

НОВИНКА

Відкриває закриту угоду (новий бізнес).

оновлення, модернізація

Зареєстровано як рецидивний дохід. Немає нової угоди — оновлення, які перетворюються на кривій ймовірності та змішування їх ушкоджень обох прогнозів.

повернення, кредит

Не відкривайте угоду, в будь-якому режимі. Гроші повернулися до замовника не виграють.

омлет / невідомо

Виручити тільки. Продається, але не досягає трубопроводу.

Один продаж, один під керівництвом ряд: ідентичність САЛОГО, не подія

Не відповідати event_id і вставити себе. event_id is platform:eventName:externalIdЯкщо ми вже обробили цю доставку, то не можете відповісти на «про що ми вже записали цей продаж». Платформа, яка оголошує одну платіж двічі — як invoice.paid і знову payment.completed — норти дві покоївки і землі однакові гроші двічі, з чим не заплутуватися і нічого не попередить.

💡
Знайдено на довідковій установці: шість рахунків-фактур з трьома під керівництвом рядків кожного, від трьох кроків коду за допомогою трьох різних схем заходу_id. Всі вони перевозяться 0.00 так само, як і раніше процес відновлення реальних сум було нараховано один платіж три рази.

Зателефонуйте на загальний запис замість. Ядро відповідає бізнес-ідентифікатору продажу (03/22/2019)sale_fingerprint), відповідає існуючому ряду на ньому, зберігає оригінальний event_id на оновлення, фільтри в реальні стовпчики:

Єдиний підтриманий спосіб написання керма продажів
\OpsIQ\Commerce\CommerceEventContract::upsertSaleRow('opsiq_sales_events', $row);
Продаж полум'я, багато подій

рахунок-фактура. платити, платіж. повний і продаж. заповнювати один рахунок для одного облікового запису та оновити один рядок.

Повернення коштів на окремий

Гроші, що вилітають, є різним фактом від грошей, які надходять. Повернення рахунку-фактури зберігає свою ідентичність, тому він ніколи не перезаписати платіж його зворотним зв'язком.

Немає посилання, немає відбитків пальців

Якщо ви не хочете, щоб зробити замовлення, рахунок-фактуру або посилання на послугу не буде відбитків пальців, то два не пов'язані ряди ніколи не збігаються тільки тому що обидва відсутні ідентифікатори.

Довідкова інструкція

UKRSIBBANK BNP Paribas Group відкрив можливість покупки валюти онлайн через UKRAINE 2018 в Одесі

Продавець - це додаток-тільки: ніколи не перезаписати продаж

Повернення коштів, скасування або виправлення є новий запис. Ніколи не вмітити рядок, який він виправляється. Повідомляти платіж у повернення, виглядає тиди і відразу розбиває три речі:

Зруйнує валовий дохід

Валовий тарифний план продажу та повернення коштів, що є відокремленим - і швидкість повернення коштів є метричною реверсальною.

У виправному періоді книги перевороту

Повернення березня з січня необхідно зменшити березень. Почергувати за січень-рядок безшумно переходить на закритий період.

Прориває слуховий причіп

У випадку, коли в момент часу настає рекорди. Корекції є протипоказаннями, що таке як подвійне ведення бухгалтерського обліку працювала протягом п'яти століть.

Так роз'єм звітує про відрізок, а не його застосування: повернення refunded_at і refund_amount Разом з власним життєвим циклом продажу, і дайте телефоннику написати повернення як свого власного ряду від моменту завершення повернення коштів. Два не можуть співпадати, оскільки продаж відбитків пальців відокремлює повернення з продажу.

💡
Цей же принцип стосується сум. Не «порушити» збережена сума на поточну вартість платформи: рахунок, що опинилися з рахунку, зараховується в законному порядку 0 у часі оплати, а гроші вже записано при скороченні замовника. Відновлення вартості особи підраховано вдвічі.

Договір класифікації

OpsIQ вирішує життєвий цикл , до, in \OpsIQ\Commerce\SaleLifecycleClassifier. Роз'єм проголошується тільки що власний майданчик слова, що за допомогою реалізації \OpsIQ\Connectors\SalesLifecycleConnectorInterface::salesLifecycleVocabulary(), а потім виклики спільного класифікатора. Не перейдемо причини.

Декларація лексики, делегування рішення
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,
]);
💡
Передбачається фіксована і загальна: явна, потім повернена/вимкнена, після чого кредит, далі оновлення - це_замовлення, потім повторення, потім придбання, потім невідомий. Оновлення сидить над перевіркою замовлення, оскільки платформи підвищують порядок поновлення теж; перераховують сидять нижче його тому, що перший рахунок нової підписки несе рекурентний тип лінії. На неоднорідному порядку продавець нахиляється до доходів і від трубопроводу.

Ознайомитися з цілою лексикою платформи

Це негайна причина, яка коштує найбільш і виглядає найменш неправильно. WHMCS роз'єм відповідності ['hosting','addon','domain'] — список, який прочитав у комплекті. WHMCS не випромінює леза Domain тип для реальних доменних ліній; він випромінює DomainRegister, DomainRenew, DomainTransfer, PromoHosting, PromoDomain, DomainAddon* і Upgrade. Всі вони впали список до unknown: 1,288 рахунки, три роки, без помилки і відсутності лінії входу.

Кожен новий імпорт клієнтів історії через заправку з'єднувача, так що класична помилка не впливає на один робочий простір — це впливає на кожен робочий простір, який коли-небудь борт через цей роз'єм, в даний момент він спочатку дивиться на їх трубопровод. Візьміть словник з документації платформи або перепису живих даних і співвідношенні сімей шляхом вирощування ксерокс Так, що не бачучи нікому, але класифікує своїх родичів замість ваніщення.

💡
Практичний контроль: підрахувати, скільки власних рядків землі на невідомому. Здоровий роз'єм продажів класифікує майже все. Стійкий потік невідомих практично ніколи не даних, які ви не маєте — це словниковий запас, який ніколи не навчається читати.

Ремонт імпортної історії

Кожен відправлення OpsIQ роз'єм продажів реалізує це — 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() Використовуйте те, що за замовчуванням викопайте ваш роз'єм вже має. tools/crm_backfill_sales_lifecycle.php потім відремонтує імпортну історію вашого роз'єму без коду з'єднання: висихання за замовчуванням, спиниться і перевіряє ряд перед написанням, перерізаючи через нездійснювальну під проводом, і він ніколи не пише про це не вдалося прочитати відповідь.

💡
Якщо ваш роз'єм не може перечитати останні записи — це не можна, щоб він не захопив метод. Ступінь повернення невідомого погіршується, ніж не реалізований: задньої заправки буде повторювати хороші ряди як однокласний і звітний успіх. Впровадження лексики тільки інтерфейсу.
💡
Детальні посилання на пакет, що містяться в роз'ємах / Коннекторах / EVENTS. md та роз'єднувачів/PLATFORM_CONNECTORs. mD у власних розподілах джерелах.
Конектори

Договір про подорож

Розвідка про подорожі приймає один конверт-невтральний захід з віджету браузера, вбудовані роз'єми, SaaS Bridge, ринкові пакети та вихід конструктора. Платформові імена переведені на межі; воронку, атрибутіон і Код розвідки сайту споживає тільки канонічні події.

Ізоляція та довіра

Екактний одномісний ключ

Кожен захід прив'язаний до автентичного домену сайту_key. Роз’єм повинен прийняти цю ключ від ConnectorRegistry або його автентифікованої кінцевої точки, ніколи не від ненадійного запиту тіла. Домені зберігають окремі записи; доменна група є тільки чит-часовим агрегатом.

Ідемпотентний стиль

Захід_id необхідний для роз'ємів і повинен бути детермінований для того ж рідного заходу. Вишукування, вебгоки та заправки оновлення однієї події, а не дублікати поїздки або продажу.

Ім'я користувача та прізвище

Збереження джерела_event_name для усунення доказів та несправностей, потім на карті його до події_name_canonical. Основні аналітики не повинні гілуватися на роз'ємі шламу.

Серверні дані виграші

Перегляд браузера може почати або заважати подорож. Ауттентизовані події роз'єму підтверджують реєстрацію, логін, платіж, покупка, оновлення, повернення та інші кінцеві результати. Важкий сайт-підйомний корреляційний токен є найсильнішим приєднанням; недійсний токени відхилений і його вбудовані ID не довіряють.

Конфіденційність

Надіслати лише ідентифікатори та поля, необхідні для оголошеної подорожі. Дотримуватися параметрів згоди, маскування і зберігання. Ніколи не додавати до властивостей дані про користувача, картку, секрети розпізнавання або приватний текст повідомлення.

Канонічний конверт

Конвертація подій
{
  "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"}
}

Канонічна податкова довідка

Використовуйте найяскравіший ім'я. Підтримані сім'ї включають сторінку залучення/CTA події; запис облікового запису, логін, MFA та пароль скидання; свинцево-формні етапи; продукт, кошик, чекаут, платіж, покупка, підписку, оновлення та повернення; рекламні враження та перетворення; сприяння центруванню, чату і квитків подій; заходи безпеки; і імена просторових користувацьких заходів. Типові назви терміналів є account.signup.succeeded, account.login.succeeded, lead.form.succeeded, commerce.payment.succeeded, commerce.purchase.completed, commerce.subscription.renewed і commerce.refund.completed.

Налаштування браузера, підтвердження та відмова

Віджет може працювати без роз'єму, за допомогою дотримання структури сторінки, формувати дії, результати DOM та журнал подорожі відвідувача. Це означає явно оцінюється як і раніше або кольорово. Роз'єм додає авторитетне підтвердження сервера і може перенести його на ту саму спробу браузера. Поступ першого зберігається як кандидат; він стає покинутий тільки після вікна неактивності в UI і лише коли немає пізніше відновлення або успіху.

Атрибут і дохід

Атрибутон воліє дійсний підписаний кореляційний токен, потім точний шлях, спроба, сеанс або посилання на комерцію, а потім згодований граф ідентичності і, нарешті, обмежений поведінковий матч. Незрівняні продажі залишаються неприпустимими. Багатоточні вага приводу повинні бути загальним 1_. Site Intelligence приписані доходи читає цей під проводом; кредити, гаманці топ-ап, Token top-ups і Add Funds ніколи не купують перетворення. Роз'єм FX поведінка залишається контрольованою це налаштування роз'єму.

⚠️
Модель Атрибутіону, вікна пошуку, прямий-трафний хід, мінімальна впевненість, час відліків та визначення воронку є політикою УІ. Код роз'єму не повинен їх зашифрувати.

Роз'єм проявляється і будівельник

Роз'яснення щодо маршруту
{
  "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"
    }
  }]
}

Декларувати тільки можливості пакету дійсно доставляє. Конструктор роз'ємів перевіряє картографію і створює той самий адаптер платформи, який використовується в перших сторонах пакетах. Розвага приймає одну акцію або обмежену партію 100 через створену автентичну інтеграцію кінцевої точки.

💡
У торгівлі є фінансовий джерело правди. Контракціонний міст в торговельній мережі публікує результати і відмовляється від наявного idempotent під керівництвом, тому один платіж ніколи не стає двома продажами.
Конектори

Як працює робота з діями AI

Кожен роз'єм проголошує набір дій: що AI може здійснюватися через зовнішній майданчик. Дії є містом між "ІІА говорить" і "ІО робить".

Дії AI
Як працює робота з діями AIЗа бажанням замовника на карті типу видалення, а потім контрольний список: перевірка дозволу, підтвердження, API з.Як працює робота з діями AIробоча зона"Нехай мій підпис"КлієнтА. А.cancel_subscriptiondeleteпідтвердженняпарам: підписка_id (з контексту)ТИПКИreadЦЕНА ЗА ЧАС:deleteКонтроль та контроль роліВи підтверджуєте діюAPI звітали1DECLAREDКожен роз'єм списки дій2GATEDДозвіл + підтвердження3THEN RUNAPI виклик, результат назад
Запит стає заявленою дією (видом читання/відведення) яка є дозволом на вишукування, підтверджено, потім виконано та повідомлено.

життєвий цикл дії

1
Клієнт просить щось

"Чи можу я підписатися на підписку." AI визначає це вимагає дії "cancel_ передплата".

2
АІ перевірить дозволи

Чи можливо це дій? Чи є вона ввімкнена? Чи має поточний користувач правою роллю?

3
Параметри AI збираються

В рамках проекту «АІнтеграція» набирає чинності рішення про надання послуг, які надаються в Україні.

4
Підтвердження

Для деструктивних або високопрозорих дій AI просить підтвердження перед виконанням.

5
Виконавець

Акція діє на зовнішню платформу API_.

6
Результат

АІ повідомляє про результат замовника.

Типи дії

Читати дії

Перегляд даних без зміни нічого. Приклади: список_orders, get_customer. Сейф, не потрібно підтвердження.

Написати дії

Створіть або змінюйте дані. Приклади: створення_ticket, оновлення_order. Може знадобитися підтвердження.

Видалення дій

Видалити дані. Приклади: скасувати підписку. Завжди потрібно підтвердження.

HTTP дії

Визначені в діях.json, генерик API виклики, визначені декларативно.

мітки для інвалідності

Додатково вказана в режимі «здатність» поле в дії.json, роз'єм-невтральний клас тег (наприклад, "tickets.world) за квиток зчитування/lookup, "ticket_create" для відкриття квитка).OpsIQ Зручності у всьому класі по кожному роз'єму: квиток, який прочитав з AI, коли оператор вимкнено Awareness і створення квитків зарезервований для OpsIQ- власний композитор (наприклад, інструмент для створення роз'єму не може його дублювати). Розгорніть його і ваші конформи з'єднувача.OpsIQ ніколи не потрібно знати ваші імена дій. Конструктор роз'єму визначає його як випадання відповідальності за дію.

Кодові дії

Реалізовано в PHP у класі роз'єму. Повне керування логікою.

Приклад визначення дії
{
  "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" }
    }
  }
}
Конектори

Побудувати роз'єм

Конструктор Connector дозволяє створювати повний роз'єм для будь-якої платформи з REST API. Ніяких кодувань, необхідних для базових роз’ємів.

Побудувати роз'єм
Конструктор з'єднувачівФорма роз'єму без коду: ім'я, тип auth, base URL_, запис дій, контрольний тест і кнопка публікації.Конструктор з'єднувачівробоча зонаКонструктор з'єднувачівІм'яМоя платформаАутиOAuth 2.0(PKCE)База URLhttps://api.example.com/v2ДіяGET/customers → список_customersТестуванняРоз'єм пакета1NO-CODEІм'я, auth, base URL2ANY APIКлючові слова, ведмедя, Basic, HMAC, OAuth3PUBLISHInto /connectors/<slug>/
Точка будівельника на будь-якому REST API. Настроювання аути, бази URL і дії, перевірте його та опублікувати робочий роз'єм. Не потрібно коду.

Повна пропозиція API покриття

Кожен генерований API роз'єм може піддавати окремий рідний API Читати і рідний API Написати дії. Привабливі дії залишаються кращими; надані в кінцевих пунктах керування активами, що приводяться пізніше. Режим роботи підтримує REST, GraphQL, JSON, форма, XML, сирі та багаточастинкові органи, з обмеженою піхотою,API-версія заголовків і idempotency при зберіганні облікових даних всередині параметрів роз'єму робочого простору.

⚠️
Пакети маркетплейс виводяться з /marketplace_connectors а також в комплекті /connectors. Підвищити варіант пакету, відновити контракт і документацію, виконувати конформаційні тести, потім перезаписати та публікувати нову версію Marketplace.

Конструктор з'єднувача

У майстра є шість кроків, які відображаються як вкладки по верхній частині. Ви можете перестрибати між ними вільно і Зберегти проекти в нижній частині тримають роботу.

1
Ідентифікатор і профіль

Назва, стропи, опис та іконка, потім виберіть профіль договору: Стандарт API_, Торгово-промислова палата, Довідник, поштова скринька, Сайт розвідки, СааС міст, локальна PHP платформа або Платформа без API коли платформа не працює нічого, і OpsIQ має встановити міст. Профіль вибирає повну можливість початкової точки; ви все ще можете налаштувати індивідуальні можливості.

2
Аути

Підберіть автентичність шаблону, який використовує платформу і заповнює його поля. Вкажіть реальні тестові дані тут, а також: вони використовуються для перевірки з'єднання на наступному етапі, і вони не зберігаються після публікації.

3
Тестування

Зареєструватися API бази даних URL і перевірте кінцеву точку, після чого запустіть тест на підключення до Інтернету через облікові дані з покрокового запису 2. Визначте всі дії, якщо ауто або підстава URL невірно, кожна дія, яку ви напишіть після того, як буде відмовлено від тієї ж причини, і ви будете б відмовитися від неправильної речі.

4
Акції

Визначте кожну операцію: ім'я, HTTP метод, кінцевий шлях, параметри, відповідь поле картування і налаштування надійності описані нижче. Ви можете запустити кожну дію індивідуально проти жити API з цього кроку.

5
Тригери

Мапа сайту, що надсилається на сайт OpsIQ події, так що на Вашій платформі можна розпочати роботу OpsIQ.

6
Огляд, контракти на підприємств і опублікування

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>/.

⚠️
Видання не запускається у вигляді конформаційного пакету. Публікація діє тільки в дійсності форми майстра і видає попередження, що не блокуються. Повний комплект — проявляється, можливості файлів, ідентичність-роз'ємний контракт і контроль мосту-скидку — працює при натисканні сухої та ще раз в установці часу. Натисніть Сухий пуск перед вами судно, кожен раз.

Що таке видання, що форма не показує вас

П'ять поведінок генератора дивує людей. Ні – це помилка; всі вони будуть коштувати вам вдень, якщо ви зустрінете їх випадково.

У першому читанні вирішите прохід: чи працює платформа API?

Відповідайте його на крок 1 за допомогою вибору режиму доступу даних (або "Платформа без" API"профіль". API режим декларацій native_api and emits the <slug>_api_call passthrough. Bridge mode declares platform_bridge замість і струпи native_api навіть якщо у старшому специфікаціях, що його перенесли, тому проявляється, сформований клас і експертиза docs не може згодні. ai_brain_aware додається як спосіб.

СИЛЕНЦЯ "У наявності API"

The Builder follows your answer; it does not work the truth out for itself, and the default when nothing is said is API mode. So a no-API platform must ACTIVELY say so — pick the "Platform with no API" profile, set data access to bridge, or tick platform_bridge; any one of the three is enough and they cannot contradict each other. Skip the question on a platform with no API and you are back to the old failure: a dead <slug>_api_call the model keeps reaching for. This used to be stamped unconditionally, so the trap is now escapable rather than gone.

Тестування з'єднання за замовчуванням до GET /ping

Якщо ви залишаєте перевірку порожнім, конструктор пише /ping в генерований роз'єм і в профіль.json's test block. Практично немає реальної платформи, так що тестове підключення не працює з HTTP 404 на кожній установці і читає, як клієнт неправильної конфігурації, а не дефекту пакета. Встановлюємо контрольний шлях, який ваша платформа фактично відповідає. Для містового роз'єму вкажіть його у власній діагностиці кінцевої точки — це доводить весь ланцюг в одному виклику: мост розгортається, ключові сірки, а міст може досягати бази даних.

Відновлення все ще перезавантажує свої ручні речі

Можливості, які зараз слідують відповідь на доступ до даних, тому ті, що більше не drift. Все ще все ще створює: редагувати ContextProvider. php або будь-який інший введений файл і наступний публікує його замінює. Один захищений виняток є містовим файлом — майстра тільки перезавантажує міст, який несе власний маркер, тому рукописний один залишається окремо.

Передрукувати файли видалення

Якщо ви не захочете можливості і наступне публікуєте видаляє файл провайдера. Ручні засоби до будь-якого створеного файлу — ContextProvider.php над усім — перезаписуються без попередження. Скопіюйте налаштування спочатку або введіть власність на пакет, видаляючи .opsiq-білдер.json(після чого майстер більше не буде керувати ним).

gitignore - це завжди превенція

У майстра немає контролю за ним. Пакет, призначений для суднових перевезень, оскільки виробництво має бути змінено вручну в налаштуваннях.json — і що відредагувати поломки підпису, тому перевизначте після

Підпис доводить цілісність, не походження

Пристрої, які визначаються власним симетричним ключем. Це визначає тамперія. Не доведено, що він написав пакет і будь-який інсталяційний холдинг, який є одним з ключових слів, може виробляти той самий підпис. Порада локально підписаного пакету як самопризначений.

Схилкі зіткнення тільки перевіряють в одному дереві

Видавництво відмовляється від слиги, що вже існує під/connectors/.Не дивиться на/marketplace_connectors/,так само, як і ручний перший пакет з тим же шламом може закінчитися тіньовим.

💡
Майстер не має досвіду, які є частиною. Для вас з назви, опису, типу та дій, які ви визначені, і він завантажується в AI при включенні роз'єму.

Визначення дії (покрокова 4)

Кожна акція має наступні налаштування. Тільки перші чотири необхідні; контроль за рештою, який може працювати і як ретельно.

Ключниця і етикетка

Ключові слова: як AI-зображення; етикетка, яка людина читає. Ключі називаються просторими з роз'ємом шламу автоматично, тому два роз'єднувачі можуть мати "списки" без узгодження.

Спосіб HTTP

ГЕТ, ПСТ, ПАТЧ або ДЕЛЕТЕ.

URL доріжка

Додаток до бази URL. Використання {name} для власників місць, наприклад /opportunities/{id}/stage

Параметри

Для кожного параметра ви також можете вибрати, де він йде: тіло, стежка, кішка або головки. Параметри шляху заповнюється {placeholder}; параметр запитуваний до URL.

Відповідна карта

Скажіть, що поле в JSON відповідь означає, що це ім'я замовника, яка є електронною поштою, яку є замовлення. Це те, що дозволяє AI читати дані вашого платформи, а не вгадувати на ньому.

Хто може використовувати його

Ваша команда (адміністрація AI), підписаних клієнтів (розумний чат), як і письмовий помічник. Акції клієнтів працюють тільки для підписаного клієнта, так і в особистих цілях автоматично не можуть запитати про інший клієнт.

Заявка на вимогу

Людину необхідно затвердити до виконання дій.

Деструктив

Відзначає дію, як видалення або зміни стану. Використовуються для попередження перед цими ходами.

Обов'язкові документи

Адміністратор повинен мати дозвіл на AI для запуску дії від їх імені; повний адміністратор завжди проходять. Виберіть з керованих_інтеграцій, керувати_загальна, управління_обмеження, управління / продаж / мост, керування_попадання, управління &behavior, управління _місії, управління -dangerzone, відповідь_to_chats, escalate_to-ticket, send_agent_email, або нікому, що означає будь-який автентичний адміністратор.

Опис / АІ підказка

Додатково, але варто писати. Вона розповідає AI при досягненні цієї дії, наприклад «Використовувати це коли адміністратор просить змінити стадію угоди». Хороший підказок - різниця між дією AI використовує правильно і один ігнорує.

Можливість

Необов'язковий тег класу, або квитки (читання квитка або пошук) або квиток_create (відкривається квиток). Перевірка дозволяє OpsIQ Перевірити весь клас одночасно, наприклад, ховання квитків прочитано при відвідуванні оператора AI квиток.

Список шляхів

Додатково. Для кінцевих точок, які повертаються список, пунктирний шлях до масиву, наприклад дані або дані. items

Шлях до помилки

Необов'язково. Поле тіла, присутність якого означає виклик не вдалося, наприклад помилки.message, корисний для APIs що повертає HTTP 200 з ладу.

Запуск

Кожна акція може бути запущена в життя API з цього кроку, так що ви можете виправити неправильний шлях або назву поля перед тим, як хтось інший використовує його.

⚠️
Написати дії захищені за замовчуванням. Будь-яка дія з використанням POST, PUT, PATCH або DELETE починається, що вимагає дозволу на управління_інтеграції і Підтвердження людини перед цими роботами. Це свідомо. Нова дія запису не закривається, а не дозволяючи AI змінити дані без нагляду. Ви можете змінювати як на дії, але змінити їх знати.
💡
Щоб бути відзвітним з чату, дія повинна бути прочитано втільки: залишити як Вимагати підтвердження і знищити неприйнятне. Дія може викликати, що також змінює стан не те, що майстер дозволить вам здійснити відправлення випадковою.

Пошук сайтів (покроковий 5_)

Крок Triggers дає вам вебхоок URL для реєстрації з платформою, і виправляє будь-яке запит, яке прибуває на ньому.

Заголовок підписки

Заголовок екрана, наприклад X-Hub-Signature-256.

алгоритм підписки

HMAC-SHA1, HMAC-SHA256 or HMAC-SHA512.

Схема підписки

Simple, a plain hex or base64 digest. Or Stripe-style, the t=…,v1=… format used by Stripe and several platforms that copied it.

Префіксація підписки

Необов'язково. Деякі платформи префіксують травлення, наприклад sha256=. Залиште його порожнім, якщо ваш не буде.

Картування подій

Мапа сайту, яку ви надаєте OpsIQ Подія повинна піднятися.

Автореєстрація веб-гока

Якщо ваша платформа має API для управління власними веб-договорами, Вам не доведеться реєструвати URL вручну. Відкриті Автореєстратор цього веб-гоката на увімкнено і вказуйте його на два дії, які ви визначені у крокі 4:

Створення веб-догляду

Ви можете використовувати цей параметр, який дозволяє роз'єм. Ви віддаєте назву параметра, яка несе URL_, додатково один, що здійснює список подій та шлях у відповідь, яка тримає нову ідентифікатор вебхока.

Видалити веб-сайт дії

Викликається, коли роз'єм вимкнений, використовуючи id, що захоплюється вище, тому відключення роз'єднувача також зупиняє вашу платформу надсилання на мертвий кінцевий пункт.

Можливості, які можна переключати на

Профілі та можливості визначені Договіром Роз'єму 2.2_. Випромінювані та декларативні можливості, які видаються безпосередньо; можливості підприємства генерують EnterpriseExtension.php трафаретний з робочим графіком.

Акції

Операції з AI можуть працювати на вашій платформі: пошук замовлень, пошук клієнта, виписка повернення.

Тригери

Отримуйте вебхоти з вашої платформи та перетворюйте їх у OpsIQ заходів.

AI квитки

AI Triage і відповідь Copilot на квитки, які залишаються на вашій платформі. Підберіть кінцеву точку, яка повертає квиток з його відповідей та на карті полів; OpsIQ прочитає нитку через неї.

Поштові скриньки та контакти

Покажіть адресу електронної пошти замовника на свій час, надсилайте з угоди та сконцентруйте свою адресну книгу в адресну програму OpsIQ CRM.

Імпорт клієнта

Сторінка через список клієнтів і імпорт кожного з них OpsIQ контакт. Це те, що кнопка імпорту працює.

Контекст

Пошайте дані про роботу з вашої платформи в кожну розмову зі штучним інтелектом.

Зручність

Виконайте роботу, в якому клієнту відвідувач і покажемо свій профіль та покупки на квитку.

Продаж і зарахування

Заходи до запасів корму та МРР в OpsIQ _Dashboards.

Вхідні квитки

Перевірити квитки і електронні листи вашої платформи, доставляючи вебхоок в OpsIQ support Threads.

Відправлення відповідей

Почати OpsIQ персонал відповідей на платформу, що випускається нитка.

Користувачі синхронізації

Імпорт облікових записів персоналу в OpsIQ admin користувачів.

Sync відділи

Імпортувати відділення підтримки OpsIQ.

Сприяє цільовій та продуктовій подачі

Просування на сторінках сайту, які ви знаєте про людину та продаєте свої реальні продукти в рамках акції.

Опитування провайдера

Випробуйте дані про сервер, які ви можете перевірити, втекти змінні та зв’язану сторінку з клієнтами CRM Outreach через виділені сторінки одержувачів. php. Це не використовує режими просування.

Native IP блокування

Коли OpsIQ блоки IP Зателефонуйте свій власний блок платформи API так, щоб блок був занадто обмежений.

Події безпеки

Отримуйте заблоковані IP загрозові сигнали від OpsIQ.

Знання платформи для AI

Кожен роз'єм ви будуєте кораблі коротким посиланням, що ваша платформа і які його дії роблять. OpsIQ Ввімкніть свій роз'єм, щоб зрозуміти вашу платформу, а не просто побачити список імен акцій. Це генерується для вас.

API проміжок

Ваш роз'єм завжди отримує загальний виклик, тому AI може досягти кінцевої точки, ви не визначили типовану дію. Використовуйте задані дії, де ви можете; це втечу люка.

Канонічний роз'єм контракту 2.2 посилання

Версія договору: 2.4 · 57 capabilities · 8 profiles.

Профіль роз'єму

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.

Канонічні можливості

маніфестація

Universal actions. Capability version: 1.0. Mode: generated. Runtime methods: registerActions. Package files: actions.json.

тригери

Inbound event triggers. Capability version: 1.0. Mode: generated. Runtime methods: handleWebhook. Package files: actions.json.

вебка

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.

КОМПЛЕКТИ

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.

айдентика

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.

августка

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.

Торгівля

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 capability provider (calendar, enrichment, telephony or customer data). Capability version: 1.0. Mode: declarative. Runtime methods: crmCapabilities. Interfaces: OpsIQ\Connectors\CrmCapabilityConnectorInterface.

block_registry

Remote sender block-registry synchronisation. Capability version: 1.0. Mode: declarative. Runtime methods: blockSender, unblockSender, isSenderBlocked. Interfaces: OpsIQ\Platform\BlockRegistryInterface.

inbound_comment

Inbound comment ingestion. Capability version: 1.0. Mode: declarative. Runtime methods: handleWebhook.

outbound_note

Outbound private note. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

outbound_notification

Outbound notification delivery. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

oauth

OAuth 2.0 authorisation. Capability version: 1.0. Mode: generated.

reviews

Review ingestion and response. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

локальна

Local search/location data. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

кішка

SEO data and actions. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

site_intelligence

Site Intelligence provider. Capability version: 1.0. Mode: declarative. Runtime methods: siteIntelligenceProviders. Interfaces: OpsIQ\Connectors\SiteIntelligenceConnectorInterface.

аналітика

Analytics 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.

⚠️
Технічні умови будівельників залишаються авторитетним джерелом. Покладіть конкретні правила бізнесу на створених пунктах розширення; цикл життєвого циклу пакета, черг, робітників, міграцій та конформаційних тестів залишають конструктором.

Налаштування надійності на кожній дії

Повторні спроби

Скільки разів оплатити не вдалося, за допомогою зворотного зв'язку, що подвоює кожну спробу. Тільки часові маршрути, 429s і помилки 5xx перевищені; 4xx - це ваша помилка запиту та повторення, що вона просто буде спалювати ліміт швидкості.

Обмеження курсу

За хвилину стелі для цієї дії, тому зайнятий спуск не може забивати вашу платформу. Залиште його на 0 для відсутності ліміту.

Розклад

Як довго чекати вашої платформи до початку.

Підтвердження

Зажадайте людину затвердити до дії. Використовуйте його для будь-якого руйнівника.

Типи аутентифікації

Кроки 2 пропонує сім шаблонів. Підберіть той, який відповідає вашому майданчику API документація, генератор видає право клієнту HTTP.

API ключ в заголовку

статичний ключ, відправлений як фіксований заголовок, наприклад X-API-Key. Ви даєте ім'я заголовка та позначену форму адміністратора повинні показати. Це надсилає ключ як тільки заголовок; якщо ваш API expects the key як параметр запиту замість того, щоб використовувати спеціальні заголовки або роз'єм повного коду.

бендик для в'язання

Token sent as Authorization: Bearer <token>. Common for modern APIs.

Базовий ют

Ім'я та пароль, base64-encoded в заголовок авторизації. Ви обираєте етикетки як полів, що показуються на форму адміністратора.

HMAC-підпис

Підписано публічний ключ плюс секрет, з яким зареєстровано запит. Ви даєте підпис заголовка, головний заголовок і таймер заголовку вашої платформи очікування.

OAuth 2.0 (клієнтні дані)

Сервер-сервер, без взаємодії користувача і не перенаправлення. Ви даєте токен URL та додаткове об'ємне значення; адміністратор надає ідентифікатор клієнта і секрет. Використовуйте це при проблемі вашої платформи, що стосуються облікового запису, а не до особи.

OAuth 2.0 (Додаток підключення)

Заява-кодовий потік з PKCE, для Stripe, Shopify, Slack Програми QuickBooks. Ви даєте авторизації URL, токен URL і обсяг. Після публікації адміністратор натискає підключення на роз'єм, авторизується на вашій платформі та OpsIQ зберігає освіжаючі токени та м'ятні тони доступу на вимогу. Перенаправлення URI зареєструватися у Вашому реєстрі OAuth Додаток відображається на сторінці налаштувань роз'єму.

Користувальницькі заголовки

Безкоштовна форма JSON заголовок карти для будь-яких вище шаблонів, наприклад {"X-API-Key":"{api_key}","X-Tenant":"{tenant_id}"}. Кожен учасник отримує поле на бланку адміністратора.

💡
PKCE застосовується до потоку Connect-button. Потокове навантаження клієнта не має перенаправлення і відсутності покрокового користувача, тому PKSE не поширюється на нього.

Стилі вагінальних

Оффсет

Використання офсетних і граничних параметрів. Приклад: ?offset=100 Іміт=50.

УКР

Приклад сторінки: ?page=3&per_page=50.

Кюрсор

Використовуйте токени курсора з попереднього відгуку.

Головний редактор посилань

Використовуйте заголовок посилання з rel="next".

Розширений: користувацький PHP-код

роз'єм. php RETURNS екземпляр. Не проголошуйте названий клас, який OpsIQ hunts for. Імена нижче метода є тими, які ConnectorInterface вимагає; отримувати один неправильний - жирний навантаженні, не попередження.

Роз'єм. php — реальний договір, мінімальний і нездатний
<?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.

Дзеркальні квитки в рідну систему квитків

Якщо ваша платформа володіє квиток, віддзеркаліть його в OpsIQ з вашого роз'єму за допомогою касета-інструктора вашого роз’єму успадковує (відтворюйте для нового квитка, додайте до них на наступні дії). Визначте та підпишіться на універсальні події квитків у вашому роз'єднаному форматі subscribers() метод, ticket.created, ticket.replied, ticket.updated, ticket.deleted. Авто-реплі, ескаляції, SLA і CSAT всі гачки однакових подій, так що ви успадкуєте їх без додаткового коду.

Якщо ви ручите ticket.deleted, ви також можете обробляти злиття. Видалення зливних квитків несе merged_into і не відправлено в роз'єм, який заявляє ticket_merge; злив прибуває один раз, як ticket.merged замість того, щоб ви могли об'єднатися на вашій платформі, а не закрити зливний квиток. Див Можливості злиття квитків (Contract 2.4).

Скажіть, хто написав повідомлення про відкриття

Квитки завжди для Клієнт, але повідомлення про відкриття може бути написано КОМПЛЕКС: агент, який відкрив квиток на від імені замовника або досягається проактивно. Кожна допомогаєдеска підтримує це, тому вона є частиною універсального ticket.created договір, а не якийсь роз'єм вирішується в приватному порядку.

author_type

Клієнт (за замовчуванням) або адміністратор. Визначте його і клієнт приймається.

author_id

Під час авторизації: незважаючи на те, що клієнт id.

author_name

Назва Агента або відділення. Повернутися до "Стуф".

author_email

Адреса агента. Вже клієнт. Повідомлення про роботу в рамках електронної пошти клієнта - звітність та помилка перевірки.

Це не косметичний. Прочитати споживачі author_type щоб вирішити, чи є його робота. Про це повідомляється про роботу персоналу client листя автоматично, що може відповісти на повідомлення про ваш власний агент писав, і робить вашу платформу ехо цього відкриття вигляд як свіже повідомлення клієнтів, яке потім землі як дублікати і засліплює квиток до , з. Навігуйте сигнал платформи на його в роз'ємі Нормалізація заходу, ніколи не в споживачів.

централізоване блокування

Коли агент блокує відправника, що діє через Що канал відразу (e-mail, чат, портал, віджет і кожен роз'єм близнючки), оскільки блок буде виконуватися центрально, перед будь-яким роз'язком бачить повідомлення. Ваш роз'єднувач успадковує його, зробивши нічого. Немає вхідних робіт для реалізації і ніякого способу отримати її неправильно.

Додаткова половина кицька: Розкажіть вашу платформу клієнт був заблокований тут. Впроваджуйте його тільки якщо ваша платформа може висловити щось еквівалентне.

можливості()

У разі необхідності введіть блок_реєстри і клас необхідно здійснити BlockRegistryInterface. прапор є заявою; інтерфейс є гарантією. Реєстр вимагає як для того, щоб зробити процес реєстрації.

blockSender($b)

Одержує свого роду (email protected)ip_), значення, причина, admin_id, expires_at, site_key. Повертаємо вашу увагу на те, що ви можете перевірити?].

unblockSender($b)

Не потрібно нічого не блокувати, а не помилитися.

isSenderBlocked($b)

Для розвідувальних робіт, тому про це повідомляється, що не відкрите замовником. Повертаємо вашу увагу на те, що вони заблоковані?].

Значення результатів

ок

На Вашій платформі. Включаючи віддалений_рефл, коли у вас є можливість записувати.

noop

Вже в запрошуваному стані.

unsupported

Ваша платформа не має еквівалентної концепції. Не пропустіть помилку.

не вдалося

Ви можете зробити це і вирушили неправильно. У тому числі детально, вона землі в слуховій причепі.

Деклінінг – це вірна відповідь. Багато платформ не мають поняття «блокувати цей відправник» і пропонують тільки підвіску ACCOUNT, яка зупиняє вексельні системи, логіни та послуги, а не просто підтримує пошту. Натиснення «агент блокував спам-адресу» на "закривши цей обліковий запис клієнта" дозволить одному з оподатків блокування припинити оплату послуг клієнтів. Якщо це єдиний важіль, у вас є, повернення unsupported і залишити його самостійно.

Деклінінг також охоплює випадок, де платформа Можливість нехай вам не дасть. Перевірте для API_, не функція: важіль, який існує тільки в адмінці платформи UI є важеля вашого роз'єму не має.

Працював приклад · Zendesk (довідкова реалізація)

Читати далі connectors/zendesk/connector.php alongside this. It is short, and every branch below is a decision you will face too.

електронна пошта → ok

ПЕТ /api/v2/users/{id} з призупинено = true. Присуджено нові запити користувачів, які дивують на підвісні квитки замість відкриття одного, дійсно така ж ідея, як блокування відправника, і вона не зупиняється вексель через те, що Zendesk кінцевих користувачів немає. Повертає ідентифікатор користувача як віддалений_реф.

домен → непідтримуваний

Zendesk CAN призупинити весь домен, але тільки через призупинення: ключове слово в розділі « Admin Center» API пише, що поле. Функція існує; важіль не працює.

ip → непідтриманий

No Електронний номер IP блок.

Невідома адреса → noop

Zendesk не можна попередньо задавати адресу, яку він ніколи не бачив. Ніщо робити це не відмова, а локальний блок все ще зупиняється на квитку.

агент або адміністратор → непідтримуваний

Звернувшись до служби підтримки, ви зможете заблокувати колегу з програми.

Що останній ряд - це одна варта копіювання. Договір не може зупинити вас на карті блоку на щось руйнівне, тому кожен роз'єм повинен вирішити для себе те, що він відмовляється. Відмова прямо, з detail оператор може читати, побити обіє.

Повідомляємо чесно. Повідомлення про те, як кілька рядків ok. Це правильний результат, не зазор: блок домену все ще працює (в основному він письмовий); його просто неможливо віддзеркалити вгору. Повернення ok Якщо ви не змогли сказати, що оператор заблокував свою платформу, коли він ніколи не залишив OpsIQ.

Правила

Місцевий блок завжди перемагає

Ви можете не допустити блокування оператора, який блокує когось.

Не кинуться

Кидати лікують як непідтриманий і записаний. Повернути не вдалося з детальм, а тому причина виживає.

Бути ідемпотентним

За допомогою цього ж блоку можна буде проголосувати більше одного разу.

Повернутися швидко

Вентилятор-аут синхронний з оператором натисніть кнопку. Виконайте повільну роботу, а не пропустіть запит відкритим.

Не зателефонуйте

Ніколи не переблокувати в OpsIQ від вашого обробника. Реєструє роз'єм, але другий хмелю буде петля.

Що таке оголошення opsiq_block_registry_log (операційна, вид, значення, причина, адміністратор, походження, роз'ємна строжка, результат, деталь та часовий апарат) тому оператор може бачити блок прибув з вашої платформи, а не від агента, і який кожен роз'єднувач зробив про це.

Вкладення в пашах правильно

Рука attachments масив для створення()/addReply(). Кожен пункт несе файл в одній з трьох форм:

content_b64

Base64 байтів файлів RAW, використання для файлів за допомогою auth (найбільш вхідні випадки). OpsIQ Визначте його і перемістіть файл для вас. Найбільш портативна форма.

url / джерело_url

Громадський хост URL (наприклад, зміст Zendesk_url). Необхідно HTTPS; переходить на SSRF / контрольний список до його збереження.

stored_path

У вас вже записано посилання на файл (що виробляє носійський композитор).

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 Файли тільки (не байтів), тому надійний вхідний шаблон: читати байти, де ваш код вже працює (всередині платформи або з вебок корисного навантаження), base64 їх і перенести їх як content_b64 на заході.

Зняття (OpsIQ → Вашої платформи. Коли агент прикріплює файл, ticket.replied payload дає вам файли відповіді, як stored_path предмети під OpsIQ файловий магазин. Читати їх і натиснути в свій власний формат платформи, а також перевірити платформу docs, кодування питань: WHMCS застукала base64_encode(json_encode([[name,data]])) (JSON, не послідовно; Zendesk додано сирі байти до /uploads.json для токена потім набори comment.uploads; Gmail надсилання мультичастого/змішуваного RFC-822 JavaScript licenses API Веб-сайт raw; Amazon SES inbound attachments need the S3 receive action (the SNS path caps at 150 KB).

Віддалені платформи: API + webhook, ніколи не інші таблиці додатків

Якщо ваша платформа є окремий додаток або бази даних (все просп. СааС, віддалений WHMCS_, інший DB на одному сервері), не писати таблиці безпосередньо: база даних, що видає землі на будь-якому з'єднанні, активно і мовчно пропускає реальні рядки. Завжди: кицька = виклик підписаного платформи REST API (повіді, статус, відділ, видалення); вугор = Платформа POSTs підписаний вебок, ваш handleWebhook() виправляє її і вогневийшов ticket.* захід. Для зупинки дзеркальної петлі, теги, які ви штовхнете з маркером походження (наприклад, mirror_origin:'opsiq'); платформа, яка виводить її на вебху та ваш вхідний обробник пропускає власні види. Перевірте OpsIQEvents::isMirroredEvent() вгорі кожного обробника.

Стан дзеркала, пріоритет і відділ

Відповісти автоматично перемістити статус, агент відповісти → answered, a Клієнт відповісти → customer_reply; дзеркало, що таким же чином. Для чітких змін підпису ticket.updated і читати payload['changes'] (наприклад, {status:'closed'}).

Статус: OpsIQ' канонічний набір open, customer_reply, answered, in_progress, pending, closed. Тримайте невелику двосторонню карту на свій сайт словника, і переконайтеся, що ваш стовпець дійсно приймає значення, які ви пишете (an ENUM не вистачає значення, що німо скидається на порожній деяких базах даних. Відділ: OpsIQ відділ id несвідомий на боці, не надішліть. Надіслати дескриптор (name, email і slug) і вирішити її на власні відділеннях електронною поштою → ім'я → слига, так «Більшого відділу» землі в Ваше ім'я Відділ з питань закупівель замість загальний. Тригер на обох ticket.escalated і department_id змінити ticket.updated.

💡
Статус / пріоритет / предмет / департамент / видалення дзеркала закріплюється за допомогою переключних сенсорів (mirror_status_changes, дзеркальних_priority_changees, дзеркало_subject_images, Mirror_department_changeS, mirror_deletes) читати через спільні OpsIQ\Connectors\MirrorOptions Helper. Вбудувати, що блокувати в налаштуваннях.json і кожен роз'єм квитків-мірора читає окуляри однаково.

Посилання на квиток до товару / послуги

Якщо клієнт вибрав конкретний продукт при відкритті квитка, проконсультуйте підказку так, щоб агент бачить адресну картку (з одним кліком "перегляд інших товарів" модулем для відпочинку). Пройдіть будь-яку з них, щоб створити():

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

Платформовий сервіс-код, наприклад WHMCS S396 (сервіс) 396) / D11 (домен 11). OpsIQ Визначте додатковий тип-letter + id і відповідає Вашому списку послуг, з захистом типу, так що код домену ніколи не відповідає продукту тієї ж ідентифікатора. Виконайте відповідні рефлектори на кожному сервісі для точного матчу.

related_domain

Назва домену; відповідає підрядці на кожну деталь / домен.

💡
Побудувати список вкладень один раз, у формі вище, і OpsIQ ручки відпочинку: ведуться URLs Випробувано через базовий вміст base64, який зберігається і перезапущений для вас. Вам ніколи не потрібно писати на основі файлів, що зберігаються в режимі онлайн-платформи.
⚠️
Ключові слова, що містяться в нижній частині літери, цифри та низи. Конструктор приймає 3 до 80 Символи і також дозволяє точкам дії; 2 до 100 Символи без точки, тому тримати листи, цифри і джгути, і ви задовольняєте обидва. Додавання дії створює не маршрут AJAX, тому немає нічого регенерувати — переЗберегти роз'єм і він сигується.

Зробимо штучний інтелект

Ви не повинні заповнювати шість кроків вручну. Опишіть роз'єм у власних словах та OpsIQ_'s AI протягує всю специфікацію, переводить його через те ж саме реактора майстра використання і показує вам план перед будь-яким письмовим на диск. Є два місця для цього, і вони виробляють той же пакет.

У майстра

Відкрито Роз'єми→+ Додати роз'єм→Складання роз'єму. На кроці 1 ви побачите ✨Побудувати його для мене. Тип, який роз'єм для — платформа, що OpsIQ читати і що потрібно писати, а хто його використовує — додати API , якщо ви знаєте це, і натисніть його. Майстер заповнює кожен крок від проекту, і ви переглядаєте та редагуєте точно так, як якщо вам було набрано її. На стадії 6 з'являється така ж панель, як ✨Бібліотека з AI, щоб ви могли попросити зміни ("також читати рахунки-фактури") замість редагування полів.

Попит на сайт OpsIQ

Відкрити Зареєструватися OpsIQ копіювати в будь-якій точці адміністратора і сказати, що ви хочете. Вам ніколи не потрібно назвати дію або дізнатися майстра існує.

1
Запропонувати

For example: "Build me a connector for Trello. It should list my boards and lists, read cards, and create a card on a board. Trello uses an API key plus token." The copilot answers in a sentence and shows a Проект цього роз'єму Картка. Ваше повідомлення – це коротко, тому кладемо платформу, читання та запис у ній.

2
Підтвердити проект

Ніщо написано ще. Копіот продемонструє специфікацію, підтверджує його та відповідає плану: що робить роз'єм, дії він буде виводити (визначається примітки), припущення, що це зроблено, а питання, які вам все ще доведеться відповісти — зазвичай, які облікові дані для постачання. Проект запаркований під id і залишається доступним для 24 год.

3
Скажіть "збудити"

Копілот показує Збудувати 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
Вкажіть облікові дані та ввімкніть

Новий роз'єм публікується, але не ввімкнено, і він не зберігає секретів. Відкрийте його налаштування, введіть API ключ або токен, прес Тестування, потім Увімкнути. До тебе не робимо, це нічого не робить.

💡
Як і картки потребують натискання. На цьому етапі не пишіть нічого, крок побудови позначається деструктивним і завжди просить. AI не може публікувати роз'єм, включити його або ввести в себе облікову інформацію.

Що таке AI і не допускається робити

Реактор - стінка

У проекті, що відповідає точно таким же чином, а потім відмовляється у власних словах. Проект, який не виходить на пакет, і після чого відмовиться від власних слів.

Написання не існує

Проект іменує шаблон автентичності та поля налаштувань, ніколи не заявляє ключа, токен або секрет. Ви наповнюєте ті, що після того, як на сторінці налаштувань роз'єму.

Відповіді з питаннями, не вгадуються

Якщо ви не змогли дізнатися — ваш обліковий запис, який регіон, який з двох кінцевих точок підписує тарифний план — повертає питання щодо плану, а не мовного споживання.

Винайдена точка кінця не виходить на гучність

АІ не продемонстрував шляхи, але ніякої моделі є ідеальним. Неправильне шляху публікує як дія, яка не дає своєму живому тесту на крокі Дійс або перший раз він працює - це ніколи мовний успіх.

Пакет звичайний

Що це виробляється в звичайному пакеті конструктора: однаково сформовані файли, один і той же договір, відредагований у майстрах, вилучений з сторінки роз'ємів. Не існує окремого "AI роз'єднувач" типу.

Ваша модель робить проект

Якість використовується в моделі, яку ви налаштовується під Settings → AI. Невелика, дешева модель протягує правильний, але звичайний роз'єм і просить більше питань; більш міцна модель отримує більше кінцевих точок прямо в перший раз. Зміна її при конфігурації AI; нічого іншого не доведеться змінити.

⚠️
У співпільото можна виконувати дії, які вони реєструються. Якщо не відсутні дії конструктора роз'єму — план, який не містить їх, або роль без manage_connectors — копілот каже так, що не пропонує картку, яка буде відмовлено при натисканні.
Конектори

Продати через чат: рольова карта торгівлі

Роз'єм, який може продати — магазин платформи, система бронювання, платіжна шлюзія — декларує які її операції OWN відповідають OpsIQ- канонічні комерціальні ролі. Розгорніть його і з'являється роз'єм під налаштуваннями → Клієнт чат → Продається через чат автоматично; зупинити декларування і він зникне. Немає списку для реєстрації.

Файл: commerce_roles.json

Декларація про життя власному файлі при корені пакета — наявність файлу є претензією. Не можна жити в connector_contract.json: Цей файл регенерується пакувальними інструментами та його schema відхиляє незліченні ключі, тому вручну блок буде невірно валідувати і потім перезаписуватися.

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

Правила та чому

Ролі закриті словники

OpsIQ ніколи не заважає роль від імені дії. Роль, яка не заявлена, не існує — декларація є цілим договором.

В роботі необхідно бути одним з Ваших дій

Кожна операція, що надана в вашому браузері, повинна бути actions.json. Типо деклараційно за допомогою якого не можна працювати, і його поверхні замовнику як «Я можу перевірити це для вас» з будь-яким кутом.

Читання ролі ніколи не очок при руйнівній роботі

Читання ролей (каталог, наявність, цитата, пошук замовлення) необхідно на карті для операцій, які нічого зміниться на вашій платформі.

Письмова роль ніколи не картує на загальний рекордний режим

мітки order_create до сирої вставки таблиці — record.create, db.insert, recordCreate, будь-який заклинання, будь ласкаво просимо — відхилено структурно. Ряд, написаний безпосередньо обхідними цінами платформи, блокування запасів та підтвердження пошти, що дозволяє самостійно перевіряти систему.

Письмова роль заявляє операцію відновлення

Відповіді на "підписом моєї землі?". Найнебезпечніший час - це один після того, як ваша платформа вже була створена для замовлення; без відновлення вигляду тільки варіанти повинні кинути сліпих або втратити її.

Виконавці-замовлення ролі платежу здійснюють три додаткові зобов'язання

Також необхідно вказати пакет, який безпосередньо подає платіжний провайдер payment_profile (стратегії, країни, методи та Природні — незавершене середовище – як відбувається інтеграція тесту, що робить оплату на живому рівні. webhook_verify (відповідає реальний підпис провайдера; відмовлено у загальній секреті-компатії) та event_map (провідувач подій на канонічні). Мертжеве роз'єм, що тільки реалізує record_payment отримувати вже перевірені дані про он-лайн, не варто забувати про наявність шлюзу.

Як замовити клієнту з підключеного магазину

Роз'єм торгового класу та роз'єм платіжних точок. Під час З'єднувачі магазинуВибір запаковано всередині commerce_roles.json; зберігати та клієнт чат перепрочитати його в часі виконання. Видалення ролі або відключення / видалення роз'єму, отже, недійсним раніше надання пропозицій замість того, щоб залишити заставу повноваження позаду.

catalog_only

Карти catalog_search або catalog_get. OpsIQ може шукати та пояснювати товари, але не можна показати замовлення або підтвердження замовлення. Кожен пакет залишається на такому правдивому за замовчуванням до його власних типованих лапок і контрольних дій, які передають більш глибокий контракт і сертифікацію Marketplace; ніколи не втрачаючи транзакційну підтримку від імені платформи.

platform_checkout

Карти quote і platform_checkout. Комутаційні дії - не OpsIQ ядро-повернення checkout_url, checkout_reference і канонічна цитата URL повинен бути HTTPS, його ім'я повинні відповідати customer_ordering.checkout_hosts або HTTPS-хостинг, отриманий з checkout_host_setting, і цитата може жити не більше 15 хвилини. Виріб запобіжний, локально зібраний візок URL або повернення URL не є торгово-розвантажувальною можливістю.

direct_order

Карти quote, order_create і order_get, з order_create.recovery. Ядро освіжає цитату безпосередньо перед виконанням, подає ключ ідемопотенція, а також просить роботу відновлення після кожного невідомого результату до будь-якої птиці. Коли payment_flow=opsiq_gateway, вона повинна додатково на карті record_payment з авторським відновленням/редагуванням. OpsIQ Активно перевіряє транзакції воріт, відповідає сумі, валюті, торговому і замовленню, пише посилання провайдера один раз, потім читає рахунок-фактуру продавця / замовлення назад. A mark_invoice_paid Відхилено статус, оскільки він не несе платіжних доказів. Створюваний ефект повинен викликати власне ціноутворення, запас та порядок логіки підприємства; відмовляються від реєстрації бази даних.

Перевірка ідентифікації, і що оператор може змінитися

Коли OpsIQ власноруч, клієнт чату повинен досягати email_otp перед замовленням створюється — OpsIQ повідомлення електронної пошти 6-цифровий код і просить його. Це не те, що роз'єм віддає; це запевнення підлога ядра виконання вимагає для order_create.

Виняток, і хто контролює його

Оператор може прийняти неперевірену адресу ONLY, де ваш роз'єм оголошується fulfilment_presence: customer_present. Готельний гість має прибути, тому неправильна адреса непрямо передається чеку і номер все ще є. Деклар remote_delivery — відправлено, надана, завантажено — і перевірка потрібна як комплекти оператора, так як запасні листи по міцності цієї адреси окремо. Встановлення minimum_assurance або reversibility: irreversible Також видаліть можливість оператора пропустити його.

Як довго код триває

За замовчуванням, оператор настроєний 5 хвилин до 24 години. Клієнт бачить в собі баланс, що надходить у своїми руками timezone, не оператор. Витягний код говорить так само і пропонує новий, а не звітувати про недійсний код — клієнт набравши правильний-але-старий код не зробив помилки, і розказав їм вони пересилають їх навколо тієї ж петлі.

Що необхідно надати клієнту:

Ім'я та електронна пошта завжди потрібні і зібрані в першу чергу. Деклар address, phone і company as required або optional Щоб відповідати бізнесу: магазин, який посилює адреси, оголошує адресу; готель заявляє потреби телефону, оскільки гість не може викликати контакт з бронюванням. Помічник просить їх у розмові перед котируванням, а OpsIQ відмовляється розмістити порядок, що не вистачає необхідного поля. Будівельник пише нормалізовану карту, базову вказану, тому контракт на диску явно.

Коли створюється обліковий запис: обліковий запис_timing

at_order (default) дозволяє написати замовлення першим способом покупця. Деклар before_quote коли Ваші ціни на платформу враховуються — WHMCS Податки на власний профіль і котирування клієнтів у валюті клієнта — та OpsIQ створити обліковий запис через ваш обліковий запис customer_create Якщо ви хочете, щоб зробити це, то вам буде потрібно. Потрібні дані будуть передані в дію, якщо вони не мають значення для цього облікового запису. account_flow: connector_signup.

Помічник фетчі, не читається: клієнт_інструменти

Зробляючи замовлення, помічник ніколи не читає задану каталогом. Він викликає три інструменти — commerce_catalog_search (порожня кверія - огляд сімей продуктів; результати за межі, що вказані ім'ям), commerce_catalog_get для одного елемента в повному обсязі і commerce_quote, яка занурює сервер картки на підписану особу через ті ж стіни, шлях роз'єму завжди був. Один інструмент для дієслова, ваш роз'єднувач як параметр, тому магазин з шести роз'яснень отримує три інструменти, а не вісімнадцять. client_tools обмежує типовість; не означає, що кожен з них на карті catalog_only Підтвердження ніколи не є інструментом: кнопка картки на сайті, точна CONFIRM Команда на каналі, і нічого не говорить про витрати грошей.

Яка кількість елементів каталогу повинна переносити

id, name, клієнт-безпечний summary, a category або продукт сім'ї (це як слово замовника знаходить елемент, ім'я якого є кодом), currency, unit_amount_minor, availableй input_schema надаючи полям необхідні замовлення. Пошук забиває слова замовника щодо назви, сім'ї, циклу та резюме.

З причиною, клієнт може діяти на

Повернутись {"success":false,"error":"…","missing":["domain"],"retryable":true} коли значення неправильно або відсутній. Відмова від того, що імена missing або retryable не залишає жодних змін, тому що не існує внутрішнього витоку.

Гео валюти і надзвичайний режим

Коли оператор перетворюється на Гео валюти (Клієнт чат)→Поведінка, клієнт читає ціни у власній валюті на кожній поверхні — чат-текст, веб-карта, текстова картка каналу та валюту відкриття магазину — за допомогою власної FX-магазину платформи. Ваша ціна ніколи не замінена: карта показує фігуру відвідувача в загальному магазині, а процеси шлюзу точно сума відображається. Запобігти продажам (Налаштування → Commerce) - це перемикач вбити: каталог, котирування та пошуки, які залишаються відкритими; просування і підтвердження зупинки на кожному каналі.

Коли продаж через чат не поводиться

Не вдалося досягнути

Ущільнення пакета розбито: файл було відредаговано після підписання. Відновити пакет. Встановлений копіювання карткового майданчика ніколи не редагований в місці; оновити його з панелі маркетплейс.

Замовлення на цей магазин прямо зараз

Перемикач вбиває. Настройки→Торгівля→Використовувати всі продажі.

На цьому каналі немає можливості

Канал не торкається де клієнти можуть придбати. Сервер лог імен каналу.

Помічник описує пункт, але не відображається карта

Відхилено інструмент цитувань. Кожен дзвінок ввімкнено як [opsiq][commerce][client_tool] з причини: неправильний елемент id, поле пункту не заявляють, взятого домену або власної відмови продавця. Читати журнал перед довірою парафрейсу помічника.

Помічник каже, що не можна бачити продукти

На сторінці належать ще один робочий простір. Кожен віджет належить до одного робочого простору, а роз'єм магазину повинен бути включений.

Відповіли відповідь замість відповіді

«Для мене трохи більше про те, що потрібно» означає, що AI-провайдер не викликав; Історія AI показує точну помилку під цією поворотом, і інструменти ніколи не досягнути.

Редагування роз'єму не показується в чаті

Упродовж декількох хвилин після завершення роботи, але розмова переходить на останню картку. Починайте нову розмову для тестування.

У Нігеріїнському відвідувачі див. долари, хоча Geo валюта знаходиться на

Перевірити гео-IP Налаштування бази даних (Client Chat) → Гео) і що валюта відвідувача має курс FX; без курсу OpsIQ показує ціну магазину, а не неправильний номер.

Ваше повне - єдиний показник, який рухається гроші

Пропозиція unit_amount_minor, quantity і total_amount_minor, і це спокусливо для лікування третини, що неприпустимо з перших двох. Це не так, і припустимо, він вже має вартість клієнта реальні гроші.

quantity Це те, що обраний CUSTOMER — один номер, одна ліцензія, одна політика. Ваш багатокористувач може бути щось OpsIQ ніколи не бачить: ночі, сидіння, вексельні цикли, дистанція, вага, яруси. Готель котирування однієї кімнати на три ночей як кількість 1, блок 105,000, всього 315,000. OpsIQ багатопліфікований блок за кількістю до ціни на картку підтвердження, показав гість 105,000, а потім заряджають 315,000 Повернувшись до одного фігури і заряджаючи іншого, найгірше це контракт може зробити.

Правило

total_amount_minor - єдиний малюнок OpsIQ показує, ознаки, заряди та конденсатори проти. unit_amount_minor Якщо Ваш загальний не те, що ви хочете заряджати, ваша цитата неправильно — OpsIQ не виправдить його, адже в цілому, що було корисно налаштовано, це одна з вас ніколи не погодилася на честь.

Що це означає для вашої акції

Повернути всі в фігуру. Застосувати власні ночі, яруси, знижки, податки та збори перед вами відповідь. Якщо ваша лінія не скоєна — одиниці разів на все число ніколи не дорівнює вашому загальному — OpsIQ лікує всю річ, як одна лінія за реальною ціною, а не винахідливістю розбиття, яка відмовляється нікому.

Шість відповідей, які роблять цей контракт, будь-якої галузі

Про це заявив вище заява про те, що купить річ, оплачуйте зараз, вона ваша, може скасувати. Кожен з тих чотирьох випадків - припущення, який реальний бізнес не поділиться. Банк рухається гроші не може скасувати його. Страхова компанія не може сказати "підтвердженому" доки не побачила. Трейдсмена рахунок-фактури після того, як пацієнт не був. У клініці беруть участь особи, які не хворіють. Не можна сказати так, ті підприємства або будь-які інші сповідають свій власний процес своїм клієнтам або взагалі не можуть підключитися.

Так, транзакційний роз'єм відповідей на шість більше питань. Кожна за замовчуванням до строгого читання — говорячи, що нічого не завжди є безпечним і ніколи не допустимим, бо кажучи ніщо не те, що автор робить, коли вони не розглядали питання.

transaction_kind

purchase, booking, subscription, bill_payment, transfer, application, top_up, renewalВокабуларіан, а не поведінка: вирішує слово прочитає ваш клієнт. Зателефонувавши до «замовлення», змушує помічника звуку, як це не розуміє бізнес, він говорить для того, і жодна сума правильних сантехніків відновлюється від цього. За замовчуванням purchase.

decision_mode

immediate або deferred. Вибрати deferred для будь-якого, що йде на андеррайтинг, кредитна оцінка, посилання, вступи або комітет. OpsIQ потім каже Подати заявку до Підтвердити, і руки над посиланням, щоб запитати про це. Розкажіть, хто їх додаток підтверджується, поки він сидить з людиною є найбільш руйнівним для чат-консультант може зробити для обмеженого бізнесу, і це типова поведінка кожного роздрібного потоку. За замовчуванням до immediate.

payment_timing

on_confirmation, deposit_then_balance, invoice_later або no_payment. Це вирішує, чи є OpsIQ відкриває платіжну сторінку на всі, щоб не було вказано payment_flow — що говорить хто takes the money, this коментує чи коли. Робота, яку ви накладаєтесь після того, як ви не подаєте, і застосуйте, що нічого не потрібно подати, а замість отримання списку шлюзу, який порожній або неправильний.

reversibility

reversible або irreversible. Найголовніше, що говорить фінансовий роз'єм. У номері можна звільнити і посилку можна повернутися назад; завершений переказ не може — немає бездози, гроші в іншому кінці, а єдиний засіб просить незнайомцю повернути його. Зниження irreversible автоматично cancellation_flow до none і забороняє будь-яку налаштування оператора від перевірки особи, що посвідчує особу, Що ще це повідомлення говорить. Два поля незгодні – це не держава, яка вирішить в режимі runtime, за якою все прочитається спочатку. За замовчуванням для reversible.

cancellation_flow

none, platform_only або connector_cancel. У разі відсутності правила про те, хто може досягти їх, і два неправомірні вгадки не можуть бути протилежні напрямки: здогадатися відкритими та чат повідомлення скасовує платне бронювання без комісійної цитованої; вгадайте закритий і клієнт, який хоче скасувати, повідомляється на телефон. connector_cancel Додатково вимагає cancellation_quote і order_cancel з відновленням — OpsIQ ніколи не скасовує перед тим, як це було коштувати. За замовчуванням none.

fulfilment_presence

customer_present або remote_delivery. Якщо ви не перевірена адреса електронної пошти може коштувати будь-якого іншого. Гість готелю повинна приходити, тому неправильна адреса не поширюється на отримання і номер все ще є; розміщена посилка, наданий сервер або посилання для завантаження на міцність цієї адреси окремо. Це те, що робить налаштування електронної пошти оператора на всіх етапахВи не можете бути в спадкуванні, що вантажні кораблі. За замовчуванням remote_delivery.

minimum_assurance і disclosure (необов'язково)

minimum_assurance Ви запитуєте більше доказ ідентичності, ніж OpsIQ вимагає, ніколи не менше — банк, який вимагає покрокового оформлення переказу, виключає контракт. Встановлення його також видаляє можливість оператора для перевірки вашого роз’єму, оскільки власне рішення мерця відмовляється від зручності оператора. disclosure - словесне слово до кнопка підтвердження, за ставкою, плату або охолодження праворуч ви повинні представити; без нього регульовані підприємства повинні зашифрувати слово в назву продукту.

notify_flow

platform_automatic, platform_triggered або none. Коли OpsIQ бере платіж самостійною розміткою ніколи не працює, тому що все це зазвичай повідомлення ніколи не вогонь. Запис на оплату позначається на порядку, сплаченому; він зобов'язується не розповісти будь-якому іншому. platform_triggered вимагає order_notify роль з відновленням, а OpsIQ запитує тільки після того, як платіж зачитано-відповідний момент доводить гроші записано. Зниження none Виконується обов'язкове підтвердження OpsIQ-за межами, тому що в іншому випадку платний клієнт нічого не чує. За замовчуванням none.

У цьому ж контракті дев’ять не пов’язаних підприємств

Відповідаючи договір на чесність для іншої промисловості, з OpsIQ не знаючи нічого про будь-який з них.

Один контракт, дев'ять галузей
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
Заява на Платні платформи

Після того, як нативний платіж Storefront активно перевіряється і зобов'язується, OpsIQ випромінює payment.completed з order_id, payment_id/provider_ref, gateway, точний amount_minor, ISO currency, замовник, елементи лінії, канал і paid_at. Мережеве роз'єм повинно зберігати, що свідчить через record_payment і читати його назад; роз'єм розміщеного чеку споживає власний авторитетний платний захід і не повинен отримувати дублікати листа платежу.

AI є пропонентом, не джерелом повноважень

Модель може вибрати заявлений продукт і кількість, але не можна вибрати ім'я операції, м'ятувати чек URL або створити комерційний стан з тексту. Клієнт отримує точний підписану картку і повинен натиснути кнопку її підтвердження. Це підтвердження пов'язано з робочим простором, роз'ємом, пунктом, кількістю, цитуванням, валютою, різьбою та витривалістю.

Соціальні клієнти зберігають той самий потік без поштового запиту

WhatsApp, Посланник,Instagram, Telegram, ЛІНІЯ, SMS та X використовують обліковий запис каналів постачальника як особистість клієнта. Пропозиція підписана на цей банківський рахунок і підтвердження все ще працює через однакові свіжі цитати, акції, безповоротність, контроль платежів і відновлення. Соціальний клієнт використовує точний одноразовий результат підтвердження, що надає свою розмову; звичайний прозування, такі як «так» ніколи не є обов'язковим органом замовлення.

Історія замовлення: точний зміст, ніколи не вгадувати

Нативні замовлення індексуються особистістю каналу копак, тому AI може відповісти “де мій порядок?” без запитань на електронну пошту або номер замовлення. Для історії підключеного магазину зв'язайтеся з ідентифікатором каналів до робочого простору CRM/клієнт запис і реалізовувати авторські дані клієнтів / замовити в роз'ємі. Постачальники контекстного обслуговування клієнтів отримують, що зберігаються посилання; вони не повинні вибрати обліковий запис від імені дисплея або електронної пошти, що виводяться в чат. З одним відповідним наказом AI відповіді безпосередньо; з декількома він підбиває відповідні матчі і просить, які один; ніщо це говорить, ні історії пов'язаний.

Зробіть перевантаження універсальним: набрані поля та ідентифікатор сервера

Core не містить WHMCS, готель, SaaS, магазин, банк, продукт, маршрут або постачальникське відділення. Тип акції parameters - це форма і штучний інтелект. Роз'єм бронювання може заявити дати і гостей; роз'єм для врахування може проголосувати цикл, майбутній роз'єднувач підприємства може оголошувати власні безпечні поля. OpsIQ sanitize примітивних контрольів і надішле зібрані значення тільки до картованої дії з'єднання.

Типова акція котирування
{
  "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"}]}
  ]
}

Для clients_only, набір customer_ordering.identity_parameter до параметра дії, який отримує зовнішній клієнт роз'єму. Цей поле ніколи не відображається на клієнта і будь-який платникове значення вилучено; OpsIQ вводять тільки ідентифікатор від перевіреного посилання з'єднувача. Гість виїзду залишає його порожнім. Типова електронна пошта є доказом для заявленого гостя вигляду, а не логін та не купуючи орган.

Збірні домени: У зареєстрованих облікових записах клієнтів та налаштуваннях роз'єму належать до робочої площі групи-пріміарного порталу. Однак, ідентифікатор повинен бути підписаний для конкретного сайту учасника, який поповнює віджет, використовуючи цей секрет вебхоок члена. OpsIQ виявляє, що поверхня спочатку і тільки потім вирішує комерцію і пов'язаний клієнт через групу первинної. Ніколи не замініть ключ сайтів з основним ключем і ніколи не копіюйте початковий секрет на сайт учасника.

Канонічні конверти роз'єму повинні повернути

Каталог
{
  "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"}
  }]}
}
Цитата
{
  "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"
  }
}

Відповідність платформи повторює дійсну інформаційну пропозицію та додає HTTPS checkout_url. Core освіжає пропозицію при підтвердженні та порівнює валюту, загальний і стабільний вибір саме. Роз'єм переводить свою роботу на ці конверти; ядро ніколи не перетворює полів постачальників або конструює купець URL_.

Зробіть вбудовану шлюзу оператора, доступну в рідному магазині і чаті

Можливість оплати самостійно не вносить шлюзу перед клієнтами. Увімкніть Відносний магазин платіжної шлюзу блок в конструкторі Connector. Він додає явного варіантованого контракту, створення карт і активного способу оплати, а також дозволяє список сайтів-хостингових доменів. Після встановлення роз'єму, увімкнено та вибрано параметри Торгової Палати, з'являється той самий шлюзовий шлях у публічному магазині, Store modal, клієнтський чекаут і автономне оформлення. Ні провайдера ламка жорстко закодовано.

Договір про шлюзу на рідному поверсі
{
  "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"]
    }
  }
}
Канонічний вивід чеку

Карти заходів для виїзду checkout_url і, коли провайдер має один, session_id. URL повинні бути HTTPS, не містять облікових даних і відповідати дозволеному господареві.

Вихід канонічного статусу

Положення виконує свіже провайдера API _viewup and map paid як справжній булев, amount_minor як ціле, currency як трилеттер ISO код, і provider_ref. Повернення URL, рядок запиту, клієнтоплату або роз'єм-написання “підтверджений” інструкція ніколи не сплачує правду.

Додатковий договір повернення коштів

Якщо шлюз підтримує повернення коштів, карта payment_refund і його відновлення дії. Повернути створення повертається суворо accepted і completed бололевани плюс provider_ref; відновлення виконує пошук провайдера та повертає statusбез дій, OpsIQ не рекламодавець повернення коштів.

Хто підтверджує замовлення

Роз'єм ніколи не пишеться OpsIQ статус замовлення. OpsIQ Порівняти отриману суму та валюту, а також записувати посилання на постачальника; тільки потім виконує основний контроль над постачальником. Ручний банківський переказ залишається єдиним потоком, який може затверджуватися.

У конструкторі роз'ємів, кліщ Торгівля, мапа ролі і налаштування З'єднувачі магазину, Відносний магазин платіжної шлюзуЯкщо роз'єм дійсно надає як контракти. Майстер перевіряє декларацію і пише commerce_roles.json. Видавництво все ще використовує звичайний огляд і процес підпису; цей контракт ніколи не обходить перевірку пакетів або робить роз'єм безвизначення. Перевірити будь-який пакет вручну з php tools/verify_commerce_contracts.php.
💡
Транспортування http для дистанційного керування API або bridge для зазначення на зведений міст (див. NO-API _). Ролі є транспортно-агностичним; час виконання вимагає транспортного засобу, зазначеного таким чином, він може перетворювати мост.
Конектори

Продаємо через чат з роз'ємом: дії та тригери

Договір купівлі-продажу не вимагає роз'ємного пакета. Якщо ваша платформа є самостійною — замовте офіс зворотного зв'язку, внутрішня API, система nobody кораблі роз'ємом для — ви можете досягти тієї ж іншої машини з двома інструментами, які ви вже використовуєте для інтеграції будь-якого іншого: користувальницьких дій (наприклад, на сторінці дії) і Трігерів (навіть webhooks). Такий договір, однакова карта, тим самим підтвердженням ідентичності, що й власне ядро платежу, тим же квитанціями. Єдине, відсутній пакет, тому що не існує сторонніх коду для входу.

Як вона вписується разом

Ви будуєте одну користувацьку дію за комерцію — кожен є простим кінцевим пунктом HTTPS на боці, визначеним під AI & Автоматизація→Дії з його URL, auth header і параметри. Потім ви зберігаєте одну декларацію, яка відображає ролі до тих дій. З цього моменту ваш магазин з'являється в чаті точно так само як роз'єм-замкнений: цитати AI від Ваше ім'я цитувати дію, на картку підтвердження, клієнт виправляє свою електронну пошту, ядро замовлення викликає Ваше ім'я замовити акцію з ключем idempotency, OpsIQ здійснює оплату через робочі місця воріт, а також Ваше ім'я запис-платежі книги. Ніщо про досвід клієнтів говорить "стомат".

Декларація

Заощаджуйте це JSON як налаштування робочого простору commerce_custom_integration (Налаштування→розширені налаштування або через параметри RESTAPI). Це однакова форма, як пакет commerce_roles.json Торгівельний вузол, з action настроювання ваших користувацьких дій по-різному:

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

Нарешті, додайте custom_commerce до роз'ємів, включених для продажу під налаштуваннями→Клієнт чат→Продається через чат. Прийом повторно Що запит, і він відмовляється з іменованими причинами, а не мовчазно приховуючи свій магазин: роль вашого режиму вимагає того, що карти нікому, значення запису без дії відновлення (§15.7— запис, результат якого не може бути відмовлений, дія, яка була видалена або вимкнена з моменту збереження.

Що потрібно робити кожну дію

Повернути конверт роз'єму

Відповідати {"success": true, "data": { ... }} — чи {"success": false, "error": "a sentence a customer may read"}. Ваше дія Шлях успіху відповіді повинна вказувати на конверт.

Цитувати: все в цілому, неповнолітній одиниці

Повернутись quote_id, product_name, quantity, unit_amount_minor, total_amount_minor, currency, selection, selection_summary, expires_at. Все в розділі «Ваша сума є єдиною цифрою, яка рухається гроші» вище стосується дієслово: податки, збори та багатоприклади йдуть ВСЬОГО СОТ, так як ваш загальний - це те, що підписаний, показана і заряджена.

Накази: відзнака ключа тадемпотенції

Ви отримуєте idempotency_key, підписаний total_minor і currency, перевірений customer_email, і ваші власні параметри цитати. Зберігайте ключ з замовленням; якщо ви вже створили порядок для нього, повертаєте це замовлення замість другого. Перевірити гроші — якщо ваша система ціни на замовлення по-різному, відмовтеся від перепланування, а не підзарядки. Повернути гроші — за умови, що вартість вашої системи залежить від того, як підписаний загальний, відмовляйте від повторного використання, аніж до заправок. Повернення reference Визнаєте свою платформу.

Відновлення: відповідь про ONE запис

order_by_key отримує ключ і відповіді {"found": true, "order": {...}} або {"found": false}. Знайдено:false - обіцянка OpsIQ може переробити запис на міцність його. Подача статусу або список недавнього замовлення не відповідає про одне написання.

Запис платежів: власний шлях поселення

Отримує операцію шлюзу, як ключ idempotency плюс вашу довідку про замовлення, після OpsIQ має активну перевірку суми та валюти з шлюзом. Змітьте замовлення, сплачену за допомогою власної логіки платформи — ввімкніть власні листи, зменшіть свій власний запас. Повернення platform_notified: true якщо ваша платформа подає сам клієнт.

Вводи картки надходять з параметрів дії

Будь-який параметр, який ви заявляєте на дії QUOTE (з урахуванням параметра ідентичності), що AI не збирається, надається на картці підтвердження, як вхід клієнта, заповнюється доменом, датою, сидінням. Маркетка добре ярлика, яку клієнт читає.

Тригери: почуйте свої продажі

Два події пожежі на спільному автобусі подій, тому ваші веб-доки та автомати чують кожен продаж чату, де він був виконаний:

commerce.order.created

На даний момент замовлення землі на торговій стороні, перед сплатою — посилання, роз'єм (або custom_commerce), кількість, валюта, електронну пошту клієнта, нитка з ід.

commerce.payment.confirmed

Якщо у випадку, якщо пасажири активно виправили платіж. Він їдуть з тим же позовом, що перешкоджає дублікати чеків, тому не можна подвійний вогонь вашого вебхука.

При вихованні роз'єму

Налаштування користувацького інтегрування – це робоча конфігурація: вона обслуговує Ваш магазин, на робочому просторі. На даний момент ви хочете розподіляти інтеграцію — інші робочі місця, ринкове місце, версія, підписка, оплачені установки — пакет однакових дій і тієї ж декларації як роз'єм. Договір не змінюється; тільки обгортковий пристрій робить.

Конектори

Підключіть платформу, яка має NO API (маршрут)

Plenty реальних платформ корабель немає API на всі. Готель CMS, стара система вексель, випіканий внутрішній інструмент. Ви все ще можете писати повну OpsIQ роз'єм для одного: роз'єднувач виставляє єдиний файл PHP, який оператор переходить в власний публічний webroot, і цей файл IS API. Ця сторінка є цілим шаблоном, з правилами, які роблять її безпечною для запуску і причини за кожним правилом.

Форма його

Нормальний роз'єм викликає хтось інший API_. Мостильний роз'єднувач приносить свою власну. Ніяких інших змін: ті ж дії, тим самими контекстними постачальниками, однаковим договором ідентичності, однаковою плануванням пакета.

1
Ви пишете один файл 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
Оператор копіює його в буроот

Після власних індексів платформи. php. Немає код платформи, не встановлено плагін, нічого не підтримує оновлення платформи.

3
Панель роз'єму своїми руками

Ваші налаштування.json Оголошується webhook_help.snippet_template. Сторінка роз'єму надає його як копіювальний файл з налаштуваннями в реальному часі вже заміняється, тому немає нічого спільного.

4
OpsIQ дзвінки на сервері-сервера

Your Client.php sends GET requests with the shared key in an X-Opsiq-Bridge-Key header. The base URL setting is the platform site root.

Конструктор Connector CAN генерує для вас зараз. Підберіть "Платформа без API"профіль (або встановити доступ до даних місту) і він випромінює мостовий файл, відповідні панелі snippet та типовані дії, які читають і напишіть через нього - для програми Laravel читання його .env, для WordPress читання wp-config.php, або з обліковими записами, які ви вставляєте для будь-якого іншого. Мостильний режим фіксує автентичність до OpsIQ протокол мостів: роз'єм надійно генерує api_key коли ввімкнено, надсилайте її як X-Opsiq-Bridge-Key, і зв'язки, які зберігали значення в OPSIQ_BRIDGE_KEY в копіювальному файлі. Тільки після того, як ваша платформа не є тих, або коли потрібна поведінка генерованого місту не криється. Ручний міст безпечний від майстра: він тільки перезапускає мостовий файл, що несе власний маркер.
💡
Все на цій сторінці показано в PHP MySQL, оскільки це довідкова реалізація та єдине поєднання пакувального трубопроводу повністю підтримує. Сам шаблон є мовно-агностичним і двигуном-агностичною: див. «Мости на інших мовах та інших базах» для воріт в Ноді, Python, Go, Ruby, .NET та Java, контрольний запит для перегляду PostgreSQL, SQL Сервер, SQLite і Oracle, MongoDB еквівалент — разом з концентрацією упаковки, яка вирішує, як не-PHP міст досягає оператора.

Модель безпеки, і чому кожен правило є там

Цей файл сидить у публічному буроті за одним спільним ключем. Це єдиний факт приводить до кожного правила нижче. Не розслабляйте їх, щоб зробити мост простіше.

Комутатор ніколи не постачається SQL

Не є пунктом WHERE, не ЗАМОВЛЕННЯ фрагмента, а не "прави цей раз" параметр сирої запиту. Ім'я платника таблиці, стовпця і значення; ваш файл будує заяву. Мить викликера може сприяти SQL текст, один загальний ключ стає довільним виконанням бази даних.

Назви таблиці та стовпців діють проти інформації_шмама

Визначні визначаються як параметри, тому вони повинні бути зареєстровані замість. Читання реального таблиці та списку стовпців для даної бази і відмовляються від будь-яких не на ньому. Ідентифікатор, який не є справжнім об'єктом цієї схеми, після чого не може досягти запиту взагалі — що це те, що робить його безпечним для того, щоб підірвати кожен стіл.

Кожна вартість є граничним параметром

Без винятку, включаючи значення всередині пошуку. Виявлені ідентифікатори плюс граничні значення є парою, яка робить поверхню повністю і поверхні ін'єкцій nil.

Читає універсальні, пишуться допускаються

Дивитися наступний блок. Це правило люди, які хочуть пропустити.

Секретні стовпчики почервоні на читання і відмовляються писати

Зберіть на стовпчик NAME: пароль, запам'ятовується_token, секрет, api_key, private_key. Солити, токени. Замініть значення з власником місця на шляху. Відповісти писати повністю по дорозі — списання сирого пароля хеш не операції, це footgun. Надіслати оператора в власний пароль платформи.

Видаляє одинарний ключ, за допомогою основного ключа

Не існує багатого видалення, ніколи не видаляється фільтром. Вилучення вагової маси полягає в тому, як бази даних штампів. Якщо хтось дійсно потребує одного, вони можуть зробити це на платформі.

Читання є рядом

Затискайте параметр ліміту з жорсткою стельою. Вимкніть переадресацію не можна вміти відхилити базу через чат повідомлення.

Закрило закриту до моменту встановлення ключа

Неналаштуваний мост відповіді 403 до всього. Міст, який корисний перед його налаштуванням є містом, який був корисним для незнайомця.

Постійне порівняння ключів, ключ в заголовку

hh_equals, ніколи ==. Ключ йде в X-Opsiq-Bridge-Key, не рядок запиту, тому він залишається з журналів доступу, проксі-пай та референтних заголовків.

КУРСИ

Один метод, одна форма, нічого не смужити в тілі. Все місткість виражається як GET з перевіреними параметрами, а OpsIQ є єдиним дзвоником.

Читає універсальне, пишемо далей — і чому

Це правило, яке отримує сперечатися з, тому тут є причина в повному обсязі. Помічник повинен бути здатний SEE всій платформі: що робить його корисним і читання не може знищити нічого. Написи різні. Цей файл сидить у публічному буроті за межами ONE спільний ключ. Якщо ці ключові витоки, необмежена поверхня запису робить витік еквівалентним повного керування базою даних - новий адміністратор користувача, розшифрований таблиця бронювання. Додаток означає витік ключ все ще не може досягти таблиці оператора ніколи не включений.

⚠️
Про нас OpsIQ затвердження карткових воріт АІ, не ключ. В адмін клікнувши Алев на деструктивну дію є контроль над помічником. Він не контролює над тим, хто тримає мостовий ключ. Ті дві різні загрози, а допускний список - відповідь на другий.
Оператор-факція мотузки, з бобблічного місту
/* ── 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';

Два деталі в перевірці нижче легко виходити неправильно. Назва таблиці прибуває вже RESOLVED, що переносить таблицю префікса, а оператор написує пусковий список непередбачуваним, тому що це те, що вони будуть природним чином тип. Порівняйте обидва способи або попередньо встановлене мовчно дозволяє нічого і кожен запис проламів. І відмова повинна пояснити себе, оскільки людина читання є адміністратором у вікні чату, а не розробником зі стать слід.

Редагування списку, дієслово від маркетплеймерів/ботбюль/мост/моб/opsiq-бдбл-брідж.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);
};

Ворота, в повному обсязі

Чотири перевірки, в цьому порядку, перед будь-яким дотиком. Скопіюйте замовлення і перевірте.

Чотири заглушки перевірте, щоб
<?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. */

Виявлення ідентифікаторів на інформаційну схему

Це шматок, який перетворюється "Помічник може досягати будь-якого столу" від неспроможності в сейф. Вирішуйте назву таблиці абонента на справжню схему, перенесіть відсутній або додатковий зафікс столів, і повертаємо null для будь-яких інших. Все вниз поперечинається тоді працює з назвою, яка провалюється.

Виявлення та реконструкція, вербальні речовини з бобблового мосту
/** 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;
};

А читати op і записувати op, завершити

Зверніть увагу, що є обов'язковим і який діє. Фільтр-ролик перевіряється на реальний список стовпчиків, а потім переповнений як ідентифікатор; його значення межа. Обмеження затискається. Рядки виявляються по черзі на шляху. Оновлення відмовляється від основного ключа та будь-якого стовпця, а штампи оновлено_в разі, коли таблиця має один.

Читання будь-якого столу — валідовані ідентифікатори, обмежені значення, захоплені рядки
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,
    ]]);
}
Напишіть один ряд — довільний стіл, відмовляючи від автівок стовпчиків, однорядний рядок за основним ключем
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)),
    ]]);
}

Виживання щіма відмінності

Варіанти платформи відрізняються. Колонки рухаються, отримують перейменовані або відсутні. Міст, який припускає одну схему роботи на одній установці. Вступ і адаптуватися замість: вибирайте тільки стовпчики, які існують тут, переносять таблицю префікса, а спробувати чуйні заклинання посилання.

Допуск стеми, від бобблового мосту
/* 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));
💡
Подаруйте місту оп=діаг, що звітує СТРУКТУ тільки — які таблиці вирішені, які стовпчики мають основне таблицю, а СХАПИ найновішої посилання з кожним кріпиться за допомогою рис. Він є ключовим, як все інше, і він перетворюється "погляд не знаходить нічого" від квитка підтримки в десятку секундну відповідь. Ніколи нехай це повертає реальні записи.

Уніформа помилки, а також конвертер

Одна форма для всього

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.

Незрівнянний і незнімений повинен бути ідентичним

На поверхні зовнішнього вигляду посилання, що не існує і довідник, доказ якого не відповідає вимогам безпеки. Різні відповіді перетворюють міст у підковитку, яка підтверджує, які посилання є реальними, що є безкоштовним експортом клієнтів для будь-якого пацієнта.

Не пропустіть причину Відвідувача

Міст може бути точним з OpsIQ. Що стосується відвідувача OpsIQ, в одній фіксованій відмові.

Копіювати файл в панелі роз'єму

Оператор ніколи не відкриває вашу репозиторію. Вони відкривають панель роз'єму в OpsIQ і натисніть Копіювати. Що копіювання йде з налаштувань.json, і вона повинна бути такою ж програмою, як міст / *.php.

settings.json — запис панелі для роз'єму міст
{
  "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.

sippet_bindings пережили регенерацію

Розгортайте всі отримані секретні завдання прямо. Синхронний інструмент відновлює копію панелі з перевантажувального місту, а потім відновлює OPSIQ_BRIDGE_KEY = {{setting:api_key}} від цієї обов'язки. Без нього оновлення може вірно копіювати файл без ключів та мовчно видалити за допомогою основного пристрою оператора. Конструктор роз’єму автоматично випромінює цю прив'язку для створених містових пакетів.

Інші власники сайтів замінюють сервер

Незалежно від того,{webhook_url}, {webhook_path}, {webhook_secret}, {site_key}, {base_url}і{slug}заповнюється перед панеллю, коли-небудь бачить хіппет.

вебхоок_допомоги може бути одним об'єктом або списком

Список дає вам кілька фрагментів в одній панелі, наприклад, містовий файл і окремий гачок реле.

🚫
Не підтримує хіппет вручну. Мостильний файл і панельний копію є двома копіями однієї програми, і вони БУДЕ дрифт — міст був оновлений і його панельний примірник не було, тому будь-який хто перевстановлений і скопійований з панелі встановленого старого мосту і мовчазно втратив кожну нову можливість. Ніщо виявило це: конформанс пропущений, підписи пройшли, тести пройшли.
Зберігати два екземпляри ідентичними
# 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.

Що повинен бути перекидний міст

У формі операцій і універсальної поверхні даних разом. Сформовані відповіді на питання, які дійсно просять люди; універсальні обкладинки все інше, тому помічник ніколи не застрягає.

Голені читання

стати, головний список об'єктів з фільтрами, один предмет із його пов'язаними рядками, каталог продається, пошук клієнтів з історією. Вони дають AI гарну відповідь в одному викликі замість п'яти.

Написання на шпигулі

Двох або три державні зміни, які мають значення — встановити статус, скасувати. Тримайте отримані значення дозволяють списокувати.

Види торгової марки

Для продажу платформи виставляється цільовий каталог, цитувати, розшуку/замовлення та операції з виплатою, потім на карті їх в commerce_roles.json з transport: bridge. Ніколи не на карті комерці пишуть роль у універсальному записі. create/update Surface.

Універсальне відкриття

таблиці (з рядами) і описом (колів, типів, основного ключа, плюс читабельних і життєздатних прапорів на колонку). Це як помічник вивчає платформу, яку ви не очікували.

Універсальна читання та запис

query, запис. get, запис

Ідентифікатор, перед ключовими воротами

Ідентифікаційні проби називаються АДМІНІЮ, одноголовним, тому вони не можуть надсилати на замовлення заголовок. Їхня автентичність - це сама подача платформи. Поставте їх попереду ключових воріт, зберігаючи їх від всіх записів даних і ніколи не дайте їм повернути секрет. Див. сторінку стилю роз'єму.

Діагностика

op=diag, structure only, masked.

Bridge Commerce роль мапа
{
  "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"
    }
  }
}
💡
Послідовність та авторитет каналу, операція міст зберігає власний тип платівки платформи. Готель може вимагати прибуття, відправлення і гостей, WHMCS може знадобитися існуючий клієнт або роз'ємний знак, а платформа SaaS може знадобитися цикл виставлення. Ядро ніколи не заважає тими полями. Міст повинен викликати бізнес-послуги платформи так запасних, податки, рахунки, підтвердження пошти і гаки всіх запуску.
⚠️
record_payment не є символом-повідним ярликом. Прийміть лише дані про сервер, що перевірені: точний порядок, торговець, кількість, ISO валюта, посилання на постачальник, свіжі перевірені часом і ключем idempotency. Поспішайте його через платіжну / внуодію платформи API, потім повертає авторитетний наказ або рахунок-фактуру читання-замовлення. Невідома причина повинна працювати перед будь-яким ретривалям.
💡
Якщо ваша платформа тільки в будь-який час відповідей, не напишіть ops і весь клас зникає. Додати запис, коли хтось просить їх.

Перевірити перед тим як ви перевозите міст

Міст відмовляється від усього без ключа

За допомогою цього тесту ви можете перевірити всі відповіді на он-лайни 403.

Неправильне ключ відмовлено в постійному режимі

hh_equals, і ключ, який читає тільки заголовок.

Відхилено назву таблиці

І справжня назва таблиці з неправильним префіксом все ще вирішує.

У читання пароля ніколи не з'являється

І напишіть, що імена одна відмовилася від пояснення.

Написати таблицю за межами списку

З повідомленням, яке розповідає оператору як його розширити.

Панельний хіппе відповідає місту файлу

php tool/sync_connector_bridge_snippets. php звітує про це на стадії.

Перевстановлення роз'єму не вистачає

Якщо ваш пакет направляє містовим файлом, оператор розширить роз'єм повинен бути ALSO-почервоний, який файл у їх буроот. Скажіть так в корпусі панелі і в CHANGELOG кожен реліз.

Конектори

Завантаження власної платформи з місту

Міст, який тільки читається, може говорити SQL. Мости, що CREATES речі на платформі (для того, щоб бронювання, платний рахунок-фактура) необхідно пройти через власний шар програми і завантаження цього шару безголовно, є де кожен тонкий збій в цьому шаблоні життя. Все нижче було вивчено жорсткий спосіб на живій інтеграції, кожне правило проти реального дефекту, яке не видала помилки в будь-якій точці світу.

Ряд у базі даних не є замовленням

Сирі ІНСЕРТИ створюють тіньовий рекорд

З'являється ряд, адміністратор списує його, і це ще не записує платформу вірить: немає рідного числа посилань, ні моделі гаків, ні події, ні рахунків-фактури, ні повідомлення клієнтів, ні посилання на клієнта. Клієнт котирування посилки на платформу ніколи не видається персоналу, які не можуть її знайти. Створіть власну послугу платформи; якщо вона тільки підеснує поштову службу, створюйте графіка, він очікує і вручну над швом, що визначає.

Ніколи не перепрощувати номер платформи

Два зразки довідкового формату роблять його легко відтворити, і випромінюючи це однакове тіньове значення одного рівня вниз: день платформа змінює свою схему, кожен з ваших записів неправильний і нічого попереджає вас. Зателефонуйте її генератор (відновлення досягає нестатичного), а також читати збережені значення назад, ніж довірити те, що ви направляєте.

Платформа стовпців зберігає значення платформи

Перед тим як зберігати всі ваші в стовпці платформи, знайти кожного читача. Колонка названа як безкоштовний слот може бути завантажений: на довідковій інтеграції, transaction_id Виявилося, що токени клієнту по електронній пошті "перегляд за бронюванням" відбувається через: idempotency травлення зберігається там тихо зламався кожен гість посилання. Тримайте свої бухгалтерські послуги в мостовому столі: UNIQUE(операція, idempotency_key) є респлей-охоронець, обмеження відмовляється від струменя, а пошук відновлення читає той же стіл, створений писав. Створіть цей столик BEFORE startTransaction: MySQL DDL здійснює відкриті операції, які не відповідають.

Події, слухачі та подвійна поштова пастка

Прочитати джерело сервісу перед відправкою його подій

Якщо служба платформи ви вже відправили захід, відправлення його самостійно надсилає клієнту два листи підтвердження і виробляє два рахунки-фактури. Якщо нічого не слухає, відправляється жодним чином. Ніяких недоліків підвищує помилку. Відображення способу, зрізання її вихідних ліній, і читати те, що це дійсно робить: на основі назви вгадувати і навіть перевипуск над тілом, якось так неправильно, перш ніж джерело було вирішено.

getListeners() приховує правду; getRawListener() розповідає, що він

Ларавель обгортає аудиторів у затворах, тому отримайте [email protected] для всіх. getRawListeners() імена дійсних класів. Ніколи не відправляйте захід, чиї слухачі ви не можете назвати ім'ям.

Плечовик не означає "перемикання пізніше"

З чергою=sync (за замовчуванням на багато виробничих установок) черганий слухач працює INLINE у запиту мосту. Ваш контекст завантаження є його рендером контексту: кожна реєстрація або URL дефект у ваших завантажувальних землях в папці замовника. Перевірити налаштування ('queue.default') перед тим, як приміряти про те, де все працює, і подивитись робочі місця /failed_jobs перед тим, як було залучено працівника.

Охорона ретрі з власним державним станом платформи

Послуга, яка відправляється безумовно повинна бути викликана саме один раз. Маркувальник не може крадіжки є власним рекордним станом платформи (тільки зателефонуйте, поки запис ще не буде припинений), а не паралельно "розумний" прапор ваших, які можуть згодні з ним.

Безголовний завантаження не є веб-завантаженням

Зареєструвати те, що реєстри веб-завантажень

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.

Пиріг EVERY URL корінь, не просто маршрутизатор

The captured request points at your bridge script, so route(), url() and asset() generate site.com/public/opsiq-bridge.php/checkout/TOKEN: a customer link through a JSON endpoint. forceRootUrl(config('app.url')) fixes the generator; the STORAGE disk has its own root, so the emailed logo stays broken until filesystems.disks.public.url is set too (it resolves lazily, so setting it at boot works, and only when empty or script-relative: an operator's CDN URL is not yours to override).

Прийняття перед вами

Послуги платформи, які прочитаються через власне підключення і не можуть бачити вашу відкриті операції. Викликані перед комітуванням, поштова служба не знаходить виконаних платежів, спокійно залишає запис непрограшних, а ще вогнегасає події, тому клієнт по електронній пошті про запис платформи думки не оплачено. Прийміть графік, потім зателефонуйте.

Правила гоноструму

Ні тіні не загиблий

Якщо рідний шлях ненадійний, відмовляючись від життєздатної помилки BEFORE будь-які грошові рухи. Ніколи не запрошувати посилання, ніколи не сироотою статусу зробити півінтегрований вигляд запису. Перевірити платіж, чия зовнішня обробка не переходить до збудовування як needs_attention: гроші є реальними, держава чесно "покарана, ще не оброблена".

Повідомляємо про факти, не про вашу декларацію

"Послуга ran" і "з клієнтами було розказано" є різними фактами: довідкова інтеграція перевантажила електронну пошту з кожною заготовкою поля, коли ran-flag сказав true. Повернути їх окремо (обробку завершено, повідомлення спробували), тримати на постійній основі platform_notified що змушує OpsIQ підтвердження повернення коштів, коли платформа не оброблялася, і ніколи не вимагає доставки: поштова скринька не буде захищена від сервера.

Заходи, потім писати

Перенести чителювку можливого в міст: наявність класу, підписи метода, вихідні зрізи методів, які ви хочете зателефонувати, сирих слухачів, черги водія і (коли питання можна відповісти за викликом нешкідної функції) живого виклику. П'ять теорій про одну порожнисту електронну пошту померли від вимірювань до того моменту, як джерело було опрацьовано. Зроблено круглі витрати на копію файлу; неправильне написання на живій платформі коштує клієнт.

Конектори

Міст на інших мовах та інших базах даних

Мостовий візерунок не є шаблоном PHP. Що OpsIQ Дзвінки - це HTTP кінцева точка, тому файл може бути Node, Python, Go, Ruby, .NET або Java, і магазин за ним може бути будь-яким SQL двигун або MongoDB. Що таке PHP-подібна трубка, і це обмеження вирішує, як ваш міст досягає оператора. Читати розділ доставки спочатку: вона є частиною, яка дивує людей.

Що таке роз'єм насправді вимагає

Це весь договір. Ніщо в ньому іменується мовою.

Транспорт

HTTPS. Один запит GET за викликом. Немає тіла, немає іншого способу.

Афінтикація

Секрет спільної події X-Opsiq-Bridge-Key запит заголовка, у порівнянні з постійним часом. Не параметр запиту, не cookie, а не Basic auth.

Параметри

Виріб рядок. op названі поверхні, do імена операції, що є аргументами роботи.

Відправити

JSON_. {"success":true,"data":{...}} або {"success":false,"error":"snake_case_reason"}. Додаток до вмісту /json, і без кешування.

Коди статусу

200 на успіх. 403 unconfigured або неправильний ключ, 404 не знайдено, 405 неправильний метод, 400 поганий аргумент, 501 непідтриманий на цій схемі.

Що це все

Немає рамок, без пуску, немає OpsIQ Бібліотека на боці. Якщо це може служити, то він може бути містом.

Доставка: що може жити в мості / і які не повинні

У підписаному пакеті міститься фіксований список подовжувачів файлів, а файл за межами цього списку залишається з ЗІП. Міст на мові перелік не охоплюється, тому не може перевозити всередині пакета - але він більше не може зникнути на вас або. Так як 26 серпень 2026 файл в bridge/ що б пакунок не було, тому пакет відмовляється пропускати замість встановлення з мостом.

Як лікується папка міст / на час побудови
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 і JavaScript - повністю підтримується

Файлові кораблі у підписаному ЗІП, а вивержувач з хіппе зберігає вашу панельну копію за допомогою ідентифікатора до неї, яка б не було. Дріт перевіряє кожен файл в мост / не тільки PHP, тому оновлений міст зі стек-панельною копіям не виходить на збір або мову.

Все інше — доставити панель тільки

Панельний хіппе є простим текстом, який не має ідеї, яку мову вона тримається, тому він працює для будь-якого стека. Поставте всю програму в webhook_help. snippet_template, ім'я файлу в хіпперти_файловому імені і не залиште копію в міст / — конформанс відхиляти посилку, а не виставити його порожнім. Скажіть по-справжньому в вебхоок_допомозі. body, що оператор копіює цей файл, замість того, щоб отримати його з пакета.

Якщо вам потрібна інша мова в пакеті

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.

💡
Ім'я файла в webhook_help.snippet_filename коли ваш пакет суден більше одного мосту. Саме так виверження знає, що містка панельна копія належить; без неї проповідається неоднозначна пара, яка попереджає як конформаційне попередження і що хіппе залишається оглянутим.
⚠️
Точка реєстрації домену полягає в тому, що містовий файл і його панельний копія є двома екземплярами однієї програми та ILL diverge. Перегенерувати не вручну: php tools/sync_connector_bridge_snippets.php --apply, потім перезавантажити пакет.

Перевірки, на шість мовах

Так само чотири перевірки в одному порядку всюди: не закривається без ключа, один метод, постійне порівняння ключів від головки, потім з'єднуватися. Єдиний реальний паст є порівнянням, і це інший пастка на кожній мові.

⚠️
Compare the SHA-256 digests of the two keys rather than the keys themselves. It is correct in every language, and it sidesteps the fact that several constant-time comparators either throw or leak on a length mismatch — Node's timingSafeEqual raises a RangeError when the buffers differ in length, which turns a wrong key into a 500 instead of a 403.
Node. js — ворота
// 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 — ворота
# 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 та Java — порівняння
// 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)));
}

Перевірка ідентифікаторів на кожному двигуні бази даних

Не змінено майно безпеки: таблиця або назва стовпця, що подається, повинна бути зареєстрована проти реальної схеми перед її переповненим, і кожна вартість має бути обмеженим параметром. Тільки абстрагійна запиту, характер котирування та пункт обробки зображень відрізняється.

MySQL і MariaDB

Столи: SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = ?. Колонки: те ж саме проти information_schema.COLUMNS з AND TABLE_NAME = ?. Цитувати з застібками, що купують будь-який зворотний дзвінок всередині. Сторінка з LIMIT n OFFSET m.

PostgreSQL_

Same information_schema переглядів, нижчі назви, WHERE table_schema = $1 (зазвичай public). Цитувати з двома лапками, купуючи будь-яку подвійний цитату всередині. Сторінка з LIMIT n OFFSET m. Дивитися правила складання: неможливий ідентифікатор складений до нижньої справи, тому порівняти випадкові-інтенсивно при вирішенні назви.

SQL Сервери

Same Info_SCHEMA переглядів. Цитувати з квадратними дужками, купуючи будь-який закриваючий кронштейн всередині. Пірінг вимагає ЗАМОВЛЕННЯ BY: ORDER BY [id] DESC OFFSET @o ROWS FETCH NEXT @n ROWS ONLY.

SQLite_

Столи: SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'. Колонки: SELECT name FROM pragma_table_info(?) — використовувати, що столова форма, бо коропа PRAGMA table_info(x) довідка не може прийняти межу параметра і запрошення на міжпокриття рядків, є саме отвір, яке ви намагається закрити. Цитувати з двома лапками. Сторінка з LIMIT n OFFSET m.

СОЦІАЛЬНА

Столи: SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = :owner; стовпчики з ALL_TAB_COLUMNS. Цитувати з двома лапками, і пам'ятаєте неможливих ідентифікаторів до справи UPPER, протилежність PostgreSQL. Сторінка з OFFSET :o ROWS FETCH NEXT :n ROWS ONLY на 12-й та пізній.

MongoDB_

No SQL, тому не існує ідентифікатора інтерполяції та жодних меж параметрів — різна дисципліна для тієї ж мети. Див. нижче.

Можливість вибору двигуна
-- 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;
💡
Розчиніть, потім використовуйте назву RESOLVED. Ніколи не пропустіть клацання за допомогою запиту навіть після його перевірки — дивитесь справжню назву в списку, який ви читаєте з схеми та переповідаєте це. Це коштує нічого і він закриває розрив між «це ім'я відповідає щось» і «це назва я пробіг».

MongoDB: ті ж правила, без SQL

Не існує мітки запиту, щоб вводити, так що люди припускають нічого до опіку. Є: фільтрувальний документ. Пасивний дзвінок-застосовується JSON прямо в find() Дозволяє відправці абонента {"$ne": null} або {"$gt": ""} де ви очікуєте значення, і тихо оберіть кожен документ. Створіть фільтр самостійно.

MongoDB — список зразків, скалярно-силовий фільтр, проекція як повторення
// 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();
Збір імен приходять з спискуКолекції

Це ваша інформація_шмама. Вирішити заклинань мера проти неї і використовувати вирішене ім'я.

Примусити кожного фільтра значення для лушпиння

Стрінг() або номер () навколо нього є цілим захистом від ін'єкцій оператора. Документ, де ви очікуєте значення є еквівалентом NOSQL променевої цитати.

Проекція – це правило відновлювальної діяльності

Виключіть секретні поля в проекції, щоб вони не залишали серверу, а не видаливши їх з результату після

Видаляє зберігатися в однододатку _id

Видалити один з вирішених _id. Ніколи не видалятиМало, і ніколи не фільтрувати вплив дзвоника.

Написання про перебування на сайті

Вказуючи, що в якості SQL_: ім'я колекції запис може доторкнутися і відмовлятися від відпочинку з поясненням.

Ідентифікатор кінцевої точки на інших мовах

Випадковий блок ідентичний кожній мові: base64url the payload, HMAC_-SHA256, які струнки, приєднуватися з крапкою.

Do not hand-write this from scratch. Settings, Support Portal carries a ready route per language for the portal (one-time, two-minute token). Remote Sites, your site, Codes, C. Recognise logged-in customers automatically carries the chat version per language (one-hour token plus the refresh handler). Take the signer from the flavour that matches your stack.
Що змінити, коли ви перейміть його

Ці хіппети м'ятають відставку, яка навмисно сувора: вона несе джуті і сингл_use:true and life about 120 секунди тому, що вона подорожує в URL. Міст або віджет ідентичний токен не несе тих і використовує більш тривалий термін, хвилин до годин.

Що залишається тим самим

site_key, iat, exp and the top-level автентичний:true, плюс адміністратор або клієнт суб'єкт з ідентифікатором і ім'ям користувача або електронною поштою. Самі претензії, той же підпис, однаковий секрет.

Як перевірити форми токени

A three-part JWT signed HS256 works, and so does the two-part base64url payload plus hex HMAC that the PHP reference emits. Use whichever your language's libraries make natural — a JWT library is usually the shorter path outside PHP.

Не пропустіть його в браузері

В кожній мові. Прив'язуйте клієнт-замовлення, напишіть на сайт, секрет для кожного відвідувача.

Вибираємо, чесно

Платформа PHP

Напишіть міст в PHP. Він кораблі в пакеті, він drift-checked, і це може завантажити власне рамки платформи для читання живої сесії для стилю пробе. Ніщо інше дає вам все три.

Платформа Node

A . js Bridge, знаки і є дрейф-оглядом, як PHP один. Ніщо не дає.

Платформа Python, Ruby, Go, . NET або Java

Видаліть через панельний хіппет і скажте так в корпусі панелі; не залишайте файл у місту / де конформанс відмовляється від пакета. Роз'єм є інакше повністю нормальним: дії, контекстні провайдери, ідентичність та гість дивиться всі роботи однаково, адже ніхто не від них піклується про те, що відповіді на виклик HTTP.

Ви не можете запустити процес на майданчику

Тоді міст візерунок не є правим інструментом. Міст існує для досягнення платформи зсередини власного хосту. Якщо ви можете дістатися до нього з-за кордону, вам писують звичайний API роз'єм проти будь-якої поверхні, яка виводить.

⚠️
Більшість обмежень варто планування навколо: айдентика зонда повинна читати логістику платформи, яка зазвичай означає, що працює всередині власного процесу платформи або принаймні на його хості з доступом до свого магазину сеансу. Міст, написаний різними мовами від платформи може служити зручними і може бути ще боротьба за відповідь op=адміністр_ідентичність. Якщо це ваш випадок, виконайте міст даних у вашій мові та ідентифікатор, який знаходиться в платформі.
Конектори

Подаруйте помічнику як половинки: дії та контекст

Це єдине найбільш поширене, що не вистачає з роз'єму, який "робиться, але без використання". Дії дозволяють AI зробити речі. Контекстні розділи дозволяють йому виглядати KNOW. Роз'єм потрібен як і більшість питань адміністратор просить відповісти контекстом, ніколи не дійдемо. З'єднувач з досконалими діями і ніяким провайдером контекстного права буде вірно повідомити, що це не може бачити нічого.

Два половинки

Дії — як працює AI

Визначені в діях.json або повернувшись до реєструВакансії(). Модель забирає одну, наповнює її параметри і OpsIQ виконує його. Дії є для дієсловів: скасувати це бронювання, відкрити цей квиток, змінити цей статус.

Контекстні розділи — як AI знає речі

Встановивши КонтекстПровідер перед моделлю працює. "Як багато замовлень цього місяця", "які мої нові клієнти", "що ми продаємо" всі вирішуються через контекстне зображення, і ніколи не доторкнувшись дій на всіх етапах.

⚠️
Симптом відсутнього провайдера: помічник відповідь «Не ввімкнений роз'єм, що поставляється з цим контекстом», при цьому встановлюється роз'єднувач, включений і проходячи його тест з підключенням. Ніщо не запускається, нічого помилки. Це повідомлення не означає, що ніхто не сказав про розділ.

Універсальний розділ словник

OpsIQ Запитайте на розділи за загальним іменем. Ваша робота полягає в тому, щоб визначити, що кожен засіб на вашій платформі і відповісти на неї. Бронювання готелю Є замовлення готелю; номер IS який продає готель. Карта, не винахідлива.

замовлення / ending_orders

Що б операція була на Вашій платформі: замовлення, бронювання, бронювання та вакансії, вантажі. Замовлення є одним з переліків, які фільтруються до незакінчених.

Клієнтам

Замовник ростер.

products

Що таке платформа продає: товари, номери, плани, послуги.

августка

Виручити і грошово-формувати суми, плюс рахує державою.

квитки, послуги, домени, сервери, активність

Використовуйте ці, коли платформа дійсно має їх. Не змусити картування — нездійсненний розділ краще, ніж неправильний.

Що ще має ваш сайт

Оголошіть свій власний. Постачальник, який оголошує розділи (): ['licenses','shipments'] має ті, які об'єднані в універсальний список зображень, тому специфічні погляди платформи стають доступні без основних змін.

Помилкові витрати на день

У контекстному провайдері MUST реалізовано інтерфейс. Тип реєстру зачепить його, тому клас, який просто не пропускає LOOKS прямо — без помилки в будь-якій точці світу.

ContextProvider. php — договір, від пакета посилань 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 '';
    }
}
Зареєструвати його з роз'єму

Впровадження контекстного підключення та повернення постачальників з контекстнихпровідаторів (). Клас роз'єму може також здійснюватися КонтекстПровідерінтерфейс безпосередньо і бути зареєстрований як сам.

Повернути звичайний текст, не JSON

Збудувати() повертає текстовий блок, який зашифрований в підказку. Написати його для зчитувача: заголовок, потім одну лінію на рядку.

Повернутися '', а не кинути

Виняток власного виробництва. Постачальник, який кидає, зареєстрований і пропущений, але повернення '' є договором.

Будівельник не може писати розділи() для вас

Згенерований ContextProvider. php кораблі розділи(): масив {_повернення []; } і майстер не має поля для нього. Заповнювати його вручну - і пам'ятайте, що перепланування від майстра OVERWRITES файл. Скопіюйте ваші редагування з першого.

⚠️
Якщо ви направили, то не будешся кількість рядків, які ви надіслали. Сторінка не є загальним. Провайдер, який списує двадцять рядів без казки так отримує помічник впевнено відповісти "Ви повинні 20 бронювально-розвантажувальні роботи 669. Один дешевий COUNT і один явний рядок — "Вставити на файл: 669 (Цей список показує останні 20 тільки) - це все виправити, і впевнено невірний розрахунок гірше, ніж кількість.
Блок секцій, який не може бути
$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);

Ім'я ваших дій OpsIQ може розповісти про читання з записів

OpsIQ класифікує дію ВОРДС в його дії_id, і це навмисно консервативне: що-небудь не можна розпізнати як запис і вимагає карти затвердження. Отримати дієслово право і читати просто працює.

1
is_decovering or Required_confirmation wins

Якщо ви не встановлений, дія завжди потребує затвердження. Поглибше їх — це те, що поверхні карти схвалення адміністратора.

2
Пишіть слово в будь-якому місці, що робить його написати

додати, створювати, відкрити, оновити, редагувати, змінити, видалити, видаляти, знищити, скасувати, повернення, призупинити, активувати, схвалення, відхилити, надсилати, позначку, скидати, захоплення, недійсний, закрити, відкликати, відкинути, перенести, відключення, встановити, toggle, включити, відключити, питання, генерувати, застосувати, стягнути, платити, забезпечити, поновлення, оновлення, злиття, переміщення, перенесення, ескалати, прапорець, реєстрація, синхронізація, push, імпорт, запустити, запуску, зупинитися, зупинити, перезапустити і кілька більше.

3
Тоді читати слово робить його читати

отримати, список, пошук, знайти, подивитися, показати, fetch, підрахунк, огляд, опис, читати, експорт, попередній перегляд, тест, ping, статус, резюме, докладно, останні, історія, перевірити, журнал, статистика, метрики, огляди, доходи, розбиття, звіт, аналітика, баланс, використання, квоти, знімок, розуміння, подача, проект, triage, класифікувати, запропонувати.

4
Потім метод HTTP вирішує

ОЦІНКИ, ТУД та ОПОЦІЙ.

5
В іншому випадку це запис

Невизначене рішення про затвердження. Ці умови є навмисним.

⚠️
Письмові слова перевіряють BEFORE читати слова, тому змішане ім'я, як Get_and_sync_orders класифікується як WRITE. Виберіть один дієслово, покласти його першим і зберегти його чисто: list_orderes, get_customer, search_bookings, скасувати_bookping, set_order_status.

Тільки оголошуйте рідні_api, якщо платформа дійсно має одну

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.

Конструктор приймає рішення про використання даних

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.

Пакети, які ще повинні отримати його правою

Якщо ви пишете про себе, задекларуйте саме одну з рідних_api або платформи_bridge. Конформанс лікує платформу_місто як втечу кришку містового роз'єму очікується, і Будівельник відмовляється від специфікацій, що стверджує майданчик_брідж на платформі API роз'єм.

Зберігайте ai_api_reference. md чесною або способом

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.

Вчити головний мозок адміністратора на вашій платформі

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

Що це платформа IS, як його дані є формою, які її об'єкти називаються, і акрів, які інакше роблять помічника вгадувати. Написати її для компетентного колеги, який ніколи не бачив платформи.

ai_api_reference. md

Вимкнена поверхня. Для містового роз'єму це твоя опа і робимо словник з їх параметрами, не стіл кінцевої точки REST.

Бюджет

Жорстке порно 6,000 символи зберігаються в роз'ємі, і про 24,000 символи для цілого блоку по кожному ввімкненому роз'єму. Над заднім ковпачем ваш файл обв'язується; будьте обережні перед тим, як виконувати пристрій.

Гарантійні платежі

Ці файли є відмінністю помічника, використовуючи ваші універсальні інструменти таблиці і відповідь від неправильного розділу, оскільки нічого не сказали, що ці інструменти існували.

💡
Обидва файли повинні бути в пакеті INSTALLED, не тільки ваше джерело. Вони є звичайними файлами пакетів, тому вони покриті підписом і відправлені в ZIP - що також означає редагування одного після підписання перерви ущільнення. Відправлення.
Конектори

Ідентифікація через роз'єм: адміністратор, замовник, портал

Один договір підписання служить трьома поверхнями. Робота роз'єму полягає в тому, щоб перетворити "який з'єднаний на платформі" у підписаний токен OpsIQ може перевірити, а потім пред'явити перевірений предмет в OpsIQ- форма. Роз'єм ніколи не автентифікує будь-якого — платформа, і підпис несе те, що затвердження.

Три поверхні, один вивісок

Адміністратор — Ваш персонал, всередині вашого

Предмет адміністратора. Віджет завантажується всередині панелі адміністратора платформи та кожен учасник персоналу відповідає їхньому OpsIQ агента. Повний прохід на сторінці віджету адміністратора

Клієнт — підписаний клієнт, в чаті клієнта

Предмет замовника. Це те, що дозволяє в'язати клієнту отримувати свій обліковий запис WHOLE замість анонімного вигляду: кожен замовлення, повну деталь та будь-які дії самообслуговування, які ви можете дозволити.

Портал — глибоке посилання на портал підтримки

Те ж саме стверджує плюс jti і одно_use, з 120-друге життя, тому що токени подорожує в URL і повинні бути проведені один раз. Не пропустіть це: Налаштування, Портал підтримки несе готовий хіппет на мову, а платформа заповнює вас, коли область облікового запису працює на цьому сервері.

Договір про оплату

Це претензії перевірте вивертори. Ніщо тут необов'язково, що може запропонувати частковий приклад.

site_key

На рівні. Повинно рівний ключ сайту запиту, або відмовлено від токени.

і в

На сьогодні в майбутньому потрібно буде заходити і після того, як мангал. Прокинувся більше хвилин, ніж через хвилину в майбутньому. Тримайте життя на короткий час — хвилини до годин.

Автенсивний: правда

На Вашій платформі ви зможете знайти і зробити свій бізнес.

майдан

Найменше значення. Короткий ламок, що нагадує походження. Рекомендовано, і він дозволяє розробнику стилю роз'ємів розповісти власні жетони з іншої платформи.

адмін або клієнт

Об'єкт, що використовується для користувача або електронної пошти, має право носити незрівнянну особу, а також ім'я користувача або електронну пошту — замінникові ворота доступу на цих пристроях. Включаючи обидва, коли у вас є одночасно.

Видобуток, верблюд від бобального мосту
$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);

Два вивержувачі, і збій вони викликають

OpsIQ має два виверизувачі, і вони не ідентичні. Знаючи це економить вам день, тому що симптом нічого не схожий на причину.

Віджет адміністратора має власний виверизатор

opsiq/embed/admin_ajax. php несе місцевий верифікатор, який приймає автентичний прапор в будь-якому положенні. Список контактів, історія і Переглянути всі проходиться через нього, тому вони автентифікують дрібно.

Загальний вивержувач є строгим

opsiq/includes/customer_identity_token_verify.php sits behind the chat stream and the core AJAX API. It historically required the flag at the TOP level.

Симптом

Історія та розмови працюють. Кожен чат перетворює відповіді "Домін потрібен логін". Він читає, як і раніше, так і не: токен відсутній верхній прапор.

Що таке ядро

Тепер приймає прапор на рівні вершини або всередині предмета, тому контракт є рівномірним. Старші ядра читають тільки верхній рівень. Визначте канонічну форму і пакет працює на кожному випуску.

Цей файл автоматично сканується. Будь-який файл у вашому пакеті, який робить ставку на гаманці ідентичності, статично відскановано проти контракту, і перезавантажити платформу не буде відповідати точному файлу та лінії. Запустіть його самостійно: інструменти PHP / Verify_identity_ Contracts. php.

Клієнти в чаті

Два речі повинні бути вірними. Ядро повинна штампувати перевірений клієнт, і ваш роз'єм повинен представити його.

1
Ваш міст або кінцева точка м'ятить клієнт токени

Призначальник як адміністратор, з суб'єктом замовника. Читання клієнта від власної сесії платформи. Якщо ваша платформа підписує клієнтів на різних охоронців від адміністраторів, читати охорону потрібно і ніколи не закохатися по предметам — так буде клієнт під рукою адмін-токена.

2
Основні верфі і штампи

На дійсному токені, вичитує перевірену тему в сеанс. Ваш провайдер читає перевірену ідентичність; він ніколи не автентифікує.

3
Вашої компанії IdentityProvider презентує його

detectCustomer() returns the OpsIQ shape. It MUST implement OpsIQ\Platform\IdentityProviderInterface, or the registry silently skips it — the same trap as the context provider.

4
Ваші дії з клієнтами приймають замовнику

І OpsIQ заблокує її до перевіреної ідентичності перед виконанням. Модель не може поставляти його.

IdentityProvider. php — читав перевірену ідентичність, вкажіть її у формі 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;
    }
}

Клієнт-скопчені дії: два замки, обидва необхідні

Модель ніколи не повинна вибирати дані, які він читає. OpsIQ _виконає дії, що з його боку, і ваша платформа повинна бути використана на іншій стороні теж. Один замок є помилка від витоку; два замки є контрактом.

Замки 1 — OpsIQ перезаписи параметрів ідентичності

Перед тим, як працює дія клієнта-чата, OpsIQ замінює кожен ідентифікатор-подібний параметр з ідентифікатором відвідувача VERIFIED: клієнт_id, клієнт_ID, користувач, клієнт, обліковий запис_id взяти перевірену числовою особою; клієнт_ідентифікатор, клієнтоідентифікація, бухгалтерський облік приймає його як рядок; електронна пошта, клієнт@email, клієнт.email, користувач_email приймає перевірку електронної пошти. Що б запропонована модель була відхилена.

Lock 2 — ваш сайт рекопує кожен запит

Візьміть id, яку ви були надані і додайте його до пункту WHERE кожного читання та кожен запис на цю поверхню. Ніколи не довірити посилання в запиті самостійно. Підписаний клієнт просить про порядок когось повинен повернутися порожнім, не заборонений.

Ім'я параметрів так заблокувати 1 Чи можна знайти їх

Дзвоните до it клієнт_id, не cust або ref. параметр OpsIQ не розпізнає параметр, він не може заблокувати.

⚠️
Подаруйте підписану поверхню клієнтів, її операції з OWN, відокремте від адміністраторів, навіть коли SQL виглядає аналогічним. Дві поверхні з різними правилами залишаються чесною; одна поверхня з прапором стає витіканням дня, який хтось редагує неправильне відділення.

Зеро сторінка проводки: роз'ємний зонд

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.

config.json — налаштування зонда
{
  "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."
}
Пробе - це те, що ми працюємо з браузером

Сам-рігін, тому не може носити на замовлення заголовок. Його автентифікація - це сеанс платформи. Поставте його AHEAD з мост-під ключа воріт, зберігайте її від записів даних і нічого не поверніть для входу в блок.

Відповіді фіксованої форми

{"success":true,"authenticated":true,"admin":{...},"identity_token":"..."} — and {"success":false,"authenticated":false,"error":"..."} when nobody is signed in.

Не довголічена секрет на джерело сторінки

Тільки підписаний, що видає токени.

Повна реалізація кінцевих точок для Ларавель,WordPress, WHMCS, Symfony і plain PHP, плюс жорсткий-won Laravel Специфіка і порядок усунення неполадок на сторінці віджету адміністратора. Вони є однаковим кодом для суб'єкта клієнтів: змінити опікунка, яку ви читаєте та підпишіться на ключ.

Конектори

Видавництво: редагування папки не видавнича

Найпоширеніший спосіб втратити день є редагування роз'єму під ринковоюмісією_підключники/, перевстановити його і знайти нічого зміни. Встановлює не читати цю папку. Вони витягують підписаний ZIP з каталогу ринку. Видавництво полягає в послідовності, яка покладає ваші зміни в цей ZIP.

Чому редагування нічого не зробив

marketplace_connectors/<slug>/ is the SOURCE

Вже в роботі. Ніщо не встановлює з неї.

У каталозі підписано ЗІП

Встановіть завантаження, що ZIP виводить підпис і відпакує його. До того ж ви перебудете ZIP, кожен встановлюємо зберігає отримання старого пакету.

Конструктор роз'єму публікує десь ще

It writes into /connectors/<slug>/ on this install. That is a local connector, not a marketplace release. The two paths do not overlap.

Послідовність релізу

1
Змішайте версію в TWO файлах

налаштування.json і роз'єм_підряд.json. Конформанс порівнює їх і не вдається, якщо шлам, версія або можливість встановити незгоду. Додати запис CHANGELOG.md при цьому ви є - це необхідний файл.

2
Ре-синк міст хіппе

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
Відправка кожного пакета

php tool/resign_all_connectors. php — підпис охоплює файловидіння, тому ANY редагує недійсні його редагування. Ознайомитися далі, після кожного файлу є остаточним.

4
Експорт ключа підписання, потім насіння

У розділі «Пошук» визначаються кожен пакет, як він будує ZIP і працює в контексті, де ключ не може прочитати з налаштувань — так що він повинен вийти з навколишнього середовища.

5
Редплой міст файл, якщо ви направляєте один

Встановивши роз'єм оновлення пакета. Не доторкайтеся запису на копію, що сидить в операторах. Розкажіть їх, в панелі і в переввімкненому журналі.

Всі випуски, для того щоб
# 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
⚠️
Чому експорт не є обов'язковим: реєстратор шукає ключа в OPSIQ_CONNECTOR_SIGNING_KEY first і роз'єм_signing_key налаштування другого. Диван працює на SaaS bootstrap і інструменти / sign_connector. php завантажує нічого, тому в обох налаштуваннях зчитувач не існує - без змінного середовища немає ключа, і ви отримуєте "Не підписав ключ доступний" або кожен пакет, який повідомляється як реєстрація_failed. Тільки інструменти/resign_all_connectors. php черевики OpsIQ

Що насправді кораблі

Тільки файли, які підписуються

ЗІП побудовано з власного списку файлів, тому не відправлено променевий файл, який сидить у папці пакета. Тобто, навмисне: не позначений файл для їзди по клієнтам.

Покриття розширень

php, json, ж css, md, txt, html, sh, png, jpg, jpeg, gif, webp, ico, yml, yaml — рекурсивно, включаючи міст / та тести / підпис.json сам виключається з хешів, а потім додається в ZIP так встановити.

Що ще не продається, як ні_пакування

Прізвище, ім'я користувача, що ви залишаєте за собою. Читання цього списку. Файл, який ви очікується, щоб судно з’являється, означає неправильне розширення або неправильне розташування — не мовний успіх.

Редагування будь-якого вкритого файлу розриває герметику

Включаючи файл Markdown. Відправте цей пакет.

Необхідні файли в розвантажуваному пакеті

connector.php

Поверніть екземпляр ConnectorInterface.

settings.json

Manifest: строп, ім'я, версія, проявляється_версія, сумісність, можливості, роз'єм_підрядник_версії, налаштування.

connector_contract.json

Витратний договір. Його шлам, набір функцій та можливостей повинні бути ідентичні налаштуванням._json.

АДМ. МД, ДЕВЕЛОП. мд, ЧАНДЖЕЛОГ. мД

Всі три перевіряють для існування та мінімального розміру. DEVELOPER. md потребує реального вмісту, не стукаючи.

Файл за заявленою можливістю

Кожна можливість імен файлу, яка очікується — ContextProvider.php для контексту, IdentityProvider.php для ідентичності, GuestLookupProvider.php для guest_lookup, і так далі — якщо роз'єм реалізовує можливість в режимі онлайн.

Ніщо, що виглядає як кримінал

Конформанс сканує три файли позначки для секретно-подібних значень та приватних ключів, а також не вдарив удару.

Перевірити його перед тим, як ви перевозите його

Повний пакет відповідності є тим самим одним з етапів встановлення. Він перевіряє проявляється проти канонічного договору, який працює час і маніфестує можливості погоджуються, що кожна заявлена можливість має свій файл і його методи, ідентичний договір в кожному поміщеному файлі, матч мост-snippet, гігієна гостя дозволяє дотримуватися дії, унікальність та надійність підтвердження, а підпис пакету.

Запуск всіх чотирьох до кожного релізу
# 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
💡
Помилкується одна відмова і не проблема: перевірка підпису пакетів повідомляє про попередження, коли ви ще редагуєте. Знімається момент, коли Ви передаєте. Кожна інша невдача є реальною.
Конектори

Посилання та посилання на життєвий цикл

Це вихідний контракт для побудови роз'єму, який OpsIQ може відкрити, налаштувати, ввімкнути, виконувати, тестувати, зареєструватися і розподіляти.

Посилання на розробника
Пакет роз'ємуПакет роз'єму має необхідний розподільчий і проявляється, з додатковими діями, рецептами, знаннями, активами та метаданих підписів.Пакет роз'ємуdeveloperMANIFESTv1ЛІФЕНТИКМенеджментРОБОТАСкопіюватиОГЛЯД РОБОТИconnector.phpКлас роз'єму / фабрикаПотрібніsettings.jsonManifest і налаштування schemaПотрібніactions.jsonВизначення діїДодатковоsignature.jsonметаданих підпису пакетаВипадковий1DECLAREМаніфест та можливості2IMPLEMENTрятувальні та сервіси3ОЦІНКАТест, знак, пакет
Пакет роз'єму має необхідний розподільчий і проявляється, з додатковими діями, рецептами, знаннями, активами та метаданих підписів.

Мінімальний пакет

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

Договір про маніфести

settings.json використовує проявляється версія 1. Важитель очікує шлам, ім'я, версія, проявляється_версія, сумісність, опис та можливості. Сумісність заявляє opsiq_min і opsiq_max. Статус виходу є одним з виробництво, бетмен, августка або шаблони; можливість зрілості використовує рівні L1–L6. Пакети Legacy можуть бути нормалізовані попередженнями, але новий пакет повинен проходити без попередження.

Інтерфейс роз'єму Core

  • Налаштування та налаштування: slug(), name(), description(), capabilities(), settingsSchema(), testConnection().
  • Теплий цикл: onEnable() і onDisable(). Вимкнено неруйнівний; обмотка даних є окремою навмисною операцією.
  • Вхід/синок: handleWebhook(), poll(), backfill(). Попломка ручок непідготовленої роботи; історія імпорту заправки і повинна бути безпечною для повторення.
  • Підтримка: pushReply() де платформа приймає відповіді.
  • Дії: registerActions() постачання угод про виконання дії.
  • Безпека: securityCapabilities(), syncBlockedIp(), removeBlockedIp(), testSecuritySync().

Ця електронна база також пропонує додаткові роз'ємні заправки, список клієнтів, електронний лист-звітання / виведення, абоненти, адміністратор/визначення користувачів, вексельні / контекстні / ідентифікатори постачальників, видалення відповіді, перегрів HTTP дзвінки, JSON_-path access, нечіткий рейтинг і патологія помічників.

Можливості та автентифікації

Підтримувані імена можливостей включають в себе дії, тригери, контекст, ідентичність, продажі, векселевізію, вхідні_розкладки, sync_users, синхронізацію_департаменти, захист_ім'я, клієнт_імпорт, безпека_native_block, рекламний_аудит, e-mail_mailbox, рідний_api, ai_brain_aware і ai _tickets. Будівельник забезпечує API ключ, ведмедя, базовий, HMAC, OAuth 2 клієнтові, OAuth 2 Шаблони авторизації та настроювання.

Регулятор життєвого циклу

  1. Відкрийте для себе навантаження пакету і підтверджує його проявляється.
  2. Конфігурація зберігається в робочому просторі; секрети зашифровані.
  3. Тест підключення доводить облікові дані без можливості роз'єму.
  4. Увімкнути дзвінки onEnable(), синхронізація визначення дії та може почати початкове заправка.
  5. У рамках проекту «Полювання/вебхоок» завжди є контекст робочого простору.
  6. Вимкнути дзвінки onDisable() і припиняє діяльність без видалення імпортних даних.
  7. Пірург – окрема явна операція.

Правила Корекції

  • Використовуйте робочий простір / сайт ключ у кожному читанні, писати, кеш-ключ, дедуплікувати ключ і вебхоок пошук.
  • Заповнити, webhook ingestion і писати дії idempotent. Записувати зовнішній ідентифікатор / вихідної ID, де платформа надає одну.
  • Для віддалених систем використовуйте їх API; ніколи не припустимо, що таблиці бази даних існують в OpsIQ підключення.
  • Повернути структуровані, небезпечні помилки клієнтів. Не виключайте секрети, сліди для сирого провайдера або інше існування робочого простору.
  • Декларувати тільки можливості пакету, фактично реалізовано. actions.json каталог не робить дії, що миється до встановлення роз'єму, ввімкненого, настроюваного та його підключення є дійсним.

Тестування та реліз

Запуск PHP Lint, проявляється перевірка, з'єднання тестів, дії schema-тестів, webhook підпис / релейних випробувань, робочі місця-ізоляції тести, заповнювачі, позаповторні випробування, відключені тести та невідповідності. Після цього пакет ринкових змін слід підписаний і перевірено, включають налаштування/місії/вехоок документацію, а також стан його істинного статусу релізу. Роз'ємна плитка і проявляються авторитетними сигналами доступності.

Конектори

Рецепти роз'єму

Покрокові рецепти для загального налаштування роз'єму.

ДИТЯЧІ
Рецепти роз'ємуA Shopify рецепт налаштування як контрольний список: створення програми, надання об'єктів, паста токен і тестів, увімкнути вебок, розмістити тестове замовлення.Рецепти роз'ємуShopify_Реформа · Shopify з webhooksСтворення користувацького додатка в Shopify адмінГранти для читання: читання_замовлення, читання_студенти...Вставити домен магазин + токен, натисніть кнопку ТестУвімкнути синхронізацію Webhook (замовлення авторегістр)Поставити тестове замовлення → з'являється в продаж 30s1STEP BY STEPРецепти для копіювання2REAL PLATFORMSShopify · WHMCS · Stripe· БРОНЮВАННЯ3ВЕРІФІКТестування на замовлення 30s
Кожен рецепт - контрольний список, який ви дотримуєтесь нижньої частини, тут, Shopify з веб-гоками замовлення в режимі реального часу, перевіреними тестовим замовленням.

Реформа: Shopify з сайтом в режимі реального часу

Сценаріо:
Мета: Connect Shopify з автоматичною синхронізацією замовлення та GDPR комплаєнс
Що робити:

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.

Запитання: WHMCS інтеграції

Сценаріо:
Мета: Connect WHMCS так AI може виглядати клієнтів, послуги, квитки та рахунки-фактури.
Що робити:

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.

Реформа: Stripe Плата за платежі

Сценаріо:
Мета: Відстежити Stripe Оплатити і дати AI переглядати транзакції.
Що робити:

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.

Запитання: Google Business Profile

Сценаріо:
Мета: Підключати GBP для управління рецензією, повідомленнями та інсайтами.
Що робити:

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.

Конектори

Розширена CRM та інформаційна підтримка сайту

OpsIQ Підсистеми відкриті для розширення. Роз'єм може заблокувати нову можливість в CRM або Site Intelligence без змін OpsIQ ядро, за допомогою реєстру можливостей платформи (\OpsIQ\Platform\CapabilityRegistry. Розгорніть можливість, впроваджуйте свій невеликий набір метода, відправляєте роз'єм,OpsIQ Визначте його і провідує її в УІ, Замовник 360 своєчасність і встановіть підказки.

Розширений CRM та SI
Можливості платформиРоз'єм на лівих підживленні автобуси (CRM, Site Intelligence, Analytics) відкрився Реєстром безпеки.Можливості платформиробоча зонаВаш роз'ємдекларувати можливостіCRM Commentкалендар · збагачування · виписка · платежі · поштова скринькаСайт-розвідкаукр._список · ранг_dataАналітикавеб_analytics · звіт та інгестРегістр можливостейВиводить його і проводи UI + часовий ряд1DECLAREМожливості, не основні редагування2PLUG INCRM · SI · Аналітика автобусів3AUTO-WIREDUI, своєчасність, підказки
Роз’єм заявляє можливості (календар, збагачення, оцінка даних, аналітика...) та OpsIQ автопередача їх в CRM і Site Intelligence, не змінюючи серцевих ресурсів.

Можливості Declare

Декларативний (редагування.json)

Додати <domain>_capabilities масив, кращий для безкодових / торгових автоматів. Домені: crm, site_intelligence.

В коді (connector. php)

Введення crmCapabilities() / siCapabilities() повернення тих же дескрипторів.

Декларуйте CRM-провайдер (налаштування.json)

Сценаріо:
Мета: зробити роз'єм календаря в панелі CRM-планування.
Що робити:

"crm_capabilities": [ { "type": "calendar", "label": "Calendar (Acme)", "actions": ["createEvent","listEvents","freeBusy"], "requires_auth": true } ]

Декларувати провайдера розвідки сайту (settings.json)

Сценаріо:
Мета: подавати локальні дані в Інформаційну розвідувальну діяльність.
Що робити:

"site_intelligence_capabilities": [ { "type": "local_listing", "actions": ["listLocations","listReviews","getInsights"], "requires_auth": true } ]

Можливість автобусів і їх метод поверхні

Крм / календар

createEvent($settings,$params) → {success, event_ id, html_ link, meet_ link}; listEvents; freeBusy. Привід \OpsIQ\CRM\CalendarBridge.

crm / збагачення

enrich($settings,$params) → {success,traits}. Привод від \OpsIQ_\CRM\EnrichmentBridge (також працює автоматично на компанії, що створюються при підключенні постачальника).

Кріплення / вивіска

sendForSignature($settings,$params) → {success,envelope_id,sign_url}. Привод від \OpsIQ\CRM\EsignBridge.

Сайт_intelligence/ Local_listing

listLocations, listReviews, getInsights. Корабельи через роз'єм профілю Google Business

Сайт_intelligence/reg_data

keywordRanks($settings,$params) → {success,ranks}. Привод від \OpsIQ_\SiteIntelligence\RankDataBridge. Корабельні кораблі: SerpApi роз'єм.

Аналіз / веб-іаніліти

report($settings,$params) (синк/експорт) + ingest($settings,$events) (імпорт). Привід \OpsIQ\Анлітика\WebAnalyticsBridge. Суди: Google Analytics (GA4) роз'єм. Дані API для звітів, Протокол вимірювання імпорту. Аналітика відкрита для роз'ємів, таких як CRM + Site Intelligence (domain analytics / analytics_capabilities).

Платежі за платежі

listPayments, customerPayments, createPaymentLink. Привід \OpsIQ\Payments\PaymentsBridge. Показати платежі клієнтів на сайті CRM часовий ряд + відправка платіжного посилання на угоду. Вантажі: Stripe Роз'єм платежів. Домен payments / payments_capabilities.

Поштова скринька / e-mail_sync

listMessages + sendMessage. Привід \OpsIQ\Mailbox\MailboxBridge. Повідомлення клієнтів на Замовнику 360 timeline + надсилайте електронну пошту з угоди. Корабельисть: Gmail + Outlook/Microsoft 365 роз'єми. Домен mailbox / mailbox_capabilities.

ONE OAuth Додаток + ONE перенаправлення

Всі роз'єми Google діляться ONE за допомогою \OpsIQ\OAuth\SharedGoogleApp. Набір google_oauth_client_id/_secret once and Calendar, Analytics, Business Profile + Gmail all work (the per-connector "(optional)" fields are overrides). They also share ONE redirect URI, <site>/connectors.php?oauth=callback (без люка), тому що Google не виводить API додати перенаправлення URI в додаток; OpsIQ відновлює роз'єм з підписаного OAuth state несуть. Зареєструвати, що один URI Після того, як кожен роз'єм Google (презентація + майбутній) авторизується без подальшої налаштування консолі. Повернення SharedGoogleApp::resolve(...)redirect_uri від вашого oauthParams(); ніколи не жорсткий-код перенаправлення з задньої частини. Роз'єми Microsoft роблять однакові через \OpsIQ\OAuth\SharedMicrosoftApp (СхаредМікрософт)microsoft_oauth_*).

Імпортні кнопки є можливість

- Це... Імпорт (гісторична заправка) та Імпортні клієнти кнопки показують ONLY для роз'ємів, які насправді реалізують їх, виявлених відбиттям, тому немає прапора, щоб заявити. Начерга backfill() або backfillChunk() заробляти кнопку Імпорта; перенаречений listCustomers() (повернення {email, first_name, ...} сторінки) для отримання Імпортних клієнтів. Відвідайте AbstractConnector Не можна виконувати імпорт роз'єму.

AI на автобусах

CRM-агент пропонує та броньовані підписи на угоду (\OpsIQ\CRM\MeetingProposer → CalendarBridge, а також автоматичні енріччі нові рахунки, «AI працює CRM» петлі, виконані по роз'ємних автобусах.

Пошук квитків Клієнт-чат (перегляд квитка)fetchTicket())

Дворівневий, не змінився серцевину

Коли відвідувач посилає номер квитка в чаті клієнта ("Що таке статус Т-"000123?"), OpsIQ вирішує його в двох ярусах. Пиріг 1 Читає загальний OpsIQ магазин квитків, кожен роз'єм inbound_ticket Відтворює свої квитки, тому прискорені квитки просто працюють для всіх роз'ємів з нульовим замкненим кодом. Пиріг 2 - це прямий вихід для квитків OLD, які ніколи не були дзеркальними: основні дзвінки OPTIONAL fetchTicket() на кожному ввімкненому роз'ємі, який реалізує його. duck-typed (розкрито method_exists(), як contextProviders()/audienceCatalog()), так підписаний ConnectorInterface - це доручені і роз'єми, які не потрібно (умови електронної пошти/чата, що створюють квитки на рідному) просто оминути його.

⚠️
Обов'язковий і зручний для виконання. fetchTicket() отримує особистість відвідувачів VERIFIED $ctx (client_id + client_email, той же перевірений стиль клієнт чат AI використовує. Вирішуйте клієнтів платформи з цієї ідентичності та запиту на ТІЛЬКИ, що квитки клієнта, потім перегляньте права власності на докладний запис. Повернення null на будь-який пром, неправильний або помилковий, ніколи не є іншим. Повернення null дегради, які грають в "купе не знайдуть цього квитка".
Роз'єм. php, fetchTicket() контракт (повага: роз'єми/whmcs і роз'єднувачі/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
    }
}

Як працює платформа

Про компанію

CapabilityRegistry::providers($domain,$type) список постачальників з встановленим / оновленим / читальним статусом (на основі файлової системи; DB тільки для ввімкнутого прапора).

Вибрані

CapabilityRegistry::active($domain,$type) повертає перший готовий постачальник з його завантаженим роз'ємом і налаштуваннями. Місти називають це замість загартованих муфт.

Налаштування

У мене є можливість, що ще не підключено, UI показує один клік Connect / Install підказка, ніколи не пошкоджений контроль.

Повний посібник

Бачиш? connectors/PLATFORM_CONNECTORS.md (CRM + Site Intelligence) і connectors/CRM_CONNECTORS.md в пакеті.

Конектори

Клієнт самообслуговування шукає та повернення коштів (будувати роз'єм для чату)

Клієнти можуть запитати клієнтів чат AI про свій обліковий запис OWN ("Мій баланс", "ми наказами", "підтримка відповіді на мій квиток") і, якщо бізнес дозволяє йому, запит повернення коштів. Все це працює декларації вашого роз'єму: ні OpsIQ Основні зміни, які не мають жорсткого покриття платформи. AI називає ваші пошуки як рідні інструменти (не можна заборонити один), ідентичність закривається сервером на стороні перевіреного замовника, а результати автоматично підпорядковуються для AI.

Розгортання іміджу замовника

У вас actions.json, що означає, що робота з клієнтами стає все більш високою. "scope":"client", "requires_confirmation":false, "is_destructive":false. Використання "scope":"both" Якщо ж саме пошук необхідно викликати команду в Admin AI. Повна словникова книга – це те, що ви можете замовити для себе як у розділі «Готелі» admin, client, both і system (system ані АІ — API і маршрути вебхока тільки. Будь-який інший відхилений відступ: перевірка пакету не вдається, а дія не встановлюється. Не існує ніякого writing Сфера — асистент письмового запису admin набір дій.

Правило ідентичності (мандатор)

Ім'я параметра ідентифікації з стандартного набору. Заблоковано до перевіреної номеричної ідентифікатори: client_id, clientid, customer_id, user_id, userid, account_id. Заблоковано до цього ідентифікатора як рядок: client_identifier, customer_identifier, account_identifier. Заблоковано до перевіреної електронної пошти: email, client_email, customer_email, user_email. OpsIQ замків і автоматично заповнює його від платформи, що вивірено підписаний замовник; AI ніколи не бачить або обирає ідентичність. Нестандартне ім'я не закривається (похищено, ніколи не витікається).

Що необхідно залишити адмін-тільки

Будь-який не об'єктивний, що подобаються ідентифікацією: fetch-by-bare-id (order_id/ticket_id , в якому ви можете знайти список, які можна переглянути на сайті. "scope":"admin".

Результат формування (шапка-напірні ключі)

Результати пошуку структурно піддаються до досягнення AI: секретні ключі падають, довгі рядки та списки захоплюються, порожні поля обробляються, а плоска карта ширше, ніж ключова кришка зберігає свою відповідь-переклади ключі першим, гроші (credit, balance, amount, total, due, paid), ідентичність (email, *name, phone, company), стан (status, active, expir*, renew*), дати, план / продукт / домен / обслуговування / підписка / замовлення / поля для піктограми, валюта, кількість та stats/summary/totals, перед тим як будь-які залишилися місця йдуть на інші ключі найменшого значення. Практичне керівництво: ім'я ваших полів з цією стандартною лексикою і повернення полів, які відповідають питанням замовника, а не сирому 100-під ключ платформи, поле, назване за межі словникової компетенції для місць лівої частини і може бути оброблена з дуже широкими навантаженнями.

Повернення коштів · що забезпечується ваш роз'єм

Дві сировинні операції, без політики:1) платіжно-перевірочна інформація про фільтрацію за допомогою ідентифікатора та посилання на операцію (у тому числі API необхідно І фільтри, наприклад, whmcs_get_transactions; (2) дія повернення коштів (scope:"admin", requires_confirmation:true, is_destructive:true, ніколи не клієнт-виставлений, наприклад whmcs_refund_order. Бізнес вибирає як ключі в налаштуваннях → Клієнт чат; OpsIQ переокремлює платіжний сервер, що знаходиться на стороні бізнесу, застосовує поле політики (акумуляційний кришк, вікно, щомісячне обмеження), проблеми всередині коробки та файли оглядовий квиток для всіх інших.

No-код конструктор

Редактор дії Connector Builder має такі ж елементи управління: встановити "Ви можете використовувати його" для клієнтів Signed-in, залишити обидві скриньки запису, і використовувати стандартну назву параметра.

Довідкові впровадження

Вручення «Customer Self-Service» connectors/whmcs/actions.json, woocommerce/actions.json, oscommerce/actions.json; повний договір connectors/README.md §8.1–8.2 і ConnectorInterface::registerActions().

Конектори

Гість переглядів — нехай відвідувачі відстежують бронювання, відправлення або замовлення з моменту підписання в (гіста_локап)

Для гостей, які не мають логінів: гостя з підтвердженням бронювання, одержувача з номером відстеження. guest_lookup можливість (Connector Contract, режим: генерований) дозволяє роз'єму служити відвідувачам в чаті AI — немає OpsIQ основні зміни, не існує жорсткості платформи. Ваш роз'єм заявляє, що доводить назву та видимі поля WHICH; OpsIQ виконує перемикачі, дросель і однорідне заперечення.

Модель довіри

Посилання + доказ, ніколи не ідентичність

The visitor supplies the record reference (matched by the regex you declare) plus the proof you pick — normally the email on the record. Your fetch action retrieves the record SERVER-SIDE by reference; OpsIQ's generated provider compares the proof against the FETCHED record. The visitor's input is never trusted, and no verified identity is created: the match entitles the visitor to that one record's allowlisted fields, nothing else.

Уніформа deny (без опадіння)

Неповторний і доказ-місцевий виробляють ONE ідентичну відповідь. AI явно не доведеться, що якщо посилання існує і ніколи не вдається записати деталі. Інтемпти є номінальною для розмови + IP від ядра перед вашим роз'ємом ніколи не проконсультуються.

Двомісний опти-в, як за замовчуванням OFF

Ніщо не обслуговує гостей, доки компанія BOTH переключає: контроль робочого простору в налаштуваннях→Безпека→"Гостові записи в чаті клієнта" (передача і завжди пароля-підтвердження, навіть якщо необов'язкового кроку вимкнено), а власний роз'єм guest_lookup_enabled Налаштування або дозволяє роз'єму самостійно не відкриваючи поверхню гостя.

Присвячена гостьова поверхня

Згенерований реєстр провайдера на guest контекстна поверхня — структурно відокремлена від admin і customer. Виконуючи контекстні провайдери ніколи не проконсультуються з анонімними відвідувачами, а також запрошений постачальник не консультує для зареєстрованих осіб. У ctx він отримує повідомлення про чат, засвідчену нитку і відвідувача (неперевірено) попередньо читать електронну пошту як доказ кандидата — ні на кого не має ніяких особистих даних.

Декларування його в конструкторі

1
Визначте дію fetch

На крок дії додайте чителю-тільки дію, яка повертає запис ONE за посиланням (наприклад, GET /bookings/{booking_number}) і на карті її поля відповіді з псевдонімами: статус, прибуття, виїзд, номер_тип, клієнт_email...

2
Тістечко "Гостові погляди"

На етапі здібностей ввімкніть guest_lookup. Видається спеціальна панель: підібрати дію кисті, ім'я параметра посилання, дати довідковий шаблон (облад regex, такі як \bBK-[0-9]{4,10}\b), ім'я запису («букінг»), а також забрати доказ — повідомлення про запис (відповіли) або ні.

3
Дозволити видимі поля

Зробіть це саме поле, гості можуть бачити. Все інше - DROPPED - ніколи не перевиправлено. Будівельник відмовляється від ПІ-подібних полів (email, телефон, адреса, платіж...) в списку, а випускний конформанс Люкс повторює те ж правило перед опублікуванням, тому ручне випромінювання спеку не може зануритися один в. Зверніть увагу, що встановлення часу перевірки охоплює проявляється і підпис тільки, так що запустити конформаційну комплектацію перед вами судно. Вистосування поля не можна показувати.

4
Ви можете використовувати і ввімкнути

Конструктор видає GuestLookupProvider.php — консервна робота, ідентична кожному створеному пакету — і додає guest_lookup_enabled Щоб переключити налаштування вашого роз'єму. Бізнес-підйомки, два перемикачі та чат AI запускає пошук при відвідуванні запиту на тип запису.

Правила договору

Статус на сервери

Подумайте "що б кур'єрський друк на сторінці громадського відстеження": статус, дати, номер або категорії обслуговування, кількість. Ім'я, контактні дані, адреси вулиці, платіжні дані та безкоштовні текстові ноти не мають місця в анонімному чаті — конструктор і конформанс як від них.

Відповіді на AI від блоку

За допомогою цього провайдера видається можливість відповісти тільки з перерахованих полів і запропонувати квиток на будь-який інший. Не в списку пуску "не доступний у чаті" - за проектом.

Дотримуйтесь інструкцій

Продавець відреагує посилання з останніх повідомлень відвідувачів в одній розмові, тому "і коли є виїзд?" працює без перетягування посилання. Узгоджений посилання і доказовий лист запам'ятовується на чат-подібній мові як CANDIDATES, так що слідувати за процесом не повторюється. Вони тільки кандидати: кожен поворот все ще повторює запис серверу і знову готує доказ до звільнення одного поля.

Пакети для рук

Пакет маркетплейс може самостійно перевозити свій власний GuestLookupProvider.php implementing ContextProviderInterface з surfaces(): ['guest']. Виконайте договір, що створюється шаблоном — викопувати за посиланням, вистосувати серверний рядок, однорідний дені, припуск-разовий вихід — і оголошувати guest_lookup in capabilities. Конформанс виправляє поверхню гостя і відсканує список дозволених для ПІІ.

💡
Відомі варіанти пошуку користувачів не можуть бути використані для отримання інформації про файли cookie.
Конектори

Цільова аудиторія (promo_audience)

Додайте цільові кампанії Акції LIVE клієнту та вексельного стану від вашої платформи: "Чи не оплачений рахунок", "замовлення замовлення", "скасовується підписка". Будь-який роз'єм (перед встановлений, ринковий майданчик або один ви будуєте себе) приєднується до реалізації двох невеликих методів. Ні OpsIQ основні зміни, немає платформи hardcoding: ваш роз'єднувач з'являється як платформа у студії Цільова вкладка зі своїм попаданням фактів, а кілька роз’ємів можна включити на стороні.

Промо-аудит
Мета просування аудиторіїВивірена ідентичність передається на роз'ємну аудиторіюФлагс виклику, що виводить правило, з незакритою ноткою.Мета просування аудиторіїробоча зонаВхідперевірена особааудиторіяФлагс()Ваш роз'ємФАКТИunpaid_invoices = 2РУЛЕнепайд_внуки ≥ 1КампаніяЗакрило нездійсненний клієнт або будь-яку помилку →1TWO METHODSаудиторіяКаталог + Прапори2LIVE STATEНепайний, закінчення, статус3FAIL-SAFEНе проявляє, що не виправдаю людину
Відповіді про роз'єм, що відповідає дійсність у зареєстрованому відвідувачу.

Як працює

1
Познайомтесь з вашими фактами

Впровадити аудиторіюКаталог() на класі роз'єму. Вона повертає етикетку та список ключів, які можна відповісти на вашу платформу. Кожен ключ показує в студії, що випадає під назву платформи.

2
Відповідь на одного клієнта

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
ОДЯГ

Увімкнути роз'єм. Вкладка «Скарбнича та вексельна» вирощує розділ «Клієнт і заготівля», що списує вашу платформу; правила побудови адміністраторів, таких як «непайд_інвойси >= 1"; кожен факт також стає змінною для персоналізації, наприклад {unpaid_invoices}.

Роз'єм. php, повна угода про рекламні роботи
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'],
    ];
}

Правила договору

Здійснити можливість

Додати 'promo_audience' до вашого роз'єму capabilities() масив так і для платформи та ринку, список його як аудиторія-розкриття (відкрито також працює від наявності методу, але розшифровка це чистий сигнал). Перед встановленим connectors/whmcs роз'єм є повним еталонним виконанням.

Ключове замування

Низьке змія_волосся, 2-60 ^[a-z0-9_]+$. Види: номер, текст, bool. Незаборонені ключі, які повернуті аудиторієюФлагс() все ще можна використовувати в правилах, але задекларувати все, що ви підтримуєте так адміністратори можуть побачити її.

Ідентифікатор перевірений

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.

Закрило закриту пальму

На ANY помилки (API вниз, клієнт не знайшов, часовий виїзд []. Правило, чиє факт відсутній робить акцію НЕ показувати. Вексельно-розрахунковий мапу ніколи не досягне неправильної особи; OpsIQ виконає це в правому співвідношенні.

ЕКСПЕРТИВНІСТЬ

аудиторіяФлагс() називається одночасно за роз'ємом на сторінці перегляду, а ОНЛЬКИЙ коли опублікована кампанія фактично використовує правила вашої платформи. Анонімні відвідувачі вартістьють вам нульові дзвінки. Тримайте його до 1-2 API дзвінки; OpsIQ мемолізує в межах запиту.

Оператори, що надаються безкоштовно

Адміністратори об'єднують свої ключі з =, !=, >=, <, <=, містить, є порожнім, ви тільки поставите значення.

Персоналізація токенів

Every fact doubles as a variable in campaign copy: {unpaid_invoices}, {client_status}, plus the built-ins {first_name} and {client_email}. Values are sanitized before rendering.

Некодові роз'єми ринку

Автоматичні факти

Декларативний (JSON-тільки) роз'єми ринку отримують рекламні_аудит безкоштовно: якщо ваш роз’єм заявляє клієнтів/користувачів, рахунків-фактур, замовлень або передплати ресурсів, OpsIQ derives клієнт_status, unpaid_invoices, amount_due, pending_orders, active_підписання та підписка_статус від ваших існуючих пошукових дій. Немає коду у всіх.

Каталог на замовлення (Налаштування.json)

Додати аудиторію_capabilities об'єкт · {"label": "Моя платформа", "під ключ": "відкриті_carts", "лаборатор": "Відкрити кошики", "тип": "номер"}]}, для контролю точно яких фактів (і етикетки) з’являються в студії.

Тестування вашого постачальника

1
Увімкнути роз'єм

Роз'єми > ваш роз'єм > Увімкнути. Потім відкрийте вкладку "Поцілунки" будь-якої кампанії. Ваша платформа повинна з'явитися під "Клієнтом та векселями".

2
Побудувати правило

Додати: Ваша платформа · ключ · >= · 1 і встановити "Взяти клієнтів тільки". Заощаджувати та публікувати.

3
Перевірити обидва напрямки

Ввійти на вашу платформу як клієнт, який відповідає правила (поповнення повинно показати) і як той, хто не має (попереда необхідно тримати приховані). Увійдіть відвідувачів ніколи не збігається з логічною правилами.

Пожежна кампанія з власного коду (помічник із кіптявою)

До чого

За допомогою вбудованих тригерів (delay, прокрутки, виходу-вхід, свічка, натисніть, сторінки переглядаються, чат / квиток активність), ви можете вогнети кампанію з будь-якої точки вашого сайту або роз'єму переднього входу, після успішного кроку виїзду, коли кошик занепадений, коли ваш SPA змінює маршрут і т. д.

Яка

Встановити старт кампанії Нетиповий з назвою заходу (наприклад, checkout_failed), потім виклик глобального гака з вашої сторінки:

Ваш сайт / роз'єм переднього класу 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');
💡
У разі, якщо не переходить на ціль або частоту. Це тільки випускає «хто». Похід все ще має пройти кожну правило (гео, аудиторія, згода, капи) до неї показів.
Повний інструкції з проектування, блоків, аналітики, A/B, видавництво) живе в центрі допомоги додатку під час Залучення → Акція Studio. У можливості тут автоматично відкриваються з будь-якого роз'єму ENABLED в роз'язках / або ринковихмісників/. Немає нічого реєструвати. Виправте два способи, а студію – це інше.
Конектори

Можливості роз'єму огляду (Contract 2.2)

- Це... survey Можливість дозволяє будь-якому майданчику поставляти перевірені адаптери ідентифікації клієнтів, факти аудиторії, безпечні змінні та кандидатські кандидати на Опитування. Це незалежно від того, що він є незалежним від promo_audience і не дає права роз'єму опитування, відповіді, аналітика або електронної пошти.

💡
Статус на сервери 2.2, SurveyConnectorInterface, виділена панель конструкторів SurveyProvider.php, пакет метаданих та конформаційне виділення всіх суден. Витрата ще не проводиться: SurveyConnectorRegistry реалізовано та протестовано, але не вимагає жодних перевірок на основі даних, тому здоров'я провайдера не є поверхневим у додатку адміністратора UI і не опублікований пакет роз’ємів продемонструє можливість. Визначено-точне обстеження із зазначенням випадків, призначених та змінної інтеграції, матеріалізація CRM Outreach та перша завантаження постачальників картоппінгів залишаються окремими етапами. Побудувати цей контракт зараз; очікувати часу запуску споживання в більш пізній реліз.

Обов'язки постачальника

Каталог та факти аудиторії

Декларовані канонічні факти і вирішувати значення тільки для серверно-перевірених, робочих просторів суб'єкта. Типові факти включають order_count, last_order_status, cancelled_order_count, customer_created_at, active_subscription_count, past_due_invoice_count і open_ticket_count.

Вимірюваний каталог та значення

Опишіть клієнт, обліковий запис, замовлення, підписку та підтримку змінних з типом, чутливістю та дозволеним контекстом. Копія опитування вимагає відпадання і вихідного коду.

Отримувач графічного зображення

Необов'язково заохочувати кандидатів CRM Зроблено зі стабільними зовнішніми ідентифікаторами, обмеженими сторінками, детермінованими курсорами та згодними метадані. Опитування звільняє обрану аудиторію перед будь-яким відправленням.

Зручність

Прийміть ідентичність тільки від служби ідентифікації даних Survey, після того, як підписувати токени, витривати, призначення, роз'єм і перевірку робочого простору. Переглядач-наповнювач електронної пошти, ідентифікатор, теги або рахунки за векселями ніколи не є авторитетними.

Здоров'я

SurveyConnectorRegistry is designed to report compatible, blocked and unavailable providers without exposing settings, paths, raw identities or exception messages, and a blocked provider can never be invoked. The reporting surface is not yet exposed in the admin UI: today a blocked provider is simply inert.

Правила несуть

Незазначені ключі, неправильні типи, негабаритні значення, предметні мітки, роз'єми часу і невідомі ідентичності відхиляються. Цільове правило, що потребує недоступного факту не відповідає. Сторінки одержувачів прикоповані і перевіряють. Чутливі значення ніколи не з'являються в публічному перегляді або журналах.

Будівельні ворота

Договір 2.2 кораблі на вході реєстру, інтерфейс, панель картографування опитування, створене SurveyProvider.php, можливість версія, РЕАДМЕ/розробник посилань та конформаційних світильників. Торгово-промислова палата, довідники, міст СааС і локальні профілі PHP включають його; Стандарт API роз'єми опція в. статичні ворота відхиляє постачальника опитування, який викликає простір назв Акції, таблицю або можливості.

💡
Копіювати з просування імпортувати: Будівельник може перевести сумісну картографію Акції, зберігаючи повну копію опитування та перевіреність записів. Видалення або зміна макета акцій не повинна змінювати поведінку обстеження.
Конектори

Можливість зворотного зв'язку (Contract 2.2)

- Це... reply_feedback можливість відтворити власні рейтинги платформи в режимі реального часу OpsIQ. У зірці замовнику відповідає співробітникам WHMCS«На землі, які знаходяться на СЕМБ відповіді»OpsIQ admin нитка, з тим же чіпом, агентським кредитом, записом сторінки зворотнього зв'язку та обчисленням продуктивності як рейтинг, наведений на екрані OpsIQ порталний квиток. Один накопичувач, один чіп, один трубопровод; роз'єм тільки перекладається.

Написати шлях

Ось і одна правда. OpsIQ Квитки порталу напишіть рідно. Платформові квитки, що пливуть через роз'єм, і основні землі кожного заходу по ReplyFeedback::recordMirrored(): ті ж стовпчики, штатно правило, один-рейтинг-перекладки сеймантики, робоча космічна печатка і голос Замовника, що індексує портал написання використовує. Роз'єм ніколи не пише зворотні рядки.

Конформування (чотири файлів, потім перевизнання)

1
connector_contract.json

Add the capabilities.reply_feedback entry: version 1.0, the ReplyFeedbackConnectorInterface, methods replyFeedbackCatalog and pullReplyFeedback, implies inbound_ticket.

2
settings.json

Додати відповідь_feedback до списку можливостей. Це те, що читання з'єднувача.

3
spec.json

Declare reply_feedback. modes (poll and/or webhook) і рейтинг платформи масштабу. Це те, що прочитає фіксаторні ворота.

4
Клас ходової їзди

Впровадити інтерфейс, перерахувати відповідь_повернути в можливості(), потім відписати пакет.

Обов'язки постачальника

Каталог

Режими Declare, власний рейтинговий масштаб платформи (core normalises to рідний 1-5), і будь-які реакції токенів. У каталозі необхідно погоджуватися з специфікацією.json.

Переклад тяги

PullReplyFeedback повертає канонічні події: платформа квиток id, платформа відповідь id. рейтинг, опціональна реакція/комментація, подана час і стабільна подія_id. Вона читає та переводить. Він ніколи не пише.

Ідемпотенції

Захід_id є стабільним за відгуками ДЕРЖАВИ, тому релейований захід – це неоп і змінний рейтинг перезаписів (найсвіжіші виграші, як портал).

Навчальна дисципліна

Сторінки з'єднуються і детерміністичними; курсор, який не завадить закінчення виконання. Історичні заправки зливаються як прокатний вікно, ніколи не один гігантський витяг.

Безпека

Не конфігурація, повертає порожній повну сторінку замість викидання. Конформаційний бігун зникає зі списком порожнього аргументу.

Недокладна роздільна здатність

Ядро вирішує кожну подію на локальну відповідь дзеркальним маркером, що вже є штампами (відповіді)<slug>:<ticket>:reply:<reply>). У випадку, якщо не можна вирішити, ніколи не вгадуються; відгуки тільки прикріплює до відповідей персоналу; а також агентський кредит завжди надходить з наявного автора відповіді. Рейтинг пишеться ніколи не змінить авторське право. Саме тому можливість вимагає inbound_ticket або ticket_mirror.

Універсальний приклад: WHMCS

WHMCS зберігає рейтинги зірок клієнта в режимі реального часу tblticketreplies.rating. Теґи WHMCS роз'єм оголошує режим опитування з 1-5 масштаб, кораблі ticket_reply_ratings естафета в його мостовому файлі і перекладається кожен рядок на захід, чиї посидії відповідають whmcs:<ticket>:reply:<reply> Маркери свого квитка дзеркальні вже штампи. Після оновлення роз'єму перекопуйте файл міст до WHMCS сервера, щоб нова команда там була.

💡
Повний договір розробника з інтерфейсом, формою події, правилами нормалізації та переліком контрольних характеристик: doc/contracts/TICKET_REPLY_FEEDBACK_CAPABILITY.md в OpsIQ Пакет. Приймання: ставка відповіді всередині платформи, очікування на часове опитування, і той же відповідь в OpsIQ показує чіп, що сторінка зворотного зв'язку списує його і повторює події нічого.
Конектори

Можливості злиття квитків (Contract 2.4)

- Це... ticket_merge Можливість зробити злиття квитків в OpsIQ злив на кожній підключеній платформі. У збереженому місці квиток отримує повідомлення про об'єднання квитків, починаючи з кожного з повідомлень про відкриття квитка, замість того, щоб закритий квиток був закритий.

Чому це існує

Об'єднання в OpsIQ перемістить кожне повідомлення про з'єднання квитків в квиток, що зберігається і видаліть об'єднані квитки. До Договору 2.4 роз'єм чути тільки ticket.deleted за кожний об'єднаний квиток. WHMCS закритий квиток і збережений WHMCS квиток ніколи не отримав те, що клієнт спочатку писав: тема показала [MERGED] і зміст був відсутнім.

Що таке ядро надсилає

квиток. merged (в залежності від злиття)

ticket_id, ticket_number, предмет і external_ref квитка КЕПТ; native_table (opsiq_tickets); site_key; джерела, зливні квитки найстаріші першими, кожен з ticket_id, ticket_number, суб'єкт external_ref, client_name, client_email, created_at і повідомлення [{reply_id, author_type, author_name, created_at, тіло}]; merged_by; merged_at. Повідомлень - це клієнтовидна розмова, захоплена перед переходом. Внутрішні ноти ніколи не включені.

квиток. deleted (за з'єднаний квиток)

Натюрморти, тепер з merged_into {ticket_id, ticket_number, external_ref}. Ядро не доставляє його до роз'єму, який заявляє ticket_merge; інші споживачі можуть розповісти про злиття з видалення.

Виїзні вебхуки

Квитки. merged - це доставляється подія. A SaaS webhook endpoint підписується на квиток. deleted також отримує квиток. merd, тому інтеграція побудована перед 2.4 чути злиття.

Що таке роз'єм

Деклар

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.

Злийте рідно, коли ви можете

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.

В іншому випадку додайте приватну замітку

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.

Звіт, що не злилося

Повернути {ok, режим, злиті, зауважити, немерпнути, помилка}. Кожна з'єднана копія ви не можете об'єднатися йде в незрівняному, і ядро стосується вашого нормального видалення обробки (закривати або видалити з mirror_deletes) щоб точно ті. Повернення режиму не підтримується тільки тоді, коли платформа не має злиття і відсутності приватної ноти. Транспорт або auth невдача ok=false з причиною; він записаний в Діагностика.

Заслужений букмекер

При цьому параметри дзеркала, які затворять інші рейси з'єднання воріт.

Злиття, які починаються на платформі

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.

Змішані виконання

WHMCS_

MergeTicket (ticketid = kept ticket, mergeticketids = merged tickets) when both are in WHMCS; AddTicketNote with the transcript otherwise. The relay's TicketMerge hook merges the OpsIQ copies when staff merge in WHMCS.

Zendesk_

ПІСЛЯ /api/v2/tickets/{id}/merge.json з приватними коментарями злиття (до п'яти квитків на дзвінок), плюс трафарет як приватний коментар до збереженого квитка, тому що Zendesk закриває з'єднання квитків без переміщення їх коментарів.

OpsIQ Міста СааС

ПІСЛЯ /v1/tickets/{id}/merge з source_ids, яка переходить на портал відповіді та вкладення; внутрішня відповідь несе трафарет для квитків, які ніколи не були на порталі. А /manage об'єднує OpsIQ копії.

Конструктор з'єднувачів

ticket_merge виводиться, ніколи не торкнувшись: створений пакет заявляє його, коли він зв'язує квиток на платформу, який створює (квиток.відтворений підписник з посиланням на квиток), обробляє квиток.Видалити або оголошувати ticket_mirror. На крок квитків, під Торгівля, підібрати дію злиття платформи (карта об'єднання.target_remote_id, і об'єднання.source_remote_ids або об'єднання.source_remote_id) і приватний замітка дії (карта замітки.remote_id і замітка.body). Згенерований об'єднанняТікець () використовує обидва. З ні, будівельник попереджає, що зливні повідомлення квитків не досягне платформи.

💡
Повне контракт: doc/contracts/CONNECTOR_CONTRACT.md, розділ Квиток об'єднує. Прийняття: злиття двох квитків в OpsIQ, які існують на платформі, після чого відкрити збережений квиток на майданчику. Перше повідомлення з'єднаного квитка є тут.
Конектори

Роз'єм ринку

Місце проведення дозволяє виявляти, встановлювати та публікувати роз'єми, побудовані громадою.

Торговельний майданчик
Роз'єм ринкуПошукова сітка роз'ємних карток з категоріями, встановити кнопки і зіркові рейтинги.Роз'єм ринкуробоча зонаПошук роз'ємів ...КалендіСлуханняВстановити★ 4.8浜у 灞 绀CRM CommentВстановити★ 4.6ПоштиЕлектронний листВстановити★ 4.7Швидкий переглядБухгалтеріяВстановити★ 4.5ТвіліСМСВстановити★ 4.9ВідправленняДокументиВстановити★ 4.41DISCOVERРоз'єми спільноти2КОМПЛЕКСОдин клік3PUBLISHПідписайтесь на розсилку
Переглядайте роз'єми спільноти, встановіть один клік або зареєструйте і публікуйте власні, попередньо встановлені та ринкові рівні як пошуково.

Пошук і установка роз'ємів

1
БРОНШ

Перейти до Connectors > Marketplace. Пошук по назві, категорії або платформи.

2
Редагування

Перевірити опис, підтримувані дії та рейтинги.

3
Встановити

Натисніть кнопку Встановити. Завантажуйте та встановіть роз'єм marketplace_connectors/.

4
Настроювання

Увімкніть його в роз'ємах, введіть API _- Криміналами та перевірте.

Видавництво роз'єму

1
Побудова та тестування

Використовуйте конструктора роз'ємів. Перевірте всі дії.

2
Пакети

Генерувати профіль.json, дії.json, знання.json, і файли PHP.

3
Підпис

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
Написати

Завантажуйте через потік подачі інформації на ринок для перегляду.

Двоярусні яруси

роз'єми / — що насправді працює

Ведуться роботи з відкриттям в режимі реального часу. Все тут живе: роз'єми, які здаються OpsIQ_, що встановлюється з ринку, і що конструктор Connector публікується на цій установці.

маркетплемін_поєднувачі/ — де запроваджуються пакети

Видання SOURCE для пакетів першого ринку. Це не корінь відкриття: ніщо тут живе до того, як воно упаковано, підписано, висаджується в каталог і встановлена, при якому вказується копіювання земель у роз'ємах /.

💡
Шукайте в обох місцях. Ви замовляєте marketplace_connectors/ це не копію, яка працює — встановивши копії її в роз'єми/, і тільки що копіювання відкривається за робочий час. Stripe, BigCommerce, Magento 2, PrestaShop, OpenCart, Amazon SES, Postmark і Resend - це всі пакети ринку: встановити один до очікувань, щоб знайти його в роз'ємах.
Про компанію

API та конструктор webhook

Про нас API і Webhook Builder дозволяє створювати користувацькі API кінцеві точки і вебхоок слухачів всередині OpsIQ без написання сирої PHP.

API будівельників
API та конструктор webhookЗбірник, що вибирає тип тригера (включний вебхоок, графік, подія, керівництво), який подає в конфігуровану дію.API & webhook конструкторробоча зонаТРИГЕРВхідний вебхоокГрафік роботи (крон)OpsIQ подіяМагістрДіяКарта вхідних полів →Створити квиток / повідомити / зателефонувати APIЗберегти кінцеву точку1ТРИГЕРІВWebhook · Графік · ручний2NO RAW PHPВбудований UI3АКЦІЇПоле карти, потім запустіть
Побудувати кінцеві точки без сировини PHP: вибрати тригер (включити вебхоок, графік, захід або керівництво), потім на карті поля для дії.

Тригери

Подія

Запуск, коли щось відбувається в OpsIQ, або коли зовнішній система розміщує відповідну подію на ваш вебхок URL. Введіть назву заходу, наприклад квиток.created.

Розклад

Використовуйте одну з вбудованих інтервальних подій, як ім'я події: cron. хвилини, cron, годинно або cron-daily. Дії та екран Triggers мають кнопки для цих, так що вам не доведеться пам'ятати їх.

Пхвапи

Запуск, коли адміністратор просить AI на неї звичайну мову. Додати фразу, яке повинно відповідати, наприклад знайти клієнта.

Вхідний вебхоок

Зовнішня система відправляє HTTP POST на вашу OpsIQ веб-сайт URL з назвою події. Будь-який тригер, який слухає для цієї події пожежі.

Вже зараз можна запускати: умови

У випадку, якщо це передбачено дані, незважаючи на те, що події відбуваються в режимі реального часу.

Поле

Шлях до даних заходу. Використовуйте точка для вкладених значень, наприклад, клієнт. email.

Поспішайте, будь ласка, зв'яжіться з нами

Вибирайте, чи повинні відповідати кожен правила або лише один з них.

Тести

рівні, не дорівнює рівних, містяться, не містить, починається з, є одним із, не одна з. Збігаючись ігноруванням капіталів.

Тести

більше, ніж, принаймні, менше, ніж у більшості. Кількість написаних як текст все ще порівнювати правильно.

Тести

не порожній.

Тільки сторінка на сайті інженера для термінових квитків

Сценаріо:
Подійний квиток. created, з одним правилом: пріоритет дорівнює терміновості.
Що робити:

Акція діє на термінові квитки і пропускає все інше. Не потрібно фільтрувати, що необхідно в кінці.

💡
Якщо ви залишаєте правила порожнім, то вінець працює на кожному матчі події, яка є такою ж поведінкою, як і раніше умов.

Акції

Надіслати webhook

Надіслати HTTP POST на зовнішній URL з користувацьким завантаженням.

Створити квиток

Створіть квиток підтримки за допомогою зазначеного відділу, предмету та повідомлення.

Надіслати лист

Надіслати електронну пошту за допомогою спеціального шаблону.

Записатися на оновлення

Оновлення клієнтського, квитка або CRM-запису.

Запуск роз'єму дії

Виконайте зареєстровану дію з вбудованого роз'єма з його правилами дозволу на підключення та підтвердження.

Пробіг OpsIQ Головна API Вступи

Пошук у повному списку з назвою General API каталог. Поля, області дії, права доступу, підтримка підтвердження, ідемпотентності та пробного запуску походять з договору дій у реальному часі; поток роботи виконується всередині збереженої робочої зони і контексту адміністратора.

Відправка на послуги API

Використовуйте гніздо Native API Читання або підтверджена Нативна API Напишіть дію, коли кінцева точка провайдера не має фігурної дії. Цілі залишаються всередині роз'єму і тільки відносні шляхи постачальників приймаються.

Будівельник Дійс і Triggers, /api/v1.php, OpenAPI і Postman використовують той же ActionContractRegistry, тому вибіркова дія не може дратувати з документації runtime.
Про компанію

Тригери кулінарні книги

Готові рецепти запуску-action для загальної автоматизації.

Як працює
Тригери кулінарні книгиПриплив рецепта: час відступу. Відкладаємо webhook пропускає фільтр виробництва, потім зацікавлюємо для створення термінового квитка і повідомляє Slack.uptime.downвеб-сайтякщо продfilterСтворити терміновий квитокПовідомити Slack #ops
Тригери кулінарні книги

Авто-створення квитка з моніторингу

Сценаріо:
Система моніторингу надсилає POST при переході сервера.
Що робити:

Trigger: Inbound webhook Condition: payload.status = "down" Action: Create ticket · Dept: Technical, Subject: "Server {{payload.hostname}} down", Priority: Urgent

Slack повідомлення про великі замовлення

Сценаріо:
Slack повідомлення кожен раз клієнт розміщує замовлення $100.
Що робити:

Trigger: Event (order.completed) Condition: order.amount > 100 Action: Send webhook to Slack incoming webhook URL with order details

Щотижневий дайвінг електронної пошти

Сценаріо:
Резюме електронної пошти для управління кожним понеділокм в 9 ранку.
Що робити:

Trigger: Schedule (Monday 09:00) Action: Send email with last week's stats pulled from the REST API

Ескалатні стебла квитки

Сценаріо:
Якщо квиток не відповідає за 24 _години, призначте команду.
Що робити:

Trigger: Schedule (every hour) Condition: ticket.status = "Open" AND ticket.last_reply_age > 86400 Action: Assign to team-lead, add internal note

Про компанію

Побудувати перший ефект

Цей прохід створює простий ефект роз'єму від подряпин.

Будівельні дії
Будівництво акціїФорма дії: ім'я lookup_order, запит GET /orders/{id}, типований ід параметр, а також проходження 200 Тестування.Нова акціяробоча зонаНова акціяІм'яlookup_orderЗапитGET/orders/{id}Парамid · рядок200 _Замовити1DEFINEІм'я, метод, кінцева точка2PARAMSТипові входи3ЦЕНА ЗА ЧАСЖиттєві 200 результат
Створіть одну дію з нуля. Назвіть його, встановіть метод і кінцеву точку, задекларуйте типовані парами та перевірте її на живий 200_.

Два види дії

Перед тим як почати, вирішіть, що потрібно. Обидва налаштовані в одному екрані.

Електронний документ API

Акція надсилає запит HTTP на вашу платформу. Виберіть це, коли OpsIQ Вам потрібно дістатися і зробити щось на боці.

Запустіть дію роз'єму

Дія працює щось встановлене роз'єм вже забезпечує. Виберіть це, коли робота вже доступна і ви просто хочете запустити його. Ви підбираєте дію з списку, тому нічого не пропускаємо.

Другий варіант - як ви перевикористовуєте всі ваші роз'єми вже можуть зробити без будівництва будь-якого з нього знову: читати нитку квитка, подивіться клієнт, імпортувати контакти і так далі. Підберіть дію роз'єднувача від випадання і ви робиться.
1
Планувати дію

Приклад: "lookup_product". Знайдіть продукт за назвою, ціна повернення, запас та опис.

2
Визначте в дії.json

Додати визначення дії:

Дії.json — реальна форма проявляється
{
  "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" }
      ]
    }
  ]
}
⚠️
Три речі, які роблять дію не реєструватися на всіх. action_id є ОБЛАДНАННЯМ і повинні бути 2 до 100 Символи нижньої літери, цифри та низу — запис без одного відхиляється прямо. Проявляється об'єкт з "actions" LIST, не карта, що закривається ім'ям дії. І відповідь на картографування є "повернення" з шляхами DOTTED (data.id), ані JSONPath ($.data.ID) — немає "відповіді", "метод", "endpoint" або "парам" ключ в будь-якій точці реєстру.
3
Тест з сухим руном

У покроковому огляді Connector Builder натисніть кнопку Сухий запуск. Він працює повним контрольним пунктом на вашому пакеті і, коли ви подали облікові дані, робить реальний тест з'єднання. Він не використовує дані про зразок.

4
Використання штучного інтелекту

Задайте адмін AI: "Подивитися продукт Widget Pro." AI повинен знайти і виконати дію.

⚠️
Додавання дії до дій.json не створює маршрут AJAX, тому немає нічого регенерувати. Роз'ємні дії закріплюються в OpsIQ коли роз'єм ввімкнено або його налаштування зберігаються: перезбережіть роз'єднувач і з'являється нова дія. інструменти/gen_route_registry.php охоплює відправку адміністратора AJAX і не має підшипників на дії роз’єму.
Про компанію

Вхідні кінцеві точки заходу

Прийміть кінцеві точки, які приймають участь у підписанні JSON від іншої системи і перетворюйте її в єдину контактну активність, яка може годувати часові лінії, забивання та робочі процеси.

Екран продукту
Вхідні кінцеві точкиКожен вхідний джерело має власний URL_, секрет, картування та недавній результат діяльності.Вхідні кінцеві точкиробоча зонаКУРСИ5ACCEPTED12.4kREJECTED18ОГЛЯД РОБОТИПлатформа за рахункамиАбонементні подіїЗдоров'яДодаток для продуктуРеєстрація та події використанняЗдоров'яІдентифікатор заходуprovider_event_idМолоденькаПідписХ-OpsIQ-Під'єднання-СиньйотураHMAC_1CREATE SOURCEURL таємниця2MAP PAYLOADЕлектронна пошта, подія та ID3ВЕРІФІКHMAC потім інгест
Кожен вхідний джерело має власний URL_, секрет, картування та недавній результат діяльності.

Створення одного джерела на систему відправлення. OpsIQ генерує URL/Тане і секрет. Надіслати JSON з Content-Type: application/json і підпишіть точний сирий корпус за допомогою HMAC-SHA256:

X-OpsIQ-Inbound-Signature: sha256=<hex hmac>

Карта сайту JSON Шляхи для контактної електронної пошти, назви події та додаткового ідентифікатора заходу. Ідентифікатор заходу є кращим ключем від дедуплікації. Прийнята активність надходить в лінію контакту і може вплинути на скорочення, сегменти, правила життєвого циклу та робочі процеси.

Виводити недійсні підписи перед оформленням бізнес-даних. Повертати секрет, оновивши обидві сторони всередині контрольованого вікна; не ввійдіть секрет.

Про компанію

Виїзні операції вебхока

Включення вебхока адміністрування створює підписки, контрольні точки та монітори асинхронної доставки і здоров’я трейдингу.

Екран продукту
Виїзні вебхукиВидалені сторінки вебхока списки HTTPS кінцевих точок, підписки на події, здоров'я доставки та один клік підписаний тест.Виїзні вебхукиробоча зонаENDPOINTS7SUCCESS99.2%КРЕДИТУВАННЯ4ОГЛЯД РОБОТИДзеркальний CRM* і угода.*Здоров'яПідтримувані автобуси.* і чат.*Здоров'яСклад даних*РетрицяТест-доставкаЗареєстрований зразок корисного навантаженняГотові1SUBSCRIBEВеб-сайт: www.facebook.com URL та події2AUTHENTICATEHMAC підпис3OBSERVEДоставка залізниця і рети
Видалені сторінки вебхока списки HTTPS кінцевих точок, підписки на події, здоров'я доставки та один клік підписаний тест.

Повні адміністратори створюють HTTPS кінцеву точку, оберіть конкретні події або дикийкартку, зберігайте секрет безпечно і надішлемо тест. OpsIQ призначає сире навантаження з HMAC-SHA256:

X-OpsIQ-Signature: sha256=<hex hmac>

Перевірити підпис до десеріалізації або дії. Доставка асинхронно і автоматично перераховується після приблизно 1 хвилина, 5 хвилини, 30 хвилини, 2 час і 12 час. Використовуйте останні-відкладні рейки для перевірки стану, коду відповіді та кількості спроб.

Ваш ресивер повинен бути idempotent, оскільки будь-яка система асинхронного може переозброєний. Повернути відповідь 2xxx тільки після міцного прийняття.

Про компанію

Вебхуки

Webhooks дозволяє зовнішнім системам не повідомляти OpsIQ коли щось відбувається (включно), і нехай OpsIQ визначте зовнішні системи, коли щось відбувається внутрішньо (вихідний).

Вебхуки
Виїзні вебхукиВимкнути екран вебхоок: таблицю кінцевих точок з назвою, підписані події, останні дати статусу доставки та кнопку Надіслати.Виїзні вебхукиробоча зонаЕНЕРГЕТИКИ+ Заощаджувати кінцеву точкуІМ' ЯОРЕНДАДИТЯЧІSlack#продаж-вставкаhttps://hooks.slack.com/…crm. deal. won, замовленняТестуванняДзеркальний CRMhttps://api.acme.com/hookконтакт.*, ticket. створеноТестуванняЗапірhttps://hooks.zapier.com/…chat.startedТестування1ENDPOINTSІм'я, події URL2SIGNEDHMAC + автозабезпечення3SEND TESTПеревірити поставки
Відправлення екрана: кожен кінцевий пункт з його подіями, недавнє здоров'я доставки і один клік Надіслати тест, підписаний і перерозподілений.

Виїзні вебхуки

Підприємства

Перейти на налаштування > Webhooks. Додати кінцеву точку URL і виберіть події для отримання.

Події

Підписатися на конкретні події, або ["*"] для всіх. Повний перелік для вашого встановлення нижче, і webhooks.events.list Повернути його як JSON.

птиця

Від'ємні поставки птиця з постійним відключенням. Після 15 послідовні збої, кінцева точка автоматично відключається.

Підписка

Кожна доставка підписана. X-OpsIQ-Signature carries v2=<hex>, і підписаний рядок version.timestamp.delivery_id.body — не тіло окремо. Завжди перевірте, і завжди перебудуйте рядок точно. Див. приклади нижче.

Захист SSRF

OpsIQ не надішліть на приватні / внутрішні IPs (127.x, 10.x, 172.16.x, 192.168.x, 169.254.169.254).

Доставка асинхронів

Webhooks поставляються через чергу роботи, не блокуючи OpsIQ _.

Стабільний ідентифікатор заходу

Кожен захід має унікальний захід, який залишається одним з ключових подій для дедустелювання.

Що приїжджає з доставкою

Х-OpsIQ-Події

Назва заходу, наприклад ticket.created.

X-OpsIQ Доставка

Доставка id. Вона залишається однаковою по відношенню до речення — використовувати його для ігнорування дублікатів.

X-OpsIQ Timestamp

Унікс секунди при підписці часу. Від'єднати все старше п'яти хвилин.

X-OpsIQ-Сигност

Підписуйтесь на розсилку v2=<hex>. Спліт на =: ліва сторона - версія, правий бік є значення, яке ви порівнюєте.

X-OpsIQ-Signature-Version

Схема в експлуатації, в даний час v2. Читання його з заголовка, а не твердого покриття, і ваш код зберігає роботу, якщо V3 коли-небудь додано.

⚠️
Підписано рядок version.timestamp.delivery_id.body, не сире тіло на власній. Похитається тільки тіло є однією з найпоширеніших причин, що перевірка не виходить — кожна справжня доставка відхилена і кінцева точка виглядає порушено.

Перевірити доставку

PHP · перевірити 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 · перевірити OpsIQ веб-сайт
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 });
});

Кожна подія, яку можна надсилати

Ви маєте право на створення, тому завжди відповідає версії.

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 Повернути цей самий список, як JSON_, так що ваш код ніколи не має жорсткого коду.

аналітика (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.

Торгівля (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.

контакт (6)

contact.conversion

Fired by OpsIQ.

contact.erased

Fired by OpsIQ.

Контакти. lifecycle_changed

Fired by OpsIQ.

Контакти

Fired by OpsIQ.

Контакт 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.

кішка (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.

Крм. 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.

Електронний лист (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.

UKRSIBBANK BNP Paribas Group відкрив можливість покупки валюти онлайн через UKRSIB online (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.

Гарантійне забезпечення (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.

Забронювати (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.

Як перевірити вебок локально?+

Use ngrok to expose your local server. Set the webhook endpoint to your ngrok URL.

Що робити, якщо мій кінець тимчасово вниз?+

OpsIQ ретрі з термінальним відключенням. Якщо ваша кінцева точка відновлюється в межах вікна, не втратить події.

Про компанію

API-ключі

API ключі автентифікувати запити до OpsIQ РЕСТ API. Кожен ключ має об'ємні дозволи.

API-ключі
API-ключіAPI ключний екран: панель випуску з рівнем доступу та стяжки для об'єму, при цьому список наявних масованих ключів із кнопками відкликання.API-ключіробоча зонаВидання ключаДоступПрочитатиЗниженаПромисловістьcontacts.readtickets.readevents.writeКлючові слова:Наші ключіІнтеграція Zapieropq_••• ••4f2aРедакціяМобільний додатокopq_••••91c7РедакціяЕкспорт аналітичних матеріалівopq_••• ••2db0Редакція1SCOPEDЧитання на час або обмеження2PER-ACTIONВиберіть точні обсяги3REVOCABLEПоворот будь-який час
В режимі реального часу API _ключний екран: виписка масштабних, читаючих або обмежених ключів, забравши точні обсяги і відкликати будь-який ключ в будь-якому режимі.

Створення API ключ

1
Перейти до вмісту > API Ключі

Перейти до API керування ключами.

2
Натисніть Створити ключ

Подаруйте йому дескриптивну назву.

3
Виберіть обсяги

Надайте ключ тільки те, що він потребує. Сфери приходять в читання і писати пари на область, тому звітна інтеграція може бути надане читати і нічого іншого.

Доступні обсяги

Підберіть найвузкіший набір, який робить роботу. admin Використовуйте його тільки тоді, коли ви дійсно потребуєте широкого доступу.

крм. ред. / рм. р.

Контакти, компанії, угоди, діяльність, сегменти, вихідні, перетворення, життєвий цикл та CRM вебгоки.

Авіаквитки.

Список та читання квитків та їх повідомлення; відповідь, оновлення, відкрити і запустити об'ємні операції.

бесіди. читати / розмови. write

Читати бесіду та історію повідомлень про життя; надсилати повідомлення, призначити і змінити статус.

kb. read / кб. write

Знання базових записів.

чат. read / чат. write

Збережені шаблони відповіді.

connectors.read

Дивись, які встановлюються роз'єми, що вони можуть зробити, і перевірити їх значення.

automations.read

Переглядайте свої дії, запускає та їх історію запуску.

departments.read

Послуги з маршрутизації.

notifications.read

Повідомлення про надання послуг оператору.

analytics.read

Звітні розділи, CSV експорт та визначення запланованих звітів.

сайт_intelligence. read

Моніторинг сайтів та їх SEO-аудит.

files.read

Зареєстровані посилання для вкладення.

status.write

Компоненти сторінок та інциденти

Мистецтво

Аспірантура: проект, підсумок, переклад, резит, композ, аналіз.

адміністратор

Все, в тому числі невелика кількість чутливих дій, які свідомо не досягаються будь-якої вузької сфери: стирання контакту, зміни налаштувань конфіденційності та читання входу.

💡
Зателефонуйте мета. actions з вашим ключем, щоб побачити саме те, які дії можуть працювати на вашому встановці. Це завжди надійніше, ніж робота зі списку.

Рівень доступу

Всі

Ключ може викликати всі його обсяги.

Прочитати

Кожен запис відмовлено, що всі сфери говорять. Найбезпечніший вибір для звітності, панелей і будь-яких, які ніколи не повинні змінювати дані.

Знижена

Ви вказали про те, що ключ може викликати. Будь-який інший відмовлений, навіть у межах дозволеного обсягу.

4
Скопіювати ключ

Почати з "опк_". Зберігати його безпечно.

🚫
Ніяких акцій API ключі в публічному коді, клієнт JavaScript, або контроль версій. Використовуйте змінні середовища.
Про компанію

Підключіть свій сайт

Про нас OpsIQ Віджет є JavaScript Якщо ви хочете зробити свій сайт для відстеження, створення AI чату та ідентифікації клієнтів.

Як працює
Підключіть свій сайтмітка одного облікового запису зліва і, праворуч, веб-сторінка з OpsIQ чат бульбашки з'являються в кутку.<!-- paste before </body> --><script src="https://cdn.opsiq.io/w.js" data-site="ws_8a2f" async></script>
Підключіть свій сайт

Базова установка

Базовий віджет хіппе
<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.

атрибути конфігурації

data-site-key

Обов'язкові для вашого сайту з підключених сайтів.

data-mode

Додатково. «Читати» (за замовчуванням), «витки», або «вті».

data-position

Додатково. "низь-право" (за замовчуванням) або "лівий".

data-color

Додатково. Первинний колір шістдесяти коду.

data-greeting

Додатково. Імператорне привітання

data-language

Додатково. UI мова: "en", "es", "fr", "de", "pt", "ar" і т. д.

data-identity-token

Додатково. Сервер-генерований підписаний токени ідентичності.

SPA-провайдер

Ручний контроль маршруту 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,
}]);

Правила ЦСП

Правила CSP для віджету
script-src 'self' https://your-opsiq-domain.com;
connect-src 'self' https://your-opsiq-domain.com;
frame-src https://your-opsiq-domain.com;
Чи повільний сайт віджету?+

No. Під 15 KB зміщені, навантаження асинхрону після вмісту сторінки.

Чи можна налаштувати зовнішній вигляд?+

Використовуйте колір даних для основного кольору. Контакт-підтримка CSS варіанти перенаречених.

Про компанію

Рецепти для встановлення віджеження

Направляючі прилади для установки платформи.

Як працює
Рецепти для встановлення віджеженняПлатформи для установки карток WordPress, Shopify і Google Tag Manager, кожен говорить про те, де додати віджет.ВПWordPress_Встановити плагін, ввестиВаш сайт ключ, зберегти.МагазинShopify_Вставте хіппет втема. Рідина перед /body.ГТММенеджер з тегівНастроювання HTML tag, всі сторінки.
Рецепти

WordPress_

Сценаріо:
Додати на всі сторінки WordPress сайт.
Що робити:

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_

Сценаріо:
Додати у свій Shopify магазин.
Що робити:

Online Store > Themes > Edit Code > Layout > theme.liquid. Paste before </body>. Save.

Редакція / Next. js

Сценаріо:
Додати до програми React або Next. js.
Що робити:

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_

Сценаріо:
Додати у Ваше WHMCS клієнтська зона.
Що робити:

Налаштування > Загальні налаштування > Інше > Глобальний зміст нижньої колонтитули. Вставте фрагмент. Або відредагуйте шаблон підніжка. tpl.

Google Tag Manager_

Сценаріо:
Додати через GTM.
Що робити:

Створіть користувацький HTML тег, вставте хіппе. Тригер: Всі сторінки. Публікація.

Про компанію

Віджет адміністратора у зворотному напрямку (одне контракт, будь-яка платформа)

Вбудувати OpsIQ admin Assistant — адмін чат, упаковка квитка та AI Writing — всередині панелі адміністратора сайту OWN, тому ваша команда ніколи не залишає своїх інструментів. Як ідентифікатор відвідувачів та портал SSO, це загальний контракт ONE, який реалізується в ~15 лінії коду сервера платформи — однаковий візерунок Zendesk, Intercom і використання дискурсу для SSO. Не існує передплатформного плагіна, щоб чекати: будь-який стек, який може скластися HMAC може зробити це сьогодні.

Крок 1 — лінія згортання

Від Віддалені сайти→Веб-сайт→Коди, копіювання лінії навантажувача і додати його до сторінок адміністратора (надалі – шаблон макета або поле для користувача-JS):

Однолінійне зібрання
<script async src="https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=SITE_KEY&identity_token=TOKEN_FROM_STEP_2"></script>

Кроки 2 — Просування OpsIQ хто ввійшов (сервер-значений)

Тільки Ваше додаток знає, що адміністратор підписаний в — це не недолік, це модель безпеки. Ваш сервер генерує короткочасний підписний токен з власної сесії, зокрема, про те, що відвідувачі сайту записуються на сайт і секрет:

PHP · зареєструвати особистість адміністратора з вашого сеансу
<?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.
Доступ до одного облікового запису, автоматично

Кожен адміністратор, який увійшов у вашу платформу, відповідає індивідуальним: OpsIQ's per-адміністрування воріт доступу вирішує ім'я користувача токена + електронна пошта від одного OpsIQ агент (сторінка Тем; використовувати список "матчових листів" агента, коли різні електронні листи платформи) і застосовує робочу площу, відділ та дозвіл на вхідні дані. Новий співробітник = додати агента в OpsIQ; не вбудовувані зміни.

Ролики їздити по

Що б ви не знали, що ваша платформа надсилає на екрані OpsIQ сторона для інтрибутації; авторизація завжди йде від OpsIQ запис агента, ніколи не від затвердження ролі.

Чому не читайте наш логін cookie?

Браузери ніколи не надсилають ваш адміністратор cookie на інший походження — ні постачальник може "просто визначити" Ваш логін крос-домен. Кожен серйозний продукт вирішує це таким же чином: сервер ваучі, підписаний. Це весь контракт.

No shared mode on your own site

Off the OpsIQ host there is no unsigned or shared-login mode: the loader stays hidden until a signed admin token arrives. The token=… value in the Codes loader is a widget key that only identifies the site; it can never sign anyone in.

- Це... authenticated прапор — поставте його на рівні TOP

Цей прапор є підтвердженням вашого сервера, що людина дійсно зареєстрований в Інтернеті і OpsIQ відмовляється від будь-якого токена без нього. Поставте "authenticated" => true beside site_key/iat/exp, НЕ тільки всередині admin предмет. Поточний OpsIQ приймає його в будь-якому положенні, але старі релізи тільки читати рівень рівня - і неприпустимо: список розмов, історія і Переглянути всі автентичні дрібні, поки кожен чат перетвориться відповіді "Додати логін"Якщо ви бачите саме, що розбити, перевірте цей прапор першим.

Гігієна зубного каменю

Зареєструйтеся на сервері тільки, ніколи не в браузері JavaScript. Тримайте час (до години); OpsIQ відхиляється, що випереджає і майбутні токени, а підпис прив'язує токен на ваш сайт ключ.

Довідкові впровадження

Про нас WHMCS Модуль автоматично працює з WHMCS адміністрування; Botble Готельний роз'єм мостовий файл від Laravel сеансу (op=admin_identity). Як тільки цей договір у своєму діалекті платформи — копіювання, яка все-таки читає найближче до вашого стек.

Зеро-сторінок проводки (розбірник з'єднання)

Коли ви OpsIQ роз'єм зберігає кінцеву точку ідентичності в його місці admin_identity_probe_url Налаштування, лінія для навантажувача PLAIN - це всі ваші сторінки адміністратора: віджет відкриває з'єднання, називає його з ключем сайту + віджеження, і автоматично автентизує кожен адміністратор. Сторінка все ще може перенаправитися з роз'ємом, що дозволяється використовувати його з вашим сайтом + віджетом, щоб пробутися і вдосконалювати кожну адмінку. data-identity-endpoint атрибути window.OpsIQAdminIdentityEndpoint.

💡
The signing secret is filled in for you. In Remote Sites, your site, Codes, Option 3, Sign in your staff, every example already contains this site's own secret, so the code works as pasted: there is nothing to copy or configure. The examples on this page show opsiq_whsec_YOUR_SITE_SECRET in its place. Each example looks for OPSIQ_SITE_SECRET (or your framework's own setting, named in its notes) on the server first and uses that when it is set, so you can move the secret out of the file whenever you want, for example to rotate it without editing code. Either way the file runs on your server only: never paste it into a web page or browser JavaScript, and never commit it to a public repository, because anyone holding the secret can sign in as any of your customers or staff. WHMCS and Botble need none of this: the WHMCS hook arrives with the secret filled in, and the Botble connector panel fills it into the bridge.

Complete code, platform by platform

Each example prints the Admin Chat tag only for a signed-in staff member, with the signed token added, and answers the widget's refresh (?opsiq_identity_refresh=1&role=admin) with {"success":true,"identity_token":"…"} or 401. Remote Sites, your site, Codes, Option 3, Sign in your staff prints the same code with your site key and secret filled in.

⚠️
The admin token is the two-part form: base64url(payload), a dot, then the hex HMAC-SHA256 of that base64url text. It is not a JWT, and a JWT is refused. The admin object needs id and email, and exp must be within 24 hours.

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>`)
}

Реалізація кінцевої точки особистості на Ларавлі (важко-винні ноти)

Якщо ваша платформа є Laravel (Botble, Bagisto, користувацькі додатки) і кінцева точка є автономним файлом, який завантажує рамку для читання логічно в адмінці, три специфіки заощаджать вас годинами — кожен з них виготовив реальну відмову від виробництва до його вивчення:

Потрібні пропозиції BEFORE Bootstrap

Наші фахівці можуть вирішити request з контейнера під час завантаження. Власний життєвий цикл Ларав прив'язує захоплене замовлення в першу чергу всередині Kernel::handle() — дзеркало, яке замовлення: $app->instance('request', Request::capture()) БУР $kernel->bootstrap(), або ви отримаєте "Таргет-клас [запит] не існує".

Заява про реєстрацію на сайті HMAC_-під ключ

Сучасні лакофарбові префікси значення печива з HMAC комп'ютерні з APP KEY (CookieValuePrefix) — рівнина sha1(name."v2") не може відповідати його. Роздягання з CookieValuePrefix::validate($name, $decrypted, $keys), з структурним відступом (при наявності)40 шістнадцять сортів + | на позицію 40). Розкажіть: сеанс довше, ніж 40 chars (Багато)81 = префікс ще прикріплений) і сеанс, який завантажується тільки _token в ній.

Де живе логін

Помилка авта login_<guard>_<sha1(guard class)> — за замовчуванням веб-охоронець: 'login_web_' . sha1(Illuminate\Auth\SessionGuard::class). Сканувати будь-яку login_* нумеричний ключ як випадання для спеціальних опіків.

Дебюг, як міст

Користування debug=1 режим, який іменує невиконаний STEP і виняток — сліпий влов-всі зробив небажане розгортання. Боббл міст (від v1.0.7) є посилання: крок маркери на ядер / bd/bootstrap/decrypt/session/auth/db.

Ларавель · повна точка ідентичності (копія, встановити дві константи, зроблено)
<?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]);
}

Те ж саме кінець на інших стеках

Тільки "який ввійшов?" зміни лінії — блок входу ідентичний скрізь. Призначте на сервері, ніколи не в JavaScript.

WordPress · WHMCS· Симфонія · plain PHP — закрутити зовнішній вигляд, зберегти підписку
<?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]);

Коли це не працює — діагностувати в цьому порядку

Віджети ніколи не з'являється, консоль каже "Призначений токени адміністратора обов'язково"язковий"

Повернути свій кінцевий пункт identity_token. Відкрийте кінцеву точку URL безпосередньо в браузері адміністратора з логіном &debug=1 — Ви побачите невідповідний крок. На Лараві це майже завжди запитаний або cookie-перевірка пункт вище.

Історія та розмови працюють, але кожен чат перетворюється "Додати логін"

Класичне розщеплення. Ваш жетон відсутній в ТОП-LEVEL authenticated прапор — власне кінцева точка віджету приймає токени, загальний вивержувач за допомогою чат-потоку відмовляється. Додати "authenticated" => true beside exp.

"Не наданий в OpsIQ_" (ХТТП 401)

Перевірити токени, але його ім'я користувача + електронний лист не знайдено OpsIQ агент. Додати агента в OpsIQ → Команда, або додати електронну пошту платформи до списку відповідних адрес агента, коли вона відрізняється від їх OpsIQ Електронний лист.

Все 403s з браузера але працює з curl

Передплачення CORS відхиляється один з ваших заголовків запиту. Ваша кінцева точка повинна відповісти OPTIONS і вислухайте походження запиту, або просто не включіть користувальницькі заголовки — віджет тільки потребує cookie.

Учора, що сьогодні не працює

Перевірити exp: токени коротко відхилені дизайном. Віджет автоматично переходить, тому це зазвичай означає кінцеву точку, що припинив перегляд сеансу — заміну ключа додатка, зміна дискримінації сеансів або зміни cookie-домену.

💡
Віджет адміністратора забезпечує приховані до вирішення ідентичності, і кожен чат/inbox/data виклик здійснюється за допомогою сервера-стороннього від матчу OpsIQ агент, незалежно від того, що сторінка стверджує. Токен розблокує UI; дозволи завжди приходять з OpsIQ.
Про компанію

Візитна ідентичність

Ідентифікатор з'єднує анонімні відвідувачі для відомих клієнтів. При визначенні OpsIQ посилань, історії переглядів, чатів та квитків на профіль замовника.

Як працює
Візитна ідентичністьПотік: журнали користувачів на вашому сайті, ви маєте право підписатися на токени особистості та OpsIQ не підлягає їх сеансам, чатам і квиткам в один профіль.Логи користувачів вна сайтіПристрої токениайдентика_token (HMAC)Профільsessions+ чати+ квитки
Візитна ідентичність

Два рівні ідентичності, і коли кожен достатньо

Рівень 1 — не відкладеного натяка

Ви кажете віджет, який відвідувач має звичайну функцію JavaScript об'єкт. Він заповнює електронну пошту та клієнту, який знаходиться на журналі відвідувача, так що ваш панель показує підписаний трафік і сеанси приєднатися до. Це HINT: хтось може змінити його в своєму браузері, тому OpsIQ не випускає дані облікового запису на міцність.

Рівень 2 — підписаний токени ідентичності

Ваш сервер вивісить короткочасний токени з секретом вебхока сайту. OpsIQ виправляє підпис і тільки потім обробляє особу як перевірений клієнт. Це рівень, який розблокує відповіді на рахунки в чаті клієнтів і роз'ємах. Використовуйте його для будь-якого незнайомця не повинен бачити.

⚠️
Рівень 1 - зручність відображення. Рівень 2 автентифікація. Якщо питання можна відповісти тільки на реальний держатель облікового запису, вам потрібно Рівень 2.
💡
You do not have to write Level 2 by hand: Remote Sites → your site → Codes → C. Signed-in customers generates the signing code and the refresh handler for PHP, WordPress, Laravel, Node.js, Python, Django, .NET, Rails, Java and Go. The WHMCS hook and the Botble connector bridge already sign customers. Identity says who the customer is; their orders or bookings reach the chat through a connector (with a bridge file only when the platform has no API).

Рівень 1 — не відкладеного натяка

Встановіть об'єкт BEFORE скрипт віджету або виведіть його () пізніше, ніж раз, коли ваш додаток знає, хто підписаний в. Обидва форми читаються; використовуйте якийсь чином підходить для вашої сторінки.

JavaScript · два підтримані форми
<!-- 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.

Рівень 2 — серверний знак ідентичності

Точно так само, як і у адміністратора віджету, з customer суб'єкт замість admin один. Зареєструйте його на сервері і перенесіть її до віджету. Дві деталі вирішують, чи це виправить, і обидва легко виводити неправильно:

Про нас HMAC покриває рядок BASE64URL, а не JSON

Підпис $payload64, не $payload. Підписання сировини JSON випускає токени, що виглядає прямо і відхилюється кожен раз з підписом на невідповідність.

base64url, неочищений

Мистецтво +/ до -_ і смужте = . Плайн base64 відбувається, щоб вижити сьогодні; base64url є контрактом і що кожен OpsIQ Випромінювач і роз'єм посилань видає.

автентифікований йде на рівні ТОП

Поза «Ложки» site_key, iat і exp. Ви заявляєте, що реальна людина ввійде, і OpsIQ відмовляється від токену без нього.

Замовник. id обов'язковий

Відправлення токени тільки в якості підпису, а потім мовчки. Завжди надішлемо ідентифікатором.

Триває

Хвилі до годин. Жетони є затвердженням сеансу, не достовірним для зберігання.

PHP - підпишіться на свій особистий токени клієнта (це точний код виявиться)
<?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>';
🚫
Прийміть на сервер тільки. Вимкніть мітку в браузері JavaScript - це доставка секрету сайту кожному відвідувачеві, який руки будь-кому зможе знеособлювати будь-який клієнт.

Те ж саме контракт, три поверхні

Клієнт-чат на сайті

customer subject, passed as identity_token to widget.php. Covered above. Optional: with snippet A and a connector the chat already verifies customers itself (a booking or order number with proof, or an emailed code before an order). Remote Sites, Codes, C generates the code for automatic recognition of customers already logged in on your site.

Почати чат в твій час

admin суб'єкт, переданий в opsiq/embed/admin_widget. php. Same signer, різний ключ предмета. Див "Домін віджет у вашій задньої частини".

Підтримка порталу глибоких посилань

Найсучасніший варіант: ті ж претензії плюс jti і один_use:true, і a 120-друге життя, тому що токени подорожує в URL і повинні бути проведені один раз. Не пропустіть його. Налаштування, Портал підтримки має готовий хіппет для вашої мови, а платформа заміняє вас при роботі з обліковим записом на цьому сервері.

Що робити, якщо відвідувач очищає файли cookie?+

Вони стають анонімними, поки вони не визначилися. OpsIQ посилання на новий анонімний запис до профілю замовника, який момент прибуває підказка або токен.

Чому мій токен перевірить журнал відвідувачів, але не для питань облікового запису?+

Що таке рівень 1 / Рівень 2 спліт. Невизначена підказка заповнює журнал відвідувачів і нічого іншого. Відповіді на рахунку потрібні перевірений підпис.

Про компанію

Portal sign-in: code for every platform

Send a customer who is already signed in to your application straight into your support portal, signed in, with no second password. This page explains how the handoff works, every claim in the token, the setup, and a complete route for each platform. Settings, Support Portal prints the same code with your own portal address and workspace key filled in.

Як працює

1
The customer clicks Support in your app

The link points at a small route on YOUR server, for example /support-portal. Never at a link that already contains a token: a token in a page leaks through page source, browser history and the Referer header.

2
The route checks who is signed in

It reads the customer from your own session. A visitor who is not signed in is sent to your login first and comes back to the route afterwards.

3
The route signs a one-time token

A standard HS256 JWT signed with this workspace's signing secret, which only your server holds. It expires after 120 seconds and can be used once.

4
The route redirects to the portal

To the portal page the customer came from when the portal asked for one (opsiq_portal_return, accepted only inside your portal address), otherwise the portal home. The response carries Referrer-Policy: no-referrer and Cache-Control: no-store.

5
The portal verifies and signs the customer in

The signature, the workspace key, the expiry and the one-time id are checked. The customer is found or created by email and their existing requests are matched to them.

The token, claim by claim

site_key

Your workspace key. A token made for another workspace is refused even when it is signed correctly.

iat / exp

Issued-at and expiry, in seconds. The portal token lives 120 seconds: it only has to survive one redirect.

Автенсивний: правда

Your app's statement that it really signed this person in. Required, at the top level.

jti + single_use: true

A random id and the one-time flag. The same link cannot be used twice.

майдан

A free label for where the customer came from (php, wordpress, whmcs…). Shown in the customer's profile.

customer.id and customer.email

Both required. The id is your app's own customer id; the email is how the portal finds the customer and matches their requests.

customer.name / external_id

Optional display name, and the id OpsIQ stores against your platform.

Комплекти

1
Copy the route

Settings, Support Portal, Seamless sign-in from your app. Choose what your app runs on; the code below the list has your portal address and workspace key filled in, with numbered notes for that platform.

2
The secret is already in the code

The copied route contains this workspace's signing secret, so it works as pasted. To keep it out of the file, set OPSIQ_SITE_SECRET (or your framework's setting) on the server instead: that value is used first. Never put the route in a page, JavaScript, a mobile app or a public repository: anyone holding the secret can sign in as any customer.

3
Link your Support button to the route

For example https://your-app.com/support-portal.

4
Make the portal's Sign in button use your app

Portal Studio, Sign-in page, Use my website's login, Your login page URL: set it to the same route. The portal adds opsiq_portal_return by itself and the route brings the customer back to that page, signed in.

5
Optional: sign out everywhere

Settings, Support Portal, Sign out everywhere: your app's sign-out URL, so signing out of the portal also signs the customer out of your app.

6
Тестування

Generate a signed test link on the same settings page to check the portal side alone, then open your route while signed in to your app.

WHMCS needs no code: the WHMCS hook from Remote Sites already signs clients into the portal and brings them back to the page they were on.
💡
The signing secret is filled in for you. In Settings, Support Portal, Seamless sign-in from your app, every example already contains this site's own secret, so the code works as pasted: there is nothing to copy or configure. The examples on this page show opsiq_whsec_YOUR_SITE_SECRET in its place. Each example looks for OPSIQ_SITE_SECRET (or your framework's own setting, named in its notes) on the server first and uses that when it is set, so you can move the secret out of the file whenever you want, for example to rotate it without editing code. Either way the file runs on your server only: never paste it into a web page or browser JavaScript, and never commit it to a public repository, because anyone holding the secret can sign in as any of your customers or staff. WHMCS and Botble need none of this: the WHMCS hook arrives with the secret filled in, and the Botble connector panel fills it into the bridge.

Complete routes, platform by platform

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)
}

When something is wrong

The portal opens, but signed out

The secret or workspace key does not match this workspace, the token is older than 120 seconds (check the server clock), or the same link was opened twice. Generate a signed test link: if that works, compare your token's claims with the example.

It always lands on the portal home

The return address was not inside your portal address, so it was ignored on purpose. Compare it with the Portal URL shown in Settings.

Guests get an error instead of your login

Replace /login in the route with your real login page, and make sure your login returns to the address it was given.

It works for some customers only

customer.email or customer.id is empty for them. Both are required.

Про компанію

Client chat: recognise logged-in customers

Optional. Most sites do not need this: with the plain chat snippet and a connector, the chat verifies customers itself, with a booking or order number plus proof for lookups and an emailed code before an order. Add this when you want a customer who is already logged in on your site recognised automatically, with their whole account. WHMCS already does it through its hook. Remote Sites, your site, Codes, C prints the same code with your site key filled in.

Як працює

1
Your page prints the chat tag

For a signed-in customer the widget URL carries &identity_token=… signed on your server; for a guest it is the plain tag. Nothing secret is in the page: only a token that expires.

2
The chat verifies the token

Signature, workspace key and expiry. The customer is then known on every chat request, and your connector can answer about their own orders, bookings or invoices.

3
The chat refreshes before the hour is up

It calls the page it is on with ?opsiq_identity_refresh=1&role=customer. Your code answers {"success":true,"identity_token":"…"} while the customer is signed in, or 401 with {"success":false,"login_required":true} when they are not. That is why the refresh handler must run before your page prints anything.

How it differs from the portal token

Теплий

One hour (exp = iat + 3600) instead of 120 seconds, because it rides every chat request instead of one redirect.

No jti or single_use

The same token is used for every message until the refresh replaces it.

Same everything else

site_key, iat, exp, authenticated: true, platform, and customer with a required id and email. Same secret, same signature.

💡
Identity says WHO the customer is. Their orders, bookings or invoices reach the chat through a connector: one that calls your platform's API, or, when your platform has no API, a connector plus its bridge file (the connector builder makes one).
💡
The signing secret is filled in for you. In Remote Sites, your site, Codes, C, every example already contains this site's own secret, so the code works as pasted: there is nothing to copy or configure. The examples on this page show opsiq_whsec_YOUR_SITE_SECRET in its place. Each example looks for OPSIQ_SITE_SECRET (or your framework's own setting, named in its notes) on the server first and uses that when it is set, so you can move the secret out of the file whenever you want, for example to rotate it without editing code. Either way the file runs on your server only: never paste it into a web page or browser JavaScript, and never commit it to a public repository, because anyone holding the secret can sign in as any of your customers or staff. WHMCS and Botble need none of this: the WHMCS hook arrives with the secret filled in, and the Botble connector panel fills it into the bridge.

Complete code, platform by 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>`)
}

When something is wrong

The chat treats a logged-in customer as a guest

The tag was printed without identity_token (the secret is missing on the server, so the code fails closed), or the token's workspace key or secret does not match.

Recognised at first, then a guest after about an hour

The refresh handler is not reached: it must run before any output, on every page the chat appears on.

The plain chat shows twice

Remove the plain chat tag from your template: this code prints the chat itself.

Про компанію

Плагіни та SDK

OpsIQ Зручності SDK пакети та плагіни для спільних платформ.

Як працює
Плагіни та SDKЧотири пакети: PHP SDK, Нід.js SDK, WordPress Плагін і WHMCS модуль, кожен з його встановлення команди.PHPPHP SDKВимоги до композитора opsiq/sdkДЖСHYIP_ SDKи @opsiq/sdkВПWordPress плагінОдин клік встановити & підключитиВІЧWHMCS модульДодаток для векселевізійної та касової реле
Плагіни та SDK
PHP SDK

Пакет Composer: генерування ідентичності, дія API помічників, перевірка підпису на webhook.

JavaScript SDK

Браузера-назад: відстеження, ідентичність, користувацькі події, контроль чату.

WordPress плагін

Впровадження Widget, ідентичність від WP-адрес, WooCommerce sync.

WHMCS модуль

Повна інтеграція: віджет, реле квитків, ідентичність, адміністратор AI.

Shopify розширення теми

Закупівля автоматичної ідентифікації клієнтів.

ФІНАНС SDK швидкий старт

ФІНАНС SDK Приклади
composer require opsiq/sdk

use OpsIQ\SDK\Identity;
$token = Identity::createToken(
    siteKey: "site_abc123",
    secret:  "opsiq_whsec_your_secret",
    customer: ["id" => "cust_1001", "email" => "[email protected]", "name" => "Jane"]
);

// Call any catalog action over the action API
$ch = curl_init("https://your-opsiq.com/api/v1.php");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer opq_your_key",
        "Content-Type: application/json",
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "action" => "crm.contacts.list",
        "status" => "lead",
        "limit"  => 25,
    ]),
]);
$contacts = json_decode(curl_exec($ch), true);
Про компанію

Огляд API, події та безконтактна автоматизація

Опитування студії призначено для використання одного типу General API, внутрішній виконавець, західний автобус і webhook операції як відпочинок OpsIQ. Це дозволяє розробникам інтегрувати кінець, щоб не будувати роз'єм пакета.

⚠️
Стан реалізації: каталог живлення на даний момент виставляє тільки platform.get.survey.config і platform.save.survey.config. У surveys.* і feedback.* сім'ї, які нижче затвердили договір про призначення та повинні повернути unknown_action до зареєстрованих.

Сім'ї цільових дій

Види, шаблони та швидке запуск

surveys.types.*, surveys.templates.* і surveys.quick_launch.* список, попередній перегляд, миттєвий і валідувати повні пускачі.

Огляди та варіанти

surveys.create|get|list|update|archive|duplicate плюс непереборна версія, валідація і публікація дій.

Розгортання та налаштування

surveys.deployments.*, surveys.links.*, surveys.audiences.*, surveys.triggers.* і surveys.variables.*.

Зняття та відповіді

surveys.invitations.*, surveys.campaigns.*, surveys.recipients.*, surveys.responses.*, експорт, переробка та аналітика.

Вебокс, імпорт та зворотний зв'язок

surveys.webhooks.*, surveys.imports.*, feedback.items.*, feedback.analytics.*, feedback.sources.* і feedback.analysis.*.

Безконтактний потік

1
Створюйте та публікуйте за допомогою General API

Використовуйте наведені опитування.* дії з робочим простором-шпильованим ключем. Написання про дозвіл, ризик, підтвердження, idempotency та сухий процес поведінки.

2
Отримай бізнес-події

Надішліть підписаний захід на вхідний вебху, наприклад, скасування замовлення або завершено на борту кроку. Захист від повторення deduplicates the event ID.

3
Карта його в дії & Тригери

Виберіть OpsIQ Головна API дії, такі як видача запрошення на обстеження або підготовка кампанії, потім картування полів від перевіреного тригерного навантаження.

4
Підписатися на розсилку

Виконайте документоване опитування бізнес-захисту.* субсидію життєвого циклу на кінцеву точку з підписом, фільтром, ретрицією, журналом та уповноваженим релеймом.

Мета заходу Canonical

Загальний каталог буде охоплює огляд/розгортання публікувати стан, аудиторію та тригерні рішення, запрошення, рендер / стартовий / неповний / бензоновий, відповідь почервоніння, стан кампанії та відмова від доставки. Високий рівень фокусу, прокрутка і термін перебування на місці зберігання даних Survey Analytics, якщо явно документально задокументовано для вболівальників.

Роз'єм є обов'язковим. Він додає багаторазове відкриття платформи, перевірену ідентичність, факти, змінні та обмін одержувачів. Загальний API Плюс Дії та Трігери/webhooks залишається повним шляхом інтеграції для розробників, які не потребують роз'єму.
Про компанію

РЕСТ API_

Про нас OpsIQ РЕСТ API дозволяє вам запрограмувати доступ до всіх функцій платформи.

Як працює
РЕСТ API_Термінал, що показує POST до OpsIQ API з ключем ведмедя, списавши відкриті квитки, і на сторінці JSON відповідь.$ curl -X POST https://your-domain.com/api/v1.php \-H "Authorization: Bearer opq_..."200 Охоронно-правова{ "data": [{ "id": 4192, "ticket_number": "T-4192","subject": "Card declined", "status": "open" },... more tickets ...], "page": 1, "per_page": 50, "has_more": true }
РЕСТ API_

Формат запиту

Надіслати ключ Authorization: Bearer opq_... або X-OpsIQ-Key: opq_.... Використовуйте один автентифікаційний заголовок, не обидва.

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

Загальні дії

The API діє на основі дії: надсилайте action ім'я в тілі. Кожен зареєстрований адміністратор JSON операція має стабільну названу дію. POST {"action":"meta.actions"} (не обов’язковий) для авторітативного, пер-встановлюючого списку, контракту з запитом, метаданих ризику та обсягу. Видалено platform.routes.* міст залишається тільки для старших інтеграцій.

crm.contacts.list

Список контактів CRM (скоп crm. read). Парамії: q, статус, джерело, тег, кінцевий бал, ліміт.

crm.contacts.upsert

Розчинити-або створити контакт (скоп crm. write). Парами: полями електронної пошти, теги, ноти.

crm.deals.list

Список CRM-розрядів (скоп crm. read). Парамії: статус, стадія_id, компанія_id

crm.activities.record

Запис на життєвий цикл / бізнес-активність для контакту (скоп crm. write). Парами: електронна пошта або контактна особа, захід, значення, валюта.

crm.conversions.record

Запис конвертації (скоп crm. write). Парами: контактні дані або електронна пошта, перетворення_type, значення, валюта.

crm.events.list

Поповніть потік CRM (скоп crm. read). Парам: ліміт.

tickets.list

Список квитків (кодові квитки. читати). Парамації: сторінка, за_сторінку, сортування, порядок, пріоритет, відділ_id, приписаний_адміністратор, клієнт_email, пошук.

tickets.get

Один квиток і його повідомлення (скоп квитки. читати). Парами: квиток_id або квиток_number, включають в себе_месажі, повідомлення_limit.

tickets.reply

Повідомляємо про це в листі (скоп квитків. write). Парами: квиток_id або квиток_number, тіло, авторський тип, автор_name, внутрішній.

tickets.update

Оновити квиток (скоп квитків. write). Парами: квиток_id або квиток_number, статус, пріоритет, предмет, відділ_id, приписаний_адміністратор_id.

tickets.open

Відкрийте для себе квиток на підтримку (скоп квитків. write). Парами: клієнт_email, клієнтська назва, предмет, тіло, пріоритет.

tickets.bulk

Запуск сипучих черги роботи (скоп квитків. write). Парами: операція, попереки.

conversations.list

Список розмов для читання (скоп-бесіда). Парамації: сторінка, на_сторінку, статус, присвоєна_адміністрація, клієнт_email, пошук.

conversations.get

Одна розмова і її повідомлення (скопові розмови. читати). Парами: розмова_id або нитка_key, включають_повідомлення.

conversations.messages

Історія (скоп-бесіда). Парами: розмова_id, сторінка, per_page, включають_інтернал.

conversations.send

Надіслати повідомлення в розмову (скопські бесіди. write). Парами: розмова_id, повідомлення, відправник_тип, внутрішня.

conversations.update

Призначте, перестату або повторно зателефонуйте розмові (кодові розмови. write). Парами: бесіда_id, статус, присвоєна_адміністрація, предмет.

Роз'єми. list / . get / ,test

Дивись, які встановлюються роз'єми, що кожен може зробити, і чи працює його облікові дані (роз’єми скопій. читати).

automations.actions.list

Вчиня, що працює на вашому етапі розробки (система автоматизації. читати).

automations.triggers.list

Що буде вогнем і на яких умовах (системи автоматизаціїоскопа. читати).

automations.runs.list

Історія виконання для налагодження інтеграції (системи автоматизаціїоскопів. читати). Парамації: статус, дія_ключа.

departments.list

Ви можете перенести квиток на (скоп-департаменти. читати).

notifications.list

Повідомлення про виникнення поштових повідомлень одного оператора (скопові сповіщення). Парам: admin_id (обов'язково), Переглянути_тільки.

analytics.export

Розділ звіту як CSV (аналогічна аналітика. читати). Парами: розділ, заданий, з, до. Аналіз дзвінків. секції. список дійсних значень.

Сайти_intelligence. sites. list/

Моніторинг сайтів та їх SEO-аудит (скоп сайт_intelligence. read).

Торгівля. продукти. лист / . get

Каталог магазинів, сторінка (код-Комерція). Фільтри: активні, категорія, пошук. .get повертає один продукт з його варіантами.

Торгівля. orders. list / . get

Магазин замовлень (код-комерція. читати). Фільтри: статус, оплата_метод, канал, клієнт_email. Захопити один за одним order_id або його ORD-посилання, з елементами лінії. Ручка для перевірки в режимі реального часу ніколи не повертається.

commerce.refunds.list

Поповнення запитів та їх стан (кодова торгівля. read).

commerce.quotes.create

Ціна товару для замовника (код-комерція. write). Джерело store або роз'ємний строп. Створює нічого: не замовляється, ніякої оплати. Див. розділ Торгової біржі.

.csat_list/. get / . metrics

Клієнт-satisfaction відгуки як дані (скоп квитків. читати). Фільтрувати за рейтингом, квиток, агента або період; .metrics повертає однакові числа на панелі інструментів.

conversations.ratings.list

Зібрано чат-бесіду ваших відвідувачів, з коментарем, що підказали рейтинг і агент зараховані (скопські розмови. читати).

knowledge.articles.list

Сторінка через статті Центру Допомоги (скоп кб. читати).

knowledge.articles.get

Одна довідкова стаття по ідентифікатору (скоп кб. читати). Парами: Стаття_id.

webhooks.events.list

Кожна подія ви можете підписатися на кінцеву точку веб-гока, з його завантаженням. Доступно на кожному тарифі, тому ви зможете побудувати проти неї перед тим, як купити.

files.get

A short-lived signed download link for an attachment (scope files.read). Params: reference, ttl.

security.check

Запитайте, чи є IP або електронна пошта заблокована або підозрілий тут (скоп безпеки.read). Комбінує IP брандмауер, список спам-блоків і вирок з кабіни безпеки AI. ip Електронна пошта:

security.report

Зловживання звітом, що зазначена в системі (скоп безпеки. write). Записується як подія безпеки, класифікований AI безпеки відразу, і адміністратори оповіщуються на вироках високого ризику. Парамації: ip_, електронна пошта, вид, причина, джерело.

Безпека. blocklist. add / . list

Керуйте правилами спаму, що застосовується для виконання авіаносіїв (скоп безпеки. write / Security. read). Такий магазин як сторінка квитків «Блок відправника» контроль. Парами: вид (email, домен ip), значення, причина, закінчується_години.

💡
мета. actions завжди авторитетний. Він повертає кожну дію, доступну на вашому встановленні з обсягом кожного, що вимагає, тому ви ніколи не повинні гадати або жорсткий код цього списку.

Пірінг, фільтрування та сортування

Кожна акція списку використовує однакові параметри, тому ви дізнаєте їх один раз.

Сторінка / per_page

Номер сторінки від 1, розмір сторінки. 50, максимальна 200. обмеження та зміщення також приймаються, якщо ви віддаєте перевагу їм.

Сортувати / замовити

Поле для сортування, а також як або деск (дефект-дек). Кожна дія приймає фіксований набір полів сорту; що інше ігнорується не більше помилок.

filters

Відправте фільтри як об'єкт, або пропустіть фільтр у верхньому рівні параметр. Невідомі фільтри ігноруються.

Що йде назад

Теги, сторінка, per_page, кількість, загальний і має_більше. Тримайте запити сторінок до моменту помилкового виконання.

Адреса, фільтрований, сортування списку
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
}

Помилка

Кожна відмова повертає однакову форму, зі стабільною code Ви можете відгалужити. Не відповідає на людський доступ error текст, який може бути переповнений.

Відповідність помилок
{
  "success": false,
  "code": "missing_scope",
  "error": "API key missing required scope. Needed one of: tickets.read, admin",
  "request_id": "req_8f2c1a9d4b7e"
}
facebook_sd_c_xls_x_xxx_

Не було відправлено ключ, або ключ неправильний або розширений. HTTP 401.

missing_scope

Ключ діє, але не вистачає обсягу цієї дії. HTTP 403_.

читати_only_key / дію_restricted

Ключ читає-тільки, або це дія не в її списку. HTTP 403.

unknown_action

Нема такої дії. Дзвоните мета. actions для поточного списку. HTTP 400.

no_parameter / недійсний_parametric

Необхідний параметр відсутній, або значення не приймається. HTTP 400_.

not_found

Запис не існує, або не в робочому просторі це ключ може бачити. HTTP 404.

plan_feature_locked

Ваш план не містить функції, які ця дія належить до. Ім'я тіла feature, що plan_name в силі і upgrade_url. Ретриція не допоможе; план повинен змінитися. HTTP 402_.

license_required

Не активна робота, тому не буде працювати до відновлення. HTTP 402_.

selling_paused

Специфікация: магазин має продаж вимкнено, тому нічого не може бути процитований або замовлений. HTTP 400.

rate_limited

Часовий ліміт для цього ключа використовується вгору. HTTP 429.

server_error

Якщо ви не змогли повідомити про це. HTTP 500_.

Сейф-рети

Якщо ви не можете сказати, чи він заземлений. idempotency_key і повтор того ж виклику повертає оригінальний результат замість виконання робіт двічі.

Idempotent запис
{
  "action": "tickets.reply",
  "ticket_id": 4192,
  "body": "Thanks, that is now fixed.",
  "idempotency_key": "your-unique-id-for-this-attempt"
}
Як довго він триває

Ключ запам'ятовується для 24 години проти тієї ж дії і API ключ.

Що ви задягнете

Оригінальна відповідь, плюс idempotent_replay: правда так ви можете розповісти про це повторне відтворення.

Недолік залишаються триптими

Тільки успішні записи запам'ятовують. Якщо виклик не вдалося, відправляйте його знову з тим же ключем, що це те, що ви хочете.

Читання

Читання ігнорувати ключ. Повторити читання нешкідливий.

Тест без зміни нічого

Додати dry_run: true на будь-який запис. Ваш ключ, обсяги та параметри всі перевіряють як нормальні, після чого виклик припиняється до того, як все створено або змінено.

Пробіг: перевірка достовірності та безпечності завантаження
{
  "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."
}
Використовуйте суху_run, коли ви будуєте. Це найшвидший спосіб підтвердження ключа має правильні обсяги та ваш вантажоперевезення формується правильно, не створюючи тестові дані, які вам необхідно очистити.

Обмеження ставок

Мінімальний ліміт під ключ

Настроювання часової ліміту на API ключ (default) 1000 запити на годину. Встановити його за ключ під налаштуваннями,API Ключі.

При перевищенні

HTTP 429 з курсом коду_обмежений, плюс заголовок Retry-After розповість вам, скільки секунд чекати. Обмеження скидається у верхній частині наступного годинника години.

Знайте, де ви стояти

Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (a Unix timestamp). Watch Remaining and slow down before you run out rather than waiting to be refused.

Розсилка 429 з 401

А.А. 429 зачекайте і спробуйте знову. А 401 означає, що сам ключ невірний або розтягований, так що птиця не допоможе до фіксації ключа.

Передповідна броньована охорона

Повторні невдалі спроби від одного IP дросельний окремо. Дійсно ключі ніколи не подорожують це.

Найкраща практика

Звертаємо вашу увагу на те, що Ви не захочете розглянути, а також відзнаку Retry-After після 429 замість того, щоб негайно потрапити.

Версія та стабільність

Поточна версія

v1. Кожна відповідь несе X-OpsIQ-API-Версія і X-OpsIQ-API-Статус так ви можете підтвердити те, що ви йдете.

Як ви попередили

Якщо версія коли-небудь відредагована, відповіді на отримання стандартних розшуків та голів Sunset, і мета. actions повідомляє deprecated and sunset_at. Перевірте ці у вашому моніторингу, і ви ніколи не будете дивуватися.

Що не змінить

Виконувати імена дій, їх параметри та їхні коди помилок. Нові дії та нові додаткові поля можуть бути додані в будь-який час, тому ігнорувати поля, які ви не визнаєте, а не відмовтеся від них.

Повна інтеграція, початок завершення

Це ціла петля: знайти роботу, читати її, діяти на неї і підтвердити те, що ви зробили.

Повний потік квитків над 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}
💡
Все вище працює тим же способом для розмов: бесіди. лист, розмови. get, розмова. send і беблики. update слідувати ідентичним шаблоном, параметрам і формою відповіді.

Більше прикладів роботи

Кожен з них є повним, нездатним шматочок реальної інтеграції, а не фрагментом.

Сторінка через кожен запис, на три мови

Правило є однаковим скрізь: зберігати запит на наступну сторінку до has_more не дайте. Не вгадуйте, що це буде абсолютно.

Python · сторінка через кожен відкритий квиток
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 · сторінка через кожен свинець
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 · сторінка через кожен відкритий квиток
<?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"]));

Рукоділля кожної з ладу API може повернутись

Філія на code, ніколи не на слово error. Цей обгортковий є цілим договором в одній функції.

Python · клієнт, який керує кодом помилок
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")

Відповідайте поганий результат задоволення протягом години

Прочитайте низькі бали, відкрийте квиток на кожен, і ніколи не діють один двічі.

Закрийте петлю на нещастях клієнтів
# 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.

Цитувати елемент і діяти на відповідь торговця

Відмова, яка говорить вам про те, що зібрати
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 }
}
⚠️
Показати клієнт totals.total точно так само як повернуто. Кількість не завжди множити ціну одиниці — це номер для готелів, який знаходиться на три ночі — так, щоб малюнок ви розрахувати себе може відрізнятися від того, що купець фактично заряджається.

приймач вебхоок, який є безпечним для виробництва

Перевірити, де-дофальшиво, відповісти швидко, потім зробити роботу. Дозволити трюди, так що ж подія може прибути більше одного разу.

PHP · приймач з виробництва
<?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

Плани та заголовки

Кожна дія належить до функції продукту, і ваш план вирішує які функції ви маєте. Якщо Ваш тариф не містить функцій, відповідь на дії 402 — після того, як ваш ключ перевіряється, тому неоцінений дзвоник дізнається про свій план і до чогось створювався, так що блокується запис ніколи не буде вдвічі.

Планування-розблокована дія
{
  "success": false,
  "code": "plan_feature_locked",
  "feature": "commerce",
  "plan_locked": true,
  "plan_name": "Growth",
  "upgrade_url": "https://…",
  "request_id": "req_8f2c1a9d4b7e"
}
Як розказати її від дозволу

А.А 403 означає, що КЛЮЧ занадто вузька — перевизначити його з правою сферою і вона працює 402 означає, що ACCOUNT не має функції — ключ не може розблокувати його, план повинен змінитися.

Не птиця 402

Не транзистор. Поверхня upgrade_url щоб хто-небудь володів обліковим записом замість того, як ви задягали і намагалися знову.

Область адміністратора не обходить його

Сфера висловить, що делегований ключ; план висловлює те, що купується обліковий запис. Ключ адміністратора все ще отримує 402 для можливості відсутності плану.

Знайдіть перед відправленням

- Це... feature Кожна потреба в дії публікується у каталозі дій нижче та в meta.action, так що ви можете перевірити на часі будівництва, а не відкрити його у виробництві.

Найшвидший спосіб побачити саме де стоїть ключ meta.me. У звіті про план, що діє, кожен з якихось дій цей ключ не може викликати причину для кожного.

Мета. me — що це ключ насправді може зробити
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"
    }
  }
}
Зателефонуйте мета. me спочатку, коли інтеграція поводиться в різні між двома інсталяціями. Відповіді "Чому це може бути цей ключ не робити", у одному запиту, без будь-якого відкриття адміністратора.

Ціна

commerce.quotes.create ціни на один товар для одного клієнта. Він створює нічого — не замовляється, ніякої оплати не проводиться, тому це безпечно назвати при цьому клієнт все ще знезаражується.

Цитувати товар
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"}}
Приблизний купець

Для підключеної платформи, загальна кількість надходить від цього торговця і ніколи не перерахувана тут. Кількість не завжди множить ціну одиниці — це готель котирування одного номера на три ночі — так показати загальну суму, яку ви були передані, а не одне з яких ви працювали.

Відповіді про те, що немає

Якщо продавець потребує більше від замовника, ви отримаєте quote_refused з missing Список, що надсилають поля для збору, і власне словом торговця.

Замовлення не є API

Пропозиція є індексом. Підтвердження відбувається, де клієнт — підписана картка в чаті або власне кастинг торгового марки — ніколи не через це API_. Відповідь говорить так, що у відповідь ordering.

Коли продаж випали

Якщо магазин з'явився, цитуючи відповіді selling_paused не можна купити вартість доставки.

Інші кінцеві точки

Практично все, що вам потрібно, є одним POST для /api/v1.php. Це винятки, і що кожен для вас.

/api/v1/openapi.php · /api/v1/postman.php · /api/docs/

У разі необхідності, ви можете вивчити до того, як у вас є один.

/api/ai_stream.php

Серверні події для живих чатів, як вони створюються. Потік, не JSON дії.

/api/writing.php

Старший енд-повідник AI. Все, що також доступний як writing.* Дії про /api/v1.php,, де повинна йти нова робота.

/api/inbox_copilot.php

Проект, переписати та тривати за вказаним у вашому адміністратору квиток.

/api/v1/si/…

Огляд сайту як невелика REST API — сайтів, crawls, питання, ключові слова, дохід — для трубопроводів ТПП, які хочуть почати коливання після розгортання і читати результат.

/api/connectors.php?slug=&token=

Де підключена платформа POSTs своїми вебхоками до вас. Тінь пропущений при включенні роз'єму.

/api/integrations/*.php

Двигун інтеграції: запуск і підтвердження дій, а також оренда продажів, ідентичність та події подорожі. Він використовує власний ключ типу, виданий під API & Webhook конструктор.

💡
Ці всі обіграв однакові правила плану, як і дії. Особливістю вашого плану не включають відповіді 402 тут теж, в тій же формі.

Кожна дія, з обсягом її потреб

Цей список генерується з каталогу, тому він завжди відповідає версії, яку ви знаходитесь. meta.actions повертає таку ж інформацію, як JSON_.

2415 named actions: 852 reads, 1563 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: 582; explicit: 157; route_inferred: 1558; 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

аналітика (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

бетмен (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

Торгівля (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 whether the storefront can launch

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: explicit. Generate a connector package Required fields: spec. Retry-safe with idempotency_key.

connector_builder.get

Read. Scope: connector_builder.read, admin. Contract: explicit. Load a Builder specification Required fields: slug.

connector_builder.import.curl

Write. Scope: connector_builder.write, admin. Contract: explicit. Import cURL into Connector Builder Retry-safe with idempotency_key.

connector_builder.import.openapi

Write. Scope: connector_builder.write, admin. Contract: explicit. Import OpenAPI into Connector Builder Retry-safe with idempotency_key.

connector_builder.import.postman

Write. Scope: connector_builder.write, admin. Contract: explicit. Import Postman into Connector Builder Retry-safe with idempotency_key.

connector_builder.list

Read. Scope: connector_builder.read, admin. Contract: explicit. List Builder connectors

connector_builder.profiles

Read. Scope: connector_builder.read, connectors.read, admin. Contract: source_inferred. List Connector Builder profiles and capability contracts

connector_builder.test

Write. Scope: connector_builder.write, admin. Contract: explicit. Run Builder conformance tests Required fields: slug. Retry-safe with idempotency_key.

connector_builder.update

Write. Scope: connector_builder.write, admin. Contract: explicit. Update a generated connector Required fields: slug, spec. Retry-safe with idempotency_key.

connector_builder.validate

Read. Scope: connector_builder.read, admin. Contract: explicit. Validate a Builder specification Required fields: spec.

connectors (51)

connectors.action

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Action

connectors.backfill

Write. Scope: connectors.write, admin. Contract: explicit. Start connector backfill Required fields: slug. Retry-safe with idempotency_key.

connectors.backfill.route.connectors.backfill

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Backfill

connectors.backfill.status

Read. Scope: connectors.read, admin. Contract: explicit. Read connector backfill status Required fields: slug.

connectors.backfill.status.route.connectors.backfill.status

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Backfill Status

connectors.builder.ai.actions

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Ai Actions

connectors.builder.ai.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: explicit. Synchronize connector customers Required fields: slug. Retry-safe with idempotency_key.

connectors.disable

Write. Scope: connectors.write, admin. Contract: explicit. Disable a connector Required fields: slug. Retry-safe with idempotency_key.

connectors.disable.route.connectors.disable

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Disable

connectors.email.account.department

Read. Scope: connectors.read, admin. Contract: route_inferred. Connector Email Account Department

connectors.email.account.remove

Write. Scope: connectors.write, admin. Contract: route_inferred. Connector Email Account Remove

connectors.email.account.routing

Read. Scope: connectors.read, admin. Contract: route_inferred. Connector Email Account Routing

connectors.enable

Write. Scope: connectors.write, admin. Contract: explicit. Enable a connector Required fields: slug. Retry-safe with idempotency_key.

connectors.enable.route.connectors.enable

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Enable

connectors.get

Read. Scope: connectors.read, admin. Contract: source_inferred. Connectors Get

connectors.get.route.connectors.get

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Get

connectors.install

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Install

connectors.integrity.scan

Read. Scope: connectors.read, admin. Contract: declared_dynamic. Connector Integrity Scan

connectors.list

Read. Scope: connectors.read, admin. Contract: explicit. List installed connectors and capabilities

connectors.list.route.connectors.list

Read. Scope: connectors.read, admin. Contract: declared_dynamic. Connectors List

connectors.oauth.start

Write. Scope: connectors.write, admin. Contract: route_inferred. Connector Oauth Start

connectors.settings.get

Read. Scope: connectors.read, admin. Contract: explicit. Read connector settings Required fields: slug.

connectors.settings.save

Write. Scope: connectors.write, admin. Contract: explicit. Save connector settings Required fields: slug, settings. Retry-safe with idempotency_key.

connectors.shared.oauth.delete

Write. Scope: connectors.write, admin. Contract: route_inferred. Connector Shared Oauth Delete

connectors.sync.customers

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Sync Customers

connectors.test

Read. Scope: connectors.read, admin. Contract: source_inferred. Connectors Test

connectors.test.route.connectors.test

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Test

connectors.uninstall

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Uninstall

connectors.workflow.recipes

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Workflow Recipes

conversations (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

кішка (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.

Клієнти (44)

customers.analyze

Write. Scope: customers.write, journey.write, admin. Contract: explicit. Analyze a customer journey with AI Required fields: client_id. Retry-safe with idempotency_key.

customers.behaviour

Read. Scope: 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: explicit. Get a customer profile Required fields: client_id.

customers.journey

Read. Scope: customers.read, journey.read, admin. Contract: explicit. Get a complete customer journey Required fields: client_id.

customers.list

Read. Scope: customers.read, crm.read, admin. Contract: explicit. List known customers

customers.outreach.prepare

Write. Scope: customers.write, crm.write, admin. Contract: explicit. Prepare CRM outreach for a customer Required fields: client_id. Retry-safe with idempotency_key.

departments (1)

departments.list

Read. Scope: departments.read, admin. Contract: source_inferred. Departments List

Електронний лист (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

пт (48)

hr.agent.incident.close

Write. Scope: hr.write, admin. Contract: explicit. Close an agent incident — the same act that lifts the suspension it caused Required fields: incident_uuid, resolution. Retry-safe with idempotency_key.

hr.agent.step

Write. Scope: hr.write, admin. Contract: explicit. Run one agent step: gate verdict, execution and outcome reported separately Required fields: run_uuid, agent_key, tool_key, jurisdiction, purpose. Retry-safe with idempotency_key.

hr.agent.step.status

Read. Scope: hr.read, admin. Contract: explicit. 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: explicit. A human takes an agent run; no further agent steps are accepted Required fields: run_uuid. Retry-safe with idempotency_key.

hr.agent.tool.grant

Write. Scope: hr.write, admin. Contract: explicit. 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. Retry-safe with idempotency_key.

hr.agent.tools

Read. Scope: hr.read, admin. Contract: explicit. List the registered typed tools an agent may use, and open agent incidents

hr.ai.corrections

Write. Scope: hr.write, admin. Contract: explicit. Bundle recent reviewer corrections into a dataset; it is pending privacy review and trains nothing Retry-safe with idempotency_key.

hr.ai.quality.overview

Read. Scope: hr.read, admin. Contract: explicit. The AI quality board: sampled defect rate, override pressure per workflow, coaching reception

hr.booking.slots_reconcile

Write. Scope: hr.write, admin. Contract: explicit. Release booking slots whose claim never became a booked meeting Retry-safe with idempotency_key.

hr.connectors.certify

Write. Scope: hr.write, admin. Contract: explicit. 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. Retry-safe with idempotency_key.

hr.connectors.health

Read. Scope: hr.read, admin. Contract: explicit. 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: explicit. 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. Retry-safe with idempotency_key.

hr.decisions.explanation

Read. Scope: hr.read, admin. Contract: explicit. 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: explicit. Provision seatless employee access and send the invitation Required fields: person_uuid. Retry-safe with idempotency_key.

hr.employee.restore

Write. Scope: hr.write, admin. Contract: explicit. Lift an employee access suspension (written reason required) and provision again Required fields: person_uuid, reason. Retry-safe with idempotency_key.

hr.experience.metrics

Read. Scope: hr.read, admin. Contract: explicit. Measured persona experience metrics (self-service rate, decision cycle, coaching usefulness, quality) from live journeys

hr.global.readiness

Read. Scope: hr.read, admin. Contract: explicit. The whole launch picture: 15-gate leadership score, release readiness checks and jurisdiction coverage

hr.identity.facets

Read. Scope: hr.read, admin. Contract: explicit. List a person's identity facets and open conflicts Required fields: person_uuid.

hr.identity.link

Write. Scope: hr.write, admin. Contract: explicit. Link an identity facet to a person Required fields: person_uuid, facet_type, facet_key. Retry-safe with idempotency_key.

hr.interview.room.connect

Write. Scope: hr.write, admin. Contract: explicit. Connect the AI to interview media; refuses unless media really reaches the worker Required fields: media_uuid. Retry-safe with idempotency_key.

hr.interview.room.consent

Write. Scope: hr.write, admin. Contract: explicit. Record or withdraw consent for ONE interview purpose (recording, biometric_liveness, transcription) Required fields: media_uuid, purpose, state. Retry-safe with idempotency_key.

hr.interview.room.pause

Write. Scope: hr.write, admin. Contract: explicit. Pause a live interview Required fields: media_uuid. Retry-safe with idempotency_key.

hr.interview.room.provision

Write. Scope: hr.write, admin. Contract: explicit. Provision an interview room (a place to meet — NOT AI participation) Required fields: session_uuid, transport, accommodation_route. Retry-safe with idempotency_key.

hr.interview.room.state

Read. Scope: hr.read, admin. Contract: explicit. 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: explicit. A human takes the interview; the AI cannot speak in it again Required fields: media_uuid, reason. Retry-safe with idempotency_key.

hr.jurisdiction.capabilities

Read. Scope: hr.read, admin. Contract: explicit. 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: explicit. 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. Retry-safe with idempotency_key.

hr.jurisdiction.coverage

Read. Scope: hr.read, admin. Contract: explicit. Computed coverage for every market: released pack, named counsel owner, cited sources, passing tests

hr.jurisdiction.explain

Read. Scope: hr.read, admin. Contract: explicit. 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: explicit. Put a drafted policy pack into effect; refused without a named counsel owner and a cited law Required fields: release_uuid. Retry-safe with idempotency_key.

hr.learning.overview

Read. Scope: hr.read, admin. Contract: explicit. Read courses, paths and enrolments

hr.leave.overview

Read. Scope: hr.read, admin. Contract: explicit. Read leave types and requests

hr.lifecycle.lanes

Read. Scope: hr.read, admin. Contract: explicit. 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: explicit. Read HR connector accounts, conflicts and deliveries

hr.org.tree

Read. Scope: hr.read, admin. Contract: explicit. Read the organisation tree

hr.people.create

Write. Scope: hr.write, admin. Contract: explicit. Create an HR person Required fields: display_name, primary_email, worker_type. Retry-safe with idempotency_key.

hr.people.get

Read. Scope: hr.read, admin. Contract: explicit. Get one HR person Required fields: person_uuid.

hr.people.list

Read. Scope: hr.read, admin. Contract: explicit. List HR people

hr.people.update

Write. Scope: hr.write, admin. Contract: explicit. Update an HR person Required fields: person_uuid, display_name, primary_email. Retry-safe with idempotency_key.

hr.postings.list

Read. Scope: hr.read, admin. Contract: explicit. List job postings

hr.readiness.read

Read. Scope: hr.read, admin. Contract: explicit. Run the HR release readiness report

hr.release.verify

Write. Scope: hr.write, admin. Contract: explicit. Run the four HR release gates (schema, manifest, probe, readiness) Retry-safe with idempotency_key.

hr.requisitions.create

Write. Scope: hr.write, admin. Contract: explicit. Create a requisition Required fields: title, openings, justification. Retry-safe with idempotency_key.

hr.requisitions.list

Read. Scope: hr.read, admin. Contract: explicit. List requisitions

hr.thread.delete

Write. Scope: hr.write, admin. Contract: explicit. Delete a workforce conversation; refused while it is under legal hold Required fields: thread_uuid, reason. Retry-safe with idempotency_key.

hr.thread.legal_hold

Write. Scope: hr.write, admin. Contract: explicit. Place or lift a legal hold on a workforce conversation Required fields: thread_uuid, on, reason. Retry-safe with idempotency_key.

hr.thread.retention

Write. Scope: hr.write, admin. Contract: explicit. Set a conversation's retention class (standard|extended|permanent) Required fields: thread_uuid, retention_class. Retry-safe with idempotency_key.

hr.threads.retention_sweep

Write. Scope: hr.write, admin. Contract: explicit. Run the conversation retention sweep; legal holds are never swept Retry-safe with idempotency_key.

intent (6)

intent.clear

Write. Scope: intent.write, admin. Contract: declared_dynamic. Intent Clear

intent.funnel

Read. Scope: intent.read, analytics.read, admin. Contract: explicit. Read the intent funnel

intent.funnel.aggregate

Read. Scope: intent.read, admin. Contract: route_inferred. Intent Funnel Aggregate

intent.funnel.route.intent.funnel

Read. Scope: intent.read, admin. Contract: route_inferred. Intent Funnel

intent.summary

Read. Scope: intent.read, analytics.read, admin. Contract: explicit. Read intent summaries

intent.summary.route.intent.summary

Read. Scope: intent.read, admin. Contract: route_inferred. Intent Summary

кішка (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

Read. Scope: kb.read, admin. Contract: route_inferred. Help Articles Ids

knowledge.articles.list

Read. Scope: kb.read, admin. Contract: route_inferred. Help Articles List

knowledge.articles.set.public.all

Write. Scope: kb.write, admin. Contract: route_inferred. Help Articles Set Public All

knowledge.categories.ai.merge

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Categories Ai Merge

knowledge.categories.bulk.delete

Write. Scope: kb.write, admin. Contract: route_inferred. Help Categories Bulk Delete

knowledge.categories.list

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Categories List

knowledge.categories.merge.dupes

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Categories Merge Dupes

knowledge.category.delete

Write. Scope: kb.write, admin. Contract: route_inferred. Help Category Delete

knowledge.category.get

Read. Scope: kb.read, admin. Contract: route_inferred. Help Category Get

knowledge.category.save

Write. Scope: kb.write, admin. Contract: route_inferred. Help Category Save

knowledge.center.article.image.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Article Image Upload

knowledge.center.favicon.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Favicon Upload

knowledge.center.hero.dark.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Hero Dark Upload

knowledge.center.hero.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Hero Upload

knowledge.center.logo.dark.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Logo Dark Upload

knowledge.center.logo.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Logo Upload

knowledge.center.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: explicit. Delete a lead Required fields: lead_id. Retry-safe with idempotency_key.

leads.delete.route.lead.delete

Write. Scope: leads.write, admin. Contract: route_inferred. Lead Delete

leads.list

Read. Scope: leads.read, crm.read, admin. Contract: explicit. List leads

leads.stats

Read. Scope: leads.read, analytics.read, admin. Contract: explicit. Get lead statistics

leads.stats.route.leads.stats

Read. Scope: leads.read, admin. Contract: declared_dynamic. Leads Stats

leads.update

Write. Scope: leads.write, crm.write, admin. Contract: explicit. Update a lead Required fields: lead_id, status. Retry-safe with idempotency_key.

интерв'ю (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

майдан (921)

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.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.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.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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Benchmarks Contribute Now

platform.hr.benchmarks.opt.in

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Benchmarks Opt In

platform.hr.benchmarks.opt.out

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Document Deletion Request

platform.hr.document.hold

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Gig Decide

platform.hr.gig.post

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Schedule

platform.hr.interview.transcript.correct

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Meeting Propose

platform.hr.meeting.reschedule

Read. Scope: platform.read, 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

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Meetings Reconcile

platform.hr.mentor.propose

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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. Hr Person Create

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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Req Transition

platform.hr.review.cycle.open

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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

Read. Scope: platform.read, 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.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: explicit. Analyze sales with AI Retry-safe with idempotency_key.

sales.chart

Write. Scope: sales.write, admin. Contract: route_inferred. Sales Chart

sales.compare

Read. Scope: sales.read, analytics.read, admin. Contract: explicit. Compare sales periods

sales.compare.route.sales.compare

Read. Scope: sales.read, admin. Contract: route_inferred. Sales Compare

sales.goal.delete

Write. Scope: sales.write, admin. Contract: route_inferred. Conversion Goal Delete

sales.goal.list

Read. Scope: sales.read, admin. Contract: route_inferred. Conversion Goal List

sales.goal.save

Write. Scope: sales.write, admin. Contract: route_inferred. Conversion Goal Save

sales.list

Read. Scope: sales.read, analytics.read, admin. Contract: explicit. List sales and conversions

sales.list.route.conversion.list

Read. Scope: sales.read, admin. Contract: route_inferred. Conversion List

sales.record

Write. Scope: sales.write, admin. Contract: route_inferred. Conversion Record

sales.stats

Read. Scope: sales.read, analytics.read, admin. Contract: explicit. Read sales statistics

sales.stats.route.sales.stats

Read. Scope: sales.read, admin. Contract: declared_dynamic. Sales Stats

sales.table

Read. Scope: sales.read, admin. Contract: route_inferred. Sales Table

Гарантійне забезпечення (21)

security.ai.analyze

Write. Scope: security.write, admin. Contract: route_inferred. Security Ai Analyze

security.ai.ask

Write. Scope: security.write, admin. Contract: route_inferred. Security Ai Ask

security.ai.briefs

Read. Scope: security.read, admin. Contract: declared_dynamic. Security Ai Briefs

security.ai.chain.explain

Read. Scope: security.read, admin. Contract: route_inferred. Security Ai Chain Explain

security.ai.incident.action

Write. Scope: security.write, admin. Contract: route_inferred. Security Ai Incident Action

security.ai.incidents

Read. Scope: security.read, admin. Contract: route_inferred. Security Ai Incidents

security.ai.js.triage

Read. Scope: security.read, admin. Contract: route_inferred. Security Ai Js Triage

security.ai.policies

Read. Scope: security.read, admin. Contract: declared_dynamic. Security Ai Policies

security.ai.policy.action

Write. Scope: security.write, admin. Contract: route_inferred. Security Ai Policy Action

security.ai.verdicts

Read. Scope: security.read, admin. Contract: route_inferred. Security Ai Verdicts

security.blocklist.add

Write. Scope: security.write, admin. Contract: source_inferred. Add a spam rule (email, domain or IP) to the ticket blocklist Required fields: kind, value. Retry-safe with idempotency_key.

security.blocklist.list

Read. Scope: security.read, admin. Contract: explicit. List the current ticket spam rules

security.chain.reanchor

Write. Scope: security.write, admin. Contract: declared_dynamic. Security Chain Reanchor

security.check

Read. Scope: security.read, admin. Contract: source_inferred. Check an IP or email against the platform blocklists and Security AI verdicts

security.ip

Write. Scope: security.write, admin. Contract: route_inferred. Block Ip

security.ip.route.unblock.ip

Write. Scope: security.write, admin. Contract: route_inferred. Unblock Ip

security.list

Write. Scope: security.write, admin. Contract: route_inferred. Access Log List

security.overview.chains

Read. Scope: security.read, admin. Contract: declared_dynamic. Security Overview Chains

security.overview.data

Read. Scope: security.read, admin. Contract: declared_dynamic. Security Overview Data

security.report

Write. Scope: security.write, admin. Contract: source_inferred. Report abuse a connector observed (spam, login attack, scan, fraud) Retry-safe with idempotency_key.

security.visitor

Write. Scope: security.write, admin. Contract: route_inferred. Block Visitor

sessions (5)

sessions.detail

Read. Scope: sessions.read, admin. Contract: route_inferred. Session Detail

sessions.get

Read. Scope: sessions.read, analytics.read, admin. Contract: explicit. Get a session journey Required fields: session_id.

sessions.list

Read. Scope: sessions.read, analytics.read, admin. Contract: explicit. List sessions

sessions.merged

Read. Scope: sessions.read, admin. Contract: route_inferred. Sessions Merged

sessions.table

Read. Scope: sessions.read, admin. Contract: route_inferred. Sessions Table

settings (11)

settings.ai.eval.watchtower.config

Write. Scope: settings.write, admin. Contract: declared_dynamic. Ai Eval Watchtower Config

settings.get.client.chat.settings

Read. Scope: settings.read, admin. Contract: route_inferred. Get Client Chat Settings

settings.get.settings

Read. Scope: settings.read, admin. Contract: route_inferred. Get Settings

settings.opsiq.branding.clear

Write. Scope: 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: explicit. List Site Intelligence alerts

site_intelligence.alerts.resolve

Write. Scope: site_intelligence.write, admin. Contract: explicit. Resolve a Site Intelligence alert Required fields: alert_id. Retry-safe with idempotency_key.

site_intelligence.analyze

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Analyze

site_intelligence.ask

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ask

site_intelligence.audit.hint

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Audit Hint

site_intelligence.backlink.disavow

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Backlink Disavow

site_intelligence.backlinks

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Backlinks

site_intelligence.backlinks.list

Read. Scope: site_intelligence.read, admin. Contract: explicit. List backlinks

site_intelligence.backlinks.refresh

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Backlinks Refresh

site_intelligence.billing.overview

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Billing Overview

site_intelligence.brand.get

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Brand Get

site_intelligence.brand.radar

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Brand Radar

site_intelligence.brand.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Brand Save

site_intelligence.cannibalisation

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Cannibalisation

site_intelligence.compare

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Compare

site_intelligence.competitor.add

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Competitor Add

site_intelligence.competitor.refresh

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Competitor Refresh

site_intelligence.competitor.remove

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Competitor Remove

site_intelligence.competitors

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Competitors

site_intelligence.competitors.list

Read. Scope: site_intelligence.read, admin. Contract: explicit. List competitors

site_intelligence.content.brief

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Content Brief

site_intelligence.content.decay

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Content Decay

site_intelligence.content.draft

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Content Draft

site_intelligence.crawl.budget

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Crawl Budget

site_intelligence.crawl.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Crawl List

site_intelligence.crawl.status

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Crawl Status

site_intelligence.crawls.list

Read. Scope: site_intelligence.read, admin. Contract: explicit. List Site Intelligence crawls

site_intelligence.crawls.status

Read. Scope: site_intelligence.read, admin. Contract: explicit. Get crawl status

site_intelligence.dashboard

Read. Scope: site_intelligence.read, admin. Contract: explicit. Read the Site Intelligence dashboard

site_intelligence.dashboard.route.si.dashboard

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Dashboard

site_intelligence.dashboard.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Dashboard Save

site_intelligence.diag.backfill

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Backfill

site_intelligence.diag.compare

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Compare

site_intelligence.diag.portfolio

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Diag Portfolio

site_intelligence.diag.recs.regen

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Recs Regen

site_intelligence.diag.thresholds

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds

site_intelligence.diag.thresholds.eval

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds Eval

site_intelligence.diag.thresholds.history

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds History

site_intelligence.diag.thresholds.profile

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds Profile

site_intelligence.diag.thresholds.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds Save

site_intelligence.diagnostics

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diagnostics

site_intelligence.exec.report

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Exec Report

site_intelligence.export

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Export

site_intelligence.ga4.connect

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 Connect

site_intelligence.ga4.list.properties

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 List Properties

site_intelligence.ga4.map

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 Map

site_intelligence.ga4.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 Status

site_intelligence.ga4.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 Sync

site_intelligence.gbp

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp

site_intelligence.gbp.draft.approve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Draft Approve

site_intelligence.gbp.draft.dismiss

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Draft Dismiss

site_intelligence.gbp.draft.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Draft Sync

site_intelligence.gbp.drafts

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Drafts

site_intelligence.gbp.locations

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Gbp Locations

site_intelligence.gbp.map

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Map

site_intelligence.gbp.post.draft

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Post Draft

site_intelligence.gbp.post.publish

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Post Publish

site_intelligence.gbp.qa

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Qa

site_intelligence.gbp.qa.approve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Qa Approve

site_intelligence.gbp.qa.dismiss

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Qa Dismiss

site_intelligence.gbp.qa.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Qa Sync

site_intelligence.gbp.site.prefs

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Site Prefs

site_intelligence.gbp.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Sync

site_intelligence.google.truth.schedule.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Google Truth Schedule Save

site_intelligence.growth

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Growth

site_intelligence.gsc.connect

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Connect

site_intelligence.gsc.list.properties

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc List Properties

site_intelligence.gsc.map

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Map

site_intelligence.gsc.opportunities

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Opportunities

site_intelligence.gsc.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Status

site_intelligence.gsc.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Sync

site_intelligence.image.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Image Audit

site_intelligence.internal.links

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Internal Links

site_intelligence.issue.history

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Issue History

site_intelligence.issues

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Issues

site_intelligence.issues.list

Read. Scope: site_intelligence.read, admin. Contract: explicit. List Site Intelligence issues

site_intelligence.keyword.add

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Keyword Add

site_intelligence.keyword.remove

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Keyword Remove

site_intelligence.keyword.research

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Keyword Research

site_intelligence.keywords

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Keywords

site_intelligence.keywords.list

Read. Scope: site_intelligence.read, admin. Contract: explicit. List tracked keywords

site_intelligence.local

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Local

site_intelligence.local.grid

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Local Grid

site_intelligence.local.grid.scan

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Local Grid Scan

site_intelligence.log.ingest

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Log Ingest

site_intelligence.log.summary

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Log Summary

site_intelligence.metadata.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Metadata Audit

site_intelligence.overview

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Overview

site_intelligence.page

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Page

site_intelligence.page.experience

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Page Experience

site_intelligence.page.optimize

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Page Optimize

site_intelligence.pages

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Pages

site_intelligence.pages.list

Read. Scope: site_intelligence.read, admin. Contract: explicit. List Site Intelligence pages

site_intelligence.pagespeed.bridge.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Pagespeed Bridge Status

site_intelligence.portfolio.export

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Portfolio Export

site_intelligence.provider.health

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Provider Health

site_intelligence.rank.check

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Rank Check

site_intelligence.rec.action

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Rec Action

site_intelligence.recommendations

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Recommendations

site_intelligence.redirect.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Redirect Audit

site_intelligence.report

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Report

site_intelligence.report.generate

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Report Generate

site_intelligence.reports

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Reports

site_intelligence.reports.list

Read. Scope: site_intelligence.read, admin. Contract: source_inferred. Site Intelligence Reports List

site_intelligence.reset.google.oauth

Write. Scope: site_intelligence.write, admin. Contract: declared_dynamic. Si Reset Google Oauth

site_intelligence.revenue

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Revenue

site_intelligence.revenue.portfolio

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Revenue Portfolio

site_intelligence.save.shared.google.oauth

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Save Shared Google Oauth

site_intelligence.scan.run

Write. Scope: site_intelligence.write, admin. Contract: explicit. Start a Site Intelligence analysis Retry-safe with idempotency_key.

site_intelligence.schedule.delete

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schedule Delete

site_intelligence.schedule.run.now

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schedule Run Now

site_intelligence.schedule.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schedule Save

site_intelligence.schedules.list

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schedules List

site_intelligence.schema.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schema Audit

site_intelligence.server.engineer

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Server Engineer

site_intelligence.settings.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Settings Save

site_intelligence.sites.list

Read. Scope: site_intelligence.read, admin. Contract: explicit. List Site Intelligence monitored sites

site_intelligence.speed

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed

site_intelligence.speed.progress

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed Progress

site_intelligence.speed.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed Run

site_intelligence.speed.v2

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2

site_intelligence.speed.v2.build.task

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2 Build Task

site_intelligence.speed.v2.collect

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2 Collect

site_intelligence.speed.v2.read

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2 Read

site_intelligence.speed.v2.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2 Run

site_intelligence.start.crawl

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Start Crawl

site_intelligence.task.approve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Approve

site_intelligence.task.assign

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Assign

site_intelligence.task.bulk.apply

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Bulk Apply

site_intelligence.task.bulk.assign

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Bulk Assign

site_intelligence.task.bulk.deadline

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Bulk Deadline

site_intelligence.task.bulk.dismiss

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Bulk Dismiss

site_intelligence.task.deadline

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Deadline

site_intelligence.task.note

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Note

site_intelligence.task.proof

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Proof

site_intelligence.task.reject

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Reject

site_intelligence.task.review

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Review

site_intelligence.topical.map

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Topical Map

site_intelligence.webhook.delete

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Webhook Delete

site_intelligence.webhook.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Webhook Save

site_intelligence.webhooks.list

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Webhooks List

site_intelligence.workflow

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Workflow

статус (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.

опитування (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.

ЗАМОВИТИ (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

Електронний лист (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: explicit. Block a visitor Required fields: visitor_id. Retry-safe with idempotency_key.

visitors.list

Read. Scope: visitors.read, analytics.read, admin. Contract: explicit. List visitors

visitors.table

Read. Scope: visitors.read, admin. Contract: route_inferred. Visitors Table

вебка (1)

webhooks.events.list

Read. Scope: webhooks.read, crm.read, admin. Contract: explicit. List outbound webhook events and their payloads

Мистецтво (6)

writing.analyze

Write. Scope: writing. Contract: source_inferred. Writing Analyze Retry-safe with idempotency_key.

writing.compose

Write. Scope: writing. Contract: source_inferred. Writing Compose Retry-safe with idempotency_key.

writing.reply

Write. Scope: writing. Contract: source_inferred. Writing Reply Retry-safe with idempotency_key.

writing.rewrite

Write. Scope: writing. Contract: source_inferred. Writing Rewrite Retry-safe with idempotency_key.

writing.summarize

Write. Scope: writing. Contract: source_inferred. Writing Summarize Retry-safe with idempotency_key.

writing.translate

Write. Scope: writing. Contract: source_inferred. Writing Translate Retry-safe with idempotency_key.

Чи доступний OpenAPI та Postman?+

Так. Згенерований OpenAPI 3.0 документ знаходиться на сайті /api/v1/openapi.php, Згенерована колекція Postman знаходиться в /api/v1/postman.php, і людські інструменти розробника знаходяться на /api/docs/.

Як я працюю з більш ніж одним робочим простором?+

Надішліть сайт_ключа в орган запиту, щоб вибрати робочу площу. Ключ, виданий для одного робочого простору, залишається приколом; ключ з контекстом адміністратора може вибрати будь-який робочий простір, який дозволяє бачити і відмовлено в цьому не є.

Які дії можуть викликати читання?+

Будь-яка дія, позначена як читання. Встановити режим дозволу на ключ для зчитування_тільки і кожен запис відмовлено у читанні_only_key, тому інтеграція звітності не може змінити нічого навіть по помилці.

Чому я не хочу, щоб щось я можу побачити в адмінці?+

Ключ до робочого простору. Записи в інших робочих просторах повертаються недобрим, а не похибку про дозвіл, тому API ніколи не підтверджує, чи є щось інше.

Про компанію

Безпека API

Один договір безпеки для кожного роз'єму та інтеграції: запитати OpsIQ що знає про те, IP або відправник, і подача зловживань власної системи бачить.

OpsIQ вже захищає себе: IP блоки брандмауера, що фіксують спам, а також захист AI класифікує відбійників та пропонує правила блокування. Безпека API відкриває, що розвідка на інші системи. Платформа за векселями, порталом клієнта або користувальницький додаток може перевірити відвідувачів перед його довірою і повідомити про те, що вона спостерігала в тому, що весь інсталяційний ви дізнаєтеся з кожної поверхні.

Що можна зробити

Перевірити довіреності

Безпека. check відповідей з пожежної стінки, будь-яке правило спаму, що відповідає відправника, і вирок на випадок AI для IP. Один виклик, один консолідований погляд.

Звіт про те, що ви побачили

Безпека.report записує спостереження як охоронний захід, має класифікація AI безпеки IP відхиляється, і оповідає адміністратора при вироку повернеться високий ризик. Повторний кластер звітів в інциденти, зокрема атаки OpsIQ див. прямо.

Правила спаму

Безпека. blocklist. add і безпека. blockList читати і писати ті ж правила спаму, які використовуються сторінки квитків, тому відправник заблокований в одній системі блокується всюди.

Повідомлення зловживання з роз'єму
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"
}

Сфера та безпека

security.read

Потрібні для безпеки. check і безпеки. blocklist. Сейф дасть можливість інтеграції звітності.

security.write

Потрібні для безпеки. report і безпека. blocklist. add. Дати його тільки до систем, які ви хочете, щоб правила годування та звіти в.

Ніщо німе знищено

У розділі "Пошук" можна прочитати і відновити.

Платформа захищає себе

Власний сервер IP адреси не можуть бути заблоковані, блокувати або повідомляти про це API, так що інтеграція неправильного налаштування не може входити на платформу вниз.

💡
Виконайте ключ під інтеграцію, потім API_ Ключі, і дайте його тільки сфери безпеки, які він потребує. Повний договір запиту для кожної дії знаходиться в мета. actions та документа OpenAPI.
Чи використовують наявні роз'єми?+

Безстрокова синхронізація вже автоматична: коли ви блокуєте IP, підключені платформи розповіли через синхронізацію безпеки роз'єму. Безпека API є вхідною половинкою. Вказуйте свій роз'єм або користувацький код за цими чотирма діями з ключем, що несе сферу безпеки.

Де живуть правила спаму?+

Один магазин. Сторінка квитків Block sender control, спам AI в налаштуваннях, і це API всі роботи проти того ж списку блоків, тому є саме одне місце для перегляду.

Про компанію

Події API

Надішліть спеціальні заходи з вашого сервера або сайту в OpsIQ для аналітики, експериментів, CRM-пробігів і вебок умов.

Як працює
Події APIВідстеження () виклику, що надсилає на замовлення демо_броньовану акцію в OpsIQ_, яка подає цілі перетворення, сегменти та тригери.OpsIQ. track("demo_booked", {Вартість: 0, план: "pro"});МетаСекціїТригери та вебокВеб-сайт: www.facebook.com OpsIQ.track або серверна частина POST /v1/events
Події API

Випадкові події

Відстеження подій браузера
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "button_clicked", {
  button: "signup",
  page: "/pricing",
  variant: "green"
}]);

Серверні події

Сервер-за межами, записувати заходи та перетворення на контакт через дію API. Використовуйте crm.activities.record для життєвого циклу / бізнесу та crm.conversions.record для перетворення. Немає events.send дія; вхідний приймач CRM-події на /v1/inbound.php?t=<token> для сторонніх систем, які проштовхують події.

Серверна активність (action) API)
POST /api/v1.php
Authorization: Bearer opq_your_key
Content-Type: application/json

{
  "action": "crm.activities.record",
  "site_key": "site_abc123",
  "email": "[email protected]",
  "event": "subscription.upgraded",
  "value": 50,
  "currency": "USD"
}

Немовний конвеншн

Невідведення

"order. неповний" не "замовленняКомплетований".

Вгору

"button.clicked" not "button.click".

Ви можете бути певними

"Приховане. план_вибірний" не "користувач_дія".

Про компанію

Як відбувається переробка даних через OpsIQ

Розуміння потоку даних дозволяє дебвугувати інтеграцію та оптимізувати продуктивність.

Як працює
Як відбувається потоки данихВіджети даних з віджету та маякону в OpsIQ ядро (CDP, граф ідентичності, мозок AI, аналітика, CRM) потім через вебхоки та REST API.Віджети& nbsp; бензоOpsIQ ядроCDP · графік ідентичностіАІ мозковийCRM системиВихідні веб- гачкиРЕСТ API_
Потоки даних

Включення потоку даних

1
Видео бякон

Про нас JavaScript Віджет відправляє перегляд сторінок, кліки та повідомлення чату до /beacon.php.

2
Захоплення подій

Події, що зберігаються в opsiq_events з сайтом_key, типом події, клієнтом та властивостями.

3
Збірник сесія

Сесійні групи сторінок переглядів на сеанси (через cron).

4
Рішення для ідентифікації

При виявленні анонімних записів пов’язаних з профілем замовника.

5
Синхрон роз'єму

Роз'єми витягують дані з зовнішніх платформ і зберігати в кеші роз'єму.

6
АІ-контекст

AI збирає контекст від: історія відвідувачів, профіль клієнта, дані роз'єму, КБ та підказка.

Вихідний потік даних

1
Похід пожеж

Внутрішня подія пожежі (кет. created, chat. message, замовлення. повний).

2
Робоча черга

Подія, розміщена в черзі на роботу асинхрону.

3
Відправлення Webhook

Визначні знаки і надсилання на всі підписні кінцеві точки.

4
Збій на збій

Посилання відправлень, що надходять з витривалим резервом.

Налаштування

Налаштування посилання

Налаштування - центр управління робочим простором. Все нижче, вказаний на робочому просторі, ви знаходитесь, тому один обліковий запис може запустити кілька брендів з різними ідентифікаціями, поведінкою та правилами збереження чату.

Пошук налаштування

У налаштуваннях, поширюйте одинадцять вкладок, що зараховуються під чотири меню. Ви не очікуєте, щоб переглядати їх.

Налаштування пошуку (Ctrl + K)

Натисніть Ctrl + K, або Cmd + K на Mac, десь на сторінці Налаштування. Види у звичайних словах і натисніть кнопку Enter, щоб стрибати прямо до керування. Пошук переносить невеликі типоти і розуміє пов'язані слова, тому графік знаходить Cron і конфіденційність знаходить контроль відстеження. Це тільки показує налаштування вашої ролі може відкритися.

Робочий простір та план

Загальні та найясніший.

Підтримка AI та клієнтів

Адміністратор AI помічник, Клієнт чат, OpsIQ Статус на сервери

Дані та управління

Відстеження та конфіденційність, Збання та безпека.

Системы

Крон Setup (тільки без себе) і зона небезпеки.

Закупівля

Кожна вкладка зберігає на власній сторінці Зберегти. Клієнт чат та OpsIQ Письміть шпильками до екрана. Заощаджуйте перед перемиканням вкладок; зміни не виконуються поперек.

Глибокі посилання

Вкладка може бути замаркована або відправлена на колегу.

Загальний: Бізнес-ідентифікація

Найголовніший на сторінці. AI читає ці значення на кожній відповіді, звіті та щоденному короткі.

Назва бізнесу

Використовуються в AI звітах, щоденних брифах та замовленні клієнтів. Зберіть свій сайт піддону.

Бізнес-індустрія

Tailors AI аналіз, забивання, брифети та опитування пресетів. Вибирайте з веб-хостингу, електронної комерції, SaaS, нерухомості, агентства, консалтингу, охорони здоров'я, освіти, фінансів або загального бізнесу.

Мова системи

Мова, яку не обрали самостійно. Кожен агент може перенаречени його в профілі.

Використання мови браузера

Покажіть, що ви не перейдете на свій розсуд. Якщо хтось забирає мову, то їх вибір виграє і це ніколи не наділяє його.

Система Timezone

Зона всієї системи працює в: дата, звіти, графіки та фоновий кр. Використовуйте часовий пояс для операцій, не ваших клієнтів.

Загальна площа: GeoIP і трекінг

GeoIP2 Шлях бази даних

Повний шлях до GeoLite2-City.mmdb. Автодетекти на першому завантаженні по cPanel, Plesk, DirectAdmin, Cloudways, Docker і plain Linux або Windows. Додати GeoLite2-ASN.mmdb в тій же папці для провайдера веб-сайтів відвідувачів.

Гео-редукторний режим

GeoLite2 тільки, GeoLit2 з Cloudflare падлогу, або Cloudflare тільки.Cloudflare Режими вимагають проксіювання сайту через Cloudflare, з головними заголовками відвідувачів міста та області, ввімкненими для міських і регіональних деталей.

Час проведення сеансу (s)

Заява перед сеансом відвідувача вважається закінченою. За замовчуванням 14400, яка чотири години.

Інтервал оновлення (с)

Як часто оновлюються живі корми. За замовчуванням 30 секунд.

Активне Порно (мін)

Як довго відвідувачі рахують як жити після останнього завантаження сторінки. За замовчуванням 2 хвилин. Це жива подача, не довжина сеансу.

Переробка даних (дата)

Видаляє зібрані та сформовані записи минулого цього віку: аналітика, чат, квитки, відгуки, транзакції, телеметрія AI, інтеграційні журнали та CRM діяльність. 0 зберігає все назавжди. Налаштування, авторське зміст і приймання згоди ніколи не видаляються.

Коли чат видалено

Вибирає скільки видалених розмов залишається на записі: повний запис, запис без розмови або бал тільки. Видалення завжди приховує чат з коробки і історії відвідувачів. Запланований затримка та відвідувача Forget завжди тираються в повному обсязі незалежно від цього.

Трекінг-бот

Відповідає відвідувачеві, що передається у вигляді відвідувачів.

Огляд зворотного зв'язку за допомогою

Відкриваємо доступ до веб-сайтів для відвідувачів. Відокремлюємо з чат-запитів під номером «Клієнт Чат», підтримує потік.

Загальні: особливості AI

Магістр переключає для кожної поверхні AI. Все за замовчуванням і збереження робочого простору.

AI Трійдж на квитки

Визначає кожен квиток за категоріями, пріоритетом і відправкою, а також пишемо резюме на нитку вгорі квитка.

Шахрайський хід AI

Покажіть тривігаційні теги та резюме в інструменті, коли агент збирає ряд у списку квитків. Вимагає AI Трійдж.

Inbox Copilot (композитор)

Додає проект AI відповідь, тепліше, коротше, більш формальні та апологичні кнопки під час заповнення квитка. Ніщо не відправляється без агента.

Закупівля OpsIQ Копілот

На кожній сторінці адміністратора відкрито програму, що поєднує в собі клієнтів, рахунків-фактуру або квиток.

Ранковий короткий

У перший день копілоту нададуть термінові квитки, відповідей та чекаю чати. Неділі виробляють тиждень в огляді.

Загальний: гроші, брендування, резервне копіювання

OpsIQ базова валюта

Кожна сума грошей в адміні перетворюється в цю валюту для відображення. Роз'єми зберігають власну валюту джерела; встановлюють це за роз'єм.

Автосинк FX ставка

Відхилити ставки кожні шість годин від безкоштовного публічного живлення без API ключ. Ви можете додати ручні тарифи, які надіславляться кормом. З автоматичною відключенням валюти без ручного курсу залишаються неперевершені.

Увімкнути торгово-експортувальні функції

Відправлення. Вимкнення його на розкриває сторінку продажів і конверсії, карти доходів від дощок та живої розвідки. З ним з'являється, кожна цінова поверхня прихована і сторінка продажу залишає меню.

Торговий словник

Чайки OpsIQ Ваше слово: чи ви виконуєте оновлення, слово для продовження, які ви продаєте, і які покупці називаються.

Брендування та логотипи

Два долучення, один для світлих фонів (адміністратор бічний панель) і один за темний (дата-на сторінці). PNG, JPG, WebP або SVG до 3 MB_.

Агент з розвідки сайту, що дозволяє приватно SSH цілі

SEO-інструмент Auto-Implement з'єднується над SSH_. Приватні, петляві та зарезервовані адреси блокуються за замовчуванням як анти-SSRF вимірювання. Тільки ввімкніть на самоприховані установки, які повинні досягти місцевого сервера.

OpsIQ Резервне копіювання / відновлення

Експортувати кожну установку та OpsIQ-належний стіл плюс завантажені файли. Відновити заміну OpsIQ конфігурація та облік тільки; він ніколи не доторкається клієнтів, рахунків-фактур, квитків, послуг, доменів, замовлень або транзакцій.

⚠️
Візьміть резервну копію перед використанням будь-якої точки зони небезпеки. Резервне копіювання живе в загальній та видаленій дії, що живуть у зоні небезпеки, тому легко дістатися до кнопки видалення без експорту спочатку.
Налаштування

Налаштування: Безпека

Захист для входу адміністратора, облікових записів ваших співробітників та даних OpsIQ збору. Підписка на реєстрацію клієнтів для порталу підтримки налаштовано окремо.

Захист від підписів

Українська reCAPTCHA

Стопи ботів і критичні начинки на знаку адміністратора. Виберіть v3 (невидимий, забитий) або v2 (checkbox), встановити поріг V3 та надати сайт і секретні ключі. Ці ж клавіші перевикорені формою порталу підтримки.

Автозаправка з подвійним екраном

Заблокує адресу після ряду провалів у вікні, за кілька годин. Ви можете налаштувати замкнену сторінку повідомлення і показати невелику відволікання від очікування.

Введення в експлуатацію

Політика пароля з мінімальною довжиною, відмова від паролів, виявлених у відомих порушеннях, замкнений нарахування на основі основного наповнювача, обов'язковий двофактор для кожного адміністратора, відновлення паролю перед небезпечними діями, а також нові підходи до реєстрації.

Одиночний знак (OIDC)

Реєстрація персоналу через Ваше конфіденційність. Потрібні емітента URL_, ідентифікатор клієнта та секрет клієнта. Автообмінники, один рядок, створення користувачів автоматично на першому вказаному знаку.

Одиночний знак SAML 2.0)

Для постачальників, які говорять SAML. OpsIQ Відповідає ACS відповідь URL та ідентифікатор суб’єкта господарювання; ви подаєте ідентифікатор IdP, реєстрацію URL, необов'язковий підпис URL і X.509 Реєстрація сертифіката. Поля атрибутів електронної пошти та імен, необхідні тільки для нестандартних назв атрибутів.

SCIM Провізія

Створення каталогів, оновлення та деактивація OpsIQ рахунки.OpsIQ Поставки SCIM бази даних URL; ви генеруєте маркеровані токени тут так, щоб можна було відкликати без перерви на відпочинок.

Загузки, блокування та збірка

Виїзний Egress Allow-list

Обмеження, які зовнішні хостові це робоче простір роз'ємів можуть викликати. Узгоджування до SSH цільового контролю в цілому.

Задній строфи і Автоблок

Заблокує відвідувача після того, як їх запобігання переходить поріг. 0 відключити його. Дивитися сторінку Огляду безпеки на тиждень до вибору номеру.

Блокування повідомлення

Повідомлення про заблокований відвідувач бачить, як звичайний текст або власний користувацький HTML блок екрана.

Основні веб-вітали від реальних відвідувачів

Заходи ЛКП, ІНП та КЛІТИКИ з реальних сеансів.

Пакетний, доставка по переробці

Замовляючи події в браузері і доставити партії з реченнями, зменшуючи втрату на бідних мобільних з'єднаннях.

Пристрої відстеження Beacons

Реальний віджет складається з повороту криптографічного токена, так що дані про відстеження може бути відхилено. Від за замовчуванням, дозволяє змінювати як подається автентичним, тому тест спочатку.

Охорони безпеки

Вимкнено за замовчуванням. Виявлення та блокування, незалежно від того, що ця карта контролює, чи ви сказали, і скільки AI допомагає.

Увімкнути сповіщення про безпеку

Магістральний перемикач для цієї картки.

Пороги хвилі в’яжучі

Скільки не вдалося зареєструватись в короткий період, як хвиля варто оповіщення.

IP відповідача

Додає заглот для відвідувачів, які з'являються в кормах громадського харчування.

Сайт годинник

Почасова і TLS виїздні перевірки, сповіщення перед фіксатором сертифіката.

Аналіз та аналіз ситуації на AI

Додає роз’ясне вироку до підозрілої активності, а також групи, пов’язані з атаками в єдиний читабельний інцидент, а не потік подій.

Автопілот

Відправлення, що ви навчитеся з інциденту в запропонованому або прикладному порядку. Залиште на увазі, поки ви переглядали свої пропозиції та погоджуєтесь з ними.

Щоденне навчання безпеки та консультант з постусу

Щоденне відеоспостереження на сторінці Огляду безпеки, і щотижневий контроль затвердіння показує, що захищено та що ще відкрито.

Авто-експертиментні пропозиції

Пропоновано правило блоків, які ви ніколи не діяли на закінчується самостійно замість огороджувальних робіт.

DOM Сесія Реплести

Увімкнути відтворення сеансу DOM

Записи відвідувачів для відтворення. При вимкненні бібліотеки повторення ніколи не завантажується, тому немає вартості залишити його. Записи про зразків та конфіденційності-маски, і дивляться на сторінку Респлей сеансу під аналітикою.

Зразок, макс захоплення, затримка

Що відбувається запис сеансів, скільки часу може запустити один запис, і скільки днів зберігається запис.

⚠️
Сесійські релейні записи реальних людей, використовуючи ваш сайт. Тримайте швидкість зразка і збереження як низька, так як ще буде відповісти на ваше питання, і розголошуйте його в Вашому повідомленні про конфіденційність.
Налаштування

Налаштування: Відстеження та конфіденційність

Що OpsIQ може збиратися, і як довго кожен вид запису виживає.

Виключення

Виключені IPs та CIDR діапазони

Адреса, що не відстежується, одна за рядок, точні адреси або діапазони CIDR. Найчистіший спосіб тримати власну команду з вашої аналітики, оскільки вона охоплює всі на цій адресі, а не тільки підписаних адміністраторів.

Виключені URL Шляхи

У статті ніколи не відстежуються, одна за лінію, дикікарти з зіркою. Наприклад /admin/* зберігає весь офіс назад з журналу відвідувачів.

Політика збереження даних

Авто-прохолодильник Per-subsystem у добу. Відокремлений від загальної налаштування затримки даних в загальній та з зони небезпеки.

Журнали взаємодії AI

Налаштування телеметрії, що веде короткі попередні перегляди запиту та відповіді. За замовчуванням 90 днів. Це означає, що більшість клієнтів, тому скорочувати його спочатку при затягуванні конфіденційності.

Події використання AI

Кількість токени за ціною звіту. За замовчуванням 90 днів. Номери тільки, немає вмісту повідомлення.

Аудит аудиту

За замовчуванням 365 днів. Тримайте це найдовший; це ваш доказовий причіп.

Діагностика

Система медичних записів. За замовчуванням 30 днів.

Невідомі питання

Кластери питань AI не змогли відповісти. 90 день. Робота над ними на питаннях AI пропущена сторінка до закінчення терміну дії.

Спостереження та експорт

Метрична аномалія

Щоденне порівняння вчора проти останніх базових умов, попередження при метричному переїзді більше, ніж ваш поріг. За замовчуванням 35 відсоток. Від за замовчуванням.

Експорт на склад

Нічні відмітки сеансів, відвідувачів, перегляд сторінок та пов'язані таблиці для власного BI стека, у форматі ви обираєте, зберігається за кількістю днів. Від за замовчуванням.

Налаштування

Налаштування: Адміністратор AI

Покупець, який використовує персонал в адміні, з доступом до інформації про клієнтів, рахунків-фактур, квитків, серверів та журналів cron. Різні помічники від замовника, що заражають один під чатом Клієнта.

Увімкнути OpsIQ А. Вудгет

Показати на кожній сторінці адміністратора. Від приховує його всім.

Відтворення та поведінка

Посада кутова, ширина панелі (320 до 600 px, максимальна висота (400 до 900 px, кутовий радіус (0 до 24), розмір шрифту, а також матове скло розмиття позаду панелі.

Показати швидкі чіпси

Кнопки з коротким вирізом One-click під заголовок. Найшвидший спосіб для більшості співробітників.

Показати модель інформація

Відображається, що модель відповіла і як довго вона взяла. Корисно при навантаженні вартості, шуму для повсякденного використання.

Захват доступу

Тільки показує помічника в зареєстрованому адміністратору, ім'я користувача та електронну пошту як відповідає OpsIQ агента, призначеного для цього робочого простору. Власники завжди проходять перевірку кнопки доступу до ключів, перш ніж дозволити або ви можете заблокувати свою власну команду.

А. А. Осокорки

Відображення імені, головки та на замовлення повідомлення, яке відображається при відкритті панелі.

Смарт Швидке відсмоктування чіпсів

Редагувати етикетку та підказка для кожного шорти, додати свій власний або скидати на за замовчуванням. Татикет - те, що персонал дивиться, запит є те, чого отримує AI.

Колір і форма

Форма чіпа (подушка, округлий, квадрат), колір чіпів, карткова тема і форма пускової карти (круглий, кальмар, квадратний), з живим попереднім переглядом.

Пам'ять про розбіжку

Помічник запам'ятовує історію кожної людини в браузері, до 120 _відповідомлень, зберігаються у власній базі даних. Очистити його для запуску свіжого.

Налаштування

Налаштування: чат клієнта

Віджет чату ваших клієнтів, а також найбільша площа налаштувань. Шість підзапок, з майстер-ключом і Зберегти прикріплений до вершини вкладки.

Робота через субтабів для того, щоб встановити нову установку: ідентичність та копіювання, Зовнішній вигляд, Поведінка, підтримка потоку, навчання знань. Розширений інфраструктура і може чекати.

Профіль і копія

Фірмовий стиль

Назва віджету, tagline, назва AI, ім'я, використовувана для системних і свічкових повідомлень, і як з'являються назви агентів. Джерело імен Агента вирішує між реальними іменами, користувальницькою назвою або знаком команди.

В-Хаті Грейтінг

Два привітання, один для всіх відвідувачів і один для обраних гостей. Питання починається більше розмов, ніж заявка.

Поповнення вечері

Поплавлення повідомлення перед чатом відкривається, з власним ім'ям, розміром шрифтів і кольором. AI може писати чаї, з контрольами для того, як багато хто генерувати, скільки показати на відвідування і проміжок між ними.

Промпти і ручне

Повний сценарій: запит на ім'я та електронну пошту, підтвердження, запитання людини, не доступні агенти, квиток створений або скасований, ручний загін. Близько двох десятків окремих ліній в панелі згортання.

Статус і повідомлення Idle

Три повідомлення про клієнтів: агент закриває чат, відвідувач пішов спокійно і збудник руки назад до AI. Уникайте внутрішнього словосполучення, як вирішене або тріагедне.

Композер і загострення

Вхідний учасник, етикетка кнопки «Почати» і запропоновані питання відкриття. Три хороші пропозиції відхиляють більше квитків, ніж сторінка статей.

Стартер, Ікона і Аватар

Ікона пусконалагоджувача, додаткова різна ікона при відкритті, розмір запуску та зображення для агента людини і AI.

Земельна

Тема і скло

Тематичний режим, преміум-кольоровий збір, інтенсивність розмиття та непрозорість, плюс окуляри для анімації, роздільних ліній, приховування статусу рядка, прихованення карти повідомлень і приховання кнопки закриття. Почати з заданими; він встановлює десятки кольорів одночасно.

Основні кольори

Запускник, заголовок, панель інструментів, посилання, кнопки, системні повідомлення та композитор, кожен з початковим кольором для градієнтів. Використовуйте варіант скла за замовчуванням ігнорує ці і зберігає прозору обробку.

Панель, бруньки та чіпси

Близько тридцять пікерсів, що охоплюють панель, кордон, текст, поле введення і кожен тип міхура (візор, AI, агент, набравши, система) плюс припуск чіпсів та їх зовнішній стан. Тільки відкрийте цей для точного матчу бренду, перевірте контраст на тексті бульбашок.

Виліт і форма

Ширина панелі і висота, кутовий радіус, розмір шрифту, позиція екрану, форма запуску, стиль бульбашок і чи показ аватарів. Тестування ширини на телефоні.

Поклоніння

Відповіді на AI автоматично

Магістральний перемикач для відповідей AI. Відносно означає, що кожен повідомлення чекає людини.

Людина-догляди та природні подвійні

Ніжний слід, коли відвідувач йде тихим, і необов'язково коротке повідомлення, як людина буде відправлена один. Прив’язується з максимальними послідовними кроками за тишу, спочатку затримка, пізніше мультиплеер, вікно присутності та максимальний вікна послідовності. Може бути обмежений бізнес-годинниками, а пригнічений після простого подяки.

Види і відповіді на те, що ви можете знайти

Якщо відповідей визначаються словом, і як швидко відповідь помічника, за допомогою попереднього набору або мінімальної затримки в мілісекунді. Невелика затримка прочитає більше людей, ніж миттєвий відповідь.

Переклади

Кожен агент читає та пише у своїй мові, а відвідувач дізнається їх.

Повернутися до AI після агента

Протоколи неактивності агента перед AI відновлює розмову.

Автовідкрити чат

По-друге, перш ніж віджет відкриває себе. 0 ніколи не відкриває. Неприємний на мобільних пристроях; залишити 0 якщо випробували.

Смартмер відповідає

Планування перед тим, як одноходових відповідей, глибина мислення, додаткова окрема модель відповіді агентів, що показує причину відвідувачів, перекручування пропусків, довгоперерізної пам'яті, обмеження помічника до вашого бізнесу тільки, ціни в валюті відвідувача і як з'являються посилання. Тільки говорити про ваш бізнес повинен бути практично для всіх.

Економія вартості

Пошук знань про вітання, таких як і ми, і подяка, і захоплює найдовші відповіді в токенах. Вартість послуг без зміни якості відповідь на реальні питання.

Мови

Які мови віджет підтримує і як він забирає один для відвідувачів.

Клієнтський рахунок відповідає

Відповідає за собою власний обліковий запис, додатково переглядаючи живий і необов'язково завантажується тільки при необхідності. Помітно в усіх випадках, навантажувально-необхідний помітно знижує вартість.

Повернення коштів

Підтримувані запити на повернення коштів, де помічник збирає деталі та руки до особи. Він ніколи не завершує повернення коштів самостійно.

Розмова та віджеження

Продовжуйте спілкування з друзями, продовжуючи чат через підключені сайти, перетягніть вікно, попросивши гостей на електронну пошту і відпустіть команду ввімкнути чат у квиток.

Особливості віджету

Emoji Picker, вкладення з додатковим режимом пастки, розуміння AI зображення, вбудовані іконки, мікрофон, кнопка розмови-доходу, звуки відвідувачів, превюди, кнопка голосового запису та ізоляції сеансів. Розуміння образу AI полягає в тому, що дозволяє відвідувачеві записувати скріншот помилки і отримати корисну відповідь.

Адміністратор Inbox, Повідомлення та привітання

Повідомляємо про те, що відвідувачі можуть бути використані для вашого бізнесу.

Підтримка Flow

Чоловічий відбір

Як присвоєно запит на людину, секунд агент повинен відповісти, чи варто розшифровувати повернення чату до AI, і чи відновлюється AI під час закінчення часу. Налаштуйте це перед тим як жити або відвідувача, який просить людини просто чекати.

Робочі години

Час роботи, часовий пояс і закрите повідомлення. З цих годин AI не запропонує людям. Окремий графік від квитків до бізнес-годинників під час OpsIQ Написання.

Відповіді, коли AI вимкнено

Першу відповідь на нове повідомлення, відповідь коли хтось вже загинув і як довго до повторення.

Форма офлайн

Покажіть форму контакту замість чату.

Пошук та управління квитанцією

Усвідомлення про AI квиток, тому відвідувач котирування номеру квитка отримує свій реальний статус, а де відділи АІ можуть маршрут до. Вбудована панель показує реальні одержувачі для кожного відділення, вирішивши таким же чином, що непідсилювач вирішує їх, щоб ви могли бачити перед клієнтом, що це відомство оповідає ніхто.

Центр допомоги в чаті

Давайте відвідувачі переглядати опубліковані статті без залишку чату. Ви обираєте, де з'являється точка входу, ярлик та іконка нижнього бара і чи запропонуйте посилання на повноцінний центр допомоги. Від за замовчуванням.

Рейтинг суперечок

Старий рейтинг запустив, коли агент закриває чат, коли закінчується вказівкою або після неактивності ви встановили. Підберіть один або два тригери, а не всі вони.

Огляд після катету

Коротке опитування, коли відвідувач закриває чат, з вашим питанням, затримки, правила часу і ковпачок на відвідування. Відвідувачі можуть також надсилати або завантажити трафарет. Одне питання отримує відповідь; три не роблять.

Огляд електронної пошти

Переглядайте анкету електронною поштою після закінчення розмови, додатково на мові відвідувача чатується в режимі реального часу з контролем затримки, предметом, вступним словом, як кнопками, так і на сторінці "яскравий".

Відповісти на зворотній зв' язок

Підніміть і підігніть на кожну відповідь AI, подаючи якісні прилади.

Архіви

Автоматично-архівовані після днів, автоматично-розчинаються після хвилин тиші та видаляють архівні розмови через дні. При встановленні третього місця поряд з Генеральним і відстеженням встановлюється третя затримка місця.

Навчання знанням

Що знає помічник. Ніщо інше в чаті Клієнта, що стосується багатьох питань.

Навчання з знань веб-сайтів

Вилучити свій сайт так, що помічник може відповісти від нього. До десяти стартових посилань, обмеження сторінки, глибина посилання і виключені папки. Один URL можна протестувати до повного люка. Виключіть розселення, обліковий запис та шлях адміністратора.

Ведучі

The API ключовий і модель, яка перетворює сторінки в пошуку значення, а не ключові слова матчів.

Організатор AI знань

Один клік і AI читає кожну сторінку, що читає всі запитання та відсортує їх у категорії.

Питання та відповіді

Питання та відповіді пар, які розглядаються як найбільш пріоритетне джерело, кожен з статусом, вагою і категорії. Пошукова, імпортована від JSON, а AI може писати їх з опису вашого бізнесу. Коли асистент отримує щось неправильне, напишіть запит: він викриває розтягнуті сторінки, тому виправлення негайна.

Додатково

Продуктивність та ліміти

Передача посилок, обмеження швидкості повідомлення та вікна, максимальний розмір вкладень, спроби вкладення на вікно і дозволені розширення файлів. Список розширення є контроль безпеки; зберігати його щільно.

Доставка в режимі реального часу

Миттєві повідомлення та доставка статусу замість обпилювання, через подушку, Ably або Firebase, з інтервалом падіння. Покриття відмінно підходить для більшості сайтів.

Пішохідні сповіщення

Пристрої оповіщення для агентів через подушку з беймами або OneSignal, за допомогою засобу.

Веб-Пуш (VAPID)

Браузера виштовхує за допомогою власних генерованих ключів без сторонніх постачальників. Виявлено тут, не в зоні небезпеки.

Голос, Відео та Екран Поділитися

TURN облікові дані, які можуть підключитися через обмеження мережі, використовуючи Cloudflare або Twilio облікові дані чи власні TURN URL, ім'я користувача та облікове дані.

Робочий процес коробки

Параметри робочого простору агента, а не налаштування відвідувачів: перший-відповідь SLA за хвилину, збережені черги переглядів, клавішні швидки та командна палітра, пошук у розбіжному режимі і квитки клієнтів в інспекторі.

Канали обміну повідомленнями

WhatsApp, SMS, Facebook Messenger, Instagram, Телеграма, X прямі повідомлення та ЛІНІЯ, кожен з власних AI автоматичного переключення, плюс перемикач політики для дій AI на каналах, відповідь дебун і шаблон реп-інтенсивації WhatsApp. Кожен канал землі в тій же папці як веб чат.

Віджети від лівої сторінки в нижній частині оновлення вкладок, як ви редагуєте. Використовуйте його замість перевантаження вашого веб-сайту для перевірки зміни.
Налаштування

Налаштування: Шаблони

Повідомляємо, що OpsIQ Відправляється, і один дизайн, який обрамляє їх все. Редагування слів будь-якого повідомлення та написання шаблонів вашого власного для будь-яких OpsIQ не надсилайте.

Один дизайн, багато повідомлень

- Це... глобальний шаблон електронної пошти - обгортка: ваш логотип, заголовок, карта, типографія та нижній колонтитул, з порожнім середнім. Кожне повідомлення OpsIQ Відправляється в цю середню. Редагуйте обгортку один раз і всі зміни електронної пошти разом — чеки магазину, скидання пароля, нагадування про бронювання, листи PeopleOS та будь-які ви пишете себе.

Не існує способу відправки електронної пошти з OpsIQ без цієї обгортки. Наноситься на один пункт, що надходить через повідомлення, тому повідомлення додано пізніше не пропустити його.

Редагування повідомлення

1
Налаштування Open, потім шаблони

Повідомлення про те, що вони є: квиток та портал, Магазин, реєстраційна і облікова безпека, бронювання, розмови та повідомлення, звіти, листи PeopleOS та власні.

2
Натисніть кнопку редагування на одному, який ви хочете

Ви отримуєте тему, багатотекстовий редактор з текстом HTML переглянути ви можете переключати в життя, а також попередній перегляд готової електронної пошти, як одержувач отримує його — включений ваш обгортач.

3
Використовуйте змінні чіпси

На відміну від редактора є фактами, які змінюють номер квитка, посилання на замовлення, час бронювання. Натисніть кнопку "Зберегти", де курсор знаходиться.

4
Зберегти

Тільки що повідомлення написано. Залиште поле порожнім і він зберігає його вбудованим словом; стовп на рядку розповідає вам, які стани в ньому.

💡
Ви не використовуєте, коли відправляється лист, і так це рядок, яку він сидить. Тому бронювання без номера телефону ніколи не надішло "Телефон:" з нічого після нього.

Напишіть свій власний шаблон

Використовуйте це для повідомлення OpsIQ не вже надсилайте: повідомлення про доставку, нагадування про оновлення, вітання пакета, ключ ліцензії. Це отримує все вбудоване повідомлення — редактор, попередній перегляд, правила плану та ваш глобальний дизайн — і ваша система надсилає її через систему API.

1
Натисніть кнопку Додати шаблон

Кнопка сидить у верхній частині сторінки шаблонів і знову біля "Ваші власні шаблони".

2
Ім'я

Назва стає посиланням на вашу систему, яка надсилається, показаний під поле, як ви тип — наприклад x_custom_delivery_booked. Вона не може змінюватися після того, як щось вже буде відправлено його.

3
Скажіть, що це для і коли він відправлений

Ці два лінії, які ви і ваші колеги читати на сторінці шаблонів року з моменту їхнього часу. Вони повинні тридцять секунд.

4
Список деталей, які змінюють

Товарно-роздільний, наприклад: ім'я, при відстеженні_посилання. Кожен стає{{variable}}Ви можете ввімкнути до теми або повідомлення, і ваша система заповнює її у часі відправлення.

5
Напишіть тему та повідомлення

Плагінні вироки є дрібними — лінійні перерви стають абзаци. Напишіть лише на MESSAGE, логотип, заголовок та нижній колонтитул приходять з глобального шаблону.

6
Створіть його, потім відкрийте її

Виявляється під «Вашими власними шаблонами» з повним редактором та переглядом в режимі реального часу, таким же чином, що кожен вбудований повідомлення.

⚠️
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.

Відправка власного шаблону

Два дзвінки на продукт API. Зателефонуючий подає одержувачу і змінні — ніколи не словесливе слово та ніколи не дизайн, тому інтеграція не може надсилати небажані повідомлення через робочий простір, а тихо змінити те, що ви скажете вашим клієнтам.

Список шаблонів і змінних кожного
POST /api/v1.php
Authorization: Bearer YOUR_API_KEY

{ "action": "email.templates.list", "mine": true }
ЗАМОВИТИ
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"
  }
}
💡
Варіабельні імена виходять з брекетів в API Дзвоните до. e-mail.templates.list руки вони назад в точному вигляді, яку ви проходите їх.

Шаблони та план

Повідомлення, що ви не маєте послуги для

Залишки, вказані з посиланням "Подати плани" і не можна редактора - так що ви можете побачити те, що OpsIQ будуть відправлені, а які розблокують його.

Ваше замовлення

Підберіть шаблон, який належить до створення або залишити його на кожному тарифі. Робочий простір без цього сервісу бачить його вказану кількість, але не можна редагувати або надсилати її.

Реєстрація, безпека, сповіщення та перевірка електронної пошти

Не можна зафіксувати повідомлення про списання пароля, а також отримати його невірний вид блокування.

Питання

Чи можна змінити дизайн для одного повідомлення?+

Немає, і навмисно. Дизайн є обгорткою і це поділений, що те, що зберігає кожну електронну пошту впізнавано ваших. Що таке перезразок - слово, панель фактів та будь-які кнопки, які ви додаєте всередині повідомлення.

Що відбувається з моїм словом, якщо я натисную?+

З'являється на глобальному шаблоні тільки, і він замінює те, що в редакторі з вбудованим дизайном. Ніщо написано до тих пір, поки ви не натискаєте кнопку «Зберегти», тому ви можете закрити діалогове вікно для зміни вашого розуму.

Я видали один з моїх шаблонів, помикаючи.+

Видалення натискає на одну з причин — перші руки і каже вам, що буде зупинити роботу. Якщо вона вже пішла, створюйте її знову з такою назвою та однаковою посиланнями назад; тільки слово має бути перероблено.

Чи може бути роз'єм або доповнення, щоб зробити власні шаблони?+

Так. Пакетні кораблі пошти_templates.json у власній каталозі, а її повідомлення з'являються під шаблонами «Дівлопер» з тим же редактором, попереднім переглядом, обгорткою та плановими воротами. Ваші редагування слів належать вашому робочому просторі і виживають оновлення пакету.

Налаштування

Налаштування: OpsIQ Написання

Квитки надійшли до письмового запису: автоматичні відповіді, система внутрішнього квитка, ескаляція, бізнес-годинники, маршрутизація та електронні листи замовника.

Авторемонт

Про нас OpsIQ Написання кнопок

Додайте кнопку помічника письмового запису для ваших агентів в адмінці.

Увімкнути квиток автоматично

Відповіді на нові квитки та відповіді, які відповідають їх після затримки. Почати з нього і переглядати проекти протягом тижня. Повернення коштів, скасування та зміни доступу завжди повинні досягати особи.

Авторемонтні відділення

Якими відділеннями автоматично можуть відповісти на них. Будь-який не зазначений, залишається для людини, яка є безпечною за замовчуванням.

Графік затримки (виключення)

Як довго чекати до автоматичного відповідей. Відповідність прочитає як робот; кілька хвилин читається в якості швидкої команди.

Max AI відповідей на квиток за відділом

Закупівля за кордоном, наприклад Billing 1 та підтримка 3. Без заглушки плутати нитку можна петлі.

Відповісти довжину, статус і ідентичність

Максимальне написання токени, статус квитка після відповіді та після зарахування, а які вводити рахунки автоматично відповідей приписуються. Використовуйте чітко зазначений обліковий запис, щоб персонал міг розповісти про AI відповіді з людини.

Послуги з проведення розрахунків за квиток

Система ратифікації

Система квитків побудована в OpsIQ, для установки без зовнішніх довідок.

Труба вхідна електронна пошта на рідні квитки

Поверніть вхідну електронну пошту в квитки. OpsIQ постачання кінцевої точки URL, auth token, сцена шлях і PHP бінарний. Будь-який, що може розміщуватися в цю кінцеву точку, може створювати квитки, так що зберегти токен секрет.

Багатосторонні відповідей і затримки та відхилення

Якщо AI продовжує відповісти на розмову, і чи очікується тихе вікно, щоб три швидкі повідомлення отримали одне з них відповідь. Вишукане вікно – це найкращий єдиний варіант для створення автоматизованих відповідей, які відчувають себе.

Портал публічної підтримки

Сторінка клієнта, де кожен може піднятися і відстежувати квиток, з додатковою вітальною лінією. Її адреса та вид налаштовується в вкладці «Підтримка».

Формат номеру

Скільки випадкових листів з'являються у створених номерах квитків.

Клієнти електронної пошти в своїй мові

Повідомляємо, що вкажіть інформацію про особу клієнта. Напишіть на електронну пошту, щоб не змінити мову: повідомлення, сповіщення про відділ, брифінги та заплановані звіти, які знаходяться у вашій системі.

Зручності та підтвердження

Якщо квиток відкривається фіксована вигода на нові квитки, а також повідомлення про підтвердження, коли квиток залишається і коли квиток закритий, кожен з живим попереднім переглядом. Також є глобальний обгортковий шаблон та посилання за посиланням.

Симфонічний екран AI

Зареєстровані на екрани з невідомої відправки, а також можуть додатково пересуватися підозрюване спам. Залиште автоматичний відключення до тих пір, поки ви не переглядали його суддя.

Автозакриті свічники

Закриває квиток після кількості тихих днів. Розкажіть клієнту в закриванні повідомлення про те, як відреагувати.

Режим роботи (SLA календар)

Часовий пояс, час відкриття та закриття часу, робочі дні та свята для перших і віддалених та роздільних таймерів. Окремий графік роботи в чаті Клієнта.

Авто-розміщення нових квитків

Автоматичне завдання, додатково тільки агентам, які онлайн, з навичками агента і відповідною чутливістю до тренування навичок.

Найсвіжіші дублікати квитків

Натискання, коли клієнт відкриває квиток поруч з одним, у якому вже є можливість регулювання чутливості до матчу.

Дослідження задовільності після закриття

Повідомляємо про те, що після закриття з’являються результати CSAT _стор.

Повідомити про відділ по електронній пошті

Посилання інформації про те, що в разі надходження нового квитка. Отримувачі є членами цього відділу, не адреса поштової скриньки відділення, яка знаходиться на місці прибуття квитків з адресної адреси.

Що може читати AI

Доступ до даних AI-клієнтів

Майстер-ключ плюс індивідуальні дозволи на чителю клієнту для резюме профілю, рахунків, транзакцій, кредитного балансу, товарів і послуг, доменів, пов'язаних серверів та огляд високого рівня. Почати з профільним підсумком і додати категорії як відповіді потребують їх.

Ескорт та знання

Увімкнути ескалацію квитка AI

Перемістіть квиток на краще вказаний відділ перед відповіддю. Ви обираєте допущені відділення, затримку перевірок і можете написати свої власні інструкції по висуванню. Включивши внутрішню ескалацію, так що ваша команда може бачити, чому квиток переїжджається.

Налаштування знань

Чи варто відповідати мову замовника, чи оформляють вони на посиланнях та запитаннях, чи прочитає зображення AI і PDF вкладення, режим відповіді знання, чи імпортується JSON використовуються знання, і чи можуть з'явитися вихідні посилання. Використовуйте креслені посилання та FAQ повинні бути на місці, або штучний інтелект вгадується.

Стоп авто-реплі після відповіді на людину

Після того, як персонал відповів, AI не відповідає такому квитку. Не пропустіть своє рішення для обговорення вашого агента.

Інструкція по розміщенню квитків та листуванню

Встановити точне тонування та вміст для кожного відповіді, з прикладом роботи навантажувального. Визначте, що AI ніколи не має відношення до нього.

Імпорт JSON знання

Завантажити або вставити JSON знання файлу для письмового помічника.

Button Studios, Контакт-студія

Повний дизайнер для кнопки клієнт-фасовки: стиль відображення, розмір, етикетка, ікона, форма, мінімальна ширина, фоновий стиль з первинними та вторинними кольорами, градієнтний кут, кордон, кутовий радіус, тінь, типографія, насипна анімація, приховування руху і колірні елементи, а фокус кільце, плюс користувацький CSS ящик для будь-якого керування не криється.

Налаштування

Налаштування: Портал підтримки

Сайт, де люди піднімаються і читають ваші статті. Ця вкладка контролює те, як вона досягається і як підписуються клієнти; його візуальний дизайн здійснюється в розділі «Підтримка».

Портал - Web-сайт

Це дві різні продукти і люди постійно змішують їх. Вони вирішують різні проблеми, і працюють як разом нормально.

Веб-сайт: www. djs. com

Студія дизайну Повний сайт підтримки, який OpsIQ hosts для вас. Володіє своєю веб-адресою, або власним доменом, і несе весь досвід роботи самообслуговування: допомогти статті з пошуком, формою запиту, історії квитків, підпискою клієнтів та помічником. Підберіть шаблон, роботу по темі, навігації, розкладання, знання, нижній колонтитул, бренд, квитки, асистент, форму та форма CSS, попередній перегляд на робочому столі, планшеті та розмірах телефону, потім публікуємо.

Використовуйте його, коли Ви хочете, щоб один брендований напрямок ви можете вказати кожного клієнта на сайті, і ви не будете будувати або підтримувати зону підтримки всередині вашого веб-сайту.

Вбудований портал квитків: квитки в межах власного сайту

Посольство кладок Тільки досвід роботи на сайті. Замовники відкриті, відстежують та відповідають на підтримку запитів без будь-яких вихідних даних, а також власних заголовків, навігації і дизайну залишаються точно так само, як вони є. Встановити макет, зовнішній вигляд та правила доступу в конструкторі віджетів, попередньо переглядайте результат, потім скопіюйте зібраний фрагмент на вашу сторінку.

Використовуйте його, коли Ви вже маєте веб-сайт або додаток з власним дизайном, і ви хочете допомогти вам стати всередині нього, а не ручивши клієнту на іншу адресу.

Коротка версія

Будівельні роботи місце, на якому ви надішали клієнтів. Посольство приносить квитки до того, де клієнти вже єБагато компаній працюють як, вбудовуючи віджет квитків у зоні свого облікового запису для запитів на контексти, зберігаючи при цьому розміщений портал як повноцінне призначення самообслуговування з статтями та пошуком. Вони незалежні перемикачі.

Адреса та доступ

Режим доступу

Якщо портал відкритий для всіх або обмежений для клієнтів, які підписалися на адресу.

Вибір макетів

Чи поділиться на портал і допомагає центр, який знаходиться на двох рівнях, які навігують та ножиці.

Адреса порталу

Використання адресних клієнтів. Оберіть ім'я та OpsIQ Ви вже відправили посилання на сайт.

Ваш домен

Подається за порталом з домену, який ви володієте, наприклад support. yourdomain. com.

Портал - com. ua

Переключення на випадаючому віджеті описано вище, і відкриває рельєфний конструктор, де ви обираєте макет, зовнішній вигляд та правила доступу, переглядайте результат і скопіюйте хіппет для вашої сторінки. Це не Портал студії: Studio розробляє розміщений портал, це кладе квитки всередині власного сайту. Обидва можуть бути одночасно.

Як підписувати клієнтів

Ці параметри підписки ваших клієнтів. Реєстрація персоналу налаштовується під налаштуваннями, безпекою.

Методи сигналізації

Які параметри з'являються на сторінці входу. Роз’єм та запис електронної пошти автоматично працюють.

Соціальний реєстр

Consumer account providers, each needing a client ID and secret, with the redirect address supplied by OpsIQ to register with that provider.

Одиночний знак (OIDC)

Клієнт, зареєстрований в сервісному провайдері, з емітентом URL_, ідентифікатор клієнта, секрет та додаткове допускається список доменів електронної пошти.

Клієнтам SAML 2.0

Про нас SAML еквівалент. OpsIQ Відповідає ACS відповідь URL та ідентифікатор суб’єкта господарювання; ви подаєте ідентифікатор IdP, реєстрацію та підписку URLs, Х.509 Сертифікат і додаткові імена атрибутів. Ввімкніть SAML на методах Sign-in або не з'явиться.

Безшовний знак з вашого додатка

A signed deep link so a customer already signed in to your application lands in the portal without signing in again. OpsIQ supplies the signing secret, portal URL and workspace key, a complete route for your language (PHP, Laravel, WordPress, WHMCS, Node.js, Flask, Django, .NET, Rails, Java, Go, and on self-hosted installs the OpsIQ server itself), step-by-step setup notes, and a generator for a signed test link. Use the generator before writing any code.

How the route works

Your customer clicks a Support link that points at the route. The route finds the customer signed in to your app (a guest is sent to your login and back), reads the secret from your server, signs a one-time token that expires in two minutes, and redirects to the portal with no-referrer and no-store headers so the token is not cached or leaked.

The portal's own Sign in button

In Portal Studio, Sign-in page, turn on Use my website's login and set Your login page URL to the same route. The portal adds opsiq_portal_return (the page the customer was on); the route honours it only when it is inside your portal address and brings the customer back there, signed in.

WHMCS_

Nothing to write: the WHMCS hook from Remote Sites already signs clients into the portal and handles the return address. Set Your login page URL to your WHMCS client area login.

Зібрано

Підписавшись на портал також вивісимо клієнту з вашого додатка.

Забір та захист

Поле форми запиту

Яка структура поля форму запиту збирає. Кожне додаткове поле втратиє подання, тому запитайте лише для того, що потрібно пройти процедуру.

Захист від спаму та зловживання

Для захисту публічної форми ми можемо заблокувати одноразові адреси електронної пошти, додати власні заблоковані домени і додати CAPTCHA за допомогою Google ReCAPTCH або Cloudflare Turnstile. reCAPTCHA повторно використовує ключі, які вже встановлюються під налаштуваннями, безпекою; ключі відключені тут.

Портал - Web-сайт

Прочитано-тільки резюме порталної активності за останні тридцять днів.

Налаштування

Налаштування: Збої, лука, зона Крон і Небезпека

Система, а також контроль доступу команди, які вирішуються, хто може бачити вкладку Параметри.

Доступ до команди та дозволи

Дозвіл на в'їзд

Кожен адміністратор отримує явний набір дозволів, які охоплюють доступ до чату, який Налаштування розділів вони можуть редагувати та їх відділення. Будь-який з ролі Повного адміністратора завжди має дозвіл на кожен дозвіл. Настроювання дозволу, які вкладають людину бачить, тому надати найвпливовіших комплект, що дозволяє їм працювати.

ЛІКУ

Ви можете переглянути інформацію про те, що він відповідає вашим статусам.

Крон Настроювання

Самостійні установки тільки. На OpsIQ хмара запланованих завдань, які працюють для вас і вкладки приховано. Одна лінія крокнавових приводів кожного запланованого завдання: квиток автоматично-попередньо, маршрутизація ескалації, обмінне оновлення, розпилювання поштових скриньок та синхронізація роз'єму.

1
Копіювати рядок

Вкладка показує точний ряд кроктаб для вашого сервера з правильним бінарним PHP вже вибрано.

2
Додати його до crontab

Запустіть crontab -e як користувач, який працює PHP і вставте єдиний рядок. cPanel використовувати інструмент Cron Jobs замість того, щоб зробити роботу з кероном.

3
Видання

У хвилину лялька серцебиття світла вгору. Використовуйте бігу зараз, щоб перевірити відразу, а не чекаючи.

Плінтус показує останній запуск, тривалість і що було оброблено як для автоматичного перезавантаження черг та опитування роз'єму електронної пошти. Він попереджає, коли останній хід прийшов з ручного веб-нопок, а не реального сервера cron, і коли серцебиття пішов застосунком.

зона небезпеки

Видалити всі дані відстеження

Виногради все OpsIQ Зібрано або генерується. Ви віддаєте, що включати і ввести слово підтвердження точно. Налаштування та налаштування сайту, заблоковані адреси, всі ваші команди були написані (безкоштовна основа, запитання, переклади, дизайни порталу, визначення дій) і отримання згоди зберігаються.

Purge Data Старший Than

Те ж ковтати, що обмежуються записів старше 30, 60, 90 або 180 днів, або рік. Для автоматичного затримки прокатів використовуйте значення збереження в загальній та відстежці замість того, щоб і дати заплановане завдання зробити це.

🚫
Експортувати резервну копію з налаштувань, загальний перед використанням будь-якого місця в зоні небезпеки. Ці дії не можуть бути безсонніми.
Налаштування

Управління командою

Запрошення членів команди та присвоєння ролі, які можуть отримати доступ до цього.

Команда
Команди та підрозділиКомандний екран: таблиця адміністраторів з контактним зв'язком, значок ролі (Owner, Full Admin, Agent) і відділеннями, які можуть отримати доступ.Команди та підрозділиробоча зонаКоманди та підрозділи+ Заощаджувати користувачів адміністратораКонтактРОСЛИНДИЗАЙНАО[email protected]_Ада ОвусуПРАВИЛАВсіКМ[email protected]_Кожу МенсаПовне адмініструванняВсіРТ[email protected]_Rita Tetteh (Тетх)АкумуляторРозсилкаСБ[email protected]_АкумуляторПідтримка1TEAMЗапрошення та управління адміністраторами2ROLESВласник · Повне адміністрування · Агент3SCOPEDДоступ до перевідки
Реальний екран команди: кожен адміністратор з контактом, роллю та відділеннями, які вони можуть досягати, агенти, що об'єднані, власники повністю.

Роликові

ПРАВИЛА

Повний доступ, включаючи ліцензію, вексельну зону та зону небезпеки. Один за монтаж.

Повне адміністрування

Повний доступ, крім ліцензійної та небезпечної зони. Може керувати адміністраторами.

Акумулятор

Обмежено до призначених відділів. Квитки, чати та аналітика тільки.

Запрошення членів команди

1
Перейти до команди

Навігайтеся на команду в бічній панелі.

2
Натисніть запрошення

Введіть електронну пошту учасника команди.

3
Встановити роль

Оберіть власника, Повне адміністрування або агента.

4
Відділення АКЗ

Для агентів виберіть доступні відділення.

5
Замовити

Ми отримуємо електронну пошту з посиланням на налаштування.

Налаштування

Командна робота

Як працює ваша команда підтримки. Доступ є дозволом, не за роллю: дозвіл перегляду відкриває сторінку, управління дозволу розблокує цілі, QA і колега-ідентифікацію читання, а також дозвіл на винагороду - це те, що додає вкладці «Відновлення». Команда може бути передана будь-яким з цих без створення повного адміністратора.

Командна робота
Командна роботаЕкран продуктивності команди: агенти, що посідають композитний балок, CSAT і баланс винагороди з кнопкою Pay на ряд.Командна роботаробоча зонаКомандна роботаАГЕНТПАРАCSAT_БРОНАНГРТRita Tetteh (Тетх)4.8$42ПлатитиСБСам Човен4.5$28ПлатитиКМКожу Менса4.2$15ПлатитиАОАда Овусу4.9$51Платити1SCOREDПродуктивність компонувальника2CSAT & LOADРейтинги + об'єм3REWARDSСальдика агента
Реальний екран продуктивності команди: кожен агент забив на об'ємі та CSAT, з балансом винагороди ви можете оплачувати за ряд.

Як проводиться робота сайту

Команда Продуктивність - це п'ять вкладок. Кожен відповідей на інше питання, і вони замовляється як терміново, що вам потрібно.

01 Центр команд

Стан черги, результат клієнтів проти ваших цілей, як було витрачено потужність, ситуації, необхідні для рішення, і докази, що нараховуються в залежності від показника.

02 Командати

Лідер, визнання (найбільш поліпшені і словесні), квести та контроль опції для тих хто може бачити рейтинг.

03 Якість

Згідно з даними, ви можете ознайомитися на сайті, щоб отримати інформацію про файли cookie.

04 Переадресації

Значення токени, виплата претензій і контрольний період розміщення: авторизація за рахунок коштів стелі, перегляд попереднього перегляду, остаточне виконання.

05 Історія

Як перенесли робочий простір за часом: трендові метрики з графіком, а 28-денна опалювальна карта, яка показує, коли команда була насправді працювати. Кожна картка приховує себе до тих пір, поки не вистачає історії, щоб її намалювати.

Непристойна не нуль

Командувати без достатнього обсягу обробки — або розміри яких, що виконують докази, додають менше половини настроченої ваги — показано як несправедливе. Їх рахунок, ранок і смуга пусті та їх розбиття приховано. Це свідомо: надання відсутній виміру як нульовий кладає когось в нижній частині рейтингу для тихого тижня. Порівні подби налаштовані за робоче місце в Цільовах & забивання.

Два докази пороги роблять різні вакансії, і варто їх утримувати окремо. Мінімальне ручне рішення вирішує, чи забивається хтось на всіх. Мінімальні рейтинги не впливають на рахунок: він приймає нагороду та винагороду відповідальності. Так однозначно може бути повністю забитий і рано і все ще буде недоторканним для цього періоду, тому що занадто мало клієнтів оцінюють їх.

💡
Кожен малюнок об'єднує в робочому просторі, який ви переглядаєте і діапазону часу. У кожного окремого робочого простору є незалежний запис у кожному. Два винятки, які варто знати: сайт ГРУП є одним робочим простором, тому його домени вимірюються разом; і всі сайти розглядаються навмисно заходами все відразу.

Індекс продуктивності

Композиція з п'яти розмірів, кожен вимірюється проти цілі, яку ви встановлюєте, а не проти колег, потім витягується в напрямку до середини, коли докази за ним тонкі. Зверніть увагу на напрямок: регулювання рухається фігуру у бік 70_, тому тонкий відмінний бал стягуються і худенький поганий рахунок підтягається вгору. Поганий перший тиждень на чотирьох розмовах не є опрацьованим вироком або. Як свідчення накопичує корективні риски на сирому.

Якість

Задоволення клієнтів від перевірених відгуків. Доповнення результатів QA-карти, де вони існують і регулюються.

Відповідальність

Перші часи реагування на P50 і P90 відсотків, проти ваших цілей.

Редакція

Час і один підсумковий розрахунок.

SLA_

Вставляння SLA Ви налаштовані, плюс в-диску і порушення кількості.

Стюардеса

Відкриваємо і перераховуємо тарифи — робота, яка повертається.

💡
Вага не конфігуруються і відносні; вони не повинні бути загальним 100. Пропускні докази можуть лише знизити індекс, ніколи не підняти його - повне налаштовувані вага залишається в деномінаторі.

Місткість і продуктивний час

Закупівля, продуктивний час, вирішена за продуктивну годину і онлайн-часткою вікна. Утилізація навмисно не повідомляє: вона потребує запланованих годин як деномінатор, OpsIQ не має ростер або джерела змін, а замінний деноніматор буде здогадувати носіння процентного знака. Прочитає в якості недоступного з цією причиною, прикріпленою.

⚠️
Повідомляючи тільки. Окупчення говорить, як час був проведений, ніколи не було витрачено, і це ніколи не кошти, ворота або розміри платежу. Узгоджувати без ручних доказів прочитав як нульки, ні як нуль.

Гарантія якості

А рахунок-карта – це рубрикові рецензенти зафіксують реальні розмови проти. Тільки опублікована версія може отримати оцінку, а також публікувати нову версію ніколи не повторює те, що вже було забито. Огляд свідчить про одну бесіду, а не вирок на людину.

Договір рецензента

Повідомляється як статистичний аналіз (копія та каппа) не сирого договору. Два рецензенти, які пропускають все згодні 100% час при носінні інформації немає.

Оглядовий дрифт

Чи потрібен рецензент, який систематично заважає або пом'якшує своїх колег на одній розмові — порівняння з іншими панелями, не трендом в часі. Він потребує взаємодії, яка переглядається незалежно від одного разу.

Юридичні послуги

У разі необхідності, якщо це було прийнято рішення про те, що компанія може формально свідчити про них. Відкриті суперечки блокує винагороду за виконання до моменту її вирішення.

Самовідгуки

Відмовлено. У команді не можна подати оцінку себе.

⚠️
АІ-градовані оцінки не можуть впливати на оплату до моменту отримання калібрування опубліковано, що модель погоджується з рецензентами людини досить часто, вимірюється kappa проти мінімального зразка. Відкриті ворота – це модель, яка погоджується із людьми, достатньо для підрахунку — це ніколи не означає, що моделі правильно.

Визнання

Поспішаючи, що один з них є документальними режимами невдач: метрична гра, вигорання та громадське погодження. Три альтернативи, які сідають разом із ним.

Найвища

Заходив проти однодумців, не проти колег, з усадкою так крихітний деномінатор не може придбати виграш.

Скрипки

Згідно з умовами, що стосуються основних, заявлених барів — середнього рейтингу, обробляється обсягом, підрахунками рейтингів та негативно-розвантажувального показника, всі абсолютні цифри. Кожен може одночасно тримати стейк, тому він створює не рейтинг, а колегу має винятковий місяць неможливо зламати вашу мову.

Опт-в рейтингу

Від за замовчуванням. Команди завжди бачить свій індекс, чи бачать колеги – це рішення робочого простору. Звісні смуги можуть публікуватися замість абсолютного положення.

💡
Визнання ніколи не торкається грошей. Стейк не може зараховувати виплату або розірвати один, а найдосконаліше – це не категорія винагороди.

Квести

Мета команди працює назустріч, вимірюється проти фіксованого заявленого бруса, а не проти одного — так кожен може очистити той самий квест в той же період.

Сфера і каденція

Індивідуальна або команда; одностороння, повторювана або сезонна з явним вікном.

Критерія

Умовами, які отримали рейтинги, отримані в активному режимі, середні рейтинги або негативний рівень зворотнього зв'язку. Все абсолютне — від того, що колеги робилися неметричні значення, значення яких залежить.

Якість

Необхідно на будь-якому квесті з об'ємною метою. Вдаривши кількість при цьому якість падає нижче підлоги, а не завершуючи його, і вона показана як звідси, не незакінченна.

Обмеження повторення

Запірний кришк, керований повільним критерієм, плюс додатковий охолоджувач перед повтором може розраховувати.

Командні квести

У зв'язку з тим, що не існує жодного аутсолюту, тому команда не може стати лідером.

Тренінги

Тренінг-сесія є записом, не чатом. Він має тренера, який займався командуванням, запланований час, узгоджені точки розмови та резюме письмово після закінчення. Реальні чати, квитки та оцінка QA шпильуються до нього як докази, тому розмова закріплюється працювати, що насправді сталося, а не запам'ятовується враження.

Розмова точок

Привітний перед сеансом, тому не проходячись в сюрприз.

Свідчення про шліфування

Чати, квитки та оцінювання КА додаються до сеансу. Пиріг зберігає посилання — тип і ідентифікатор — це не копія, тому завжди вказує на запис в реальному часі. OpsIQ не перевірить id перед прийняттям його.

Дію елементів

Кожен з власником та датою за рахунок. Цей пункт прописується як перевихід — отриманий стан, не має статусу, який запам’ятовується для встановлення.

Приватна замітка

У випадку, якщо пасажир не міг його читати – це не як агент, а не менеджера, а й власнику.

Хто може бачити сеанс

Тренер, командний та будь-який з дозволом на виконання команди. Нікому іншому, включаючи інші однокоманданти в одному відділі.

Аудит

Кожен створюв, оновлення, шпилька, непін і завершення записується з яким змінено, від якого.

💡
Тренінг навмисно відокремлений від забивання і від грошей. Сесія не змінює індексу будь-якого, не залишає за собою винагороду, а не з'являється на керма.

Нагороди та нагороди

Записаний актив перетворюється в токени з грошовою вартістю, яку ви встановлюєте. Шлях до оплати навмисно сповільнюється і кожен крок записується.

1
Встановити значення токена

Скільки токени дорівнює скільки грошей, і якісна діяльність.

2
Авторський стебло

Для закритого календарного періоду, повністю адміністратори скасовують максимальні токени, які можуть платити. Збереження форми налаштувань не передбачається використання бюджету, і це не може змінити стелю, яка вже була авторизація.

3
Огляд попереднього перегляду

Отримувачі, резерви та причина, які хтось є нематеріальним. Відкриваємо доказові спори заблокувати цей крок.

4
Закінчення

Відправлення записано в остаточному режимі з доказами за ним. Період, який виділяється нічого не може бути порожненим і повторним вихідним. Один, який видав токени повинні бути відредаговані першим: OpsIQ пише компенсаційний запис проти кожного гаманця і ніколи не видаляє оригінальний, тому провідник все ще показує що сталося і чому, тільки тоді є періодом, випущений. Реверсал відмовив, якщо хтось вже прокинув більше суми, ніж кількість відновлених, і імен, які і як багато.

⚠️
Обов'язкова вимога до перевірки зворотного зв'язку клієнтів. Оцінка якості AI може бути доповнено, але ніколи не замінити його, і комірат, який показується як Нескорений, не має права. Кожен учасник захоплюється 25% над очікуваною частки періоду, тому один дуже високий місяць не може поглинати весь бюджет.
💡
Власник рахунку не бере участі в нагородах або токени винагород, без перемикача: вони застосують забиту стелю і завершують кожну відкладку, а над ними ніхто не затвердить те, що вони будуть платити себе. Їх робота вимірюється, забивається і оцінюють на дошці так само як будь-який інший.

Усі інші беруть участь у замовленні, команди веде і співвласники, які включені. Щоб залишити когось з них, відкрийте їх в командних та відділах і відключіть участь у нагородах і винагороді варіанту. Їхня робота все ще набрала і показала; вони зупиняються кандидатом з цієї точки, і нічого вже остаточно доторкнулися.

⚠️
Німець затверджує гроші на себе. Тому що люди, які можуть взяти участь, також люди, хто може схвалити виплату,OpsIQ відмовляється від виплати або кредиту у власний гаманець, сплачуючи свою власну вимогу, заключивши період, в якому ви будете платити, і завершуючи нагороду, яку ви б виграти. Інший повноправний адміністратор або власник повинен зробити це. Сплатіть всі претензії пропустити самостійно і повідомляють його як пропущені, не вдалося.

Хто може бачити і зробити те, що

Перегляд командної роботи

Дошка, живий стан, місткість та якісний огляд для робочого простору.

Управління виконанням команди

Цільові цілі та забивання, експорт, QA-картки та оцінки, тренерство, квести та читання, які здійснюють колегіа-ідентифікацію даних, таких як історія та присудження.

Перегляд винагороди команди фінанси

Баланси, грошові цінності, застереження та платіжні посилання — відокремлюються від доказів виконання, оскільки це платно-прилягає.

Повне адміністратора тільки

Кожна грошова мутація: виплати винагороди, оплати або відхилення позову, затвердження бюджету, подання, порожнечі або переозброєння на виділення, а також встановлення токен-то-кашівської ставки. Вони не можуть бути делеговані шляхом надання дозволу.

Використання його досить

Індекс продуктивності є управлінськими доказами, не автоматичним рішенням для зайнятості. Відкрийте вихідні розмови за номером до його виконання і важить складності справи, графіки, залишки та потреби доступності. Один складний тиждень виглядає нічого подібного до стійкий шаблон.

Налаштування

Сайти (робочі місця)

Сайти (робочі місця) дозволяють керувати декількома веб-сайтами з одного OpsIQ _. Кожен має власний трек, AI, роз'єми та доступ до команди.

Сайти
Ваш сайтЕкран сайтів: список робочих просторів, кожен з його доменом, типом, роз'ємом, значками стану та відкритою кнопкою, плюс Додати новий сайт.Ваш сайтробоча зонаВаш сайт+ Додати новий сайтSshop.acme.comВеб-камера · Shopify роз'ємАктивнийВідкритоHhost.acme.comЗакупи хостинг WHMCS роз'ємАктивнийВідкритоBblog.acme.comЗміст · не роз'ємКомплектиВідкрито1MULTI-SITEОдин робочий простір на сайті2ISOLATEDДані ніколи не змішуються3PER-SITEВласні налаштування та роз'єми
В розділі «Пошуки» можна знайти на сайті: кожен сайт – це власний ізольований робочий простір (внутрішній домен, роз'єм і налаштування), додано та відкрилося з одного списку.

Створення сайту

1
Перейти до вмісту

Навігатор для підключених сайтів.

2
Додати новий сайт

Ім'я, домен і опис.

3
Скопіювати ключ сайту

Кожен сайт отримує унікальний ключ (site_xxx) для віджету snippet.

4
Налаштуйте самостійно

Кожен сайт має свої власні AI, роз'єми та налаштування.

Скільки сайтів можна мати?+

Залежно від тарифного плану. Перевірити дані про ліцензію.

Налаштування

Ліцензія та план

Ваш OpsIQ Ліцензійні функції, ліміти сайту та кредитний баланс AI.

ЛІТЕРА
Центр ліцензуванняThe OpsIQ Ліцензійний центр: план, значок активного стану, ключ ліцензії на маску, лічильник AI-кредиту та кнопка "Примус-реот-чек".Центр ліцензуванняробоча зонаOpsIQ Ліцензійний центрПлануванняБізнесСтанАктивнийКлючOPSIQ-••••-••••-2F9CКредитування AI$68 лівийПримус дистанційний контроль1PLAN & STATUSАктивний, на погляд2KEYHMAC-розміщений локально3CREDITSАІ баланс та ліміти
У реальному часі Ліцензійний центр: ваш план та активний статус, замаскований ключ, баланс AI-кредиту та одноклітний сил перевстановити.
Ліцензійний ключ

Введіть в налаштуваннях > Ліцензія. Виконується проти OpsIQ сервер ліцензії.

Ліцензійне серцебиття / перевірка

OpsIQ зазвичай читає свій підписаний локальний кеш-пам'ят і освіжає валідацію при необхідності. Використовуйте дистанційну перевірку Force, коли вам потрібен безпосередній результат; Діагностика визначає DNS, HTTPS або серверно-часові проблеми.

Планування

Визначення наявності та лімітів.

Обмеження сайту

Максимальне число робочих просторів.

Кредитування AI

Якщо використовувати Managed AI, ваш кредитний баланс тут.

Термін придатності

Поновити до закінчення терміну дії, щоб уникнути переривання служби.

Що відбувається, коли мій закон закінчується?+

Відстеження, квитки та CRM продовжуються. AI має призупинено до відновлення. Дані зберігаються.

Налаштування

Профіль, пароля та двофакторна автентитація

Кожен адміністратор може підтримувати свою ідентичність, робочі налаштування, пароль та двофакторну автентифікацію.

Екран продукту
Мій профільСторінка профілю відокремлює персональні дані, мову/timezone, аватар/знак, пароль та двофакторну автентифікацію.Мій профільробоча зонаПРОФІЛЕЗавершитиTIMEZONEЄвропа / Афіни2FAУвімкнутиОГЛЯД РОБОТИІм'я та електронна поштаОсобистий кабінетРедагуванняМова та часозонДата та інтерфейсРедагуванняАватар і підписВідповідей та присутність командиРедагуванняПароль і 2FAЗахист облікових записівЗахищений1UPDATE PROFILEІдентифікатор та локальне2SECURE LOGINПароль і 2FA3SAVEЗастосувати в цей адміністратор
Сторінка профілю відокремлює персональні дані, мову/timezone, аватар/знак, пароль та двофакторну автентифікацію.

Налаштування профілю належать адміністратору, що підписується на сервер і не змінює брендування робочого простору. Використовуйте унікальний пароль та ввімкніть двофакторну автентифікацію. Зміна електронної пошти або налаштування автентації може вимагати повторного перев'язання або свіжого входу.

Налаштування

Переваги сповіщення

Контроль налаштувань, що здійснюється на основі яких операційних заходів, які можуть бути передані адміністратору в продукт або електронною поштою.

Екран продукту
Переваги сповіщенняСторінка сповіщення надає можливість отримувати повідомлення про використання електронної пошти та отримання повідомлень.Переваги сповіщенняробоча зонаIN-APPВвімкненоЕМАЛІВибраніUNREAD4ОГЛЯД РОБОТИКвиток, призначених дляЕлектронна поштаВвімкненоКлієнт відповівВ-замовленняВвімкненоSLA ризикуЕлектронна поштаВвімкненоЗатвердження AIЕлектронна поштаВвімкнено1CHOOSE EVENTSТільки корисні сигнали2CHOOSE CHANNELПоповнення або електронна пошта3ОГЛЯДОстанні повідомлення
Сторінка сповіщення надає можливість отримувати повідомлення про використання електронної пошти та отримання повідомлень.

Налаштування присвоєння квитка, відповіді клієнтів, попередження SLA, події здачі в чат і AI. Тримайте термінові оперативні сигнали, що включені десь; вимкнете електронну пошту не обов'язково відключіть повідомлення електронної пошти.

Налаштування

Огляд безпеки

Огляд безпеки - це перший екран для оцінки блоків, атак на логін, загроз, трендів безпеки та цілісності подій.

Екран продукту
Огляд безпекиОгляд безпеки поєднує поточні картки ризику, а 14-денна тенденція, список атак, статус подій та цілісність.Огляд безпекиробоча зонаACTIVE BLOCKS18FAILED LOGINS42HIGH THREAT3ОГЛЯД РОБОТИАвтоблокування7-День всього і джерелоТорговий центрОстанні атакуючіIP, країна та причинаРедагуванняПодії безпекиРизик і результат діїКормГідна цілісністьМережа заходів та послугДійсно1READ HEADLINEПоточний вплив2OPEN EVIDENCEАтакуючі та події3АКЦІЇБлок, дослідження, експорт
Огляд безпеки поєднує поточні картки ризику, а 14-денна тенденція, список атак, статус подій та цілісність.

Використовуйте заголовкові картки для трієта, після чого відкрийте пов'язаний Аудит, ввімкнені Логіни, блокуються IPs або JavaScript Помилка сторінки для роботи з реєстрами. 14-денна тенденція є більш корисною, ніж один прохід. Висотні сеанси слід розслідувати проти відвідувача, запиту та автентифікації до постійного блоку наноситься.

Налаштування

Тапер-вихідний журнал аудиту

Аудит журналу обліку, які зробили те, що при цьому об'єкт, на якому рівні ризику і чи вдалося досягнути.

Екран продукту
Аудит діяльностіНа сторінці аудиту передбачено пошукову діяльність з дією, актором, ризиком, цільовою та результатом.Аудит діяльностіробоча зонаОРЕНДА18.2kHIGH RISK21INTEGRITYДійсноОГЛЯД РОБОТИВвімкнути[email protected] · ShopifyПослідовністьAPI ключ відкликання[email protected] · ключ 19ПослідовністьЗмінено налаштування[email protected] · АІПослідовністьЗменшення[email protected] · експортЗаблоковано1FILTERДія, ризик і актор2КОМПЛЕКСМета та результат3EXPORTCSV або JSON
На сторінці аудиту передбачено пошукову діяльність з дією, актором, ризиком, цільовою та результатом.

Фільтр за дії, ризик і актор; експорт CSV або JSON для розслідування. Мережа хешів дозволяє виявити відсутні або змінені ряди перевірок, але це не замінює захищені резервні копії та обмежений доступ до бази даних. Облік аудиту експортується як чутлива, тому що вони можуть ідентифікувати користувачів, записи та дії безпеки.

Операції

Діагностика

Діагностика перетворюється на підсистему, перевіряється на результати здоров’я та прямі дії.

Екран продукту
ДіагностикаДіагностика груп медичних перевірок для віджету, AI, квитків, інтеграції, Site Intelligence, фонові завдання, CRM-система, ліцензування та зберігання.Діагностикаробоча зонаЗДОРОВ'Я13WARNING2БРАЙД1ОГЛЯД РОБОТИВіджетиBeacon і чат кінцеві точкиЗдоров'яЗавдання на фоніХрон серцебиття пізноПомилкиЕлектронний листВибраний тест не вдалосяЗмішаніКонекториРеєстр та зарахування подійЗдоров'я1REFRESHЗапуск поточних перевірок2OPEN WARNINGЧитати докази3FIX AND RETESTПідтвердження відновлення
Діагностика груп медичних перевірок для віджету, AI, квитків, інтеграції, Site Intelligence, фонові завдання, CRM-система, ліцензування та зберігання.

Сторінка перевіряє швидкість Сайту, ряд/ключа/відкл./місні дані, AI та шлюз дії, квитки, ріжучий/audits, інтеграція/вихідний прийом, фонові завдання, CRM-системи автоматизації, ліцензія, віджет і пов'язані послуги продуктів. Успішно повідомляє операторські результати оператора, а не розширюючи сирі секрети.

Після зміни, переосмислення та підтвердження впливу підсистеми повертає здоровий. Презентація зеленої діагностики необхідна, але не достатня для запуску; завершення контрольно-вимірювального списку і подальших перевірок.

Налаштування

Безпека та доступ

OpsIQ містить декілька шарів безпеки для захисту вашого адміністратора, даних та API доступ.

Як працює
Безпека та доступКонтроль за безпекою: двофактор, OIDC SSO, SCIM 2.0, OAuth2 PKCE, CSRF/CSP, IP брандмауер, ліміти швидкості та секрети схованки.Двофактор (TOTP)OIDC SSOSCIM 2.0OAuth2 PKCEКСФР + ЦСПIP брандмауерОбмеження ставокСекрети схованки
Безпека

Особливості безпеки

Адмінантизація

Email/password з додатковою 2FA.

Вхідний блок

Тимчасовий замок після занадто багато невдалих спроб.

IP блокування

Блоки IPs або діапазони CIDR від доступу до трекових сайтів.

Забивка

Заборонено забиті рахунки загрози. Висотні відвідувачі можуть бути автоматично розблоковані.

HTTPS-контролю

Необхідно для всіх підключень. HTTP перенаправлення на HTTPS.

ХСТС головки

Стрижка-Транспорт-Секретність перешкоджає попаданню атак.

Захист CSRF

Всі форми адміністратора включають в себе CSRF токени.

Захист від КС

Усі вхід користувача втекти. CSP заголовки обмежити виконання скриптів.

Захист SSRF

Зняття вебхокс блок приватного / внутрішнього IP адреса.

Рекомендовані налаштування

1
Увімкнути 2FA

Для всіх облікових записів адміністратора.

2
Сильні паролі

Мінімальний розмір 12 символи, змішані.

3
Перегляд рахунків

Вилучити доступ до членів команди.

4
Моніторинг не вдалося увійти

Перевірте щотижневик для підозрілих візерунків.

5
Встановіть оновлений

Застосувати оновлення швидко на патчі безпеки.

Налаштування

Роль та дозволи

Контроль доступу до даних дозволяє контролювати, що може бути кожен учасник команди.

Роль та дозволи
Роль та дозволиМатриця для інвалідності: Власник має все; Повне адміністрування не вистачає вексельної та небезпечної зони; Агент має лише об'ємні квитки.Роль та дозволиробоча зонаОПТИБУДИНКИДАГЕРТИКЕТИПРАВИЛАПовне адмініструванняАкумуляторscoped13 ROLESВласник · Повне адміністрування · Агент2GRANULARПер-сторінка + за розкладом3DEFAULT-DENYЗабуті маршрути заблоковано
Роль матриці на погляд: Власник отримує все, повне адміністрування все, але вексельна і небезпечна зона, агент тільки їх об'ємні квитки.

Рольи за замовчуванням

ПРАВИЛА

Усе, включаючи ліцензію, зону небезпеки та управління інсталяцією.

Повне адміністрування

Все, крім ліцензійної та небезпечної зони. Може керувати командою.

Акумулятор

Відповідаючи на присвоєні квитки та чати, переглядайте аналітику. Немає налаштувань, команди або доступу до безпеки.

Чи можу я створити користувацькі ролі?+

Не в даний час. Три вбудованих ролей і призначення відділу дає гранульований контроль.

Налаштування

Заблоковано IPs

Керування IP адрес, що заблоковані з доступу до ваших трекових сайтів.

Заблоковано IPs
Заблоковано IPsзаблоковано-IPs екран: блок-ан-IP/CIDR форму біля таблиці заблокованих адрес з кожним записом, датою, причиною та кнопками розблокування.Заблоковано IPsробоча зонаБлокування IP / CIDR203.0.113.0/24Причини (необов'язково)БлокиЗаблоковані адреси203.0.113.9Червень 12 · сила брютаРозблокувати45.12.0.0/16Мар 10 · спамРозблокувати102.89.6.2Червні 9 · зловживанняРозблокувати1БЛОКIP або діапазон CIDR2LISTХто і коли, з причини3UNBLOCKОдин клік
Реальний блокований IPs екран: блокувати єдиний IP або діапазон CIDR, і керувати списком, кожен з його дати, причини та один клік розблокування.

Як заблокувати

1
Перейти до вмісту > Заблоковано IPs

2
IP або CIDR діапазон

Приклад: 203.0.113.42 або 203.0.113.0/24

3
Додати причину

Документ, чому: спам, зловживання, скребкування тощо.

Чи заблокуватимуть законні користувачі?+

Якщо клієнти діляться корпоративними IP або VPN, блокуючи це IP блокує всі на ньому. Використовуйте вузькі блоки.

Налаштування

Ввійти логін

Всі невдалі спроби входу в систему OpsIQ admin.

Ввійти логін
Ввійти логінСекран нелогінів: таблиця рахунків/IPs з підрахунками несправностей, часом останнього спроби і кнопкою Блоку на ряд.Ввійти логінробоча зонаНе вдалося записати логінУніверсальні інженерні рішення IPБРАЙДЛІСТАКЦІЇ[email protected] · 41.62.10.472m томуБлоки[email protected] · 102.89.6.2318m томуБлокиНевідома · 45.12.9.7_1226m томуБлоки[email protected] · 88.21.4.921h назадБлоки1WATCHНе вдалося записати логін2COUNTSНа рахунок / IP3АКЦІЇБлок з ряду
Выберите информация в Укра?нский университет IP з її підрахунком несправностей і тривалою спробою заблокувати джерело брута прямо з рядка.

Що кожен запис показує

Дата/час

Коли спроба відбувалася.

Електронний лист

Адреса електронної пошти, що використовується.

IP Контакти

Джерело спроб.

Країна

Географічне розташування.

ПРАВИЛА

Не знайдено пароля, замкнений або не знайдено.

Повідомлення про приписи

Багато спроб, однакова електронна пошта

Увімкнення пароля. Забезпечити 2FA.

Багато спроб, різні електронні листи

Автоматизований атака. Блок джерела IP_.

Незвичайні країни

Якщо ваша команда є локальною, іноземними спробами, швидше за все, атаки.

Налаштування

Аналіз безпеки AI

Відповідна аналітика шару над сторінками безпеки: вироки, падаючі брифи, щоденне травлення, щотижневий контроль постави, Запитати безпеку та 0-Постанови блоків, які ніколи не ходять у шляхі запиту відвідувачів.

Кожен запис сторінки безпеки, що сталося, але читання все ще займає судове рішення. аналітика з питань захисту AI додає, що судденція в місці, і він побудований для того, щоб витрачати майже нічого: вона ніколи не сидить у боконі або в'язниці шляху, детерміністичні правила поселяють очевидні випадки без виклику AI, вироки є кешованими, а найкраща вихід аналітика - це визначальне правило, яке потім діє назавжди при нульових токенах. Увімкніть функції на в Налаштування → Безпека; всі за замовчуванням вимкнено.

Що додає

Вирок чіпсів + Скарги

Заблоковано IPs і в'язаними рядами входу показують доброякісні / підозрілі / хостильні чіпи з впевненістю забито. Скарга відкриває причину, використовуваних фактів та одноклацання блоку / Реліз дії 24h, щоб переглянути перегляд IP Безкоштовно.

Випадкові брифети

Схожі події кластера в один інцидент (логін хвиля, URL сканування, автоматичного блокування сплесків) з простою англійською часовою лінією та одним рекомендованим наступним кроком. Забороняються атаки складаються в той же інцидент.

Щоденне травлення

Один раз переможець в день: вчора виправите свій базовий, блоки, інциденти і єдине, що робити. Кихі дні відправте детерміністично все-зніміть на нульових токенах.

Щотижнева перевірка після закінчення

A Monday hardening checklist (2FA gaps, lockout threshold versus real attack volume, alerts off) with a severity, effort and exact fix per item.

Запитати про безпеку

У розділі «Опитування безпеки» ви можете дізнатися, що відповіді від вашого стану охорони здоров’я. Питання глибокого сервера надішуються в чат адміністратора, а не здогадуються.

Пропозиції щодо політики + автопілот

Аналізатор пропонує правила бетоноблоку як затвердження / Видача карт; затверджені правила, що застосовуються при нульових токенах з лічильником вболівальників. Додатковий автопілот автоматично схвалює тільки безпечні правила автоматично.

Налаштування

Аналіз безпеки AI (безпека_і_enabled)

Майстер-ключ. Увімкнено вироку чіпів, поясних і задають безпеку. Тільки неоднозначні IPs досягають моделі, зараховані в один дзвінок.

Випадкові брифети (безпека_ідентифікатор)

Заходи кластерів в інциденти і записує кожну нову історію. Виконується на існуючій годинній безпеці cron.

Щоденне травлення (безпека_ідейст)

Один рятувальний відбій на день у дзвінку і огляд. Дні за щойно вартість

Щотижнева перевірка постави (безпека_і_постановка)

Список перевірок по темі:

Автопілло політики (безпека_ai_autopilot)

Допомагає аналітику активізувати свої безпечні пропозиції, ненав'язані: тільки оперативні блоки часу, один IPs або діапазони не ширше, ніж /24, ніколи не спільного/мобільного/приватного, заблокованого 10 за годину, завжди перевіряються і нездатні.

💡
Кожен виклик позначений Security_ai з власним щомісячним ковпачем в AI Config → Стоячі гвардії (default 300k токенів). Якщо натискання потрапив, функції деградуються до детермінатичних читання. Блокування, блокування та сповіщення ніколи не залежать від цього бюджету. аналітик ніколи не може видаляти дані, змінювати налаштування, сенсорний аудитор під керівництвом або зробити постійне заборону.
Операції

Крон і автоматизація

OpsIQ використовує один планувальник продукту, щоб запустити опитування електронної пошти, автоматизації квитків, розгортання аналітики, зберігання, AI-черги, CRM робота, звіти та завдання з'єднувача.

Екран продукту
Крон і автоматизаціяОдин продукт запис кронів подає серцебиття; OpsIQ Вирішує, які внутрішні роботи пов’язані.Крон і автоматизаціясерверСЕРГІЙКожна хвилинаRUNNERcron/all.phpHEALTHНалаштуванняОГЛЯД РОБОТИУніфікований бігунopsiq/cron/all.phpПотрібніВипадкові та електронні чергиКоротко заплановані роботиАктивнийАналітика та збереженняВнутрішній курсРозкладРоз'ємні абонентиЗібрані броньовані подіїСкопіювати1INSTALL ONE LINEЗапустіть графік роботи продукту, кожен хвилин2CHECK CRON SETUPПідтвердити серця CLI3USE DIAGNOSTICSІнвестигати запізню або не вдалося працювати
Один продукт запис кронів подає серцебиття; OpsIQ Вирішує, які внутрішні роботи пов’язані.

Необхідний запис крону продукту

Додайте цю один рядок до кроктабі для одного сервера та середовища PHP, який працює OpsIQ:

OpsIQ продукт crontab запис
* * * * * php /path/to/opsiq/opsiq/cron/all.php >> /tmp/opsiq-cron.log 2>&1

Замінити /path/to/opsiq з кореневим встановленням. Використовуйте повну шлях PHP CLI, коли господар вимагає одного, наприклад /usr/bin/php8.4.

Не використовуйте верхній рівень /cron.php для роботи продуктів. У цьому репозиторію, яка надана на окрему непродукційну послугу за межами цієї книги. OpsIQ продукт бігун є opsiq/cron/all.php.

Що вказані диски графіка

Випадки та AI

Процеси, що виникають внаслідок автозаправок, ескалації, затвердження та інших черги роботи продуктів.

Вхідний лист

Поліс налаштовані поштові скриньки, де опитування вибрано метод здачі.

Аналітика та сеанси

Збірки сеансів та освіжує заплановані агрегати, коли вони пов’язані.

CRM та залучення

Запускається забивка, життєвий цикл, робочий процес, кампанія та заплановані завдання з перевезення.

Затримання та обслуговування

Виконує роботу з очищення, архіву, термінології та цілісності.

Конектори

Роз'єм роз'єму циліндрів і обпилювання тільки для встановлених, ввімкнених та налаштованих роз'єднувачів.

Перевірити крон

  1. Відкрито Налаштування - Крон Setup і підтвердити роботу товару.
  2. Використання Запуск зараз Після підтвердження оновлення та запилення брелоків адміністратора.
  3. Перевірити Діагностика для пізнього серця, PHP CLI, бази даних або проблеми файлової системи.
  4. Перевірити /tmp/opsiq-cron.log або шлях входу, який ви вибрали при ручному запуску не буде.

Тримайте ручники з роз'ємом короткі, idempotent і робоча просторова підтримка. Пакетні довгі синхронізації та зберігають курсор/checkpoint так, що наступний біг може безпечно продовжитися.

🚫
Коли продукт cron зупиняється, час на основі OpsIQ роботи припиняє або стає пізно навіть якщо звичайні сторінки адміністратора все ще можуть навантаження.
Операції

Запрошення операцій з розгортання

Проживання OpsIQ Розгортання використовує однакові екрани продукту та робочі процеси, в той час як хостинг оператор керує шаром сервера. Комерційний підпис, плани, рахунки та обліково-порталні процедури виходять за межі цієї книги.

Екран продукту
РозгортанняВедуться зміни роботи, які підтримують інфраструктуру; не змінює використання клієнтів OpsIQ.Розгортанняробоча зонаPRODUCT UIУніверсальні інженерні рішення OpsIQINFRASTRUCTUREОператор-менеджментWORKSPACE DATAІзольованийОГЛЯД РОБОТИЗаявка на runtimePHP, веб-сервер і бази данихМенеджментПродукт кріселГрафік роботи хостингуВиданняРезервне копіювання та оновленняПолітика та доказиРедагуванняOpsIQ НалаштуванняСайти, AI, команда та роз'ємиВаша команда1OPERATE OPSIQ NORMALLYВикористовуйте те ж саме навігацію продуктів2VERIFY SERVICE HEALTHВикористання діагностики та доказів стану3KNOW RESPONSIBILITYВідеоспостереження від компанії
Ведуться зміни роботи, які підтримують інфраструктуру; не змінює використання клієнтів OpsIQ.

Що таке хостинг-оператор зазвичай керує

  • Веб-сервер, PHP runtime, бази даних TLS і зберігання.
  • Єдиний реєстратор і його серверних колод.
  • Оновлення додатків, моніторинг інфраструктури та процес резервного копіювання, визначений договором про хостинг.

Що таке OpsIQ адміністратор все ще керує

  • Веб-сайти та налаштування віджету, налаштування AI, знання, поштові скриньки та клієнтські робочі процеси.
  • Командний доступ, відділення, контроль за безпекою, API ключі, роз'єми, автоматики та налаштування даних.
  • Перевірка продукту через діагностику, журнал аудиту, аналіз роз'ємів та реальні перевірки.

Оперативні перевірки

Не припустимо, що це керована послуга означає, що кожна інтеграція продукту є здоровим. Підтвердіть останні дані про резервну копію та політику збереження з оператором хостингу і використовуйте OpsIQ Діагностика після змін DNS, e-mail, провайдери AI, веб-сайти або роз'єми.

Цей розділ охоплює операції продуктів тільки. Комерційні на борту, підписки, вексельні та клієнтські рахунки-адміністрації залишаються поза межами OpsIQ Handbook.

Операції

Автоприїзд OpsIQ

Самохідний OpsIQ Ви контролюєте інфраструктуру. Ви несете відповідальність за час роботи, базу даних, TLS, продуктовий cron, резервні копії, оновлення та моніторинг.

Екран продукту
СамостійнаСамостійна система дозволяє контролювати інфраструктуру і робить вашу команду, відповідальною за кожну операційну залежність.СамостійнасерверPHP8.4+DATABASEMySQL 5.7+SCHEDULERКожна хвилинаОГЛЯД РОБОТИРозширення для пускуcurl, pdo_mysql, mbstring,jsonПотрібніДодаткові розширенняxml, opensl, zip, intl, gdПотрібніАльтернатива бази данихMariaDB 10.3+ з InnoDBПідтримуваніТранспортHTTPS і вихідний доступ провайдераВидання1PREPARE THE SERVERВимоги до виконання матчів2INSTALL AND CONFIGUREВикористовуйте виділену базу даних та HTTPS3ADD PRODUCT CRONПробіг opsiq Türkçe, English, Русский, Українська...
Самостійна система дозволяє контролювати інфраструктуру і робить вашу команду, відповідальною за кожну операційну залежність.

Мінімальний договір програмного забезпечення

PHP

ФІНАНС 8.4 або новачок. Необхідні розширення: curl, pdo_mysql, mbstring, json, xml, opensl, zip, intl і gd.

База даних

MySQL 5.7+ або MariaDB 10.3+ за допомогою InnoDB. Створіть виділену базу даних та користувацьку програму, яка не має права на використання програми.

Веб-сервер

Apache або Nginx налаштовані для OpsIQ передній контролер, статичні активи та необхідні резити.

Веб-сайт: www. facebook. com

Потрібні для адміністраторів, віджет трафіку, API ключі, webhooks і дзвінків з постачальником.

Вихідний доступ

Allow DNS і HTTPS доступ до AI, електронної пошти, роз'єму та кінцевих точок ліцензії, які ви дійсно можете включити.

Доступ до файлів

Користувачі веб- і CLI повинні мати можливість читати файли додатків та писати лише на сайті, що запускається в режимі 24/7.

Кронштейн

Запустіть OpsIQ маршрут кожного хвилини з однаковою конфігурації додатків та доступу до бази даних як веб-процес.

Послідовність установки

  1. Завантажте випуск до призначеного кореня документа і зберігайте структуру каталогів.
  2. Створіть базу даних та користувача програми, потім введіть базу даних, канонічний URL і налаштування ліцензії.
  3. Запуск інсталятора/витрату коштів і створення першого облікового запису власника.
  4. Увімкнути HTTPS і перевірити перенаправлення, файли cookie та публічний віджет /API Шляхи.
  5. Додати у Єдиний OpsIQ продукт cron:
Самостійний продукт трон
* * * * * php /path/to/opsiq/opsiq/cron/all.php >> /tmp/opsiq-cron.log 2>&1
  1. Відкрийте налаштування - Кроновий настройок і діагностика; запустіть графік один раз і вирішуйте кожну нездійсненну залежність.
  2. Налаштування резервної копії, відновлення тестування, збереження та оновлення записів перед додаванням даних про виробництво.

Надійно

  1. Ознайомтеся з нотками та перевірте необхідні PHP/випадки перед зміною файлів.
  2. За допомогою файлів, які використовують файли для налаштування бази даних та додатків, потім довести резервну копію можна відновити у тестовому місці.
  3. Розгортання нових файлів без видалення конфігурації або часу встановлення.
  4. Запустіть поставку міграції / випромінити процес і перевірити логін, відстеження віджетів, квитки, електронну пошту, AI, роз'єми та cron.
  5. Збережіть попередній випуск та резервну копію бази даних, доступну для вікна зворотного зв’язку з документами.
🚫
Репозиторій верхнього рівня /cron.php не є OpsIQ Модульний планувальник. Автоматизація продукту тільки на сайті opsiq Універсальні інженерні рішення
⚠️
Не видаляти . schema_cache.json як рутинне обслуговування. Видаліть його тільки при інструкції продукту явно вимагають відбудування schema-cache
Операції

Керівництво по виготовленню

Перелік та кращі практики для бігу OpsIQ у виробництві.

Керівництво по виготовленню
Керівництво по виготовленнюСписок лівих перевірок: користувацький домен та SSL_, AI навчався, роз'єми і cron, резервні копії та збереження команди.Перейти до вмістуробоча зонаДо тебе їхати житиСпеціальний домен + SSL налаштованийАІ навчався на вашому вмістіРоз'єми протестовані · гонщикРезервне копіювання планового · набір збереженняКомандні ролі, призначені та рецензовані1GO-LIVEПопередній контроль2ВЕРІФІКДомен · SSL · резервні копії3CONFIDENTКорабель при зеленому
Цей список для перевірки, щоб нічого не пропустити: домен + SSL, навчений AI, тестовані роз'єми та cron, резервні копії та збереження команди.

Перед тим як жити

HTTPS налаштований

SSL Встановлено, HTTP перенаправлення, HSTS ввімкнено.

Крон ходовий

Перевірка через сторінку діагностики.

АІ тестував

Як клієнт. Перевірити точність і тонус.

Виданий встановлений

На всіх сторінках сайту. Перевірити з живим кормом.

Резервне копіювання

Автоматична щоденна база даних та резервні копії файлів.

Журнал помилок

Увімкнути і контролювати роботу PHP-файлів.

Запрошення до команди

Всі учасники мають рахункові записи з правильними ролями.

Знання бази, що заселений

Принаймні 5-10 Статті.

Щоденно: Перевірте панель інструментів, точну чергу квитка, роздяснюйте AI-бесіди.

Щотижнево: Огляд AI Insights, оновлення KB, перевірка продуктивності команди, огляд безпеки.

Щомісячний: Огляд тенденцій аналітики, роз'ємів перевірок, оновлення AI-тренінга, перевірка резервних копій.

Операції

Попередній контроль

Запуск вихідних воріт і завершення реального продукту перевіряється до виходу або першого запуску виробництва. Командою є не докази, що він пройшов у вашому середовищі.

Екран продукту
Перевірка випускуПерегляд релізу показує необхідні ворота для запуску; він не перед плиткою їх, як пропущений.Перевірка випускусерверРУНТІЯPHP 8.4SOURCE GATESЗапуск локальноOUTCOMEЕвіденс на основіОГЛЯД РОБОТИНеобхідні розширенняПеревірити до люксуШиниPHP синтаксис ковпачаВсі файли PHPШиниОцінка та оцінка AIЗапуск при наявності залежностейШиниСтатистичні та браузерні перевіркиЗапуск при налаштуванніШини1RUN THE CHECKSЗахоплення фактичного виходу2FIX EVERY REQUIRED FAILUREНе замінювати докази при припущеннях3TEST THE PRODUCTПеревірити реальні подорожі користувачів
Перегляд релізу показує необхідні ворота для запуску; він не перед плиткою їх, як пропущений.

Джерела та випуск воріт

Запустіть репозиторію перевірок з кореня установки і зберігайте їх повну вихід із рекордом релізу.

Первинні фари воріт
php tools/preflight.php
Перевищення вихідного воріт
php tools/release_gate.php

Передпольот перевіряє PHP 8.4 runtime і необхідні розширення, виконує синхронізацію PHP, працює штепсельна панель AI та повний пакет PHPUnit, а також веде перевірку PHPStan/Node при встановленні цих інструментів. Розширення воріт також включає дим, чистий установка / щіма та браузер кінцевих до закінчення часу перевірок, коли їх оточення налаштовано.

Запущена перевірка не проходить. Запис, чому це було недоступно, встановити відсутній залежностей або запустити його в правильному середовищі CI/staging до виходу.

Перевірка товару

1. Ауттентифікація та ролі

Зареєструватися як на кожній сторінці, перевірити дозволені та відхилені сторінки/дії.

2. Віджети та відстежити

Навантаження реального сайту в приватному браузері; перевірка бабкон-трафік, живий корм, відвідувач і запис сеансів.

3_. Чат та AI

Запитайте про актуальні питання; перевірте знання, заправка, ескалація та історію AI.

4. Квитки

Створіть, відкладайте, відповідь, ескалувати, закрити і перезапустіть через кожну ввімкнуту шлях.

5_. Електронна пошта

Тестування вихідних доставки та кожного настроюється вхідної поштової скриньки або шлях вебхока.

6. CRM та аналітика

Створення керованих контактних/деальних/конверсійних та контрольних панелей, воронів, забивок і звітів.

7. Роз'єми

Тести з'єднання, один зчитувач, один сейф запис / висувний та webhook/polling для кожного ввімкненого роз'єму.

8. API і вебхоки

Перевірити вузького обсягу, ліміти швидкості, речення idempotent, підписи та дублікування.

9. Крон

Запустіть єдиний планувальник продукту і підтвердіть всі необхідні серцебиття в Крон Setup/Diagnostics.

10_. Безпека

Перевірити 2FA, CSRF/session Controls, записів аудиту, відображення ключів та ізоляції робочих місць.

11. Резервне копіювання та відновлення

Відновлення поточного резервного копіювання в окреме середовище тестування та перевірки даних і конфігурації.

12. Спостереження та зворотний зв'язок

Підтверджуйте колоди/вставки, зберігайте ідентифікатори запиту та доводите процедуру зворотного зв’язку.

⚠️
Розгортання тільки після кожного обов’язкового воріт та бізнес-критичної поїздки має актуальні докази для точного виходу і навколишнього середовища.
Про компанію

Веб-Пуш на сторонніх сайтах

Браузер поштових повідомлень (включаючи OpsIQ Поштовхувати кампанії) потрібно працівника служби, що подається з SAME ORIGIN як сторінки.OpsIQ Віджети завантаження з вашого OpsIQ не можна реєструвати, тому сторонній сайт OpsIQ- Працював безпосередньо. Зайдіть один невеликий файл на власній домені сайту, щоб дозволити його відштовхувати. Кампанії поставляються за допомогою методів підтримки BOTH.

Як працює
Веб-шрифтOS-style push повідомлення над двома картками способу доставки: Вбудовані VAPID і Pusher Beams.Ваш магазинВаш кошик чекає · 10% _від сьогоднізаразВбудований (VAPID)Ні третійПереглянути файлПушаркиВикористовуйте свій обліковий записЗайдіть працівника
Веб-шрифт

Чому це потрібно

Браузери тільки дозволяють реєструвати сторінку сервісного працівника з власного походження. Віджет завантажує крос-рігін від вашого OpsIQ розгортання, тому не можна встановити на сайт замовника, доки ви запрошуєте працівника на цьому місці, віджет безшумно пропускаємо (не помилка, ні підписка). У вас є два варіанти нижче;OpsIQ Пуш Кампанії публікуються як на

Опція A · Самостійна веб-подушка (VAPID, немає третьої сторони)

1. Завантажте працівника з вашого OpsIQ розгортання: https://YOUR-OPSIQ/opsiq/opsiq-push-sw.js

2. Завантажуйте його на свій веб-корінь так що він досягається при https://yoursite.com/opsiq-push-sw.js. Віджет автодетекти цей шлях на власне походження сторінки і реєструє її, не потрібно змінювати хіппе. (В ній використовується вузька сфера, тому вона ніколи не замінює роботу служби, який ви вже працюєте.)

Додатково: якщо ви повинні розмістити його в нестандартному шляху, то встановіть віджет на ньому до хіппе. При цьому тільки приймається, коли однозначно:

Необов'язково · тільки якщо файл не в корені
<script>window.OpsIQ=window.OpsIQ||{};window.OpsIQ.pushSwUrl="/custom/opsiq-push-sw.js";</script>

3. У OpsIQ, генерувати ключі VAPID (Налаштування → Клієнт чат AI → Розширений → Web Push). Потім віджет попросить відвідувачів дозвіл на повідомлення і підписує їх.

За CDN/Cloudflare? Переконайтеся, що /opsiq-push-sw.js повертає HTTP 200 (підірвати кеш, якщо це було 404 перед тим, як завантажити; трахнув 404 заблокувати реєстрацію.

Опція B · Пошлунки (керівник постачальника)

1. У налаштуваннях OpsIQ встановити провайдера для поштових відправлень Пушарки і введіть свої маки Ідентифікатор і Таємний ключ.

2. Зайдіть в службу Beams на корені сайту /service-worker.js. Копіювати https://YOUR-OPSIQ/opsiq/pusher-beams-service-worker.js, або об'єднати цю лінію в ваш існуючий корінь працівника:

Поручники, хост https://yoursite.com/service-worker.js
importScripts("https://js.pusher.com/beams/service-worker.js");

3. Це це. Віджет автоматично завантажується покерами SDK і підписує кожного відвідувача на проценти opsiq-site-<your-site-key>. Ніяких проводок, необхідних для

Як поставляється кампанії

Пуш Кампанії публікуються через як Як тільки відвідувачі на самоприхованій робочій платформі VAPID отримують зашифровану Web Push, а також відвідувачів підписуються через Пушер Беймс публікуються. Кожен відвідувач досягається через який вони підписалися, тому ви можете запустити однозначно-рігінний ВАПІД на деяких сайтах і кросорігин Beams на інших.

Для отримання додаткової інформації про файли cookie необхідно Для працівників служби та веб-пошти (локальний прихил звільняється від тестування). У додатку адміністратора чат вже використовується той самий механізм зацікавленості у попаданнях користувачів для диспетчерів.

Операції

Виправлення несправностей

Загальні питання і як їх зафіксувати.

Загальні

Сторінка порожні+

Перевірте журнали помилок PHP. Причини: старий PHP (need 8.4_ +), відсутні розширення, підключення DB не вдалося, неправильні дозволи на файл.

Dashboard показує нулі+

Перевірте: Ви встановили віджет? Cron працює? Діапазон дати виправити? IP виключено?

А. А.

АІ не відповідає+

Перевірити: провайдер налаштований? API ключ дійсний (використання Тест-з'єднання)? Бюджет вичерпається? Робочий простір AI config правильно?

АІ віддає перевагу неправдивим відповідь+

Перевірте: знання бази до дати? Промпт ясно? Роз'єми, що повертаються правильні дані? Огляд розмови в історії AI.

АІ повільний+

Залежно від: провайдер API швидкості, розмір контексту (великий КБ = більш токени = повільніше), мережева гратність. Спробуйте швидку модель.

Відстежити

Відсутні+

Перевірте: скрипт у вікні сторінки? JS помилки в консолі? CSP блокування? Ad blocker?

Невідома країна+

GeoIP не налаштований. Використовуйте Cloudflare (автомат) або бази даних MaxMind GeoLite2.

Авіаквитки

Списки не створюють квитків+

Перевірити: з'єднана поштова скринька? Запуск пароля змінено? IMAP налаштування правильно?

Автоповорот не працює+

Перевірте: ввімкнено? У відділі допускається AI? Cron працює? Люди вперше відповів?

Конектори

Не вдалося підключитися+

Перевірити: критерії правильно? Ключ вичерпається? API доступ до сервера? Базова URL правильно?

Підключені, але не дані+

Перевірте: API ключові обсяги? Webhook sync ввімкнено? Cron працює?

ЕКСПЕРТИВНІСТЬ

Схуднути сторінки+

Перевірити: продуктивність бази даних (SHOW PROCESSLIST), пам'ять PHP (збільшення до 1GB), увімкнути opcache, зменшити термін зберігання.

Операції

Віджети не залогові візити

Використовуйте цю фокусовану перевірку, коли завантаження віджету невірно або живий корм залишається порожнім.

Коли Віджет не завантажує візити, перевірити ключ сайту, завантажувати сторінку в приватному браузері, перевірити панелі браузера Network/Console для заблокованих запитів на бджільництво або віджетів, переглянути контент-справність та блокувальники оголошень, підтвердити сайт активний OpsIQ_, і відкрити Діагностика. Помітний чат міхур не по собі довести, що аналітика була прийнята.

Посилання

Глосарій

Визначення умов, що використовуються протягом усього часу OpsIQ.

Дія

Щось з AI може зробити через роз'єм або платформу.

Акумулятор

Учасник команди з обмеженим доступом або агентом AI.

BYOK_

За допомогою штучного інтелекту ви отримаєте свій власний ключ API ключ.

Роз'єм

Додаток інтегрує зовнішній майданчик з OpsIQ.

CSAT_

Оцінка задоволеності клієнтів.

Деал

Можливість отримання доходу в CRM.

УКР

Категорія квитків для маршрутизації та контролю доступу.

Ескіз

Переміщення квитка на інший відділ або від AI до людини.

Геопи

Виявлення місця розташування відвідувачів з IP адреса.

Передача

Передача розмови з AI до людини.

Пояс з ідентичності

Визначений токени, який визначає відвідувачів сайту.

База знань

Статті AI використовують для відповіді на питання.

Магістр

Відвідувач, що показує покупку непристойних.

Провідний рахунок

0-100 номер, що вказує на перетворення ймовірність.

Етап життєвого циклу

Де клієнт: Провідний, перспективний, Клієнт, на ризиках, чуванський.

Керований AI

АІ за умови, що частина вашого OpsIQ _.

Трубопровід

Візуальна дошка етапів роботи.

РБАК

Контроль доступу до ролей.

Спілкування

Серія переглядів сторінок в вікні таймера.

Ключ сайту

Унікальний ідентифікатор для відстеження веб-сайту.

SLA_

Угода про рівень сервісу, час виконання завдань.

токени

Блок тексту AI. Жорстко 4 символи = 1 токен.

Довіра

Система безпеки, що контролює АІ автономію.

Веб- гачок

HTTP-заявка на повідомлення про події.

Віджети

JavaScript код, вбудований на вашому сайті.

Робочий простір

Сайт з власним відстеженням, AI, роз'ємами та командою. Так само як "сайт".

Посилання

Отримати більше допомоги

Якщо це документація не відповідає Вашому питання:

А. А.

Натисніть "Аск"OpsIQ" в адміні. Доступ до цієї документації та ваших даних платформи.

Підтримати квиток

Включіть: що ви спробували, що сталося, що ви очікуєте, і будь-які повідомлення про помилки.

Електронний лист

Підтримка електронної пошти з вашим обліковим записом та описом питань.

Поради щодо ефективних запитів підтримки

Включити сторінку

Яка сторінка адміністратора (URL або ім'я.

Включіть налаштування

Точне ім'я налаштування та значення струму.

Включити помилку

Точне повідомлення про помилку з кодами.

Включити кроки

Що ви зробили, крок за кроком.

Включіть очікуваний проти фактичного

Що потрібно стати проти того, що сталося.

💡
Більш конкретний запит, швидше відповідь. "Це не працює" вимагає розслідування. "Завантажити Зберегти на AI конфігурації дає код помилки 502" отримує пряму відповідь.