OpsIQ Belgelendirme

Yapın, işletmek ve OpsIQ.

Bu, tam belgedir çünkü OpsIQ Ürün kurdu, destekle, AI'yı yapılandırın, CRM’i yönetin, pencereyi inşa edin, konektörler oluşturun, REST'leri arayın API Ancak webhooks, paket pazar uygulamaları alın ve kendini barındırmış dağıtımları çalıştırın.

Müşteri rehberiAdmin rehberiGeliştirici rehberiCRM referansLink SDKREST APIKendi kendini barındırdı
Kapsam

Bu el kitabının Kapsamı

Her OpsIQ bir yerde: her ekran nasıl çalışır, kendi sistemlerinizi nasıl bağlar ve bunun üstüne nasıl inşa edilir. herhangi bir yere başlayın, bölümler aynı düzeni admin sidebar olarak takip eder.

Kapsam
Dokümantasyon haritasıElbook, OpsIQ ürünü etrafında düzenlenir ve aynı düzeni yönetici sidebar olarak takip eder.Dokümantasyon haritasıOpsIQ ürünAUDIENCEOperatörlerBUILDGeliştiricilerRUNYöneticilerLIVE ÇALIŞMASPACEOpsIQ kullanÜrün ekranları ve akışlarDahil olanlar dahil olmak üzereOpsIQKazımlar, APIs ve widgetDahil olanlar dahil olmak üzereOpsIQ'ı çalıştırGüvenlik, cron ve dağıtımDahil olanlar dahil olmak üzereReferansPaket, API ve webhook kontratlarıDahil olanlar dahil olmak üzere1CHOOSE AUDIENCEOperatör veya geliştirici2FOLLOW THE UIBölümler Ayna OpsIQ3USE SOURCE TRUTHDurum inşadan gelir
Elbook, OpsIQ ürünü etrafında düzenlenir ve aynı düzeni yönetici sidebar olarak takip eder.
Portal Studio alan rehberi

Portal mimarisi için özel yönetici ve geliştirici kılavuzunu kullanın, sayfalar, bileşenler, önizleme, Yardım Merkezi, kimlik, SCIM, yönetilen sürümler, uzantılar, geçişler ve sertifikasyon.

Portal Studio rehberi açın

Burada ne var

Ürün çalıştırın

Yöneticideki her ekran: Analiz, canlı sohbet, biletler, CRM, bilgi tabanı, Site Zekası, promosyonlar ve müşteri hesabı portalı. Her sayfa ne anlama geliyor, sayılar yanlış görünüyorsa ne yapmalı?

Sistemlerinizi bağlayın

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

Kendin inşa et

Kodlama bağlantıları için, Actions & Tesettürler eğer tümünde konektörleri kullanmayı tercih etmezseniz ve REST API her eylem, kapsamı ve hata kodu ile.

İşle.

Roller ve izinler, güvenlik, cron, tanılar, yedekler ve hem ev sahibi hem de kendi barındırılan dağıtım.

Nereden başlayacağım

1
Eğer OpsIQ gün gündüz çalıştırırsanız

Ekran bölümlerini kenar çubuğu sırayla okuyun. Her biri sayfanın ne için olduğunu açar, bu yüzden ihtiyacınız olan şeyleri olduğu kadar kısa sürede durdurabilirsiniz.

2
Eğer bunu idare ederseniz

Ayarlar, Güvenlik, Teşhisler, Cron ve Production. Bunlar her şeyin çalışmadığına karar veren bölümlerdir.

3
Bir entegrasyon inşa ediyorsanız

İnişlere başlayın, sonra theLock Builder, sonra REST API ve webhooks. siparişte olanları okuyun ve her şekilde göreceksiniz OpsIQ Başka bir sistemle konuşabilir.

💡
İki şey gördüğünüz şeyi değiştirir. İzinler sayfalarınızı gizleyemez, bu yüzden burada açıklanan bir bölüm sizin tarafınızdan kaçırılabilir. Bir yöneticiye rolünü kontrol etme konusunda bilgi sahibi olun. Ve konektörler üretim olgunluğu etiketi taşır, Beta, Preview veya Şablon; koşu inşa ve onun bağlayıcısı, sahip olduğunuz kişi üzerindedir.
Buraya başlayın

Ne OpsIQ sizin iş için yapar

OpsIQ Tam bir AI-ilk iş işletim platformudur. Analizlerinizi değiştirir, canlı sohbet, yardımdesk, CRM, SEO aracıkit, entegrasyon ortaware ve geliştirici platformunu her aracın aynı müşteri bağlamını paylaştığı tek bir birleşik yönetici ile birlikte değiştirin. 8-12 ayrı SaaS ürünleri, kurulumunuz OpsIQ Bir kez ve her şeyi bir ekrandan çalıştırın.

Platform
OpsIQ birleşik platformCanlı sohbete bağlı merkezi bir AI beyni, CRM, biletler, Site Zekası, promosyonlar ve analiz.Canlı sohbetPromosyonlarAI CRMIntel web sitesiBilet biletleri Bilet Biletleri BiletAnalizOpsIQBeyni1ONE WORKSPACEBir yöneticideki her araç2SHARED BRAINBir müşteri bağlamı3ANYWHEREBulut veya kendi barındırdığınız
OpsIQ, paylaşılan bir müşteri bağlamı ile tek bir platformdur, her araç besliyor ve aynı AI beyni tarafından güçleniyor.

Her OpsIQ · ayrıntılı olarak

Web sitesi analitik ve ziyaretçi istihbarat

Gerçek zamanlı ziyaretçi izleme

Her sayfa yükü, tıklayın, kaydırma ve navigasyon olayı gerçek zamanlı olarak ele alınır. Şu anda sitenizde kim olduğunu görün, hangi sayfaları izliyorlar, ne kadar harcıyorlar ve nereden geldiler, üçüncü taraf kurabiye olmadan hepsinden.

Ziyaretçi Girişi ve seansları

Cihazı olan her ziyaretçinin tam tarihi, tarayıcı, işletim sistemi, ülke, şehir, referrer, UTM parametreleri, iniş sayfası ve kimlik çözünürlüğü. Oturumlar grup sayfası tüm yolu bir ziyaretçinin gerektirdiği gibi görebilirsiniz.

Oturum tekrarları

Yaralanan ziyaretçi seanslarının zaman tarzı oyun geri dönüşü. Kullanıcılar tam olarak ne yaptığını görün: fare hareketleri, tıklamalar, kaydırmalar, sayfa geçişleri ve form etkileşimleri. UX sorunlarını teşhis etmek için kullanın, damla puanları anlamak ve dönüşüm akışlarını doğrulamak.

Canlı yem

Gerçek zamanlı ziyaretçi aktivitesinin akışı olduğu gibi. Görüldüğü sayfa görüşleri, sohbet başlar, form teklifleri ve niyet sinyalleri her birkaç saniye güncellenir. Ülkelere göre filtre, cihaz veya belirli trafik segmentlerine odaklanmak için atıfta bulunun.

Top sayfaları

Sayfalar ziyaretler, nişan zamanı, geri dönüşümler ve destek faaliyetleri ile sıralanmıştır. En yüksek performanslı içeriklerinizi ve sayfaları geliştirmek.

Geo zeka

Ülke, şehir ve bölge haritalarla parçalanır. Cihaz ve tarayıcı dağıtım, trafik kaynağı analizi, arama motoru takip eder ve piyasa penetrasyonu içgörüler.

Niye eğlenceli

Ziyaretçi niyeti sinyalleri (sayfa ziyaretleri, tekrarlanan geri dönüşler, belgeleri tarama kalıpları ve destek etkileşimleri) satın almak için muhtemel ziyaretçileri tanımlamak veya yardıma ihtiyaç duyanlara yardımcı olmak.

A/B deneyleri

Web sitenizdeki testleri doğrudan OpsIQ. varyantlar oluşturun, trafik tahsisi yapın, dönüşüm hedeflerini tanımlayın ve istatistiksel önemini ölçmek. gerekli dış test aracı gerek yok.

JavaScript hata takip

Müşteri-side JavaScript hataları web sitenizde otomatik olarak. Hata mesajları, yığın izlerini gör, etkilenen tarayıcılar, frekans sayılarını ve hangi sayfaların onları tetikledi. Debug ön sorunlar ayrı hata izlemeden.

Etkinlikler günlük

Her izlenen olay (sayfa görüşleri, özel olaylar, sohbet etkileşimleri, form teklifleri, satın almalar) tam metadata ile kullanılabilir ve filtrelenebilir bir giriş.

Satış ve dönüşümler

Takip siparişleri, gelir, geri ödemeler, abonelik yenilemeleri ve trafik kaynaklarına dönüşümler, kampanyalara ve ziyaretçi yolculuklarına giriş yapın. dönem karşılaştırması ve trend analizi ile Gelir panoları.

Kurşunlar

Davranış desenleri tarafından belirlenen yüksek kullanım ziyaretçileri. Puan, sitedeki zaman, geri dönüş frekansı, destek etkileşimleri ve özel sinyallere doğrudan CRM boru hattına yol açıyor.

Site Zekası (SEO ve içerik analizi)

Site taramaları

Tüm web sitenizin sayfalarını keşfetmek için otomatik tarama, kırık bağlantıları tespit etmek, eksik meta etiketleri bulmak, görüntü alt metni kontrol etmek, doğrulama kanonik URLs Ancak site yapısını haritalayın. Günlük, haftalık veya talepte bulunmak için zamanlama taramaları yapın.

Teknik SEO Denetimi

Kapsamlı teknik analiz: Sayfa hız puanları, mobil yanıtlama, Core Web Vitals, SSL sertifika durumu, yönlendirme zincirleri, tekrar içerik algılaması, tarama derinliği analizi ve yapılandırılmış veri doğrulama.

Content denetim

İçerik kalitesi, kelime sayması, okunabilirlik puanı, anahtar kelimeler yoğunluğu, başlık yapısı, iç / dış bağlantı oranı ve tazeliği tanımlamak için ince içerik, tekrar sayfaları ve içerik boşlukları tanımlayın.

AI-güçlü arama

Tüm site içeriğiniz boyunca Semantic arama. İçerikinizle ilgili doğal dil soruları sorun ve kaynak sayfa referansları ile yapay yanıtlar alın.

SERP sıralama takip

Arama motor sıralamanızı Google ve diğer motorlarda hedef anahtar kelimeler için izleyin. Zaman içinde konum değişiklikleri takip edin, rakiplere karşı karşılaştırmak ve hangi sayfaların hangi terimler için sıralandığını görün.

Anahtar Kelime Araştırması

İçerik, rakip analizinize dayanan anahtar kelime fırsatları keşfedin ve arama hacmi verileri. Yeni içerik konuları, uzun vadeli değişiklikler ve içerik optimizasyonu hedefleri için öneriler alın.

Backlink analizi

Size hangi sitelerin bağlantı olduğunu görün, yeni ve kayıp bağlantıları takip edin, demir metin dağıtımını analiz edin ve bağlantı kurma fırsatları tanımlayın.

Yerel SEO ağı

Fiziksel lokasyonlarla işletmeler için: yerel arama görünürlüğünü coğrafi bir ağ üzerinden görselleştirmek. sıralamanızın yerle, işinizden uzak ve arama niyetinizle nasıl değiştiğini görün.

Google Business Profile senkronizasyon

Google İş Profilinizi OpsIQ'a bağlayın. Yorumları, yazıları, soru ve cevapları, fotoğrafları ve iş bilgilerini senkronize edin. GBP listenizi _OpsIQ içinden yönetin. Yorumulara yanıt verin, yazılar yayınlayın ve görüşleri izleyin.

Scheduled raporlar

Otomatik SEO ve analitik raporları programınızda (günde, haftalık, aylık) rapor sıralama değişiklikleri, trafik eğilimleri, bulunan teknik konular ve içerik performansı. White-label çıktıları mevcut ajanslar için mevcuttur.

AI-güçlü destek

Müşteri AI sohbet

AI, web sitenizde müşteri soruları yanıtlar 24/7 Bilgi tabanınızı kullanarak, bağlantılı platform verilerini (höfler, hesaplar, abonelikler), ve özel eğitim hızlıları. Birden fazla AI sağlayıcısına destek: Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google) ve Grok (xAI).

Admin AI asistanı

Yönetici panelinizde bir AI copilot, bilet cevap yazmanıza yardımcı olan, taslak müşteri iletişimlerini analiz edin, bağlantılı platformlardaki müşteri verilerini arayın ve bağlantı sistemi aracılığıyla eylemleri uygulayın.

AI bilgisi zemining

AI, bilgi temel makalelerinizde zemine ayrılmıştır, SSS girişleri, ürün belgeleri ve bağlantılı platform verileri. Bu durum gerçek iş bilgilerinizden veya belirsiz olduğunda cevap verir.

İnsanlara otomatik olarak

Yapay zeka bir soruyu çözemeyeceği zaman, hayal kırıklığı tespit ettiğinde veya müşteri insanı istediği zaman otomatik olarak tam konuşma bağlamı ile ekibinize geri döner. Konfigure edilebilir reddetme/zaman aşımı otomatik olarak yapay zekaya geri dönür.

AI eğitimi hızlı bir şekilde

Müşteriye dönük AI ve admin-yüzey AI. Control tone, sınırları, escalation kuralları, yasak konular ve iş bazlı davranışlar için ayrı bir talimat yazın. Per-workspace yapılandırması destekledi.

AI tarihi ve denetim

Her AI konuşması tam istek/kade ayrıntılarıyla giriş yapılır, token kullanımı, maliyet izleme, sağlayıcı kullanılır ve model sürüm. Eğitim boşluklarını tanımlamak ve AI doğruluğunu geliştirmek için yorum yapın.

Yapay zeka görüşleri

AI konuşma modellerinin otomatik analizi. Ortak sorular, çözüm oranları, eloff frekansı, müşteri memnuniyeti konuyla ilgili olarak ve AI'nın daha iyi eğitime ihtiyacı olan alanları görün.

Per-workspace AI yapılandırıldı

Her bağlantılı site/iş alanı kendi AI sağlayıcısı, model, sıcaklık, token bütçe ve eğitim hızlılarını kullanabilir. Bir SaaS şirketi ikincil bir marka için Claude'i kullanabilir.

Yönetilen AI ve BYOK

İki AI modları: Yönetilen AI ( planınızda yer aldı, hayır API Anahtar gerekli) veya kendi anahtarını getirin (kendini kullanın) OpenAI/Anthropic/ Google/xAI API Model seçimi ve maliyetleri üzerinde tam kontrol için anahtar. Her ikisi de birinci sınıf, her özellik ya modu ile çalışır.

AI token bütçeleri ve maliyet kontrolleri

Aylık token bütçeleri, per-conversation limitleri ve düşük denge uyarıları ayarlayın. Performa başına harcama yapın, iş alanı başına ve konuşma başına kesintiye uğrama maliyetlerin sert tavanlarla yapılmasını engeller.

Biletler ve yardım

Yerli bilet sistemi

Bölümler, öncelikler (düşü/orta / yüksek / acılar), statüler, SLA takip, iç notlar, müşteri yanıtlar, dosya ekleri ve konuya bağlı konuşmalar.

AI triage ve oto-reply

AI otomatik olarak bölüm ve öncelik tarafından gelen biletleri kaçırıyor. Güvenli bölümler için enable oto-reply for safe department. The AI drafts and send a response after a configuredurable gecikme (default: 2 minutes) so people can müdahale ilk önce.

E-posta ingestion

Posta kutusu (Gmail, IMAP veya sağlayıcıya özel) otomatik olarak gelen e-postalardan biletler oluşturmak için. Bilet bildirim e-postalara bilet thread güncellemek için Replies to ticket notification email update the ticket thread.

Bilet portalı gömülü

Web sitenizde müşteri odaklı bir bilet portalının sahibi olun. Müşteriler biletleri sunabilir, tarihlerini görebilir, açık biletlere cevap verebilir ve durumu kontrol edebilir, tüm markalı tasarıma.

Biletleri

Merge, tek bir konuya tekrar biletler getirdi. Merged biletleri [Merged] konu satırında gösterir. Tüm konuşma tarihi hayatta kalan bilette korunmuştur.

AI'ya dön

Bir insan ajanı bir biletin üzerinde çalıştıktan sonra, AI'nın otomatik olarak bu bilete geri dönmesine izin vermek için "Return to AI" kullanın. İnsan-eşem kısmı çözüldüğünde kullanışlıdır ancak müşteri AI’nın üstesinden gelebileceği soruları takip eder.

Copilot'un posta kutusu

AI-assisted bilet yönetimi inbox view. copilot yanıtları, konuşma tarihini anlatıyor ve öncelikli /bölüm atamalarını tavsiye ediyor ve bağlantılı platformlarda eylemleri yürütebilir.

Chat ve gerçek zamanlı destek

Mesaj kutusu

Gerçek zamanlı müşteri sohbet birleştirilmiş bir kutudan yönetilen. Tüm aktif konuşmaları, müşteri kimliklerini, konuşma tarihini ve AI önerilerini görün. Birden çok ajanlar bir konuşma üzerinde işbirliği yapabilir.

Proaktif sohbet kuralları

Ziyaretçinin davranışına göre sohbet mesajlarını tetikle: sayfadaki zaman, belirli URL ziyaret edildi, kaydırma derinliği, geri dönüş ziyaret sayısı, çıkış amacı veya özel olaylar. Örnek: 60 Fiyatlar sayfasında saniyeler.

Sohbet

Web sitenizde gömülü özel bir sohbet kutusu. AI sohbetini destekliyor, canlı ajan sohbeti, bilet teslimi, bilgi tabanı arama ve ziyaretçi kimliği. Reponsive, accessible, and brandable.

CSAT anket anketleri

Müşteri memnuniyeti puanlarını sohbet ve bilet etkileşimlerinden sonra toplayın. Tasarım anketleri kendi sorularınızı, derecelendirme ölçeklerinizi ve takip eden hızlıları. Sonuçlar takım performansına ve AI içgörülerlerine beslenir.

Post-chat e anket

Bir sohbet sona erdiğinde, bilinen bir e-posta ile ziyaretçileri, ailen şeylerin AI summary ile bir markalı posta alabilir ve tek tıkla "Was it easy?" Evet/Hayır. Bir kez şakada, her girişini imzalamış ve sonuç bölgedeki geri bildirim sayfalarında kendi sinyali olarak kabul edilebilir.

Geri bildirim kimlik döngüsü

Bir kişi taşıyan her geri bildirim kaynağı onları gösterir: isim, e-posta, tam müşteri yolculuğu ve CRM iletişimine bir tıkırlık E-kitap veya AI-draft gerçek tarihteki yanıtlarını verdi.

AI Yazmak

E-posta taslağı için ayrı AI yazısı asistanı, bilet cevapları, duyurular ve müşteri iletişim. Kendi hızlı ( sohbet beyni değil) profesyonel iş yazması için kullanın.

AI-İlk CRM

CRM Komutanlığı Merkezi

Tüm CRM durumunuzu gösteren tek bir ekran: Boru hattı değeri, önümüzdeki görevleri, risk fırsatları, ajan aktivitesi ve AI önerileri. CRM ev sayfası günlük başlangıç noktanızdır.

İletişim ve şirketler

Müşteri iletişimlerini tam profillerle yönetin: isim, e-posta, telefon, şirket, etiketler, yaşam döngüsü, konuşma tarihi, bilet tarihi, tarih satın almak ve özel alanlarda. B2B ilişki yönetimi için şirketlere bağlantı kurmak.

Anlaşmalar ve boru hattı yönetim

Görsel Kanban tarzı anlaşma kurulu özel aşamalarla. Sesleme noktaları, set değerleri, sahipleri, yakın tarihler atamak ve her aşamada boru hatları değerini görmek.

AI anlaşma koçluk

AI her anlaşmayı analiz eder ve koçluk sağlar: risk sinyalleri (gösteren sessiz, rakipler, bütçe endişeleri), bir sonraki en iyi tepki önerileri, olasılık kazanır ve takip zamanlamasını önerdi.

Tahminler ve raporlar

Boru hattı verilerine, tarihsel yakın fiyatlara ve hızlara dayanan gelir tahminleri. Raporlar, kaynak, dönüşüm oranları, ortalama anlaşma büyüklüğü ve satış döngüsü uzunluğu ile boru hattını içerir.

Araştırma ajansı (SDR)

Ziyaretçilerinizin verilerini, yönlendirme sinyalleri ve bağlantılı platform aktivitelerini tanımlayan potansiyel müşterileri tespit eden AI-güçlü bir umut. Hedefler ilk mesajları sunar ve puanlar kaliteye yol açar.

Takip et dizileri

Otomatik çoklu adım takip dizileri: e-posta, bekle, e-postalar, kontrol yanıtı, tırmanma. Yeni yollar için Define sıraları, duraklamalar, posta yönlendirme kampanyaları ve yeniden kesinti kampanyaları.

Yaşam döngüsü ve saklama

Müşteri yaşam döngüsü aşamalarını (lead, umut, müşteri, urned) otomatik geçişlerle takip edin. churn sinyalleri için saklama aracı monitörler ve müdahaleleri önerir.

Veri yöneticisi ajan

CRM verilerini sürekli temizleyen ve zenginleştiren AI ajanı: ilişkileri çözen, eksik alanları doldurun, e-postaları doğrular, şirket isimlerini standartlaştırır ve bayrakları sabit kayıtları.

CRM Build my CRM

Doğal dil CRM yapılandırması: satış sürecinizin neye benzediğini söyleyin ve boru hatları aşamalarınızı, özel alanlarınızı, şablonları ve otomasyon kurallarını inşa eder.

CRM sağlık kontrolü kontrol

CRM veri kalitenizin otomatik denetimi: tekrarlanan temaslar, bir sonraki adımlar olmadan anlaşmalar, dur boru hatları, eksik iletişim bilgileri ve verileri tamlık puanlama.

Güven Dialal

Her CRM AI ajanı için üç seviyeli bir özerk kontrol: Autopilot (AI bağımsız olarak hareket eder), Copilot (YZ, insan onaylar) ve Manual (Sadece kişiyi gözlemler). Aramayı eylem türü başına ayarlar ve değer eşine değer eşiği.

Dört AI ajanı

CRM dört uzman AI ajanını çalıştırıyor: Steward (data kalitesi), SDR (prospecting) ve Analist (önemli önleme ve içgörme ve anlayışlar). Her bir ajanın kendi Güven Dial ayarı var.

Kazımlar ve entegrasyonlar

Pre- built Linkss

Ready-to-use konektörleri için Shopify, WooCommerce BigCommerce, Magento 2, PrestaShop, OpenCart, osCommerce, WordPress, WHMCS Zendesk, Stripe, Amazon SES, Postmark, Resend, SendGrid, Mailgun, Gmail, IMAP, Slack, ve Google Business Profile. Her bir bağlantı platforma özel AI eylemleri, bilgi ve veri senkronizasyonu getiriyor.

Bağlayıcı Oluşturucu

Build custom connectors for any platform, no code, AI-assisted, or full code. The builder supports REST and GraphQL APIs, OAuth authorization code flow, webhook auto-registration with Stripe and simple signature schemes, pagination (offset, page, cursor, and link-header), list/error transforms, multi-action context, and marketplace packaging.

AI-assisted konektör yazarı

LinksBuilderAI, tarayıcılar inşa etmenize yardımcı olur: ne istediğinizi ve eylemleri önerir, talep handler ve haritaları API yanıtlar. İletişim doğrulama, paginasyon ve hata işleme otomatik olarak.

OAuth herhangi bir bağlantı için akır

Genric in-app OAuth Herhangi bir bağlantı ile çalışan yetki akışı. PKCE desteği, site-skop devlet yönetimi, otomatik token yenilemelerini tanımlar.OAuth parametreler ve parametreler OpsIQ Akışı idare eder.

Capability otobüsler (ortada genişleme)

Bağlantılar sadece platform eylemlerini eklemeyin. Onlar "büsler" yeteneği ile temel özellikleri güçleyebilirler. Bir bağlantı bir yetenek ilan eder (kalendar, zenginleştirme, CRM'de esign; Site Zekası'nda sıralama, Rank_data; ödeme_provider Ödemelerde; Mailbox'ta e-posta: video_meting in Commes) ve küçük yöntemi uygular; OpsIQ CapabilityRegistry ile keşfeder ve bunu UI'ye, Müşteriye 360 Zaman çizelgesi ve AI eylemleri. Birkaç konektörler, hiçbir kilitleme olmadan aynı yeteneği sunabilir. Bağlantılar / PLATFORM_CONNECT.md.

Pre-installed vs market tier

İki tiersden birinde canlılar. Ön yüklemeli konektörler (bağlantılar /) kutudan kayıt dışıdır, sadece anahtarsız referansa ve en çok kullanılan sağlayıcıya eğilin (örneğin Google Takvim,GmailGoogle Business Profile). Market konektörleri (marketplace_connectors/) kurulıncaya kadar keşfedilebilir, e.g. Microsoft365Takvim, Outlook, DocuSign,Stripe, GA4, SerpApi, Zoom. Her köprü bir pazar listesi bu yüzden UI ve AI "pazartan yükleme" (gerekli yükleme) bir yetenek hazır sağlayıcısı olmadığı zaman, asla kırık bir düğmeye sahip değildir.

© market pazar pazarı

Bağlantılarınızı takmak için OpsIQ Pazar. Paket bağlantıları profili ile.json Bilgi.json, iş akışları.json Ancak arşivler imzalayın. Market, çok kaynak faturası ile ücretsiz ve ücretli konektörleri destekler.

© imza

Tüm konektörler, tam doğrulama için kriptografik olarak imzalanır. Signing yükleme zamanında kontrol edilir. Güncellemelerden sonra tekrar imzalanmak için istifa_tüm_connectors aracını kullanın.

SmartLookup

Konnektör eylemleri için açıklayıcı karmaşık eşleme sistemi. Arama kuralları ve OpsIQ fuzzyScore ve smartRank algoritmalarını kullanarak kullanıcı sorgularını platform varlıklarla eşleştirir. Örnek: find_country("germ") Almanya ile eşleşir 88.9% Güven.

Eylem sözleşmeleri

General The GeneralOpsIQ APIHer kayıtlı yayınları yayımlarJSONCanlı toplam ve tam tip sözleşmeler için meta.actions kullanın; Bağlantı paketleri, birleşik Eylem yürütmesi aracılığıyla kendi satıcı eylemlerini ilan eder.

Ambalajli tarifler

Birden çok bağlantı eylemlerini ortak iş akışlarına birleştiren önceden inşa edilen iş tarifleri: "Yeni bir sipariş Shopify'da geldiğinde, bir bilet oluşturun, CRM'i güncelleyin ve bir Slack bildirim gönder."

Bilgi senkronizasyonu

Bağlantılar AI bilgi tabanına senkronize edilen bilgileri belirtir. Platform-spirleri, kurulum rehberlerini ve el bilgisi girişi olmadan AI'ya otomatik olarak erişim sağlar.

Geliştirici platformu

REST API

Adı : A named a name JSON API Her kayıtlı yönetici yöneticisi kapsar JSON Operasyon, birlikteAPI-key doğrulama, iş alanı izolasyonu, kapsamı, oran sınırlaması, idempotent yazıyor, OpenAPI ve üretilen bir Postman koleksiyonu.

Webhook'lar

Tüm büyük olaylar için ek gelen webhooks: siparişler, faturalar, abonelikler, biletler, sohbetler, yol açar, kullanıcı kayıtları ve kart terk eder. iş kuyruğu aracılığıyla birsen teslim, üst düzey geri dönüş, SSR koruma ve otomatik olarak başarısız olduktan sonra 15 ardına başarısızlıklar.

Webhook imza

Her outbound webhook, HMAC-SHA256 ile imzalar imzalandı. Webhook gerçekliğini sağlamak için son aldığınızda imzaları onaylayın.

SDK parçası

JavaScript SDK Kimlik çözünürlüğü, özel olay izleme, programmatik sohbet kontrolü ve sayfaya özgü konfigürasyon için takip öğesi için. Reaks, Vue, Next.js, WordPress, Shopify Ve statik HTML.

Plugins ve SDKs

Server-side SDKs ve ortak çerçeveler için eklentiler. WordPress Eklenti, WHMCS Modül ve genel PHP/Node.js entegrasyon kütüphaneleri.

API

Özel etkinlikler, geri dönüşinizden OpsIQ'a: satın almalar, işaretler, özellik kullanımı, hatalar veya herhangi bir iş olayı. Etkinlikler ziyaretçi zamanında görünür ve analitik ve AI bağlamına beslenir.

Tesirler aşçıbook

Olaylar tarafından tetiklenen otomatik iş akışları oluşturun: yeni bilet, sohbet başladı, ziyaretçi tespit edildi, anlaşma aşaması değişti veya özel bir olay. Tesadüf eylemleri yürütmek, webhooks göndermek, güncelleme kayıtları gönderin ya da ekibinize haber verin.

API oluşturucu

Visual API and webhook builder inside the admin. Configure endpoints, test requests, inspect responses, and debug integrations without leaving OpsIQ.

Takım ve yönetim

Rol tabanlı erişim kontrolü

Üç rol: Sahibi (tam erişim, faturalama, tehlike bölgesi), Full Admin (tüm işlemler billing ve tehlike alanı hariç), ve Agent (yalnızca bölümlere atanan birimlere, hiçbir ayar erişimine izin verilmiyor). Tüm hassas sayfalar rol tarafından sert bir şekilde kapatılıyor.

Takım performans pano

Sahibi ve Full Admin-sadece karar süreleri gösteren pano, iş yükü dağıtım, derinlik, kanal arızası, trend analizi, SLA uyumluluğu, CSAT ajan tarafından, yeniden fiyatlar, takım rollups ve en yoğun saatler.

Admin varlığı ve online takip

Yönetici navigasyonunda gerçek zamanlı kim-is-online widget. Kalpbeat tabanlı varlık algılama (The Real-time who-is -online widget in the admin navigation. Heartbeat-based entity detect (60- saniye ping, 300-İkinci genişleme, oto-prune After 120 Günler) Hangi yöneticilerin şu anda aktif ve hangi sayfalar üzerinde olduğunu görün.

Per-workspace ayarları

Her bağlantılı site (iş alanı) kendi AI yapılandırma, bağlantı ayarları, bilet departmanları, markalama ve operasyonel kurallara sahip olabilir. Küresel varsayılanlar, onları aşırı yüklemeyen iş alanları için cascade.

Çok site yönetimi

Birden fazla web sitesi bir OpsIQ admin. Her site kendi izleme parçaları, ziyaretçi verileri ve yapılandırma vardır. Anahtar siteleri arasında yönetici navigasyon.

E-posta şablonu sistemi

Tüm otomatik iletişim için kayıt odaklı e-posta şablonları: bilet bildirimleri, sohbet transkriptleri, e-postalar, parola sıfırlamaları ve sistem uyarıları. Edit HTML Canlı önizleme ile şablonlar, değişken çipler ({{customer_name}}, {{ticket_id}}) ve küresel düzen kontrolü.

İthalat ve ihracat

İthalat kontakları, biletler ve CSV/JSON. Export ziyaretçi verileri, analitik raporlar ve CRM kayıtları. Sistem arasında geçiş için veri portability.

Güvenlik, uyumluluk ve operasyonlar

Enterprise. SSO

OIDC (OpenID Connect) tek bir işaret-on tam zamanlı olarak: keşif, yazarize, çağrılı, JWKS imza doğrulama, kullanıcıinfo, alan izin listeleme, JIT düzenleme ve durum korumaları. SAML yapılandırma desteği.

GDPR ve veri uyumluluk

Yapılı DSAR (Data Subject Access Request) işleme: Tüm sistemlerde müşteri verilerini ihraç etmek ve silmek. İletişim seviyesindeki veri toplama seansları, biletleri, sohbetler, CRM kayıtları ve e-posta logları. Consent management and keep policies.

IP bloke ve brute-force koruma

Blok spesifik IPs Sitenize veya yöneticisine erişmekten veya aralıklar. yapılandırılabilir başarısız giriş denemelerinden sonra otomatik kilitlenme. Başarısız giriş logunu IP, zamantamp ve kullanıcı ajanı.

HSTS ve güvenlik başlıkları

HTTP Strict Transport Security, Permissions-Policy Titles ve güvenli kurabiye yapılandırması. Kendi barındırılan dağıtımlar CSP başlıklarını sunucu konfigürasyonu aracılığıyla ekleyebilir.

Outbound webhook sertleştirme

SSRIYLEMLER: SÜŞÜNCÜSÜye/Seçimadata IP aralıklar. Async teslimat uygulamanızı engellemeden yavaş uç noktaları engeller. Auto-disable After 15 İkinci ardışık başarısızlıklar, kaynak kaybının ölü uç noktalarına engel olmasını engeller.

Workspace izolasyon

İş alanları arasında veri izolasyonu. Ziyaretçiler, biletler, sohbetler, CRM kayıtları ve AI konuşmaları iş alanına kapsamıştırılır. Cross-workspace data sızıntıları sorgu katmanında engellenir.

Billing çevrim yönetimi

Aylık, çeyrek olarak yarı-annual, yıl boyunca, biennial ve ömür boyu faturalama döngüleri için Para normalizasyonu. Çok yeterli ağ geçidi için para makbulu üzerine ödeme bildirimi doğru gelir raporlaması için.

Cron ve planlanan otomasyon

Planlanan görevler için yerleşik cron sistemi: rapor nesli, veri temizlenme, abonelik yenilemeleri, AI eğitim güncellemeler, bağlantı senkronizasyonları ve webhook retries. Health diagnosiss with warning indicator.

Data keep policies politikaları

Uzun ziyaretçi seanslarının, sohbet transkriptleri, AI konuşma tarihi ve etkinlik girişlerinin nasıl tutulması gerektiğini yapılandırın. depolamayı yönetmek ve saklama politikalarına uymak için yaşlı verilerin otomatik olarak temizlenmesi.

Tanılar ve sağlık

Sistem sağlık panoları, veritabanı bağlantılarını, AI sağlayıcısı statüsünü, bağlayıcı sağlığı, webhook teslimat oranları ve depolama kullanımı. konfigürasyon sorunları ve performans şişeleri için Uyarılar.

Kim OpsIQ is for

E-ticaret mağazaları

Mağazalar

Satın almak için her ziyaretçiyi takip edin. AI cevabı "Benim düzenim nerede?" canlı Shopify/WooCommerce/ Büyük Ticaret verileri. AI otomatik olarak ile biletleri yönetin. Bir anlaşma hattını topluca ve B2B trafik kaynaklarına ve kampanyalara taşıyın.

SaaS ve yazılım şirketleri

SaaS

Deneme kayıtlarını ve oturum tekrarlamaları ile özelliklerin kabulünü izleyin. Ne tür belge sayfalarının dönüştürüldüğünü takip edin. API Üyelik gelirlerinizi ve genişleme anlaşmalarınızı CRM'de yönetin. Faturalandırma platformunuzu (Stripe, ) WHMCS Gerçek zamanlı MRR takip için. CRM yaşam döngüsü ajanını kullanarak kaybı tespit edin ve önleyin.

Ajanslar ve serbestlikler

Ajans Organizasyonu

Müşterilere beyaz etiketli ve destek portalları sunmak. Track, birden fazla müşteri sitesinden bir yöneticiye yol açıyor. CRM borusunu kullanarak potansiyelleri yönetmek ve proje yönlendirmek için kullanın. Inspert markalı SEO raporları Site Intelligence. Resell market konektörleri değer-add hizmetleri olarak kullanın.

Hosting ve altyapı

Barındırma

Deep WHMCS integration with 80+ AI actions for order lookup, service management, DNS, and provisioning. Auto-reply to common hosting questions using knowledge base articles. Track server status page engagement. Manage technical support tickets with AI triage. Use the billing cycle ladder for monthly through lifetime hosting plans.

Destek-heavy işletmeler

Destek Desteği Destek Desteği Destek Desteği

Karşılaştırmalı 40-70% of tekrarlayan sorular AI sohbetini bilgi tabanında temel alanla. doğru bölüm için rota biletleri AI triage ile takip eden ekip performansına doğrulayın. SLA uyumluluğu ve CSAT, profesyonel cevap taslağı için yazı AI'yı kullanın.

Pazarlama ve SEO takımları

Pazarlama

Full Site Intelligence suite: taramalar, teknik SEO denetimleri, içerik analizi, SERP sıralaması, anahtar kelime araştırmaları, backlink izleme ve yerel SEO ağı. Google Business Profile management. Scheduled white-label müşterileri için raporlar. A/B testleri tüm kanallarda yapılan bir takip widget.

Solo kurucuları ve küçük takımlar

Başlangıçlar

Sadece takip ve sohbetle başlayın, eklemek için ücretsiz. Sonra destek hacmi aldığınızda biletler ekleyin. satmaya başladığınızda CRM'de dön. Connect platformlarına bunları kabul ettiğinizde. OpsIQ Bir kişiden ölçekler her şeyi bir kişiye yapar 50- RBAC, bölümler ve per-agent performans izleme ekibi.

Kurumsal ve çok markalı

Kurumsal

Enterprise SSO with OIDC for centralized authentication. Multi-workspace isolation for separate brands or divisions. Per-workspace AI configuration with different providers and models. Custom connector development with marketplace distribution. Audit trails, GDPR compliance tools, and data retention policies.

Ne OpsIQ değiştirir

Google Analytics + Hotjar + Muhtemelen

Ziyaretçi izleme, seans yeniden oynama, sayfa sıralamaları, geo intelligence, niyet eğlenceleri, dönüşüm ataması, olaylar, A/B deneyleri ve JS hata takip, tüm gizlilik dostu, tek bir platformda.

Intercom + Drift + Tidio

AI-güçlü müşteri bilgi zemining, multi-provider AI desteği ile sohbet eder, insanlara otomatik olarak otomatik sohbet kuralları, konuşma tarihi, CSAT anketleri ve sohbet yaratımı sohbetten.

Zendesk + Freshdesk+ Yardım

Bölümler, öncelikler, SLA, AI triage, otomatik olarak yapılandırılabilir gecikme, e-posta kesintisi, bilet gömülüyor, bileti para Birleşik Devletleri, box copilot ve AI kapasitesine geri dön.

HubSpot + Pipedrive

AI-ilk CRM dört uzman AI ajan (Steward, SDR, Retention, Analist), Güven Dial Özerk kontrol, boru hattı, koçluk yapmak, tahmin etmek, diziler, yaşam döngüsü yönetimi ve doğal dil CRM yapılandırması.

Ahrefs + SEMrush + Moz

Site Zekası otomatik taramalarla, teknik SEO denetimleri, içerik analizi, AI arama, SERP sıralama takip, anahtar kelime araştırma, backlink analizi, yerel SEO ızgara ve planlanan beyaz-label raporları.

Zapier + Özel Ortaware

Bağlantı SDK ile 25+ Önden inşa edilmiş bağlantı noktaları, Bağlantı Noktası Yaratıcısı (kodsuz/YAY-yardımlı/tam kod), OAuth akış, webhook otomatik kayıt, yalnızca ilgili bağlantı kurulu olduğunda yürütülen, etkinleştirilmiş, konfigüre edilmiş ve onaylanmış olan bağlantı elemanı eylem tanımlarının büyük bir kataloğu, SmartLookup, marketplace ve imzalı paketler.

Google Business Profile yöneticisi

Full GBP konektörü: inceleme yönetimi, yayın yayınlama, Q &A yönetim, fotoğraf yüklemeleri, iş bilgi senkronizasyonu, içgörüler takip ve AI-güçlü inceleme yanıtları, tüm OpsIQ.

Ayrı e-posta şablonu araçları

Kayıt odaklı e-posta şablonları görsel editör, canlı önizleme, değişken cips, küresel düzen kontrolü ve tüm otomatik iletişim için per-event özelleştirme.

Takım yönetim panoları

Yapılı ekip performansı: karar süreleri, iş yükü, SLA uyumluluğu, CSAT ajan tarafından yeniden yapılan fiyatlar, en yoğun saatler, gerçek zamanlı varlık takip ve per-department arızaları.

GDPR uyumluluk araçları

Yerli DSAR işleme, tüm sistemlerde veri çağımlaması, onay yönetimi, saklama politikaları ve denetim yolları, platforma inşa edilmedi, üzerinde durulmadı.

İki baskı

Konuk dağıtımı

OpsIQ yönetilen altyapı üzerinde çalışır. Ürün operasyonu aynı; altyapı, güncellemeler ve yedekler barındırma operatörü tarafından ele alınır. Bu elbook belgeleri the host operator.OpsIQ Pazarlama veya ticari hesap akışlarından ziyade runtime.

Kendi barındırılan modül

Install OpsIQ on your own server for full control over data, branding, updates, and integrations. Requires PHP 8.4+, MySQL 5.7+ or MariaDB 10.3+, HTTPS, and the OpsIQ unified cron. Supports WHMCS integration as an addon module. Full data sovereignty.

Önerilen okuma siparişi

1
Hızlı başlangıç

Takip etmek için 30- dakikalık kurulum kılavuzunu takip edin, sohbet edin ve web sitenizde çalışan temel AI'yı izleyin.

2
Dashboard ve analitik

Ziyaretçi verilerini nasıl okuyacağınızı öğrenin, seans tekrar oynatın, yolların belirlenmesi ve trafik modellerini anlamanız.

3
Site Zekası

İlk SEO taramanızı çalıştırın, teknik sağlığınızı kontrol edin ve hedef anahtar kelimelerinizi takip edin.

4
Biletler ve destek

Bölümler kurmak, otomatik olarak AI ile yapılandırın ve e-postayı enjekte etmek için eğitin ve AI'nızı ortak soruları ele almak için trenle.

5
CRM

Organize kontaklar, boru hattınızı inşa edin, AI ajanları yapılandırın, Trust Dial seviyelerini ayarlayın ve AI antrenörünüzü size bırakın.

6
Bağlantılar ve geliştirici araçları

E-ticaret / milyar dolarlık platformunuzu bağlayın, özel konektörler inşa edin ve REST API ile entegre olun.

💡
Yeni to New to New To New OpsIQ Aşağıdaki Hızlı Başlangıç rehberi ile başlayın. Aşağıda çalışan temel AI sohbetini takip edebilir ve geliştirebilirsiniz 30 dakikalar.
Buraya başlayın

Hızlı başlangıç 30 dakika

OpsIQ koşmak için bu adımları izleyin. Her adım önceki bir tarafta inşa eder. Sonunda ziyaretçi takip, AI sohbet ve temel bilet desteği alacaksınız.

Kurulum
Hızlı başlangıç kontrol listesiBir rehber kontrol listesi, widget install, platform bağlantısı, AI eğitimi, takım davet ve devam ediyor, bir 60 % ilerleme bar ile.Başla.setupOpsIQ widget'ı yükleyinBitti.Bir platforma bağlan (WHMCS, Shopify...)Bitti.AI'nızı içerikinizde TrenleBitti.Takımını Davet EtCheck ve canlı seyahatKurulum ilerlemesi3 of 5 · 60%1STEP 1Widget'ı yükleyin2STEP 2Connect & tren AI3STEP 3Yayına davet et
30- dakika yolu: widget'ı kurmak, bir platforma bağlanmak, AI’nızı trenle, takımı davet edin, sonra canlı geçin.

30-minute kurulum

1
Lisansınızı etkinleştirin

Lisans anahtarını OpsIQ yöneticisine girin. Ayarlara git, bu yükleme için sağlanan lisans anahtarı girin ve Activate'ye tıklayın. Yeşil "Active" kötüge görmelisin.

2
İş kimliğinizi ayarla

Ayarlarınıza gidin ve iş adınıza, endüstriye, zaman bölgesine, varsayılan para birimine ve destek saatlere kadar doldurun. Bu bilgiler müşteri sorularına cevap verirken AI tarafından ve zaman alanı-aware raporları için analitik olarak kullanılır.

3
Bir AI sağlayıcı seçin

AI Konsülasyonuna gidin ve sağlayıcınızı seçin. Seçenekler: Claude (İngilizce).Anthropic), GPT-4o (OpenAI), Gemini (Google) veya Grok (xAI). API Kendi anahtarını kullanıyorsanız veya planınızda mevcut olan Yönetilen AI'yı kullanın.Demek için "Test bağlantısı" tıklayın.

4
Takip widget'ı yükleyin

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
platformunuzu bağlayın

Eğer kullanırsanız kullanılır Shopify, WooCommerce, WHMCS Ayrıca, ya da başka bir desteklenen platform, platformunuzu bulmak ve Test Bağlantısı'na tıklayın. Bu, veri, müşteri profillerini ve destek bağlamını sipariş etmek için AI erişimi sağlar.

6
Takımını Davet Et

Takıma gidin, Invite'ye tıklayın, e-postalarına ve rollerine girin (Owner, Full Admin veya Agent). Ajanslar onları sadece size atamanız gereken bölümlere erişebilirler. Sahipleri ve Tam Yöneticileri her şeyi görebilirler.

En hızlı olası yol (5 dakika)

Adım 1: Widget

Connected Sitelerden parçalar kopyalayın ve web sitenizde yapıştırın. Bu, hemen takip etmenizi sağlar.

Adım 2: Enable AI

AI Konsülasyonuna git, bir sağlayıcı seçin ve anahtarınıza girin ve kurtar. AI sohbet artık web sitenizde aktiftir.

Bitti.

Artık ziyaretçi izleme ve AI sohbetine sahipsiniz. Biletleri, CRM'i ve daha sonra konektörleri ekleyebilirsiniz.

Day 2: Bunu kullanışlı hale getirin

Bilgi Ekle bilgi Add information

Bilgi Üssü'ne gidin ve 5-10 makalelerinizi en yaygın sorularınızla ilgili olarak ekleyin. AI, müşterileri doğru bir şekilde cevaplamak için bunları kullanır.

Create department

Biletlere gidin ve en az 2 bölümlerini (örneğin, "Satış" ve "Demir". Her birine takım üyeleri olarak katılın.

AI'nızı yazın

AI Eğitimine gidin ve bir müşteri AI'yı işinizi, tonu ve escalation kurallarını tarif eden bir şekilde yaz.

Bir konuşma test et

Web sitenizi özel bir tarayıcıda açın ve AI ile müşteri olarak sohbet edin. Bu cevaplar doğru ve ton haklı.

Hafta 1: Operasyonlarınızı Yapın

Connect e-posta

Bir posta kutusu (Gmail, IMAP veya bir sağlayıcı konektörü) kurmak böylece müşteri e-postaları otomatik olarak biletler oluşturur.

Otomatik olarak ayarlanıyor

Güvenli bölümler için enable bilet otomatik olarak. Bir 2- dakika gecikmeyi ayarlayın, böylece insanlar ilk müdahale edebilir.

Analiz analitik

Dashboard günlük kontrol edin. ziyaretçi say, geri dönüşüm, üst sayfalar ve takip bağlı olup satışlara bakın.

CRM'inizi başlatın

Açık AI CRM ve OpsIQ bağlantılarını bağlı platformlarınızdan inceleme. Boru hattını gözden geçirin.

Ay 1: Optimize

AI tarihini gözden geçirin

AI History haftalık olarak kontrol edin. yanlış cevaplara bakın, eksik sorular ve bilgi eklemek için fırsatlar.

Proaktif kurallar ekleyin

Kural oluşturun: Bir ziyaretçi 60+ saniyeler için fiyat sayfasındaysa, yardıma ihtiyaç duyduklarını sormaktan bir sohbet mesajı gösterin.

Bir bağlantı kurmak

yerleşik bir bağlantıya sahip olmayan bir platform kullanıyorsanız, bir tane oluşturmak için File Builder kullanın.

Webhooks'u kur

OpsIQ'ı bilet, sohbet ve satış olayları için çıkan webhooklar kullanarak iç araçlarınıza bağlayın.

AI'yı atlayabilir miyim ve sadece izleme kullanabilir miyim?+

Evet. AI sağlayıcısı isteğe bağlı. OpsIQ, AI olmadan saf bir analitik ve biletleme platformu olarak çalışır. Hazır olduğunuzda AI'yı daha sonra etkinleştirebilirsiniz.

Bağlantıları atlayabilir ve daha sonra ekleyebilir miyim?+

Evet. Oteller AI'yı platforma özgü verilerle zenginleştiriyor, ancak OpsIQ onları takip etmeye ve sohbet etmeye başlayın, sonra ihtiyaç duyduklarında platformları bağlantıya sokuyor.

Henüz bir web sitesine sahip değilsem ne olur?+

Hala biletler için OpsIQ kullanabilirsiniz, CRM ve takım işbirliği. Takip widget isteğe bağlı. Web siteniz hazır olduğunda ekle.

Widget doğru olarak yüklü olup olmadığını nasıl biliyorum?+

Web sitenizi özel/incognito tarayıcılarında ziyaret edin. Sonra kontrol et OpsIQ Canlı Feed. Ziyaretinizin içeride görünmesi gerekir 15 saniyeler, kontrol et: (1(Resulüm doğru bir şekilde ortaya çıktı,)2) site anahtarı doğru, (3) ad blokers veya CSP başlıkları senaryoyu engelliyor.

Buraya başlayın

Tamam ürün haritası

OpsIQ bir özellik değildir. Bir operatör yöneticisi, bir web sitesi öğesi, bir AI destek katmanı, bir bilet / yardım sistemi, dört AI ajanları ile dolu CRM, bir Site istihbarat paketi, bir bağlantı platformu pazarla ve geliştirici yüzeyi içeren her bileşendir.

Operatör admin

Dashboard, canlı besleme, ziyaretçi girişi, seanslar, oturum yeniden oynat, üst sayfalar, geo istihbarat, niyet eğlence, olaylar log, A /B deneyleri, JS hatası izleme, satış ve dönüşümler, yol açıyor AI CRM (command merkezi, kontaklar, şirketler, anlaşmalar, boru hatları, anlaşma, tahminler, keşifler, dizileri, yaşam döngüsü, veri steward, CRM'imi inşa et, CRM sağlık, CRM API), biletler, sohbet inbox, proaktif kurallar, CSAT anketleri, e-posta taslağı, posta kutuları, AI yapılandırması, AI ayarlarını, eğitimlerini, sanal makinelerinizi, bilgilendiricileri, sitelerimizi, bilgilerimi yapılandırır.

Müşteri-yüz yüzeyleri

Web izleme widget (analytics beacon + sohbet + bilet gömülü + bilgi tabanı arama), müşteri AI sohbet, bilet gönderme portal, ziyaretçi kimlik token kullanım, dosya yüklemeleri, CSAT anket widget ve müşteri odaklı yardım merkezi.

AI-İlk CRM

Komut merkezi, temaslar, şirketler, anlaşmalar, sürüklenme kurulu, AI anlaşma antrenörü (risk sinyalleri, bir sonraki en iyi tepki, olasılık kazanma), gelir tahmini, umut verici ajan (SDR) , otomatik takip dizileri, yaşam döngüsü ve tutma yönetimi, veri yönlendirmesi, Analist), CRM (doğal dil kurulumu), CRM yapılandırması, CRM sağlık kontrolü, Trust Dial (Autopilot/Copilot / Manual per agent), dört uzman (Steward, SDR, Retention, Analisti), ve CRM) API Webhooks ile.

Site Zekası süit

Otomatik site taramaları, teknik SEO denetimi ( hızlı, mobil, Core Web Vitals, SSL, yönlendirmeler, yapılandırılmış veriler), içerik denetimi (word count, readability, anahtar kelime yoğunluğu, başlık yapısı), AI destekli semantic arama, SERP sıralaması motorlarda takip etmek, fırsat puanlamaları, backlink analizi ve izleme ile anahtar kelimeler, Google Business Profile senkronizasyonu (öneticiler, mesajlar, Q &A, fotoğraflar, içgörüler), planlanan raporlar (gün/haftada) ve beyaz-labelkili / ay boyunca) PDF Ajanslar için çıktı.

AI ve otomasyon

Müşteri AI sohbet (multi-provider: Claude, GPT-4o, Gemini Grok), admin AI asistanı, AI bilgisi zemining, yapılandırılabilir geri dönüşümlü, per-workspace AI yapılandırması ile otomatik eloff, AI ve yönetilen AI ve BYOK modlar, token bütçeler ve maliyet kontrolleri, AI tarihi denetim izi, AI içgörüler analizi, bilet AI triage, bilet otomatik olarak gecikme ile, AI (separate hızlı), ve admin inbox copilot.

Kazımlar ve entegrasyonlar

25+ önceden inşa edilmiş konektörler (Shopify, WooCommerce BigCommerce, Magento2, PrestaShop, OpenCart, osCommerce, WordPress, WHMCS Zendesk, Stripe, Amazon SES, Postmark, Resend, SendGrid, Mailgun, Gmail, IMAP, Slack, Google Business Profile),© Builder (no-code/AI-assisted /full-code) OAuth PKCE ile bağlantı noktası ücretli dağıtım, bağlayıcı imza ve doğrulama, SmartBakup fuzzy eşleştirme, erişilebilirliği olan HTTP eylemi tanımlarının büyük bir katalogu, yüklemeye, yapılandırmaya ve geçerliliğe bağlı olarak bilgi senkronizasyonuna ve iş tariflerine bağlıdır.

Geliştirici platformu

RESTAPI(visitors, olaylar, biletler, kontaklar, ayarlar, konektörler), OpenAPI spec,API Anahtar yönetimi, internethooksları (birinci, imzalanmış, yeniden beslenmelenmiş, SSR-guarded, auto-disable), EtkinliklerAPI Özel etkinlik için ingestion, widget SDKKimlik kararı ile, aşçılık kitabını tetikler, aksiyon sözleşmeleri, bağlayıcı SDK, market paketleme, sunucu-side SDKs (PHP, Node.js) WordPress Eklenti ve WHMCS Modül.

Ayarlar ve operasyonlar

İş kimliği, iş alanı için AI konfigürasyonu, izleme ayarları, güvenlik (HSTS, Permissions-Policy, IP bloke, brute-force koruma), RBAC (Owner/Full Admin / Agent), takım yönetimi ve davetler, ekip performansı panoları, yönetici takipleri, e-posta şablonu sistemi (bölgeci, görsel editörü, değişken cips), anket tasarımcısı, alan bilgisi, bilet yapılandırması, markalama, veri tutma politikaları, faturalandırma yönetimi (ayda)

Güvenlik ve uyumluluk

Enterprise SSO (OIDC with JWKS verification, JIT provisioning), SAML configuration, GDPR/DSAR handling (export and delete across all systems), data erasure per contact, consent management, workspace isolation (strict query-layer scoping), audit trails, failed login tracking, IP blocking, outbound webhook SSRF guard, and data retention policies.

Sağlayıcı köprü

Yönetilen AI proxied through OpsIQ sağlayıcı sağlayıcısı URL Site Zeka sağlayıcısı, lisans doğrulama, sağlık raporları, PDF Formlama ve veri ihracatı, tüm yapılandırılan sağlayıcı uç noktası aracılığıyla rotalanmış, doğrudan satıcı değil API sunucunuzdan çağrılar.

Her yönetici sayfası

Gösterge Paneli

Çekirdek

Günlük komut merkezi: trafik genel bakışı, canlı ziyaretçi sayısı, satış özeti, kuyruk derinliğini destekler, AI aktivite uyarıları ve hızlı aksiyon kısayolları.

Canlı yem

Analiz

Gerçek zamanlı ziyaretçi akışı: sayfa görüşleri, sohbet başlar, form teklifleri ve niyet sinyalleri ülke ile her birkaç saniyeyi günceller, cihaz ve referrer filtreler.

Ziyaretçi Girişi

Analiz

Tamam ziyaret kayıtları: cihaz, tarayıcı, OS, ülke, şehir, referrer, UTM params, iniş sayfası, kimlik ve tam sayfa-görü tarihi.

Oturumlar

Analiz

Yolculuğun gruplandırılması: Sayfa akışı, sayfadaki zaman, derin derinlik, dönüşüm yolu ve her ziyaretçi oturumu için çıkış sayfası.

Oturum tekrarları

Analiz

Zamanlı yakalama olayları geri döndürür: fare hareketi, tıklamalar, kaydıraklar, sayfa geçişleri ve UX tanısı için form etkileşimleri.

Top sayfaları

Analiz

Sayfa performans sıralaması: ziyaretler, zaman, düşüş hızı, dönüşümler, etkileşimler ve trend yönü.

Geo zeka

Analiz

Coğrafi raporlar: haritalar, cihaz dağıtımı, tarayıcı payı, trafik kaynakları ve piyasa penetrasyonu ile ülke/şehir arızası.

Niye eğlenceli

Analiz

Davranışsal niyet takip: fiyatlandırma ziyaretleri, geri dönüş frekansı, doc tarama, etkileşimler ve dönüşüm olasılığı ile özel sinyaller.

Etkinlikler günlük

Analiz

Aramak etkinlik tarihi: sayfa görüşleri, özel olaylar, sohbetler, satın almalar, tam metadata ve filtreleme ile form teklifleri.

A/B deneyleri

Analiz

Split testi: varyantlar, tümocate trafiği oluşturmak, hedefler tanımlamak ve kazananları ilan etmek, tüm OpsIQ'dan.

JS hataları

Analiz

Frontend hatası yakalama: mesajlar, yığın izlerini, etkilenen tarayıcılar, frekansları, etkilenen sayfaları ve trend takip.

Satış

Satış

Gelir panosu: siparişler, yenilemeler, geri ödemeler, kaynak tarafından alıntılar, kampanya performansı, dönem karşılaştırması ve trend analizi.

Kurşunlar

Satış

Lead management: puanlama, kaynak ataması, CRM durumu, iletişim detayları, davranışsal sinyaller ve boru hatları.

AI CRM

CRM

Full CRM: komuta merkezi, kontaklar, şirketler, anlaşmalar, boru hattı, koçluk, tahminler, umutlu, sıraları, yaşam döngüsü, veri yönlendirmesi ve sağlık.

Bilet biletleri Bilet Biletleri Bilet

Destek Desteği Destek Desteği Destek Desteği

Destek inbox: Bölümler, öncelikler, SLA takip, AI triage, oto-reply, iç notlar, dosya ekleri, parating ve durum yönetimi.

Mesaj kutusu

Destek Desteği Destek Desteği Destek Desteği

Canlı konuşmalar: AI ve insan sohbet, eloff, işbirliği, konuşma tarihi, müşteri kimliği ve CSAT koleksiyonu.

E-posta taslakları

Destek Desteği Destek Desteği Destek Desteği

E-posta yönetimi: biletlere gelen posta, AI-assisted cevap kompozisyonu, şablon seçimi ve posta kutusu yapılandırmasını.

AI yapılandır

- Evet.

Sağlayıcı kurulumu: Claude/GPT-4o /Gemini/Grok seçin, API anahtar girin veya AI'yı yönetilen model, sıcaklık ve çalışma alanı başına bütçeler.

AI eğitim

- Evet.

Prompt yazar: müşteri-ışı ve yönetici-okuyucu, escalation kuralları, ton yönergeleri, yasak konular ve sınır yapılandırması.

AI tarihi

- Evet.

Konuşma denetimi: tam istek/response logları, token kullanımı, konuşma maliyeti, sağlayıcı, model versiyonu ve karar sonucu.

Yapay zeka görüşleri

- Evet.

Desen analizi: ortak sorular, karar oranları, eloff frekansı, konuyla tatmin ve eğitim boşlukları tespit.

Bilgi tabanı

- Evet.

AI eğitim içeriği: makaleler, SSS girişleri, ürün docs, bağlantı bilgisi ve özel girişler. Semantic ve anahtar kelime arama AI zemining için.

Bağlayıcılar

Entegrasyonlar

Bütünleme merkezi: Bağlantılar, sağlık durumu, eylem envanteri, credential management, market browser ve© Builder.

Bağlantılı siteler

Ayarlar

Site yönetimi: takip etmek, site anahtar, widget yapılandırması, alan ayarları ve per-site iş alanı izolasyonu.

Takım Ekibi

Ayarlar

Kullanıcı yönetimi: üyeleri davet et, rolleri (Owner/Full Admin / Agent), bölüm erişimini ayarlayın ve izinleri yönetin.

Takım performansı

Ayarlar

Ops metrics: Karar süreleri, iş yükü, SLA uyumluluğu, CSAT ajan tarafından yeniden fiyatlar, en yoğun saatler ve trend analizi.

Ayarlar

Ayarlar

Yapılandırma: iş kimliği, AI kurulumu, takip, güvenlik, markalama, saklama, e-posta şablonları, faturalama, ithalat / ihracat, tanı ve tehlike bölgesi.

Lisans

Ayarlar

Plan yönetimi: lisans durumu, plan özellikleri, kullanım ölçümleri, yenileme tarihi ve yükseltme / sürüm seçenekleri.

Buraya başlayın

Yöncülük

Gemi yolculuğu, bir çalışma alanına yeni bir yükleme döndürür OpsIQ iş alanı ve ilerlemeyi kaybetmeden ayrılabilir ve yeniden başlayabilir.

Ürün ekran ekranı
GirişOnboarding her bir kurulum alanını, mevcut durumunu ve tamamlamak için sonraki eylemi gösteriyor.GirişİşspacePROGRESS60%COMPLETED6SONRAKİWidgetLIVE ÇALIŞMASPACELisansÜrün lisansının Geçerliliğini GeçerlileştirmekBitti.AI sağlayıcıSağlayıcı seçin ve anahtar testiBitti.Markaİş kimliği ve tonBitti.Web Sitesi Web Site Web SitesiSite ekleyin ve widgetSıradaki1COMPLETE BASICSLisans, marka, AI2CONNECT DATASite ve Link3VERIFY LAUNCHTakım, e-posta, çekler
Onboarding her bir kurulum alanını, mevcut durumunu ve tamamlamak için sonraki eylemi gösteriyor.

Önerilen dizin

  1. Lisans: Lisansı doğrulayın ve iş alanını onaylayın.
  2. AI sağlayıcısı: Sağlayıcı / model seçin, bilgi alın ve bağlantı testini çalıştırın. AI başlangıçta analitik ve biletleri kullanacaksa atılabilir.
  3. İş kimliği: Adı, endüstri, açıklama, müşteri odaklı ton ve marka detayları widget ve AI tarafından kullanılan.
  4. Linkler: OpsIQ'ın siparişlere, müşterilere, biletlere, e-postaya veya diğer platform bağlamına ihtiyaç duyduğu en az bir dış platformu etkinleştirin.
  5. Site ve widget: Site / iş alanı oluşturmak, siteyi anahtar kopyalayın ve Canlı Feed'te özel bir tarayıcı ziyaretini doğrulayın.
  6. Takım ve yönlendirme: Yöneticileri / faslar, bölümler oluşturun, e-posta yönlendirme ve bildirim tercihlerini onaylayın.
  7. Go-Live checks: Bir bilet, bağlantı senkronizasyonu, cron, dışa dönük e-posta, webhooks ve güvenlik başlıkları.

Yolculuğun mağazaları iş alanı başına tamamlanmak için geri dönülmesi, yeniden başlatmaya zorlamaktan ziyade adımları tamamlamalıdır.

Buraya başlayın

Admin navigasyon ve izinler

OpsIQ sidebar izin-aware. Bu harita her işletme alanının nerede yaşadığını ve neden bir sayfanın her yöneticiye görünür olabileceğini açıklıyor.

Ürün ekran ekranı
OpsIQ navigasyonYanbar grupları OpsIQ iş alanı ile; bireysel bağlantılar sadece mevcut rolün onları kullanabileceğinde görünür.OpsIQ navigasyonİşspaceGROUPS8Yokİzin bazlıSEARCHMevcut kullanılabilirLIVE ÇALIŞMASPACEDestek Desteği Destek Desteği Destek DesteğiBiletler, e-posta, CSAT, bilgiCRMİletişim, boru hattı, anlaşmalar, umutOtomasyonİş akışları, kurallar, hedeflerGüvenlik ve GizlilikGenel olarak, denetim, onay, bloklarYönetici1PICK A GROUPYanbar'ı eşleştirin2CHECK ROLEGizli yollarla sınırlı3USE PAGE HELPEşleme bölümü açın
Yanbar grupları OpsIQ iş alanı ile; bireysel bağlantılar sadece mevcut rolün onları kullanabileceğinde görünür.
Destek Desteği Destek Desteği Destek Desteği

Biletler, ekip e-posta platformu, CSAT, Yardım Merkezi ve sohbetbot akışları.

CRM

Günlük satış yüzeyleri: CRM Home, Komut Merkezi, kontaklar, boru hatları, tahminler, yaşam döngüsü, umutlu, segmentler, liderboard, onaylar, veri yönlendirmesi, büyüme araçları ve aktivite akışı.

Otomasyon

Olay odaklı akışlar, yaşam döngüsü kuralları ve dönüşüm hedefleri.

Pazarlama

Outreach, proaktif mesajlar, duyurular, Promosyon Stüdyo, Survey Studio, kampanyaları ve rehberlik turlarını zorladı.

Analiz

İlk rapor yüzeyler – Analytics Hub, AI insights, satışlar, müşteriler, yol göstericiler, A/B testleri, seans tekrar oynat, özel panolar ve planlanan raporlar - ham ziyaretçi ile, oturum, sayfa, coğrafya ve olay girişleri bir Raw Data sub-bölümte.

Standalone sayfalar

Site Zekası, Takım Performansı ve Geri Bildirim doğrudan giriş olarak gruplar dışında oturur.

Entegrasyonlar

Bağlantılar, eylemler ve tetikleyiciler, posta kutuları, taslaklar, e-posta ayarları, inbound endpoints, outbound webhooks and API anahtarları.

Güvenlik ve Gizlilik

Security overview, privacy and compliance, cookie consent, audit activity, failed logins, blocked IPs and JavaScript errors.

Ayarlar

İş Alanı temelleri (genel, ekip, siteler, diller), sonra çökemez alt bölümler: AI Brain (instructions, konfigürasyon, değerlendirme, tarih) CRM Kurulum (builder, özel alanlar, puanlamalar, sağlık), Data & Health (diagnostics, ihracat) ve Başlayın (onlama, yardım).

Sayfalar açık olamaz bir rol kenar çubuğundan gizlenir. Mevcut plan, bir bar ile görünür kalmak dahil değildir Yükseltin etiket ve bir in-app yükseltme ekranı açın.

Doğrudan rotalar hala sunucunun tarafını kontrol ediyor. Bir yanbar bağlantının oluşturulması güvenlik sınırı değil: her korunan eylem iznini ve çalışma alanını kontrolleri geçmelidir.

Analiz

Analitik merkez

Analytics merkezi destek getiriyor, sohbet, AI, ziyaretçi ve ajan bir tarih filtreli çalışma alanı ihracatla rapor veriyor.

Ürün ekran ekranı
Analitik merkezAnalytics Hub, Destek, Sohbet, AI, Ziyaretçi ve Agent performansı için tarih aralığı, metrik kartlar ve sekmeler gösterir.Analitik merkezİşspaceBILETELER184AI RESOLVE63%CSAT4.7LIVE ÇALIŞMASPACEDestek Desteği Destek Desteği Destek DesteğiOluşturun, kapalı, beklenmeyen, SLASekmeKonuşYapay zeka/insan sonuçları ve işleme zamanıSekme- Evet.Güven, geri bildirim, token kullanımıSekmeAjan.Cilt, hız ve memnuniyetSekme1CHOOSE DATESPreset veya custom2CHANGE TABAgent'a destek3EXPORTİndir CSV
Analytics Hub, Destek, Sohbet, AI, Ziyaretçi ve Agent performansı için tarih aralığı, metrik kartlar ve sekmeler gösterir.

Filtreler ve kontroller

  • Bir başlangıç veya özel bir kullanım from/to Sonra her kartı ve grafiği aynı süre yeniden inşa etmeyi yenile.
  • CSV ihraç et Bir ekran görüntüsü yerine aktif analitik görünüme ihracat.
  • Workspace scoping otomatikdir; siteleri alt temel veri kümesini değiştirir.

Her sekme ne ölçer

  • Destek: Biletler yaratıldı / kapatılmış/yükleme, ilk cevap, karar, ilk temas kararı, SLA ve öncelik / bölüm/status arızaları.
  • Konuş: seanslar başladı, AI kararları, escalations, terkment, oturumdaki mesajları ve AI / insan/tüm CSAT.
  • AI: Ortalama güven, düşük güven oranı, triage doğruluk, geri bildirim, bilgi defleksiyon, token/cache kullanımı ve inceleme ihtiyacı olan öğeler.
  • Ziyaretçi: Seçilen süre için trafik ve bağlılık eğilimleri.
  • Ajan: per-agent iş yükü, hız, kapanış ve memnuniyet önlemleri.

Trans-team incelemesi için Analytics Hub'ı kullanın; özel Ziyaretçiler, Biletler, CSAT, AI History ve Team Performance sayfalarını kayıt seviyesindeki soruşturmaya ihtiyacınız olduğunda kullanın.

Analiz

Dashboard

Dashboard günlük komuta merkezinizdir. Trafik, satış, destek yükü, AI aktivitesini gösterir ve bir bakışta dönüşüm göstergeleri. Her sabah bir gecede neler olduğunu anlamak için açın ve bugün hangi ihtiyaçlara dikkat edin.

Gösterge Paneli
Genel Bakış panoBir OpsIQ Intelligence AI paneli tarafından yönetilen genel bakış ekranı (günde kısa, Smart uyarılar, Tahminler), KPI çerçeveleri ve yedi günlük bir trafik öğesi artı bir reset düzeni kontrolü.Genel Bakış Genel bakışİşspaceOPSIQ ZEYNEPBir analiz ve OpsIQ'ı seçinDaily kısaAkıllı UyarılarTahminYeniden yapılandırmaVISITERS TODAY2,481+12%GELİR$8.2kk+5%Aff143 SLATrafik · son 7 gün1AI-FIRSTOpsIQ Intelligence Panel2WIDGETSKPI sizi ayarladığınız parçaları3SİZİNLERHer zaman ayarlayın
Gerçek Genel Bakış Ekran: OpsIQ Intelligence Panel up top (bir analiz seçin ve bunu yazar) KPI widgets'ın üzerinde kendiniz ayarlayabilirsiniz.

Dashboard kartları açıkladı

Canlı ziyaretçiler

Web sitenizdeki insanların sayısı şu anda. Bu her şeyi güncelliyor 15 saniyeler (muhtemelen). Bir ziyaretçi aktif eşi içinde bir sayfa yüklerse "aktif" dir. 90 saniyeler).

Benzersiz ziyaretçiler

Seçilen tarih aralığında web sitenizi kaç farklı insan ziyaret etti. OpsIQ ziyaretçileri tarayıcı parmak izi, kurabiye ve (eğer mevcutsa) kimlikleri bir arada tanımlıyor.

Yeni vs geri dönmek

Yeni ziyaretçiler ilk kez siteyi görüyor. Ziyaretçiler geri dönüş ziyaretçileri daha önce görülüyordu. Yüksek bir geri dönüş oranı, içerikinizin insanları geri getiriyor anlamına geliyor. Çok düşük geri dönüşü oranın faizi tutmadığı anlamına gelebilir.

Geri dönme oranı

Sadece bir sayfayı gördükten sonra kalan ziyaretçilerin yüzdesi. Hafifletme sayfaları üzerinde 70% genellikle sayfanın ziyaretçi beklentilerini, yanlış içerik, yavaş yük veya kötü mobil deneyimi karşılamadığı anlamına gelir.

Sayfada Ortalama Zaman

Her sayfada ortalama olarak ne kadar uzun ziyaretçi harcıyor. Çok kısa süre (görüntü altında) 10 saniyeler) içerik sayfalarında, içeriğin ilgi çekici olmadığını öne sürer. checkout sayfalar üzerinde çok uzun zaman karışıklık gösterebilir.

Tehditler bloke edildi

IPBu adresleri bu adreslere OpsIQ Tehdit puanlama, brute kuvvet girişimleri veya manuel bloklara dayanan potansiyel olarak kötü niyetli olarak tespit edilmiştir. bloke edilen engelleri görmek için tıklayın IPs liste.

Bugün Satış / Bu hafta / bu ay

Bağlantılı satış kaynaklarından gelir (Shopify, WooCommerce, Stripe, vs.). Eğer satışlar sıfır gösterirse, platform bağlantınızın bağlantılı ve senkronize olduğunu kontrol edin.

Trend grafiği

Ziyaretçi sayılarını seçilen tarih aralığında gösteren bir çizgi grafiği. kalıpları arayın: trafik aksakları (campaigns, basın sözleri), dipler (haftalar, tatiller) ve sürekli trendler.

Top kaynakları

Ziyaretçileriniz nereden geliyor: doğrudan, Google, sosyal medya, e-posta kampanyaları, yönlendirme siteleri. Bunu hangi pazarlama kanallarının çalıştığını anlamak için kullanın.

En iyi tarayıcılar

Chrome, Safari, Firefox, Edge ve diğerleri. Bir tarayıcı alışılmadık derecede yüksek bir sıçrama oranına sahipse, birinizin olabilir CSS veya JavaScript uyumluluk sorunu.

Saatlik ısımap

Ziyaretçi aktivitesini günün saatine ve haftanın gününe göre gösteren bir kılavuz. Bu kılavuzu destek vardiyalarının ne zaman planlanacağına, duyuruların ne zaman gönderileceğine ve tanıtımların ne zamanda başlatılacağına karar vermek için kullanın.

Son Ziyaretçiler

Ülke, sayfa, cihaz ve kaynak ile son birkaç ziyaretçi kampanya sırasında hızlı nokta kontroller için kullanışlı.

Tarihi aralığı filtrelerini kullanarak

Click the date picker at the top right of the Dashboard. Presets: Today, Yesterday, Last 7 days, Last 30 days, This month, Last month, Custom range. All dashboard cards and charts update when you change the range. The date range is in your configured timezone (set in Settings).

Çalışılmış örnekler

Bounce rate Base Soruşturma

Senaryo:
Geri dönme oranınız 10'dan 25'e çıktı. 45% to 78% Bu hafta ne oldu?
Ne yapmalı:

Check: (1Özel bir iniş sayfası değişikliği miydi? Top Pages'e gidin ve oranın tersine çevirerek. (22) Bir kampanya yanlış sayfaya trafik gönderdi mi? Yeni referanslar için Top Sources kontrol edin. (3Site mobilde kırıldı mı? Mobil sıçrama oranı için tarayıcı arızasını kontrol edin. ()4) Bot trafiği mi? şüpheli desenler için Tehditlere karşı ve ziyaretçi ayrıntıları kontrol edin.

Panelde Sıfır Ziyaretçiler

Senaryo:
Panel, 0 canlı ziyaretçilerin web siteniz trafik alıyor olsa da.
Ne yapmalı:

Check: (1) Takip widget yüklü midir? web sitesi kaynak kodunuzu görüntüle ve arama OpsIQ Senaryo. (İngilizce).2Site anahtar doğru mu?Yazıda Connected Sitelerde anahtarla karşılaştırın. (3) Bir CDN veya önbellek senaryo olmadan bir sabit sayfaya hizmet ediyor mu? CDN önbelleğinizi temizleyin. (4) Senaryoyu engelleyen bir veya CSP başlığı mı? Tarayıcı konsolunu bloke eden talepleri kontrol edin.

Saatlik ısımap

Senaryo:
Heatmap hafta içi 10am-2pm arasında ağır aktivite gösteriyor, ancak hafta sonu hiçbir şey yok.
Ne yapmalı:

Bu bir B2B trafik modelidir. Ziyaretçileriniz iş saatleri sırasında profesyonel gezi yapıyor. Implications: (1) Hafta iş saatleri için program destek personeli. (2E-posta kampanyalarını Salı günü sabahleyin gönderin. (3Hafta sonu bakım pencereleri güvenlidir. ()4) Canlı sohbeti sadece zirve saatlerinde düşünün.

Bilinmeyen kaynaktan trafik artışı

Senaryo:
Bilinmeyen bir referansçıdan bir saat içinde 500 ziyaretçilerin aniden bir artış görüyorsunuz.
Ne yapmalı:

Zaman penceresi tarafından Ziyaretçilere ve filtreye gidin. Check: (1) Gerçek ziyaretçiler veya botlar mı? Oturum süresine bakın, sayfalar görüntüleniyor ve tarayıcı çeşitliliği. (2Eğer gerçekse, hangi sayfada iniş yapıyorlar? (3) Yönleyiciyi kontrol edin URL Birisi size Reddit, Hacker News veya popüler bir blog ile bağlanabilir. (4Eğer bot trafiğiyse, tehditleri kontrol edin ve engellemeyi düşünün IP aralığı.

Ziyaretçim neden Google Analytics'dan farklı?+

OpsIQ Ziyaretçiler farklı sayılırlar. Tarayıcı parmak izi ve kurabiye kullanır, GA farklı bir kurabiye modeli kullanırken, Bot filtreleme, ad bloker oranları ve senaryo yükleme siparişi de farklılıklara neden olabilir.Alantı yükleme emri. 10-20% Variance normaldir.

Panoyu başka bir araçta gömebilir miyim?+

Panel, için tasarlanmıştır OpsIQ admin. Dış raporlama için, REST'yi kullanın API Analitik verileri çekmek ve kendi pano veya BI aracınızda görüntülemek.

"İsyenler" karşı ne anlama geliyor?+

Sayılar IP Bu adresleri bu adreslere OpsIQ Tehdit puanlamalarına veya engellenmiş, tekrarlanan girişlere veya manuel bloklara dayanarak bayrakladı ya da bloke etti. ayrıntıları görmek ve blokları yönetmek için karşı tıklayın.

Analiz

Ziyaretçi Girişi

Ziyaretçi Giriş, her ziyaretini takip eden web sitelerinize gösterir. Her satır bir ziyaretçiden bir sayfa yükdür. Bireysel ziyaretçi davranışını araştırmak için kullanın, kampanya trafiği bulmak ve izleme sorunlarını teşhis etmek için kullanın.

Ziyaretçi Girişi
Ziyaretçi GirişiBir filtre barı ile bir ziyaretçi masası (tarih, arama IP/ e-ticaret, kaynak, cihaz) ve sütunlar IP/ e-posta, yer, kaynak, cihaz ve zaman, bir bayraklı tehdit çizgisi ile.Ziyaretçi Girişiyoursite.com7 günArama IP, e-posta, şehir...Kaynak ▾Aygıt ▾IP / EMAILKONUMÖRÜŞÜNAYGUTNe zaman[email protected]ABD · New YorkgoogleMasaüstü2 dakika.41.62.10.4İngiltere · LondradirectCep6 dakika.[email protected]BerlinCity in Germanyutm:adsCep14 dakika.203.0.113.9IMDb'de LagosreferralMasaüstüthreat1–25 ya da 3,402Oturum →1FILTERTarih · arama · kaynak · cihaz2REAL COLUMNSIP/email · konum · cihaz · tehdit3DRILL INTam seansı açın
Gerçek Ziyaretçi Giriş: Tarih, arama ve cihaz tarafından filtre, sonra her ziyareti IP/email, konum, kaynak, cihaz ve zaman, kırmızıda bayraklı.

Her satır ne gösterir

IP adresi

ziyaretçinin IP adresi. Anonymized if IP Anonimleşme, tüm ziyaretleri bu gezilerden görmek için Ayarlar'da sağlanmaktadır.IP.

Ülke ve şehir

Hata tespiti bulgularından alındı.IP GeoIP verilerini kullanarak adres. MaxMind GeoLite2 veritabanı veya Cloudflare GeoIP yapılandırılmıyorsa “Bilinmeyen” Gösteriyor.

Sayfa URL

Ziyaretçi yüklenen sayfa. Tam olarak görmek için tıklayın URL. Long URLs Masa görünümünde tıkanır.

Referr

Ziyaretçi sitenizde iniş yapmadan önce nereden geldi. "Direct", hiçbir referanslayıcı (kitap işaretleri, tiplenmiş URLs, bazı uygulama bağlantıları).

Cihaz ve tarayıcı

Ziyaretçinin cihazı (düşü, mobil, tablet) ve tarayıcı (Chrome, Safari, Firefox vs.). Kullanıcı-Agent başlığından çekildi.

Tarih ve Zaman

Sayfa yüklendikten sonra, yapılandırılmış zamanınız Bölgesinde.

Müşteri kimliği

Ziyaretçi tespit edilirse ( kimlik token veya giriş), onların adı veya e-posta görünür. Aksi takdirde anonim olarak gösterir.

Filtreler

Tarih aralığı

Filtre belirli bir zamana ziyaret eder. Varsayılan: son 7 günlerini.

Ara

Arama ile IP adresi, page URL, referrer, ülke veya müşteri e-postası.

Kaynak Kaynağı

Trafik kaynağı tarafından filtre: Doğrudan, Organik, Sosyal, Referral, Ücretli, E-posta.

Cihaz

Masaüstü, Mobile veya Tablet tarafından filtre.

Yeni sadece yeni

Daha önce hiç görmediği ilk kez ziyaretçileri göster.

Çalışılmış örnekler

Belirli bir kampanyadan ziyaretçileri bulun

Senaryo:
UTM parametresi utm_source=google&utm / aracıum =cpc &utm-campaign=summer-sale ile bir Google Ads kampanyası başlattınız? Bu ziyaretçileri nasıl buluyorsunuz?
Ne yapmalı:

Ziyaretçi Girişinde, Arama alanını ve türü "Yaz-sat" kullanın. arama kontrolleri referrerer URLs ve sayfa URLs O halde UTM parametreleri eşleştirecektir. Ayrıca Source = daha daraltmak için filtreleyebilirsiniz.

Bir problem rapor eden bir müşteri bul

Senaryo:
Bir müşteri e-postalı “Kapa sayfanız dün 3pm civarında kırıldı” dedi. Seanslarını nasıl buluyorsunuz?
Ne yapmalı:

Ziyaretçi Girişi'nde e-posta adresi tarafından arayın, kimlikleri görünecektir. Bugüne kadar tarih aralıklarını ayarlayın. 3pm civarındaki sayfaları kontrol etmek için ziyaretlere bakın. Tam sayfa akışını ve herhangi bir JavaScript hataları görmek için oturumunuzu tıklayın.

Bir döngü vurucu veya hurda tespiti

Senaryo:
Bir an fark ediyorsun IP adresi has address has address have address has 500+ bir saat içinde ziyaret, tüm aynı sayfaya.
Ne yapmalı:

Bu muhtemelen bir bot, scraper veya kırık bir senaryodur. Ziyaretçi Girişine gidin ve bunu bu arada arayın IP Check: (1) Tüm ziyaretler aynı sayfaya mı gidiyor? (2) Kullanıcı ajanı bilinen bir bot mu? (3) Oturum süresi her zaman 0 saniyeler? Bir bot olarak doğrulanırsa, Güvenlik'e gidin ve bloklayın IP.

Ziyaretçi log vs Sessions vs Live feed

Ziyaretçi Girişi

Raw sayfası yükleri. Sayfa başına bir sıra. En iyisi: belirli sayfaları araştırmak, belirli kaynaklardan trafik bulmak, takip sorunlarını teşhis etmek.

Oturumlar

Grup sayfası yolculuklara bakar. Bir satır ziyaret seansı için en iyisi: kullanıcı akışını anlamak, oturum süresini ölçmek, dönüşüm yollarını tanımlamak.

Canlı yem

Gerçek zamanlı aktivite. Şu anda sitenizde ziyaretçileri göster. En İyi: İlerlemedeki kampanyaları izlemek, yüksek ziyaretçileri bulmak, destek fırsatları izlemek.

Neden kendi ziyaretlerimi günlük olarak görüyorum?+

OpsIQ varsayılan olarak tüm ziyaretleri takip eder. Kendi trafiğinizi dışlamak için, adınıza bir IPdışlanmış adresi IPs Ayarlar > İzleme' de listelenir.

Bir ziyaretçi neden "Bilinmeyen" bir ülke gösteriyor?+

GeoIP görünümleri ya da gerektirir Cloudflare geo headers (otomatik olarak kullanılırsa otomatik olarak Cloudflare) veya MaxMind GeoLite2 veritabanı dosyası. Check Settings > GeoIP Path to enable the database file exists and is readable.

Ziyaretçi verileri ne kadar süre kaldı?+

Ziyaretçi verileri, Ayarlarda yapılandırılan saklama dönemi için tutulur (default: 90 gün). Ondan sonra eski kayıtlar otomatik olarak cron tutma işi tarafından temizlenir.

Analiz

Oturumlar

Oturumlar grubu aynı kişiden tek bir yolculuğa birden çok sayfa görüş. Ziyaretçi Log bireysel sayfası yüklerini gösterirken, oturumlar web sitenizi çıkıştan nasıl geçtiğini gösteriyor.

Oturumlar
OturumlarOturum Saat masası, IP, ülke, cihaz, kaynak, süre ve sayfalar sütunları ile ve bayraklı bir tehdit satırlarıyla.Oturumlaryoursite.comÜlke (NG)Oturum LogIP(S)ÜlkeAYGUTÖRÜŞÜNDURUMYok41.62.10.4İngiltere Birleşik KrallıkMasaüstügoogle3m 12s6102.89.6.2NGCepdirect1m 05s388.21.4.9DEMasaüstüutm:ads7m 48s11203.0.113.9ABDCepreferral0m 42s21SESSION LOGGruplı yolculuklar2COLUMNSÜlke · cihaz · kaynak3THREATRiskli seanslar Bayraklı
Gerçek Oturum Girişi: Her ziyaretçi bir satır olarak yolculuk (IP, ülke, cihaz, kaynak, süre ve sayfalar) kırmızıda riskli seanslar ile bayraklandı.

Nasıl seanslar nasıl çalışır

Bir ziyaretçi ilk sayfalarını yüklediği zaman başlar. Daha fazla sayfaya yolculuk ettikleri gibi devam eder. Bir oturum, ziyaret süresi (default: 30 dakika) veya tarayıcılarına yakın bir kişi aynı anda yeni bir seans yaratır.

Her seans ne gösteriyor

İlk sayfa

Ziyaretçinin siteye girdiği yer iniş sayfası. Bu size hangi içerik insanları çekiyor.

Son Sayfa

Çıkış sayfası, ziyaretçinin bıraktığı yer. Eğer çıkış sayfası genellikle fiyat sayfasıysa ziyaretçiler sizi rakiplerle karşılaştırabilir.

Sayfa sayısı

Bu oturumda ziyaretçinin kaç sayfası görüntülendiğini. Daha fazla sayfa genellikle daha fazla ilişki anlamına gelir, ancak ziyaretçinin kaybedilmesi anlamına gelebilir.

Süreli Zaman Süresi

Son aktiviteye ilk sayfa yükten tam zaman. 0 saniyeleri ile seanslar geri dönüyor (single page view, başka bir etkileşim yok).

Kaynak Kaynağı

Bu oturum için trafik kaynağı (Direct, Google, sosyal, yönlendirme vb.)

Ülke

Ziyaretçinin IP adresinden ülke.

Sıfırla

Ziyaretçi sadece bir sayfayı gördükten sonra bırakılırsa, Bounced seansları kırmızı göstergeye sahiptir.

Dönüşüm

Ziyaretçi bir izlenmiş dönüşüm olayı (purchase, işaretleme, form teslim) bu oturum sırasında tamamladı.

Filtreler

Ara

Arama ile IP e-posta, sayfa URL, veya seanslar içinde ifade eder.

Tipi Türü

Yeni ziyaretçiler tarafından filtre (ilk seans her zaman) veya ziyaretçileri geri döndürür.

Kaynak Kaynağı

Trafik kaynağı tarafından filtre.

Ülke

Ülkelere belirli bir bölgeden seansları görmek için filtre.

Tehditler / Bounced

Sadece tehdit olarak bayraklanan seansları veya seansları göstermek için filtre.

Çalışılmış örnekler

Profil yüksek değerli bir müşteri

Senaryo:
Bir müşteri sadece büyük bir satın alma yaptı. Satın almadan önce yolculuklarını anlamak istiyorsunuz.
Ne yapmalı:

Oturumlarında e-postalarını arayın. Tüm seanslarına bakın: (1) Satın almadan önce kaç kez ziyaret ettiler? (22) Hangi sayfaları görüntülediler? (3) Sohbeti veya bir bilet açmayı mı kullandılar? (4) Satın almak için ilk ziyaretten toplam zaman nedir? Bu size yüksek değerli müşteriler için tipik satın alma yolculuğu anlatır.

Yeni bir yerden giriş, tespit bulguları

Senaryo:
Bir müşteri genellikle Nijerya'dan giriş yapar, ancak Rusya’dan bir seans görüyorsunuz.
Ne yapmalı:

Müşterinin e-posta adresini Oturumlar'da ara. Son oturumların ülkesini karşılaştır. Eğer bir oturum aniden alışılmadık bir ülkeden gelirse, bu yasal seyahat veya zarar görmüş bir hesap olabilir. Kontrol: (1Başarılı girişten önce başarısız bir giriş denemesi oldu mu?2) Yaptın mı? IP Aynı oturum içinde değişiklik var mı? Eğer şüpheliyse gözden geçirme için işaretle.

Bir seans ve ziyaretçi arasındaki fark nedir?+

Bir ziyaretçi bir kişidir (veya tarayıcı). Bir seans o kişiden ziyarettir. Aynı ziyaretçinin zaman boyunca birçok seansları olabilir. Oturumlar süresinden sonra sona erebilir.

OpsIQ geri dönüş ziyaretçileri nasıl tanımlar?+

OpsIQ, kurabiyenin bir kombinasyonunu kullanır, tarayıcı parmak izi ve kimlik belirtilmiş kimlik jetleri. Bir ziyaretçi kurabiyelerini temizlerse ve giriş yapmazsa yeni bir ziyaretçi olarak görünürler.

Analiz

Canlı yem

Live Feed şu anda web sitenizde gerçek zamanlı olarak ziyaretçileri gösteriyor. Her 15 saniye (önemli) Kampanyalar, ürün fırlatmaları ve şimdi neler olduğunu görmek için yoğun destek dönemleri kullanın.

Canlı yem
Canlı yemGerçek zamanlı bir etkinlik akışı canlı online ziyaretçi sayılarını ve ülke tarafından son ziyaretçi eylemlerinin beslenmesini gösteriyor.Canlı yemyoursite.com37Online ziyaretçileri şimdi onlineCanlı aktiviteşimdiABD · /pricing2sİngiltere · bir sohbet başladı5sDE · araba için eklendi9sCA · tamamlanmış işareti1RIGHT NOWKim olduğunu görün2AUTO-REFRESHGüncellemeler her 15s3HAREKETCanlı bir sohbete girin
Bu ikinci sitenizde kim olduğunu ve ne yaptıklarını görün, otomatik olarak her 15 saniyelerini ferahlatıcı edin.

Nasıl çalışır

Canlı Feed, sunucunuzu yapılandırılmış yeni bir aralıkta ankete yönlendirir. Her satır şu anda sitenizde ziyaretçi gösterir: mevcut sayfa, ülke, cihaz, kaynak, oturum süresi ve sayfa say. Yeşil vurgular son yenilemelerinden beri yeni aktivite göstermektedir. Herhangi bir ziyaretçi sırasını ziyaret etmek için tıklayın.

Ayarlar

Yenileme aralığı

Canlı yem güncellemeleri ne sıklıkta yapılır. Varsayılan: 15 saniyeler. Aşağı değerler (5-10s Daha hızlı güncellemeler verin, ancak daha fazla sunucu kaynakları kullanın. Yüksek değerler (30-60s) sunucuda daha kolaydır, ancak daha az gerçek zamanlı.

Aktif eşik eşiği

Bir ziyaretçi son sayfa yüklerinden sonra "aktif" olarak nasıl uzun zamandır kabul edilir: Varsayılanlik: 90 saniyeler. Bir ziyaretçi bir sayfa yüklerse ve sonra onu okur 2 tıklayarak dakikalar, eşiğin ardından canlı yemden kaybolurlar.

Pause düğmesine

Liste güncellemeden ayrıntıları okumak istediğinizde otomatik-refresh. Faydalı tutmak için tıklayın. yeniden başlamak için Resume tıklayın.

Çalışılmış örnekler

Bir kampanya sırasında sıcak bir liderlik

Senaryo:
Bir ürün lansmanı yapıyorsunuz. Bir ziyaretçi sadece ana sayfanızı gördü, sonra özellikler, sonra fiyatlandırma ve şimdi checkout sayfasında.
Ne yapmalı:

Bu yüksek çözünürlüklü davranışlardır. Live Feed: (1) Oturumlarını görmek için ziyaretçiye tıklayın. (2Bir sohbete başlarlarsa, AI tam yolculuk bağlamına sahip olacaktır. (3Eğer satın almadan ayrılırlarsa, Leads sayfasında bir lider haline gelirler. (4) Ziyaretçilerin kontrole ulaştığında bir sohbet mesajı göstermek için proaktif bir kural oluşturmak düşünün.

Aynı IP'dan çok fazla ziyaretçi

Senaryo:
Görüyorsunuz 20 Ziyaretçiler aynı zamanda IP adresi, tüm farklı sayfalar.
Ne yapmalı:

Bu olabilir: (1) Paylaşılan internetle bir ofis. Ziyaretler gerçek insanlar gibi görünüyorsa (farklı sayfalar, makul seans süresi).2) Bir bot veya scraper. seanslar çok kısa olup olmadığını kontrol edin (0-1saniye) veya sayfaları sistematik olarak vur. (32) Bir yük testi. Otomatik testlerle çalışırsanız, dışlayın IP Takipten sonra.

Neden canlı yem şovu 0 ziyaretçilerim sitemde trafik var?+

Check: (1) Sitenizde yüklenen widget senaryosu mu? (2Site anahtar doğru mu? (3Aktif eşi vefat etti mi? (4) Ziyaretçiler, takip senaryosunu bloke eden saldırgan ad bloker kullanıyor mu?

Ülke veya cihaz tarafından canlı beslemeyi filtreleyebilir miyim?+

Canlı besleme tüm aktif ziyaretçileri gösterir. Filtrelenen manzaralar için, Ziyaretçi Giriş veya Oturum sayfalarını filtre seçenekleri ile kullanın. canlı yem gerçek zamanlı izleme için kasıtlı olarak basittir.

Analiz

Top sayfaları

Top Pages web sitenizde hangi sayfaların en fazla trafik aldığını gösteriyor. Ziyaretler, katılımlar ve dönüşümler ile sayfalar sıralıyor ve destek faaliyetlerinizi tanımlamak için kullanın. En iyi içeriğinizi tanımlamak, alt bilgilendirme sayfalarını bulmak ve destek soruları üreten sayfaları keşfedin.

Top sayfaları
Top sayfalarıYatay ziyaret barları ve sayılabilecek en çok ziyaretçi sayfalarının bir sıra listesi.Top sayfalarıyoursite.comÇoğu tavsiye edilen sayfalar/pricing3,402/2,910/docs1,740/blog/seo-guide980/signup6401RANKEDÇoğu tavsiye edilen sayfalar2SIGNALSZiyaretler ve dönüşümler3FINDBiletleri kullanan sayfalar
Sayfalarınız trafik ve nişan tarafından sıralanıyor, bu yüzden destek üreten üst içerik ve sayfaları belirleyebilirsiniz.

Her sayfanın ne şovları gösterir

Sayfa URL

Tam URL yolu. Benzer sayfalar (örneğin, ürün çeşitleri) gruplama etkinleştirilirse gruplanır.

Görüntüler

Bu sayfanın toplam sayısı seçilmiş tarih aralığında yüklendi.

Benzersiz ziyaretçiler

Bu sayfayı kaç farklı insan gördü (bir kişi aynı sayfaya iki kez görüntüleniyor 1 eşsiz).

Geri dönme oranı

Sitenizi sadece bu sayfayı gördükten sonra terk eden ziyaretçilerin Yüzdesi. Yüksek iniş sayfaları = problem. "Teşekkürler" sayfalar = normal.

Ortalama zaman

Ortalama olarak bu sayfada ne kadar uzun ziyaretçi harcıyor. Çok kısa = okuma. Bir form sayfasında çok uzun değil = karışıklık.

Chat başlar

Bu sayfadan kaç sohbet başladı. Yüksek sohbet bir ürün sayfasında başlar, ürünün tanımının belirsiz olabileceği anlamına gelir.

Destek biletleri

Bu sayfada bulunan ziyaretçiler tarafından kaç destek bileti yaratıldı. Yüksek bilet sayısı = potansiyel UX veya içerik sorunu.

Çalışılmış örnekler

Destek soruları destekleyen sayfaları bulun

Senaryo:
Destek ekibiniz nakliye hakkında sorular alıyor. Hangi sayfa başarısız?
Ne yapmalı:

Top Pages by "Dep bileti" veya "Chat başlar" inme. Ürüne bakın veya yüksek sayılarla sayfaları gönderin. En çok destek soruları ile sayfa muhtemelen net bilgi içeriyor. sayfa içeriğini düzelt ve destek sorularının azaldığını izleyin.

Yüksek çıkış oranı ile sayfaları bulun

Senaryo:
İnsanların siteyi en sık nereye bıraktığını bilmek istersiniz.
Ne yapmalı:

Puanları geri çevirerek sıralayın. Doğal olarak çıkış noktaları olan sayfaları (örneğin, onay sayfaları). Ziyaretçilerle meşgul sayfalara odaklanmalı sayfalar: ürün sayfaları, fiyatlandırma, özellikler. Bunlar daha iyi arama-atermanlama veya daha net içeriğe ihtiyaç duyar.

Bir sayfa neden 0 görüşlerini gösteriyor, ancak trafik aldığını biliyorum?+

Check: (12) Bu özel sayfada kurulu takip öğesi mi? Single-sayfa uygulamaları rota değişiklikleri hakkında sayfa görüşleri ateş olmayabilir. (2) Sayfayı takip ayarlarında dışlanmış mı? (3) Takip senaryosu olmadan önbellekli bir versiyona hizmet eden bir CDN midir?

Analiz

Geo zeka

Geo Intelligence, ziyaretçilerinizin ülkeden geldiği yerde, şehir, cihaz ve kaynak gösterir. Coğrafi pazarlarınızı anlamak için kullanın, dil desteğine karar verin, bölgesel pazarlama planlayın ve şüpheli trafik modellerini tespit edin.

Geo
Geo zekaBir per- country bar sıralamasının yanında ziyaretçi yerlerinin haritası.Geo zekayoursite.comZiyaretçiler Tarafından locationABDİngiltere Birleşik KrallıkDECANG1MARKETSÜlke, şehir, cihaz2PLANDil & Bölge3WATCHSpot garip trafik
Ziyaretçileriniz nereden gelir (hem ülke, şehir ve cihaz) boyut piyasaları ve sıra dışı trafiği.

Ne görüyorsunuz

Top countries bar grafiği

En iyi ülkeler ziyaretçi say tarafından sıralanmıştır. Şehir seviyesindeki verilere ayak uydurmak için bir ülke tıklayın.

Ülke pastanut

Ülke tarafından trafikin görsel bozulması. yüzdeler için Hover.

Ülke tablosu

Seçilen dönemde ziyaretçileri olan her ülke, ziyaretçi sayılarını gösteren oturum sayısı, düşüş oranı ve dönüşüm oranını gösterir.

City drill-down

Hangi şehirlerin en çok ziyaretçiye sahip olduğunu görmek için bir ülke tıklayın.

GeoIP algılama nasıl çalışır

OpsIQ ziyaretçi yerini iki şekilde tespit eder: (1) Cloudflare geoheads. Siteniz geride kalırsa Cloudflare Ülke algılaması otomatik ve doğru. (2) MaxMind GeoLite2 veritabanını indirin ve Ayarlardaki yolu yapılandırın. Şehir seviyesindeki algılama, sadece Ülke veritabanı değil, GeoLita2-City database'i gerektirir.

VPN ve trafik proxy

VPN'leri kullanan ziyaretçiler VPN sunucusunun konumundan gelmeye görünecek, gerçek konumlarından değil. Bu tasarımla tasarlanmıştır. OpsIQ VPN'leri atlamak için çalışamaz ve denememelidir. Eğer alışılmadık ülke desenlerini görürseniz, bunu göz önünde bulundurun 10-20% Ziyaretçiler VPN kullanıyor olabilir.

Çalışılmış örnekler

Beklenmeyen ülke trafiği

Senaryo:
Sadece bir ABD işini yönetiyorsunuz ama 30% trafiğinin 0'ı Hindistan'dan.
Ne yapmalı:

Check: (1) Bu gerçek ziyaretçiler mi? Oturum süresine ve sayfalara bakın. yüksek sıçrama ile çok kısa seanslar = muhtemel botlar. (2Google’dan sizi buluyorlar mı? referrer'i kontrol edin. (32) Yeni bir pazarda potansiyel müşteriler olabilir mi? Eğer trafik gerçek ve meşgulse, Hindistan'a özel fiyatlar veya içerik eklemeyi düşünün.

Dil desteği üzerine karar vermek

Senaryo:
Sitenizi İspanyolca tercüme etmeniz gerektiğini bilmek istersiniz.
Ne yapmalı:

Geo Intelligence sayfasına bakın. İspanyolca konuşan ülkeler (Spain, Meksika, Kolombiya, Arjantin vs.) birlikte daha fazla temsil eder. 10% Düşük sıçrama oranları ile trafiğiniz, çeviri dikkate değer. Ayrıca kontrol edin: Bu ülkelerden gelen ziyaretçiler birincil pazara benzer oranlarda dönüştürülürler mi?

Bölgesel destek değişim planlaması

Senaryo:
Farklı zaman bölgeleri için takım saatlerini desteklemeye karar vermeniz gerekir.
Ne yapmalı:

Geo Intelligence ile birlikte saat ısımap (on Dashboard) kullanın. 40% Trafiğinizin Avrupa'dan ve 35% ABD'den, her iki zaman bölge için kapsamanız gerekir. ısımap her bölgenin en aktif olduğu tam olarak gösteriyor.

Ziyaretlerle Ülke ama sipariş yok

Senaryo:
Almanya bu ay 500 ziyaretçilerini gösteriyor ama sıfır satış.
Ne yapmalı:

Investigate: (12) Fiyat sayfasında mı okuyorlar? Belki fiyatlarınız bu pazar için rekabetçi değildir. (2Almanya'ya mı gemiyorsun? nakliye sayfanızın Almanya’dan bahsettiğini kontrol edin. (3) EUR'da checkout mevcut mu? Para yanlış kita, terk edilmiş çeklere neden olur. (4) Bu ziyaretçiler düşük trafik olabilecek tek bir kaynaktan mı?

Bir ziyaretçi neden "Bilinmeyen" bir ülke gösteriyor?+

GeoIP yapılandırılmıyor. ya Cloudflare (bu da geoheads otomatik olarak ekliyor) veya MaxMind GeoLite2 veritabanını indirin ve Ayarlar > GeoIP Path dosyası yolunu ayarlar.

Belirli ülkelerden trafik engelleyebilir miyim?+

OpsIQ Ülke tarafından engellenmez. web sunucunuzu kullanın veya Cloudflare Ülke bazlı bloke için güvenlik kuralları.OpsIQ görünürlük üzerine odaklanır, ağ seviyesinde kontrole erişmez.

Analiz

Niye eğlenceli

Amaç Funnel, ziyaretçi seanslarını yapmaya çalıştıklarına göre sınıflandırır: Göz, araştırma, karşılaştırma, destek alın veya bırakın. Sitenizdeki niyet dengesini anlamak ve ziyaretçilerin nereye düştüğünü tanımlamak için kullanın.

Niye eğlenceli
Niye eğlenceliSayılarla satın almak için Araştırmaya Gözden Bir Eğlence, artı destek ve cips bırakmak.Niye eğlenceliyoursite.comGöze · 8,200Araştırma · 4,100Karşılaştırma · 1,650Satın al · 520Destek 6%Leaving 11%1CLASSIFYHangi ziyaretçinin istediği2STAGESSatın almak için göz atın3DüzeltBırakanı bulun
Hedef tarafından sınıflandırılmış oturumlar (browse, araştırma, karşılaştırma, satın) böylece insanların nereye düştüğünü tam olarak görebilirsiniz.

Niyet kategorileri

Görüntüleniyor

Ziyaretçiler rahatça etrafta bakıyorlar. Kısa seanslar, birkaç sayfa, belirli bir hedef tespit edilmedi.

Araştırma

Ziyaretçiler ürün/feature sayfaları, docs veya blog içeriği. Sayfada uzun zaman, birden fazla içerik sayfası.

Karşılaştırmak

Ziyaretçiler fiyatlandırmayı, plan karşılaştırmasını veya tabloları ziyaret ederler. genellikle ziyaretçileri geri döndürür.

Satın almak satın almak için satın alın

checkout, araba veya işaret sayfaları. Yüksek niyet. Bunlar dönüşüm fırsatlarınızdır.

Destek-göring

Yardım sayfaları, iletişim sayfaları veya sohbete başlama Ziyaretçiler. yardıma ihtiyaçları var.

Süzülüyor.

Bir sayfadan sonra kalan ziyaretçiler Low nişanı.

Nasıl eğlenceyi okuyabilirim

Eğlencenizi yorumlayın

Senaryo:
1,000 Ziyaretçiler fiyat görüntüledi. 270 sohbete açıldı. 92 checkout başladı. 64 ödedi. 18 Açık destek biletleri açtı.
Ne yapmalı:

Fiyat sayfası niyet oluşturmak için yeterince güçlüdür. Chat satın alma yolunda önemlidir: 27% Fiyatlama ziyaretçileri satın almadan önce sohbet ediyorlar. checkout sonrası destek biletleri aktivasyon veya ödeme karışıklıklarını işaret edebilir. Action: (1) AI sohbet sorularının iyi olmasını sağlayın. (2) Yatırıma yatırım 18 Ortak konular için posta desteği biletleri.

Zaman filtreleri

Örneğin, Black Friday haftasını normal bir haftaya kıyasla niyet modellerini karşılaştırmak için tarih aralığı filtre kullanın. "Buying" niyetinde bir artış görmeli ve muhtemelen promosyonlarınız karışıklığı yaratsa “Depresif” olarak görünmelisiniz.

OpsIQ niyet nasıl sınıflandırır?+

OpsIQ Sayfaya bak URLs Oturum davranışları ve zaman modelleri. Fiyatlama sayfaları sinyal karşılaştırma niyetini kontrol edin. Yardım / temas sayfaları sinyal desteği niyetidir. sınıflandırma, sezgisel tabanlı değildir, AI odaklı değil.

Niyet kategorilerini özelleştirebilir miyim?+

Şu anda değil. kategoriler ortak web davranış kalıplarına dayanan inşa edilmiştir. Özel niyet sınıflandırması yol haritasındadır.

Analiz

Funnels, saklama ve yolları

Sayfadan veya olay adımlarından özel yolculuklar oluşturun, kohort tutmayı ve ziyaretçilerin çoğu zaman bir siteden aldıklarını keşfedin.

Ürün ekran ekranı
FunnelsÖzel bir eğlence her sayfa / yol adımı, kalan ziyaretçiler ve dönüşüm yüzdesi gösterir.FunnelsİşspaceSTEPS4CONVERSION28.4%WINDOW72hLIVE ÇALIŞMASPACEFiyatlandırma görüntülenen fiyat1,420 ziyaretçiler100%Seçilen Plan780 ziyaretçiler54.9%Checkout başladı530 ziyaretçiler37.3%Sipariş tamamlandı403 ziyaretçiler28.4%1DEFINE2-8 adımları2ÖLÇÜSet dönüştürme pencereleri3IMPROVEEn büyük damlayı bul
Özel bir eğlence her sayfa / yol adımı, kalan ziyaretçiler ve dönüşüm yüzdesi gösterir.

Funnels

Bir isim eğlencesi oluşturun 2 to 8 Sayfa veya olay adımları. Dönüşüm penceresini saatlerce ayarla; bir ziyaretçi sadece sipariş edilen adımlar o pencerede meydana geldiğinde tutar. yeniden oynatılırken, hataları, sayfa hızını veya mesajlaşmayı nerede seçeceğinizi seçmek için adımlar arasında düşüş kullanın.

Yeniden yok

Emekli gruplar haftalık kohortlara ziyaretçilerini geri döndürür ve kaç tane geri döndüğünü gösterir. 6, 8 veya 12 hafta ufuk. Ortak tanımı, yayınları veya kampanyaları karşılaştırırken istikrarlı tut.

Yollar

Paths lists the most common page sequences. Choose a path length from 2 to 5 pages to keep the result readable. Use it to find unexpected detours, common exits and content that repeatedly precedes conversion.

Özel eğlenceler analitik tanımlar, otomasyonlar değildir. Tamamlanmış bir adıma tepki vermek için dönüşüm hedefi, segmenti, tetikleyici veya iş akışı yaratır.

Analiz

Oturum tekrarları

Oturum Replay, bir ziyaretçinin sitenizde yaptığının zaman çizelgesini izleyebilmenize olanak sağlar: hangi öğeleri tıkırdılar, nereye gittikleri ve hangi tipteler (tekyüzlü alanlarda maskelenmiş) Bug raporlarını teşhis etmek için kullanın ve müşteri karışıklıkunu anlamak.

Oturum tekrarları
Oturum tekrarlarıBir yeniden oyun oyuncusu bir sayfa görünümü gösteren bir cursor, bir seans info paneli ve zaman çizelgesi bir tıber.Oturum tekrarlarıyoursite.comŞimdi Satın AlOTURUMSüre 3m 12s14 tıklamaABD · MasaüstüChrome 1241WATCHClicks, kaydırma, tip2MASKEDHassas alanlar gizli3DIAGNOSEBug raporlarını doğrulayın
Bir ziyaretçinin yaptığı tam olarak: tıklamalar, kaydırmalar, yazma (devap alanları maskelendi), bir zaman çizelgesinde.

Doğru seansı bulmak

Oturumlardan, rapor edilen konularla seanslar arayın, yüksek sayfa dönüşümle ilgili değil veya biletleri destekleyen müşterilerden oturumlar. Zaman çizelgesi görünümünü açmak için yeniden oyun simgesi tıklayın.

Replay'in gösterdiği şey

Zaman Çizelgesi

Zaman içinde olayları gösteren bir yatay bar, o an atlamak için zaman çizelgesine tıklayın.

Page navigasyon

Her sayfa yükü, zaman çizelgesinde bir segment olarak görünür. Ziyaretçinin aldığı tam yolu görebilirsiniz.

Tıklar

Click events, zaman çizelgesinde ve sayfada vurgular olarak gösterilir.

Sayfayı

Sayfa derinliği takip edilir, böylece ziyaretçinin ne kadar okuduğunu görebilirsiniz.

Form etkileşimi

Alan odaklanma ve tipleme olayları kaydedildi. Şifre ve hassas alanlarda metin girişi varsayılan olarak maskelenmiştir.

Gizlilik ve maskeleme

Oturum yeniden oyun maskeleri varsayılan olarak hassas form alanları döndürür. Şifre alanları, kredi kartı girişleri ve veri-opsiq-mask ile işaretlenen alanlar asla kaydedilemez. Ayarlar > Takipte ek maskeleme kuralları yapılandırabilirsiniz. Eğer uyumluluk politikasınız tamamen geri oynatabilirse.

Bir kırık bir çeki görmezden gelmek

Senaryo:
Bir müşteri “Satmaya çalıştım ama düğme hiçbir şey yapmadı.”
Ne yapmalı:

Oturumları oturumlarını (posta ile arama) Yeniden oynat. checkout sayfasını izleyin.1Doğru düğmeye tıkladılar mı? (2(Bir) JavaScript Hata meydana gelir mi? (JS hata sayfasını o zaman kontrol edin.)3Sayfa bir hata mesajı mı yeniden yüklendi? (4) Gerekli bir alan boş muydu? Replay tam olarak ne olduğunu gösteriyor.

Oturum yeniden oyun nasıl kullanılır?+

Replay data, trafik hacmi ile büyür. Evlenebilirlik ayarlarını otomatik olarak eski replay verilerini temizlemek için kullanın. yüksek hacimli siteler için daha kısa bir yeniden oyun tutma süresi (örneğin, 30 days) depolamayı yönetmek için.

Ziyaretçiler yeniden oyundan çıkabilir mi?+

Eğer "Respect Do Not Track" Ayarlarda etkinleştirilirse, DNT başlıkları ile ziyaretçileri kayıt altına alınmaz. Ayrıca takip ayarlarında yeniden oynatarak belirli sayfaları dışlayabilirsiniz.

Analiz

Etkinlikler günlük

Events Log, OpsIQ'ın kaydettiği her olayı gösteriyor: Sayfa görüşleri, tıklamalar, sohbet başlar, bilet yaratımları, satış ve özel etkinlikler. webhook teslimatını doğrulamak için kullanın ve eylemlerin sırasını anlayın.

Etkinlikler günlük
Etkinlikler günlükRenkli kodlanmış tip kötüges ile bir kronolojik olay: sayfa görüşü, sohbet, satış, webhook ve özel.Etkinlikler günlükyoursite.compageviewABD · /pricing12:04:01chat.startİngiltere · widget açıldı12:04:09Satış$49.00 · sipariş #104212:05:22webhookpayment.succeeded12:05:23customdemo_booked12:06:101EVERYTHINGHer kayıt edilen olay2DEBUGWebhook teslimatını onaylayın3ORDERTam sırayı görün
Her OpsIQ kayıtlarının zaman çizelgesi (sayfalar, sohbetler, satışlar, webhooks, özel olaylar) debugging ve denetim için.

İnşa Edilmiş olaylar (otomatik)

⚠️
Bunlar bunlardır events-log İsimler - ziyaretçi zamanındaki kayıtlarda hangi OpsIQ kayıtları analiz, debugging ve denetim için. Onlar farklı bir kelimedir from the Visitorstime for Analytics, debügging and control. outbound webhook Bir son noktaya abone olduğunuz olaylar. Eğer bir webhook alıcı inşa ediyorsanız, Webho bölümünde liste kullanın veya çağrı webhooks.events.list; Bu masadan bir isim için alt tarif hiçbir şey teslim etmeyecektir.

Her satır senin adını gösterir Gönder Ve kanonik isim OpsIQ Dükkanlar mağazaları Her ikisi de kaydedilir: gönderdiğiniz ham isim ve haritalar için, bu yüzden kanonik vergionomy'ye karşı yazılmış bir rapor, hangileri kullanan bir izole tutar.

pageview page.viewed

Bir izlenmiş sayfa yükleri. URL, ünvanı, referrer ve zamantamp içerir. page_view ve view Aynı şey olarak kabul edilir.

chat_open support.chat_opened

Bir ziyaretçi sohbet widget'ı açar.

chat_send support.chat_message_sent

Bir ziyaretçi bir sohbet mesajı gönderir. Cevap tarafı, bir sohbet mesajını gönderiyor support.chat_message_received.

ticket_open support.ticket_created

Bir destek bileti oluşturulur. ticket_create Aynı şey olarak kabul edilir; cevaplar ve kapanışlar da depolanır support.ticket_replied ve support.ticket_closed.

form_submit form.submitted

Bir izlenmiş form sunulur. submit Aynı şey olarak kabul edilir.

purchase commerce.purchase_completed

Bir satın alma tamamlandı. purchase_success, ve satış alias order.completed, sale.completed, payment.completed ve invoice.paidAncak, bağlantılı bir platformdan kabul edilir.

kontrol commerce.checkout_started

Checkout başlar. İlgili: cart_view, checkout_view, checkout_intent, checkout_abandon, add_to_cart.

login_success identity.signed_in

Bir ziyaretçi işareti. Başarısızlık bir başarısızlıktır login_failed, olarak depolanır identity.login_failed; Bir kilitlenmedir login_lockout_created.

işareti conversion.signup

Bir ziyaretçi bir işaret tamamlar. Bir liderliktir lead, olarak depolanır conversion.lead.

js_error error.js

Bir JavaScript hatası bir izlenmiş sayfada yakalanır.

💡
Bu aliaslardan biri olmadığını gönderdiğiniz bir etkinlik adı hala fiilatim kaydedildi - hiçbir şey yok. Sadece kanonik haritalama yoktur, bu yüzden vergionomi bazlı raporlara yuvarlanmayacaktır.

Özel etkinlikler

Web siteniz veya sunucunuzdan OpsIQ. Özel etkinlikler, işinize özgü eylemleri takip etmek için kullanışlıdır: düğme tıklamaları, özellik kullanımı, video oyunları, indirmeler vs.

JavaScript · tarayıcıdan özel olay
// Send a custom event from the browser
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "plan_selected", {
  plan: "pro",
  billing: "annual",
  value: 99
}]);
PHP · sunucunuzdan bir iletişim aktivite kaydetmek
// 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);

Filtreleme olayları

Event type türü

Belirli olay isimleri ile filtre: sayfa, sohbet. başlatılmış, bilet. created, vs.

Tarih aralığı

Belirli bir zaman periyodundan olayları göster.

Ara

Anahtar kelimeyle etkinlik verileri (URL, e-posta, olay mülk değerleri).

Ne kadar zamandır olaylar devam etti?+

Olaylar, Ayarlarda belirlenen saklama politikasını takip eder. Varsayılan: 90 günlerini takip edin. Yüksek değerli olaylar (kıtlar, güvenlik olayları) daha uzun bir tutma ile yapılandırılabilir.

A/B deneylerinde olayları kullanabilir miyim?+

Evet. Bir deney oluştururken, bir dönüşüm olayı seçin. Herhangi bir yerleşik veya özel olay dönüşüm hedefi olarak kullanılabilir.

Analiz

A/B deneyleri

Deneyler bir sayfanın veya özelliğin iki versiyonunu test etmenizi ve hangisinin daha iyi performans gösterdiğini ölçmenize izin verir. OpsIQ parçaları izlenimleri, dönüşümleri ve istatistiksel önemini.

A/B deneyleri
A/B deneyleriDönüşüm oranlarıyla karşılaştıran iki değişken kart, kazanan bir kötüge ve lider varyant üzerinde önemle.A/B deneyleriyoursite.comVaryant A4.2%dönüşüm · 1,020 viewsVaryant BBÖNER6.8%dönüşüm · 1,005 views+62% asansör · 96% önemli1TESTİki farklı yol kafa-to-head2ÖLÇÜDönüşümler ve önemi3DECIDEDeclare a kazanan
İki çeşit çalıştırma, dönüşümleri ve istatistiksel önemini izleyin ve kazananı ilan edin.

Deneyler nasıl çalışır?

1
Bir deney oluşturun

Bir isim verin, birincil metrik (konvers event) tanımlayın ve varyantları (kontrol ve test).

2
Run it Run it

OpsIQ rastgele ziyaretçileri değişkenlere ve davranışlarını takip eder. İşlem yaparken deneyi değiştirmez.

3
Sonuçlar okuyun

Yeterince veri toplandıktan sonra güven seviyesini kontrol edin. 95% Kendine güvenmek demek. 95% Farkın gerçek olduğundan eminim, rastgele bir şans değil.

Deney devletler

Taslak Tasla Taslağı

Oluşturun ama henüz başlamadı. Hala çeşitleri ve metrikleri düzenleyebilirsiniz.

Koşuyorum.

Aktif olarak ziyaretçileri farklı şekillerde atamak. çalışırken düzenlemeyin.

Tamamlandı

İstatistiksel öneme erişin veya manuel olarak durduruldu. Sonuçlar sonuncudur.

Arşiv

Sonuçlar incelendi ve deney aktif listede artık gerekli değil.

En İyi Uygulama

metrikinizi başlatmadan önce Tanımlayın

Başlangıç önce ölçümlediğiniz şeye karar verin. Sonuçlar ortaya çıktıktan sonra bir metrik seçin önyargıyı tanıtır.

Exclude internal trafik

Ekibinizin IP adreslerini dışlama listesine ekleyin, böylece personel ziyaretleri skew sonuçları yapmaz.

Uzun süre yeterince uzun sürme

100 ziyaretçilerinden sonra bir deneyi durdurma. Güvenilir sonuçlar için değişken başına yüzlerce veya binlerce ziyaretçiye ihtiyacınız var.

Bir seferde bir değişiklik test edin

Başlık ve düğme rengini değiştirirseniz, hangi değişikliğin iyileşmeye neden olduğunu bilemezsiniz.

Kararınızı Kayıt Ol

Deney sona erdiğinde, hangi değişkenin kazandığı ve neden bunu uygulamayı seçtiğinizi unutmayın.

Geçerli bir deney için kaç ziyaretçi ihtiyacım var?+

Bu, temel dönüşüm oranına ve tespit etmek istediğiniz efekt büyüklüğüne bağlıdır. Genel bir kural olarak: en az 500 bir türün her ziyaretçisi için 20% Küçük etkiler için binlercesine ihtiyacınız var.

Aynı zamanda birden fazla deney yapabilir miyim?+

Evet, ama dikkatli olun. Aynı sayfayı iki deney etkilerse, sonuçları etkileşime girebilir. Aynı sayfada deneyler veya aynı anda özellikler üzerinde çalışmak daha güvenli.

Analiz

JavaScript hataları

JavaScript Hatalar web siteniz ziyaretçilerinden müşteri odaklı hataları toplar. kırık bir düğme, başarısız oldu API Çağrı, ya da eksik bir kaynak burada ortaya çıkıyor. Gerçek müşterileri etkileyen böcekleri bulmak ve düzeltmek için kullanın.

JS hataları
JavaScript hatalarıCiddi dots, kaynak dosyası, tarayıcı ve olaylar ile yakalanan ön hataların bir listesi.JavaScript hatalarıyoursite.comSon hatalarıTypeError: tanımlanmamış x okumacheckout. js:42 · Chrome×214404 yükleniyor /assets/app.cssindeks · Safari×88(aslında) AğErrorapi. js:17 · Firefox×51Deprecation uyarı: Boş olmayan olaysatıcılar. js · Edge×331CAPTUREMüşteri-ön hataları2IMPACTSayılar & tarayıcılar3DüzeltSquash gerçek böcekler
Gerçek ziyaretçiler burada kırık kod yüzeyi vuruyor (message, kaynak, tarayıcı ve ne sıklıkta) böylece hangi konuları düzeltebilirsiniz.

Her hatanın ne gösterir

Hata mesajı

JavaScript hata metni (e. g., "TypeError: Tanımlanmamış özellikleri okuyamıyor")

Sayfa URL

Hangi sayfa hata oluştu.

Tarayıcı ve cihaz

Hangi tarayıcı ve cihaz türü hata gördü. Bazı hatalar tarayıcıya özeldir.

Stack izlerini

Hatanın gerçekleştiği kod yeri. Tam çöp izi genişletmek için tıklayın.

İlk olarak görüldü

Bu hata ilk ortaya çıktığında.

Son görülen son görüldü

Bu hata en yakın zamanda meydana geldiğinde.

Say

Bu hata kaç kez kaydedildi.

Etkilenen seanslar

Kaç farklı ziyaretçi seansı bu hatayı deneyimledi.

Hatalar Önce

Her şey değil JavaScript Hataların hemen dikkatine ihtiyacı var.Öncelikle: (1) kritik sayfalardaki hatalar (checkout, signup, login), (2) Yüksek oturum sayısı ile hatalar, (3) Son zamanlarda ortaya çıkan hatalar (bir kod değişikliğinden gelen kaçınılmaz gerileme), (4) Kendi kodunuzda hata (üç partili senaryolar değil).

Bir kırık checkout düğmesine düzeltin

Senaryo:
JS Hatas sayfası “TypeError: Tanımlanmamış (okuma teklifi) özelliklerini okuyabilmiyor /checkout, Etkileyiciyi etkileyen 45 Bu hafta bu seanslar.
Ne yapmalı:

Bu demek oluyor ki : 45 gerçek müşteriler ödemeyi tamamlayamadılar. Adım: (1) Aynı tarayıcının/alet kombinasyonunda sayfayı açın. (2Tarayıcının konsolunu aç ve hatayı tekrarla.3Kod satırını bulmak için yığın izlerini kontrol et.4) Hatayı düzeltin, devreye alın ve hata sayısını sıfıra indirin.

OpsIQ üçüncü taraf senaryolardan hata alıyor mu?+

Evet, OpsIQ Tüm yakalamaları yakalamak JavaScript Sayfadaki hatalar, analitik senaryolar, sohbet pencereleri ve ad senaryoları dahil. Filtreler URL Taht izi kendi kodunıza odaklanmak için.

Bilinen zararsız hataları nasıl dışlıyorum?+

Özel hataları bastıramazsınız OpsIQ Ama listeyi sayfayla filtreleyebilirsiniz URL veya hata mesajı. Tarayıcı uzantılarından hataları düzeltin veya görmezden gelin (genellikle bilinmeyen kaynaklardan gelen hatalar olarak gösterilir).

Satış

Satış ve dönüşümler

Satış takip mağazanızı veya fatura platformunuzu OpsIQ'a bağlar, böylece ziyaretçi davranışlarının yanında gelir görebilirsiniz. Her satın alma hangi sayfaları, kampanyalarını ve kanalların gelir kullandığını bilmek için bir ziyaretçi yolculuğuna atfedilir.

Satış
SatışSatış ekranı: All-time bir kontrol, bir arama ve son satın alma masası (tarih, müşteri, platform, miktar, kaynak).Satışyoursite.comGELİR$42,180+18%Tüm zamanlar ▾Arama e-posta, IP, Order ID...Son Satın AlmalarTARİHMüşteriPLATFORMFORMMİKTARSIZÖRÜŞÜNHaziran 3[email protected]Shopify$49googleHaziran 3[email protected]WooCommerce$129directHaziran 2[email protected]Stripe$480Reklamlar1GELİRSiparişler ve yenilemeler2RECENT PURCHASESTarih · müşteri miktarı3ATTRIBUTEDTrafik kaynağı için
Gerçek Satış ekranı, üst gelir, sonra Son Satın Almalar (tarih, müşteri, platform, miktar), her biri trafik kaynağına atfedilir.

Satış panoları

Bugünün satışları

Siparişlerden gelen gelir bugün tamamlandı. Bağlantı platformunuzdan her yeni sipariş etkinliği ile yenilikler.

Bu hafta / bu ay / toplam

Dönem boyunca akılan gelir. Reunds bu toplamlardan çıkarılır.

Trend grafiği

Seçilen tarih aralığında günlük gelir gösteren line grafiği. (promotions, kampanyalar) ve dipler (kömürücülük, mevsim).

Top dönüştürme kaynakları

Hangi trafik kaynakları en çok satın almalara yol açıyor. "Direct" alıcılar genellikle siteyi işaretlediler. "Google" alıcılar sizi arama yoluyla buldu.

Son alışveriş son satın alımları

Müşteri e-posta, miktar, para ve satın alınan öğelerle son siparişler.

Unconfirmed buy (customer yolculuğu)

Tracker tarayıcıda bir ziyaretçi satın alma onayına ulaştığında, ancak bağlantılı platform henüz satışa sunmadığını bildirdi, müşteri yolculuğu bir satın almayı (uconfirmed) sırayı bir amber badge ile gösterir. Platform satışı onayladığı zaman, doğrulanan satın alım yerini değiştirir.

Reconciliation

Satış konektörleri tek bir webhook'ya bağlı değildir. Platformun gönderdiği her ödeme sinyali satışa açılabilir ve Tools Contract 2.3, platformun kendi çalışma alanı üzerinde tamamlanmış satışları listesini geri döndürür (default saatli olarak iş alanına) böylece bir web asır teslim edilemez bir platformda satış yapamaz.

Platform kurulum kılavuzları

Shopify

Bağlara git >Shopify. Özel bir uygulama oluşturun senin Shopify admin (Bölümler > Uygulama ve satış kanalları > Geliştirme uygulamaları) Grant kapsamı: okuma_orders, read_customers, reading_products. Copy the Admin API erişim token. In access token OpsIQ, mağaza domaininize girin (e.g., your-store.myshopify.com) ve erişim token. Click Test Connection. Eğer başarılı olursa, gerçek zamanlı sipariş bildirimleri için webhook senkronizasyonunu etkinleştirin.

WooCommerce

Bağlara git >WooCommerce. Senin içinde WordPress admin, git WooCommerce> Ayarlar > Gelişmiş > REST API. Read/Yaz izni ile bir anahtar oluşturun. tüketici anahtarı ve tüketici sırrını kopyalayın. OpsIQ Sitenize gir URL, tüketici anahtarı ve tüketici sırrı. Test Bağlantısını tıklayın.

BigCommerce

Yenilemelere git > BigCommerce. In your BigTicaret admin, go to Advanced Settings >API Hesaplar. V2/V3 oluşturun API Siparişler, müşteriler ve Ürünler için okuma kapsamı ile hesap edin. erişim token, müşteri ID'sini kopyalayın ve API Yolda onları girin. OpsIQ ve test.

Magento 2

Yenilemelere git > Magento. in your Magent, go to System > Integrations. Create a new integration with the magento admin. API Satışa, Müşterilere ve Kataloğu'na kaynak erişim. Girişi etkinleştirin ve kopyalayın OpsIQ Magento üssü ile URL.

PrestaShop

Bağlantılara gidin > PrestaShop. in your PrestaCityShop admin, Go to Advanced parameters > Webservice. Enable the webservice and create a new key. Grant access to order, customers, and products. Copy the key and enter it in the in the heart. OpsIQ Mağazanızla URL.

OpenCart

Bağlara git > OpenCart. Generate API OpenCart yönetim panelinizden gelen bilgiler girin.API URL, kullanıcı adı ve anahtarı OpsIQ Link OpenCart'ın REST’sini kullanır API sipariş ve müşteri verileri için.

osCommerce

Bağlantılara gidin > osCommerce. Configure database access or API Bağlantı ayarlarında belgelenen bilgiler. osTicaret entegrasyonu genellikle doğrudan veritabanı erişimi veya özel bir özel erişim gerektirir.API Modül.

Stripe

Bağlantılar > Stripe'a gidin.API Stripe Dashboard' dan anahtar (Geliştiriciler >API Anahtarın Müşteriler, Faturalar ve Üyelikler'e okuma erişimine ihtiyacı vardır. Bu anahtarı şunlara girin: OpsIQ Gerçek zamanlı olaylar için webhook son noktasını ayarlar.

Özel / diğer platformlar

REST'yi kullanın API veya webhooks herhangi bir platformdan satış olayları göndermek için.Müşteri e-posta, miktar, para ve eşya ile tamamlanmamış olaylar gönderin. Etkinliklere bakın API Ödemeload formatı için bölüm.

Satışlarınızı eğlenceli anlamak

Top dönüştürme kaynakları

Hangi kanalların müşterilere ödeme yaptığını gösterin. Google gelirse 1000 Ziyaretçiler ve ziyaretçiler 50 Satış, bu bir 5% dönüşüm oranı. Eğer e-posta getirirse 200 Ziyaretçiler ve ziyaretçiler 30 Satış, bu 15%. E-posta ziyaretçi başına daha etkilidir.

Geri Ödemeler

Yeniden finanse edilen siparişler ayrı olarak takip edilir. Net gelir toplamlarınızı azaltırlar. Para iade oranları belirli bir kaynaktan yüksekse, trafik düşük kalitede olabilir.

Para kullanımı

OpsIQ orijinal işlem para ve miktarı depolar. Multi-currency işletmeler her para biriminde gelir görür. Normal raporlama, yapılandırılan değişim oranını kullanır.

Çalışılmış örnekler

100 ziyaretçiler, sıfır satış

Senaryo:
Fiyat sayfanız günde 100 ziyaretçi alır, ancak sıfır dönüşümler.
Ne yapmalı:

Investigate: (1) Oturumu Fiyat sayfası ziyaretçileri üzerinde yeniden oynatın. Fiyat tablosu ile nasıl etkileşime girdiklerini izleyin. (2) Fiyat sayfası için Top Pages hız ve zaman sayfayı bozar. (3) Fiyat sayfası ziyaretçilerinden Sohbet konuşmaları kontrol edin. Ne soruları sorarlar? (4) Fiyat sayfanızı rakiplere kıyasla. (5) Farklı fiyat düzeni ile A/B deneyini deneyin.

Bir pazarlama kampanyası için katkıda bulun

Senaryo:
UTM etiketleri ile bir e-posta kampanyası gönderdiniz. Gelir etkisini nasıl ölçersiniz?
Ne yapmalı:

Kampanya UTM parametresi için satış ve filtreye gidin: (Görünecektir.)1) Kaç ziyaretçi e-postadan geldi. (2) Satışa kaç tane dönüştürüldü. (3(2) Kampanyaya verilen toplam gelir. (42) Kampanyadan önce aynı döneme kıyasla.

Satışlar neden mağazamın siparişlerine sahip olmasına rağmen sıfır gösteriyor?+

Check: (12) Platform bağlantı ve sağlıklı mı? Yükseltmelere gidin ve durumu kontrol edin. (2) Webhook senkronizasyonu etkinleştiriyor mu? Eğer kirletici kullanıyorsanız, cron iş çalışıyor mu? (32) Bağlantının doğruya sahip olması API Kapsam?For scopes? For scopes Shopify Okunmalara ihtiyacınız var.

OpsIQ bir ziyaretçiye satış nasıl olur?+

Bir sipariş bağlantı aracılığıyla geldiğinde, OpsIQ müşteri e-postasını bilinen bir ziyaretçiye eşleştirir. Eğer ziyaretçi satın almadan önce takip edilirse, satış ziyaretçi seyahatine atılır ve trafik kaynağı dahil olmak üzere giriş sayfasına girer.

Elli satış ekleyebilir miyim?+

REST aracılığıyla satış olayları gönderebilirsiniz.API Ya da herhangi bir sistemden webhooks. Etkinlik formatı Etkinliklerde belgelenmiştir API Bölüm.

Ticaret

İnşa edin, başlatın ve yerel Mağazafront'ı işletin

Mağaza önbelli, ürünler için OpsIQ'in yerli mağazasıdır, sayfalar, kitaplar, promosyon panelleri, çekout, müşteri hesapları ve AI-assisted satış Müşteri Sohbetinde ve sosyal kanalları destekledi.

Pazarlamada Başlayın → Storefront

1
İş alanını seçin

Oluşturduğunuz siteyi onaylayın. Ürünler, ayarlar, siparişler ve analizler bu çalışma alanına izole edilir.

2
Enable Eticaret ve Storefront

Genel Ayarlar → Eticaret ebeveyn otoritesidir. Mağaza tanıtım, sipariş oluşturma ve ödeme ayrı kalır, böylece bir katalogu güvenle izleyebilirsiniz.

3
Kast tam ürünler

Ürün türü, fiyat, para, envanter, varyantlar / modeller, medya ve yerine getirilmesi. Ürünün tanıtımından önce kontrol ve seçimlerin etilmesi.

4
Ödemeyi yapılandırın ve yerine getir

Bir ağ geçidi veya banka transfer, nakit ya da karşı ödeme eklemek. Fiziksel mallar teslimat bölgelerine veya koleksiyona ihtiyaç duyar; dijital malların korumalı dosyaları veya kodları gerekir.

5
Run Start Readiness

Her blokeri düzeltin ve her uyarıyı gözden geçirin, sonra halka açık mağazalardan bir kum kutusu siparişini tamamlayın.

Hakkında ve Politika Hakkında Başlayın

Yeni ve yükseltilmiş mağazalar, düzenlenebilir bir başlangıç metni için Hakkında, Şartlar ve Koşullar, GizlilikVe Refunds ve geri dönüşler Bu alanların boş olduğu zaman, mevcut tüccar kopyası asla yazılmamıştır.

  • Her şeyi değiştir [Add …] Hızlı ve hızlı STARTER TEMPLATE Başlamadan önce fark edin.
  • Gerçek yasal adı kullanın, temas rotası, vaatleri yerine getirmek, geri dönüş kuralları, veri uygulamaları, saklama süreleri ve piyasalar hizmet etti.
  • Hizmet ettiğiniz ürünlere ve ülkelere uygun tavsiye alın. Başlayıcı, yasal tavsiye değil operasyonel rehberliktir.

Tasarım, sayfalar ve promosyonlar

Tema ve sayfa tasarımı

Bir ince renkli tema ve kompozisyon seçin, sonra dizi tipografi, doldurmalar /gradients, şekiller, genişlik, hareket, hover and light/dark behavior. Preview masaüstü ve telefon tasarruf etmeden önce.

Hakkında, İletişim, Mi / Arama Kitabı ve Hesabı

Her sayfayı yeniden sipariş edilebilir bloklardan oluşturun. Her blok premium tasarım varyantları vardır. İstatistikler, ekip, ödüller veya içerikleri doğru olana kadar alıntılar yapın.

Özel sayfalar

Set unvanı, sürmüş kahraman, SEO ve bloklar sipariş; draft sırasında önizleme, sonra kart, çekout, hesap ve politikalar gibi depolama rotaları yeniden kullanılabilir.

Promosyon popuplar ve yan paneller

En az bir blok ile bir modal sayfası oluşturun. Premium tasarım seçin, merkezi/sol / sağ / alt yerleştirme, yük / genişletilebilir / tıklayın tetikleyicisi, arkabelli, hareket, genişlik, kupon ve bir kez-per-visitor davranışı. Test yakın, klavye ve telefon düzeni.

Menüler ve ayak

Sayfalara, ürünlere, koleksiyonlara, politikalara, hesap/yardım / araç eylemlerine, canlı modalara veya güvenli dış URLs. Header öğeleri bir damladown/megamenu seviyesini destekler.

Müşteri Sohbeti ve sosyal siparişler

Enable Müşteri Sohbeti satış, sonra müşterilerin nereden satın alınabileceğini seçin. Yardımcılar katalogu arar ve sunucuyu yazara dayalı bir alıntı için sorar; sunucu - model değil – imzalanmış sipariş kartı oluşturmaz. Onaylama yalnızca web'de bu kartla gerçekleşir veya sosyal kanalda doğrulanan etkileşimle olur.

WhatsAppPeygamber,Instagram, TelegramLINE, SMS ve X kanal kimliği olarak sağlayıcıya dayalı kanalı hesabı kullanıyor. Email hala makbuzlar için toplanmıştır.Seks siparişi imzalanmış evrensel sözleşmeyi ve tüccar yazarlığını tutar; Storefront yapılandırması bu sözleşmeyi değiştirmez.

Mağaza Zeka analitik

Özel ziyaretçileri gözden geçirin, ürün görüşleri, kart ekleri, çekout başlar / kardrazlar/completions, dönüşüm, doğrulanmış siparişler, para birimi, satın alma, cihazlar, ülkeler / değerler, üst ürünler, kurtarma ve veri kalitesi uyarıları. Dönüşüm açıkça kamu-oyun olaylarının etiketlendiğini; Para toplamları asla sessiz bir şekilde birleştirilemez. A dash dönüşüm sorusunu cevaplayamaz - yüzde sıfır değil.

General OpsIQ API

Bir ayı anahtarı kullanın commerce.read; analytics.read Ayrıca analitik snapshot'ları da verir. Anahtarın bağlı çalışma alanı yazardır.

Typed Storefront okur
{ "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 } }

Mağaza önbelli kamu güvenli yapılandırma döndürür, URL, menüler ve hakemli devlet. Storefront kataloğu her temayı döndürür, sayfa tasarımını, blok tipini, blok kompozisyonunu ve premium promosyon kabukunu o kadar uzak inşaatçılara asla zor kodlar. Pages listesi özel sayfalar ve prim modalarını döndürür. Ana Sayfalar müşteri kimlikleri olmadan geri döndürür. Okulunabilir fırlatma kontrol eder. OpenAPI and Postman bu sözleşmeleri kullanır.

Final pre-start drive-through

  1. Masaüstü ve telefon: ev, arama, ürün / değişken, araba, çekout geçerliliği, hesabı, takip, indirmeler, About, Contact, policies, lookbook, sayfalar, menüler ve her canlı promosyon.
  2. Bir kumbox ödemesini tamamlayın ve sipariş durumunu, makbulunma, stokları ve yerine getirin.
  3. Bir Müşteri Sohbet siparişini ve her etkinleştirilen sosyal kanalda bir sağlayıcı-sandbox siparişini yerleştirin.
  4. Bu olayları Mağaza İstihbaratındaki doğru yüzey ve para altında görün.
⚠️
Başlangıç politikası metni, boş olmayan bir mağaza yapar, ancak yasal kopyayı gözden geçirmez. Başlangıç her acil durum değiştirinceye kadar uyarı tutar.
Satış

Kurşunlar

Kurşunlar, satın alma veya destek niyeti gösteren ziyaretçiler ya da müşterilerdir.OpsIQOtomatik olarak algılamalar davranışa dayalı: fiyatlandırma sayfası ziyaretleri, geri dönüş ziyaretleri ve sohbet etkileşimleri, çekout başlar ve yüksek nişan. takip etmeye öncelik vermek ve beslemek için arka sayfayı kullanın.CRM Boru hattı.

Kurşunlar
KurşunlarKurşunlar ekranı: IP/email, konum, cihaz, kaynak ve zaman alan sütunları ile bir arama yapılabilir tablo.Kurşunlaryoursite.comArama IP, şehir, ülke...Top kaynağı: google · Top country: USIP / EMAILKONUMAYGUTÖRÜŞÜNSaat41.62.10.4İngiltere · LondraCepgoogle4m 12s[email protected]ABD · New YorkMasaüstüdirect7m 02s[email protected]BerlinCity in GermanyCeputm:ads5m 40s203.0.113.9TorontoCity in Ontario CanadaMasaüstügoogle3m 28s1DETECTEDYüksek niyetli ziyaretçiler2TOPKurşun kaynakları ve ülkeler3ENRICHEDIP, konum, cihaz, zaman
Gerçek Lider Ekran, yüksek niyetli ziyaretçiler Aramak için (IP/email, konum, cihaz, kaynak, site üzerinde zaman) en iyi kaynaklar ve ülkelerle.

Ne yapar bir liderlik

Fiyatlama sayfası ziyaretleri

Fiyatlarınızı veya plan sayfanızı gören ziyaretçiler aktif olarak satın almayı düşünüyor.

Geri dönüş ziyaretleri

Birden fazla kez geri dönen ziyaretçiler meşgul ama henüz dönüştürülmüyor.

Chat etkileşimleri

Bir sohbete başlayan ziyaretçiler aktif olarak yardım arıyor, ya pre-purchase veya posta-purka.

Checkout başlar

checkout sayfasına ulaşan ziyaretçiler ancak satın almayı tamamlamazlar.

Form gönderimleri

Bir iletişim formu, demo isteği veya işaret biçimi gönderen ziyaretçiler.

Yüksek sayfa etkileşimi

Uzun seans süresi olan birçok sayfayı seçen ziyaretçiler derinden araştırmaktadır.

Lead Details panel

Tam profillerini görmek için herhangi bir yol tıklayın:

Kimlik Kimliği

Ad, e-posta, bilinen şirket IP ve yer gösteriyor.

Oturumlar

Tüm seanslar bu noktadan sayfa akışı, süresi ve kaynak ile yol açar.

Pages görüntüleniyor

Ziyaret ettikleri her sayfa, gerileme tarafından sipariş edildi.

Kaynak Kaynağı

Sizi nasıl buldular: organik, ücretli, sosyal, yönlendirme, doğrudan.

Lead puan puanı

Bir 0-100 puan davranış yoğunluğu, gerilik ve sayfa niyetine dayalı.

CRM statüsü

Bu liderlik CRM'e bir iletişim veya anlaşma olarak eklenmiş olsa.

Satış ipucu

AI-prodüktif öneriyi bir sonraki ne yapılacağına dair (örneğin, "Visited pricing 3 times · proaktif erişim dikkate alın"

Yüksek değerli liderlik kötü

80 üzerinde bir puanla öne çıkanlar, "Yüksek Değer" kötüge alırlar. Bunlar sizin en sıcak beklentilerinizdir. Onlara önceden ulaşılan, proaktif sohbet veya CRM boru hattı girişi için öncelik verin.

Çalışılmış örnekler

Sıcak bir liderlik çalışması

Senaryo:
A lead viewed your pricing page 3 times in 2 days, started a chat asking about enterprise plans, but has not purchased.
Ne yapmalı:

Bu yüksek bir liderliktir. Adımlar: (1) Şirket ve rol bilgisi için liderlik detaylarını kontrol edin. (2) Belirli ihtiyaçlar ve itirazlar için sohbet transkriptini gözden geçirin. (3) CRM'de toplanan bilgilerle bir anlaşma oluşturun. (4) Bir satış ekibi üyesi için bir takip görevi olarak. (52) Fiyat sayfasına dönerlerse, proaktif sohbet kuralı kişisel bir mesajı tetikleyebilir.

Anonim hale getirmek CRM kontaklarına yol açar

Senaryo:
50 anonim yüksek puanlarla yol açıyorsunuz ama e-posta adresleri yok.
Ne yapmalı:

Seçenekler: (1) Yüksek profillerde e-posta için bir indirim veya kaynak indirme sunan proaktif bir kural oluşturun. (22) Anonim ziyaretçiler bir sohbete başladığında e-posta istemek için sohbet çubuğunu kullanın. (32) Giriş / kayıt sayfalarına kimlik ekleyin, böylece geri dönen ziyaretçiler otomatik olarak tanımlanır.

Lider puanı nasıl hesaplanır?+

Puanın dikkate alınması: ziyaretlerin geri dönüşü (yüzde = daha yüksek), ziyaretlerin frekansı (daha fazla = daha üst) görüntülenen sayfalar (önemli/kontrol = daha yüksektir), seans süresi (uzun = daha büyük), sohbet etkileşimleri (engaged = daha Yüksek), ve geri dönüş toplantıları (multiple oturumları = daha fazlası).

Lider puanlama kurallarını özelleştirebilir miyim?+

Evet. CRM Konsülasyonunda, belirli anahtar kelimelere, olaylara veya kaynaklara dayalı puanı artıran liderlik kuralları ekleyebilirsiniz.

CRM

CRM · buraya başlayın

OpsIQGemiler tam bir AI-ilk CRM Bu, müşteri gerçeğini yakalar, verileri temizler, puanlar verir, antrenörler gelir öngörür ve davranır, web sitesi istihbaratı, destek, biletler, ürünler ve ödemeler bir canlı grafiği olarak yapılır. Her AI eylemi kaynaklanır, açıklanabilir, geri dönüşümlü ve onaylanır.

AI CRM
AI CRM genel bakışBir Güven Dial, Copilot'a dört AI ajanı kartının yanında bir set: Steward, Prospector, Retention ve Analist.AI CRMİşspaceGüven DialalElPilotOtomatik PilotAI kendi başına ne kadar yaparDSSteward.Dedupe, zengin,Veriler doğrulanmış verileri doğrulamaSDRAraştırmacıFind & puanYeni iş yeni işRTYeniden yokSpot churn,Sürücü yenilemeleriÂyet-iAnalistTahminler ve TahminlerSayıları açıklayın1AI-FIRSTDört uzman ajan.2YOU DECIDEGüven Dial Özerk3TRUSTEDKaynaklanmış ve geri dönüşümlü
Bir AI-ilk CRM dört uzman ajan tarafından yönetiliyor ve bir Güven Dial kendi başlarına ne kadar yaptıklarını karar veriyor.

CRM sayfaları genel bakış

AI CRM (Komut Merkezi)

Buraya başlayın

Günlük ev ekranınız: gelir pulsu, AI'nın bulduğu şey, bir sonraki hamleler, ajan sağlığı ve ROI.

Kişiler

Çekirdek

CRM'inizde insanlar ve şirketler. Arama, filtre, puan ve profiller yönetin.

Boru Hattı

Çekirdek

Yavaş ve dikkat aşamalarıyla görsel anlaşma kurulu, olasılık kazanır ve AI koçluk.

Tahminler ve Raporlar

Çekirdek

Board-grad tahmin: kararlı, muhtemelen en iyi durumda, güven aralıkları ve doğruluk takip ile.

Yaşam döngüsü

Çekirdek

Her müşteri nerede duruyor: aktif, risk altında, genişleme hazır, yenileme veya urning.

CRM Build my CRM

Yapılandırma

CRM kurulumunuzu açık bir İngilizce olarak tanımlayın. OpsIQ geri dönüşümlü bir plan yaratır ve onay için uygular.

CRM Sağlık

Opsiyonlar

Kendi kontrol sayfası: şema, ajanlar, rotalar, AI eylemleri ve canlı veriler önemlidir.

OpsIQ sizi güvende tutar

Daha önce oyunculuk yapmadan önce sorun

AI önerileri onay sırasına gider. Onaylayın, düzenlemeniz veya her birini reddetmeyin.

Asla yazma

AI bir değişiklik önerdiğinde, mevcut değeri ve önerilen değerini gösterir. İnsana kayıtlı veriler kanıtlayıcı koruma sağlar.

Her şey geri dönüşümlüdür

Her AI eylemi dergide kaydedilir. Bir tıklama ile herhangi bir değişiklik geri bırakabilirsiniz.

Açıklanabilir

Her AI tavsiye, kullanılan veri kaynakları ve nedenlerini gösterir. kara kutu yok.

Yeni mi?

1
Açık AI CRM

Sol navigasyonda AI CRM'i tıklayın. Komut Merkezi mevcut durumunuzu gösteriyor.

2
CRM Health

Açık CRM Sağlık, şemayı doğrulamak için, ajanlar ve rotalar hazır.

3
İthalat kontakları

Bir bağlantı aktifse (If a connection is active)Shopify, WHMCS Ayrıca, temaslar otomatik olarak ithal edilir. Aksi takdirde, ithalat yoluyla CSV Ya da manuel olarak yaratın.

4
Bir boru hattı oluşturun

Boru hattına gidin ve ilk boru hattınızı aşamalarla yaratın (örneğin, Baş, Qualified, Proposal, Negotiation, Won, Lost).

5
İlk anlaşmanızı ekleyin

Bir iletişimden bir anlaşma oluşturun, miktarı ve aşaması ayarlayın ve Deal Coach size rehberlik etsin.

CRM'i kullanmam gerekiyor mu?+

No. CRM is Seçmeli. OpsIQ, CRM olmadan bir takip + destek + AI platformu olarak mükemmel çalışır.

CRM bağlantı olmadan çalışabilir mi?+

Evet. İletişim oluşturabilir ve anlaşmalar manuel olarak ekleyebilirsiniz CRM platform verileri (hükreler, abonelikler, biletler) ancak gerekli değildir.

Güven Katmanı Nedir?+

Güven Katmanı, AI'nın ne yapabileceğini kontrol eden güvenlik sistemidir. Copilot modu (default): AI teklifi yapar, insan onaylar. Autopilot modu(opt-in): AI otomatik olarak düşük riskli, geri dönüşümlü operasyonlarda hareket eder.

CRM

AI CRM ev ekran ekranı

Komut Merkezi, her sabah ne olduğunu görmek için günlük kısanızdır, dikkate ihtiyaç vardır ve bir sonraki ne yapılır.

Komut Merkezi
CRM Komutanlığı MerkeziCRM evi, Tahmin /Win-rate/Pipeline toggles ile ev sahipliği yapıyor, ağırlıklı bir KPI ve Approve ile AI teklifi kuyruğunu her satırda izin ver.CRM Komutanlığı MerkeziİşspaceTahminKazanma oranıBoru HattıFORECAST · Bu Q74 bin dolar.87%AI önerileri · kuyruk onayCreate Deal · Acme $24kAlıcı ile sohbettenOnaylaİzinsizNimbus → ProposalOlumlu cevap tespit edildiOnaylaİzinsizLog görevi · Peak7 günlerinde hiçbir aktivite yokOnaylaİzinsiz1TOGGLETahminler · Win oranı · Boru Hattı2AI PROPOSESFırsatlar, aşamalar, görevler3YOU DECIDEApprove veya Dismiss
Gerçek Komut Merkezi: Tahminler, Win oranı ve Boru hattı arasında geçiş yapın ve AI teklifi kuyruğunu çalıştırın, fırsatları onaylayın veya reddetmeyin, aşama hareket eder ve önerdiği görevleri üstlenin.

Komut Merkezi ne gösterir

Bugünün sayıları

Boru değeri, anlaşmalar kazandı / yeni yollar, aktif fırsatlar ve gelir trendi, mevcut durumunuzun bir anlık.

Ne OpsIQ bulunamadı

AI-discovered insights: tezgahlanmış anlaşmalar, risk hesaplarında, yeni fırsatlar, veri kalitesi sorunları ve piyasa sinyalleri.

Ne OpsIQ yaptı

AI'nın aldığı işlemler ( Autopilot) veya önerilen (In Copilot): aşama ilerlemeleri, puan güncellemeleri, zenginleştirme ve görev oluşturma ile temas.

Onaya ihtiyaç var

Kararınızı bekleyen AI önerilerinin Queue. Her biri önerilen eylemi, nedenleme ve kanıtları gösterir. Approve, edit veya reddediyor.

Sonraki hareketle hareket

Bugün yapılacak en önemli şeyleri 10 listesini beğen: Sıcak bir anlaşma üzerinde takip edin, risk hesabında bir araştırma yapın, yeni bir liderlik vs.

Yardım statüsü

AI ajanlarının sağlığı: Yakalama, Data Steward, Deal Intelligence, Deal Coach, SDR, Retention. Green = koşu, amber = dikkate ihtiyaç duyar, kırmızı = hataya ihtiyacınız var.

Sonuçlar

ROI takip: AI'dan etkilenen anlaşmalar, zaman kurtarıldı, tahminlerin doğruluğu ve manuel CRM çalışmasına kıyasla karşılaştırıldı.

Sabah kısa bir iş akışı

1
Bugünün sayılarının Okunması

Bu ay boru hattı sağlık ve gelir trendini kontrol edin mi?

2
Onay kuyruğunu açın

Her AI teklifine göz atın. Güvenli eylemleri, gerektiğinde düzenleme, kötü önerileri reddetme.

3
OpsIQ'in ne bulduğunu kontrol edin

AI içgörünü okuyun. Riskte herhangi bir anlaşma var mı? Yeni fırsatlar var mı ?

4
Sonraki hareket listesini işe alın

En üst önceliği ile başlayın. AI bunları aciliyet ve potansiyel etkiyle sıraladı.

Zamandan sonra yakalama

Senaryo:
Bir haftalığına kaçmıştın? Ne olduysan?
Ne yapmalı:

Komut Merkezi açın ve kontrol edin: (1"Ne var?"OpsIQ“Yaptığınız süre boyunca tüm AI eylemlerini gösterir. (2) "Needs onayı", incelemenizi bekleyen önerileri gösterir. (3"Ne var?"OpsIQ bulundu" acil eşyaları vurgulamaktadır. (4) Panel tarih aralığınızı trendi görmek için yokluğunuza ayarlayın.

CRM

İletişim, şirketler ve anlaşmalar

CRM, iş ilişkilerini dört nesneye düzenler: İletişim (insanlar), Şirketler (organizasyonlar) Fırsatlar (önüşük fırsatlar), ve Görevler (takip edilen eylemler).

CRM nesneler
CRM nesnelerŞirket, Anlaşma ve Görev nesneleri ile bağlantılı bir grafikte ilişkilendirilir.CRM nesnelerİşspaceİletişimKişi · e-posta · telefonŞirket ŞirketiaccountsAnlaşma anlaşmasıgelir fırsatıGörev GöreviTakip eylemi1OBJECTSİletişim, şirketler, anlaşmalar2LINKEDBir bağlantılı grafik3TASKSTakip edilenler
Dört temel nesne (iletişimler, şirketler, anlaşmalar ve görevler) birbirine bağlı bir müşteri grafiğine bağlanır.

Kişiler

Bir iletişim nedir

CRM'inizde bir kişi olabilir, müşteri, bir umut, bir ortak veya liderlik. İletişimin bir e-postası var, şirket, etiketler, yaşam aşaması ve sıcaklık puanı.

İletişim bulmak

Arama çubuğunu isim, e-posta veya şirket tarafından bulmak için kullanın. Filtreler kullanın: yaşam döngüsü, liderlik puanları, kaynak, ülke, son etkinlik tarihi, atanan sahibi.

İletişim profili

Tam profillerini görmek için bir iletişim tıklayın: kişisel bilgi, şirket, anlaşmalar, aktiviteler, biletler, sohbetler, web ziyaretleri, liderlik puanı ve AI içgörüler.

Hotness puan skor

Bir 0-100 puan davranış sinyallerinden hesaplandı: web sitesi ziyaretleri, e-posta etkileşimi, sohbet etkileşimleri, tarih satın alma ve gerileme. Higher = hotter.

Şirketler Şirketleri

... daha fazla bilet...
İletişim-company bağlantı

İletişim, e-posta domain veya manuel atama ile şirketlerle bağlantılıdır. Bir şirket birçok temasa geçebilir.

Anlaşmalar

Bir anlaşma nedir

Bir gelir fırsatı. Anlaşmalar bir unvanı, miktarı, boru hattı, sahne, olasılık kazanmak, yakın tarih, atanan sahibi ve ilişkili kontak /company vardır.

Win olasılık

Anlaşmayı kazanma şansı. Tarihi kazan verilerinize dayanan AI tarafından manuel olarak veya hesaplanan bir yüzdesi. Kilolandırılmış tahminleri sürün.

Sağlık Anlaşması

Yeşil (sağlık), amber ( riski) veya kırmızı (küresel olarak). aktivite gerileme, aşama süresi ve bağlılık sinyalleri.

Görevler

Bir görev nedir

Bir kişiye verilen bir takip eylemi. Görevler, tarih, öncelik, tip (arada, e-posta, toplantı, diğer), ve bağlantılı iletişim/deal vardır.

AI-prodüklenmiş görevler

AI, bir şeyin dikkat etmesi gerektiğini otomatik olarak yapar: bir tezgahlanmış anlaşmaya devam ederken, risk hesabına yanıt verir, yeni bir liderlik.

Sıcak bulma yollarına yol bulmak

Senaryo:
Son zamanlarda temasa geçmemiş olan İngiltere'deki tüm yüksek işaretli bağlantıları görmek istiyorsunuz.
Ne yapmalı:

İletişime gidin: Puan > 80 Ülke = Birleşik Krallık, Son aktivite > 7 günler önce. Puanın geri çekilmesi ile Sorting. Bunlar sizin en sıcak ihmal edilen yollarınız, öncelikler.

Bir temastan bir anlaşma oluşturmak

Senaryo:
Bir iletişim sadece bir sohbet sırasında kurumsal planınızda ilgi ifade etti.
Ne yapmalı:

İletişim profili açın. "Yapın" . Anlaşma başlığı girin (örneğin, “Acme Corp - Enterprise Plan”) miktar, boru hattı ve sahne (e. g., "Qualified"). Yakın tarihi ayarlayın ve kendiniz için ataya atlar.

CRM

Boru hattı (kendi anlaşma kurulu)

Boru hattı, anlaşmalardan ayrılma aşamalarının sağdan sağa taşınmasına ilişkin görsel bir yönetim kuruludur. Spazlamalar ve kartları önceden almak için bırakın. Her kart anlaşmayı gösterir, olasılık kazanır ve sağlık durumu gösterir.

Boru Hattı
CRM boru hattıOpen-deals, Open-value, Kiloed-forecast ve Attributed-deels stats, Yeni bir düğme, AI Approve kuyruğu ve Lead /Qualified/Won board.Boru HattıİşspaceAçık anlaşmalar23Açık değer$ 128kAğırlıklı tahmin74 bin dolar.Attributed anlaşmalar12+ Yeni anlaşmaApprove kuyruk2 incelemek içinÖfkeBack Inc4kAteş$ 6kUYGUNNimbus$ 30kZirve9 $Kazandım.Yörünge$ 48k1LIVE STATSAçık değer ve ağırlıklandırılmış tahmin2AI QUEUEApprove önerilen anlaşmalar3BOARDDrag, sahne ile ilgili anlaşmalar
Gerçek boru ekranı: canlı istatistikler (açık değer, ağırlıklandırılmış tahmin), önerilen anlaşmalar için bir AI Approve kuyruk ve sürüklenme kurulu.

Boru hattının kullanılması

1
Fırsatlarınızı Görüntüle

Boru hattı tüm aktif anlaşmaları sütunlarda (kırıklar) olarak gösterir. Her köşe başlığı bu aşamadaki toplam anlaşmalar değerini göstermektedir.

2
Drag to forward

Bir sonraki aşamaya bir kartla gidin. Kazan olasılığı ve sayıları anında güncellenir. Eğer hareket başarısız olursa (validasyon hatası), kartı orijinal konumuna geri döner.

3
Kartların simgelerini kontrol et

Yeşil kötüge = sağlıklı (ortalama aktivite, takip) Amber = riskte (slowing down, need dikkat). Red = tezgahlanmış (çok uzun süre faaliyet yok).

4
Detaylar için tıklayınız

İletişim, aktiviteler, Deal Coach kısa ve hızlı eylemlerle ilgili ayrıntılı paneli açmak için bir kart tıklayın.

Onay kuyruğu

AI önerileri, boru hattı sayfasındaki onay kuyruğunda görünüyor. Her öneri AI'nın ne yapmak istediğini gösteriyor, neden ve kanıtlar.

Onayla

Öneriyi kabul et. Eylem Güven Katmanı aracılığıyla çalışır ve dergide kaydedilir.

Düzenle

Uygulamayı onaylamadan önce teklifi değiştirin. Örneğin, önerilen aşaması değiştirir veya miktarı ayarlar.

Reddedildi

Öneriyi özetle: AI gelecekte daha iyi öneriler yapmak için reddedilmelerden öğrenir.

Win olasılık açıklamış

Kazanma olasılığı el ile ayarlanabilir veya yapay zeka tarafından hesaplanabilir. Yapay zeka bunu hesapladığında, kendi kapalı işlemleriniz (kazanmış ve kaybetmiş) üzerinde eğitilmiş bir model kullanır. Eğer yeterince geçmiş veri yoksa, yapay zekâ safha varsayılan olasılığını kullanacaktır. Olasılık ağırlıklı tahmini yönlendirir: $10,000 anlaşma. 30% olasılık katkıda bulunur. $3,000 "olabildiğince" tahmini.

Bir anlaşma taşımak için

Senaryo:
Bir müşteri sözleşmeyi imzaladı ve ödedi.
Ne yapmalı:

Drag the deal card to the "Won" stage. OpsIQ will: (1) Mark the deal as closed-won. (2) Update the forecast. (3) Add a "Won" activity to the timeline. (4) If configured, trigger a webhook event (crm.deal.won). (5) Update the contact lifecycle stage to "Customer."

Yere kapanan anlaşmalar

Senaryo:
Çok uzun süredir aynı sahnede olan fırsatları bulmak istiyorsunuz.
Ne yapmalı:

Boru hattı üzerinde kırmızı (küresel) kötüges arayın. Bu anlaşmalar, yapılandırılmış çürük eşiğinden daha uzun bir süre faaliyet göstermedi ( CRM Konsasyon > boru hatlarında yer alan). Fırsat Antrenörün tepkisini görmek için her tezgahlanmış anlaşmayı tıklayın.

Birden çok boru hattı olabilir miyim?+

Evet. CRM Konsülasyonuna gidin > Borular ek boru hatları oluşturmak için: Yeni iş vs. yenilemeler veya farklı ürünler / hizmetler için ayrı boru hatları.

“Lost” için bir anlaşma sürükleydiğimde ne olur?+

Anlaşma kapalı olarak işaretlenir. Bir kayıp nedeni için sorulacaktır. anlaşma aktif yönetim kurulundan kaldırıldı ancak kapalı anlaşmalar filtresinde bulunabilir.CRM.

CRM

Fırsat koçluk

Deal Coach her anlaşmayı analiz eder ve size sağlık durumu, risk sinyalleri, anahtar insanlar, bir yeterlilik kontrol listesi, ön toplantı ve sonraki eylemleri önerir. Her şey kaynaklanır. Antrenör hangi bilet, sohbet veya aktiviteden gelir gösterir.

Deal antrenörü
Deal antrenörüBir anlaşma kartı, AI-deteced risk sinyalleri kanıt kaynakları ile, bir AI önerisi ve draft-email düğmesinin yanında listeledi.Deal antrenörüİşspaceAcme Corp · $24,000Aşama: Proposal · 60% kazanRISK SALS10 günlerinde cevap yokŞampiyon sessiz gittiYetkililer sohbette bahsettiKaynaklar: bilet #482 · sohbet 6/12 · e-posta threadAI tavsiye ederEkonomik ilişkileri yeniden başlatalım.Bir ROI recap ile alıcıVe bir 7-day yakın plan.e-postayı Tasarlamak1SIGNALSNeden bir anlaşma kaybolabilir2SOURCEDHer iddiaya göre cites kanıtları3AÇIKLAMABir sonraki adım
Antrenör bayrakları neden bir anlaşma kaybolabilir (her sinyal kaynağına gırtılır) ve bir sonraki hareketinizi ele almak için elinizden alır.

Antrenör size ne diyor

Sağlık açıklaması

Neden anlaşma sağlıklı, risk altında veya durmuş. Özel işaretler: Sahnede günler, son temas tarihi, etkinlik frekansı, rakip sözler, itiraz kalıpları.

İşaretler

Katlanmak: itirazlar yükseltti, rakip sözlerden, fiyatlandırma tartışmalarından, risk göstergelerine destek verir, yenileme / genişletici sinyalleri. Her sinyal bağlantısı kaynağına (chatk, bilet, e-posta, aktivite).

Şampiyon ve bloker harita

Anlaşmaya kim yardımcı oluyor (büyü) ve kimin direniyor (blocker). Etkileşim analizi ve iletişim rolleri üzerine.

Kazanılan Derece checklist

MEDDICC veya BANT checklist (muhtemelen) hangi nitelik kriteri karşılanır ve eksik olan. Grade: A, B, C, D veya F.

Toplantı öncesi

Planlanan bir toplantıdan önce, antrenör kısa bir şekilde üretir: gündem, kapak için anahtar noktalar, sormak için sorular, hitap etmek ve hazırlamak için riskler.

Cevap ve çağrı

Mevcut anlaşma durumuna ve son etkileşimlere dayanan bir sonraki mesaj veya senaryoyu önermiştir.

Kanıt zaman çizgisi

Her iddia antrenörün bir kaynağa bağlantı yaptığını iddia eder: bilet numarası, sohbet transkript kimlik, etkinlik tarihi veya web sitesi ziyaret.

Antrenör nasıl kullanılır

1
Kısa süre oku

Fırsat Antrenör bölümüne herhangi bir anlaşma ve kaydırın. sağlık durumunu ve anahtar sinyalleri okuyun.

2
Son derece boşlukları

Mezuniyet kontrol listesini kontrol edin. Eğer "Economic Alıcı" eksikse, bütçe sahibini tanımlamayı ve yönetmeyi planlayın.

3
Öneriler Hakkında

Antrenör bir sonraki eylemleri somutlaştırıyor. Bir görev oluşturmak için tıklayın, bir e-posta hazırlamak veya bir toplantı planlamak, tüm rotayı onay kuyruğu aracılığıyla yolladı.

Büyük bir toplantı için hazırlık

Senaryo:
Bir $50,000 anlaşması hakkında yarın bir fikirle toplantınız var.
Ne yapmalı:

Anlaşmayı aç ve Toplantı Hazırlıkları bölümünü oku.1) Son zamanlardaki etkileşimlere dayalı önemli konuşma noktaları. (2Geçen hafta sohbette dile getirdikleri itirazlar.3) Yarışan bir destek biletinde bahsetmişler. (4Zaman çizgileri hakkında sorular.5) Risk faktörleri önleyici olarak ele alınacak.Bu kısa bilgiyi odaklanmış, kanıtlara dayalı bir gündem hazırlamak için kullanın.

Bir anlaşmanın neden risk altında olduğunu anlamak

Senaryo:
Boru hattı, iyi gittiğini düşündüğünüz bir anlaşmada kırmızı bir kötüge gösteriyor.
Ne yapmalı:

Anlaşmayı tıklayın ve Deal Coach sağlık açıklamasını okuyabilirsiniz: "Bu anlaşma Proposal aşamasındaydı 22 Günler (düşman: 14. Son temas oldu. 11 günler önce. birincil temas, veri göç endişeleri hakkında bir destek bileti açtı 5 günler önce (ticket #T-892 Öneri: Göç endişesini ele almak ve bir takip çağrısı planlamak.” Şimdi tam olarak neyin düzeltileceğini biliyorsunuz.

CRM

Tahminler ve raporlar

Kurul-grad, savunmalı bir aralıkla tahmin etmek, anlaşma düzeyindeki değişim açıklamalarını ve doğru izlemeyi izlemek böylece numaralarınızı kanıtlayabilir ve açıklayabilirsiniz.

Tahmin
TahminÜç aylık tahmin sayısı Commit, En İyi Durum ve Boru bantları ve bir doğruluk notu.Tahminİşspace· Bu QUARTER312k87% to goalKomünizmEn İyi DavaBoru HattıSağlık ve tarihle ağırlıklandırılarak · Zaman içinde doğruluk takip edildi1KATEGORİLERBoru hattına kontamine2AI-WEIGHTEDSağlıkla başa çıkmak3PROVABLEDoğruluk takip edildi
Bir bakışta en iyi dava ve boru hattı, sağlıkla ilgili AI ağırlıked, doğrulukla takip edebilirsiniz böylece savunabilirsiniz.

Tahmin kategori kategorileri

Mütehid

80% veya daha yüksek kazan olasılığı ile anlaşma. Bunlar sizin en büyük olasılıkla kazanırsınız. Bu, minimum beklenen geliriniz olmalıdır.

AI-weighted muhtemelen büyük olasılıkla

Tüm açık anlaşmalar AI hesaplı kazan olasılığı ile ağırlıklandırılmıştır. Bu, yakınlaştıracağınız şeyin en gerçekçi tahminidir.

En İyi Dava

Tüm açık anlaşmalar tam değerde. Bu, her şeyin mükemmel olup olmadığını mümkün olan en yüksek gelirdir ( nadiren yapılır).

Güven aralığı

An. 80% Örneğin: "İhtimalle 10 ile 25 arasında kapanacaksınız."$45,000 ve $72,000 Bu çeyrekte."

Ne değişti ve neden

Tahminler hafta sonu- haftalık değişim referansını içerir. tahminleriniz düşerken $15,000 Rapor tam olarak hangi fırsatların değişmesine neden olduğunu açıklıyor: “Deal A bir sonraki çeyrekte kaybolmuştu ($8,000), Deal B kaybetti (İngilizce).$5,000), Deal C değerde azaltıldı ($2,000)."

Doğru izleme

Tahminler MAPE

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

Win olasılık kalibrasyon

Brier, olasılıkların gerçek sonuçları nasıl iyi kazandığını ölçtü.Eğer anlaşmalar varsa 70% Olasılık aslında kazanmak 70% Zaman, kalibrasyon iyi.

Haftalık anlık görüntüler

OpsIQ her hafta tahmininizin bir anlıkını yakalar (köpekçe). Zamanla, tahmininizin doğruluğunun nasıl geliştiğini görebilirsiniz.

Rollups ve uyarılar

Per- aşama dönüştürme

Bir sonraki her aşamadan kaç tanesi hareket eder. 80% Qualified to Proposal ama sadece 20% Proposal'dan Negotiation’a gidin, önerileriniz işe ihtiyaç duyabilir.

Per-source kazanç oranı

Hangi öncü kaynaklar en çok kazanır. Yüksek seviyeli kaynaklardan daha fazla yatırım yapın.

Per- owner performance

Her satış ekibi üyesi nasıl yapılır: anlaşmalar kazandı, boru hattı değeri, ortalama anlaşma büyüklüğü, kazan oranı.

Uyarılar

Sandbagging (gerçekçi olarak düşük olasılık), aşırılık (gerçekten yüksek) ve durgun olmayan risklerle (düşük sinyalleri gösteren yüksek riskli anlaşmalar).

Bir tahminin düşmesinin anlaşılması

Senaryo:
Your quarterly forecast dropped from $180,000 to $155,000 since last week.
Ne yapmalı:

Tahmin sayfasını açın ve "What changed" raporu kontrol edin: “Acme Corp anlaşması (Aptal)$15,000) Lost'a taşındı, rakip seçilmiş. Beta Inc anlaşması ($8,000 Yakın tarih bir sonraki çeyreke itti. Gamma LLC ile Yeni anlaşma ($3,000 Bu hafta ekledi. net değişim -$20,000 + $3,000 = -$17,000 180K'dan 163K'ye kadar düşmeyi açıklayın ( Kalan 8K ile diğer anlaşmalarda olasılık ayarlamaları ile açıklanmaktadır).

CRM

Yeni iş bulmak

Prospecting Agent, ideal müşterinizi tanımlamanıza ve araştırma potansiyel müşterilerinize yardımcı olur ve hedef şirketleri ekleyin ve AI araştırmasını, puanını ve ilk dokunuşunu hazırlayın.

Arayışlar
ArayışlarAI-foundal potansiyel şirketlerin her biri uygun notlar, puanlar ve bir taslak erişim düğmesi ile listesi.ArayışlarİşspaceSDR ajanı tarafından bulunan kehanetlerNorthwind Ltd.SaaS · 50 personel · işe destek88TaslağınKobalt MfgÜretim · 200 personel74TaslağınMesa Retaile-ticaret · 30 personel69TaslağınVega SağlıkSağlık · 80 personel63Taslağın1FINDAI kaynakları hedef hesaplar2PuanFit & niyet sıralandı3DRAFTİlk dokunuş sizin için yazılmış
SDR ajanı hedef şirketleri bulur, uygun puanlar ve incelemeniz için ilk dokunuşu taslaklar.

One-time kurulum

1
İdeal müşterinizi açıklayın

CRM Konspektifine gidin > Prospecting. ideal müşteri profilinizi (ICP): hedef endüstriler, şirket boyutları, iş başlıkları, coğrafi odakları, ürün-dönüşüm şartları ve minimum uygun puan. Örnek: "B2B SaaS şirketleri ile birlikte 50-500 ABD / İngiltere'deki çalışanlar, geliştirici araçları satıyorlar, VP of Sales veya Büyüme Başı birincil temas olarak.”

2
Hedef şirketleri ekleyin

Şirket domainlerine veya araştırma yapmak istediğiniz isimleri girin. Ayrıca AI'nın ICP’nize dayanan şirketleri önerdiğine izin verebilirsiniz.

3
Araştırma sonuçları

AI, mevcut verilerle her şirketin zenginleştirilmesi: boyut, endüstri, teknoloji yığını, son haberler ve açıklama ile puana uygun.

4
Yardımı onayla

İyi bankacılık şirketleri için, AI kişiselleştirilmiş ilk dokunuş mesajı hazırlar. İnceleme ve kuyrukta onay verir.

Fit skor

Her bir beklenti, 0-100 beş faktöre dayanan uygun puan alır:

ICP sığ

Şirket ideal müşteri profilinizi (sanayi, boyut, yer) nasıl iyi karşılaştırır.

Yeterli sinyalleri

Ürününüze şimdi ihtiyaç duyduklarına dair kanıtlar var mı? İş yayınları, teknoloji değişiklikleri, rakipler hakkında şikayetler.

Bütçe vekili

Şirket büyüklüğü, finansman aşaması ve gelir göstergeleri bütçe kullanılabilirliği öneriyor.

Ürün maç

Ürününüz endüstri ve teknolojiye dayanan işlerine nasıl bağlıdır.

Destek Uyumlu

Bu müşteriye etkin bir şekilde hizmet edebilirseniz (zaman Bölgesi, dil, karmaşık).

Hedef bir şirket araştırma

Senaryo:
acme.com'ın takip etmeye değer olup olmadığını değerlendirmek istiyorsunuz.
Ne yapmalı:

Ekle acme.com Açıklama listesine ekleniyor. 78/100 (iyi uyum). Nedenler: B2B SaaS, 120 çalışanları, ABD merkezli, yakın zamanda bir Satış Başkan Yardımcısı işe aldı (acil durum sinyali), rakip X'i kullanıyor (ürün eşleşmesi). Alıcı sinyalleri: fiyat sayfanızı geçen ay iki kez ziyaret etti (web site takipinden). [email protected] (Satış Başkan Yardımcısı) Tasarlanan açılış yazısı, son işe alım ve fiyatlandırma sayfalarına yapılan ziyaretlere atıfta bulunuyor.

CRM

Otomatik takip-up dizileri

Eşitlikler çok adım takip ediyor: e-posta karışımı, bekle, görev, çağrı ve ilk gönderiyi onayladığınızdan sonra otomatik olarak çalışan webhook adımları.

Eşitlikler
Takip et dizileriBir yatay dizi akış: E-posta, üç gün bekleyin, E-Posta, sonra bir görev, cevap algılama ile.Takip et dizileriİşspaceİlk gönderiyi onaylamadan sonra →EmailGirişBeklen3 günEmailTakip etGörev GöreviAra.Adımlar e-posta olabilir, bekle, görev veya webhook. Bir cevap otomatik duraklamaları sırayı durdurur.1AUTOMATEÇok adım takip-up2STEPSE-posta · bekle · görev · webhook3YOU APPROVEİlk gönderi kapılı
Otomatik çoklu adım takip (email, bekle, e-posta, görev) ilk ve bir cevap otomatik olarak duraklamanızı onaylar.

Nasıl diziler çalışır

1
Bir dizi oluşturun

Adımları tanımlamak: e-posta, bekle 3 günler, e-posta, bekle 5 Günler, görev ( cevap vermezse), e-posta. Her bir e-mail adım özelebileceğiniz bir şablona sahiptir.

2
Enroll kontakları

Diziye temaslar ekleyin. AI ayrıca olası sonuçlardan kayıt önerebilir.

3
Otomatik infaz

Adımlar otomatik olarak programda çalışır. Herhangi bir noktada iletişim cevapları varsa, sıra durakları otomatik olarak durur.

4
İzleme sonuçları

Açık oranları görün, cevap oranları, dönüşüm oranları ve adım başına gelenler. Bu şekilde sıranızı optimize etmek için kullanın.

Cevap: De ki: "

Bir iletişim cevaplandığında, AI cevabı sınıflandırır:

Pozitif

İlgilenen, konuşmak istiyor. Sequence duraklar, takip için yaratılan görev.

İtiraz ediyorum.

Endişeler var ama reddetme. Eşitlik durakları, itiraz ayrıntılarıyla yaratılan görev.

Üyelik Sonlandır

mesajları almayı durdurmak ister. İletişim kalıcı olarak bastırılır.

Şimdi Değil

İlgilenen ama zamanlama yanlış. Sequence duraklar, snooze görevi oluşturuldu.

Yanlış kişi

Doğru temas değil. Eşitlik durur, yorum için tıklayın.

Destek Desteği Destek Desteği Destek Desteği

Bir destek sorusu, bir satış yanıtı değil. Sequence duraklar, bilet yaratıldı.

Anti-spam korumaları

Opt-out

Unsubscribe talepleri hemen onurlandırılır ve temas tüm gelecekteki dizilerden baskılanır.

Günlük gönderi cap

İş Alanı düzeyinde günlük limit (default: 1,000 e-postalar) Önlemler bu spam filtreleri tetikledi.

Per-ile limiti

Günde temas başına maksimum 1 mesajı. ezici bireysel insanları önler.

Over-Cap

Günlük kapakları aşan adımlar ertesi gün ertelenir veya atılırlar.

Bir iletişim bir dizi sırasında destek bileti açarsa ne olur?+

Dizi otomatik olarak duraklar. Destek öncelikli bir şekilde ele alır. Arama konusu çözüldükten sonra sıra manuel olarak yeniden başlayabilir.

A/B test dizi adımlarını yapabilir miyim?+

Doğrudan dizilerde değil, ancak farklı mesajlaşma ile iki sıra oluşturabilir ve sonuçlarını karşılaştırabilirsiniz.

CRM

Büyüme Araçları

CRM'in altında bir sayfa büyüme motoru tutuyor: tekrarlanan gelir (MRR/ARR), ürün kataloğu, öncü formlar, rezervasyon bağlantıları ve yönlendirme. Buradaki her şey doğrudan CRM’e yazıyor, bu yüzden bir form teslimi veya bir rezervasyon çağrısı, bir yay sayfasında değil.

Sayfada hangi hayatlar yaşıyor

Gelirleri yeniden değerlendirin

Gelir

MRR ve ARR, gerçek fatura yönlendirme liderlikinizden projelendi. Abonelikler platform başına ödemelerden gruplanır, fatura döngüsü ödeme boşluklarından itibaren yapılır ve bir ödeme aşırılandığında abonelikleri gerçekleştirilir 1.5 times its cycle. Müşteriler link to CRM kontakları otomatik olarak e-posta taşırlar.

Ürün katalogu

Kataloğu

Ne sattığınız için bir gerçek kaynağı. Alıntılar katalogdan adını ve listesini alır ve alıntıları ürün tarafından gelire kadar döndürürler. Ürünler arşivi, asla silinmezler.

Kurşun-kapı form formları

Yakalanan yakalama

Her form ev sahibi bir sayfa artı kendi siteniz için gömülü bir kod alır. Gönderimler temasa geçti, sahibi bir bildirim alır ve yönlendirme kurallarınız liderliği belirler.

Booking bağlantıları

Planlama

Bir bağlantı paylaşın, umutlar ücretsiz bir yuva seçelim. Slots organizatörün çalışma saatlerine saygı duyar, zaman bölgesi ve mevcut toplantılar yaratır. Bir rezervasyon toplantıyı oluşturur, e-postaları bir onay yaratır ve organizatörü bilgilendirir.

Başaklık

Yönlendirme

Bölge kuralları ilk önce çalışır, sonra alan kuralları ( ülke veya kaynak gibi bir alan ile uyumludur), o zaman sahip olmayan bir kayıt herkes için görünmezdir ancak otomasyon tarafından yaratılan bir web sitesi (bir bağlantı kartı, iletişim kurma) interaktif bir duruma sahiptir: Bir anlaşma hala aynı kurallarla yollanır ve böylece zaten bağımsız olarak kabul edilen her şeyi yerine getirmek için aynı kurallara ihtiyaç duyar.

İlk formunuzu oluşturun

1
Açık Büyüme Araçları

CRM'e git, sonra Büyüme Araçları, o zaman öncü formlar bölümü.

2
Adı it and pick fields

Bir isim ve bir komünal alan listesi, örneğin adı, email,phone,message. Email her zaman gereklidir.

3
Paylaş veya gömün

Onu herhangi bir yerde paylaşmak için evlenmiş bağlantıyı kopyalayın veya bu tür kodu kopyalayın ve web sitenizin herhangi bir sayfasına yapıştırın.

4
İzle, ipuçları geliyor.

Her teslim bir CRM formu ile temasa geçti. submized activity, an owner notification ve otomatik routing.

💡
Public capture sayfalar çalışma alanınızın kendi adresini kullanır. Cloud workspaces onların atan alt domain (company.opsiq. help), bu yüzden bağlantı her zaman doğru verileri çözmektedir.

Yapılı korumalar

Bots başarı görüyor, hiçbir şey görmüyorsunuz

Gizli bir balpot alanı sessizce botlar bot teslimleri.

Oran sınırlı

IP adresinin her saat için on gönderimler ve rezervasyonlar.

Consent dürüst kalır

Bir form sunmak pazarlama onayı vermez. Sadece açık bir onay çek kutusu yapar.

Çift rezervasyon yok

Bir slot, rezervasyon anında taze bir erişilebilir kontrole karşı yeniden değerlenir.

Tekrarlanan gelir verileri nereden geliyor?+

Aynı ticaretten itibaren, satış sayfanızı kullanarak faturalama konektörleri tarafından besleniyor. Yeni bir platforma bağlanmaktan sonra tekrarlamak için Re-sync kullanın.

Bir web sitesi olmadan formları kullanabilir miyim?+

Evet. Her form, çalışan bir adres üzerinde barındırılan bir sayfaya sahiptir, ya da JavaScript olmadan.

CRM

Messaging Hub (SMS ve WhatsApp)

Bir bağlantı, yirmi ağ geçidine kadar. Aslında kullandığınız SMS ve WhatsApp sağlayıcılarına bağlanın, varsayılan olarak işaret eder ve herhangi bir iletişim metninde bulunun. Consent CRM tarafından herhangi bir ağ bağlantısından önce kontrol edilir.

Hazırlayın.

1
Enable the connection

Bağlantı sayfasında, Hub (SMS ve WhatsApp) açık Messaging Hub (PMS ve Bingo) açın ve etkinleştirin.

2
Add a sağlayıcı ekle

Aynı çekmecede veya CRM Büyüme Araçlarında, düşüşten bir ağ geçidi seçin (Twilio, Vonage, Termii, Meta WhatsApp Cloud, Infobip ve daha fazlası), API kimliklerini ve bağlantısını yapıştırın. Farklı hesaplarla aynı geçit dahil olmak üzere birkaç tane ekleyebilirsiniz.

3
İnterneti Tel

Her sağlayıcı girişi kendi webhook'unu gösterir URL Bir kopya düğmesi ile.Bağlantının teslim-report ve inbound-message ayarlarına teslimat durumu ve yanıtları geri almak için OpsIQ.

4
Bir temastan gönder

Bir iletişim açın ve SMS veya WhatsApp düğmesine kullanın. Birden fazla sağlayıcı kanalı desteklerse, bir seçici veya seçmenize izin verir; aksi takdirde varsayılan kullanılır.

Consent ilk gelir

Sadece onaylı

Bilinmeyen onay onaylanmaz. SMS onayı açıkça verilirse bir gönderi reddedilir. WhatsApp aynı onay alır.

Do-not-ile her zaman kazanır

Bir do-ileti bayrak her kanalda bloklar, başka ne ayarlandığı önemli değil.

Suppression şerefli

Baskı listesindeki iletişim asla mesajlanmamıştır.

Refusals onların nedenlerini adlandırıyor

Bir bloke gönderme size tam olarak neden olduğunu söyler, bu yüzden tahmini yerine verileri düzeltebilirsiniz.

Geliştiriciler için: webhook sözleşmesi

URL şekli

https://your-address/opsiq/cron/messaging_webhook.php?sk=SITE_KEY&e=ENTRY_ID&t=TOKEN. per-entry token, sağlayıcı bağlantılı olduğunda ve asla düzenleme üzerine dönmediğinde minted.

Formatlar anladı

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

Etkileri

Teslimat raporları, sağlayıcı mesajı teslim olarak taşıyan veya çürüttüğünde damgayı taşır. Bağışlı mesajlar iş alanı içinde telefon numarasıyla, bir mesaj olarak araziyi eşleştirir ve sohbetin cevap verdiğini işaret eder.

Başarısız mod

Yanlış veya eksik token cevaplarını 403. Bilinmeyen maaş yükleri sayılıyor ve görmezden gelin, asla ölümcül değil, bu yüzden yanlış yapılandırılmış bir ağ geçidi son noktayı kıramaz.

Hangi ağ geçitleri desteklenmekte?+

Twilio, Vonage, Plivo, MesajBird, Sinch, Infobip, Telnyx, ClickSend, Termii, Afrika'nın Konuşanları, BulkSMS, Textlocal, Meta WhatsApp Cloud, 360log, SMSAPI, Gupshup.

Güvenli kimlikler mi?+

Credentials, tarayıcı ayarlarında şifreli olarak depolanır ve asla tarayıcıya geri dönmezler. Boş bir sır ile giriş yapın saklanan birini tutar.

AI mesajları gönderebilir mi?+

Evet, onay gerektiren ve aynı onay kapısını çalıştıran kayıtlı eylemler aracılığıyla. AI ayrıca mevcut olanı açıklamak için bağlantılı sağlayıcıları listeleyebilir.

CRM

Koruma ve büyüyen müşteriler

Yaşam döngüsü yönetimi mevcut gelirleri korumanıza yardımcı olur. Her hesap bir churn risk puan alır, sağlık puanı, genişleme puanı ve önerilen bir başarı oyun kitabıdır.

Yaşam döngüsü
Lifecycle BoardBir müşteri yaşam döngüsü (Onboarding, Active, At-risk, Renewal) her hesap kartında sağlık barları ile.Yaşam döngüsüİşspace(Gerek)AcmeCity in California USAsağlık 40AKTIFGlobexsağlık 88İnternetsağlık 76AT-RISKSoygunsağlık 28YenilemeŞam12d'de yenilenenlergenişleme +$8k1STAGESYeniden yenilemek için2SCOREDSağlık ve genişleme3PLAYBOOKBir sonraki hareket önerilen
Müşteriler, aktif, risk ve yenileme yoluyla hareket ederler, her biri bir oyun kitabı ile sağlık ve genişleme için puan alır.

Yaşam döngüsü kurulu

Sahne Haritası

Her hesabın nerede olduğunu gösteren görsel yönetim: Baş, Prospect, Fırsat, Müşteri, genişleme, Yenileme, Riskte Churned.

Risk hesabı

Hesaplar yüksek kupun riski ile bayraklandı. Her biri üst sürücüyü (tehlike, inaktivite, ödeme başarısızlığı) ve önerilen bir kurtarma oyunu gösterir.

genişleme fırsatları

Daha fazla satın almaya hazır sinyalleri gösteren hesaplar: yüksek kullanım, özellik talepleri, plan soruşturmaları.

Yenilemeler nedeniyle

Önümüzdeki yenileme tarihleri ile hesaplar. Risk seviyesi ve gelir değeri tarafından sıralanır.

OpsIQ churn risklerini nasıl algılar

Churn riski birlikte bir araya gelen birden fazla sinyalden hesaplanmıştır:

CRM sinyalleri

Sağlık, inaktivite, son kayıplar, düşüş.

Destek sinyalleri

Açık bilet sayımı, bilet hacmi artışları, olumsuz duygular, escalations.

Ürün etkileşimi

Giriş frekansı, özellik kullanımı, sayfa ziyaretleri, API aramaları.

Billing sinyalleri

Başarısız ödemeler, faturalar, aşağılama talepleri, iptal sayfası ziyaretleri.

Oyun kitapları

Kaydet oyun

Risk hesaplarında: proaktif olarak ulaşmak, endişeyi ele almak, destek sunmak gerekirse yükselerek.

Renewal oyun

Gelecek yenilemeler için: memnuniyet, inceleme kullanımı, mevcut değeri onaylayın, uygun olup olmadığını teşvik edin.

Genişleme oyun

Hazır-toplan hesapları için: mevcut yükseltme seçenekleri, başarı hikayelerini paylaş, ROI'yi göster.

Impion play

Hesapları altlama için: eğitim sunmak, en iyi uygulamaları paylaşmak, kullandıkları özellikleri sağlamak.

Daha önce churn'i işaret ediyor

Senaryo:
Günlük olarak normalde giriş yapan bir müşteri, için giriş yapmadı 2 Haftalar ve açıldılar 3 Bu ay biletleri destekle.
Ne yapmalı:

Yaşam döngüsü kurulu bu hesabı sürücüleri ile " Riskte" olarak gösterir: inaktivite (In Risk)14 Son girişten bu yana günler (ve destek) ve 3x Normal bilet hacmi) Önerilen oyun: proaktif erişim çağrısı, bir ürün konusu var mı? Rakipleri değerlendiriyor mu? Erken müdahale hesabı kurtarabilir.

CRM

Verilerinizi temiz tutmak

Data Steward ajanı otomatik olarak veri kalitesini bulur ve düzeltir: Tekrarlar, eksik alanlar, inkonsistler ve stale kayıtları.

Veri yöneticisi
Veri yöneticisiBir veri kalitesi sorunları listesi (kesin, eksik, durgun, format), her biri bir tıkış düzeltme eylemi ile.Veri yöneticisiİşspaceSteward ajanının bulduğu veri sorunlarıDüzelt[email protected] and [email protected]BirleştirEksiksiz Eksikliği12 bağlantıları hiçbir şirket yokEn zenginEski38 Anlaşmazlıklar için 90+ günlerİncelemeBiçim Biçimi4 formatlarında telefon numaralarıTüm düzeltmeleri düzeltin1CATCHESDupes, boşluklar, durle2EXPLAINSNeden her şeyi bayrakladı3FIXESOnayınız için
Steward ajanı CRM'inizi temiz tutar, tekrarlar bulmak, boşluklar, stale kayıtları ve kötü formatları bulmak, onay üzerinde ayarlama.

Ne yakalıyor

Duplicate contact

Multiple records for the same person (e.g., [email protected] and [email protected]). The steward proposes merging them.

Eksik veriler

E-posta olmadan iletişim, miktarlar olmadan anlaşmalar, alansız şirketler. Mevcut kaynaklardan doldurmayı önerir.

Bağlanmamış kayıtlar

İlgili temaslar olmadan, şirketler olmadan iletişim kurar. e-posta domain ve bağlamda bağlantı kurmak.

Uyumsuzluklar

20% olasılık ile "Müşteri" aşamasına bir anlaşma, yanlış eşsiz endüstriye sahip bir şirket.

Yanlış aşamalar

Aynı aşamada, yaşam döngüsünin faaliyetleriyle eşleşmediği çok uzun veya kontaklar için olan anlaşmalar.

Nasıl kullanılır

1
Açık The steward list

CRM'e gidin ve Data Steward bölümü (veya CRM Health’den açın).

2
Approve güvenli düzeltmeler

Yeşil öğeler güvenlidir: açık kopyalar, belirgin eksik veriler. Buları toplu olarak Approve.

3
Geri kalanı gözden geçirin

Amber eşyaların yargınıza ihtiyacı vardır: küçük farklılıklarla mümkün olan çoğaltmalar, önerilen aşama değişiklikleri, şirket bağlantı. Her birini gözden geçirin.

Temizlik tekrar temasları

Senaryo:
The steward "John Smith (John Smith) buldu [email protected]) ve "J. Smith ([email protected]) ": aynı e-posta, farklı ekran isimleri.
Ne yapmalı:

Steward para toplamayı önerir: rekoru daha fazla aktivite ile tutar, diğer rekorun anlaşmalarını ve faaliyetlerini birleştirir. Öneriyi gözden geçirin, gerekirse hayatta kalan ekran adını ayarlamanız ve onaylayın. Her iki kayıt da bir araya geldi.

CRM

CRM Build my CRM

CRM'im, CRM kurulumunuzu açık bir İngilizce olarak tanımlamanıza izin veriyor. OpsIQ doğrulanmış, geri dönüşümlü bir plan üretiyor ve onay üzerinde geçerli değil. No kodlama, no manuel yapılandırması tıklayın.

CRM Build my CRM
CRM Build my CRMSoldaki doğal bir açıklama, sağdaki belirli bir CRM planı, alanları ve segmentleri üretiyor.CRM Build my CRMİşspaceİşinizi açıklayınBiz bir web tasarım ajansıyızAylık koruyucular satmak veKüçük projelere küçükişletmeler.CRM Build my CRMGenrated planAşamalar: Başlayın → RetainerFırsat türleri: koruyucu, projeAlan: aylık değerBölümler: SMB, ajansDizilim: onboardingOnayla & Uygula1DESCRIBEİngilizce2AI PLANSSahneler, alanlar, segmentler3APPROVEUygulamalı · kodlama yok
İşinizi açık İngilizce olarak tanımlamak; OpsIQ tüm CRM ( aşamalar, alanlar, bölümler) ve onay üzerinde uygular.

Nasıl çalışır

1
Ne istediğini açıklayın

CRM kurulumunuzun sade bir İngilizce tanımı. Örnek: "Örneklerle yenileme hattı oluşturun: Geri gelmek, İletişime Geçin, Yenilenen Renewed, Lost. Puan, iki kez fiyat gördüklerinde daha yüksek hale gelir."

2
Plana göre

OpsIQ, ne yaratacağını bir önizleme gösterir: boru hattı, aşamalar, sahne olasılıkları, puanlama kuralları, yaşam döngüsü kuralları. Her öğeyi gözden geçirin.

3
Uygulama Başvuru

Planı uygulamak için başvuru tıklayın. Her değişiklik bir tıklamada geri alabileceğiniz bir paket olarak kaydedilir.

4
Gerekirse geri dön

Bir şey doğru değilse, Undo'yu tüm paketleri geri almak için tıklayın. CRM önceki durumuna döner.

Ne inşa edebilirsiniz

Borular ve aşamalar

Özel aşamalarla, varsayılan olasılıklar ve çürük eşleri ile isimlendirilen boru hatları oluşturun.

Kuralları

Davranışa dayalı puanlar artırmak: "Score fiyatlarını gördüklerinde daha yüksek," kariyer sayfasını ziyaret ettiğinde daha düşük."

Yaşam döngüsü kuralları

Otomatik olarak yaşam döngüsü aşamalarını ilerletin: “Bir demo talep ettiğinde SQL ’a gidin”, "Mükemmel olmak ne zaman yapılırsa Müşteriye gidin."

Özel alanlar

İletişim, anlaşmalar veya şirketler için alanları ekleyin: metin, sayı, tarih, seçin, çekbox, URL, e-posta.

Kazanılan Derece checklist

MEDDICC veya BANT checkliste, Anlaşma Antrenör notlarını karşılayın.

Yeni bir boru hattı kurmak

Senaryo:
SaaS aboneliklerini yönetiyorsunuz ve yenileme için bir boru hattına ihtiyacınız var.
Ne yapmalı:

Tip: "Yenileme boru hattı oluşturmak. Aşamalar: 90 Günler Out (The Days Out)10%), 60 Günler Out (The Days Out)25%.)40%)60%.)100%) Churned (0%). çürük eşini ayarlamak 14 Günler.” OpsIQ Plan yaratır, incelersiniz ve Uygulamaya tıklayın. Boru hattı hemen boru sayfanızda görünür.

Mümkün olmayan bir şeyi tarif edersem?+

İnşaat sadece eylemleri nasıl doğrulayacağını biliyor. yeteneklerinin dışında bir şey isteyin (örneğin, “Özel API ile birlikte).

Tamamlanan değişiklikler yapabilir miyim?+

Evet, CRM eylemimi her Build My CRM action is captured as a reversible package. Go to CRM Health > Change History to see all paketler ve bunların herhangi birini geri almak için.

CRM

CRM inizi kurmak senin yolunuz

Modellemeyi tercih eden takımlar için Manual CRM yapılandırması. CRM'i oluşturan tüm ayarlar da geleneksel form alanları olarak mevcuttur.

Borular ve aşamalar

Oluşturun, yeniden sipariş edin ve boru hatları ve aşamaları silin. Varsayılan olarak sahne başına olasılık belirleyin. Bir anlaşmadan önce (günde bir anlaşma olmadan) "süresel" işaretlenir.

Özel alanlar

Fırsatları, bağlantıları veya şirketleri ele almak için alanları ekleyin. Alan türleri: metin, sayı, tarih, seçin (önlendirilmiş seçeneklerle dikkat edin), checkbox, URL, e-posta. Özel alanlarda nesne profili ve filtreler üzerinde görünür.

Kazanılan Derece checklist

Fırsat Antrenörünün anlaşmalarını değerlendirmek için kullandığı kontrol listesini tanımlayın. MEDDICC, BANT veya özel bir kriter seti seçin. Her öğe gerekli veya Seçmeli olabilir.

Yaşam döngüsü kuralları

Otomatik aşama geçişlerini tanımlamak: Bir temas bir koşulla (görüşler fiyatlandırması, bir form gönderir, satın alır), yaşam döngüsü aşamaları otomatik olarak ilerlemektedir.

Lead-scoring kuralları

Davranışlara dayanan liderlik puanlarını artırmak veya azaltmak. Örnekler: "Tested pricing page = +15 Puanlar "Downloaded whitepaper = +10 Puanlar "Visited Career page = -5Minimum sayı ayarlanabilir (e.g., "en azından en az fiyat fiyatlandırmasını gör 2 Zamanlar.

Kaydetilen görüşler

Bağlantılar, anlaşmalar veya şirketler için filtre+sort kombinasyonları oluşturun. Ekibinizle görüş paylaşın. nesne türünde varsayılan bir görünüm ayarlayın.

Bir liderlik skoru kuralı eklemek

Senaryo:
Fiyat sayfanızı iki veya daha yüksek bir puan almak için gören kontakları istersiniz.
Ne yapmalı:

CRM Konsülasyonuna gidin > Lead Scoring Rules. Click Add Rule. Set: Event = "pageview", URL = "The contains ="/pricing", Asgari sayı =2Puan artırmak = +20. Save. Bir sonraki sefer puanlayıcı çalışır, bu kuralı eşleşen temaslar + olacaktır 20 Onların liderlik puanına.

CRM

CRM Sağlık kontrolü

CRM Health, CRM'inizi doğru bir şekilde ayarlayan ve sorunsuz çalışan kendi kendine özgü bir sayfadır.

Sağlık kontrolü
CRM Sağlık kontrolüBir sağlık puanı, geçiş ve uyarı yapılandırma kontrollerinin bir checklistinin yanında 92 ring at the checklist of pass and warning configuration checks.CRM Sağlık kontrolüİşspace92SAYLIĞIBoru aşamaları yapısal olarak yapılandırıldıBağlantılı ve ithal etmekAI ajanları etkinleştirdi!Aktif takip serisi yok!12 kontakları eksik şirket1ÖfkeKurulumnızı onaylayın2FLAGSEksik olan nedir3PuanBir genel sayı
Bir sayfa CRM denetimi: genel bir sağlık puanı artı doğru olarak neyin ayarlandığı ve hala dikkat gerektiren bir kontrol listesi.

Ne kontrol eder

Şema

Veritabanı masaları var ve doğru sütunlara sahip. Eğer bir göç kaçırılırsa, CRM Health onu bayraklayacaktır.

AI ajanlar

Tüm CRM ajanları (Kap, Data Steward, Deal Intelligence vs.) kayıtlı ve sağlıklıdır. Yeşil = koşu, amber = dikkate ihtiyaç duyar, kırmızı = hataya ihtiyacınız vardır.

Yollar

CRM API rotaları ve AJAX uç noktaları kayıtlı ve çağrılabilir.

AI eylemleri

CRM aksiyon kataloğu, Action Record'da kayıtlıdır. Eğer eylemler eksikse, CRM Health’in kendilerine kayıt yaptırarak kendini kınayanları.

Canlı veri sayısı sayılıyor

Toplam temaslar, şirketler, anlaşmalar, görevler, aktiviteler ve olaylar. ithalat doğrulama ve devam eden veri yakalaması için kullanışlıdır.

Kurulum sonrası kontrol check

İlk kez CRM kurulumundan sonra, açık CRM Health ve tüm çekleri yeşildir. Eğer herhangi biri amber veya kırmızıysa, teşhis açıklaması için öğeye tıklayın ve düzeltme önerilir.

CRM Sağlıkını ne sıklıkta kontrol etmeliyim?+

İlk kurulumdan sonra, büyük güncellemelerden sonra ve CRM davranışı yanlış görünüyor. CRM Health self-heals birçok sorun (sadece sayfayı açarak eksik eylem kayıtları gibi)

CRM

Geliştiriciler için CRM bağlantıları

CRM tam bir kamu REST API ve ek gelen webhooks ortaya çıkarır, böylece manuel ihracat olmadan herhangi bir yığına uygundur.

API son noktaları

Kimlik Doğrulama

API key (Authorization: Bearer opq_...) with scope crm.read or crm.write. POST to /api/v1.php with action and site_key.

Kişiler

crm. Contacts. list (search + filter), crm . ilet. detail (as ID) krim. infos. upsert (rete or update), cr mm. Contacts. save.

Anlaşmalar

crm. deals. list, crm . dears. detail, cr m. dels. update, crmi. deallys. advance (tüm Güven Katmanı aracılığıyla).

Faaliyetler Etkinlikler

crm. activities. list (bir temas/deal için zaman çizgisi), krim. aktivitys. record (log a new activity).

Olay

crm. events. list (muhtemelen değiştirilebilir değişim,_id cursor), crm . evens. catalog (Mevcut etkinlik türleri).

API ile bir anlaşma oluşturun
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 olayları

opsiq.contact.upsert

Bir temas oluşturulduğu veya güncellendiği zaman ateşlendi. Bu, abone olmak için iletişim olayıdır; ayrı bir yaratılmadık olay yoktur.

contact.lifecycle_changed

Bir temas farklı bir yaşam döngüsüne taşınırken ateşlendi.

contact.status_changed

Bir temas durumu değiştiğinde ateşlendi.

contact.conversion

Bir dönüşüm bir temasa karşı kaydedildiğinde ateşlendi.

contact.tag_added

Bir etiket bir temasa eklendiğinde ateşlendi.

contact.erased

Bir temas bir gizlilik isteği için silindiğinde ateşlendi.

crm.deal.created

Bir anlaşma oluşturulduğunda ateşlendi.

crm.deal.stage_changed

Bir anlaşma farklı bir aşamaya taşınırken ateşlendi.

crm.deal.won

Bir anlaşma kazandığında ateşlendi.

crm.deal.lost

Bir anlaşma kaybolduğu zaman ateşlenir.

crm.company.created

Bir şirket yaratıldığında ateşlendi.

crm.task.created

Yeni bir görev yaratıldığında (bireysel veya AI-projektif)

email.replied

Bir temas e-postaya yanıt verdiğinde ateşlendi.

email.bounced

Bir dış e-postanın attığında ateşlendi.

💡
Ara. webhooks.events.list Kurulum kodundan elde edilen yazar için, her olayın ödeme yükü ile yükleme işlemine karar verilir. Bu nedenle aslında ne geldiğiyle aynı fikirde olmayabilir. The full list also appears in Webhooks section.

Tüm webhook olayları HMAC imzalı ve başarısızlık üzerine yeniden müdahale edilir. Abone olun URL Ayarlar > Webhooks veya anket crm.events.list with since_id for a durable change feed.

CRM iletişimlerini Google Dokümanlar'a iletiyorsunuz

Senaryo:
Pazarlama ekibiniz için Google Sheet'ta görünmek için her yeni CRM temasını istiyorsunuz.
Ne yapmalı:

Bir webhook abonesi kurmak içinopsiq. contact.upsert. Point it to a Google Apps script web app or a Zapier webhookURLÖdeme yükü, iletişim adı, e-posta, şirket, liderlik puanı ve kaynağı içerir. Senaryonuz her yeni temas için Google Sheet'a bir sıra göndermektedir.

CRM

Segmentler

Segmentler CRM görüşleri, outreach, promosyonlar ve diğer seyirci-aware araçları için yeniden kullanılabilir iletişim filtrelerinden tasarruf eder.

Ürün ekran ekranı
SegmentlerSegment editörü koşulları birleştirir, canlı maç sayısını gösterir ve operatörün canlı bir filtre veya pinned snapshot seçmesine izin verir.SegmentlerİşspaceMODDereceLOGICHepsiMATCHES1,248LIVE ÇALIŞMASPACEMüşteri aşamasıeşitler Aktif müşteriKural KuralıSon etkinlik30 gün içindeKural KuralıÜlkeBirleşik KrallıkKural KuralıYüksek niyetEn az 70Kural Kuralı1CHOOSE MODECanlı veya anlık2ADD RULESALL veya ANY3REUSEKampanyalar ve CRM
Segment editörü koşulları birleştirir, canlı maç sayısını gösterir ve operatörün canlı bir filtre veya pinned snapshot seçmesine izin verir.

A Canlı segment Her ne zaman kullanılırsa mevcut verilerden yeniden hesaplayın. A Kesilmiş anlık görüntüler Mevcut üye listesini dondurur, bu da bir outreach seyircinin onaydan sonra değişmemesi gerektiği konusunda faydalı.

Seç Hepsi Her koşul maç veya ne zaman olmalıdır ANYA Bir koşul yeterli olduğunda, tasarruf etmeden önce canlı sayıyı gözden geçirin. Sistem segmentleri görünür olabilir ancak sıradan düzenlemeden korunabilir.

CRM

Lead puanlama skoru

Lider-scoring kuralları davranışı ve profil sinyalleri, satış ve otomasyonun kullanabileceği tutarlı bir puana dönüştürür.

Ürün ekran ekranı
Lead puanlama skoruLider skorları aktif kurallar, yuvarlanma penceresi ve pozitif veya negatif puan her kuralı uygular.Lead puanlama skoruİşspaceRULES12SCORED8,412HOT LEADS286LIVE ÇALIŞMASPACEFiyatlandırma aktivite3+ ziyaretler 14 günler gün günleri+20Anahtar kelime satın almak anahtar kelime satın alınGöç veya işletme içerir+15Destek riski30 günlerinde şikayet olayı-10Güvenilen kaynakpartner yönlendirme ortağı+121DESCRIBE RULEDüz İngilizce Kullanımı2REVIEW FIELDSSignal, pencere, puan3RESCOREİş Alanına Uygulamaya Uygula
Lider skorları aktif kurallar, yuvarlanma penceresi ve pozitif veya negatif puan her kuralı uygular.

AI kuralı oluşturucu, yapılandırılmış bir kurala düz-İngilizce bir talimat verebilir. Her kural hala aktivasyondan önce gözden geçirilmelidir: aktiviteyi veya anahtar kelimeyi doğrulayın, minimum sayıyı ve puan değişikliğini onaylayın.

Olumlu ve olumsuz kurallar ortak olabilir. Kullanımı Remark workspace Malzeme kuralı değişikliklerinden sonra, mevcut temaslar yeni model altında değerlendirilir. Puanlar segmentleri besleyebilir, routing, umutlu ve iş akış koşullarını bekleyebilirler.

CRM

Satış Liderliği

Liderboard, kontenja sahip olan temsilcileri karşılaştırır ve seçilen ay için gelir, komisyon ve açık boru hattı kazanır.

Ürün ekran ekranı
Satış LiderliğiAylık liderboard, gelir kazandığında satış temsilcilerini, komisyonu ve açık boru hattı görünür.Satış LiderliğiİşspacePERIODTemmuzTEAM QUOTA82%Kazandım.£ 184kLIVE ÇALIŞMASPACEAmina.104% kota · £62k kazandı1stBen...88% kota · £51k kazandı2ndRita.76% kota · £43k kazandı3rdAçık boru hattıTakımda £312kİnceleme1CHOOSE MONTHBir dönemle karşılaştırın2CHECK QUOTAAttainment Tarafından rep3COACHKullanım Boru hatları bağlamı
Aylık liderboard, gelir kazandığında satış temsilcilerini, komisyonu ve açık boru hattı görünür.

Konta elde edilmesi sadece mevcut bir kontenja sahip olduğunda ve anlaşmalar doğru sahibi, miktarı, para birimine ve yakın duruma sahiptir. Antrenörlük ve tanıma için lider tahtasını kullanın, tek kaliteli ölçü olarak değil; sağlıkla çiftleşir, aktivite ve tahmin ile.

CRM

Anlaşma onayları

Anlaşma onayları, yüksek değerli anlaşmalardan önce yönetici işaretinin iptal edilmesini gerektirir.

Ürün ekran ekranı
Anlaşma onaylarıOnay politikası iki değer eşlerini ve kuyrukları bekleyen, onaylanmış ve reddedilen kararları tanımlar.Anlaşma onaylarıİşspacePOLICYEtkinleştirildiWAITING6OLDEST3hLIVE ÇALIŞMASPACESeviye 1£10,000'dan FırsatlarYönetici YöneticisiSeviye 2£50,000'dan FırsatlarYüksekEnterprise Yenileme£72,000 · Ben tarafından talep edildiBeklemedeGöç Projesi£18,500 · Rita tarafından talep edildiOnaylandı1SET THRESHOLDS0 bir tieri devre dışı bırakır2REQUESTRep anlaşmayı gönderir3DECIDEApprove veya reddediyor
Onay politikası iki değer eşlerini ve kuyrukları bekleyen, onaylanmış ve reddedilen kararları tanımlar.

Politikayı enable ve Seviye Belirlenebilir 1 ve Seviye Düzeyi 2 Eşler. Bir eşiği 0 Bu katmanı devre dışı bırakır. Bir kişi eşinin üzerinde veya üstünde bir anlaşma kazanmaya çalışırsa, OpsIQ sahneyi sessizce değiştirme yerine bir onay isteği yaratır.

Yöneticiler ve tam yöneticiler politika tarafından engellenmez. Her karar, istek sahibini, onaylayıcıyı, zamanımı ve denetimlenebilirlik için sebepleri tutmalıdır.

CRM

Yaşam döngüsü kuralları

Yaşam döngüsü kuralları, mevcut verileri kurtarılmış bir koşulla toplandığında aşamalar arasında otomatik olarak hareket eder.

Ürün ekran ekranı
Yaşam döngüsü kurallarıYaşam döngüsü kuralları öncelikle değerlendirilir; ilk eşleşen kural iletişim aşamasını değiştirir.Yaşam döngüsü kurallarıİşspaceAKTIF7RUNSGece gecesiPRIORITYEn yüksek ilkLIVE ÇALIŞMASPACEBaşlayın → Qualified≥ 60 ve son aktiviteÖncekilik 100Tamamlanmış → MüşteriSatın alma olayı varÖncekilik 90Müşteri → Riskte60 gün için hiçbir aktiviteÖncekilik 70Risk altında → MüşteriYeni satın alma veya cevapÖncekilik 601PICK STAGESandolsun ki2DEFINE FILTERSegment-style JSON3ORDER RULESİlk maç kazanır
Yaşam döngüsü kuralları öncelikle değerlendirilir; ilk eşleşen kural iletişim aşamasını değiştirir.

Her kural bir kaynak aşamasına sahiptir, destinasyon aşaması, aktif bayrak, öncelik ve segment tarzı filtreye sahiptir. planlanan yaşam döngüsü işi ilk önce daha yüksek öncelikleri değerlendirir ve bir temas için ilk maç sonrası durur.

Kurallar karşılıklı olarak anlaşılabilir olmalıdır. Aynı koşu sırasında aynı temasa geçebilir iki aktif kuraldan kaçının. filtreyi aktive etmeden önce bir segmente karşı test edin.

CRM

CRM aktivite akışı akış

İş alanı aktivitesi akışı müşteri ve operasyonel olayları birleştirir, böylece takımlar her modülü açmadan neler olduğunu araştırabilirler.

Ürün ekran ekranı
CRM aktivite aktivitesiAktivite akışı inter leaves chat, ticket, email, webhook, dönüşüm ve anomaly olaylar ile filtreler ve paginasyon.CRM aktivite aktivitesiİşspaceOLAYLAR2,804CUSTOMERS1,126ANOMALIES14LIVE ÇALIŞMASPACEChat çözüldü[email protected] · AIŞimdi NowBilet cevap verdiT-1048 · Faturalama4 dakika.Giren olaysubscription.upgraded12 dakika.DönüşümSipariş #7788 · £14919m1FILTEREtkinlik ve müşteri2OPEN CONTEXTKaydına Git3PAGE RESULTSSoruşturmaları sınırlanmış tutmak
Aktivite akışı inter leaves chat, ticket, email, webhook, dönüşüm ve anomaly olaylar ile filtreler ve paginasyon.

Olay türü, tarih, iletişim veya müşteri durumu (müşterileri dahil) besleme kaydedildik için bir okuma modelidir; kaynak biletini değiştirme, konuşma, anlaşma veya bağlantı kaydı. hassas bir eylem almadan önce bağlantılı rekor açın.

CRM

İş Akışları

İş akışları bir etkinliğe yanıt verir ve gecikmiş adımlar da cron tarafından yeniden başlatılır.

Ürün ekran ekranı
İş AkışlarıBir iş akışı, tetikleyicilerini gösterir, işlemleri tamamlayın ve bir sonraki adım.İş AkışlarıİşspaceAKTIF9RUNNING42BAŞARISIZ1LIVE ÇALIŞMASPACETetiklacontact.createdBaşlatAdım 1Hoşgeldiniz e-posta gönderBitti.GecikmeBekle 2 günBeklenAdım 2Satış görevi oluşturunSıradaki1CHOOSE TRIGGEROlay koşmaya başlar2ORDER STEPSEylemler ve gecikmeler3MONITORKısıtlama yoluyla
Bir iş akışı, tetikleyicilerini gösterir, işlemleri tamamlayın ve bir sonraki adım.

Uyarıyı seçerek bir iş oluşturun, siparişte adımlar ekleyin ve etkinleştirin. Gecikler depolanır, tarayıcı isteğiyle değil; birleşik kroki özgeçmişleri iş akışları nedeniyle çalışır.

Yapılı başlangıç şablonları işaretlendikten sonra hoş geldiniz, posta-purchase teşekkür ederim ve demo onayı. bir şablon, alıcılarını / içeriğini yerine getirin, ardından geniş aktivasyondan önce kontrollü bir rekorla test edin.

İdempotent olmak için tasarım eylemleri. Bir yeniden deneme, tekrarlanan para-moving istekleri göndermeli veya tekrar rekorlar yaratmamalıdır.

Destek Desteği Destek Desteği Destek Desteği

Bilet biletleri Bilet Biletleri Bilet

Biletler resmi destek kanalınızdır.Bölümler, öncelikler, SLA hedefleri, eks, iç notlar ve tam konuşma iplikleri vardır. OpsIQ admin, bilet formu/embed, e-posta ingestion, chat escalation, konektör veya API.

Bilet biletleri Bilet Biletleri Bilet
Bilet detayıBir meta sidebar (priority, bölüm, SLA, statü), konuşma iplik ve AI draft ve geri ödeme eylemleri.BiletİşspaceT-12345ÖncelikYüksekBölümHesaplamaSLA3h 12m ayrıldıDurum durumuBenim için iki kez suçlandımHaziran 3'da abonelik.- Evet.Tekrarlananları OnayladıYük, geri ödeme işlemi.AI draft CevapGeri Öde1THREADEDFull conversation + notlar2SLA & ROUTINGÖncekilik, dept, zamanlayıcılar3AI DRAFTCevap: "You için yaz
Her bilet önceliği, departmanı, SLA zamanlayıcı ve tam bir iplik taşır ve AI sizin için cevabı hazırlayabilir.

Bir bilet nasıl akır

1
Bilet geldi

Bir müşteri e-posta yoluyla bir mesaj gönderir, sohbet escalation, bilet gömülüyor veya yönetici bir tane yaratır. Bilet eşsiz bir ID alır (örneğin T-12345).

2
Sıralama

AI konu ve vücut okur, öncelik tayin eder (Low/Normal / Yüksek / Urgent), bir bölüm önerir ve duygular algılar. Bu, triage etkinleştirilirse otomatik olarak gerçekleşir.

3
Reply Cevapla Teşekkür ederim

Bir ajan bileti açar, bağlamı okur (müşteri profili, bağlantılardan gelen platform verileri, önceki biletler), ve bir cevap yazın. AI cevabı hazırlayabilir ve acente göndermeden önce düzenleyebilir.

4
Kapat

Sorun çözüldüğü zaman, ajan bileti kapatır. Müşteri bildirimini yapar. Eğer kapanışdan sonra müşteri yanıtları tekrarlanırsa, bilet otomatik olarak yeniden açılır.

Per-ticket eylemleri

Değişim Bölüm

Bileti farklı bir bölüme taşıyın (örneğin, Genel Billing’den). ilk routing yanlış olduğunda kullanışlı.

Ajans'a yemin olsun

Bileti belirli bir takım üyesine imzalarken, atanan ajan "My Ticket" görüşlerinde bilet görür.

İç not ekle

Sadece personel için görünür bir not yazın. Kullanımı: soruşturma bulguları, geri ödeme nedenleri, mühendislik bağlamı, önceki taahhütler. İç notlar asla müşterilere görünmüyor.

Merge biletleri

Aynı müşteriden tekrarlanan biletleri bir araya getirin. Birleştirilmiş bilet konusu [MERGED] etiketi alır. Her iki biletten gelen tüm mesajlar hayatta kalan biletlerde korunmuştur.

Canned yanıt

Önden yazılmış bir cevap şablonu ekler. gibi değişkenler {{customer_name}} ve {{ticket_id}} otomatik olarak değiştirilir.

AI yeniden yaz

AI taslak cevapınızı geliştirelim: ton, kısa / uzun, gramer düzeltin veya çevirin. göndermeden önce sonucu gözden geçirin.

Değişim önceliği

Low, Normal veya Yüksek veya Urgent'a ayarlayın. Öncelik SLA zamanlayıcıları ve sıralamasını etkiler.

Değişim durumu

Açık, Pending'ye ayarlayın, Müşteriyi Bekliyoruz veya kapalı olun.

Worked example: Mutsuz bir müşteriyi ele geçirmek

Müşteri e-postası: "Ben abonelik için iki kez suçlandım"

Senaryo:
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.
Ne yapmalı:

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.

Bölümler

Ayarlar > Biletler > Bölümler. Ortak bölümler: Genel, Billing, Technical, Sales, kötüye kullanma, dolap. Her bölüm farklı otomatik kurallara sahip olabilir, AI bilgisi ve takım atamaları.

Canned Yanıtlar

Ayarlarda yeniden kullanılabilir cevap şablonları oluşturun > Biletler > Canned Responses. İyi kanlı cevaplar şunları içerir:

Örnek şablona cevap verebilir
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}}

Mershing biletleri

Bir müşteri aynı soruyu birden çok kez gönderir ( e-posta ve sohbet, ya da iki ayrı e-postalar), tekrarları bir araya getirebilir. Bilete git, Merge'ye tıklayın, diğer bileti birleştirmek için seçin. hayatta kalan bilet her iki biletten tüm mesajları alır.

Bağlantılı platformlar bir araya getirir. Biletler de bağlantılı bir platformda olduğunda (WHMCS, ZendeskAncak, SaaS müşteri portalı da bir araya gelir: platform kopyalarını birleştirir, bu yüzden ilk mesajı ve cevapları gösterirsiniz. Bu platformda hiç konuşma eklemiş olan birleştirilmiş bilet, özel personel notu olarak asla e-posta yoluyla yapılan bir cevap olarak değil WHMCS) birleştirir OpsIQ Aynı şekilde biletler.

Öncelik ve SLA

Düşük

Gerçek olmayan sorular, özel istekler, genel geri bildirimler. Hedef ilk yanıt: 24 saat.

Normal

Standart destek soruları. İlk yanıt: 8 saat.

Yüksek

Müşterinin işini etkileyen ilk yanıt: 4 saat.

Acil

Hizmet aşağı, güvenlik olayı, veri kaybı, fatura hatası. İlk yanıt: 1 saat.

SLA zamanlayıcılar, biletin oluşturulduğu ve duraklama olduğunda başlar "Müşteriye Bekliyor" ise, SLA hedefi kaçırılırsa, bilet vurgulanır ve opsiyonel olarak yükselir.

Müşteriler iç notları görebilir mi?+

Asla. İç notlar sadece personel tarafından değil. Müşteri bilet portalı, e-posta bildirimleri veya herhangi bir müşteri yüz yüzeyinde görünmüyorlar.

Kapalı bir bilet cevaplandığında ne olur?+

Bilet otomatik olarak yeniden açıldı ve aktif kuyruklara geri dönüyor. Ekip yeni cevap hakkında bilgilendiriliyor.

Daha fazla cevap önlemek için bir bilet kilitleyebilir miyim?+

Evet, Lock Thread seçeneğini hem müşteri hem de AI'nın yeni yanıtlar eklemesini sağlamak için kullanın. Çözülen anlaşmazlıklar veya kapalı araştırmalar için kullanışlı.

Destek Desteği Destek Desteği Destek Desteği

Servis Stüdyosu: SLA, durum akışı ve kalite

Destek işleminizin nasıl davrandığı için kontrol odası: SLA, yürüyen merdivenleri, iş saatleri takvimleri, zorunlu bir durum akışı, CSAT ayarları ve işletme özelliği anahtarları. Bilet sayfasından açın (Opera Studio düğmesine).

SLA politikaları

Her yeni bilet ilk olarak ve en özel aktif politikadan bir karar süresi alır: bölüm + önceliği, öncelik kazanır, varsayılanları otomatik olarak yener. Dönderlik veya On hold'de bir bilet otururken gecikmez.

Escalation merdivenleri

Bir ihlal eylemi yerine, bir politika altı adıma kadar tanımlanabilir: Örneğin atamayı uyar 75% Pencereden, uyarı yöneticileri 100%, isimli bir ajana atan 150% Her adım bilet başına tam olarak bir kez yangınlar.

İş saatleri ve takvimler

İş saatleri ile, SLA saatleri sadece çalışma zamanında yakılır, bu yüzden Cuma akşamı açılan bir bilet Cumartesi günü ihlal edilmez. Add takvims (timezone, days, hours, tatil) farklı bölgelerde takımlar için bireysel politikalara eklenebilir.

Durum akışı

Hangi statü değişikliklerini kısıtlayan / matrixten bir Zendesk tarzı preset. Otomasyon ile, e-posta ve müşteri tarafından yapılan bilet yanıtları her zaman muaftır, bu yüzden katı bir matris asla kapatmadan önce onaylanmış bir işaret gerektirir.

Onaylar

Ajanslar bir bilet üzerinde işaret açma isteği (bir eşiği, politika istisnaları üzerine) Bir isim onaylayıcı veya herhangi bir Tam Yönetici notu ile karar verir; istek sahipleri asla kendi talebini onaylamaz.

Bilet ilişkileri

İlgili, tekrarlanan, ebeveyn / çocuk veya bloke olarak biletleri paylaşın; yeni bir bağlantılı bilete cevap verin (Müşteriye e-posta olmadan birleşmenin tersine); in-app bildirimleri için biletler takip edin ve opsiyonel CC takip eden e-postalara ek olarak.

Live inbox ve çarpışmalar

Gerçek zamanlı inbox etkinleştirildi, yeni biletler ve cevaplar mevcut bildirim akışı aracılığıyla saniyeler içinde ajanlar için görünür. Bir biletde, ajanlar başka birinin kim izlemediğini ve bir cevap yazmadığını görür. Bir tıkış İstek düğmesi size bileti verir.

Yapay zeka bilinçli yönlendirme

Routing kuralları AI triage sinyalleri ile eşleştirebilir: öncelik, kategori, duygu ve escalation riski, portal istek formunuzdan gelen özel alan değerleri. Bu koşulları kullanarak kurallar oturmaya olanak sağlar.

💡
Her işletme gemilerini bir araya getirir. Service Studio → Kalite & Otomasyon optiğine aynıdır; yükseltmeden önce davranışları aynı tutarlar.
Neden bir müşteri hala matrix kapalı → açık yasaklandığında kapalı bir bilet yeniden açabilir?+

matrix sadece ADMIN eylemlerini yönetir. Müşteri tarafından yapılan yanıtlar, e-posta cevapları ve otomasyon kasıtlı olarak muaftır, böylece katı bir politika asla müşterileri kilitleyemez veya boru hattını kıramaz.

SLA merdivenleri eski ihlal eyleminin yerini alıyor mu?+

Hiçbir. Politikalar tek bir ihlal eylemiyle kurtarıldı, çalışma değişmeden devam ediyor. Bir merdiven sadece adımları tanımladığınız politikalar üzerinde çalışır.

Destek Desteği Destek Desteği Destek Desteği

Bilet oto-reply ve escalation

Auto-reply, AI'nın otomatik olarak yeni biletlere yanıt vermesine izin verir. Escalation, AI’nın özel ihtiyaçları tespit ettiğinde farklı bir bölüme taşınır. Her iki özellik de yerli biletler ve e-ticaretli biletlerle çalışır.

Otomatik cevap
Bilet otomatik yanıtıBir akış: yeni bilet, iki dakikalık bir gecikme, AI bilgi ve bağlamdan cevap verir veya bir taslak olarak kaydedilir.Otomatik cevapİşspaceYeni bir bilet geldiğindeYeni biletHerhangi bir kaynakGecikme2 minAI yanıtlarıKB + bağlamGönderveya taslakEğer gecikme sırasında bir insan cevaplanırsa, oto-reply iptal edilir. İlk önce başka bir bölüme yükselebilir.1DELAYİnsanlar ilk şansa ulaştı2AI REPLIESKB + context3OR ESCALATEYola doğru yol
Yeni biletler kısa bir gecikme alır (insanlar atlayabilir), sonra bilginizden gelen bir AI cevabı, bir taslak olarak gönderilir veya sıralanır.

Otomatik olarak nasıl çalışır

1
Bilet görünüyor

Yeni bir bilet herhangi bir kaynaktan oluşturulur (email, sohbet, portal, API).

2
Schedule Cevap

OpsIQ yapılandırılmış gecikme için bekleyin (default: 2 Bu, insan ajanlarına ilk yanıt verme şansı verir.

3
İlk cevap kazanır

Eğer bir insan ajanı gecikme sırasında cevap verirse, oto-reply iptal edilir. Eğer değilse, AI yanıt üretir.

4
Genrate ve gönder

AI, bileti okur, bilgi tabanını kontrol ediyor, bağlantı bağlamı ve müşteri tarihini yazıyor, sonra cevap gönderilir (veya ayarlara bağlı olarak bir taslak olarak sıralanır).

Nasıl escalation çalışır

1
Bölümler

Hangi bölümlerin escalations (örneğin, Billing Genel olarak yükselebilir, Teknik General’den yükselebilir).

2
Bileti sınıflandırmak

Otomatik olarak, AI bilet niyetini sınıflandırır: faturalama, teknik, geri ödeme, istismar vb.

3
Gerekirse hareket edin

Bilet niyeti bir escalation departmanıyla karşılaşırsa, bilet taşındı. Bir iç not neden açıklıyor.

4
Yeni seste

Cevap, varış bölümü bilgisi ve AI eğitimi kullanılarak oluşturulur.

Referanslar

Auto-reply etkinleştirildi

Master switch. AI otomatik olarak biletler için hareket etmesini sağlar.

İzinli bölümler izin verilen bölüm

Hangi bölümler otomatik olarak enerjik olabilir. Düşük riskli bölümler (Genel, Satış) faturaya izin vermeden önce başlayın.

Gecikme

How long to wait before the AI replies (in seconds). Default: 120 seconds (2 minutes). Set to 0 for instant replies.

Gecikme programı

Saatler sonra iş saatleri için farklı gecikmeler ayarlan.

admin Cevabı Dur

Bir insan ajanı ilk önce cevap verirse, otomatik olarak geri siparişi iptal edin.

Escalasyon etkinleştirdi

Enable otomatik bölüm bilet niyetine dayanarak routing.

Escalasyon Bölümleri

Hangi bölümler biletleri yükselebilir.

Escalation durumu

Ne durumu escalating (e. g., Open, Pending) olarak ayarlayın.

Escalation not

Dengenin nedenini açıklayan içsel bir not eklemek.

E-Kratıcı biletler

E-postadan ( posta kutusu anket veya MX-bord teslimat) yaratılan biletler aynı otomatik ve korkutucu kurallar takip eder. AI cevabı, müşteriye bir e-posta yanıtı olarak gönderilir. Email drafts yapılandırılırsa taslaklara gidin.

AI otomatik olarak soruları faturalandırmak için mi?+

Sadece Billing departmanı için otomatik olarak hareket ettirseniz, fatura için otomatik-repsiz bir şekilde başlamanızı ve AI'yı kapsamlı bir fatura bilgisi ile eğitdikten sonra ve iyice test ettikten sonra da etkinleştirebilmelerini tavsiye ederiz.

AI yanlış bir cevap veriyorsa ne olur?+

Bir müşteri cevabı yanlış olduğunu söylüyorsa, bir insan ajanı müdahale etmeli. AI History'i AI’nın neden yanlış cevap verdiğini anlamak için gözden geçirmeli ve ardından bilgi tabanı veya AI eğitimini tekrar gerçekleştirmeyi önlemeye devam edin.

Gönderilmeden önce oto-repleri gözden geçirebilir miyim?+

Evet, teslimat modunu "Auto-send" yerine "Draft" olarak ayarlayın. Auto-reply draftlar göndermeden önce Taslak kuyruklarında görünecektir.

Destek Desteği Destek Desteği Destek Desteği

Bilet portalı gömülü

Bilet portalı herhangi bir web sitesine bilet yönetim arayüzü eklemenize izin verir. Müşteriler biletlerini görebilir, yeni olanları oluşturabilir ve cevap verebilir, tüm OpsIQ admin girmeden.

Nasıl çalışır
Bilet portalı gömülüBir web sitesinde kayıtlı bir destek portalı, kendi biletlerini ve yeni bir bilet düğmesine işaret ediyor.yoursite.com/supportDestek merkeziYeni biletSizin TICKETS#1042 · Refund Soru#1038 · Kurulum yardımcıYeniden çözülmedi#1031 · Fatura kopyasıBeklemede1EMBEDHerhangi bir siteye ek olun2SELF-SERVEMüşteriler biletlerini görüyorlar3NO LOGINKimlik güvenli bir şekilde ele alındı
Bilet portalı gömülü

Üç adet gömülü lezzet

Satır içi ekleme

Sayfanızda bir div içinde bilet portalını çizin. Portal konteynerinin tam genişliğini alır.

Yüzen

Bir panelde bilet portalını açan bir yüzen bir düğmeyi gösterin. Bir sohbet öğesine benzer.

Kimlik Doğrulama

İmzalanan bir kimlik token gerektirir. Müşteriler sadece kendi biletlerini görürler.

Tesis kurulum

Bilet ve sohbet gömülü
<!-- 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.

Kimlik token nesil

Gerçekleştirilmiş mod için, sunucunuz site sırrı ile kısa ömürlü bir token işaret eder. Bu token, müşterinin sadece kendi biletlerini gördükleri için OpsIQ söyler. standart bir HS256 JWT: herhangi bir JWt kütüphanesi işe yaramaz.

PHP · kimlik token üretmek
<?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, kimlik token
// 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 });
}

Widget özellikleri

Bilet listesi

Aramak, durum filtreli liste. "Bir "Seni Bekliyor" bayrakları takımın cevap verdiğini vurgulayın.

Konuyla ilgili konuşma

Zengin metin, eks ve zamantamps ile tam konuşma görüşü.

Tasavvuf otomatik

Müşteri taslak cevapları otomatik olarak uyarılır, böylece uzaklaşırlarsa çalışmayı kaybetmezler.

Canlı kirletici

Yeni yanıtlar için widget anketleri her -12 saniyeler.

Resolve / yeniden

Müşteriler kendi biletlerini tek bir tıklama ile çözebilir veya yeniden açabilirler.

İç personel notları, biletin içine müşterilere gösterilen NEVER. Bu zor bir güvenlik sınırıdır.
Destek Desteği Destek Desteği Destek Desteği

Mesaj kutusu

Chat Inbox, ekibinizin canlı müşteri konuşmaları yönettiği yerdir. Aktif sohbetler gösterir, konuşmalar, AI-handled chats ve arşivlenmiş tarih.

Mesaj kutusu
Mesaj kutusuÜç kişilik bir ajan kutusunda sohbet: konuşma listesi, bir AI draft çipi ve ziyaretçi / CRM context paneli ile canlı konuşma.Mesaj kutusuİşspaceJDJanenerede benim emrimMOErkeklerSoruyuRTRita.AI ele alındıBenim emrim nerede?Bugün ŞikşekAI taslağı hazırCevap ver...ZiyaretçiJane DoeABD · Chrome3 geçmiş emirlerLTV $480CRMAşama: Müşteri1UNIFIEDHer canlı sohbet2CONTEXTZiyaretçi + CRM Panel3AI ASSISTTaslak ve yeniden yaz
Her canlı sohbet için bir kutu, konuşma listesi, AI draft ile olan iplik ve tam ziyaretçi + CRM bağlamı.

Konuşmaları Yönetimi

Aktif sohbetler

Şu anda ilerlemelerde konuşmalar. Green dot = müşteri yazım veya son zamanlarda aktiftir.

Yapay zeka tarafından yönetiliyor

AI'nın yanıt verdiği sohbetler, "Join" tıklayarak her zaman devralabilirsiniz.

Bana yemin ederim

Konuşmalar size özellikle tayin edildi.

Beklen

müşterinin bir yanıt için beklediği sohbetler.

Arşiv

Tamamlanan konuşmalar. Anahtar kelimeler, tarih ve müşteri tarafından okunabilir.

AI'dan insan için

AI'dan bir konuşma yaptığınızda, bu üç kuralı takip edin:

1
Greet şahsen

Kendinizi isim olarak tanıtın. "Merhaba, bu Sarah'yı destek ekibinden."

2
Referans bağlamı

Konuşmayı okuduğunuzu göster. "Senin sipariş durumu hakkında soru sorduğunu görebiliyorum."

3
Set beklentileri ayarlayın

Müşteriye bir sonraki ne olacağını söyleyin. "Şimdi buna bakıyorum ve birkaç dakika içinde size bir cevap vereceğim."

Konuşma başına AI'yı geçiş /

AI'yı her konuşmanın üst kısmından kaçırın. AI yanıt verdiğinde, AI cevap verebilir. In the AI toggle at the top of each conversation. When AI is on, the AI providess response.

Uzak mod / saat dışında

İş saatleri dışında, iş saatleri içinde iş saatlerini yapılandırın, AI yapabilir: (1Müşterilere cevap vermeye devam edin (22) Bir "hiç" mesajı gösterin ve takip için bir bilet oluşturun veya (3) Tamamen sohbet edin ve bilet formunu gösterin. Destek modelinize uygun davranışı seçin.

Sert konuşmaları zorla

1
Sakin ol.

Müşterinin duygusal yoğunluğuyla karşılaşmayın. Savunma olmadan hayal kırıklığılarını kabul edin.

2
Gerçekleri toplamak

Cevap vermeden önce, ilgili bilgileri toplayın: sipariş detayları, hesap statüsü, önceki biletler.

3
Erkenden Önce

Durum geri ödeme, yasal tehditler veya istismarı içeriyorsa, bunu tek başına ele almaya çalışmak yerine üst düzey bir takım üyesine yükselmektedir.

Takım sohbetine (ajandan ajanya) sahip olabilir miyim?+

Evet. Başka ajanlarla iletişim kurmak için bir konuşma içinde iç notları kullanın. Bu notlar müşteriye asla görünmez.

Bir sohbete yakın olduğumda ne olur?+

Konuşma Archive'a taşınır. Müşteri daha sonra yeni bir mesaj gönderirse, yeni bir konuşma oluşturulur.

Destek Desteği Destek Desteği Destek Desteği

Messaging kanalları

Connect WhatsApp, Facebook Messenger, Instagram DM, Telgraf ve LINE bu yüzden mesajları müşteriler web siteniz sohbetiniz olarak aynı kutuya varabilirsiniz, aynı AI asistanı tarafından cevap verdi.

Her kanal aynı anda birbirine bağlı davranır: Bir müşteri mesajı Chat Inbox'ta bir konuşma haline gelir, AI asistanınız web siteniz sohbetiniz olarak aynı bilgiyi ve talimatları kullanarak yanıt verir ve herhangi bir ajan AI’nın kanalıyla ilgili hiçbir şey anlamaz.

Hangi bağlantının göründüğü gibi görünüyor

Facebook Messenger & Instagram

Bir tık. Açık Yükler → Facebook Messenger & Instagram DM, Sayfanızı yöneten Facebook hesabıyla oturum açın ve Page'iniz bir Instagram profesyonel hesabı bağlandığında buradan gelir.

WhatsApp

Sağlayıcınızın sunduğu yere bir tık: Messaging Hub konektörünü açın ve Connect WhatsApp'ı kullanın, sonra Meta’nun rehberli işareti takip edin veya WhatsApp Business numaranızı oluşturmak için oturum açın. Aksi takdirde herhangi bir 20 ağ geçidinden gelen bilgiler ekleyin.

Telgraf

Telgraf'da iki dakika Mesaj @BotBabası, gönder/newbot,Bir isim ve bir kullanıcı "bot"da sona erer ve size Telegram bağlantısını verir.OpsIQWebhook'u sizin için kaydeder.

LINE

Bir Messaging oluşturun API Geliştiricilerde kanal.line.biz, kanalı gizli ve token yapıştırın, sonra webhook'u kopyalayın URL Gösterilende gösterilen OpsIQ LINE'a ve kendi oto-replerini kapat.

SMS

Bir sağlayıcı ekleyin (Twilio, Vonage, Termii ve diğerleri) Messaging Hub'de kimlikleri ile kodlayıcı numara.

Each connector shows its own step-by-step instructions inside the drawer, including exactly what to copy and where. You never need developer credentials for the one-click options.

Bir kanala bir kanal geri dön

Bir kanala bağlanmak başlamaz. Bunu başlatın Settings → Client Chat → Advanced → Messaging ChannelsAncak ustayı yakalamak ve sonra bireysel kanala geçiş. Her kanalın kendi AI oto-reply geçişi vardır, böylece gerisi açmadan önce bir pilot olabilirsiniz.

1
Kanala bağlanın

Inches, bu konektörün çekmecesinde talimatları kullanarak.

2
Bağlantıyı test edin

Click Test. Bu, sağlayıcıya gerçek bir çağrı yapar ve size her şey olup olmadığını yanlış söyler.

3
Enable mesajlaşma kanalları

Ayarlar→Müşteri Sohbeti→Gelişmiş. master geçişine dön, sonra kanal.

4
Kendinize bir mesaj gönder

Başka bir hesaptan, Sayfanıza, numaraya veya bota mesaj verin. saniyeler içinde Chat Inbox'ta görün ve AI cevabı almalı.

Pencereler Cevap

Messaging platformları, bir müşterinin yazdığından sonra ne kadar uzun süre cevap verebilir. OpsIQ her sohbette kalan süreyi gösterir ve sizin için kuralı uygular.

WhatsApp

24 saatleri müşterinin son mesajından. Sadece aynı Gelişmiş sekmede yapılandırdığınız onaylanmış bir şablon gönderebilirsiniz.

Messenger & Instagram

24Normal cevaplar için saatler; ajanlar cevap verebilir7Günler sonra Meta'nın insan-agent ücreti altında.

Telegram, LINE, SMS

Hiçbir platform-imposed pencere.

⚠️
Bir cevap başarısız olursa, pencere kapalıysa, konuşma neden bir platform kuralı olduğunu gösteriyor, OpsIQ limit değil.

Ortak sorular

Müşteriler bir AI'nın cevap verdiğini görüyor mu?+

Sadece onlara söylerseniz. Cevap, Sayfanızdan gelir, bir insan cevabı olarak numara veya botlar. AI talimatlarınız ton kontrol eder ve kendini tanımlayabilmenin ne olduğunu tanımlar.

Bir ajan orta-konversasyondan alabilir mi?+

Evet. Chat Inbox'taki sohbet açın ve tıklayın. AI duraklar, sen tipin ve müşteri onların tarafında sürekli bir rol görür.

Bir kanalı kapatırsam ne olur?+

Bağlantıda Disconnect. Mesaj tarihi devam ediyor; yeni mesajlar sadece gelmeye son veriyor ve platform onları göndermeyi bırakmanız söylendi.

İki çalışma alanı aynı Facebook Page'i kullanabilir mi?+

Hayır. A Page bir seferde tek bir çalışma alanına ait. Başka bir yerde hareket ediyor ve ilk iş alanı mesajları almayı durduruyor, bu yüzden başka yerlerde yeniden bağlantı kurmak yerine kasıtlı olarak kesin.

Destek Desteği Destek Desteği Destek Desteği

Gerçek sohbet konuşmaları

Bu örnekler iyi eğitimli bir müşteri AI'nın ortak senaryoları nasıl ele alması gerektiğini gösteriyor. AI eğitiminizi test etmek ve boşlukları tanımlamak için onları kullanın.

10 konuşma örnekleri

1. Müşteriye sipariş hakkında soru sormak

Senaryo:
Müşteri: Merhaba, bir sipariş 3 gün önce koydum ve henüz herhangi bir nakliye bildirim almadım. Order #ORD-5523.
Ne yapmalı:

AI'nın olması gerekir: (1) Bakma #ORD-5523 Bağlantı üzerinden.2Mevcut durumu raporlayın ve mevcut bilgileri takip edin. (3Sipariş gecikirse, gecikmeyi kabul edin ve tahmini bir zaman çizelgesi sağlayın. (42) Bağlantının bir tane yoksa nakliye statüsü icat etmeyin.

2. Prospect fiyat hakkında soru soruyor

Senaryo:
Müşteri: Pro plan maliyetiniz ne kadar? Yıllık fatura teklif ediyor musunuz?
Ne yapmalı:

AI'nın olması gerekir: (1) Mevcut fiyatlandırma ile bilgi tabanından cevap. (2) Aylık ve yıllık fatura arasındaki farkı açıklayın. (32) Eğer cevap bilgi tabanında değilse, bunu söyleyin ve onları satışlarla bağlantı kurmak için teklif edin. (42) Bilgi tabanında olmayan fiyatlandırma icat etmeyin.

3. Angry müşteri geri ödeme talep ediyor

Senaryo:
Müşteri: Bu gülünç! Ürüniniz çalışmıyor ve paramı şimdiye kadar istiyorum.
Ne yapmalı:

AI'nın olması gerekir: (1) Hayal kırıklığı sakin bir şekilde kabul edin. (2) Sipariş numarası veya hesabı e-posta için sorun. (3) Geri ödeme sürecini açıklayın. (4) Bir destek bileti oluşturun veya bir insan ajanına tırmanın. (5) Bir geri ödeme vaat etmeyin, bu insan onayını gerektirir.

4. Çift faturalama kenar durumu

Senaryo:
Müşteri: Bu ay iki kez şarj edildim. Bankam, $29.99'ın iki suçlamaları gösteriyor.
Ne yapmalı:

AI'nın olması gerekir: (1.) Endişeyi kabul edin. (2İlgili ayrıntıları toplayın (email, suçlamaların tarihleri).3) Fatura sorunlarının insan incelemesini gerektirdiğini açıklayın. (4) ayrıntıları ile bir Billing departmanı bileti oluşturun. (5) Yüksekliğe öncelik vermek.

5. Multi-dil müşteri

Senaryo:
Müşteri: Bonjour, je voudrais savoir si vous livrez en Fransa?
Ne yapmalı:

AI'nın olması gerekir: (12) Müşterinin diline bu dil destekleniyorsa yanıt verin. (2) Fransa'ya bilgi tabanından teslimat hakkında soru cevap verin. (3Dil desteklenmezse, varsayılan dilde cevap verin ve hangi dillerin mevcut olduğunu söyleyin.

6. Saat dışı sohbet

Senaryo:
Müşteri: Merhaba, orada biri var mı? Hesabımla yardıma ihtiyacım var.
Ne yapmalı:

AI'nın olması gerekir: (1) Eğer AI'dan sonra yapılandırılırsa, yanıt verin ve yardımcı olun. (2) Eğer saatlerden sonra biletler oluşturursa, “Ekibimiz şu anda çevrimdışı. Sizin için bir destek bileti yarattım ve birisi iş saatleri boyunca takip edecek.” (3) Bilet numarasını sağlayın.

7. Pre-purchase Karşılaştırma Dükkanper

Senaryo:
Müşteri: Ürününüz [Competitor X] ile nasıl karşılaştırılır?
Ne yapmalı:

AI'nın olması gerekir: (1) Ürününüzün güçlü gerçekliğini açıklayın. (2«Kariyeri kötüleştirmeyin.32) Bilgi tabanında karşılaştırma sayfası varsa, ona bağlantı. (42) Müşteri sahip olmadığınız özellikler hakkında sorarsa dürüst olun.

8. Müşteri bir öneri istiyor

Senaryo:
Müşteri: Ayda 100 siparişleriyle küçük bir online mağaza işletiyorum. Hangi plan benim için doğru?
Ne yapmalı:

AI'nın olması gerekir: (1) Gerekirse soruları açıklamayı sorun (örneğin, çoğu önemli olan şey).2Bilgi tabanına dayanan bir plan öner. (3) Bu planın neden ihtiyaçlarına uygun olduğunu açıklayın. (4) Daha küçük bir planla başlayabilir ve daha sonra yükseltebilirler.

9. Müşteri, yetkisiz bir indirim almaya çalışıyor

Senaryo:
Müşteri: 50% indirimleri verdiğiniz online gördüm. Bir tane olabilir miyim?
Ne yapmalı:

AI'nın olması gerekir: (1) Politely mevcut promosyonları herhangi bir varsa açıklayın. (22) Bilgi tabanında olmayan indirimler yaratma veya söz verme. (32) Müşteri devam ederse, onları satış ekibiyle bağlantı kurmak için teklif.

10. Müşteri bir özellikle yardıma ihtiyaç duyar

Senaryo:
Müşteri: Verilerimi nasıl ihraç edebilirim? ihracat düğmesine bakamıyorum.
Ne yapmalı:

AI'nın olması gerekir: (12) Bilgi tabanından adım atarak talimatları sağlayın. (2) tam sayfa yolunu ve düğme yerini ekleyin. (3) Eğer özellik belirli bir plan gerektirirse, bundan bahsedin. (42) Eğer özellik mevcut değilse, dürüst olun ve alternatifler önerebilir.

Destek Desteği Destek Desteği Destek Desteği

Chat routing ve escalation

Canlı sohbet gerçek bir kişiye ihtiyaç duyduğunda, AI iki soruya cevap verir: hangi takımın bu konuşmasına sahip olduğunu ve kimlere de anlatılmalıdır. Her ikisi de Ayarlarda yapılandırılır, Müşteri Sohbeti, Destek Akışı, AI routing departmanları altında.

AI hangi bölümlerin kullanabileceğini seçmek

Bu paneldeki iki kutu beyaz listedir. Bölümler doğruya taşındılar, AI'nın içinde veya açık biletlere yol açabileceği tek şey buna görünmez olsa bile, bölüm var ve personele dönüştürülür.

💡
Hiçbir bölüm her şeyde etkinleştirilirse, OpsIQ her bölümde yeniden miras almaya geri döner. Bunu bir güvenlik ağı olarak ele geçiremez, yapılandırma seçeneği değil.

Kim alçaltmayı alır

Bu, çoğu insanın yapılandırılması ve ihtiyaç duymaması gereken bir şeydir. AI sohbete girdiğinde, OpsIQ e-postaları bu bölüme bağlı olan insanları yönetebilirsiniz. Bu listeyi bir kez, Team and Departments sayfasında ve hem de bilet escalation ve chat escalasyon takip eder.

Bölüm üyeleri

Bölüme bağlı her aktif yönetici kendi kopyalarını alır. Suspended ve engelli hesaplar atılır.

İlk yönetici

Hiçbir takım üyesi eklendiğinde kullanılır, bu yüzden bir escalation hala birine ulaşır.

Kimse eklenmedi

Teslimat mümkün değildir. Routing paneli, bölümü kırmızı ve AI'nın ziyaretçiye bir insan bilgilendirilmediğini işaret ediyor.

⚠️
Bir bölüm kendi e-posta adresi asla alıcı olarak kullanılmamıştır. Bu adres, bölümün bağlı bilet posta kutusudır, gelen bir posta açık biletlere karşı eşleştirilir. gönderilen bir yük, kişiye ulaşmadan yeni bir bilet olarak boruya geri dönecektir.

Yakalanan bölüm

Tam olarak bir bölüm yakalama işareti taşır. AI'nın güvenle yer edemeyeceği sohbet eder ve normal yoldan ziyade son bir tatildir.

1
Clear sinyalleri kazanır

Billing kelimesi bir fatura departmanına gider, teknik bir kişiye hitap etmek ve satışa kelime satın almak.

2
AI sınıfılandırıcı bir sonraki işe çalışır

Anahtar kelimeler önemsizse, model konuşmayı okur ve etkinleştirilen bölümlerden alır.

3
Sonra yakalama-tüm

Sadece her ikisi de boş geldiğinde, yakalama bölümü sohbeti alır.

4
Satış muhafızı

Eğer yakalama-tüm bir satış bölümü ve ziyaretçi hiçbir satın alma sinyali vermediyse, OpsIQ bunun yerine bir destek veya teknik bölüm için görünüyor, bu yüzden sıradan destek soruları Satışta bir şeyler kazanmıyor.

Ziyaretçinin ne söylediği

Eğer escalation e-posta dışarı çıkarsa, AI ziyaretçiyi bilgilendirdiğini söylüyor. Eğer çıkamıyorsa, AI dürüst bir şey söyler ve mesajı sohbette bırakmalarını davet eder. Bir insan e-mail gönderilmediğinde uyarılamaz.

Panel, bir bölüm için "Yakalamamak için kimse" diyor.+

Kimse buna bağlı değildir. Açık Takım ve Bölümler, en azından aktif bir yönetici ekleyin, sonra ayarları sayfayı yeniden yükleyin. Panel canlı okuyor.

Sohbetler takımdan başka bir yere gidebilir mi?+

Evet. Daha önce bir bölüm için kurtarılan özel bir adres hala ekip listesinin üzerindedir. Yeni kurulumlar insanları bu yüzden korumak için tek bir yer vardır.

Neden benim yakalamamın bütün atladı?+

Bir satış departmanı olup olmadığını kontrol edin. Eğer öyle ise ve ziyaretçi sinyal satın almadı, OpsIQ rotaları bir destek veya teknik bölüm için amaç üzerinde.

Destek Desteği Destek Desteği Destek Desteği

E-posta kutuları ve taslakları

OpsIQ, gelen e-postadan biletler otomatik olarak oluşturmak ve e-mail olarak göndermek için e-postalara bağlanabilir. Ayrıca insan incelemesi için AI tarafından tasarlanan cevaplar da sunar.

Email
Bilet bileti için e-postaSol besleme gelen e-postaları sağdaki bir AI-drafted cevabı ile bir threadli bilete IMAP posta kutusu.Emailİşspace[email protected] · IMAPRefund istek[email protected]Girilemiyor[email protected]In bill copy[email protected]Bilet #1042E-postadan · BillingBen için bir geri ödeme istiyorumTekrar şarj...AI taslağıReview & send Cevap1INGESTIMAP & gönderiliyor2TO TICKETSThreaded otomatik olarak otomatik olarak3AI DRAFTSİnceleme için Replies for review
IMAP (veya ileriye dönük), her bir iple dönüş ve AI'nın inceleme için cevabı hazırlamasına izin verin.

Bir posta kutusuyla bağlantı kurmak

Protokol Protokolü

IMAP (çoğu sağlayıcı), Gmail API (Google Workspace), veya Microsoft Graph (Outlook) 365).

Gerekli platformlar gerekli olan

Host, port, şifreleme (İngilizce).SSL/TLS 2), kullanıcı adı, şifre veya uygulama parolası, klasör (genellikle INBOX).

Bölüm Mapping

Posta kutusu bir bilet departmanına Harita. Emails to [email protected] "Depre" bölümünde biletler oluşturur.

Gmail kurulumu (başlangıçla adım)

1
2-Adımlı Kimlik Doğrulamasını Etkinleştir

Google Hesabına gidin > Güvenlik > 2-Step Verification ve etkinleştirin.

2
App Şifre Oluştur

Google Hesabı > Güvenlik > App Şifreleri seçin "Mail" ve "Diğer (OpsIQ)". 16-character şifresini kopyalayın.

3
OpsIQ

E-postaya gidin > Mailboxes > Add. Set host: imap.gmail.com liman: 993, şifreleme: SSL Kullanıcı: [email protected], parola: uygulama şifresi.

4
Test Testi

Test Bağlantısı. Başarılı olursa, OpsIQ, yapılandırılmış aralıklarla yeni e-postalar için ankete başlayacaktır.

Outlook 365 kurulum

1
Check IMAP etkinleştirilir

Outlook ayarları > Mail > Sync email, IMAP etkinleştirilir.

2
Uygulama şifresi veya modern auth kullanın

MFA etkinleştirilirse, bir uygulama şifresi oluşturmak. Aksi takdirde, normal şifrenizi kullanın.

3
OpsIQ

Host: outlook.office365.com liman: 993, şifreleme: SSL Kullanıcı: [email protected].

cPanel webmail kurulum

1
IMAP ayarları bulun

İçeri cPanel > E- posta Hesapları, e- posta hesabınıza tıklayın IMAP ayarları.

2
OpsIQ

Host: Genellikle mail.yourdomain.com veya sunucunuz hostname, port: 993 (SSL) 143 (STARTTLS), kullanıcı adı: tam e-posta adresi.

AI e-posta taslağı

Otomatik olarak "Draft" modunda ayarlandığında, AI Taslak kuyruklarında görünen cevap taslakları üretir. You can:

İnceleme

draftı okuyun ve doğruluk için kontrol edin.

Düzenle

Metini, ton veya göndermeden önce içeriği değiştirin.

Send Gönder

Tasarıyı uygun ve bir e-posta cevabı olarak gönder.

İptal Et

Tasarıyı uygun değilse de yiyin.

Otomatik Gönder

Eğer güven yeterince yüksek ve otomatik-send etkinleştirilirse, taslaklar yapılandırılabilir bir gecikmeden sonra otomatik olarak gönderilir.

E-postalar neden biletlere dönüştürülmüyor?+

Check: (1) Posta kutusu bağlantılı ve sağlıklı mı? E-posta > Mailbox'ta yeşil duruma bakın. (2) Sömürgeci iş çalışıyor mu? E-posta kirleticisi cron gerektirir. (3) E-posta filtreleniyor mu yoksa INBOX'dan başka bir klasöre mi taşındı?

Birden fazla posta kutusu kullanabilir miyim?+

Evet, her posta kutusu farklı bir bölüm için haritalanabilir. [email protected] Destek'e gider, [email protected] Billing'e gider.

Destek Desteği Destek Desteği Destek Desteği

Müşteri memnuniyeti (CSAT)

CSAT biletleri ve sohbet memnuniyeti, yüzey mutsuz cevaplar ve AI ve insan sonuçlarını karşılaştırır.

Ürün ekran ekranı
Müşteri memnuniyetiCSAT sayfası puan kartlarını birleştirir, detractor takip eder, yorumlar, bölüm ve ajan arızaları ve sohbet geri bildirimlerini birleştirir.Müşteri memnuniyetiİşspaceRESPONSES386AVERAGE4.6POSITIVE91%LIVE ÇALIŞMASPACEDetractor takip-up12 Yanıtlar dikkate değer1–2İncelemeBilet anketleriKapattıktan sonra 24h gönderildiOtomatikChat feedback geri bildirimAI 4.5 · İnsan 4.7KarşılaştırAjan görüntüsüPuan ve yanıt sayımıKoç Antrenör1WATCH AVERAGEEgzersiz kullanın, bir puan değil2FOLLOW DETRACTORSYorumu okuyun3COMPARE FAIRLYAI ve insan
CSAT sayfası puan kartlarını birleştirir, detractor takip eder, yorumlar, bölüm ve ajan arızaları ve sohbet geri bildirimlerini birleştirir.

Bilet anketleri kapanmadan sonra yapılır (normal olarak 24 Saatler sonra) Olumlu bir yanıt, bir puandır4veya 5.Detractor kuyruğunu puanlar için kullanın 1 veya2Ve müşteriyle iletişim kurmadan önce bilet / geri dönüşüm okuyun.

Chat geri bildirimi AI-re çözülmeli ve insan tarafından ayrılmış konuşmalar için ayrı olarak rapor edilir. Low örnek boyutları ajan veya modeller sıralanmak için kullanılmamalıdır.

Destek Desteği Destek Desteği Destek Desteği

Takım e-posta yayınları

E-posta Platformu sayfası yetkili bir operatöre tüm aktif ajanlara, seçilmiş ajanlara veya bir bölüme bir tek zamanlı mesaj göndermesini sağlar ve tarih gönderin.

Ürün ekran ekranı
E-posta PlatformuTakım e-posta bestecisi seyirci, konu, mesaj ve son teslimat tarihini gösterir.E-posta PlatformuİşspaceALICILAR12DELIVERED11BAŞARISIZ1LIVE ÇALIŞMASPACEİzleyicileyici seyirciTüm aktif ajanlarSeçiliKonuTemmuz desteğiHazır.MesajDers ve escalation notlarıHazır.Tarih TarihiÖnceki yayınlar ve sonuçGörüntü1CHOOSE PEOPLETüm, seçilmiş veya ekip2WRITE CLEARLYKonu ve mesaj3REVIEW HISTORYSonuç Onaylandı
Takım e-posta bestecisi seyirci, konu, mesaj ve son teslimat tarihini gösterir.

Bu sayfa dahili operasyonel mesajlar için, müşteri pazarlama değil. En küçük doğru seyirciyi seçin, önizleme isimleri ve adresleri seçin, sonra teslim olun. Teslimat, yapılandırılmış e-posta yolunu kullanır ve sonucu kaydeder.

Destek Desteği Destek Desteği Destek Desteği

Mailboxlar, teslimat ve e-posta

OpsIQ e-posta göndermenin nasıl yapıldığını yapılandırın, gelen mesajlara biletler halinde döner ve gönderilen domainin hazır olduğunu kanıtlayın.

Ürün ekran ekranı
E-posta ayarlarıE-posta ayarları, kimlikten posta kutusu kesintiye uğrar, teslim edilebilir kontroller ve test e-postasını birleştirir.E-posta ayarlarıİşspaceÇIKMASMTPMAILBOXES3ALANGeçinLIVE ÇALIŞMASPACETercih edilen bağlantıSMTP / sağlayıcı konektörYapılandırıldıKimlikten GelenSupport <[email protected]>Hazır.IMAP postabox[email protected] · POÇT KUTUSUKirliliğiTeslimatDİSK ^ DİKGeçin1CHOOSE OUTBOUNDLinkler veya SMTP2CONNECT INBOXIMAP veya boru3TESTGönder ve doğrulama
E-posta ayarları, kimlikten posta kutusu kesintiye uğrar, teslim edilebilir kontroller ve test e-postasını birleştirir.

Giden e-posta

Tam yöneticiler tercih edilen e-posta bağlantısını seçebilirler; OpsIQ Yeniden yapılandırmaya geri dön SMTP/ e-posta teslimatı uygun olduğunda. Adı/address'dan bir tanı ayarlayın, bir test gönderin ve kontrol edin 24- Saat başarı / metrikler.

Posta Kutuları

Bir IMAP posta kutusu bir isim, e-posta adresi, hedef bölüm, host, port, güvenlik modu, kullanıcı adı, şifre, klasör, anket devleti ve sertifika doğrulama seçeneğine ihtiyaç duyar. Şimdi Anketi cron için beklemeden önce ingestion doğrulamak.

Anında boru

Aynı sunucuda, bir posta borusu doğrudan ham RFC822 mesajı geçebilir. Uzak posta sunucusu, token kullanarak korumalı uç noktaya ham mesajı verebilir. Her iki yol aynı deduplication, threading ve bilet-routing pipeline.

Teslimat

SPF/DKIM /DMARC check, alandan yapılandırılan tavsiyelere danışmanlık niteliğindedir. Yeşil bir çek kutu yerleştirme garanti etmez, ancak üretim mesajları göndermeden önce başarısız düzeltilmelidir.

Destek Desteği Destek Desteği Destek Desteği

Destek Portal Studio

Destek Portal Stüdyo tasarımları ve dış görüntü varlıklarını gerektirmeden müşteri odaklı destek deneyimini yayınlar.

Ürün ekran ekranı
Destek Portal StudioPortal Stüdyo, temanın yanı sıra bir cevaplı önbellek gösterir, navigasyon, bilgi, bilet, yardımcı, form, ayak ve CSS kontroller.Destek Portal StudioİşspaceTEMPLATEModernÖNCEKİMasaüstüSTATETaslak Tasla TaslağıLIVE ÇALIŞMASPACETemaMarka renkleri ve tipografiDüzenleNavigasyonBilgi, biletler, yardımcıDüzenleBilet formuAlanlar, routing ve kopyaDüzenleKastGeçerlilik ve canlı yapmakİnceleme1CHOOSE TEMPLATEYapıdan başlayın2PREVIEW SIZESMasaüstü to mobile3PUBLISH SAFELYİnceleme sonra serbest bırakıldı
Portal Stüdyo, temanın yanı sıra bir cevaplı önbellek gösterir, navigasyon, bilgi, bilet, yardımcı, form, ayak ve CSS kontroller.

Şablonu başlangıç noktası olarak kullanın, sonra tema yapılandırın, düzen, navigasyon, bilgi arama, bilet formu, yardımcı, ayaker, marka, bilet davranışı, özel CSS ve genel ayarlar. Preview masaüstü, tablet ve mobil yayınlamadan önce.

Destek Desteği Destek Desteği Destek Desteği

Bilgi boşlukları

Bilgi-gap kuyrukları müşteri soruları toplar AI emin bir şekilde cevap veremez, böylece takım kapsamayı geliştirebilir.

Ürün ekran ekranı
Bilgi boşluklarıBoşluk kuyruğu kaçırılmış veya düşük güven soruları ve takımın onları çözdüğüne dair izler.Bilgi boşluklarıİşspaceOPEN GAPS28REPEATED9RESOLVED116LIVE ÇALIŞMASPACEGöç limitleri sınır sınırları14 kez sorulduYüksekHafta sonu desteği8 kez sorulduOrtaRefund zamanlama6 kez sorulduOrtaAPI bölgesi3 kez sorulduDüşük1REVIEW QUESTIONKonuşma bağlamı2CHOOSE FIXMadde veya3RESOLVEBir sonraki cevabı doğrulayın
Boşluk kuyruğu kaçırılmış veya düşük güven soruları ve takımın onları çözdüğüne dair izler.

Orijinal soruyu ve yakın konuşmayı okumak için bir boşluk açın, sonra doğru düzeltmeyi seçin: Mevcut bir makale güncellemek, yeni bir bilgi makalesi oluşturmak, iş gerçeği eklemek, doğru bağlantı verileri veya değişim escalation talimatları. Mark sadece bir değerlendirmeden sonra çözdü ya da gerçek test kabul edilebilir bir cevap geri döndü.

Destek Desteği Destek Desteği Destek Desteği

Durum sayfası yönetimi

Durum yönetimi sayfası, bileşenleri, mevcut devletler ve güncellemeler kullanarak hizmet sağlığı ve olayları iletişim eder.

Ürün ekran ekranı
Durum yönetimiDurum yönetimi bileşenleri ve olayları listeler, böylece operatörler açık, zaman kesintili servis bilgilerini yayınlayabilir.Durum yönetimiİşspaceOVERALLOperasyonelBÖLÜMLER7INCIDENTS1LIVE ÇALIŞMASPACEWeb Sitesi Web Site Web SitesiOperasyonelYeşilAPIPerformans düştüGözlemleE-posta ingestionOperasyonelYeşilŞimdiki olayAPI latency soruşturma1UPDATE COMPONENTAçık eyalet seçin2POST INCIDENTZaman-stamped update3RESOLVEÖzetle Kapat
Durum yönetimi bileşenleri ve olayları listeler, böylece operatörler açık, zaman kesintili servis bilgilerini yayınlayabilir.

Bir olay müşterileri sürekli olarak etkilediğinde, ilk bir bildirim yayımlarken, gerçek değişim olarak zamansız güncellemeler ekleyin ve koncise kararı özeti ile yakın. statüsü sayfayı iç debug log olarak kullanmayın; hassas tanılar OpsIQ ve sunucu logları aittir.

- Evet.

AI'nızı ayarlayın

AI Construct, AI sağlayıcınızı, modelinizi ve maliyet kontrollerinizi seçtiğiniz yerdir. OpsIQ Birden çok sağlayıcı destekler: Claude ((Anthropic), GPT-4o (OpenAI), Gemini (Google) ve Grok (xAI). Kendinizi kullanabilirsiniz API anahtar (kalp)BYOK) ya da planınızda mevcut olan AI Yöneti.

AI'yı kurmak
AI yapılandırmaBir AI ayarları paneli: Yönetilen-AI / BYOK sağlayıcıyı, bir model seçici veya aylık token-budget metre.AI yapılandırmaİşspaceAI yapılandırmaSağlayıcıYönetilen AIAnahtarınız (BYOK)Model· dengeliAylık AI bütçesi62%1TWO MODESYönetilen AI veya BYOK2PICK A MODELHız vs derinlik3BUDGETSHediye caps & maliyet kontrol
Yönetilen AI veya kendi anahtarını seçin, hız vs derinlik için bir model seçin ve aylık harcamayı bir token bütçe ile yapın.

Bir sağlayıcı seçmek

Claude (Anthropic)

Güçlü bir sebep, gerçeklerle dikkatli, aşağıdaki karmaşık talimatlarda iyi. Modeller: claude-sonnet-4-20250514, claude-3.5-sonnet. En İyi: konuşmaları desteklemek, teknik sorular, detaylı analiz.

GPT-4o (OpenAI)

Hızlı, yaratıcı, iyi genel bilgi. Modeller: gpt-4o, gpt4o-mini. En İyi: hızlı cevaplar, yaratıcı yazı, geniş bilgi soruları.

Gemini (Google)

Aslında iyi sorular, çok dilli destek. Modeller:gemini-2.0-flash,gemini-1.5-pro. En İyi: Çok dilli destek, gerçek görünümler.

Sarı (xAI)

Hızlı, koncise yanıtları. Modeller: grok-3-mini-fast. En iyisi: hızlı cevaplar, rahat ton.

BYOK vs Yönetimsel Yapay Zeka

BYOK (Kendi Anahtarını Getir)

Sağlayıcıdan kendi API anahtarını sağlarsınız. Doğrudan sağlayıcıyı ödersiniz. Model seçimi ve kullanımı üzerinde tam kontrol edin.

Yönetilen AI

AI, sizin bir parçanız olarak sağlanır OpsIQ Plan. No API Gerekli anahtar. Kullanımı, planınızın AI kredi bakiyesine karşı ölçülmektedir.

Adım-by-step kurulum

1
AI Konsülasyonuna Git

OpsIQ yöneticisinde, Ayarlara gidin > AI Konsülasyonu.

2
Select sağlayıcı seçin

AI sağlayıcınızı aşağıdan seçin.

3
API anahtar

Eğer kullanıyorsanız BYOK, gir your yourAPIAnahtar. Yönetilen AI için, bu otomatik olarak ele alınır.

4
Model seçin

Kullanımı için özel model seçin. Küçük modeller daha hızlı ve ucuz. Büyük modeller daha kaliteli cevaplar verir.

5
Test bağlantı bağlantısı

API anahtarını ve modeli doğrulamak için "Test connection" tıklayın. yeşil bir çekmark başarı anlamına gelir.

6
Kaydet

AI yapılandırmanızı etkinleştirebilmek için Kaydet.

Maliyet kontrolleri

Aylık bütçe

AI jetonlarında maksimum aylık bir harcama yapın. Bütçeye ulaştığında, AI mükemmel bir şekilde küçülme (kıyatıcı cevaplar, tamamen durdurmak yerine otomatik olarak) sunar.

Konuşma başına token limiti

Tek konuşma başına maksimum jetonlar. Aşırı krediler kullanmaktan kaçarak sohbetleri engeller.

Low bakiye uyarısı

AI kredi bakiyeniz eşiğin altında düşerken (default: 50,000 tokens), bir uyarı bunu AI Konsülasyonunda belirir.

Per-workspace yapılandırma

AI yapılandırması per-workspace. Birden çok siteyi yönetiyorsanız, her çalışma alanı farklı bir sağlayıcı, model ve bütçe kullanabilir. İş alanı iş alanına kadar yapılandırılmayan küresel varsayılanları devralır: İş alanına geçiş yapın, sonra AI Konsülasyonuna gidin ve orada tasarruf ayarları sağlar.

API anahtarlar

Anthropic - Claude.

Go to Go To Go console.anthropic.com > API Anahtarlar > Anahtar oluşturun. "sk-ant-" ile başlayan anahtarı kopyalayın.

OpenAI (GPT)

Go to Go To Go platform.openai.com > API Anahtarlar > Yeni gizli anahtar oluşturun. "sk-" ile başlayan anahtarı kopyalayın.

Google (Gemini)

Go to aistudio.google.com > Get API Key. Create a key for your project. Copy the key.

xAI (Yunan)

Go to Go To Go console.x.ai > API Anahtarlar. Anahtarlarınızı oluşturun ve kopyalayın.

AI kurulumunuzu test edin

Senaryo:
API anahtarını aldıktan sonra, "Test bağlantısı" tıklayın. Yeşil bir çekmark ve AI'dan örnek bir yanıt görmeniz gerekir.
Ne yapmalı:

Eğer test başarısız olursa:1) Kontrol edin ki API anahtar doğrudur (ekstra boşluk yok). (2Hesabınızın sağlayıcınızla faturalandırma ayarlarının doğru olup olmadığını kontrol edin.3) Model adının geçerli olup olmadığını kontrol edin. (4) Yönetilen Yapay Zeka kullanıyorsanız, lisansınızın aktif olduğunu kontrol edin.

Hangi sağlayıcı en iyisidir?+

Tek en iyi sağlayıcı yoktur. Claude destek konuşmaları için mükemmel değildir. GPT-4o hızlı ve çok yönlüdür. Gemini her birini deneyin ve belirli kullanım durumunuz için en iyi sonuçları sağlayan şeyi görün.

Daha sonra sağlayıcıları değiştirebilir miyim?+

Evet. Sağlayıcıyı ve API anahtarını herhangi bir zamanda değiştirin. Mevcut konuşma tarihi korunmuştur. AI tüm gelecekteki konuşmaları için yeni sağlayıcı kullanacak.

Kredilerden tükendiğimde ne olur?+

AI degrads lütufla: yanıtlar daha kısa, otomatik olarak duraklar haline gelir ve yönetici düşük dengeli bir uyarı gösterir. Core follow, ticket ve CRM AI olmadan çalışmaya devam eder.

- Evet.

Smarter & daha ucuz müşteri sohbet

Müşteri sohbetinizi daha akıllı hale getiren bir opt-in kontrolü seti (bir müşteri hesabının insan ajanı gibi nedenlerle) veya daha ucuz (daha az adımda AI’yı gönderir). Her kontrol varsayılan ve bağımsız olarak değildir, herhangi bir değişiklik yapmadan başka davranışları değiştirir. çoğu yaşam boyu yaşar; birkaç kişi AI ve Treni ayarlayın.

Smarter Cevaplar (agent mode)

Normal bir sohbetbot, tek bir bakış açısıyla bir soru cevap verir. Ajan modu Onda, asistan birkaç okunuşu yapabilir - sadece tek bir dönüşte kontroller alabilir ve onları çapraz-tandırma, e. g. "Bir sonraki yenilemem için yeterince dengem var mı?" diye cevap verdi matematikle ilgili doğrulanan müşterilerle sadece sorularını paylaşıyor; her şey normal tek cevap yolu çalışır.

Ajan modu

Birkaç okuma-sadece dönüş için göz atlar, cevap vermeden önce çapraz-referenced. Bağlantılı bir platforma sahip olduğunda (WHMCS, Shopify, Stripe, Zendesk, vs.) Off = bugün tek göz ardı edilen davranış, değişmemiş.

Ajans için derinlik düşünmek cevaplar

Karmaşık dönüşler üzerindeki model nedenleri ne kadar zor (düşü/ortalama / yüksek) Low'da başlayın; çoğu destek soruları orada iyi ele alınır.

Agent model modeli

Pins daha güçlü bir model sadece karmaşık ajan ortaya çıkıyor, bu yüzden günlük sohbet ışıkta kalıyor, ucuz bir model ve yalnızca sert dönüşler derinlik için ödeme yapar. = normal müşteri-chat modeliniz.

Plan önceden · bir geçiş cevapları (beta)

Küçük bir planlama adım, hangi görünümleri çekmeye ve bilgi tabanına ihtiyaç olup olmadığına karar verir, sonra birkaç adım yerine BİR ana çağrıda cevap verir. Ajan modu altında alt üst düzey bir seçim mümkün değildir. Aynı yanıt kalitesi, daha az çok bölme soruları üzerine aramalar.

Konuşma ve anlayış

Uzun süreli hafıza (beta)

Eski mesajların kısa koşu özeti (isimler, bilet / fatura numaraları, miktarlar, kararlar) tutun, böylece asistan tüm transkriptini geri almadan çok uzun sohbetlerde tutarlı kalır. En iyi destek için en iyi, uzun iplikler; Ajan modu ile çiftler.

Typo tolerans

Küçük tipos'u ("açık biletler", "yaratıcılar") amaçlanan kelimeler olarak okuyun, böylece doğru bilgiler kaçırılmış olan her platformla birlikte çalışır. In default; mobile-heavy sohbet için kullanışlı.

Lean hesap bağlamı

Sadece müşterinin hesabı snapshot'ı soru aslında onların hesabı hakkında (balance, faturalar, biletler, hizmetler), genel sorularda atlayın. Tessi kaliteli bir kaybı olmadan maliyetine sahiptir. Asistan hala bir dönüş ihtiyacı olduğunda hesabı canlı tutabilir.

Maliyet tasarrufu

Bilgi aramasını girin (beta)

“Merhaba”, "küreler" ve "ok" bir bilgi tabanı aramasını tetiklemiyor, bu cevaplar asla kullanmaz. Gerçek içerikli herhangi bir mesaj hala normal olarak aramalar.

En uzun cevap izin verdi (tokens)

Bir cevap ne kadar uzun olabilir. Cevap uzunluğu bir çağrının en pahalı parçasıdır, bu yüzden mantıklı bir kap (yaklaşık 500 for support) tek en etkili sohbet maliyeti kontroldür. Sadece küresel limitinizi azaltır.

AI'nızı kurmak için

Derinlik (müşteri ve yönetici sohbet)

Model cevap vermeden önce ne kadar düşünür (yüksekliğe doğru) Müşteriyi minimum / düşük hızda tutun; analiz için daha yüksek ayarlar ve yönetici copilot.

Per-AI modeli (per job)

Her AI yüzeyi (canlı sohbet, bilet taslakları, summaries, analiz, yönetici copilot, promosyonlar, Site Zekası ve daha fazlası) kendi modelinde çalıştırılabilir. hız önemli olan güçlü bir yerde kalite önemlidir.

Admin chat maliyet kontrolleri

admin copilot, her bir araç yerine sadece bir soru ihtiyacı olan araçları (lean aletleri) zorlayabilir.

AI'nızı Trene

Tartışma talimatları

Talimatlarınız her şekilde gönderilir, bu yüzden uzun süre tekrarlanır. Compress düğmesine daha az kelimede aynı şeyi söylemek için bir yuva yazılır. herhangi bir {variable} veya kuralını bırakacaktır ve neyin korunduğunu rapor eder, böylece asla sessiz bir şekilde değişiklik anlam ifade etmez.

"Beyinlerde ne var?" (ℹ️)

OpsIQ'in zaten işlerinizi slot başına bildiğini gösteriyor, böylece kendi talimatlarınızda tekrarlanan her şeyi silebilirsiniz.

💡
Para nereye gidiyor? Kısa destek sohbet için giriş (gösterme + hesap verileri + tarih, her dönüş gönderdi) genellikle kısa cevaptan daha fazla masraf ve yalın bağlamın çoğu orada yardımcı olur. uzun süredir üretilen içerik için çıktı baskınlar. Cevap uzunlukta kapak ve alt derinlikli bir düşünme ücreti aşağıdan yukarı doğru yola çıkmak için AI'nızı ayarlayın.
Bu değişiklik sohbetin zaten cevap verdiği nasıl değişir?+

Hayır. Her kontrol varsayılan ve bağımsız olarak kapalıdır. Sadece davranışlarını ekliyor; sohbeti tam olarak daha önce nasıl çalıştığına geri döndürün.

Onlara ne sipariş vermeliyim?+

Günlük sohbet bir ışık modeli üzerinde ve daha güçlü bir Agent modelini bekleyin. Sonra, bağlı bir platforma sahipseniz, Ajan modunu etkinleştirin, sonra planlayın, o zaman uzun vadeli hafızayı açın.

Admin Agent kit: web arama, kitap çalıştırın, görevler, dosya transfer

Admin AI sohbeti, sadece bir soru kutusu değil çalışan bir mühendistir. Web'de düzeltmeleri araştırabilir, işletim prosedürlerinizin bir kütüphanesini tut, sunucularınızı bir programda devriyeleyin ve dosyaları hareket ettirir. Bu çoğu sohbette istenmektedir; ön yapılandırdığınız tek şey, web arama sağlayıcınızın kullandığı şeydir.

Web arama

İnşa Edilmiş

Ajan, web'i docs, hata mesajları ve mevcut bilgileri ararken arar. Kutudan itibaren bu DuckDuckGo’u kullanır ve hangi anahtara ve kuruluma ihtiyaç duymaz.

Runbooks

sohbette

Prosedürlerinizin kütüphanesini kurtarın ("X nasıl yapıyoruz") Ajan zor bir işi çividen sonra yazar ve bir dahaki sefere takip eder, bu yüzden bilginin sohbetin sonunu nasıl hayatta kalır.

Misyonlar

Planlanmış

Kayıtlar sadece devriyeler. "Her sabah disk alanı ve hata loglarını kontrol edin ve bana söyleyin."Onların yönetici çanına var.

Dosya transferi

sohbette

Bir log dosyası isteyin ve özel bir indirme linkini alın veya birbirine bağlı bir sunucudan kopyalanan bir dosyanız var. her ikisi de 5 MB'da kapıldı.

Admin Agent web arama (on AI'nızı ayarlar)

Arama sağlayıcısı

Ajan web arama kullanımı nedir. varsayılan DuckDuckGo: anahtarsız, ücretsiz, her yüklemede çalışır. Brave Search, Tavşanlı ve Serper.dev (Google sonuçları) genellikle daha iyi sonuçlar döndürür, ancak her birinin ihtiyacı vardır API Bu sağlayıcının anahtarı. Anahtarlı bir tedarikçi herhangi bir nedenden dolayı başarısız olursa (kötü anahtar, kontenjan kullanılmış, ağ sorunları), bu arama DuckDuckGo'a otomatik olarak geri döner, bu yüzden arama asla karanlık gitmez.

Arama API anahtar

Seçilmiş sağlayıcınızın anahtarı, sadece Brave, Tavily veya Serper için gerekli. Bir kez maskelenmiş ve asla sayfada tekrar gösterilmedi; anahtarlanmış bir sağlayıcının değiştirilmesi yalnızca her iki sağlayıcının da kurtarıldığı zaman aktif hale gelir.

Runbooks

Ajan sadece bir iş aracılığıyla çalıştığında, adımları tekrar yapmak isteyecek ve takip edebilirsiniz. O zaman listelemek için kitaplarınızı güncelleyebilir veya silinir.

💡
Bir runbook rehberlik, ücretsiz bir geçiş değil. Ajan bir tane takip ettiğinde, sunucunun hala mevcut izin modundan geçecek ve normal onay kartları gösterir. Bir runbook asla bir onay atamaz.

Misyonlar

Bir görev, ajanın kendi başına çalıştığını tekrarlayan bir iştir: Saat olarak, günlük bir saat veya belirli bir günde haftalık olarak. Misyonlar yalnızca tasarım yoluyla okunur. Onlar sunucular, veriler ve web'i okuyabilirler; ancak hiçbir zaman herhangi bir şey değiştiremezler; bir görev bitince, bulguların yöneticisine bildirimde bulunun.

⚠️
Misyonlar OpsIQ cron'i çalıştırıyor, bu yüzden ayağa kalkmak (bakır Cron ve otomasyon) Bir sohbetten "şimdi" şapel çoğu sunucuda bile çalışır.

Hareketli dosyalar

Bir dosya için sorun ("bugünün hata logunu web sunucusundan çıkartın") ve ajan aşamalarını özel bir indirme linkiyle yanıtlar. bağlantı sadece imzalanmış yönetimler için çalışır ve bir gün sonra sona erer. 5 MB Daha büyük bir şey için, ajanın ilk önce sunucuda sıkıştırmasını veya kesmesini isteyin.

Ajan ayrıca iki bağlantılı sunucu arasında tek bir dosyayı kopyalayabilir, tekrar 5 MB. Hedefteki yazı başka herhangi bir değişiklik gibi tedavi edilir: İlk önce bir onay kartı aldığınız modunda, mevcut dosya desteklenir ve kopya geri dönüşümlüdür. Güvenlik için, içerik şu anda kaynaktan geri alınır, sohbetten alınmaz.

- Evet.

AI'nızı Tren

AI Eğitimi, OpsIQ'a nasıl davranacağınızı öğretiyorsunuz. Kişiliği, sınırları, bilgi odaklılığı ve escalation kuralları tanımlamak için hızlı yazıyorsunuz. Yeni bir destek ajanı için eğitim kılavuzu yazmayı düşünün.

Tren AI
AI'nızı TrenMüşteri/Yönetim sekmeleri ve düz-İngilizce ton ile bir AI talimatları editörü, her zaman ve asla kurallar.AI'nızı TrenİşspaceMüşteri AIAI YöneticisiTonDostu, koncise, asla zorlama.AlwaysFaturalama anlaşmazlıkları için bir insan elioff sunmak.Asla.Hesabı kontrol etmeden bir geri ödeme söz konusu.1TWO MANUALSMüşteri ve yönetici AI2PLAIN ENGLISHTone, her zaman, asla3GROUNDEDAyrıca bilgi tabanınız
AI'yı yeni bir işe, müşteri ve yönetici eller gibi eğitin (her zaman, asla), KB’nizde zemine.

İki eğitim alanı

Müşteri AI hızlı bir şekilde

AI'nın sohbet penceresindeki müşterilerinize nasıl konuştuğu kontroller. Bu doğru elde etmek için en önemli yoldur.

Admin AI hızlı bir şekilde

AI, yönetici ekibinize operatör panoda nasıl yardımcı oluyor. Bu iç sorguları ve eylem yürütmesini ele alıyor.

Büyük bir müşteri AI hızlı yazmak

Müşteri AI'nız bu alanları kapsamalıdır:

1
Kimlik Kimliği

AI kim? Ona bir isim, rol ve kişilik verin. Örnek: "Sen Luna, Acme Store için samimi ve bilgili bir müşteri desteği asistanısın."

2
Tone ve stil

Nasıl iletişim kurmalıdır? Örnek: " Profesyonel ama sıcak olun. Basit bir dil kullanın. jargon. Cevapları koncise (İngilizce).2-3 paragraflar max).”

3
Bilgi sınırları

Ne bilmeli ve bilmiyor? Örnek: "Ürünlerimiz, fiyatlandırmamız, nakliyemiz ve geri dönüş politikası hakkında bilgi sahibi değilsiniz.

4
Escalasyon kuralları

Bir insana ne zaman teslim edilmelidir? Örnek: “Bir insan ajanına bir süre selam vermek gerekirse: müşteri yasal eylemden söz eder, bir güvenlik sorunu rapor eder veya aynı soruyu üç kez sorar.”

5
Asla yapılacak şeyler

Sert sınırlar. Örnek: "Asla geri ödeme vaat etmek asla iç fiyat formüllerini paylaşmaz. Asla mevcut olmayan ürün özelliklerini yapmayın. tıbbi, yasal veya finansal tavsiye asla verin."

Örnek hızlılar

Örnek müşteri AI hızlı · online mağaza
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
Örnek müşteri AI hızlı bir şekilde · hosting şirketi
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

Zaman içinde tahrifinizi yeniden gözden geçirin

1
Temellerle başlayın

Kimlikle başlayın, ton ve anahtar sınırlar. Her şeyi günde bir örmeye çalışmayın.

2
AI History haftalık

AI'nın yanlış veya suboptimal cevap verdiği konuşmaları okuyun.

3
Hızlı Güncellemeler

Tekrarlanan konular için özel kurallar ekleyin. Örnek: AI umut verici geri ödeme tutarsa, "Hiçbir zaman bir geri ödeme sözünüzü ekle" dedi fatura ekibine yükseleceğini söyle."

4
Bilgi Ekle bilgi Add information

AI bir soruya cevap veremezse, hızlı her şeyi uygunlaştırmaya çalışmak yerine Bilgi Üssü'ne cevabı ekleyin.

⚠️
Hızlıca 2,000 kelimeler altında tutun. Uzun zamandır, AI'yı karıştırıp maliyetleri artırın. Bunun yerine Bilgi Üssünde ayrıntılı bilgi koyun.
Hızlı ve bilgi tabanı arasındaki fark nedir?+

Hızlı kişiliği, sınırları ve kuralları tanımlar. Bilgi tabanı gerçek bilgi sağlar (product details, pricing, policies). AI her ikisini de okur, ancak KB cevaplar verirken hızlı şekil davranışı.

Farklı bölümler için farklı acillere sahip miyim?+

Hızlı çalışma alanıdır. Farklı bölümler için farklı AI davranışına ihtiyacınız varsa, bölüm özel bilgileri sağlamak ve bölüm bağlamını sizin açınızda söylemek için bilgi tabanını kullanın.

- Evet.

AI tarihi

AI History, AI'nın müşterilerle ve yöneticileriyle her konuşmayı gösteriyor. AI performansını denetlemek için kullanın, yanlış cevaplar bulmak ve eğitim boşluklarını tanımlamak için.

AI tarihi
AI tarihiAI'nın bir günü, tür kötüler ile birlikte döner, soru ve cevap verir, yanıt süresi ve sonuç.AI tarihiİşspaceHer AI dönüş, kaydedilensohbetS: Benim düzenim nerede?A: bugün sevk, UPS takip ...0.9sansweredbilet biletiT-12345 için yorumKabul dilekçesi taslağı1.4sdraftedadminBu haftaki biletleri Summarize12-line summary geri döndü2.1stamamlandısohbetS: Planımı iptal etBir insana teslim oldu0.7sescalated1EVERY TURNPrompt, cevap, aksiyon2SEARCHABLEFiltre & ihracat3OWNER-ONLYFull denetim izi
Her AI dönüşü (kesin, bilet taslağı, yönetici eylemi) tam olarak hızlı, cevap, süre ve sonuç ile giriş.

Her sohbet ne gösterir

Tarih ve Zaman

Konuşma gerçekleştiğinde.

Müşteri kimliği

Bilinen isim ve e-posta, aksi takdirde IP ve ülke.

Kanal Channel

Chat widget, bilet otomatik olarak e-posta taslağı veya admin AI.

Mesajlar

Konuşmanın tam transkripti: müşteri mesajları ve AI yanıtları.

Hediye kullanımı

Yüksek token kullanımı, yapılan konuşma kaç tane jetonun AI'nın aşırı fiilen cevaplar verdiğini veya sohbetin çevrelerde gittiğini gösterebilir.

Eylemler alındı

AI'nın sohbet sırasında infaz ettiği herhangi bir eylem (bakım siparişi, bilet vs.)

Derecelendirme

CSAT etkinleştirilirse, müşterinin bu konuşma için memnuniyeti puanı.

Problemleri bulmak

Anahtar Kelimeye Göre Arama

AI'nın onları nasıl işlediğini görmek için belirli konular arayın: AI’nın geri ödeme politikasını takip etmesi durumunda "refund" aramak.

Filtreleme Puanı

Sadece memnun müşterilere odaklanmak için düşük seviyeli konuşmaları gösterin.

Kanal tarafından

Sadece otomatik yanıtları sohbetten ayrı denetlemek için bilet oto-repler göster.

Sort by token use

Yüksek-token konuşmaları problemlere işaret edebilir: AI rambling, çevrelerde ya da soruyu cevaplamayı başarısız olabilir.

Haftalık denetleme rutini

1
Düşük entegre konuşmaları kontrol edin

Tam transkript okuyun. Neyi yanlış gitti? Bir bilgi boşluğu, bir ton sorunu veya yanlış bir cevap mıydı?

2
Yüksek-token konuşmaları kontrol edin

Bunlar karışıklığı gösterebilirdi. AI kendini tekrarladı mı? Soruyu anlamayı başaramadı mı?

3
Güncelleme eğitimi

Bilgi boşlukları için, Info Base'e makaleler ekleyin. Davranış sorunları için AI’yı tekrarlamak için, açık düzeltme kuralları ekleyin.

Bilgi boşluklarını bulmak

Senaryo:
AI History for "installation" ve 15 konuşmalarını AI'nın “Bu ürün için özel yükleme talimatlarım yok” dedi.
Ne yapmalı:

Bu, Bilgi Base'inizin eksik yükleme kılavuzları anlamına gelir. Her ürün yükleme adımları için bilgi temel makaleler oluşturun. Bunları ekledikten sonra AI kurulum sorularını sorarak test edin.

- Evet.

Yapay zeka görüşleri

AI Insights otomatik olarak konuşma modellerini ve yüzeyleri aksiyonlanabilir bulguları analiz eder: ortak sorular, tatmin eğilimleri, bilgi boşlukları ve escalation kalıpları.

Yapay zeka görüşleri
AI insights (İstihbarat Merkezi)Zeka Hub: bir AI Today's Brief, Smart Alerts, a Score-a-Lead / Analyse-a -Page aracı ve 14-Day Traffic Pattern grafiği.Yapay zeka görüşleriİşspaceGÜNÜN MÜŞTERİSİTrafik yukarı 12%; 3 Sıcak yollar;2Anlaşmaların takip etmesi gerekiyor.Akıllı UyarılarCheckout hataları arttı/pricingABD'den yeni sıcak yolGeçen haftaki Gelirin Önünde GelirPuan a Lead / Analyse a PageIP veya URL…Koş!14-Gün Trafik Örneği1GÜNÜN MÜŞTERİSİAI sabah özetini yazıyor2SMART ALERTSAnomalies yüzeyli3ON DEMANDPuan a lead · bir sayfa analiz
Gerçek Zeka Hub: A AI- written Today's Brief, Smart Alerts foromaes, on-demand skorlama ve sayfa analizi için ve 14-day trafik modeli.

Neyi gösteriyor?

Top soruları

En sık sorulan sorular: “Bilinçim nasıl sıfırlanırım?” #1, bilgi tabanınız önemli bir parola sıfırlama kılavuzuna ihtiyaç duyar.

Memnuniyet eğilimleri

CSAT zaman içinde puanlar AI memnuniyeti geliştirmek veya azaltmak mı? Sudden damlaları bir şeyi kırdı bilgi tabanı değişikliği gösterebilir.

Çözüm oranı

Konuşmaların yüzdesi insan müdahalesi olmadan çözülür? Yukarıdaki bir oran yukarıda 70% İyidir. Aşağıda 50% AI'nın daha fazla eğitime ihtiyacı var demektir.

Escalasyon nedenleri

Neden konuşmalar insanlara teslim edilir. Ortak nedenlerle: müşteri insan talep etti, AI cevap veremez, hassas konu, fatura sorunu.

Bilgi boşlukları

Yapay zekanın sıklıkla "Bilmiyorum" diyerek veya düşük güvenilirlikle cevap verdiği konulardır.

Ortalama konuşma uzunluğu

Konuşmada kaç mesaj. Çok uzun konuşma (10+ mesajlar) AI'nın soruyu anlamadığını gösterebilir.

Gelişmek için öngörüler kullanmak

Senaryo:
AI Insights, tahminlerin 23% of escalations'ın "Müşterinin garantiden sorulabileceğini" ve AI’nın cevap veremeyeceğini gösteriyor.
Ne yapmalı:

Bu açık bir bilgi boşluğudur. Adımlar: (1) Tüm garanti koşullarını kapsayan Bilgi Üssü'nde kapsamlı bir garanti yazısı yazın, iddia süreci ve dışlamalar. (2AI'yı garanti bilgilerine atıfta bulunmaya hazırlamıştır. (İngilizce).3) Gelecek hafta AI Insights'ı garantiler azalırsa görmek için.

- Evet.

Admin AI oyunbookbookbook

Yönetici AI (Ask OpsIQ) Ekibinizin yönetilmesine yardımcı olur OpsIQ Yönetim paneli içinden. veri aramasını, özellikleri, özet biletleri ve platform eylemlerini yürütmesini isteyebilirsiniz.

AI Yöneticisi
Admin AI oyunbookbookbookAsk-OpsIQ komut kutusu bir AI-proposed platform aksiyon kartı parametreleri gösterir ve doğru / genişletilebilir.OpsIQİşspaceOpsIQOverdue hesabı için hizmeti geri gönder #4821- Evet.Teklif edilen eylem: askıya_serviceHesap: #4821 (overdue $120)Platform: WHMCS · geri dönüşümlü · denetimliOnaylandıİptal Et1ASK ANYTHINGPlain-İngilizce komutları2PROPOSE FIRSTDaha önce gösterilen eylemler3YOU CONFIRMKapsam ve denetimlendi
admin AI'ya basit İngilizce ne istediğini söyleyin; tam eylemi (kırık, geri dönüşümlü, denetimli) önerir ve onayınızı bekleyin.

Yönetici AI ne yapabilir

Veriye bakın

Soru: "Bana [email protected]'dan tüm biletleri göster" veya “Ölçeği #ORD-5523?”

Özetle

Soru: "Son 10 biletlerini" veya "Bu hafta en iyi destek sorunları nelerdir?"

Açık özellikler

Soru: "How do I set up auto-reply?" veya "Saç kartı ne anlama geliyor?”

Execute eylemler

Soru: "Pekiz hakkında [email protected] için bir bilet oluşturun" veya "Kapatlı bilet T-12345"

Platform sorguları

Soru: "Bugün kaç ziyaretçimiz var?" veya “Bu ay gelirimiz nedir?”

Örnek konuşmalar

Bir müşteri arıyor

Senaryo:
Admin soruyor: “Müşteri [email protected] ve son aktivitelerini göster”
Ne yapmalı:

AI, müşteriyi tüm bağlantılı veri kaynaklarına göre arar: ziyaretçi seansları, biletler, sohbet konuşmaları, siparişler ve CRM iletişimleri. Her bir öğeye bağlantılarla son aktivitenin özetini döndürür.

Günlük bir özetle

Senaryo:
Admin soruyor: “Bugün ne oldu?”
Ne yapmalı:

AI özetliyor: “Bugün sen vardın 245 Ziyaretçiler (up) 12%), 8 Yeni biletler (Yeni biletler)3 AI tarafından çözülür) 2 Yeni emirler toplam olarak $198Ve 1 Bir nakliye gecikmesi hakkında sohbet etmek.”

Bir eylemi yerine getirmek

Senaryo:
Admin soruyor: "Değişim bileti T-5523 önceliği Urgent"
Ne yapmalı:

AI doğruluyor: "Normalden Urgent'a bilet T-5523 önceliği değiştirecek. Bu SLA zamanlayıcısını etkileyecektir."

💡
Admin AI sadece Eylem Kayıt Defteri'nde kayıtlı eylemleri veya erişim sistemlerini OpsIQ dışında icat edemez.
- Evet.

Müşteri AI senaryoları

Bu bölüm, beklenen davranış ve eğitim ipuçları ile ortak müşteri odaklı AI senaryolarını kapsar.

Müşteri AI
Müşteri AI senaryolarıMüşteri sorularının bir kütüphanesi, beklenen AI davranışı ve her biri için bir sonuç etiketi ile eşleştirildi.Müşteri AI senaryolarıİşspaceSenaryo kütüphanesi · AI davranışı bekleniyor“Benim emrim nerede?”Kutuyu bağlantı yoluyla açın, takip edinÇöz"Ben bir geri ödeme istiyorum"Tanık, asla bir insan için söz verHandoff"Hizmet aşağı mı?"Check durumu, mevcut devlet durumunu rapor edinDurum durumu" Hesabımı Cancel"Doğru niyet, sonra bir insan için yollayınOnaylandı1SCENARIOSOrtak sorular2EXPECTEDAI nasıl cevap vermeli3TESTEğitim boşlukları bulun
Gerçek müşteri sorularının kütüphanesi ve AI'nın her birini nasıl idare etmesi gerektiği, eğitiminizi test etmek ve boşlukları bulmak için.

Senaryo kütüphanesi

Sipariş durumu soruşturması

Senaryo:
Müşteri: "Benim düzenim #12345?"
Ne yapmalı:

Beklenmiş AI davranışı: (1) platformun bağlayıcısı aracılığıyla siparişe bakın. (2Rapor mevcut durumu (işlem, sevk, teslim)3(Eğer mevcutsa takip numarasını ekleyin.)4Sipariş gecikirse, kabul edilir ve tahmini zaman çizelgesi sağlar. (5) Asla izleme bilgilerini icat etme.

Şifre sıfırlama isteği

Senaryo:
Müşteri: "Ben şifremi unuttum ve içeri giremem"
Ne yapmalı:

Beklenmiş AI davranışı: (1) Bilgi tabanından parola sıfırlama adımlarını sağlayın. (22) sıfırlama bağlantı veya sayfa yolunu içerir. (32) sıfırlama e-postasının birkaç dakika sürebilir. (4spam klasörü kontrol etmeyi tavsiye edin. ()52) Müşteri hala sıfırlanamazsa, bir insana yükselir.

Özel istek

Senaryo:
Müşteri: "Karşı uygulama için karanlık modu ekleyebilir misiniz?"
Ne yapmalı:

Beklenmiş AI davranışı: (1(Onlara öneri için teşekkür ederim.)2) Özel isteklerin nasıl ele alındığını açıklayın (logged, önceliklendi).3) özelliğin inşa edileceğine söz vermeyin. (4) Eğer benzer bir özellik varsa, bundan bahsedin.

Billing anlaşmazlığı

Senaryo:
Müşteri: "Ben suçlandım ama hizmetim çalışmıyor"
Ne yapmalı:

Beklenmiş AI davranışı: (1) Hayal kırıklığı hakkında bilgi sahibi olun. (2) Mümkünse servis durumunu kontrol edin. (3) Fatura departmanına tüm ayrıntılarla dikkat edin. (4Bir geri ödeme söz etmez. (5) Yüksekliğe bilet önceliği ayarlayın.

Off-topik soru

Senaryo:
Müşteri: "Bugün Londra'da hava ne gibi?"
Ne yapmalı:

Beklenmiş AI davranışı: (1Politely yönlendirme. "Ben senin [Şirketim] destek asistanıyım ve ürünlerimizin ve hizmetlerimizle ilgili sorularla yardımcı olabilirim. Hava bilgileri için, hava hizmetini deneyin."2) Bir ürün sorusu olup olmadığını sorun.

Müşteri AI davranışını nasıl test ediyorum?+

Web sitenizi özel /inkognito tarayıcılarında açın ve bir müşteri olarak AI ile sohbet edin. Ortak sorular, kenar davaları ve faversarial senaryolar deneyin. AI'nın hızlı kurallarınızı takip ettiğini ve bilgi tabanı içeriğinizi doğru şekilde kullandığını kontrol edin.

- Evet.

AI bilgisi temel üssü

Bilgi Base, AI'nın soruları cevaplamak için kullandığı makalelerin bir kütüphanesidir. Bir müşteri bir şey sorduğunda, AI ilgili makaleler için bilgi tabanını arar ve doğru, zeminli bir yanıt oluşturmak için kullanır.

Bilgi tabanı
Bilgi tabanıKaynaklar bir bilgi mağazasına beslenir, sonra bir AI bir zemine üretir, alıntı cevap.Bilgi tabanıİşspaceKaynaklarWeb sitesimakaleler Yardıma Yardımcı Olmak YardımSSSİthalatlanmış docsBilgi Bilgisisemantic + anahtar kelime- Evet.Yere Göre CevapBir alıntı kaynağı ile."Refunds 3-5İş günleri.”1INGESTAra, FAQ, ithal et2RETRIEVESemantic + anahtar kelime3GROUNDEDİçeriklerinizden Yanıtlar
Sitenizi ve ithalat doklarını bilgi tabanına taşır; AI doğru parçaları ve cevapları alır, zemine ve alıntılar.

Nasıl çalışır

1
Müşteri bir soru sorar

“Geri dönüş politikası nedir?”

2
AI bilgi tabanını araştırıyor

OpsIQ, "Return Policy" makalesini eşleşen anahtar kelimeler ve anlamlar ile bulur.

3
AI bir yanıt üretir

AI makale okur ve makale içeriğine dayanan doğal bir cevap yazar.

4
Müşteri doğru bir cevap alır

Cevap gerçek politikanızda yer alıyor, AI'nın genel eğitim verileri değil.

İyi makaleler oluşturmak

Makale başına bir konu

Her konu için ayrı bir makale yazın: geri dönüş politikası, nakliye oranları, hesap kurulumu, şifre sıfırlama. ilgili konuları birleştirmeyin.

Bir SSS gibi yazın

Soru müşterileri ile başlayın, sonra cevabı sağlayın. Bu, AI maç sorularının makaleye yardımcı olur.

Belirli bir şekilde olun

"Returns, 30 gün teslimat" içinde başlatılmalıdır "Geri dönüş politikasına sahibiz."

kenar vakalarını ekleyin

Uluslararası geri dönüşler hakkında ne? Dijital ürünlerle ilgili hangi öğeler satışta satın alındı? istisnaları kapat.

Şu anki onu tut

Makaleleri çeyrek olarak gözden geçirin. Eski bilgiler. Güncelleme fiyatlandırması, politikalar ve değişiklikler değiştiğinde prosedürler.

Yazmanız gereken başlangıç makaleler

Kargo ve teslimat

Nakliye maliyetleri, teslimat süreleri, izleme, uluslararası nakliye ve gecikmeleri.

Geri dönüşler ve geri ödemeler

Pencereye dön, koşullar, süreç, geri ödeme süresi ve istisnalar.

Hesap Yönetimi

Şifre sıfırlama, e-posta değişimi, hesabı silme ve veri ihracat.

Fiyatlama ve Fatura

Plan açıklaması, fatura döngüsü, ödeme yöntemleri, faturalar ve para birimi.

Ürün rehberleri

Her ürün veya özelliği nasıl kullanılır. Ekran görüntüleri ile adım talimatları.

Sorun Giderme

Ortak problemler ve çözümler. Hata mesajları ve onların düzeltmeleri.

İletişim bilgileri

İş saatleri, kanalları desteklemek, yanıt süreleri ve escalation yolları.

Yasal ve uyumluluk

Gizlilik politikası özeti, hizmet özeti açısından, GDPR veri talepleri.

© bilgisi

Her bir bağlantı AI'ya bilgi katkıda bulunabilir. Bir bağlantı etkinleştirildiğinde, yerleşik bilgi makaleleri (product kataloğu, ortak sorular, platforma özgü sorun giderme) otomatik olarak AI’ya kullanılabilir. Seks ayarlarınız için veya kapatabilirsiniz.

Hediye bütçe

Bilgi tabanının, AI'nın ilgili makaleler bulamadığını yapılandırabilir (default: 32,000 tokens) bu bütçedeki en çok bilgi bağlamının AI’ya ne kadar bilgi bağlamı gönderildiğini kontrol eder. Eğer bilgi üssünüz çok büyükse, AI bu bütçe içinde en alakalı makaleleri seçer.

Kaç makalem var?+

Start with start with Start with Start5-10 En yaygın sorularınızı kapsayan makaleler AI History ve AI Insights aracılığıyla boşlukları tespit ettiğiniz için daha fazlasını ekleyin. çoğu işletmeye ihtiyaç duyar. 20-50 Kapsamlı kapsama için makaleler.

Başka bir sistemden makale ithal edebilir miyim?+

Şu anda, makaleler OpsIQ'da manuel olarak oluşturulur. Mevcut SSSlerden kopya-paste içerik kopyalayabilirsiniz, yardım merkezleri veya belgeler.

Hangi formatta makale olmalıdır?+

Plain text en iyi çalışır. AI, doğal dili yapısal HTML veya işaretlenmeden daha iyi anlar. Bir müşteriyi açıklayabileceğiniz gibi yazın.

- Evet.

AI değerlendirme ve Watchtower

Değerlendirme setleri, cevap kalitesi, alıntılar, escalation ve aksiyon güvenliği için kritik müşteri soruları döndürür.

Ürün ekran ekranı
AI DeğerlendirmeAI Evaluation altın test vakalarını listeler, gerekli davranışlar, son sonuçlar ve planlanan Watchtower çalışır.AI DeğerlendirmeİşspaceSETS6CASES84PASS RATE96%LIVE ÇALIŞMASPACETicaret politikasıGerekli Citation gereklidirGeçinRefund istekİnsan onayı gerekliGeçinDesteksiz iddiaİzinsiz eylemGeçinGöç SorusuBeklenilen kaynak eksikDosya1CREATE CASESAltın giriş ve kurallar2RUN SAFELYKuru koşmak veya canlı eval3WATCHGünlük veya haftalık günlük program
AI Evaluation altın test vakalarını listeler, gerekli davranışlar, son sonuçlar ve planlanan Watchtower çalışır.

Tam yöneticiler, hızlı ve beklenen kaynak etiketleri ile değerlendirme setlerini oluşturabilirler, gerekli alıntılar, insan-confirmasyon kuralları, escalation beklentileri ve yasak eylemleri çalıştırın. Doğrudan bir seti çalıştırın veya seçilen tarihi yeniden oynatın.

Gözlemci Günlük veya haftalık kontroller, kroki yoluyla yapılır ve sınırlı sayıda vakayı çalıştırır (projekte edilen geçişte sekize kadar). Sağlayıcı/model, hızlı sürüm, bilgi versiyonu, eylemler önerilen ve üretim davranışını değiştirmeden önce maliyet.

- Evet.

Diller ve çeviri

Diller, müşteri odaklı metin ve OpsIQ'ın bir müşterinin dilini takip ettiğinde kullanılan davranışları yönetir.

Ürün ekran ekranı
DillerDiller sayfası kaynak dilini gösterir, tercüme dilleri, draft/canlı devlet ve müşteri-dil davranışları.DillerİşspaceÖRÜŞÜNİngilizce EnglishLANGUAGES4LIVE3LIVE ÇALIŞMASPACEFransız FransızcaArayüz ve içerikDereceAlman AlmancaArayüz ve içerikDereceİspanyolcaNameTasla çeviri çevirisiTaslak Tasla TaslağıTakip müşteriyi takip edinTanımlanmış dilde cevap yazınOnda1SET SOURCEOrijinal operatör dili2ADD LANGUAGEArka planda çevir3PUBLISHTaslak veya canlı
Diller sayfası kaynak dilini gösterir, tercüme dilleri, draft/canlı devlet ve müşteri-dil davranışları.

OpsIQ, operatör tarafından yönlendirilen müşteri-yüzlü metin. Çeviriler oluşturmak için kaynak dilini doğru bir şekilde ayarlayın, hedef dilleri ekleyin, sonra yayın yapmadan önce taslakları gözden geçirin. “Müşteri dili” kontrol yanıt dili; widget arayüzünü çevirip düğmelerini, etiketleri ve sistemini metinleri.

Çeviri kapsamı sadece draft edilebilir veya canlı olabilir. İnsan incelemesi olmadan makine çevirisine, iade, güvenlik veya güvenlik metnine güvenmeyin.

Kendi kelimenizi tutan her yer, mesaj numarasıyla listelenir: müşteri sohbet mesajları, promosyonlar, proaktif mesajlar, sohbet akışları, turlar, duyurular, çayser balonları ve duyurular Anketler ve formlar. Araştırma yüzeyi her yayınlanmış anketi tamamen kapsar: başlık, her soru, her cevap seçeneği, düğmeler, hoş geldiniz ve teşekkür ederim kopya, sayfa krom ve sonuç sayfaları. Anahtarlar soruyu ID ve değeri ile bağlantılıdır, bu yüzden bir çeviri asla kaybetmez ve sadece o mesajı tekrarlatır.

Posta-chat e-posta anketi, ziyaretçinin aslında sohbet ettiği dili takip eder; aksi takdirde sistem dilini kullanır. Altı değiştirilebilir alanı bu sayfada da tercüme edilir ve davranış Müşteri Sohbet ayarlarında kendi geçişine sahiptir.

Bilet ve portal mesajları Sabit metin operatörleri bir kez ve her müşteri o zaman bu dilde alır: bilet kabul, açılan, kapalı ve geri bildirim onayları, per-department işareti-offs ve portal karşılama hattı. ( AI oto-reply bunun hiçbirine ihtiyaç duymaz, müşterinin dilinde zaten cevaplar verir.) E-posta müşterileri kendi dilinde etkinleştirilende etkinleştirilen OpsIQ Yazı, bilet e-postası alıcının dilini bu sırayla çözüyor: Sayfada seçtikleri dil veya Yardım Merkezi'nde (kahramana göre), iletişim kayıtlarında yerel olarak yazıladıkları dilde, senaryo aralıkları ve işaretli kelimelerle tespit edilen dili, hiçbir dış çağrı ile. HTML E-posta sarmalayıcısı kasıtlı olarak tercüme edilmez: Bu işaret değildir, prose. Staff-face email (notifications, bölüm uyarıları, analist kısalar, planlanan raporlar, haftalık sindirme) her zaman sistem dilini kullanır.

PeopleOS İK

PeopleOS: yönetilen işgücü işletme sistemi

Çalışan yaşam döngüsü, mobil self-servis ile birlikte geri yüklemeden, kanıt iade edilen iş akışları, türleştirilmiş entegrasyonlar ve insan kontrolü hassas kararlar üzerinde.

Etkileşimli sistem haritası
PeopleOS yaşam döngüsü komut merkeziİşe alım, çalışanlar, maaş kayıt, öğrenme ve AI'yı yöneten üç boyutlu bir PeopleOS pano.PeopleOS komuta merkeziEVIDENCE LIVEKırslı248KAYNAK ROLES12CONTROL GATES15 / 15LIFECYCLEİşe AlımKiralamaBüyüyü büyütülenÖdül ÖdülüGeçişBİR RECORDKimlik + iş kanıtıHAZIRLIDe ki:PROVE ITOutcome ve sürüm kanıtları
PeopleOS, bir yönetilen kayıt üzerinde yaşam döngüsü, kontroller ve kanıt tutar.

Yöneticiler

İşle

İnsanları yönet, organizasyon, işe alım, gemicilik, belgeler, bırakın, maaş toplama uzlaşması, faydaları, performans, öğrenme, çalışan ilişkileri, analitik ve yönetişim.

Çalışanlar ve yöneticiler

Self-servis

Özel kayıtlar, talepler, belgeler, dolaplar, zaman, açıklamalar, öğrenme, şirket bilgileri ve hakları için bir mobil ilk portal kullanın.

Geliştiriciler

uzatın

Tedavi edilen yöntemi kullanın hr.* eylemleri ve gözden geçirilenler platform.hr.* Bir sözleşme aracılığıyla operasyonlar, artı tipte bağlantı sınıfları. PeopleOS API bölümü her birini kapsamıyla listeler.

⚠️
PeopleOS bir maaş defteri yönlendirmesi, yasal danışman, arka kontrol bürosu veya kimlik sağlayıcı değildir. Sertifikalı dış sistemler bu sorumlulukları korur. Yeşil teknik bir çek asla yasal onay veya sağlayıcı kanıt yaratmaz.

İnsanlar İLGİLİ

PeopleOS HR, Enterprise planına dahil edilmiştir. Diğer her ücretli planda ek bir alandır: hesap sahibi açılır Hesap → Add-ons & TokensBir PeopleOS HR tier'i seçin ve ya ücretsiz denemeye başlar veya doğru ekliyor. Serler kaç kişinin ve ne kadar işe yaradığını, röportaj ve AI aktivitelerini taşıdığını fark ederler. Fiyatlar ve sınırlar hesapta belirlenir, ürüne yazılamaz, bu yüzden mevcut tiersleri gör Fiyat sayfası. Modül ne yapar, yüzey tarafından yüzey, üzerindedir PeopleOS HR ürün sayfası.

Kim ekleyebilir

Aktif bir plan olan ücretli bir plan onu ekleyemez ve kendi planı duruşmasının bu deneme sona erinceye kadar hala başına gelen ücretli bir planlama.

Ücretsiz deneme

Deneme, seçtiğiniz katmanında çalışır. Entitlement satın almadan sona erdiğinde ve hiçbir şey tahsil edilmez: Kayıtlar ekin eklenir.

Ne zaman sahip olmadığı

PeopleOS HR, kenarda görünmüyor, komut paleti, Ayarlar veya in-app yardımı. Bir İK sayfasına doğrudan bir bağlantı sayfası sayfa yerine ek-on sunuyor.

Bir tier cap

Bir katmanın sayfaya ulaştığı zaman bir sonraki aşamayı sunar. Zaten var olan şeyleri düzeltme veya kaldırmamak asla engellenmez.

Kendi kendine ev sahipliği yapan yükler

Lisansta entitlement seyahatleri. add-on on your OpsIQ account and the install picks it up at its next license check.

İlk haftalık kurulum

Aşağıdaki her şey gerçek bir ekrandır; burada hiçbir şeyin geliştiriciye ihtiyacı yoktur.

1
Modüli Turn the modülü on

PeopleOS → HR HomeBayrak tahta master ile başlar, PeopleOS İK: HR sayfası veya çalışan yüzeyinin ulaşılamaz olmadığı ile, bir anahtarlama onayıdır; bir tane kapatılır. AI anahtarları aşağıdadır (yardım, uygulama taraması, otonom asistanlar, AI röportajları, otomatik teklif gönderme, kimlik doğrulama) karar vermeden kalır.

2
Kurulum Copilot yapılandırmayı yapalım

PeopleOS → Build Copilot Ve açık dilde ne istediğini söyle: Günleriyle bir terk politikası ve fark, bir ülke için halk tatilleri, SLA ile bir dava kategorisi, maliyet kapağı, bir onboarding şablonu, aylık bir pul. sen onu doğrulayana kadar plan geri alın; orta riskli bir adım ikinci kişiye ihtiyaç duyar; her biri bir makbulunma ayrılır.

3
Çalışan portalını isimlendirin

PeopleOS→Frontline→Sign-in design. Kendi kendine ev sahipliğinde portal hayatlarının üzerine /hr/<address>; Portal adresi Hemen ve eski işaret bağlantıları çalışmaya devam ediyor çünkü eski adres öne çıkıyor. Bulutta portal şu ki /hr İş alanı hostunuzda ve adrese ihtiyaç yok.

4
Kariyer sitenizi büyü

PeopleOS → İşe AlımOnaylanmış bir karşılıklılıktan yayınladığınız her mesaj, kamu kariyer sayfasında görünür; bağlantı Açık Kariyer sayfası İşe alımnın başında, bir adayın tam olarak ne gördüğünü gösteriyor.

5
Paylaşılan cihazlar için bir kiosk kayıt edin

PeopleOS→Frontline→Parklar ve seçin Bir kiosk Kayıt. The device token is shown once; open the kiosk page on the tablet or PC (it is /kiosk portal hostunda) ve onu yapıştırın. İnsanlar iş e-postaları ve PIN ile saatlerini ya da portallarından kısa ömürlü kötü kodla. Bir kiosk cihazı bir kez durdurur.

6
Çalışanların kendileri için ne yapabileceğini karar verin

Ayarlar → HRHer bir kendi hizmet gücü (tabiler, talepler, belgeler, bırakın, açıklamalar ve bu yüzden) her çalışana, yöneticilerine sadece veya bir takıma ve bunun altındaki takımlara ayarlanmıştır. Bunu yapan ve neden bıraktığınız her değişiklik kayıtları, çalışanlara sessiz olarak eksik olan bir şekilde açıklanır.

7
İnsanları ekleyin ve onlara erişim sağlayın

Onda PeopleOS → İnsanlar Kişiyi, işlerini ve yöneticilerini oluşturun. Geçici portal erişimi sadece bir kez kişinin geçerli bir e-postası ve amaçlanmış bir iş ilişkisi vardır; davet aynı ekrandan çıkar ve gemicilik ayarladığınız yolculuktan başlar.

Yaşam döngüsü

Plan ve işe alım

Onaylanmış yenidenlemeler oluşturun, işler yayımlayın, tekrar güvenli webhoşlar, yapı yorumları, program röportajları, kayıt kararları, sorun teklifleri ve kiralama yoluyla uygulamalar alın.

Katıl ve düzenleme

Kanıt iadeli yolculuklar inşa edin, doğru belge sürümünü toplayın, istek ekipmanlarını alın, onaylanmış erişim şablonları ve geçici portal erişimi sağlayın.

İş ve büyüme

Operate ayrıldı, programlar, açıklamalar, faydalar, maliyetler, hedefler, geri bildirimler, incelemeler, öğrenme, beceriler, iç fırsatlar, başarı ve işgücü analizi.

Destek ve korumak

Özel İK desteği sağlayın, çalışan-relasyon vakaları, yasal tutarlar, veri talepleri, düzeltme, açıklama, temyiz ve bağımsız insan incelemesi.

Değişim ve ayrıl

Etkili bir iş değişiklikleri kullanın, geri dönüş erişim, kurtarma ekipmanları, dış sağlayıcıları uzlaştırın, saklama uygulayın ve gerekli kanıtları korur.

Erişim ve kimlik

Bir kanonik kişi iş kayıtlarına sahiptir ve dış kimlik yüzleri doğrulanır. E-posta dilsel iletişim verileridir, asla kalıcı kimlik anahtarı değildir. Portal kendini takip eder; yönetici ve yönetici görüşleri açık izinler gerektirir. API kapsamı rota izinlerin üst kısmındaki katmanını gerektirir ve onları asla atlamayın.

Yeni bir işçi ekleyin

Senaryo:
Kişiyi oluşturun, iş ve yönetici tayin edin, geçici portal erişimi, sonra gemi yolculuğu açın.
Ne yapmalı:

API için kuru-run ve idempotency kullanın. Kişinin erişim göndermeden önce geçerli bir e-postaya sahip olduğunu ve amaçlanan iş ilişkisini doğrulayın.

Tekrarlanan bir kimlik

Senaryo:
İki dış sistem aynı işçiyi farklı olarak tanımlar.
Ne yapmalı:

Hem kanonik kişiye doğrulanmış yüzleri bağlamış hem de çatışmayı açıkça çözmüyor. Kayıtları sadece iki mutable e-posta değeri maçını birleştirmiyor.

PeopleOS İK

HR iş akışları ve Çalışan Portal

Her büyük PeopleOS alanı nasıl işletilir ve çalışanların işaretten sonra gördükleri şey.

İnsanlar ve örgüt

Kanonik kişiyi, iş, işçi tipi, yöneticiyi, takımı, yerini, becerileri, belgeleri ve etkili örgüt yapısını korumak.

İşe alım ve teklif

Kayıt için onaylanmış geri bildirimden itibaren, uygulama, yapılandırılmış kanıtlar, röportaj, karar, konaklama ve çağrı rotalarıyla teklif ve kiralayın.

Gemi ve belgeler

İmza, sahibine özel adımlar emretti; toplamak, yorum, işaret, süresiz, sürüm ve erişim kanıtlarıyla belgeleri tutmak ve silmek.

Zaman, bırakın ve zamanlama

Politika geri kalan türleri, dengeleri, talepleri, onayları, tatiller, kullanılabilirlik, takvim olayları ve uzlaşma.

Pay, faydaları ve masrafları

Ödemeyi açıklayın, el onaylı işçi olaylarının ödemesini, uzlaşma istisnalarını kabul etmek, faydaları uygunluk ve geri ödemeleri yönetmek.

Performans ve büyüme

Operate hedefleri, check-ins, geri bildirim, yorum, kalibrasyon, öğrenme, beceriler, mentorluk, iç fırsatlar ve başarı.

HR hizmeti ve ilişkileri

Çalışanlara özel destek verin, rahatsız edici, disiplin, ısblower ve gizli izin sınırlarında kanıtları mühürle.

Analytics ve planlama

İşgücü önlemleri kullanın, baş hesap planları, ölçümler ve deneyim ölçümleri kayıtlardan elde edilen; asla başarı olarak eksik sonuçlar vermez.

Çalışan Portal harita haritası

Genel Bakış Genel bakış

Dikkatinize ihtiyaç var, son ziyaretten bu yana değişiklikler, açık talepler, önümüzdeki olaylar, ilerleme ve duyurular.

Profil ve Kayıtlar

İstihdam, doğrulanmış kayıt, belgeler, izinler, gizlilik talepleri ve düzeltme istekleri.

İKİ Destek ve Görevler

Özel konuşmalar, talepler, çalışan ve şirketin sahip olduğu görevleri ayrı olarak gösteren eylemler.

İlk günleriniz

Sahibi ile zaman çizelgesine geri dönün, çünkü devlet, tamamlanma ve engellenmiş çalışma.

Zaman ve ayrıl

Dengeler, isteklerden, kullanılabilirlikten, programlardan ve takvim sonuçları.

Beceriler ve büyüme

Öğrenme, beceri kanıtları, hedefler, geri bildirimler, mentorluk ve iç fırsatlar.

Benim ödemem, açıkla

Düz dil tazminatı ve çalışanın görmesine izin verilir.

Şirket Şirketi

Rehber ve organizasyon grafiği, bilgi meslektaşları ile sınırlı olarak seçilmiş veya politika onları paylaşmalarına izin verir.

Haklar ve kararlar

Açıklamalar, itirazlar, onay, düzeltme, erişim ve kesinti talepleri.

💡
Portal mobil-ilk. Hesap kartı, geniş ekranlarda bağımsız olarak erişilebilir ve içerik kaydırmaları kalır ve sayfayı zorlama veya örtmek yerine uçabilir. Long explanatory kopyası erişilebilir araçtipi veya açıklama bileşenleridir.

Güvenli işletim dizisi

1
Politika ve izinler

Görevlileri, rolleri, onay yolları, tutma, onay ve özellik kontrollerini canlı kayıtları yüklemeden önce ayarlayın.

2
Connect external sağlayıcıları

Uygun imza paketi yükleyin, en az öncelikli kimliklere girin ve bağlantıyı ve uygun testleri geç.

3
kumbox'ta veya gölgede Run in sandbox or Shadow

Tüm iş akışlarını deterministic verilerle kullanın ve gerçek provider uygulanmasına izin vermeden önce beklenen kanıtlarla karşılaştırın.

4
Çift kontrol altında serbest bırak

Farklı yetkili bir inceleme sağlayıcı, güvenlik, mahremiyet, yasal, adillik ve erişilebilir kanıtlar inceler.

PeopleOS İK

AI, adillik, video ve yasal kontroller

PeopleOS, otomasyona yönetilen bir araç yolu olarak davranır: politika izni, yürütmeye teşebbüs edilen sonuç ve kanıt ayrı gerçekler.

AI ve ajan kontrolleri

Her ajan, bir amaç, yargı, risk sınıfı ve maksimum özerklik ile kayıtlı tip araçlar kullanıyor. İnsan alımı, devre kesicileri, olaylar ve yetki değişiklikleri yürütmeyi durduruyor. Düzeltmeler önerilen bir veri kümesi oluşturabilir ancak farklı yetkili bir kişi gizlilik incelemesine kadar hiçbir şey trenle.

Fairness

Tanıma kohortları, minimum örnek kurallar, metrikler, evaluator kimliği ve yasal olarak serbest bir değerlendirme. Eksik veriler eksik kalır; asla bir geçişe dönüştürülemez.

Açıklamalar ve çağrılar

Sınırlı karar ve politika kanıtlarından açıklamalar yapın. Bağımsız bir insana hitap eder ve sonuçları korur.

Yargılamalar

Serbest ülke politikası yalnızca sorumlu bir yasal sahibi ile paketler, hukuk kaynakları ve testleri atıfta bulunur. Yüksek-yakınlık yasaları etkilenen şeritleri askıya alır.

AB AI Yasası

Sistem envanterini, risk sınıfı, temel doğruları etki değerlendirmesini, farklarını, denetçileri, metreleme ve kanıtları koruyun.

Video tarama sınırı

Geçici katılım katılmaz

hr.interview.room.provision Bir toplantı yeri yaratır. Sadece hr.interview.room.connect Medyanın işçiye ulaştığını kanıtlayabilir.

Amaç-özel onay

Kayıt, transkript ve biyometrik canlılık ayrı seçimlerdir. Withdrawal seçilmiş amaç için geçerlidir.

Hiçbir görünüm analizi

Video sözleşmesinin duygu, dikkat, çekicilik, ırk, sakatlık veya görünüş inference için bir alanı ya da yöntemi yoktur.

İnsan ve metin rotaları

Bir inceleme oturumu için kalıcı olarak sürebilir ve bir metin konaklama rotası mevcut kalır.

Yenidenleme ve deletion

Bağlantı, şifreli ulaşım, aktif tutma politikası ve sağlayıcı medya referansları rapor eder ve doğrulanabilir delesyon desteklemelidir.

Oda oluşturuldu, AI yok

Senaryo:
Zoom odası URL var, ancak medya köprüsü röportaj işçiye ses / video teslim etmedi.
Ne yapmalı:

Toplantıyı sahte ve AI katılımı olarak gösterin. İnsan röportajını ve mevcut metin konaklama yollarını tut.

Callback bir çekin geçtiğini söylüyor

Senaryo:
İmzalanmış bir arka kontrol webhook raporları tamamlandı.
Ne yapmalı:

Çağrıyı bir ipucu olarak kaydetmek, sonra sağlayıcı sorgulayın. Sadece asıllı durum yanıtı kontrolü güncelleyebilir.

🚫
Teknik erişilebilirlik değerlendirme, evaluator tarafından kaydedilebilir, ancak WCAG attestation ayrı bir kişi gerektirir. Sağlayıcı kanıtı, yasal salıverme ve adillik kanıtları da gerçek isim sahipleri gerektirir.
PeopleOS İK

PeopleOS API ve bağlantı geliştirme

Genel API 'ı yönetilme HR operasyonları için kullanın ve yazara dayalı dış sistemler için tiplenmiş bağlantı sözleşmelerini kullanın.

General API gerçek kaynaklarından

Gönder JSON to POST /api/v1.php. Koşu yüzeyinin çalışmasını keşfedin meta.actions, OpenAPI at /api/v1/openapi.phpVe Postman at /api/v1/postman.phpAşağıdaki üretilen indeks, tedavi edilen tam sayıyı taşır hr.* eylemleri ve gözden geçirme platform.hr.* Bu binada operasyonlar, bu yüzden bu sayfada hiçbir şey el tarafından yazılmamıştır.

Liste insanları listeler
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}'
Kuru-run a write
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}'

Kullan hr.read veya hr.write Sadece ihtiyaç olduğu gibi. Hedef yönetici rotası hala kendi iznini kontrol eder. Yazlar istikrarlı bir idempotency anahtar gerektirir; yüksek riskli yazar onay gerektirir. Retry Geçici başarısızlıkları aynı anahtar ve sorgu kurtarma durumuyla aynı zamanda sorgulayın.

Her tedavi edilen hr.* eylem

48 curated hr.* actions (22 reads, 26 writes) and 484 reviewed platform.hr.* operations, out of 2420 named actions in this build. Generated from the action registry, the same source as meta.actions, OpenAPI and Postman.

İnsanlar, organizasyon ve kimlik (9)

hr.employee.provision

Write. Scope: hr.write. Provision seatless employee access and send the invitation. Required: person_uuid.

hr.employee.restore

Write. Scope: hr.write. Lift an employee access suspension (written reason required) and provision again. Required: person_uuid, reason.

hr.identity.facets

Read. Scope: hr.read. List a person's identity facets and open conflicts. Required: person_uuid.

hr.identity.link

Write. Scope: hr.write. Link an identity facet to a person. Required: person_uuid, facet_type, facet_key.

hr.org.tree

Read. Scope: hr.read. Read the organisation tree.

hr.people.create

Write. Scope: hr.write. Create an HR person. Required: display_name.

hr.people.get

Read. Scope: hr.read. Get one HR person. Required: person_uuid.

hr.people.list

Read. Scope: hr.read. List HR people.

hr.people.update

Write. Scope: hr.write. Update an HR person. Required: person_uuid, display_name, primary_email.

Yenidenleme ve yayınlar (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.

Leave, learning and the connector market (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.

© sertifikasyon ve sağlık sağlığı (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.

Röportaj odaları (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.

Agents ve yaşam döngüsü şeritleri (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.

Yahudi (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.

Kararlar ve temyizler (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 kaliteli (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.

İşgücü konuşmaları ve saklama (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.

Okuma ve Yayınlama (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).

Dersler

İşe Alım

hr_job_board, hr_background_check, hr_identity_verification, hr_assessment ve hr_tax_right_to_work.

Selam ve selam

hr_esignature, hr_calendar, hr_video ve hr_equipment_it.

İşgücü operasyonları

hr_payroll, hr_benefits, hr_learning, hr_expense_payment, hr_directory ve hr_data_warehouse.

İletişim

hr_messaging Sadece gönderilmektedir. Sözleşme hiçbir çalışan-mesaj okuma yöntemi içeriyor.

Sağlayıcı Gateway endpoints

PeopleOS HR Provider Gateway 1.0
GET    /v1/hr/health
POST   /v1/hr/job-postings
PATCH  /v1/hr/job-postings/{provider_ref}
POST   /v1/hr/job-postings/{provider_ref}/close
GET    /v1/hr/job-postings/{provider_ref}
POST   /v1/hr/background-checks
GET    /v1/hr/background-checks/{provider_ref}
POST   /v1/hr/identity-verifications
GET    /v1/hr/identity-verifications/{provider_ref}
DELETE /v1/hr/identity-subjects/{subject_ref}
POST   /v1/hr/payroll/worker-events
GET    /v1/hr/payroll/state?cursor=...
GET    /v1/hr/payroll/exceptions
POST   /v1/hr/equipment/requests
POST   /v1/hr/access/requests
GET    /v1/hr/provisioning/requests/{request_ref}
POST   /v1/hr/provisioning/requests/{request_ref}/revoke

Ağ geçidi HTTPS, bloklar güvenli / özel hedefler gerektirir, pins doğrulandı DNS Sonuçlar, yönlendirmeleri takip et, cevap boyutunu sınırlayın, gerektirir JSONAncak, deterministic idempotency taşır ve zamanları da destekler HMAC Her iki açıdan da Webhooks her zaman sağlayıcı re-query tarafından takip edilen ipuçlarıdır.

Inbound webhook kapılar

Üç kamu kapısı sağlayıcı çağrılarını alır: POST /opsiq/ajax_api.php?ajax=hr_connector_webhook (fields) connector_class, connector_key, topic), ?ajax=hr_esign_webhook (connector_key, offer_uuid, provider_ref) and ?ajax=hr_check_webhook (check_uuidHer biri sertifikalı bağlantı aracılığıyla vücudu doğrular, teslimatı o kadar yeniden oynatılır ve sadece bir bekleme süresiz bir geri dönüş kaydeder; sağlayıcının kendi cevabı rekorları değiştirir. Her reddedilmesi amaç için aynı genel cevaptır. PeopleOS bugün hiçbir dışlanmış webhook olayı sunar: webhooks.events.list Otorite ve isimler hiçbir şey değildir hr Aile, bu yüzden ankete hr.* okuma veya kullanım hr.connectors.health.

Detaylı referanslar

Tamam PeopleOS handbook

Read Oku doc/contracts/PEOPLEOS_HR.md Her operatör için kendi kendine ev sahipliği yapan bir yüklemede, API, konektör, webhook ve serbest bırakma kuralı.

Gateway developer sözleşme

Market paketi içerir README.md, DEVELOPER.md, connector_contract.json, hr_profile.json ve imzalanmış bir dosya ortaya çıkıyor.

PeopleOS İK

Test ve üretim hazırlığı

Bir fırlatma talebi kanıtlardan hesaplanır. Paket hazırlığı, sağlayıcı sertifikasyonu, yasal onay, adillik değerlendirme ve erişilebilirlik ihtiyatı kasıtlı olarak ayrıdır.

1
Geçerli kod ve sözleşmeler

PHP sözlüğü, HR PHPUnit, rota /API parity, OpenAPI/Postman kontrolleri, paket açık ve JSON Schema geçerliliği.

2
Egzersiz full iş akışları

İşe alım, AI inceleme, röportaj / video, dolap, imzalar, bırakın, maaşroll, portal, bildirimler, modalar ve konektör başarısızlık yolları.

3
Teste duyarlı ve erişilebilir UI

masaüstü, tablet ve telefon düzeni; klavye, odak, etiketler, kontrast, geri akış, araçtipleri, diyaloglar, bildirim kaydırıcıları ve bağımsız navigasyon.

4
Dış kanıt toplamak

Gerçek sağlayıcı turlarını ve deletion, yasal politika yayınları, temsil adillik verileri ve bağımsız bir insan WCAG'ı istasyonda kullanın.

5
Çift kontrol altında serbest bırak

Göndericinin bağlayıcıyı onayladığı ve yayınlayan kanıtları onaylamasından farklı bir inceleme. Rektör, delili sona ermişse bir bağlantıya mahkumdur.

Her sonuç ne anlama geliyor demektir

Paket imzalanmış

Dosyalar yetkili paketi imzasından beri değişmemiştir. Üçüncü taraf hesabının çalıştığını kanıtlamıyor.

Sandbox vefat etti

Deterministic behavior and state Transitions uygun. Gerçek bir sağlayıcı, ikamet terimi veya deletion kanıtlamıyor.

Üretim Bağlantı sertifikalı

Belirli bir iş alanı hesabı, çift kontrol altında beş sağlayıcının yükümlülüklerini geçti.

Teknik WCAG raporu

Otomatik ve evaluator-led kanıtlar, adlandırılmış yüzeyler için mevcuttur. İkinci kişilik bir attestation değildir.

Hazırlanmaya hazır

Tüm gerekli kapılar aynı anda yeşildir ve hiçbir kanıt sona ermiyor, geri alındı, kayıp veya canlı sağlıkla çelişiyor.

⚠️
Asla bir geçiş yasal, adillik, sağlayıcı veya bağımsız istasyon kaydı sadece kapıyı açık tutmak için. Bunun yerine bloker ve sahibi kaydetmek değerli çünkü desteklenmez iddiaları reddediyor.
Neden bir bağlantı kuruldu ama hala mevcut değil?+

Kurulum paketi varlığını kanıtlamaktadır. Enable it, gerçek en az kardiyönemli kimlikleri kurtarın, bağlantı testi geç, sonra Gerçek sağlayıcı kanıtları ve farklı bir inceleme kullanarak eşleşen PeopleOS hesap üretim kapsamını sağlayın.

Neden bir webhook rekoru değiştirmedi?+

Çağrı geçerli olabilir, ancak sadece bir ipucu. webhook inbox, sağlayıcı durumu uç noktası ve uzlaşma sonucu kontrol edin. PeopleOS değişiklikler yazaraatif devlet yalnızca yeniden ele sonra.

Tam makine hazırlanabilir HR API nerede?+

hr. ve platform için meta.actions and filter arayın; veya kullanın/api/v1/openapi.phpVe ve/api/v1/postman.php.Aynı runtime kayıtlarından üretilirler.

Destek Desteği Destek Desteği Destek Desteği

Merkez Yardım Merkezi Yardım

Yardım Merkezi, yayınladığınız makalelerden inşa edilmiş bir kendi kendine koruma yardım sitesidir. Müşteriler bunu kendi kamu sayfasında okuyabiliyor ve doğru sohbet widget'ında bulabilirler, böylece bilgi tabanınızı açmadan önce kendi başlarına cevap bulabilirler.

Müşterileriniz nerede gördüğünü nereye göre

Kendi halk sayfası

Temiz, arama edilebilir bir yardım sitesi /help.php. Müşteriler kategoriye, aramaya ve herhangi bir makaleyi açın. Kendi adını ve stilinizi verebilirsin.

Sohbet widget'ı içinde

Sohbet widget'ında bir yardım bağlantısı, böylece müşteriler makalelerinizi sohbetten çıkmadan arama yapabilirler. Eğer hala bir kişiye ihtiyaç duyarlarsa, bir konuşma başlatmaktan uzaklaşırlar.

Aç.

1
Yardım Merkezi sayfasını açın

Go to Go To Go Config, then Help Center Yöneticinizde ve üzerinize geçiş yapın Kamu Yardım Merkezini Etkinleştir.

2
Ona bir isim verin ve bir bakış

Başlarda ve tarayıcı sekmesinde gösteren Yardım Merkezi adını ayarlayın ve bir görsel stili seçebilirsiniz. Temiz bir sayfa için menü ile birlikte en iyi navigasyonu kapatabilirsiniz.

3
Bazı makaleler

Bir sonraki bölüm nasıl olduğunu kapsar.

Yardım Merkezine Yönelik Makaleler

Bilgi tabanınızda yaşayan makaleler, Bir makale bir kez yayınlanan ve işaret eden halka görünür. Bunu yapmanın birkaç yolu var:

Bir makale

Makaleyi açın, yayınlanır ve Yardım Merkezi'nde gösterme seçeneğine dönün.

Her şeyi bir kerede her şeye basın

Kullanımı kullanın Tüm İçerik Tüm yayınlarınızı bir tıkla Yardım Merkezine itmek için, bunun yerine onları bir seferde yapmak.

SSS'leri makalelere dönüştürün

Zaten SSS'ler var mı? Kullanımı Her şeyi to Yardım Etmek için Onları makaleye dönüştürmek için, böylece her şeyin yanında otururlar.

Mevcut bir bilgi tabanını ithal edin

Başka bir yardım masasından taşınmak? The Moving from another help desk? İthalat KB Makaleler sekmesinde düğme sizin için mevcut bir bilgi tabanı getiriyor. Bunu içerikinizde anlamanın üç yolu var:

Bir URL

Mevcut yardım merkezinin adresini veriniz. Eğer platformu tanırsa (örneğin Zendesk) o platformdan tam kategori ağacını okur. Aksi takdirde siteyi tarayıp sayfalardan yapıyı yeniden inşa eder, sadece gerçek makaleleri ithal ederek ve giriş, fiyatlandırma ve iletişim sayfalarını atlayarak.

Bağlı bir uygulama seçin

Bir platform zaten bu çalışma alanına bağlıysa ve bir bilgi tabanı tutarsa, bir düşüşte aşağıda gösteriyor Bir bağlantılı uygulamadan ithal. Onu seçin ve ithal edin, URL veya şifre gerekli değil. Uygulama sadece bağlantılı ve ayarlandığında listelenir.

Bir CSV

Hiç canlı site bir noktaya değil mi? ile dolu bir tabloyu yükleyin title, categoryVe body sütunlar. Parent / Child kategori sütununda nested kategoriler inşa etmek.

Hangi şekilde seçerseniz seçin, bir tane alıyorsunuz İlk önce ilk kez önizleme: Bulduğu makaleler, kategori tarafından gruplanmış, bir çek kutusu ile her biri istediğiniz herhangi bir şeyi bırakabilirsin. daha sonra İthalata tıklaıncaya kadar hiçbir şey kurtarılamaz. Geri Al Bir tıkırdaki tüm ithalat veya Yeniden senkronize et Bir URL veya bağlantılı uygulama daha sonra yeni ve değişmiş makaleler çekmek için.

💡
Geliştiriciler: herhangi bir bağlantı bilgi tabanını bu düşüşe ilan edebilir kb_capabilities Bloku onun içinde blok settings.json (tip) kb_source, bir an ile adapter Ve bir base_template). Süreklerin bölümü ve platformun bağlantı referansını görün.

AI ile Organize Edildi

Bir tidy yardım merkezi aramayı ve daha kolay izlemek kolaydır. AI ile Organize Edildi Bu düğme sizin için titiz yapar. Bir tıklamada, yayınlanan makalelerinizi okur ve bunları mantıklı kategorilere dönüştürür ve etiketler ekliyor. Bir kategoriye ihtiyaç duyduğunda bir kategori yaratır ve zaten organize ettiğiniz her şeyi atlar, böylece yeni makaleler ekleyebilirsiniz. Turn on a category when it needs one, replicas a category that already setting, and Jumps anything you have already organized, so you can run it again any time you add new article. AI alt kategorilere örgütlenmeye izin verin Yardım Merkezi ayarlarında ve aynı zamanda nested altında makale gönderebilir Parent / Child Alt bölümlere sahip bir bilgi tabanı ithal ettikten sonra el eley, hangi kategoriler.

💡
Kategoriler müşterilere göz atmak için bir yol verir ve hem halk sayfasında hem de widget'da keskin aramalar. Daha sonra şeyleri yeniden adlandırabilirsiniz. AI size güçlü bir başlangıç noktası veriyor, sizinle sıkıştırmadığınız bir kurulum değil.

Sohbet widget'ınızın içinde Yardım Merkezi

Yardım Merkezini sohbet widget'ı hemen gösterebilirsiniz, böylece insanlar mesaj vermeden önce cevap arayabilirler. sohbet pencerelerinizde yardım bağlantının nerede göründüğünü seçin:

Başlarda

Widget'nın üst kısmında küçük bir yardım simgesi.

altta

Mesaj kutusu altında bir metin bağlantısı, örneğin "Browse yardım merkezi" . Kelimeyi değiştirebilirsiniz.

Her iki yer de her yerde

Bunu üstteki ve en görünür için altta gösterin.

Yardım bağlantısının widget Görünüm ayarları altında kendi renk kontrolü vardır. Bunu bırakın Hiçbir şey yok Başlatıcı rengini eşleştirmek veya bir tane seçin Katı Renk veya bir renk Değişken. Tüm yardım deneyiminiz widget temanızı takip eder, bu yüzden her zaman markanızın bir parçası gibi görünür.

Kendi web adresinizi yardım merkezinizi koyun

Kutunun dışında, yardım merkezi zaten kendi kendine temiz ve paylaşılabilir bir adrese sahiptir (örneğin /help/your-help-center) Bir adım daha ileri gidebilir ve onu senin altında hizmet edebilirsiniz kendi alan adı, böylece müşteriler ve arama motorları bunu markanızın bir parçası olarak görüyor, örneğin yourdomain.com/help veya help.yourdomain.comHer şey etki alanınızda çalışıyor: bağlantılar, görüntüler, arama ve makale notları.

Ana siteniz altında

- Ne? Config, sonra Merkeze Yardım, açık açın Ekle sekme ve "Kendi web adresinizi yardım merkezinizi göster" seçeneğini seçin. Kurulumunuzu (Cloudflare, Nginx veya Apache), hazır blok kopyalayın ve siteye yapıştırın. Yön kılavuzluk Bir sonraki düğme tam adımlarla.

Bir alt etki üzerinde

Tercih etmeyi tercih et help.yourdomain.comAynı panelin alt bir domain seçeneği vardır. Cloudflare a subdomain is the most reliable rota, and it give you a Clean address with anything after it.

💡
Kullanıyor Cloudflare? Sadece Worker'ı bir adres üzerinde çalıştırıyor ve bu adres,?Cloudflare(turuncu bulut). Ana alan adınız genellikle doğrudan web sitenize işaret eder, bu yüzden ana alana konan bir kural sessizce hiçbir şey yapamaz. Güvenilir yol şu gibi bir proxy alt alanı kullanmaktır: help.yourdomain.com. Kurulum rehberi sizi bir DNS kaydı ve rota aracılığıyla yürür.
SEO için iyi. Yardımcı merkeziniz kendi domaininizde olduğunda, arama motorları markanızın altındaki makalelerinizi indeksliyor. Her sayfa doğru adresini ve sitemp listelerini açıkladı, bu yüzden aynı makale asla iki kez endekslenmedi.
💡
In-widget'in de bağlantıya yardım etmesi mi? sohbet widget’ın "Yardım merkezinde açık" ayarlarında, set ayarlandığında Bağlantı nereye gider tom için Kendi yardımı merkezi domain Ve aynı adresi girin. Sonra bu makale bağlantıları da etki alanınızda açık, OpsIQ adresine değil.

Tüm yardım merkezinizin nasıl yaptığını görün

Tek parça oylarının ötesinde, Yardım Merkezi kendi kendine ait Analitik Analiz analitikYardım Merkezi ayarlarında bunu izler ve insanların yardımını nasıl kullandıklarını sessizce kaydeder: en çok tartışılan makaleler, aradıkları şey ve boş geri gelen aramalar (kendi başına ziyaretçi ülke ve cihazı çalışarak) her sayının rapor için gösterilmesine gerek yoktur. Her ikisi de her ikisine de her ikisini de Yardımınız görünür, halk sayfası ve in-widget yardımı, aynı şekilde birleştirilebilir, böylece her birinin aslında ne kadar kullanıldığını görebilirsiniz.

💡
Analytics bunu değiştirinceye kadar kalır ve ziyaretçi IP adresleri anonimleştirebilirsiniz. Hiç bir şey opt inmeden önce kaydedilir.

Sayfanın her bölümünde görünen şeyleri seçin

Yardım Merkezi'nin her bölümü (Ev sayfasındaki kategoriler, popüler makaleler, bir kategori sayfası ve daha fazlası) kendi basit kuralına sahiptir. Her biri için gösterebileceğiniz veya saklayabilirsiniz ve gösterebilirsiniz. all Bir eşya, bir set numarası, the sonYa da sadece seninkiler özellik özelliği Bir yıldızla. Bir kural bir liste kapsadığında, müşteriler hala "Herkese göster" bağlantı elde ederler, bu yüzden hiçbir şey gerçekten ulaşmadan değildir.

Yardımcı oyların nasıl görüneceğine de siz karar verin: gizli, "12 ya da 14"Bunu yararlı buldum" ya da basit başparmak sayımı. Minimum- oy ayarları yeni bir makaleyi "0dışarı0".

Hangi makalelerin çalıştığını görün

Her makale bir şeyler gösterir Bu yararlı mıydı? Hızlı. Her evet veya makale başına sayılmıyor, bu yüzden makalelerin soruları iyi cevap verdiği ve hangilerin tekrar yazmaları gerektiğini görebilirsiniz. Aynı ziyaretçiden gelen oylamalar göz ardı edilir, böylece sayı dürüst kalır.

Metin ve etiketler

Sesinizi eşleştirmek için yardım Merkezindeki başlıkları ve etiketleri değiştirebilirsiniz. Herhangi bir alan boş bırakın ve mantıklı bir varsayılana geri döner, bu yüzden aslında değiştirmek istediğiniz kelimeyi düzenleyebilirsiniz.

Yardım Merkezi, AI ile bir kütüphane paylaşıyor. Burada yayınladığınız her makale, sohbetleri ve biletleri cevaplamak için AI kullanımıdır, böylece birini geliştirmek diğerini geliştirir.

Ortak sorular

Yardım Merkezi için ayrı içerik yazmam gerekiyor mu?+

Hayır. AI'nın zaten kullandığı aynı bilgi tabanı makalelerinden inşa edilmiştir. Bir kez bir makaleye hizmet edebilir ve her ikisini de hizmet edebilir.

Bazı makaleler içeride tutabilir miyim?+

Evet. Sadece yayınladığınız ve işaret ettiğiniz makaleler Yardım Merkezi'nde görünür. Yayımlanmamış herhangi bir şey ondan uzak kalır.

Müşteriler hala bir kişiye ulaşabilecek mi?+

Evet. widget bağlantı bir konuşma başlatmaktan uzak bir dokunuşa yardımcı olur, bu yüzden kendini kurtarın hiç kimseyi tuzağa düşürmüyor.

Büyüme ve SEO

Site Zekası (SEO süit)

Site Zekası OpsIQ'in yerleşik SEO ve arama-dazibilite paketi. Bir arama motoru gibi sitenizi tara, sıralamayı sıraladığınız yerde takip eder; her alandaki veri ayrı kalır, taramalar ve tüm müşteri hazır raporları döndürür ve düzeltmeleri taslaklayın. It is a premium özelliktir; the sidebar. Her domainin verileri ayrı kalırken, taramaları yapar ve raporlara dönüşür.

Site Zekası
Site Zeka panoBir site-sağlık puanı gösteren bir SEO panosu, anahtar kelime sıralaması ve trafik eğilimi.Site Zekasıyoursite.com86SİTE SAĞLI SAĞI3 eleştirel konularAnahtar Kelime sıralaması takipai yardım masası#3Canlı sohbet saas#7ajansları için#12Organik tıklamalar1ÇİÇEKTeknik sorunlar bul2TRACKRanks, anahtar kelimeler, backlinkler3Yapay zeka analistiAçıklamalar ve taslaklar düzeltmeler
Site Zekası genel bakış: En son taramadan bir site-sağlık puanı, canlı anahtar kelime sıralaması, organik tıklayan bir trend ve üç adımlı döngü: tarama, takip, AI taslakları düzeltmelere izin verin.

Site Zekası

Site Zekası onu taşıyan planların bir parçasıdır. Değil bir plan üzerinde, tam olarak PeopleOS HR gibi çalışır: hesap sahibi açılır Hesap → Add-ons & TokensBir Site Zekası katmanını seçin ve ücretsiz denemeye veya bir sonraki aşamaya ulaştığında; bir denemenin kendi planında hala geçerli olan bir plan silindiğinde, süitin sahibine ait olduğu kadar, şu anki tierse eklendiğinde, sayfanın bir sonraki tier'a ulaştığını gösterir; bir duruşma kaldırıldığında ve hiçbir şey ücret alınmaz. Fiyat sayfası.

Bir taramayı çalıştırın · buraya başlayın

Bir tarama OpsIQ sayfalarınızı bir arama motoru bulmak, teknik sorunları bulmak için: kırık bağlantılar, eksik başlıklar, ince içerik, yavaş sayfalar, indeksleme problemleri.

1
Başlatın

Genel olarak, bir tarama başlatmak için tıklayın. OpsIQ kuyrukları onu ve arka plandaki sayfalarınızla çalışır; bir durum göstergesi ilerleme gösterir.

2
Raporları okuyun

Sonunda, sorunları ve sayfa listesini açın. Her konu ciddiyetle gruplanır, böylece ilk önce en büyük kazanırsınız.

3
AI yardım edelim

AI analisti neyin yanlış olduğunu ve neden önemli olduğunu açıkça ifade eder ve uygulamadan önce incelemenizi önerebilir.

Site Zekası hangileri izler

Crawls & site sağlığı

Teknik SEO sorunları için sayfalarınızı tarayın ve her sayfası problemleriyle listeler. Herhangi bir zaman mı, yoksa bunu planlayın.

Rank izleme

Dikkat ettiğiniz anahtar kelimeleri ekleyin; OpsIQ web sitenizin nerede yer aldığı ve zamanla hareket ettiği kontrolleri.

Anahtar Kelime Araştırması

Yeni anahtar kelime fikirlerini hedeflemek için, AI anahtar kelime antrenörü ile öncekiitise yardımcı olmak.

Geri bağlantılar

Kimle bağlantı kur, listeyi yenileyin ve sitenizle ilişkili istemediğiniz bağlantıları gözden geçirin.

Yetkinlikler

Rakip alanlarınızı ekleyin ve görünüşünüzü AI rakip analizi ile karşılaştırın.

Yerel (map) ızgara

Haritada nereye gösterdiğini görmek için coğrafi bir ızgaradaki yerel listeleme görünürlüğü, artı Google Business Profile araçları.

Sayfa hızı

Sayfa hızlı kontroller çalıştırın, böylece sıralamaları ve dönüşümleri incitmiş yavaş sayfaları düzeltebilirsiniz.

AI içeriği

Hedeflediğiniz anahtar kelimelere yönelik kısa ve taslaklar.

Raporlar Raporları

Baskılanabilir, müşteri hazır her şeyin raporları yukarıda.

Google'ı doğru veriler için bağlayın

İki Google konektörleri gerçek sayılara tahminler döndürür:

Google Arama Konsolu

Ara

Siteniz için Google’ın raporlarını, mülkünüzü haritalayın ve yüzey sıralama fırsatları doğrudan Google'ın kendi verilerinden alın.

Google Analytics 4

Trafik Ticareti

SEO verilerinizle birlikte trafik ve etkileşim verilerini getirin, bu yüzden raporlar birlikte görünürlüğü ve davranışları gösterir.

Kayıtlar ve beyaz-label raporları

You do not have to run everything by hand. Scheduled refreshes re-run crawls, rank checks, keyword checks, backlink refreshes, local-grid scans and report generation on a cadence (daily or weekly depending on plan and volume). These run through the OpsIQ cron, see the Cron and automation section. Generated reports export as printable, customer-ready documents: agencies send each client a regular SEO update, and because every domain's data is separate, each client only ever sees their own.

Bazı Site Zekası, dış veri sağlayıcıları ve AI'yı aracılığıyla adlandırıyor OpsIQ“ yapılandırılmış sağlayıcı. onlar, paketin planınız için etkinleştirildiği zaman kutudan işliyorlar. eğer bir yenileme çalıştırmıyorsa, onaylayın OpsIQ cron çalışıyor (Bon ve otomasyon bakın).
SEO izleme için siteme bir şey eklemek zorunda mıyım?+

Crawls, sıralama takip, anahtar kelime araştırma ve backlinkler sitenizin dokunmadan çalışır. Trafik ve tam arama verileri için Google Arama Konsolu ve GA4'ü bağlayın.

Bir domainden daha fazla izleyebilir miyim?+

Evet. Her alanı ayrı ekleyin; taramaları, sıralamaları ve raporları bir başkasından tamamen izole kalır.

Ne sıklıkta taranmalıdır?+

Haftalık çoğu site için boldur; büyük bir içerik veya yapı değişikliğinden sonra talep üzerine tarama. Bir program oluşturun, böylece asla unutmazsınız.

Büyüme ve SEO

Auto-Implement (SEO Agent)

Auto-Implement, site istihbaratının zaten bulunduğundan (bir değişiklik icat edemez) ve her bir düzeltmeyi aynı güvenli döngü ile birlikte gerçekleştiriyor: kuru adımlı bir onay, canlı yazınız, otomatik bir anlık görüntüler ve açık kodlanan bir geri sayının aşağı gittiğini kanıtlayan bir re-crawl. It is a managed-AI-only özellik; Görünüşe göre Auto-İmplement (rocket) görünür.

Özel
Auto-Implement SEO ajanıÖnerilen SEO düzeltmeleri gösteren bir akış, onay ve canlı bir yazı ile doğru-it re-crawl ile hareket eder.Özelyoursite.comÖnerilen düzeltmelerAdd missing <title>onaylandıFix robotlar. txtonaylandıSitemap.xmlgözden geçirme incelemesiDRY-RUN ÖNCELİĞİ (DIFF)+ <title>AI Helpdesk - OpsIQ</title>+ <meta name=description ...>- <title>Home</title>OnaylaGemi.CANATIRIN - YENİDEN ÇEŞİNAçık konular 124Snapshot kurtarıldı1ÖNCEKİHer bir düzeltmenin kuru-run diff of each Fix2OYLA & YAZSSH Ya da ev sahibi olmak API3DENEME & GERİ ALYeniden tarama + fotoğraf
Bir seans nasıl çalışır: Ajan, Fixes Site Zekasını zaten tavsiye eder, her birinin kuru-runlu bir diff gösterir, onayladığınız kişiler uygulanır. SSH Ya da evlenmiş bir ev API Ancak her yazıdan önce anlık görüntüler ve açık kod sayımının düşmesini ispatlamak için tekrar-crawls.

Ne değiştirebilir

Ajan, Site Zekası (veya AI analisti) bu alan için zaten tavsiye edilen platformları uygular:

Server yapılandırma

sitemap.xml, robotlar. txt ve yönlendirme, . htaccess (Apache / LiteSpeed) veya nginx yapılandırılmadı.

Yeniden yönlendirme zincirleri

Birden çok-hop yönlendirme zincirini son URL'a doğru bir şekilde yönlendirmek, aynı yönetilen . htaccess bloğu içinde, bu kadar hız ve bağlantı değeri ekstra umutlar aracılığıyla sızıntıyı durdurur.

Page <head>

Eksik veya zayıf sayfa başlıkları, meta açıklamaları, kanonik etiketler ve yapılandırılmış-data (schema) bloklar.

WordPress SEO

Yoast, Rank Math ve SEOPress başlıkları ve meta ve görüntü alt metin, WP-CLI aracılığıyla uygulandı SSH Yol veya REST API Ev sahibi yolda.

WordPress yapılandırılmış veriler

Adds AddsJSON-LD (schema) eksik olan sayfalara.SSHKüçük yönetilen bir yardımcı yol (örneğin eklenti) işaretlerini yazdırır, böylece SEO eklentisi olmadan veya ile çalışır; barındırılan yolda SEO Eklentisi bunu taşır.

İç bağlantılar

Mevcut WordPress içeriği içinde ilgili bir iç bağlantı ekleyin ve ilgili mesajları bağlantıya geçin. Sayfa başına bir bağlantı, asla bir başlıkta, mevcut bir bağlantı veya kısa kodda değil, her zaman ilk olarak onayladığınız.

İnce sayfa içeriği yeniden yazılır

İnce sayfalar için tam yedek içeriği (aşağıdaki tarama seçeneği tarafından geri çekildi) Her taslak, yayın yapmadan önce sizinle gözden geçirilir ve onaylanır. The old content is kept so it can be restore.

Sayfa önbellek (WordPress)

W3 Total Cache sayfasında, tarama hız problemlerini bulduğunda ve bu eklentinin yüklü olduğu zaman, o yüzden sayfalar daha hızlı hizmet eder.

Shopify SEO

Product and collection SEO titles & descriptions, page and blog-article SEO, plus 301 redirects, through the Shopify Admin API.

Webflow SEO

Per-page SEO title and meta description through the Webflow Data API v2.

Fixes otomatik olarak hazırlayın (iki tarama seçeneği)

Site Zekası Bir alan için panel (görücü ayarları), acentenin zaman öncesinde ne kadar yukarı doğru ilerlediğini karar veren iki seçeneğiniz vardır. Her ikisi de varsayılan olarak kapalıdır ve AI kredisini kullanıyor, bu yüzden sadece sizin için yaptığınız işi istediğinizde değiştirirsiniz.

Auto-prepare AI her taramadan sonra düzeltmeler

Her tarama ayrıca beton düzeltme içeriği (Yazılar, meta açıklamaları, alt metin, şema, yönlendirmeler) yazıyor ve böylece düzeltmeler daha sonra oluşturulan tarama yerine tamamlanmış ve uygulamanız için hazır. Uses AI credit on each screen.

AI content yeniden yazılır (thin sayfalar)

Ajan ince sayfalar için tam bir değiştirme içeriği hazırlayabilir. Hiçbir şey kendi başına yayınlanmaz: her taslak yan tarafı gözden geçirmeniz veya reddedilmeniz gibi görünür, önceki içerik geri alınır ve bu nedenle birkaç sayfa ile sınırlıdır. Apollo kredisini draft başına kullanın.

💡
Her iki seçenek de sadece hazır ve taslak iş hazırlar. Her değişiklik hala aynı adım onayı, anlık ve diğer herhangi bir düzeltme olarak geri döner, bu yüzden onları asla kendi başına yaşayan hiçbir şey koymaz.

Bağladığı iki yol

SSH / SFTP Yol yolu

Kendini idare etti

Kendi sunucunuzdaki siteler için, ajan birbirine bağlanır SSH/SFTP Mağazanızı kullanarak, sunucu yapılandırmasını ve sayfa dosyalarını doğrudan düzenler ve WP-CLI'yı çalıştırın. WordPress En iyisi, kabuk erişimine sahip olduğunuzda ve dosyaların tam kontrolünü istiyorsanız.

Hosted-API yolu (no SSH)

Hiçbir kabuk yok

İzin vermeyen platformlar için SSH Ancak, ajan tamamen resmi bir resmî aracılığıyla çalışır API Link, WordPress (REST + Başvuru Şifreleri) Webflow (Data)API v2) ve Shopify (Yönetim)API 2) Ev sahibine hiçbir şey yüklü değildir.

💡
Wix ve Squarespace'in hiçbir kamu SEO yazma API yok, bu yüzden Auto-Implement danışma modunda çalışır: size tam bir değişiklik yapmanızı gösterir (en kesin başlık, meta veya ayar) çünkü her şey sadece ve güvenli.

Bağlantılara dön

Ajan bir bağlantı aracılığıyla her platforma ulaşır:

İnşa Edilmiş

Shopify and WordPress connectors ship with OpsIQ, just enable them under Connectors and add the store / site credentials.

Market'ten

Webflow, Wix ve Squarespace, → Market'ten yükleniyor, sonra aynı şekilde bağlantı kuruyor.

Bir seans nasıl çalışır

1
Fixes'leri seçin

Site Zeka bölümünden Open Auto-Implement (rocket) listeler. Site Intelligence zaten bu alanda düzeltebileceğini buldu.

2
Her değişiklik

Her düzeltme için ajan kuru bir diff gösterir (ekle ne yazacağını) canlı siteye dokunmadan önce.

3
Approve step by step

Her bir değişikliği bireysel olarak onaylıyorsunuz. Açık go-ahead olmadan bu adımda hiçbir şey uygulanmaz.

4
Yazılıyor, sonra anlık görüntüler

Onayda, ajan canlı değişikliği canlı yapar SSH Ya da evlenmiş olan API Ve ilk önce bir anlık tasarruf edin, bu yüzden herhangi bir değişiklik geri alınabilir.

5
Onu kanıtlayın, canlı

Her bir değişikliğin aracı hemen tüm siteyi tekrar kontrol eder ve per-step “bitki canlı” kararı gösterir, böylece her düzeltme araziyi olduğu gibi canlı sayfada izlersiniz. Sonunda bütün siteyi yeniden-crawls ve açık-konu saymayı onaylar.

Güvenlik ve fatura

SEO-sadece

Ajan sadece Site Zekasının bu alan için önerilen şeyi yapabilir. Sitenize veya sunucunuza rastgele değişiklikler yapamaz.

Per-step onayı

Her yazı bir diff olarak önlenir ve sadece o özel adımı onayladığınızdan sonra uygulanır.

& Geri Döndür

Her yazıdan önce bir anlık kurtarılır, bu yüzden herhangi bir değişiklik yeniden yapılabilir.

Canlı per-step kanıtı

Her değişmiş sayfa yazılan anda tekrar kontrol edilir ve "tam canlı" bir karar alır, böylece düzeltme sadece kapalı yeniden-çözmede değil, canlı sayfaya karşı hemen doğrulanır.

İçerik asla otomatik yayınlanmaz

İç bağlantılar ve ince sayfa içeriği yeniden yazlar daha yüksek-impakt, bu yüzden her zaman onay için gösterilir ve otomatik olarak uygulanmaz, ne mod çalıştırıyorsunuz.

Yönetilen-AI sadece

Auto-Implement Yönetilen AI üzerinde çalışır; bir çalışma alanı kendi (BYOK) anahtarlarını kullanırken engellenir.

Hesaplama

AI Jet normalde onları kullandığınız gibi, Auto-Implement seansı başına bir düz ücret, her ikisi de aynı Yönetilen-AI kredisinden çekildi.

Auto-Implement varsayılan olarak kapalıdır. AI yapılandırma sayfasında (Auto-Ilastlement kartı) kullanılabilir ve platformunuzun bağlantınızın ilk önce bağlantılı olduğundan emin olun.
Sormaksızın bir şey değiştirir mi?+

Hayır. Her değişiklik kuru bir diff olarak önlenir ve sadece bu tam adımı onaylamadan sonra uygulanır. Bir anlık her yazıya girmeden önce kaydedilir, böylece geri dönebilirsiniz.

SSH erişime ihtiyacım var mı?+

Not on not on Not on Not WordPress, Shopify veya Webflow Bu, resmi aracılığıyla çalışır. APIs Hiçbir kabuk erişimi olmadan. SSH Sadece iki yoldan biri, ajanın sunucu yapılandırmasını ve dosyaları doğrudan kendi sunucunuzda düzenlemesini istediğinizde kullanılır.

Nasıl çalıştığını biliyorum?+

Onaylanan düzeltmeleri uygulamadan sonra, acentenin siteyi yeniden tehdit eder ve daha önce açık-sayı sayılarını gösterir, böylece düzeltmeleri sorunları azaltabilirsiniz.

Sayfa içeriğini kendi başına yeniden yazacak mı?+

Hayır. AI içerik yeniden yazlar, onları tarama seçeneklerinde döndürene kadar kapalıdır, geçiş başına birkaç ince sayfa ile sınırlıdır ve her taslak size herhangi bir yayın yapmadan önce yan yana onay verilir. Önceki İçerik her zaman tekrarlanabilir.

Bunu kendi AI anahtarlarımla kullanabilir miyim?+

No. Auto-Implement is managed-AI only and is blocked under BYOK. It faturaları AI Jet normalde aynı Yönetilen-AI kredisinden bir düz ücret talep ediyor.

Büyüme ve bağlılık

Araştırma Stüdyosu

Araştırma Stüdyosu, zengin bir standalone sayfası, web sitesi öğesi veya inline gömülme olarak teslim edilebilir anketler oluşturmak için iş alanıdır. Mevcut ürün ayrıca ev sahipliği yapan bağlantıları sunar, önizlemeleri, özel davetler, QR paylaşımı, yanıt tarama ve anket-skop analizi sağlar; bu bir anket tanımı değildir.

⚠️
Current-versus- Target sınırı: Premium yaratım ve önbellek deneyimi,© Builder survey Kapasite ve Ankete sahip olan sağlayıcı kayıt / sağlık sınırı şu anda mevcut. Araştırma Stüdyosu hala bağımsız çoklu iş gücüne ihtiyaç duyuyor, imzalanmış anket Kimlik Gateway, hedefleme/değişimli kablolama, CRM Outreach akışı ve türdilen kanala ihtiyacı var. surveys.* API.

Bir anket oluşturun

1
İnsanların nasıl alacağını seçin

Mevcut büyücü Standalone sayfasını ve bağlantı, Web widget ve Inline gömüyor. Onaylanan hedef akışı anket türü ile başlar ve daha sonra CRM e-postasını, özel bağlantılarını ve QR dağıtımlarını birinci sınıf seçimler olarak ekler.

2
Amaçları seçin

NPS, CSAT, CES, ürün geri bildirimi, posta -purchase, iptal, onboarding, web sitesi, etkinlik, webinar, destek, liderlik / deneme, test, araştırma, çalışan, satın alma veya genel geri bildirimler.

3
Tamam bir şablon kullanın veya boş başlayın

Mevcut katalog, amaç tarafından düzenlenebilir bir başlangıççı grubunu oluşturmaya hazır. Bir şablon kopyalanmış bir taslak oluşturur: anketinizin başlatma veya başka bir araştırmayı değiştirmiyor.

4
Özelleştir veya Hızlı İnceleme

Özelleştirme her soruyu, tasarım, davranış ve teslimat kontrolünü açar. Hızlı inceleme son müşteri görüş kontrolünde aynı taslağı açar. Hiçbir şey yayınlar veya otomatik olarak gönderir.

Teslimat seçenekleri ve mevcut davranış

Standalone sayfası ve bağlantı

Kendi URL ile ilgili bir cevap veren sayfa. Her alıcının kontrollü bir bağlantıya ihtiyacı olduğunda özel davetler ve expiry kullanın. QR paylaşım noktaları bu ev sahipliği deneyimle.

Web Sitesi Widget

Gemili miras kanalı sayfayı, coğrafyayı, cihazı, ziyaretçiyi, tarihi, örnekleme, soğuklama ve kontenjan kuralları kullanabilir. Bu hala dağıtım mimarisi inşa edilmiş iken mirasın desteklendiği bir köprüdür.

Satır içi ekleme

Bir sayfaya, portala, ürüne veya yardım merkezine yerleştirilen bir cevaplı anket. Promosyon Studio gerektirmez.

Email

Bugün Stüdyo, HTML ve özel bağlantılar oluşturabilir. CRM kontakları / onaylar, onay, baskı, yeniden deneme ve yanıt korelasyonu ile son mesajı gönder, onaylanmış CRM Outreach entegrasyonu hedefidir.

Enterprise design and önizleme

Anket sayfalarının, ankete ait temaları ve sayfayı-layout aileleri, cevap veren kontroller, hoş geldiniz ve tamamlanma kopyaları vardır ve imzalanmış bir taslak önbelleği editörün altında tam genişleyen, dar bir yan demiryolu değil. Gerçek ev sahipliği yapan bir çerçevede kullanır ve masaüstü, tablet ve telefon genişliği destekler; önizleme trafiği yanıtlar veya analitik değildir.

💡
Araştırma Stüdyosu Promosyon Stüdyosu'ndan bağımsızdır. Runtime hedefleme, kimlik, varlıklar, uygulama ve analizler yalnızca açık bir tek zamanlı kopya / kesinti içeren belirli bir anket verileri ile yeniden kullanılabilir; daha sonra Promosyon düzenlemeler hiçbir etkisi olmamalıdır.

Tam form ürünü

Bağımsız dağıtımlar

Derece

Bir ankete ayrı versiyonlu sayfa, widget, embed, CRM e-posta, özel bağlantı ve QR gönderimleri dahil olabilir. Her biri kendi durumuna, tasarımına, kitlesine ve analizlerine sahiptir. Her bir anket durdurulabilir, etkisiz hale getirilebilir veya silinebilir.

CRM Outreach ve Kampanyalar

Derece

CRM segmentlerinden ve anketten başarısız bir bağlantıdan doğrulanmış bir seyirci inşa edin, onu bir hayal edilemez sürüme dondurur, her biri davet etti ve per-invitasyon teslim kanıtı ile pinnedilen e-posta konektörünü gönder.

Field kit ve geçerliation

Derece

Sliders, görüntü seçimi, dosya yükleme, imza, adres, telefon, başlık ve zengin metin, min/max uzunluk, e-URL / sayı başlangıçları, özel hata metni ve per-question öncesi URL parametreler.

Mantık, formüller, sonuçlar

Derece

AND/OR koşul grupları, şube kuralları, cevapları üzerinde güvenli bir formül motoru ve kendi sonuç sayfalarını taşıyan gruplar: kararlarında puanlanmış bir sınav toprakları.

Dil, kiosk, önceden dolum

Derece

Bir ziyaretçi dili yalnızca gerçek çevirilerle listelenir, paylaşılan tabletler için kiosk modu (bigger hedefleri, otomatik başlangıç, yönlendirmeler), önceden tamamlanmamış bir bağlantı oluşturucu ve güvenli-kötülük ve ayak metinleri düzenleyebilir.

Version A /B test

Derece

Bir trafik bölünmesi ile herhangi bir dağıtımda meydan okumak. Ziyaretçiler sadık olarak yanıtlar aslında sunulan sürümle damgalanır ve karşılaştırma masası cevap verir, tamamlanma ve versiyon başına puan anlamına gelir. Kazananı tek tıkla teşvik edin.

Haftalık sindirme

Derece

Son 7 günlerini anket KPIs, en yoğun anketler, geri bildirim pulu ve son AI kısası ile, pinned outbound konektörünü gönderdi. In Delivery Centre, Otomasyon.

Yönetişim Yönetimi

Derece

Per-survey erişim listeleri, bir anketi kimin düzenleyebilir, yayımlayabilir veya silebilir. Publish onayı (dört gözlü) tam taslağı serbest bırakmak için ikinci bir yönetici gerektirir; onayları sıfırlamak. Taslağı paylaşmak için bağlantı kurunu paylaşın.

Geliştirici platformu

Derece

© Contract 2.2, tiplenmiş anketler.* ve geri bildirimler.* eylemler api/v1, kanonik anket.* olaylar, Slack ve Google Sheets röle formatları ile kalıcı olarak imzalanmış webhookslar ve bir soru PDF ihracat.

Büyüme ve bağlılık

Araştırma Analytics ve Feedback farklı ürünlerdir

Araştırma Analytics, insanlarına nasıl bir anketin geldiğini ve performans gösterdiğini açıklıyor. Geri bildirim, müşterilerin tüm izin verilen kaynaklarda söylediklerini ve işin ne yapması gerektiğini açıklar. İki ürün birbirine bağlantı ama paylaşma veya yazma analitik gerçeği hakkında bilgi sahibi değildir.

Araştırma Analytics

Araştırma Stüdyosu'ndaki bireysel anketten girildi, küresel yan navigasyondan değil. Sorumluluk, maruz kalma, davranışa yönelik önlemler başlar, tamamlanır, terk edilir ve boş zaman geçirgenliği/dönüşüm sonuçları ve kesinti süresi güvenilirlikleri.

Geribildirim Genel & Geçen

Tamamlanan anket yanıtları için bir izin kaynağı kronolojik bes, miras widget geri bildirim, sohbet ve bilet CSAT, bilet cevap geri bildirimler, müşteri AI-answer puanları, bilgi tabanı faydalı oylar ve dış / tutarlı kaynaklar onayladı.

Geribilin Analytics

Analyzes müşteri anlamı: orijinal metrik eğilimler, konular / düşünceler, duygular, niyet, aciliyet, talepler, şikayetler, övgüler, seyahat/ürün/hömürücüler ve kapalı-loop sonuçları.

Data sahipliği

Araştırma cevapları, araştırma depolama alanında yazara uygun kalır. Geri bildirim kullanılabilir bir kaynak referansı ve elde edilen sinyalleri depolar, sonra yükler talep üzerine kanıt sağlar. Bir tamamlanmış anket yanıtı en fazla bir geri bildirim kaynağı haline gelir.

⚠️
Mevcut geri bildirim sayfası hala bir anket yanıt tarayıcısı ve ayrı bir mirasın kutusu vardır ve AI toplamları henüz tam normalleştirilmiş kaynak modelini kullanmamaktadır. birleşik Genel Bakış / Inbox / Analytics / Sources & sağlık tasarımı uygulama hedefidir.

NPS, CSAT, CES, yıldızlar, başlar ve yararlılık her zaman orijinal yöntemi, ölçek, örnek, tarih pencere ve denominatörlerini tutmalıdır.

Büyüme ve SEO

Promosyon Stüdyosu

Promosyon Stüdyo web sitenizi dönüşüm motoruna dönüştürür. Tasarım pop-upları, panjurlar, slayt perdeleri, üst / alt çubuklar, tam ekran sürmüşler, doğrusal bloklar ve hatta ülke bazlı yönlendirmeler, o zaman doğru anda sağ ziyaretçiye doğru mesajı gösterir. OpsIQ Sitenizde zaten widget, bu yüzden herhangi bir zaman kampanyalar tasarlayın ve kurtarın; sadece bir kez onları gösterir ve stüdyo sizin iş alanınız için geçiş yapılır.

Promosyon Stüdyosu
Promosyon Studio tasarımcıBir blok paleti olan görsel bir kampanya tasarımcısı, tuval üzerinde bir pop-up ve hedef paneli.Promosyon Stüdyosu - TasarımcıBLOKLARxHoşgeldiniz, {first_name}!15% off your first orderSAVE15kuponumu talep etHEDEFLEMEKÜlkeABD, CATetiklaÇıkış -intentA/B bölünmüş50 / 50Kast1Tasarım tasarımıGo tuvale taşlar2HEDEFÜlke, sayfa, seyirci3ÖLÇÜA/B kazanan + AI anlayış
Görsel tasarımcı: Soldaki bir blok paleti, tuval üzerinde kampanyanız (bunda bir kişiselleştirilmiş kupon pop-up bir {first_name} token) ve hedef + yayın paneli doğru.

Büyük resim

Kampanya Kampanyası

Ne?

Bir promosyon: pop-up, banner, bar, slide-in, full ekran, inline blok veya geo-redirect. Her birinin amacı vardır: satışlar, liderlik, işaret-up , sohbet, anket, duyuru.

Tasarım ve versiyonları

Nasıl

Görsel editörüne bakmak için bir görüntü oluşturabilirsiniz. Her kurtarma yeni bir versiyon yaratır, bu yüzden her zaman geri dönebilirsiniz. hiçbir şey kaybolmaz.

Hedefleme Hedefi

Kim?

Kim görür: ülke, sayfa, cihaz, trafik kaynağı, yeni ve programla geri döner ve (bir bağlantı ile) giriş müşterileriniz.

Tetikleyiciler

Ne zaman?

Görünüşe göre: anında, gecikmede, kaydırmada, çıkıştan çıktıktan sonra, N sayfalarından veya sohbet / bilet aktivitesinden sonra.

Analiz

Sonuçlar

Canlı izlenimler, tıklama yoluyla, dönüşümler, bir damla-off eğlence, ülke / sayfa / cihaz bölünmüştür, A/B kazananlar ve AI anlayışı.

5 adımlarında ilk promosyonunuzu başlatın

1
Bir şablondan veya boş bir şekilde başlayın

Open Promosyon Stüdyosu ve Yeni kampanyaya tıklayın veya Şablonlar galerisinden hazır bir tasarım seçin. Tasarımcıda bir taslak açılır.

2
Tasarım onu tasarlayın

Bloklarda Drag, başlıklar, metin, düğmeler, görüntüler, badges, stats, countdowns, formlar, kuponlar, videolar, derecelendirmeler, spin-wheels. Style renkler, gradients ve 3D etkiler kaydırıcılarla. Preview Desktop / Tablet / Mobile her yerde bir yere ücretsiz hareket kullanın.

3
Şahsen

Tip jetonlar gibi {first_name}, {country} veya {company} Herhangi bir metinde. show-time onlar ziyaretçinin gerçek değerleri haline geldiler.

4
Hedef & tetikleyici

Kim onu (ya da, sayfa, cihaz, seyirci) ve yangınları (ölüm, kaydırma, çıkış-tanış) gören birini seçin. herkes anlamına gelen bir kural boş bırakın.

5
Check, sonra yayınla

Hızlı bir başlangıç tarama için tıklayın, sonra Publish. saniye içinde yaşar ve analitik toplamaya başlar.

Yapın Bloklar inşa edebilirsiniz

İçerik

Çekirdek

Başlama, paragraf, liste, alıntı, görüntü, ikon, badge, stat, bölmek ve uzaycı, herhangi bir mesajın bina blokları.

Eyleme Çağrı

Çekirdek

Gerçek eylemlerle düğmeler: bir bağlantı açın, bir sohbete başlayın, bir bilet oluşturun, kupon kopyalayın veya bir sayfaya atlamak.

Urgency & yakalama

Premium

Kontdown timers, formlar (email / telefon / metin), kupon ortaya çıkıyor ve video gömüyor.

& Geri bildirim

Premium

Spin-to-win tekerlekleri, çiz kartlar, NPS / yıldız derecelendirmeleri ve çok adımlı eğlenceler.

Layout & etkiler

Premium

Köşeler, ilerleme barları, sosyal paylaşım, sosyal kanıt işaretçileri, evet/iki adım, test ve 3D etkiler, eğim, ışıltı, parallax, cammorphism.

Kişiselleştirme jetonları

Bunların herhangi biri, paragraflar, düğmeler, kötüges, stats, listeler veya alıntılar. Ziyaretçinin canlı ayrıntılarıyla değiştirilir promosyon şovları (güvenlik için düzenli olarak temizlenir):

Mevcut jetonları mevcut
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)

Hedef referans

Ülke & konum

Sadece (veya) seçilmiş ülkelerde, şehirler veya zaman bölgeleri GeoIP ile gösterin. Bölgeye özgü teklifler veya geo-reyönerli bir yol için harika.

Sayfalar ve URLs

Eşitleri kullanarak bazı sayfalara limit / birlikte / içerir / regex ve dış sayfaları da.

Cihaz

Masaüstü, tablet veya mobil, e. g. a fine bar on mobile, bir modal masaüstü.

Ziyaretçi türü

Yeni, geri dönüşü, bilinen ( CRM’iniz) veya anonim; CRM segmentleri, yaşam döngüsü aşaması, puan veya tarayıcı dili.

Trafik kaynağı

UTM (utm_source, utm /campaign) veya atıfta bulunan site tarafından e. g. sadece belirli bir reklamdan gelen ziyaretçiler.

Takvim ve Frekans

Başlangıç / son tarihler, zaman günlük pencereler ve bir kişinin bunu ne kadar sık görebilir (günde, kapanırken / çevirileri)

A/B trafik bölünmüş

Ziyaretçilerin yüzdesine gösterin ve diziler başı-to-head; aynı kişi her zaman aynı değişkeni görür.

İzleyiciler (ya darpılmış)

Bir bağlantı etkinleştirildi, canlı hesap durumu tarafından hedef, e. g. müşterileri faturaları veya aktif aboneleri ile.

Tetikleyiciler

Promosyon nasıl görünür: Hemen, bir gecikmeden sonra, kaydırma derinliğinde, çıkıştan çıktıktan sonra, bir elementin tıklaması üzerine, birkaç sayfa görüntülendikten sonra, form-abandon veya sohbet / bilet aktivitesinden birinde kendi kodundan ateş edebilir. window.OpsIQPromo.fire('event').

Hedef giriş-in müşterileri (bağlantılar)

Bu ne yapar OpsIQ Özel promosyonlar: Bir platforma bağlanmak WHMCS (veya izleyicileri destekleyen herhangi bir bağlantı) ve stüdyo, canlı hesap devletleri tarafından ziyaretçileri hedefleyebilir.

1
Enable an seyirci konektörü

Bağırsaklar, seyirci gerçekleri açığa çıkaran biri etkinleştirin (WHMCS kutudan çıkar). Müşteriler bu platforma giriş yaparken güvenli bir şekilde tanınırlar, OpsIQ asla e-postaya güvenmezler.

2
Bir seyirci kuralı ekle

Kampanyanın Hedefi > İzleyici, giriş-in gerektirir ve faturalar gibi kurallar ekleyin >= 1, abonelik geçmiş-due veya hesap kredi > 0.

3
Verileriyle Kişiselleştirin

Jetonları böyle kullanın {first_name} veya {balance_due}. A "You have an overdue in bill" hatırlatma kendini yazıyor.

İzleyici hedeflemesi başarısız oluyor: Eğer bağlantı bir gerçek doğruyu teyit edemezse (veya ziyaretçi giriş yapmaz), promosyon sadece gösteri yapmaz, bu yüzden bir faturalama-koru teklifi asla yanlış kişiye ulaşmıyor. kendi konektörünüzü inşa edin.

Bağlantılı ticaret ( stüdyo süper güç)

Mağazanızdan Ürün Kartları

Canlı veri

Bir Ürün bloğu gerçek eşyaları (isim, fiyat, satış fiyatı, görüntü, bağlantı) doğrudan doğru bir şekilde çeker WHMCS, WooCommerce, Shopify Ya da senin OpsIQ Fatura: "Yeni tutun" ve kart her saat yayınlanan platformdan fiyatlarını güncelliyor.

Mağaza-provisioned kuponlar

Kuponlar

Bir kupon bloğu, yayımladığınız anda gerçek indirim kodu oluşturabilir, bu yüzden bir ziyaretçi her zaman checkout'ta çalışır.

Order- Truth gelir

Ait

Platformlarınızdan gelen gerçek siparişler, kampanyalara geri döndü (önderin e-postası tarafından kullanılan kupon kodu) böylece gördüğünüz gelir gerçek satışlardan değil.

Gerçek sosyal kanıt

Güven

Sosyal koruyucu ticker gerçek son emirleri ile yollayabilir ("Ada, Başlangıç Planı · 2h önce”) ilk adı ve öğe sadece e-posta veya miktarlar değil.

Deneyler & yolculuklar

A /B varyantları ve otomatik-winner

Tasarım varyantları arasında bölünmüş trafik; stüdyo, istatistiksel kazananı otomatik olarak teşvik etmesine veya ziyaretçilerin kanıt olarak ne tür dönüşlere geçişlerini sağlayan bandit optimize edilmesine izin verin.

Durma kaldırma

Hiçbir şey görmeyenler bir dilimden tasarruf edin, böylece kampanyanın kendisini asansöre neden olduğunu kanıtlayabilirsiniz.

Segment varyantları

SAME kampanyasında seyirci başına farklı içerik (mobil ziyaretçiler, büyük kartlar, geri dönen müşteriler), her segment kendi versiyonunu alır.

Tesir deneyleri

Variants WHEN'yi de test edebilir: Çıkışdan çıkıştan önce, ölçülmüş kafa-yaş.

Yolculuklar (zincir)

Birinin başka kampanyayla yaptığı hedef ("A kampanyası A ama dönüştürmedi) çok adımlı promosyon dizilerini inşa etmek için.

Teasers

Küçük bir hap ziyaretçileri kampanyayı kapatdıktan sonra yeniden açılabilir, bu yüzden kapalı bir pop-up asla iyi gitmez.

Ne olduğunu bilin

Click Heatmap

Tasarımcı

Tasarımcıda, tasarımınızın her blok üzerinde gerçek ziyaretçi tıklamalarını boyamak için ısımap'u göz önünde bulundurmak.

Adım funnel

Funnels

Çok adımlı kampanyalar, insanların nereye düştüğünü tam olarak gösteriyor, ekran tarafından.

Karşılaştırma kampanyaları

Stüdyo

Yan taraf dört kampanyaya kadar koyun (presyonlar, tıklamalar, dönüşümler), en iyi değer vurgulandı.

Haftalık hikaye ve sindirme

- Evet.

Her Pazartesi bir özet bildirimlerinize düşer; 📖 Haftalık hikaye düğmesi, istediğiniz zaman bir sonraki adımlarla açık dilde bir özetini yazar.

Rahatça çalışma rahatça çalışma

AI copilot & fikirler

tuvali düzenlemek için tasarım copilot ile sohbet (“başarılı bir şekilde, sayım eklemek”) kendi trafik verilerinizden kampanya fikirlerini almak, ülke başına bir kampanya çevirmek veya düşük bir tasarım puanı otomatikleştirmek.

Marka Kit'i ithal et

Bir komut web sitenizi okur ve gerçek marka renklerinizi ve fontlarınızı öneriyor; tasarruf edin ve her seçici onlara yol açıyor.

Çok ekranlı eğlence

Adımlar ekranda gerçek ayarlanır: Her ekran için sekmeler, ek veya iade ekranları ekleyin ve önizleme devam eder.

Add versiyonları ve varlık

Önemli versiyonlar ("Launch adayı") herhangi birini geri yükleyin ve bir takım arkadaşı aynı kampanyayı düzenlemediğinde uyarıyı görün.

Device striptiz & yöneticiler

Bir görüşte yan yana masaüstü, tablet ve mobil tarafını görün; hassas yerleştirme için piksel yöneticileri.

Hosted page & kanalları

Her kampanya ayrıca biyos ve QR kodları için barındırılan bir sayfa olabilir, yakalama için bir e-posta solü dizisi veya tek tıkla web-push taslağı.

Enterprise security

Ayaklanma camları (değişimsiz dönemler), acil bir duraklama, onaylar, denetim izi ve sürüm geri dönüşleri.

Siteme kodu eklemek zorunda mıyım?+

Hayır. Promosyonlar, zaten yüklenen aynı OpsIQ widget tarafından teslim edilmektedir. Tasarım, yayımlama, yapılır.

Ziyaretçiler aynı pop-up'u ve üzerinde görecek mi?+

No. Frekans kapakları (günde / veya birileri yakınlarından sonra durun, tıklamalar veya dönüştürmeler). Sensible defaults uygulanır.

Kim yayınlayabilir?+

Yayınlama, şaka yapmak ve geri yuvarlamak iş alanı sahipleri ve tam yöneticilerle sınırlıdır. Herhangi bir takım üyesi oluşturmak ve tasarım taslağını tasarlayabilir.

Büyüme ve SEO

Promosyon Tasarımcı

Promosyon Tasarımcı, bir kampanya deneyimi oluşturmak için yanıt verici bir blok editörüdür.

Ürün ekran ekranı
Promosyon TasarımcıTasarımcı canlı bir tuvali birleştirir, cihaz önbellekleri, bloklar, kişiselleştirme değişkenleri, yorum ve sürüm tarihi.Promosyon TasarımcıİşspaceVIEWPORTMasaüstüSIONv12STATETaslak Tasla TaslağıLIVE ÇALIŞMASPACEKahraman blokManşet, medya ve CTADüzenleTedarik blokuİndirim ve son tarihDüzenleKişiselleştirmeİletişim ve kampanya değişkenleriHazır.Başlangıç checkYorumlar ve geçerlilikİnceleme1BUILD BLOCKSEdit canlı düzen2ÖNCEKİMasaüstü, tablet, mobil3PUBLISHVersiyonel yayın
Tasarımcı canlı bir tuvali birleştirir, cihaz önbellekleri, bloklar, kişiselleştirme değişkenleri, yorum ve sürüm tarihi.

Deneyim oluşturmak için bloklar kullanın, her desteklenen görüş paylaşımını ve onaylanan kişiselleştirme değişkenlerini ekleyin. Relament comments and AI-media kanıtance beforestart. save forms so a previous design can be testinged or restore.

Büyüme ve SEO

Promosyon şablonları

Şablonlar, Promosyon Stüdyo kampanyaları için bir aramalanabilir, kategorize edilmiş başlangıç galeri sağlar.

Ürün ekran ekranı
Promosyon şablonlarıŞablon galerileri premium yapılar oluşturur ve bir şablon taslağı hazırlanırken iş alanı marka renkleri uygular.Promosyon şablonlarıİşspaceCATEGORYRYDönüşümRESULTS24MARKA İLİŞİ DENİZMİN BÜYÜŞÜNİVERSİTESİUygulandıLIVE ÇALIŞMASPACEÇıkış teklifiAciliyet ve CTA ile ModalÖfkeYeni ziyaretçi hoş geldinizBanner ve fayda listesiÖfkeÜrün lansmanıKahraman, kanıt ve sayımÖfkeGeri bildirim isteğiCompact anketi hızlı bir şekildeÖfke1FILTERKategori ve arama2ÖNCEKİTüm tasarıma dair3USEBir markalı taslak oluşturun
Şablon galerileri premium yapılar oluşturur ve bir şablon taslağı hazırlanırken iş alanı marka renkleri uygular.

Kategoriye göre arama veya filtre, ek sonuçlar yükleyin, tam deneyimi gözden geçirin, sonra seçin Use şablonYeni kampanya bir taslak olarak kalır ve yayından önce Promosyon Tasarımcısı'nda değiştirilebilir.

Büyüme ve SEO

Promosyon analitik

Promosyon analizi, izlenimleri ve tıklamaları dönüşümlere, seyirci bağlamına, bağlantı aksiyon sonuçları ve kampanya öğrenmelerine bağlar.

Ürün ekran ekranı
Promosyon analitikPromosyon analizi, manşet performansını, seyircileri ve arızaları gösterir, ihracata yol açar ve bağlantı eylemi sonuçları sağlar.Promosyon analitikİşspaceIMPRESSIONS42.8kCTR6.4%CONVERSIONS814LIVE ÇALIŞMASPACEÜlkeBirleşik Krallık · 31%Bozuldu.Page Sayfa/pricing · 22%Bozuldu.TetiklaÇıkış niyeti · 44%Bozuldu.Links actionKupon · 97% başarıSonuç1ÖLÇÜDönüşümleri dönüşüme dönüştürmek için2SLICESayfa, ülke, aygıt3LEARNBilgiyi uygulayın
Promosyon analizi, manşet performansını, seyircileri ve arızaları gösterir, ihracata yol açar ve bağlantı eylemi sonuçları sağlar.

izlenimleri okuyun, tıklama oranı ve dönüşümler bir arada. Ülke tarafından yapılan molalar, SEO ve cihaz; gerekli olduğunda ihracat yakalama noktaları, promosyonun vaat edilen takiplerin aslında koştuğunu gösteriyor. AI ve learning summaries should be been treated as hipothes to validate, not auto kanıt.

Büyüme ve SEO

Duyurular

Duyurular, opsiyonel hedefleme, program ve eylem çağrısı ile bir mesaj yayınlar.

Ürün ekran ekranı
DuyurularDuyuru editörü içerik, CTA, seyirci, segment, sayfa kuralı, aktif tarihler ve görsel stili içerir.DuyurularİşspaceAKTIF3AUDIENCEBölümBULEJul 22-29LIVE ÇALIŞMASPACEBaşlık:Planlanmış bakımHazır.İçerikMarkdown mesajıHazır.CTAGüncellemeyi okuyunİhtiyaç DuyulacakKural KuralıFiyatlar sayfalar · aktif müşterilerHedef1WRITEBaşlık ve Markdown2HEDEFİzleyici, segment, sayfa3BULEAktif pencere
Duyuru editörü içerik, CTA, seyirci, segment, sayfa kuralı, aktif tarihler ve görsel stili içerir.

Tüm ziyaretçileri seçin, imzalanmış ziyaretçiler veya yeni ziyaretçiler; seçici olarak seyirciyi bir iletişim segmenti ve sayfa kuralı ile daraltın. / aktif-en-to tarihlerden ve aktif bir bayrak. Premium tarzı başlangıçlar ve renkler değişimi sunumu ancak net içerik değiştirmeyin.

Büyüme ve SEO

Push kampanyaları

Push kampanyaları, siteyi terk ettikten sonra abone ziyaretçileri tarayıcı bildirimleri gönderir.

Ürün ekran ekranı
Push kampanyalarıPush besteci abonelike ulaşmayı, içerik, medya, eylemler, hedef kurallar ve program durumunu gösterir.Push kampanyalarıİşspaceSUBSCRIBERS8,214GÖNDER31.6kCLICK RATE5.8%LIVE ÇALIŞMASPACEBaşlık:Aracınız bekliyorHazır.Vücut BedeniBugün ücretsiz teslimat için geri dönHazır.CTAAçık arabaHazır.TakvimŞimdi gönder veya planlandıTaslak Tasla Taslağı1PREPARE PUSHBaşlık, vücut, ikon2HEDEFİzleyici, segment, sayfa3SENDŞimdi, program veya taslak
Push besteci abonelike ulaşmayı, içerik, medya, eylemler, hedef kurallar ve program durumunu gösterir.

Web Push anahtarları ilk olarak Web Push ayarları altında yapılandırın. Bir kampanya başlığı, vücut, ikon, kahraman imajı, kötüge, CTA ve iki aksiyon düğmelerine kadar; ziyaretçi etkileşimine kadar kalıcı bir bildirim kalır.

İzleyici tarafından hedef, opsiyonel iletişim segmenti ve sayfa kuralı. Bir taslaktan tasarruf edin veya hemen gönder. Aboneliği kullanın ve ulaşılacak metrikleri tıklayın. HTTPS ve barındırılan hizmet çalışanı üçüncü taraf sitelerinde gereklidir; Web Push'u üçüncü parti sitelerinde görün.

Büyüme ve SEO

Proaktif mesajlar

Proaktif Mesajlar otomatik olarak bir ziyaretçinin davranışları bir kuralla karşılaşır, sormadan önce her şeyi üç parça ile bir kural olarak inşa edersiniz: ne olması gerekir, ne zaman ateş etmeli ve ne sıklıkta teslim edilmelidir. Her şey zaten sitenizde OpsIQ widget aracılığıyla teslim edilir.

Proaktif
Proaktif mesajlarÜç bölümde proaktif bir besteci: Bir eylem seçin (çak, pano, gezi, itme, e-posta), koşulları ekleyin ve frekansı serinle.Proaktif Mesajlarİşspace1 · EtkinlikSohbet mesajıBayrakTurPush itEmail2 · Koşullarpage = /pricingSayfada zaman > 20sgeri dönüş geri dönüş geri dönüş3 · FrekansOturuma bir kezDurum durumu1AÇIKLAMAChat, banner, e-posta, it...2CONDITIONSSayfa, zaman, puan, geri dön3FREKANSCooldown per Visitor
Her proaktif kural üç seçenek: ne olur (chat, banner, tur, itmek, e-posta, webhook), ne zaman (kısalar) ve ne sıklıkta (soğuk).

Bir kuralın üç parçası

1
Ne olması gerekir (action)

Show a chat bubble or on-page banner, start a Guided Tour, send a web push or email, assign to a department, or fire a webhook. Tokens like {{visitor_name}} and {{page_title}} become real values.

2
Ateşe (kahkahalar) ne zaman ateş etmeli?

Bunu tetikleyen Narrow: Sayfa /URL, sayfadaki zaman, kaydırma derinliği, puan geri dönme, yeni, boşluğa dönüş. Hiçbir koşul olmadan, her ziyaretçi için kural yangınları ekleyin.

3
Ne sıklıkla (frekans)

Bir serinleyi ayarla, böylece aynı kişi zararlı değildir, seans başına bir kez veya günde bir kez. Her kuralın on /off statüsü vardır.

⚠️
İş alanı "Run time/idle rules hourly", sunucunun eylemlerine (email, itmek, webhook, atama) şu anda sayfada olmayan kişiler için bir programda ateş sağlar, bu yüzden otomatik olarak “posta idle sıcak yol açabilirsiniz. OpsIQ cron çalışır. Sadece sayfada yaşamak istiyorsanız bırakın nudges.
Herkes için ateş edecek mi?+

Sadece hiçbir koşul eklemezseniz. En az bir koşulu ekleyin (sayfa, liderlik puanı, geri dönün...) doğru ziyaretçileri hedef almak için.

Bu akışlar ve turlarla nasıl ilişki kurar?+

Birlikte çalışıyorlar: proaktif bir kural, bir Rehberlik Turu başlatabilir ve Chatbot Akışı proaktif bir yönetim tarafından tetiklenebilir. Tek bir sohbet-mesaj kuralıyla başlayın, sonra diğerleri üzerinde tabakalayın.

Büyüme ve SEO

Chatbot akışları

Chatbot Flows senaryosu sohbet widget'ınız içinde konuşmaları (çaplamalar, anahtar kelimeler, yollara yönlendirilme) kodla bir akış bağlantı noktası (nodes): Bir soru sor, ziyaretçi bir seçenek seçer ve akır. sadece aktif akışlar sitenize koşar.

Nasıl çalışır
Chatbot akışlarıBir akış tuvali: Üç seçenek düğmelerine hayır, bir sonraki adıma giden her biri siparişe veya bir insana el ele.Merhaba.Merhaba! Nasıl yardımcı olabilirim?Benim emrimi takip etBilling soruBir insanla konuşunBak,→ İnsan ajanıTesirler: Greeting · Keyword · Manual · After-details · On-chat-end
Chatbot akışları

Akış vs AI · hangileri kullanacağında

Bir akış kullanın

Yol öngörülebilir olduğunda ve her seferinde aynı şeyi istiyorsunuz: rezervasyon adımları, bir geri dönüş büyücüsü, "bu plan?" seçimci, eloff'tan önce bir e-posta toplamak. Flows never improvise.

AI'yı kullanın

Sorular açıklandığında, “Bu işi benim kurulumumla mı yapıyor?”. Müşteri Sohbet AI eğitimli bilgilerinizden cevap verir. Bir akış herhangi bir adımda AI'ya (veya bir insan) el basabilir.

Tetikleyiciler

Merhaba.

Bir ziyaretçi ilk kez sohbet açtığında açılış mesajı olarak hareket eder.

Anahtar Kelime

Ziyaretçi listelediğiniz bir kelime türü olduğunda Runs (e. g. geri ödeme, fiyatlandırma, iptal).

Detaylardan sonra / gecikmeden sonra

Bir kez temas detayları paylaşılır veya konuşmaya bir set zaman.

chat end / Proaktif

Sohbetin yukarı (örneğin bir derecelendirme) kadar Runs veya Proaktif Mesaj kuralı tarafından başlatılır.

Dört adımda bir tane oluşturun

1
Akışı oluşturun

Yeni Akışa tıklayın, adı, bir tetikleyici türü seçin (ve anahtar kelime varsa anahtar kelimeler), tasarruf eder.

2
tuvali açın

Click Edit. Canvas adımları (mesajlar, düğmelerle sorular, şubeler) eklediğiniz görsel inşaatçı ve onları birbirine bağlar.

3
şubeleri ve bir el-off ekleyin

Her seçim için, bir sonraki adıma bir şube çizin. AI'ya el basarak veya insanla transfer edin.

4
Etkinleştir

Enable. Akış hemen widget'ınızda yaşıyor. Tasarım kaybetmeden herhangi bir zaman ayıramaz.

AI'yı değiştirir mi?+

Hayır. Onlar yan yana koşuyorlar. öngörülebilir yollar ve AI açık uçlu sorular için; bir akış her zaman yaya da el basabilir.

Büyüme ve SEO

Rehber turlar

Rehberli Turlar, sayfanızın bölümünüzün odalarında konuşma balonları ve bir bakışla birlikte bir ziyaretçiye veya yeni bir özellikten tamamen yönlendirilir ve görsel bir tasarımcıda canlı bir önizleme ile inşa edilirler. Bir tur sadece işaretlendiği zaman çalışır.

Nasıl çalışır
Rehber turlarA dimmed page with a spotlight ring around an Add-deal button and a themed speech bubble reading Step 1 of 4 with a Next button.+ Add DealSTEP ADIM 1 Ey imlanın 4İlk anlaşmanızı oluşturunBoru hattınıza bir anlaşma eklemek için buraya tıklayın.Sonraki →
Rehber turlar

Bir tur nasıl inşa edilir

Adım

Her adım bir elemente işaret eder ve metininizle balon gösterir. Yürüyüş ihtiyaçlarınız olarak birçok duraklayın ve onları sipariş edin.

Presets & tema

Bir başlangıçtan başlayın veya kendi balonunuzu tasarlayın (renkler, gradients, spot) sağdaki canlı bir önizleme ile.

Tetikla

Seçmeli olarak bir Proaktif Kuralı bağlayın, bu kural yangınları (örneğin geri dönüş ziyaretçisinin ilk pano ziyareti).

Aktif toggle

Bir tur sadece Active işaret ederken çalıştırmak için uygundur. Bunu bozmadan aşağı çekmek için Untick.

Dört adımda bir tane oluşturun

1
Yeni tur

Yeni Rehberli Tur'a tıklayın, adı ve isteğe bağlı olarak bir Proaktif Kuralı otomatik olarak başlatır.

2
Adımlar ekle

Her bir durak ekleyin: Bu elementi puanlar ve balon metni yaz. Yol akışlarına kadar sipariş edin.

3
Tasarım onu tasarlayın

Bir başlangıç veya balonu kendiniz yazın. Canlı önizleme ziyaretçilerin tam olarak ne gördüğünü gösteriyor.

4
Etkinleştir

Aktif ve kurtar. Tur şimdi kendi tetikleyicisinde, veya Proaktif bir Mesaj kuralı tarafından başlatılabilir.

Turlar nasıl başlar?+

Kendi tetikleyicileri veya Proaktif Mesaj kuralı aracılığıyla “Kutsal Tur” eylemi, böylece hangi ziyaretçilerin hangi tur ve ne zaman gördüğünü karar veriyorsunuz.

Büyüme ve SEO

Dönüşüm hedefleri

Dönüşüm Hedefleri, (yaradan webhook olayı, bir sohbet mesajı, bir bilet kararı) tam atama ile kaydedilen dönüşüme dönüşür. Faaliyet yangınları olduğunda, OpsIQ, oraya geri gelen kampanyalara karşı bir dönüştürme kaydeder, segmentler ve kaynaklarla bağlar.

Nasıl çalışır
Dönüşüm hedefleriBir hedef akışı: bir ödeme. succeed webhook olayı, kaydedilmiş "purchase" dönüşüm değeri $49, kaynağına ve kampanyaya atfedilen, yukarıdaki hızlı başlangıç öncesi çiplerle.Hızlı başlangıçStripe satın alDemo rezervasyonHukuk Postasıpayment.succeededInbound webhookDönüşüm"satış" · $49Aitkaynağı · kampanya
Dönüşüm hedefleri

Üç adımda bir hedef Tanımlayın

1
tetikleyici aktiviteyi seçin

Yeni dönüşüm hedefi tıklayın. Bir dönüştürme olarak sayan aktivite türünü seçin veya Hızlı başlangıç başlangıcı, Stripe satın alma, Demo rezervasyon, Newsletter işareti veya Abonelik başladı.

2
Adı it and set a value

Bir isim (kıt, demo_booked, signup) ve opsiyonel olarak sabit bir değer ve bir alıntı penceresi verin.

3
Kaydet

Daha sonra tasarruf ve etkinleştirin, ne zaman aktivite yangınları, OpsIQ önceki dokunuşlara atıfta bulunan temasa bir dönüşüm kaydeder.

Hedefler zaten inbound webhookslara bağlı: sınırsız bir olayın tipi yangınlarını otomatik olarak olay topraklarına yönlendirmek için Inbound Webhooks sayfasını kullanın. Stripe, Calendly veya herhangi bir sistemi POST JSON.
Bir dönüşüm ne olabilir?+

Herhangi bir kayıt etkinliği: sınırsız bir webhook olayı (önemli) bir sohbet e-posta yakalama, bir bilet kararı, iletişim süresinde herhangi bir şey.

Analiz

Özel panolar

Özel Dashboards, sadece standart Genel Bakışa güvenmek yerine metriklerin kendi görüşünü inşa etmenize izin verir. İstediğiniz widget'ları ekleyin ve istediğiniz yere yeniden yükleyin, onu kurtarın ve takımınızla paylaşın.

Özel panolar
Özel panolarKPI ve grafik widget parçaları ile bir pano üreticisi, bir deshed damla bölgesi ve Add-widget düğmesi.Özel DashboardsİşspaceMy pan+ Ekle widgetVISITERS2,481GELİR$8.2kkTRAFİKBir widget burayaTOP SAYFASLAR/pricing/docs/signup1ADD WIDGETSmetrics & grafikler2ARRANGEÇevir ve yeniden boyutlandır3ŞAMEkibinle
Kendi kurulunuzu oluşturun: KPI, grafik ve liste widgets ekleyin ve istediğiniz yere yeniden boyutlayın, sonra takımıyla paylaşın.

Üç adımda birini oluşturun

1
Ekle widgets

Widget'ı ekleyin ve takip etmek istediğiniz metrik veya grafik seçin. Gemide istediğiniz her şey için tekrarlayın.

2
düzeni ayarlayın

Drag widgets kenarlarını yeniden boyutlandırmak ve sürüklemek için. Üstteki KPI'lar, aşağıdaki grafikler.

3
Kaydet & Share

Panoyu kurtar ve takımınızla paylaşın, böylece herkes aynı sayıları izliyor.

Ayrı işler için ayrı tahtalar tutun (günlük bir bakış) canlı sayılarla ve trend grafiklerle "aylı bir inceleme" panoları.
Büyüme ve SEO

Outreach kampanyaları

Outreach is outreach is OpsIQ‘s1:1ve toplu e-posta motoru: Bir CRM segmentine kişiselleştirilmiş bir mesaj oluşturun veya kampanya çalıştırın, cevap tespiti ile, gönderi zamanlı kontrol, açık / tıkla takip takibi, bir izleme pikseli ve tek tıklama girişi açmaz.Bu onaylanır ve CAN-SPAM / CASL uyumludur.

Ulaşım
Outreach kampanyalarıKomplike /Campaigns/Templates /Replies sekmeleri ve gönderilen bir kampanya masası ile erişim ekranı.UlaşımİşspaceKampanyalarKomiserŞablonlarCevaplarKÜMANIGNGÖNDERDUYURULARCevap verHaziran ay1,20048%7%Deneme takip-up34062%14%Geri kazanmak82039%5%Cevap: Otomatik duraklamalar takip edilir · her gönderide bir tıklma11:1 & BULKKomp veya kampanya2TRACKEDAçıklar, tıklamalar, yanıtlar3COMPLIANTUnsubscribe inşa in
Outreach motoru: 1:1 veya bir segmente kampanyalar gönder, açılır ve cevaplar açın ve yerleşik girişsiz ve cevap algılama ile uyumlu kalın.

Dört sekme

Komiser

Bir kişiselleştirilmiş yaz1:1e-posta ile e-mail with email with email {tokens} İletişim ve CRM'den.

Kampanyalar

Bir CRM segmentine gönderin, planlanmış veya şimdi kapaklarla ve zaman kontrolü ile.

Şablonlar

Tekrarlanan erişim için yeniden kullanılabilir mesaj şablonları.

Cevaplar

Yanıt tespit kayıtları yanıtları ve otomatik duraklar cevap veren herkese takip eder.

Bir kampanya nasıl çalışır

1
Bir seyirci seçin

Bir CRM segmenti seçin (veya bir liste yükleme). Suppression ve onay otomatik olarak uygulanır.

2
Komee

Kişiselleştirme jetleri ile mesajı yazın; gerçek bir temasa karşı çıkın.

3
Takvim ve gönder

Şimdi veya en iyi zamanda bir takip piksel kayıtları açılır; tıklamalar ve cevaplar atılır.

Outreach onay ve baskılı, her gönderide bir tıkla girişini içerir ve CAN-SPAM / CASL'yi takip eder. Replies otomatik olarak daha fazla takip etmeyi bırakır.
Analiz

Scheduled raporlar

Kayıt Edilen Raporlar e-posta, bir programda (günde, haftalık veya aylık) alıcıları seçmek için seçilmiş bir metrik set olarak yazdırılabilir, beyaz-label PDF Bunu bir kez ayarlayın ve inboxes'teki rapor otomatik olarak aracılığıyla OpsIQ cron.

Scheduled raporlar
Scheduled raporlarPlanlanan yayın ekranı: onların programı, alıcılar ve son dönemleri ile bir rapor masası, artı Bir Save-report düğmesine.Kayıtlar RaporlarİşspaceScheduled raporlar+ Kaydet raporuRaporBULEALICILARSONUÇHaftalık trafikMon 9:00[email protected]2 gün önceSEO müşteri raporuAylık[email protected]Haziran 1Satış özetiGünlük[email protected]todayBeyaz etiketli olarak teslim edildi PDF aracılığıyla OpsIQ cron1AUTOMATEDGünlük · haftalık · aylık2WHITE-LABELPDF istemcilere3ALICILARProgramda e-postal
Bir rapor bir kez (metrik set, aralık, program, alıcılar) ve OpsIQ Beyaz etiketli bir e-posta PDF otomatik olarak kasinda.

Bir rapor oluşturun

1
Ne göndermeyi seçin

metrik set (traffic, SEO, satış, destek...) ve bir tarih aralığı seçin.

2
Set schedule & alıcılar

Günlük, haftalık veya aylık olarak, seçtiğiniz bir zamanda, bir veya daha e-posta alıcılarına.

3
Kaydet

Kaydet ve etkinleştirin. Rapor programda kendini üretir, manuel bir adım yok.

💡
Zamanlı raporlar OpsIQ cron üzerinden çalışır, eğer bir rapor gelmezse, cron'in çalıştırıldığını onaylayın (bakır ve otomasyon).
Gizlilik

Gizlilik & uyumluluk

Gizlilik ve uygunluk sayfası kişisel verileri sorumlu bir şekilde idare ettiğiniz bir denetçi göstermek için tek yerdir: onay yönlendirildi, yönetici erişim logu, veriniz Oturma ve saklama politikası ve hazır bir baskı DPA, tek bir sekmede. Sadece tam yöneticiler bunu açabilir.

Gizlilik & uyumluluk
Gizlilik & uyumlulukGizlilik ve Uyum ekranı: Consent leadger için sekmeler, Access log, Residency and DPA, bir onay ile hibelerin ve geri dönüşleri kanal tarafından iptal edilir.Gizlilik & UyumİşspaceConsentAccess log günlük erişimKonuşmaDPAİLETİŞİMKANALAÇIKLAMATARİH[email protected]e-postaKabul edildi.Haziran 12[email protected]pushİptal edildiHaziran 10[email protected]marketingKabul edildi.Haziran 9Her onay hibesinin ve geri dönüşlerin, kanal tarafından1CONSENT LEDGERHer hibenin kanıtı2ACCESS LOGKime dokundu verilere3DPAYazdırılabilir şablon
Bir denetçi hazır ekran: bir aramalanabilir onay fas (kullanıcı/revokes kanala), verilere dokunan erişim girişleri ve basılı / kesinti ayarları ve yazdırılabilir bir DPA.

Dört sekme

Consent

Her onay hibesinin ve geri dönüşlerin bir arama, iletişim yoluyla, kanal (email, it, SMS, in-widget), eylem, kaynak ve tarih. Bir temasınız kabul edildi (veya çekildi).

Access log günlük erişim

Ekibinizde kim gördü, düzenlenmiş, ihraç edilmiş veya mesajlanmış bir iletişimin verileri, yönetici ile temasa geçti, eylem, gerekçe ve IP. tam olarak ne için bir düzenleyici sorardı.

Residency & Keep

Bu çalışma alanının veri yaşamlarının nerede olduğunu, kaç gün aktivite sıralarının nasıl saklandığını (0 = sonsuza kadar) ve veri kontrolörü ve DPO'yu kaydetmek.

DPA şablon

Kontrolünüzde dolduran bir baskılı veri işleme Addendum, adresi, DPO, ikamet ve tutma. Yazdır veya PDF olarak tasarruf edin.

Gizlilik ve uygunluk çiftleri Çerez onay stüdyosu (bu da onay alır) ve İhracat sayfası (bu, bir DSAR için veri kopyasını üretir). Ayrıca Cron ve otomasyon geceleyin temiz tutmak için.
Bağlayıcılar

platformlarınızı bağlayın

Bağlantılar linkler OpsIQ Dış platformlara: e-ticaret mağazaları, fatura sistemleri, ödeme işlemcileri, e-posta sağlayıcıları ve özel APIs Bir kez bağlantılı olarak, AI siparişleri, müşteri verilerini, aboneliklerini ve daha fazlasını bakabilir ve onaylarınızla eylemleri alabilir.

Nasıl çalışır
Merkeze GetirenlerOpsIQ Temel, birbirine bağlı olarak WHMCS, Shopify, Stripe, WooCommerce, SendGrid ve Google Business Profile, her biri bağlantılı bir statü gösteriyor.WHMCSShopifyStripeWooCommerceSendGridGoogle KitaplarOpsIQCORE1PLUG IN25+ önceden inşa edilmiş konektörler2AI CONTEXTGerçek platform veri3ACTIONSOnayınızla Done with your consent
Bağlayıcılar

Gemiler OpsIQ

Bunlar, yüklemeniz ve sadece kimliklerine ihtiyacınız olan anlardır.

WHMCS

Hesaplama

Web barındırma fatura: müşteriler, hizmetler, biletler, faturalar, domainler, sunucular.

Shopify

E-ticaret

E-ticaret: siparişler, müşteriler, ürünler, envanter, ödemeler, webhooks.

WooCommerce

E-ticaret

WordPress e-ticaret: siparişler, müşteriler, ürünler, kuponlar, nakliye.

WordPress

CMS

İçerik ve kullanıcılar bir WordPress site.

Square

Ödemeler

Ödemeler ve satış noktası: siparişler, müşteriler, katalog.

osCommerce

E-ticaret

Legacy e-ticaret: siparişler, müşteriler, ürünler.

Botble Hotel

Bridge

İmzalanan bir Botble CMS otel sitesi aracılığıylaOpsIQKöprü. Bir platform için referans uygulaması hiçbir şeyle uygulamaAPI.

Zendesk

Destek Desteği Destek Desteği Destek Desteği

Yardımdesk: biletler, kullanıcılar, örgütler, yorumlar.

Google İş Profili

Pazarlama

Yerel iş: yorum, yazılar, Q &A, öngörüler. OAuth kullanın.

Google Takvim

Verimlilik Verimliliği

Takvimler ve olaylar. OAuth kullanın.

GmailVe veIMAP

Email

Mailboxes: inbound and outbound mail, adres-book senkronizasyon.

SendGrid

Email

E-posta teslimatı: e-postalar gönderin ve şablonları yönetin.

Mailgun

Email

E-posta teslimatı: Mailgun üzerinden e-postalar gönderin.

Slack, TelegramLINE, X DM

Messaging

Sınır ve doksan konuşmaları için kanallarını takip edin.

Meta kanalları

Messaging

Facebook Messenger, Instagram DM ve WhatsApp.

Site Zekası (GA4, Arama Konsolu)

Analiz

Analytics ve SEO suite için veri arama.

Web sitesi zenginleştirme ve CRM import

CRM

Şirket zenginleştirme ve toplu müşteri ithal.

Piyasadan kullanılabilir

Bunlar, yüklemenin bir parçası değildir. Sekslerden birini yükleyin ve canlı konektör klasörüne kopyalanır, bunun tam olarak yukarıdakiler gibi davrandığından sonra.

Stripe

Pazar Yeri

Ödemeler: suçlamalar, müşteriler, faturalar, abonelikler, ödemeler, anlaşmazlıklar.

BigCommerce

Pazar Yeri

E-ticaret: siparişler, müşteriler, ürünler, kategoriler, markalar.

Magento 2

Pazar Yeri

E-ticaret: siparişler, müşteriler, ürünler, kategoriler, envanter.

PrestaShop

Pazar Yeri

E-ticaret: siparişler, müşteriler, ürünler, kart kuralları, taşıyıcılar.

OpenCart

Pazar Yeri

E-ticaret: siparişler, müşteriler, ürünler, kategoriler.

Amazon SES, Postmark, Resend

Pazar Yeri

İşlemsel e-posta teslimatı.

Jira, Linear

Pazar Yeri

Sorun ve proje takip.

Zoom, Microsoft Takvim, Outlook Mail

Pazar Yeri

Toplantılar, takvimler ve posta.

DocuSign, Apollo, SerpApi, Google Analytics

Pazar Yeri

İmza, umutlu, arama ve analitik veriler.

Webflow, Wix, Squarespace

Pazar Yeri

Web sitesi platformları.

💡
Bağlantı listesi paketler olarak hareket eder. Kurulumunuz için yazar liste şu şekildedir: runtime'nin keşfettiği şey nedir ve Market sekmesi ekleebileceğinizi gösterir.

Bir bağlantı kurmak

1
Go toches

admin sidebar'da kazınmak.

2
Bağlantıyı bul

Listeye veya aramaya göz atın. Oteller kategori tarafından gruplanır.

3
Etkinleştir

Bağlantıyı ve enable'ı tıklayın.

4
Bilgilendirme bilgilerini girin

Gerekli alanlarda doldurun: API anahtar, URL, belirteçler, vs. Her bağlantı ayarları panelinde belgelenen özel gereksinimleri vardır.

5
Test bağlantı bağlantısı

Click "Test Connection" yeşil sonuç, bağlantının dış platforma ulaşmasının anlamına gelir. kırmızı bir sonuç hatayı gösterir.

6
Özellikleri ayarla

Hangi özellikleri etkinleştirin: bilgi senkronizasyonu, webhook senkronizasyonu ve AI eylemleri. Tüm konektörler tüm özelliklerini desteklemez.

Hangi konektörler size verir

AI bağlamı

AI müşteri verilerini, siparişleri, aboneliklerini ve daha fazla bağlantıdan bakabilir. Bir müşteri sohbet ettiğinde, AI'nın referans için gerçek platform verileri vardır.

AI context (bağlayıcı yazarları)

Bağlantınızın ContextProvider, biletin sahibinin sadece bir hesap özetini besler. Müşteriyi müşterinin sahibine geri verin. customer_id Bilinende; aksi takdirde, bilet oto-replileri, ctx bayrağının nerede customer_trust_email Gerçek, hesabın göz önünde bulundurun customer_email (Doğrulanmış bilet göndereni). Uzak platformlar bir açığa çıkıyor /context/customer-by-email endpoint ve bağlantı bunu çağırır. Bu, AI'nın “teşekkürde giriş” demek yerine gerçek bir denge / faturayı alıntı yapan şeydir. Operatörün veri sınıfı toggles (İngilizce).customer_sections, customer_allow_credit) ve kesinlikle okunuşun, asla sırlar yaymayın.

Müşteri rehberi (bağlayıcı yazarları)

Bağlantınızın KimlikProvider üç evrensel bilet görünümüni besler: lookupCustomerById() (müşteri kartı) lookupCustomerServices() (product/service table), ve listCustomers($query,$limit): the "Search customer or type email" picker on the native Compose-New-Ticket form. Return rows of {id, external_id, name, email, company, phone, platform, platform_label}. Uzaktan kural: Müşterileriniz başka bir veritabanında veya hizmette yaşarsa, onları platformunuzun üzerinden getirin API Bu yöntemler içinde, diğer sistemin tablolarını doğrudan okumaz (yalnızca bu yöntemlerde). OpsIQ DB onlar boş yer sahipleri, bu yüzden yerel bir okuma boş bir seçici döndürür. kapı sizin yapılandırdığınız uzaktan yol API URL; Yerel bir okumayı sadece aynı-DB geri dönüş olarak tut.

E-bord biletleri, algılama ve yönlendirme (bağlayıcı yazarlar)

Inbound email yerli bir bilet haline geldiğinde, OpsIQ gönderileyiciyi aramayı algılar lookupCustomerById(0, ['email'=>$sender]) Her bağlantıda; ilk maç "kendi" müşteri ve onun platform Kaug damgalanır ticket.created Olay olarak olay _pipe_owner_platform (Oturan = misafir).WHMCS-customer e-posta bir bilet açar WHMCS (WHMCS Sayılama, bir tane olarak aynalandı; bilinmeyen bir gönderici yerel bir konuk kalırken. Eğer konektör aynalarınız kendi platformlarına yerli biletler- Evet, senin. ticket.created Eller bu konuda kapılanmalı: if (array_key_exists('_pipe_owner_platform',$payload) && $payload['_pipe_owner_platform'] !== '<your-slug>') return;. Anahtar, boru olmayan (çak/manual /AI) biletleri için mevcut değildir, bu yüzden daha önce Team & Departments altında ayna kontrol yaşamları vardır → Açık biletler e-posta yoluyla (Herhangi bir kişi / Müşteriler sadece / Off).

Eylemler

AI, tarayıcı aracılığıyla eylemleri gerçekleştirebilir: biletler oluşturmak, güncelleme siparişleri, aboneliklerinizi iptal etmek, tüm onayınızla Güven Katmanı üzerinden.

Bilgi Bilgisi

Bağlantılar, AI'ya özel bilgi makalelerine katkıda bulunur. Shopify Bağlantı e-ticaret problemini ekliyor; WHMCS Bağlantı, barındırma bilgilerini ekliyor.

Bilgi-base ithalat (bağlayıcı yazarlar)

Platformunuz bir bilgi tabanına sahipse, bir bilgi üssüne başvurun kb_capabilities Blokta blok içeri settings.json (tip) kb_source) ve bağlantınız Yardım Merkezi editörünün gözünde görünür Import KB → Bağlı bir uygulamadan ithal İş alanında etkinleştirilen ve yapılandırıldığında düşüşe uğrar. Bu, uygulama için bir yöntem değildir: yerleşik bir isim adapter (zendesk Tam-tree Yardım Merkezi API, veya crawl Herhangi bir KB sitesi için) ve base_template gibi https://{subdomain}.zendesk.comAncak hangi OpsIQ bağlantınızın depolanmış ayarlarından doldurur. Credentials asla sunucuyu terk etmez; tarayıcı sadece bir yeni platformu desteklemek için, yeni bir platform eklemek için, bir ekleyin. opsiq_kb_<platform>_manifest() adaptör ve referans olarak onu isim. Full reference: connectors/PLATFORM_CONNECTORS.md §5.

Webhook'lar

Bazı konektörler gerçek zamanlı etkinlik bildirimleri için dış platformla webhooks kaydeder (yeni siparişler, bilet güncelleştirmeleri vs.).

Satış takipleri

E-ticaret bağlantıları gelir verilerini dağıtım ve analiz için Satış panolarına beslemektedir.

💡
Her çalışma alanı farklı kimliklerle etkinleştirilen farklı konektörlere sahip olabilir.Aches are workspace-scoped. each workspace can have different connectors enabled with different information. A A WHMCS İş alanı, kullanım alanını kullanır WHMCS Link; acıklı Shopify İş alanı, kullanım alanını kullanır Shopify Bağlantı.
Birden çok konektör kullanabilir miyim?+

Evet, siparişler ve Stripe için aynı çalışma alanında ödeme yapmak için Shopify'a sahip olabilirsiniz. AI tüm etkinleştirilen konektörlerden veri birleştirir.

Platformum listelenmemişse ne olur?+

Bir REST API ile herhangi bir platform için özel bir bağlantı oluşturmak için, ya da topluluk tarafından oluşturulan konektörler için Marketi kontrol edin.

Bağlantılar kendi kendine barındırılan OpsIQ ile çalışır mı?+

Evet. Oteller her iki bulutta ve kendi barındırılan baskılarda aynı şekilde çalışır.

Bağlayıcılar

Satış ve faturalama bağlayıcı sözleşme

Her ticaret konektörü aynı platformda-nutral olay sözleşmesi kullanır. WHMCS referans uygulamasıdır, ancak SaaS Bridge, mağazalarda, ödeme sağlayıcıları, piyasa bağlantıları ve Kablolar paketleri aynı kurallara uymalıdır.

Her ticaret bağlayıcısı ne yayınlamak zorundadır

Bir yazara dayalı

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.

Stabilit kaynak kimlik kimliği

Platform, bağlantı kayıt defterinin yanı sıra, örneğin whmcs, shopify Ya da afsiq_saas. trafik_source, tedarik edildiğinde doğrulanmış satın alma atamasını içerir; aksi takdirde geri dönüş olarak aynı şekilde kullanılmaktadır. Mağaza tanımlayıcıları, ekran etiketleri değil. OpsIQ UI'deki dost bağlantı adını çözer.

İmpotenci

Olay_id, tekrarlanabilir satışlar ve geri yüklemeler için aynı olayı güncellemeli. Map at least one Immutable order_ref, in bill_ref or subscription_ref so webhook retries and backfills update the same event instead of replica sales. service_ref contains the Influence product or service example when one exists.

Kaynak süreleri

occurred_at, kaynak platformu tarafından bildirilen ödeme veya ekonomik-olay zamanıdır. Tarihi ödeme tarihlerini asla ithalat zamanıyla değiştirme.

Para ve FX

Kaynak miktarı ve geçerli üç harfli ISO para gönderin. Bağlantı ayarı OpsIQ FX dönüşüm sağlarsa, iş alanı raporlama parasına dönüştürür; aksi takdirde mağazayı veya fatura platform para birimini korumanız gerekir.© kodu bir raporlama para ya da değişim oranını zorlamamalıdır.

Kanıt tabanlı yaşam döngüsü

Yeni, yenileme, yükseltme, geri ödeme, kredi veya bilinmeyen kullanın. Fatura nedeninden sınıflama, abonelik veya hizmet ilişkisinden, çizgi tipi veya başka bir yazar kaynaklı kaynak alanı kullanın. Aynı müşteri tarafından tekrarlanan bir yenileme değildir.

Satış sınırı

Sadece olumlu yeni, yenileme, yükseltme veya yasal olarak bilinmeyen ticaret makbuzları Satış ve Dönüşümlere ait. Reunds geri ödeme ve net-revenue Analytics. Hesap kredisi, cüzdan top-uplar, token üst ücretli olaylar ve Add Funds satış, dönüşümler, sipariş hacmi ya da satış geliri olarak asla saymıyor.

CRM ayrı kalıyor

CRM anlaşmaları boru hattını ve aktiviteyi temsil ediyor. Bağlantılı bir fatura veya mağaza platformu bu sözleşme aracılığıyla yapılan ödeme siparişini ya da faturayı yaymıyorsa ticaret platform satışları değiller.

Her ödeme sinyali satırları açar

Bir olay adına bağlı değil. Platform bir ödemenin birkaç onay gönderdiğinde (örneğin, ücretli sipariş, işlem eklendi, ödeme tamamlandı) herhangi biri platform satışın ödediğini doğrular; satış parmak izi kardeşlerin tek sıraya kadar çökmüş olabilir.

Programlanmış uzlaşma (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.

Türlü projeksiyonlar

Affsiq_converss and dashboard summaries are uyumluluk projeksiyonları, öncülden yeniden inşa edilir. uygulamalar gerçek kaynağı olarak bir projeksiyona tedavi etmemeli. Sözleşme revizyonları altta yatan billing tarihi olmadan yeniden değerlendirilebilir.

Uzak platform sınır

Uzak bir konektör, platformunu yapılandırılmış olan API aracılığıyla okur. Aynı sunucu veritabanı masalarına asla bağlı olmamalıdır. The full authenticated domain site_key is provided byLockRegistry and must be applied to each leadger write and backfill. Workspace or group scope is read-time aggregation only; it must never expand event property.

Canonical ücretli-event örneği

Normalleştirilmiş ticaret etkinliği
{
  "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"
}

Links Builder mapping

Satış ve faturalama, Kablo Builder'da etkinleştirildiği zaman, harita miktarı, para, kaynak durumu ve kaynak tarihi, artı en azından bir sipariş, fatura veya abonelik referansı. Map lifecycle_type when API founds authoritative lifecycle kanıtları.

⚠️
Krediler ve Add Funds kasıtlı olarak fatura tarihi, müşteri dengesi bağlamı ve liderlik analizi için muhafaza edilir. Satıştan onları korkutmaz; sadece onları kısıtlamak ticaret performansından alıkoyur.

yaşam döngüsü_tipi bir CRM anlaşmasının ne olduğuna karar verir

lifecycle_type Bir analitik etiket değil. OpsIQ, bir satışın CRM boru hattına girip olmadığına karar vermek için okur, bu yüzden her satış bağlantısının bir boru kararı olup olmadığını veya yapmamayı planladığı bir kanal kararı vermesidir.

yeni

Kapalı bir anlaşma açın (yeni iş).

Yenileme, yükseltme

Tekrarlanan gelir olarak kayıt olun. Yeni iş anlaşması – yenilemeler farklı bir olasılık eğrisine dönüşür ve iki tahmin de bozdururlar.

iade, kredi

Asla bir anlaşma açma, herhangi bir modda para bir müşteriye geri döndü, bir kazan değil.

Öldü / Bilinmeyen

Sadece gelir. Satış kaydedildi ama asla boruya ulaşmıyor.

Bir satış, bir fasıl sıra: kimlik SALE, olay değil

Maç yapma event_id Ve kendinizi ekleyin. event_id is platform:eventName:externalIdBu teslimatı zaten yaptığımıza cevap veren ve “bu satıştan çoktan kaydettiğimizi” yanıtlayamayız. İki kez ödeme yapan bir platform – iki kez ödeme ilan ettiğimiz gibi - bir ödemeyi duyuran bir platform invoice.paid Ve tekrar payment.completed — iki idda ve aynı parayı iki kez topraklar, çarpıtacak hiçbir şey ve uyarmak için hiçbir şey.

💡
Referans yüklemesinde bulundu: her biri üç öncü sıra ile altı fatura, üç farklı olay_id şema kullanarak üç koddan yola. Hepsi 0.00 taşıdılar, bu yüzden toplam yanlış görünüyordu ve daha sonra gerçek miktarların bir ödeme üç kez sayılacağını fark etti.

Bunun yerine paylaşılan yaz arayın. Satışın iş kimliğini hesaplamaları (sale_fingerprint), mevcut bir sırayı onunla eşleştirin, orijinali korur event_id Güncelleme, ve gerçek sütunlara filtreler:

Satış faalını yazmak için tek destek yolu
\OpsIQ\Commerce\CommerceEventContract::upsertSaleRow('opsiq_sales_events', $row);
Aynı satış, birçok olay

Fatura. ücretli, ödeme. completed ve satış. bir fatura için tek parmak izi paylaşıyor ve bir satır güncelle.

Refunds stay separate

Para dışarı çıkıyor, paradan gelen farklı bir gerçek. Bir fatura geri ödemesi kendi kimliğini tutar, bu yüzden asla geri dönmez.

Hiçbir referans, parmak izi yok

Hiçbir sipariş taşımayan bir satır, fatura, abonelik veya hizmet referansı hiç parmak izi almaz, bu yüzden iki ilgili satırlar asla sadece çarpıtmıyor çünkü her ikisi de boş bir boşluğa sahip değildir.

Önceki referans

Fatura_ref, sonra sipariş_ref , daha sonra abonelik_ref – ilk önce en güçlü bir satış istikrarlı bir kimlik tutar.

Başpiskopos sadece bir satışa çıkar: asla bir satış yeniden yazma

Bir geri ödeme, iptal veya düzeltme bir düzeltmedir Yeni tarihli girişAsla sırayı doğru şekilde silmeyin. Bir geri ödemeye bir ödeme yeniden yazma tidy görünüyor ve üç şeyi bir kere kırıyor:

Bu, brüt gelirleri yok ediyor

Gross satışları ve geri ödeme oranı ayrı olmayı bırakır - ve geri iade oranı, bildirimin bilgi için var olmasıdır.

Yanlış dönemdeki geri dönüşleri kitaplar

Bir Ocak satışının Mart geri ödemesi Mart'ı azaltmalıdır. Ocak sırasını sessizce geri almak kapalı bir süre.

Denetim iz kırıyor

Zaman içinde bir noktada gerçekleşen bir öncü giriş kayıtları, düzeltmeler kontraseptifdir ve bu da iki kişilik kitap korumanın beş yüzyıl boyunca nasıl çalıştığını göstermektedir.

Yani bir bağlantı, onu uygulamak yerine geri döndürür: iade refunded_at ve refund_amount Satışın kendi yaşam döngüsü yanında ve çağrıcı geri ödeme gerçekleştiğinde kendi sırasını yazmasına izin verin. İkisi asla çarpıtamaz, çünkü satış parmak izi bir satıştan geri döner.

💡
Aynı ilke miktarlar için geçerlidir. Platformun mevcut değerine depolanan bir miktarın olmaması: ödeme zamanında hesap kredisi yasal olarak kaydedilen 0 ve para zaten müşteriyi iki katına çıkarmadığı zaman kaydedildi.

Sınıf sözleşmeleri

OpsIQ yaşam döngüsüne karar verir Bir kez bir kere bir kez bir kez, in \OpsIQ\Commerce\SaleLifecycleClassifierBir bağlantı sadece hangilerin olduğunu ilan eder. Kendi platformunun kelimeler ne demek, uygulamakla \OpsIQ\Connectors\SalesLifecycleConnectorInterface::salesLifecycleVocabulary()Sonra paylaşılan sınıflandırıcıları çağırın. Sebepleri yeniden tasarlamayın.

Declare kelime, kararın delegesini
public static function salesLifecycleVocabulary(): array
{
    return [
        'credit'             => ['addfunds'],                  // adds balance, sells nothing
        'upgrade'            => ['upgrade'],                   // resizes an existing commitment
        'recurring'          => ['hosting', 'domainrenew'],    // continues something owned
        'acquisition'        => ['domainregister'],            // obtains something new
        'recurring_prefixes' => ['domainaddon'],               // families that grow over releases
    ];
}

$lifecycle = \OpsIQ\Commerce\SaleLifecycleClassifier::classify([
    'explicit'    => $platformSaidSo,     // wins outright when present
    'line_types'  => $types,              // your platform's own line/item types
    'vocabulary'  => self::salesLifecycleVocabulary(),
    'is_order'    => $cameFromANewOrder,
    'is_refunded' => $moneyWentBack,
]);
💡
Precedence sabit ve paylaşılır: açık, sonra geri ödeme / satın alındı, sonra kredi, o zaman yükseltme, o halde tekrarlanır, sonra satın alın, o zamandan beri bilinmeyen. For platformlar da yükseltme için bir sipariş yükseltiyor; çünkü yeni bir abonelikin ilk faturası tekrarlanan bir çizgiye sahiptir.

Platformun tüm sözlüğünü gözden geçirin

Bu, en çok maliyeti olan ve en az yanlış görünen başarısızlıktır. WHMCS konektörü maçlandı ['hosting','addon','domain'] - Tamamlanan bir liste. WHMCS, çıplak bir yaymıyor Domain Gerçek domain hatları için türü; yaylar DomainRegister, DomainRenew, DomainTransfer, PromoHosting, PromoDomain, DomainAddon* ve UpgradeHepsi listeyi geçmiş oldu unknown: 1,288 in bills, üç yıl, hata ve giriş çizgisi yok.

Her yeni müşteri tarihlerini bir bağlantı arka dolum ile doldururBu yüzden bir sınıflandırma bug tek bir çalışma alanını etkilemez - o bağlantı üzerinden her iş alanı etkiler, ilk önce onların boru hattına bakarlar. platformun belgeleri veya canlı verilerin sayımını alın ve büyüyen ailelerle bu bağlantıdan kaynaklanan her iş alanını etkiler. Ön ek Bu yüzden kimse, yokluk yerine akrabalarıyla sınıflamamıştır.

💡
Pratik bir kontrol: Kendi sıralarınızın çoğunu bilinmeyen sayın. Sağlıklı bir satış konektörü neredeyse her şeyi sınıflandırır. Bilinmeyenin sürekli akışı sahip olmadığınız hemen asla veri değildir - bağlantı hiç okumadı.

Gelişen tarihi tamir etmek

Her sevk edilen OpsIQ satış bağlantı bu uygulamayı uygular — 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() Her ne per-record bağlantınızı zaten getirse. tools/crm_backfill_sales_lifecycle.php Daha sonra bağlantınızın ithal tarihini per-connector kodu ile onarın: varsayılan olarak kuru koşmak, gerisi yazmaktan önce sırayı ayırıp geri dönülemez bir öncü tarafından geri gönderilmez ve hiçbir zaman cevap olarak başarısız bir okuma yazmaz.

💡
Eğer bağlantınız geçmiş kayıtları yeniden hazırlayamazsa - bir webhook-sadece konektörü yapamaz – yöntemi sorgulamıyor. Bir stub geri dönüşü bilinmeyen uygulamadan daha kötü: bir arka dolum, sınıfsız ve rapor başarısı olarak iyi yazlar yeniden yazacaktır. Kelime arayüzünü sadece uygulayın.
💡
Detaylı paket referansları bağlantılarda /CONNECTOR_EVENTS. md ve konektörler / PLATFORM_CONNECT. med in self- host source distributions.
Bağlayıcılar

Yolculuğun sözleşmesi

Yolculuğun Zekası, tarayıcı penceresinden bir platform-neutral olayı kabul eder, yerleşik konektörler, SaaS Köprüsü, pazar paketleri ve© Builder çıktı. Platforma özgü isimler kenarda tercüme edilir; eğlence, referans ve Site istihbarat kodu sadece kanonik olaylar kullanır.

Isolation and trust limit

Exact a-domain key

Her olay, otantik alan sitesine bağlıdır. Bir bağlantı o anahtarı almalı ya da asılsız uç noktası asla emanet edilmemiş bir istek gövdesinden değil. Domainler ayrı kayıt tutar; bir domain grubu sadece okuma-zaman agregasıdır.

Idempotent kimlik

event_id, konektörler için gereklidir ve aynı yerli olay için deterministic olmalıdır. Retries, webhooks and backfills update one event rather than duplicate a trip or sales.

Yerli artı kanonik isim

Kaynak_event_name for kanıt ve sorun giderme için, o zaman olayı_isim_canonical. Core Analytics asla bir konektörün üstüne dalmalıdır.

Server kanıtları kazanır

Tarayıcı gözlemi bir yolculuğa başlayabilir veya gerçekleştirilmiş bağlantı olayları imzalanmış, giriş, ödeme, satın alma, yenileme ve diğer terminal sonuçları. Geçerli site-bound korelasyon token en güçlü katılmak; geçersiz bir token reddedilir ve gömülü kimlikleri güvenilir değildir.

Gizlilik

Sadece ilan edilen yolculuk için gerekli olan tanımlayıcılar ve alanları gönderin. Saygıdeğer onay, maskeleme ve saklama ayarları. Asla yer kimlikleri, kart verileri, kimlik doğrulama sırları veya özel mesaj vücutları mülklerde.

Canonical zarf

Yolculuğun Saati
{
  "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"}
}

Cannonical taksonomisi

En dar doğru adı kullanın. Desteklenen aileler, katılım sayfası / CTA olayları içerir; hesap işareti, giriş, MFA ve şifre sıfırlama; liderlik ve form aşamaları; ürün, kart, çekout, ödeme, satın alma, abonelik, yenileme ve geri ödeme; promosyon izlenimleri ve dönüşümler; yardım odaklı olaylar; güvenlik etkinlikleri; ve isim alanı özel etkinlikler. account.signup.succeeded, account.login.succeeded, lead.form.succeeded, commerce.payment.succeeded, commerce.purchase.completed, commerce.subscription.renewed ve commerce.refund.completed.

Tarayıcı, onay ve terk etme

Widget, sayfa yapısını gözlemleyerek bir bağlantı olmadan çalışabilir, form eylemleri, DOM sonuçları ve ziyaretçi yolculuğu logları. Bu kanıtlar açıkça göz ardı edilir veya inmiş gibi derecelendirilir. Bir konektör yazaraatif sunucu onayı ekler ve aynı tarayıcıya bağlanabilir; Abandonment ilk olarak bir aday olarak depolanır; sadece UI'de ayarlandığından sonra ve yalnızca daha sonra kurtarma veya başarı mevcut olduğunda terk edilir.

Attribution ve gelir

Attribution, geçerli bir imzalanmış bir korelasyon tercih ediyor, sonra tam bir yolculuk, deneme, oturum veya ticaret referansı, ardından onaylanan kimlik grafiği ve nihayet sınırsız bir davranış maçı. 1. Site Zekası gelirini okur; krediler, cüzdan topları, token top-uplar ve Add Funds asla dönüşüm satın almamaktadır.© FX davranışları bu bağlantı ayarıyla kontrol edilir.

⚠️
Attribution modeli, göz ardı pencereler, doğrudan-traffic işleme, minimum güven, terk etme zamanı ve eğlence tanımları UI politikasıdır.© kodu onları zorlamamalıdır.

Stok ve Builders

Links yolculuk bildirimi
{
  "capabilities": ["sales", "journey_events"],
  "journey_capabilities": {
    "journey_events": true,
    "payments": true,
    "subscriptions": false,
    "correlation_token": false,
    "backfill": true
  },
  "journey_event_mappings": [{
    "source_event_name": "order.paid",
    "event_name_canonical": "commerce.purchase.completed",
    "field_map": {
      "order_ref": "order.id",
      "customer_ref": "order.customer_id",
      "amount": "order.total",
      "currency": "order.currency",
      "occurred_at": "order.paid_at"
    }
  }]
}

Declare sadece paketi gerçekten sunar. Tools Builder haritayı doğruluyor ve ilk parti paketleri tarafından kullanılan aynı platform-nutral adaptör üretiyor. Journey ingestion bir event or a bounded batch of 100 through the created authenticated integration endpoint.

💡
Ticaret öncülüğü gerçek kaynağı olmaya devam ediyor. Ticaret-to-journey köprü yayımlayıcıları sunucu tarafından onaylanmış sonuçları yayınlar ve mevcut idempotent liderlik sonrası ilişkilendirmeleri uzlaştırıyor, bu yüzden bir ödeme asla iki satışa dönüşmez.
Bağlayıcılar

AI eylemleri nasıl çalışır

Her bağlantı bir eylem seti ilan eder: AI dış platform üzerinden yapabilirler. Eylemler “Ajan diyor” ve " AI yapar."

AI eylemleri
AI eylemleri nasıl çalışırBir müşteri isteği silinmiş bir eylem kartına haritaladı, sonra kontrol listesi: izin kontrol etti, onaylıyorsunuz, API denilen.AI eylemleri nasıl çalışırİşspace"Aboneliğimi iptal et"müşteri- Evet.cancel_subscriptiondeleteOnay gerekli doğrulamayı onaylayınParams: abonelik_id (From context)ETKİ TIPLERİreadYazı yazmak için yazdeleteİzin ve rol kontrolEylemi onaylıyorsunuzAPI · sonuç rapor1DECLAREDHer bir konektör eylemleri listeler2GATEDİzin + doğru3THEN RUNAPI çağrısı, sonuç geri
Bir istek, izin verilen ve onaylanmış olan bir (yazılın okuma / yazma/delete) ilan edilen bir eylem haline gelir.

Eylem hayatı döngüsü

1
Müşteri bir şey için sorar

"Aboneliğimi iptal et." Yapay zeka bu durumun "abonelik_iptal" eylemi gerektirdiğini belirledi.

2
AI kontrolleri izinler

Bu eylem izin verilir mi? Mevcut kullanıcının doğru rolü var mı?

3
AI parametreleri toplar

Eylemin bir abonelik kimliğine ihtiyacı vardır. AI müşteri bağlamından yukarı bakıyor veya müşteriyi soruyor.

4
Onaylama

Yıkıcı veya yüksek performanslı eylemler için, AI yürütmeden önce onay istedi.

5
İptal

Eylem dış platform API diyor.

6
Sonuç Son Sonuç

AI, müşterinin sonucu bildiriyor.

Eylem türleri

Eylemleri Oku

Her şeyi değiştirmeden veriye bakın. Örnekler: liste_orders, get_customer. Güvenli, gerekli bir onay gerekmez.

Yorum yaz eylemleri

Veri oluşturun veya değiştirir. Örnekler: oluşturmak_ticket, update_order. onay gerektirir.

Delete eylemleri

Verileri sil. Örnekler: cancel_subscription. Her zaman doğrulama isteyin.

HTTP eylemleri

Eylemlerde karar verdi.json, jenerik API çağrıları tanımlanamaz şekilde.

Yetenekli etiketler

Eylemlerdeki "kapabilite" alanı Seçmeli.json Bir bilet için bir konektör-neutral sınıf etiketi (örneğin, "tickets" bir bilet okuma / göz önüne alındığında, “ticket_create” bir bilet açmak için).OpsIQ Tüm sınıf üniformalı her bağlantıda: bilet, operatörün AI Bilet Farkındalığı'ndan çıktığında AI’dan vazgeçiriyor ve bilet yaratımı için rezerve ediliyor.OpsIQ“Kendi bestecisi (bu yüzden bir konektörün oluşturma aracı tekrarlayamaz) Onu ve bağlantı konforlarınızı gözden geçirin.OpsIQ Eylem isimlerini asla bilmeniz gerekmez.TheLock Builder onu eylem başına bir Capability dropdown olarak ortaya çıkarır.

Kod eylemleri

PHP'de bağlantı sınıfında uygulama. Tam kontrol mantığı üzerinde.

Örnek eylem tanımı
{
  "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" }
    }
  }
}
Bağlayıcılar

Bir bağlantı kurmak

Stok Builder, REST API ile herhangi bir platform için tam bir bağlantı oluşturmanıza olanak sağlar. temel konektörler için gerekli kodlama yoktur.

Bir bağlantı kurmak
Bağlayıcı OluşturucuHiçbir kodlu bağlantı formu: isim, auth type, baz URL, bir aksiyon haritası, bir geçiş testi ve yayın düğmesi.Bağlayıcı OluşturucuİşspaceBağlayıcı OluşturucuAdıBenim PlatformumYetkilendirmeOAuth 2.0 (PKCE)Temel URLhttps://api.example.com/v2EylemGET/customers → liste_customersTest vefat ettiPaket bağlantı1NO-CODEAd, auth, baz URL2ANY APIAnahtar, Bearer, Basic, HMAC, OAuth3PUBLISHInto /connectors/<slug>/
Herhangi bir REST'de inşaatçıyı işaret edin API. Auth, baz URL Ve eylemler, bunu test edin ve bir çalışan konektörü yayımlayın. Gerekli kod yok.

Tamamlayıcı API kapsama

Her üretilen her biri API Bağlantı ayrı Yerli açığa çıkarabilir API Oku ve Yerli API Eylemleri yazın. Curated eylemler tercih edilir; yerli eylemleri kapak sağlayıcısı uç noktaları daha sonra eklenmiştir. runtime REST, GraphQL,, JSON, form, XML, çiğ ve çok parça bedenler, paginasyona bağlı,API- Yöncüler ve idempotency, iş alanı bağlantı ayarları içinde kimlik tutarken.

⚠️
Market paketleri kaynaklandı /marketplace_connectors Ayrıca paketli olarak /connectors. Paket versiyonunu artırın, sözleşmeyi ve belgeyi yeniden üretin, uygun testleri çalıştırın, sonra tekrar imzalayın ve yeni pazar sürümünü yayınlayın.

Sihirbaz

Sihirbazın üstteki sekmeler olarak gösterilen altı adım var. özgürce atabilirsiniz ve Kaydet Ayakta çalışmanızı herhangi bir noktada tutar.

1
Kimlik ve profil

Ad, slug, açıklama ve ikon daha sonra bir sözleşme profili seçin: StandartAPITicaret, Helpdesk, Mailbox, Site Zekası, SaaS Bridge, Local PHP Platform veya or Hiçbir API ile platform Platform hiçbir çağrılanabilir ve OpsIQ bir köprü kurmak zorunda değildir. Profil tam bir yetenek başlangıç noktası seçer; hala bireysel yetenekleri ayarlayabilirsiniz.

2
Yetkilendirme

Platformdaki kimlik doğrulama modelini kullanarak ve kendi alanlarında doldurun: Bir sonraki adımdaki bağlantı testi için kullanılıyorlar ve yayınlandığından sonra depolanmazlar.

3
Test Testi

Enter the API base URL and a verify endpoint, then run a live connection test using the credentials from step 2. Do this before you define any actions, if the auth or the base URL is wrong, every action you write afterwards would fail for the same reason and you would be debugging the wrong thing.

4
Eylemler

Her işlemi tanımlamak: isim, HTTP yöntemi, uç nokta yolu, parametreler, cevap alanı haritalama ve aşağıda açıklanan güvenilirlik ayarları. Bu adımdan ayrı olarak her eylemi çalıştırabilirsiniz. You can run each action individually against the live API from this step.

5
Tetikleyiciler

Map the webhook events platformunuzun gönderdiği olaylar OpsIQ Olaylar, bu yüzden platformunuzda gerçekleşen şeyler çalışmaya başlayabilir OpsIQ.

6
İnceleme, işletme sözleşmesi ve yayın

Review every action, trigger and capability. Enterprise profiles expose the generated queue, worker, hook, migration, ticket-mirror, attachment and conflict contract before publishing. Publishing writes the package into /connectors/<slug>/.

⚠️
Yayınlama paketini çalıştırmıyor. Kaslish sadece sihirbaz formunu doğrular ve taşımadan önce uyarıları yayarlar - açık, yetenek dosyaları, kimlik-token sözleşmesi ve köprü-snippet check – her seferinde kuruya basdığınızda çalışır.

Hangi yayın, form size göstermediğini gösteriyor

Jeneratör sürpriz insanların beş davranışı. Kimse bir boğa değil; hepsi kazayla buluşursanız size bir öğleden sonra mal olacak.

Bir soru geçişe karar verir: platform bir API'a hizmet eder mi?

Cevapla it in step1Verilere erişen modu (veya "Platform with noAPI" profili".APImodu ilan ediyor native_api and emits the <slug>_api_call passthrough. Bridge mode declares platform_bridge Bunun yerine ve STRIPS native_api Eski bir spektrumu taşıdıysa bile, bu yüzden açık, üretilen sınıf ve uzmanlık docs aynı fikirde olamaz. ai_brain_aware Ayrıca eklenmiştir.

SILENCE MEANS "bir API"

Builder cevabınızı takip eder; gerçeği kendisi için işe yaramıyor ve hiçbir şey söylenmediğinde varsayılanAPImod. Yani bir hayır-APIPlatform bunu ACTIVELY söylemeli - "Platform'u hayır ile seçinAPI" Profil, veri girişi köprüye veya işarete ayarlayın 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.

Bağlantı testi GET /ping'a varsayılan olarak

Doğru yolu boş bırakırsanız, Builder yazıyor /ping Oluşturulan bağlantıya ve profiline.json'in test bloğuna neredeyse hiçbir gerçek platform bu rotaya hizmet etmiyor, bu nedenle Test Bağlantısı HTTP 404 ile her yüklemede başarısız olur ve bir müşteri yanlış yapılandırma gibi okur. Platformunuzun aslında cevap verdiği bir doğrulama yolu ayarlayın. Bir köprü linki için, noktanızdaki tüm zincirinizi tek bir çağrıda kanıtlar: köprü konuşuluyor, anahtar maçlar ve köprü ana kutuya ulaşabilir.

Yeniden yayımlama hala el-editslerinizi yazmakta

Cap tasks şimdi veri erişimi cevabı takip eder, bu yüzden artık sürüklenmemektedir. Başka her şey hala yapar: ContextProvider. php veya başka bir yaygın dosya ve sonraki yayın onu değiştirir. Bir korumalı istisna köprü dosyasıdır - sadece kendi işaretini taşıyan bir köprüyü yazmakta, böylece el yazısı yalnız bırakılır.

Yeniden yayımlama dosyaları

Bir yetenek ve bir sonraki yayın sağlayıcı dosyasını ortadan kaldırır. Herhangi bir dosyaya El-edits - ContextProvider.php her şeyden önce yazılıdır, veya paketin mülkiyetini ilk çıkararak alır.opsiq-builder.json(Büyücünün artık bunu yönetmemesinden sonra).

sürüm_status her zaman önizleme

Sihirbazın bunun için bir kontrol yoktur. Bir paket, üretim olarak gemiyi serbest bırakmak zorunda olduğu anlamına gelir_status ayarlarda el tarafından değiştirilmelidir.json - ve bu düzenleme imzayı kırıyor, sonra tekrar imza atıyor.

İmza, bütünlük ispatlıyor, kökeni değil

Builder paketleri bu yüklemenin kendi simetrik anahtarı ile imzalanır. Bu algılamalar tampering. paketi kimin yazdığını ve aynı anahtarı tutan herhangi bir install aynı imza üretebilir. Yerel olarak imzalanmış bir pakete kendi imzalı olarak davranın.

Slug çarpışmaları sadece bir ağaçta kontrol edilir

Yayın, zaten var olan bir sürmüş reddediyor/connectors/.Bakmıyor/marketplace_connectors/,Bu yüzden aynı darbe ile bir el yazarlı ilk parti paketi gölgelenebilir.

💡
Sihirbazın bilgi yazarı bir adım yoktur. Platformunızı tanımlayan bir bilgi dosyası sizin için tanım, açıklama, auth tipi ve tanımladığınız eylemlerden oluşur ve bağlantı etkinleştirildiği zaman AI'ya yüklenir.

Bir eylemi tanımlamak (adım 4)

Her eylem aşağıdaki ayarları vardır. Sadece ilk dört gereklidir; onu çalıştırabilecek ve nasıl dikkatli olabilecek geri kontrol.

Etkinlik tuşu ve etiketi

Anahtar, AI çağrılarının nedir; etiket bir insan okumasıdır. Keys otomatik olarak bağlayıcınız ile uzayıyor, bu yüzden iki konektör hem de "list_orders" kolla olmadan “list_ orders” olabilir.

HTTP yöntemi

GET, POST, PUT, PATCH veya DELETE.

URL yol

üssüne teslim oldu URL. Use {name} Örneğin, yer sahipleri için, örneğin /opportunities/{id}/stage

Parametreler

Her parametre için nereye gittiğini de seçin: başlık, Yol yolu yol yolu, Soru sorgu veya Başlık:. Bir yol parametresi bir tane doldurur {placeholder}; Bir sorgu parametresi, fikre uygun. URL.

Cevap haritalama

JSON yanıtında hangi alanı, müşteri adı olan şeydir, bu da sipariş toplamdır. Bu, AI'nın platformunuzun verilerini tahmin etmekten ziyade okumanıza izin veren şey.

Kim kullanabilir

Ekibiniz (admin AI), imzalanmış müşteriler (müşteri sohbet) ya da yazı asistanı için yalnızca imzalı müşteri için çalışır ve kimlik alanları otomatik olarak onlara kilitlenir, böylece bir müşteri başkasını soramaz.

Onay gerektirir

Bir insan, eylem koşmadan önce onaylanmalıdır.

Yıkıcı.

Marks eylemi, durumu ortadan kaldırmak veya değiştirmek gibi yapar. Operasyon yapmadan önce uyarmak için kullanılır.

Gerekli izin

Yönetici, AI'nın bu iznini kendi adına çalıştırması için tutmalı; tam yöneticiler her zaman geçiş yapar. yönetmek_integrations, manage_General, manage /billing, manage-sat_bridge, manage...

Açıklama / AI ipucu

Seçmeli, ama yazmaya değer. Bu eylem için ulaşmak için AI'ya söyler, örneğin "Bu işi bir anlaşma aşaması değiştirmek istediğinde kullanın" diyor. İyi bir ipucu, AI’nın doğru kullandığı ve görmezden geldiği bir eylem arasındaki farktır.

Yetenekli

Seçmeli sınıf etiketi, biletler (bir bilet okuma veya göz atın) veya bilet_create ( Bileti bir bilet açın) Tagging OpsIQ kapısı tüm sınıfı bir kez, örneğin, bir operatör AI bileti farkındalığını döndüğünde saklan.

Liste yolu listesi

Seçmeli. Bir liste döndürür, örneğin veri veya veriler için diziye giden yol. items

Hata yolu

Seçmeli. Varlığı olan bir vücut alanı, çağrının başarısız olduğu anlamına gelir, örneğin hata.message, faydalı APIs Bu geri dönüş HTTP 200 Başarısızlık üzerine.

Run it Run it

Her eylem bu adımdan canlı API'a karşı sürebilir, böylece başka herhangi bir kişi bunu kullanmadan önce yanlış bir yol veya alan adı düzeltebilirsiniz.

⚠️
Yazı eylemleri varsayılan olarak korunur. POST, PUT, PATCH veya DELETE kullanarak herhangi bir eylem yönetilme izni almaya başlar ve Bu işlem yapmadan önce insan onayı. Bu kasıtlıdır. AI'nın gözetimsiz verinizi değiştirmesine izin vermek yerine yeni bir yazı eylemi kapatılamaz. Her ikisini de eylemde değiştirebilirsiniz, ancak onları bilerek değiştirebilirsiniz.
💡
Müşteri sohbetinden çağrılabilir olmak için, bir eylem sadece okunur: Hem onay ve Destructive unticked. Bir müşteri durumu da kazaya izin verecek bir şey değildir.

Webhooks (adım 5)

Tesadüfler adım size platformunuzla kayıt olmak için bir webhook URL verir ve bu konuda gelen her isteği kanıtlayın.

Özgün metin çevirisi

Platform işaretlerinizi, örneğin X-Hub-Signature-256.

İmza algoritması

HMAC-SHA1, HMA C-SAM256 veya HMAc-SCM512.

Signature planı

Basit, düz bir hex veya baz64 sindirme. Or Stripe-style, t=...,v1 = ... bunu kopyalayan birkaç platform tarafından kullanılan format.

Signature Prefix

Seçmeli. Bazı platformlar, örneğin sha256=. Bunu boş bırakın eğer sizinkiler yapmazsa.

Olay haritaları

Her olay platformunuzun OpsIQ etkinliğine gönderdiğini gösterir.

Webhook'u kayıt edin

Eğer platformunuzun bir tane varsa API Kendi webhooksunu yönetmek için, kayıt yaptırmanız gerekmez URL Ele yemin olsun. Auto-insta Kayıt Bu Webhook etkinleştirin Ve bu, adım 4'da tanımladığınız iki eylemde işaret edin:

Create-webhook aksiyon

Bir yönetici bağlantıya izin verdiğinde çağrılış. URL'ı taşıyan parametre adı verirsiniz, opsiyonel olarak etkinlik listesini taşır ve yeni webhook’un boşunu tutan yanıtdaki yol.

Delete-webhook aksiyon

Bağlantının yukarıda yakalanan boş olduğunda çağrılan, bu yüzden bağlantıyı bozmak da platformunuzu ölü bir uç noktaya gönderiyor.

Değişebileceğiniz yetenekler

Profiller ve yetenekler, 8.1 Contract 2.2. Genrated and declarative yetenekleri doğrudan yayılıyor; kurumsal kabiliyetler bir araya gelir EnterpriseExtension.php runtime lifecycle Kablo ile şüpheli.

Eylemler

AI'nın operasyonları platformunuzda çalışabilir: liste siparişleri, bir müşteri bul, geri ödeme yapın.

Tetikleyiciler

Platformunuzdan webhooks alın ve onları OpsIQ olaylara dönüştürün.

AI biletleri

AI Triage ve Copilot, platformunuzda kalan biletlerde cevaplarıyla bir bilet geri dönen son noktayı seçin ve alanları haritalayın; OpsIQ bu konuyu ele alır.

Mailbox ve kontaktlar

Bir müşterinin zaman çizelgesine postasını gösterin, bir anlaşmadan gönderin ve adres defterinizi OpsIQ CRM'e senkronize edin.

Müşteri ithalatını

Sayfanızı müşteri listenizle ve her birini bir OpsIQ temas olarak ithal edin. Bu, İthalat düğmesine ne koşuyor.

Kontekst

Push, platformunuzdan her AI sohbetine canlı verilerle yaşamak.

Kimlik Kimliği

Müşterilerinizin hangi bir ziyaretçisi olduğunu öğrenin ve profillerini göster ve bir bilet üzerinde alışveriş yapın.

Satış ve fatura

Gelir olayları ve MRR rakamlarını OpsIQ tablolarına gönderin.

Inbound bilet

Biletleri ve e-postalarınızı, webhook tarafından OpsIQ destek ipliklerine sunar.

Outbound yanıtlar

Post OpsIQ personel, konu ortaya çıkan platforma geri döndü.

Yous kullanıcıları

Personel hesaplarınızı OpsIQ admin kullanıcılara aktarın.

Sync departmanları

Destek bölümlerinizi OpsIQ'a çıkarın.

Hedef ve ürün beslemesi

Promosyon Stüdyosu bir kişi hakkında bildiğiniz gerçekler üzerinde hedef alın ve gerçek ürünleri promosyon içinde yaratın.

Survey Studio sağlayıcı

Expose server-verified Survey gerçekleri, değişkenleri kaçtı ve belirli bir anketProvider. php aracılığıyla CRM Outreach alıcı sayfalarını bağlı bıraktı. Bu Promosyon runtime'yı yeniden kullanmaz.

Yerli IP bloke

Ne zaman OpsIQ bloklar an IP, platformun kendi bloku çağırın. API Bu yüzden blokaj orada da uygulanıyor.

Güvenlik olayları

bloke edildi-IP Tehdit sinyalleri tehdit sinyalleri OpsIQ.

AI için platform bilgisi

Gemiler inşa ettiğiniz her bağlantı, platformunuzun ne olduğunu ve eylemlerinin yaptıklarını kısaca tarif eder. OpsIQ admin AI, bağlantınızın etkinleştirildiği zaman, bu yüzden sadece bir eylem isimlerini görmek yerine platformunuzu anlayın. Bu sizin için yaratıldı.

API geçiş

Bağlantınız her zaman genel amaçlı bir çağrı alır, böylece AI sizin için bir tür eylem tanımlamadığı uç noktaya ulaşabilir. yapabileceğiniz türden eylemler kullanın; bu kaçış kapağıdır.

Canonical Tools Contract 2.2 reference

Sözleşme sürümü: 2.4 · 57 capabilities · 8 profiles.

Links Profiller

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.

Canonical yetenekleri

eylemler

Universal actions. Capability version: 1.0. Mode: generated. Runtime methods: registerActions. Package files: actions.json.

tetikleyiciler

Inbound event triggers. Capability version: 1.0. Mode: generated. Runtime methods: handleWebhook. Package files: actions.json.

webhook

Inbound webhook endpoint. Capability version: 1.0. Mode: generated. Runtime methods: handleWebhook.

journey_events

Universal Journey Event Contract mapping. Capability version: 1.1. Mode: generated. Interfaces: OpsIQ\Connectors\JourneyEventConnectorInterface. Package files: settings.json.

bağlam bağlamı

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.

kimlik

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.

Faturayı

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.

commerce

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.

s

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.

yerel

Local search/location data. Capability version: 1.0. Mode: declarative. Runtime methods: registerActions.

bu

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.

Analitik Analiz analitik

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.

⚠️
Builder özellikleri yazaraatif kaynak olarak kalır. Oluşturulan uzantı noktalarında platform özel iş kuralları koyun; paket yaşam döngüsü, kuyruklar, işçiler, göçler ve uygun testler, Builder-managed kalır.

Her eylemde Güvenilirlik ayarları

Yeniden

Başarısız bir çağrıyı yeniden denemenin kaç zamanı, her girişimi ikiye katlayan geri dönüşle. Sadece zamanouts, 429s ve 5xx hataları tekrarlanır; 4xx isteğinizin hatasıdır ve sadece oranınızı yakmaktır.

Puan limiti

Bu eylem için bir per-minute tavan, bu yüzden yoğun bir tetikleyici platformunuzu çekiçle kapatamaz. 0'da hiçbir sınır yoktur.

Zamanout

Daha önce pes etmeden önce platformunuzu ne kadar bekleyeceğinizi bekleyin.

Onaylama

Eylemin devam etmeden önce bir insan onaylaması gerekir. Yıkıcı herhangi bir şey için kullanın.

Kimlik türleri

Step 2 offers seven patterns. Pick the one that matches your platform's API documentation, the generator emits the right HTTP client for it.

API anahtar inhead

Sabit bir başlık olarak gönderilen statik anahtar, örneğin X-API-Key. Başlık adı ve etiketi yönetici formu göstermelidir. Bu sadece bir başlık kadar anahtarı gönderir; API yerine anahtarı beklerseniz, özel başlıklar veya tam kodlu bir bağlantı kullanın.

Ayıer token

Token sent as Authorization: Bearer <token>. Common for modern APIs.

Temel auth

Kullanıcı adı ve şifre, baz64-encoded into the Authorization Title. You choose the label both fields show on the admin form.

HMAC- imzalı

Bir kamu anahtarı artı bir sır, istek gövdesi imza başlığıyla, anahtar başlık ve platformunuzun bekleme sürelerini verirsiniz.

OAuth 2.0 (klient kimlikleri)

Server-to-server, kullanıcı etkileşimi ve yönlendirme olmadan. token URL ve bir opsiyonel kapsamı verirsiniz; yönetici, müşteri kimlik ve sırrı sağlar. Platform sorunlarınızın kişiye göre bir uygulama için referansları kullanın.

OAuth 2.0 (Connect düğmesine)

PKCE ile yetki kod akışı, Stripe için Shopify, Slack ve QuickBooks-style apps.You give the permission URL, token URL Ve kapsamı. Yayınlanmadan sonra, yönetici tıklamalar bağlantıya bağlanır, platformunuzda yazarlanır ve OpsIQ Yeni token ve mints talep üzerine Jets'a erişim sağlar. yönlendirme URI Kayıt olmak için kayıt olun OAuth Uygulama, konektörün ayarları sayfasında gösterilmiştir.

Özel Başlıklar

Ücretsiz bir form JSON Yukarıdaki desenler için başlık haritası kapak değil, örneğin {"X-API-Key": "{api_key}""X-Tenant":"{tenant_id}“Her yer sahibi yönetici formunda bir alan haline gelir.

💡
PKCE sadece Connect-button akışına uygulanır. Müşteri tarafından suçlanan akış hiçbir yönlendirme ve kullanıcı adıma sahip değildir, bu yüzden PKgate buna uygulanmaz.

Pagination stilleri

Ortak

Denge ve limit parametreleri kullanın. Örnek: ?offset =100&limit =50.

Page Sayfa

Sayfa numarasını kullanın. Örnek: ?page=3&per_page=50.

Kursör

Önceki yanıtdan bir cursor token kullanın.

Link Başlık

Link yanıt başlığını rel=" next ile kullanın.

Gelişmiş: özel PHP kodu

Link. php RETURNS bir örnektir. OpsIQ avların için adı verilen bir sınıf ilan etmez. Aşağıdaki yöntem, 88Interface'in gerektirdiğidir; yanlış anlama almak yükte ölümcül değildir, bir uyarı değil.

Link. php - gerçek sözleşme, minimum ve yönetilebilir
<?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.

Ayna bileti yerli bilet sistemi

Platformunuzun bir bilete sahip olduğu zaman, bağlayıcınızın satın alınması için tarayıcınızdan OpsIQ'a aynaya sahip olun (yeni bir bilet için konser hazırlayın, takip etmek için tamamen ekleyin). Emit ve bağlantınızdaki evrensel bilet olaylara abone olun subscribers() Yöntem, ticket.created, ticket.replied, ticket.updated, ticket.deleted. Auto-reply, escalation, SLA ve CSAT tüm aynı olayları kanca, bu yüzden ekstra kodla onları miras al.

Eğer idare ederseniz ticket.deletedAyrıca birleşmeleri de ele geçiriyorsunuz. Birleştirilmiş biletin silindiği merged_into Ve ilan eden bir bağlantıya göndermiyor ticket_merge; Birleşme bir kez gelir ticket.merged Bunun yerine, platformunuzda, orada birleştirilmiş biletin kapatılması yerine birleştirebilirsiniz. Bilet birleştirme yeteneği (Contract 2.4).

Açılış mesajı kimin yazdığını söyle

Bir bilet her zaman için Müşteri, ancak açılış mesajı yazılabilir staffBir müşteri adına bir bilet açıyor veya proaktif olarak ulaşır. Her yardımdesk bunu destekliyor, bu yüzden evrenselliğin bir parçası. ticket.created Her bir bağlantının özel olarak çözülmesi yerine sözleşme.

author_type

Müşteri (default) veya yönetici. Omit it ve müşteri varsayılır.

author_id

Personel yazar_type=admin. Asla müşteri kimliği.

author_name

Ajan veya bölüm ekran adı. Falls back to "Staff"

author_email

Ajan adresi. Müşteriye bir personel mesajı müşteri e-posta altında bir raporlama ve denetim hatasıdır.

Bu kozmetik değildir. Tüketiciler okuma author_type Kim olduğunu kimin çevireceğine karar vermek. Bir personel tarafından yazılmış bir açılış, client Kendi ajanınızın yazdığı bir mesaja cevap vermek için otomatik olarak uygun bırakın ve platformunuzun yankısını bu açılışın taze müşteri mesajı gibi görün, sonra tekrarlanan topraklar ve biletleri geri çeviren yeni bir müşteri mesajına benzeyen bir müşteri mesajını yapın. answered. Platformunuzun sinyalini tarayıcınızda Normal olay normalAncak tüketicilerde asla.

Ortada engelleme

Bir ajan bir gönderici blok ettiğinde, bu her zaman geçerlidir every Kanal hemen (e-posta, sohbet, portal, widget ve her konektör ikiz) çünkü blok kesinlikle merkezi bir şekilde yürütülür, herhangi bir bağlantı mesajı görür. Bağışınız hiçbir şey yaparak onu devralır.

Seçmeli yarı isteğe bağlı outboundPlatformunuzu bir müşteri burada bloke edildi. Sadece platformunuzun eşdeğer bir şey ifade edebileceği takdirde uygulamayı uygulayın.

yetenekleri()

Blok_registry ve sınıf BlockRegistryInterface'i uygulamalıdır. Bayrak bir iddiadır; arayüz garantidir.

blockSender($b)

Bir tür (email protected|domain|ip), değer, neden, admin_id, expires_at, site_key. Returns [result, detay?, uzaktan_ref?]

unblockSender($b)

Aynı ücret yükü, tersine çevirilmelidir. idempotent olmalıdır. Hiçbir şeyi engellenmemek hiçbir zaman bir hata değildir.

isSenderBlocked($b)

uzlaşma için, bu yüzden sürüklenme bir müşteri tarafından keşfedildikten ziyade bildirilir.(result, blocked?)

Sonuç değerleri

tamam

Platformunuzda Uygulamalı., bir id değer kaydınız olduğunda uzaktan_ref ekleyin.

noop

Zaten talep edilen durumda.

unsupported

Platformun eşdeğer bir kavramı yoktur. bir hata değil.

başarısız oldu

Bunu yapmış olabilirsiniz ve yanlış gitti. detayı ekleyin; denetim yolundaki toprakları.

Declining doğru bir cevap. Birçok platformda "bu gönderici" konseptine sahip değildir ve sadece ACCOUNT süspansiyonu sunmuyor, faturayı durduran, girişleri ve hizmetleri yalnızca destek postalarından ziyade. Mapping "an agent blocked a spam address" on "close this client's account", bir yanlış tıklatlı bloku sonlandırırsa, bu sadece bir müşteri hizmetleriniz varsa, geri dönüşler ve hizmetlerdir. If that is the only Canon, returns and services rather than just support email. Mapdding "an operator blocked a taxi address" to "close these client'ın hesabı kapat unsupported Ve yalnız bırakın.

Declining ayrıca platformun nerede olduğu durumu da kapsar Can olabilir Bunu yap ama sana izin vermeyecek. Bir an için kontrol APIAncak bir özellik değil: sadece platformun yöneticisi UI'de var olan bir avantaj, bağlantınızın sahip olmadığı bir araçtır.

İşlenmiş örnek · Zendesk ( referans uygulamaları)

Read Oku connectors/zendesk/connector.php alongside this. It is short, and every branch below is a decision you will face too.

e-posta → Tamam

PUT /api/v2/users/{id} with askıya alındı = Gerçek. A askıya alınan son kullanıcının yeni talepleri bir tane açmak yerine Suspended Biletlerine, gerçekten de aynı fikir bir göndereni engellemez ve Zendesk sonunda kullanıcıların hiçbir şey yok.

domain → desteklenmedi

Zendesk tüm bir alan askıya alabilir, ancak sadece askıya alındı: Admin Center bloklist metinarea'daki anahtar kelime ve API bu alanı yazıyor.

ip → desteklenmedi

Hiçbir bilet seviyesi IP bloğu var.

Bilinmeyen adres → noop

Zendesk hiç görmediği bir adrese dayanamaz. Yapmamak için hiçbir şey başarısız değildir ve yerel blok hala bileti durdurur.

Ajan veya yönetici → desteklenmedi

REFUSED. Suspending personeli, bir blokliste ulaşan personelden oluşan bir meslektaşı kilitleyecekti ve bu konuda hareket etmeden önce rolü kontrol etmek daha muhtemel.

Bu son sıra, bir kopyalama değerindedir. Sözleşme sizi yıkıcı bir şeye blok haritalamayı durduramaz, bu yüzden her bağlantının kendisini ne reddedeceğine karar vermesi gerekir. yüksek sesle reddetmeli, bununla birlikte. detail Bir operatör okuyabiliyor, itaat ediyor.

Dürüstçe rapor. Bu satırların kaçının ne kadar olduğunu fark edin okDoğru sonuç, bir boşluk değil: Bir alan bloğu hala çalışıyor (önemli anda uygulanır); sadece dıştan aynalanamaz. ok Yapmadığınız bir şey için, blokun OpsIQ'i terk etmediği zaman platforma ulaştığını söyleyeceksiniz.

Kurallar Kuralları

Yerel blok her zaman kazanır

BEFORE olarak adlandırılır ve geri döndüğünüz her şeyi çizersiniz. Bir operatörün birisini engellemesini engelleyebilirsin.

Asla atma.

Bir at desteklenmez ve kaydedilen olarak tedavi edilir. Geri dönüş, bunun yerine bir detayla başarısız olur, böylece hayatta kalan sebepler.

İdempotent

Aynı blok bir kereden daha fazla açıklanabilir.

Hızlı bir şekilde dön

Fan-out, operatör tıklama ile senkronize edilir. Queue yavaş işi istek açık tutmak yerine.

Geri çağırmayın

Eller'den OpsIQ'a asla yeniden engellenmeyin. Kayıt, ortaya çıkan bağlantıyı atlar, ancak ikinci bir umut döngüyür.

Her duyuru yazılır opsiq_block_registry_log (işlev, tür, değer, neden, yönetici, kökeni, bağlantı yok, sonuç, detay ve zaman damgası) böylece bir operatör bir ajandan ziyade platformunuzdan gelen bir blok görebilir ve her bir konektörün bunu yaptığı şey.

Push eks doğru düzgün

Elini ver. attachments Oluşturmak için dizi()/addReply(). Her öğe dosyayı üç şekilden birinde taşır:

content_b64

The Mirror dosyasının Base64'ü auth (en fazla inbound vaka) arkasındaki dosyalar için kullanın. OpsIQ decodes it and re-hosts the file for you. The most portatif form.

url / kaynak_url

Bir halk https URL (e. g. a Zendesk content_url) https olmalı; bir SSR / izin listesi kontrolü depolandığından önce kontrol edin.

stored_path

Zaten yazdığınız bir depo dosyası referansı (kendi besteci yüklemeci ne üretir).

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 Dosya isimleri sadece (Mezun değil), bu yüzden bağlı desen güvenilirdir: kodunuzun zaten çalıştığı yerdeki astes okuyun ( platform veya webhook ödeme yükünden) taban64 onları ve gemiyi bunları content_b64 Olayda.

Outbound (OpsIQ → platformunuz). Bir ajan bir dosyayı eklediği zaman, ticket.replied Payload size cevabın dosyalarını yanıt olarak verir stored_path Aşağıdaki öğeler altında OpsIQ Dosya mağazası. Onları okuyun ve platformunuzun kendi formatına itin ve platformu kontrol edin, encoding konuları: WHMCS istiyor olmak istiyor base64_encode(json_encode([[name,data]])) (JSON, serileştirilme; Zendesk ham bytes'i yükler /uploads.json Bir token için, sonra setler comment.uploads; Gmail, base64url-encoded RFC-822 mesajını çoklu/karıştırılmış olarak gönderir raw; Amazon SES inbound attachments need the S3 receive action (the SNS path caps at 150 KB).

Uzak platformlar: API + webhook, asla başka bir uygulama masaları

Eğer platformunuz bir ayrı uygulama veya veritabanı (Sanatçı bir SaaS, uzak WHMCS, aynı sunucuda farklı bir DB), Asla masalarını doğrudan yaz: Bir haç-database, bağlantının aktif ve sessiz bir şekilde gerçek sıraları kaçırıyor. outbound = platformun imzasını REST API (repler, statü, bölüm, siller); inbound = Platform POSTs imzalanmış bir webhook, your handleWebhook() Onu ve eşleşen ateşler ticket.* Olay. Bir ayna döngüsünü durdurmak için, bir kaynağı işaretle ne itiyorsunuz (örneğin. g. mirror_origin:'opsiq'); platform webhook'da yankılar ve inbound eller kendi yankılarını atlar. Check OpsIQEvents::isMirroredEvent() Her eller'in tepesinde.

Ayna durumu, önceliği ve bölüm

Bir cevap otomatik olarak durumu hareket eder, bir yanıt acente Cevap → answered, a müşteri Cevap → customer_reply; Aynı şekilde ayna. Açık değişiklikler için abone olun ticket.updated Oku ve oku payload['changes'] (e. g. {status:'closed'}).

Durum: OpsIQ'ın kanonik seti şudur open, customer_reply, answered, in_progress, pending, closed. Platformun sözlüğe küçük iki yönlü bir harita tutun ve sütununuzun aslında yazdığı değerleri kabul ettiğinizden emin olun (an) ENUM Bir değerin eksik olması bazı veritabanı tarafından boş yere düştü. Bölüm: OpsIQ Bölüm id sizin tarafınızda anlamsızdır, Asla göndermez. Resulümlü (a) göndername, email ve slug) ve kendi departmanlarınıza e-posta ile karşı çözme → isim → slug, bu yüzden “Billing Department” topraklar sizin Billing bölümü yerine genel. Her ikisine de teşhir ederim ticket.escalated Ve bir department_id Değişim içinde değişim ticket.updated.

💡
Durum / öncelik / konu / bölüm / silme aynalama per-connector toggles (mirror_status_changes, ayna_subject_changeler, Ayna_department_Changes, Mirror_deletes) paylaşılan OpsIQ\ors'un size yardımcı oluyor. Bu bloku ayarlarınızızdeki Embed.json ve her bilet değiştiricisi aynı şekilde okur.

Bir ürün / hizmet için bir bilet

Müşteri, bileti açtığında belirli bir ürün seçtiyse, bir ipucu bu yüzden ajan odaklanmış bir hizmet kartı görür (diğer ürünlerle ilgili olarak diğer ürünleri” modal ile geri yükleme). Bunu oluşturmak için herhangi birini geçin():

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

Bir platform servisi-code, e.g. WHMCS S396 (servis396) / D11 (domain)11). OpsIQ Seçmeli tip-letter + id ve hizmet listenizi, bir tür bekçi ile eşleştirin, bu yüzden bir alan kodu asla aynı boşluğa bir ürün oynamaz. Expose her servis için tam bir maç için bir eşleştirme ref.

related_domain

Bir alan adı; her hizmetin detay / alanına karşı bir alt olarak eşleştirildi.

💡
Ek liste bir kez inşa edin, yukarıdaki şekilde ve OpsIQ Geri kalanını idare edin: Evlenmiş URLs Takip edilir ve baz64 içeriği sizin için depolanır ve yeniden barındırılır. per-platform dosyası işlemeye asla gerek yoktur.
⚠️
Action keys are lowercase letters, digits and underscores. The Builder accepts 3 to 80 characters and also allows dots; the action store accepts 2 to 100 characters with no dots, so keep to letters, digits and underscores and you satisfy both. Adding an action creates no AJAX route, so there is nothing to regenerate — re-save the connector and it is synced.

AI bunu sizin için inşa edelim

Elle altı adım doldurmanız gerekmez. kendi sözleriyle bağlantıyı ve OpsIQ'ın AI taslağını tüm özellikleriyle doldurursunuz, aynı geçerliciyi kullanarak çalışırsınız ve her şeyden önce planı gösterirsiniz.

Sihirbazda

Kazımlar→+ Ekle Link ekle→Build Link. Adım 1 göreceksiniz ✨ Bunu benim için inşa etLinkin ne için olduğunu yazın - platform, ne OpsIQ Okumalı ve ne yazmalı, kim kullanır - ekle API Eğer bunu biliyorsan ve basın. büyücü drafttan her adımını doldurur ve tam olarak sıraladığınız gibi yeniden gözden geçiriyorsunuz 6 Aynı panel aynı gibi görünüyor ✨ Refine with AIBu yüzden bir değişiklik isteyebilirsin ("ayrıca faturaları da okuyun") düzenleme alanları yerine.

Soru: OpsIQ

Açık açın OpsIQ Yöneticide her yerde bir pilot ve ne istediğini söyle. Bir eylem isim ya da büyücünün var olduğunu asla bilmeniz gerekmez.

1
Bunun için sorun

Örneğin: "Beni Trello için bir bağlantı kurmak. Benim panjurları ve listelerimi listelemeli, kartlar yazmalıdır ve bir gemide kartı yaratmalıdır. Trello bir API anahtar artı token kullanır." Bu konektörü bu bağlayıcı Kart. Mesajınız kısa, bu yüzden platformu koymak, okumalar ve yazı bunu.

2
Tasarıyı Onaylayın

Henüz hiçbir şey yazılmamıştır. Copilot, özelliklerini taslaklar ve planı ile yanıtlar: bağlantı ne yapar, eylemleri açığa çıkaracaktır (önemli olarak yazılır), varsayımlar bunu yaptı ve hala cevap vermek zorundasınız - genellikle hangi bilgiler bir id altında park edilir ve 24 saat boyunca kullanılabilir kalır.

3
De ki: "Onu inşa et"

Copilot bir pilot gösteriyor Yap 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
Bilgiye girin ve etkinleştirin

Yeni bağlantı yayınlandı ancak etkinleştirilmedi ve ayarları açıklamıyor, API anahtara veya token'e gir, basın Test TestiSonra, Etkinleştir. -Yapana kadar, hiçbir şey yapmaz.

💡
Her iki kart da tıklamanıza ihtiyaç duyar. draft adım hiçbir şey yazmaz; inşa edilen adım yıkıcıdır ve her zaman sorar. AI bir bağlantı yayınlayamaz, bir tane etkinleştiremez veya kendi başına bir haçlı giremez.

AI Nedir ve Yapmaya İzin verilmez

Geçerlikçi duvardır

Tasarlanmış bir spesifikasyon aynı doğrulama ile devam eder (köfkenin Publish düğmesine basır). Eğer geçmezse, AI hataları verilir ve tekrar çalışır ve üç kez tekrar çalışır, sonra geçerli olan bir tasarıya asla bir paket olmaz.

Bu, hiçbir bilgi kaynağı yazar

draft, kimlik doğrulama modeli ve ayarları alanları olarak adlandırıyor; asla anahtar, token veya sır icat etmiyor. Daha sonra tarayıcının ayarları sayfasında bunları doldurıyorsunuz.

Sorularla cevap verir, tahmin etmiyor

Bilmediği her şey - hesabınız boş, hangi bölge, planınızın ortaya çıkardığı iki uç nokta – sessiz bir varsayımdan ziyade planın üzerine bir soru olarak geri geliyor.

Bir icat edilmiş uç noktası yüksek derecede başarısız olur

AI asla yolları icat etmeme söylendi, ancak hiçbir model mükemmel değil. yanlış bir yol eylemlerinde hayatını kaybeden bir eylem olarak yayınlar - bu işe yaradığı ilk kez – hiç sessiz bir başarı değildir.

Paket sıradandır

Ne üretiyor normal bir Builder paketi: aynı üretilen dosyalar, aynı sözleşme, aynı imza, sihirbazda düzenlenebilir, eklentiler sayfadan silinemez.

Modeliniz taslak yapar

Kalite, Ayarlar altında yapılandırdığınız modeli takip eder → AI. Küçük, ucuz bir model doğru ama sade bir bağlantı taslağını hazırlar ve daha fazla soru sorar; daha güçlü bir model ilk kez uç noktaların daha fazlasını alır. Bunu AI yapılandırması altında değiştirin; başka hiçbir şey değişmemelidir.

⚠️
Copilot, bu yüklemenin aslında kayıtlı olduğu eylemleri çalıştırabilir. Eğer theLock Builder eylemleri eksikse - onları dahil etmeyen bir plan veya bunları içeren bir rol ya da hiçbir rolü yok manage_connectors - copilot, tıkladığında başarısız olacağını söyleyen bir kart sunmaktan ziyade diyor.
Bağlayıcılar

sohbet yoluyla satış: ticaret rolü haritası

Satabilecek bir bağlantı - bir mağaza platformu, bir rezervasyon sistemi, bir ödeme ağ geçidi – OWN operasyonlarının hangi yanıtını cevaplayacağını ilan ediyor OpsIQ's canonical trade role. Declare it ve konektör Ayarlar altında görünür → Müşteri Sohbeti → Sohbet otomatik olarak satmak; ilan etmeyi bırakın ve yok eder. Kayıt etmek için bir liste yoktur.

Dosya: commerce_roles.json

Açıklama, paketi kökünde kendi dosyasında yaşar - Dosyanın varlığı iddia edilendir. İçinde yaşayamazsın connector_contract.json: Bu dosya ambalaj araçları tarafından yeniden oluşturulur ve şemaları bilinmeyen anahtarlar reddeder, bu nedenle el-added blok geçerli olmaz ve sonra tekrar yazılabilir.

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

Kurallar ve neden her biri var

Roller kapalı bir kelimelik

OpsIQ asla bir eylemden bir rol yapmaz. ilan edilmeyen bir rol mevcut değildir - bütün sözleşmedir.

Operasyon sizin eylemlerinizden biri olmalıdır

Her haritalı işlem sizin içinizde var olmalıdır actions.jsonBir tipo, çalıştıramayacağı bir yetenek ilan ediyor ve "Ben sizin için kontrol edebilirim" diye bir müşteriye yüzeyler.

Bir okuma rolü asla yıkıcı bir operasyonda işaret etmiyor

Rolleri okuyun (catalog, kullanılabilirlik, alıntı, sipariş göz atın) platformunuzda hiçbir şeyi değiştiremeyen işlemlere harita olmalıdır.

Bir yazı rolü asla genel bir kayıt operasyonu haritaları haritalama

Mapping order_create Bir ham masaya eklemek - record.create, db.insert, recordCreateHerhangi bir yazım, herhangi bir seher ayırıcı - yapısal olarak reddedilir. Doğrudan platformun fiyatlarını atlar, hisse kilitleme ve onay postanızı ayırın, kendi sisteminiz için tam olarak inanmaz.

Bir yazı rolü bir kurtarma operasyonu ilan eder

Bir idempotent, “benim yazma arazimi davet etti?” diye cevap verir. En tehlikeli zamanout zaten siparişi yaratmış olabilir; bir kurtarma gözlüğü olmadan sadece seçenekleri yeniden denemeyi veya kaybetmesini sağlamak.

Sağlayıcı-yüz ödeme rolleri üç ekstra yükümlülük taşır

Doğrudan bir ödeme sağlayıcısına konuşan bir paket de aynı zamanda ilan edilmelidir payment_profile (Yeterlilikler, ülkeler, yöntemler ve yöntemler environment - Devletsiz bir ortam, test entegrasyonunun canlı bir ödemeye nasıl ulaştığıdır), webhook_verify (The sağlayıcısın gerçek imza planı; genel bir gizli-kompare reddedilir) ve event_map (İlginç olaylar kanonik olanlara). Sadece uygulayan bir tüccar konektörü record_payment Zaten doğrulanmış kanonik ödeme kanıtlarını alır; ağ geçidi gibi davranmamalıdır.

Müşteriler, bağlantılı bir mağazadan nasıl sipariş edilebilir

Bir tüccar konektörü ve bir ödeme hattı farklı sözleşmelerdir. Connected mağaza müşteri siparişPlatformun kanıtlayabileceği en derin modu seçin. Seçim imzalanmış içeride paketlenir commerce_roles.jsonMağaza ve Müşteri Sohbeti, onu yürütme zamanında yeniden hazırlamaktadır. Bir rol veya bağlantıyı iptal etmek için bu nedenle daha önce verilen bir öneriyi geride bırakmanın yerine geçersiz kılar.

catalog_only

Haritalar catalog_search veya catalog_get. OpsIQ ürünleri arayabilir ve açıklayabilir, ancak bir platform adından herhangi bir kesinti veya çek onay veremez. Her paket bu doğru varsayılan olarak kalır.

platform_checkout

Ayrıca haritalar da quote ve platform_checkout. tüccar eylemi - OpsIQ çekirdeği değil – dönüşler checkout_url, checkout_reference Ve kanonik alıntı. URL HTTPS olmalı, hostname maç olmalıdır customer_ordering.checkout_hosts veya HTTPS ev sahibinden türeklenmiş checkout_host_settingVe alıntı daha fazlası için yaşamayabilir15dakikalar. Bir ürün permalink, yerel olarak monte edilen arabaURLYa da geri dönme veya geri dönüşURLBir tüccar tarafından yazılmış çekout yeteneği değildir.

direct_order

Ayrıca haritalar da quote, order_create ve order_get, with order_create.recovery. Öylemeden önce alıntıyı yenileyin, idempotency anahtarını tedarik edin ve herhangi bir yeniden denemeden önce bilinmeyen her sonuçtan sonra kurtarma işlemine sorun. payment_flow=opsiq_gatewayAyrıca haritada olması gerekir record_payment Bir yazar kurtarma / geri dönüş işlemi ile. OpsIQ aktif olarak ağ geçidi işlem, maç miktarı, para, tüccar ve sipariş referansını kullanarak, sağlayıcı referansı bir kez yazın, sonra satıcıyı fatura/tahımı geri okur. mark_invoice_paid Başarısızlık durumu reddedilir çünkü ödeme kanıtları yoktur. Oluşturulan eylem platformun kendi fiyatlandırması, stok ve sipariş iş mantığına ihtiyaç duyar; ham veritabanı yazar reddedilir.

Kimlik doğrulama ve operatör ne değiştirebilir

OpsIQ ödemeye sahip olduğunda, bir sohbet müşterisi ulaşmak zorundadır email_otp Bir düzen yaratılmadan önce -OpsIQe-postalar bir e-postalar6- Sayısal kod ve bunun için sorar. Bu bir bağlantı optleri değildir; bu, yürütme çekirdeğinin uygulama taleplerinin uygulanmasıdır. order_create.

Bir istisna ve kim onu kontrol eder

Bir operatör, bağlantınızın ilan ettiği SADECE adresi kabul edebilir fulfilment_presence: customer_presentBir otel konuk gelmesi gerekir, bu yüzden yanlış bir adres bir makbulunma ve oda hala orada. Declare remote_delivery - sevk, teslim edildi, indirildi – ve doğrulama operatör setlerinin ne olursa olsun gereklidir, çünkü bu adresin gücü üzerinde değer yalnız kalır. minimum_assurance veya reversibility: irreversible Ayrıca operatörün onu atabilme yeteneğini de ortadan kaldırır.

Kod ne kadar sürer

Varsayılan olarak otuz dakika, operatör yapılandırılabilir5dakikalar için24Saatler. Müşteri, içinde verilen canlı bir sayı görür their own Zaman Bölgesi, operatörün süresi sona ermemiş bir kod bu kadar açık ve geçersiz bir kodu raporlamaktan ziyade yeni bir tane sunuyor - doğru bir kod yazmak yanlış yapmadı ve aynı döngüyü gönderirken onlara yol açtıklarını söyledi.

Müşteri ne sağlamalıdır: müşteri_fields

Ad ve e-posta her zaman gereklidir ve ilk olarak toplanmaktadır. Declare address, phone ve company as required veya optional İşe uygun olmak için: Gemilerin parsels'in adres gerektirdiği bir alışveriş; Bir otel telefon gerektiğini ilan ediyor, çünkü konuk rezervasyon temasını aramadı. Asistan, konuşmadan önce onlara konuşmak istiyor ve OpsIQ gerekli bir alan eksik olan bir sipariş yerine getirmeyi reddediyor.

Hesap oluşturulduğu zaman: hesap_timing

at_order (default) siparişin ilk kez alıcının hesabı oluşturmasını sağlar. Declare before_quote Platformunuzun fiyatları hesap başına olduğunda -WHMCSMüşterinin kendi profili ve müşterinin para biriminde alıntılar - veOpsIQHesabı sizin aracılığıyla yaratır customer_create Gerekli alanların bilindiği gibi, o zaman bu hesap için alıntı sorar, böylece onay kartı aslında faturada toplamı taşır. account_flow: connector_signup.

Asistan getiriyor, okumuyor: müşteri_tools

Oluşturulan siparişler ile, asistan asla geçmiş bir katalog okumaz. Üç araç çağırır - commerce_catalog_search (A boş sorgu, ürün ailelerine genel bir bakış; limitin ötesindeki sonuçlar isim olarak listeleniyor), commerce_catalog_get Tam olarak bir öğe için ve commerce_quoteAncak imzalanmış onay kartı sunucunun aynı duvarların üzerinden her zaman vardı. fiil başına bir araç, altı konektör ile bir mağaza on sekizden daha fazla üç alet alır. client_tools Varsayılanliği kısıtlar; her haritayı tek ve bir şekilde haritaladı. catalog_only Bağlantı asla alıntı yapmaz. Onay hiçbir zaman bir araçtır: kartın düğmesine, tam olarak CONFIRM Bir kanala komuta et ve bir model para harcar diyor.

Katalog öğeleriniz ne taşımak zorundadır

id, name, bir müşteri güvenli summary, a category veya ürün ailesi (bu, bir müşterinin kelimesinin adı kod olan bir öğe bulduğudur), currency, unit_amount_minor, availableVe input_schema Alanları bir siparişin ihtiyaç duyduğuna isim, aile, döngü ve özete karşı müşteri sözlerini listeler.

Müşterinin hareket edebileceği bir sebepten dolayı refüzyon

Return {"success":false,"error":"…","missing":["domain"],"retryable":true} Bir değer yanlış olduğunda veya eksik. isimlerin bu isimleri reddetme missing veya retryable Müşteri fiilatim'e ulaşır; çıplak bir başarısızlık, iç sızıntıları olmayan bir şey için genel olarak kalır.

Geo para ve acil durum durmuyor

When the operator turns on Geo currency (Client Chat → Behaviour), the customer reads prices in their own currency on every surface — chat text, the web card, the channel text card and the storefront’s opening currency — using the platform’s own FX store. Your price is never substituted: the card shows the visitor’s figure beside the store total, and the gateway processes exactly the amount it displays. Pause all sell (Resulüm → Commerce) öldürme geçişidir: katalog, alıntılar ve görünümler açık kalır; her kanalda durmayı teklif eder ve onaylayın.

sohbet yoluyla satış yaparken, davranmaz

tüccara ulaşılamadı

Paketin mühürü kırıldı: Bir dosya imzalanmasından sonra düzenlenmiş bir dosya düzenlendi. Oluşturulmuş bir pazar kopyası asla yerinde düzenlenmez; market panelinden güncellemek.

Sipariş etmek şu anda bu mağaza için duraklanır

The kill switch is on. Settings → Commerce → Pause all selling.

Sipariş henüz bu kanalda mevcut değil

Kanal, müşterilerin satın alabileceği yerde kenetlenmez. sunucu log kanal adı.

Asistan bir öğe anlatıyor ama kart görünmüyor

Alıntı aracı reddetti. Her çağrı, olarak giriş [opsiq][commerce][client_tool] Bunun nedeni ile: yanlış bir eşya id, bir alan eşya ilan etmez, alınan bir alan veya tüccarın kendi reddedilmesi. Yöçeği güvenmeden önce girişi okuyun.

Asistan ürünleri göremediğini söylüyor

Sayfa başka bir çalışma alanına ait. Her web sitesi widget tek bir iş alanına aittir ve mağaza konektörü orada etkinleştirilmelidir.

Bir cevap yerine bir cevap iptal etti

“Bana ihtiyaç duyduğunuz şey hakkında biraz daha fazla şey söyleyin”, AI sağlayıcısının kendisini başarısız etmesi anlamına gelir; AI History bu dönüş altında tam hatayı gösterir ve araçlar asla ulaşamadı.

Bir bağlantı düzenlemesi sohbette göstermiyor

İşçi bir dakika içinde kod değişikliği üzerine geri döner, ancak bir konuşma son kartını tekrar oynatır. test etmek için yeni bir sohbete başlayın.

Nijeryalı bir ziyaretçi, Geo paranın üzerinde olmasına rağmen dolar görüyor

Jeo-Köpek'nin kontrol ettiğini kontrol edin.IPVeritabanı yapılandırılmıştır (Client Chat→Geo) ve ziyaretçinin para biriminin bir FX oranına sahip olmasıdır; hız olmadanOpsIQMağaza fiyatını yanlış bir sayıdan ziyade gösterir.

Toplamınız para hareket eden tek rakamdır

Bir alıntı taşır unit_amount_minor, quantity ve total_amount_minorAncak, üçüncüyü ilk ikisinden elde edilebilir olarak tedavi etmek caziptir. Bu değil ve zaten bir müşteri gerçek paraya mal olduğunu varsaymaktır.

quantity CUSTOMER'in seçtiği şey - bir oda, bir lisans, tek politika. Multiplieriniz bir şeyler olabilirOpsIQAsla görme: geceler, koltuklar, billing döngüleri, mesafe, ağırlık, tiers. Bir otel üç gece boyunca bir oda sunuyor1, birim105,000, toplam315,000. OpsIQBir onay kartına miktar ile çarpıtılmış bir birim, misafire konuk oldu105,000Ve sonra da şarj etti315,000tüccar aslında geri döndü. Bir rakama katılmak ve başka bir şey bu sözleşmenin yapabileceği en kötü şeydir.

Kuralı

total_amount_minor Sadece OpsIQ şovları, işaretler, suçlamalar ve karşı uzlaşıcılar. unit_amount_minor Çizgide bir ekran detayı var. Eğer toplamınız tam olarak ne istediğini değilse, alıntınız yanlış - OpsIQ doğru olmayacaktır, çünkü yararlı ayarlanan toplam asla onurla kabul edilmez.

Bu, alıntı eylemleriniz için ne anlama geliyor

Tüm figürünüzü geri dönün. Kendi gecelerinizi uygulayın, tiers, indirimler, vergiler ve ücretleri cevap vermeden önce. Eğer çizginiz uzlaşmazsa - birim kez bir numara asla toplamınızı eşitlemiyor – OpsIQ, tüm şeyi gerçek fiyatına bir şekilde herhangi bir şeye uzlaştırırsak bir hata icat etmek yerine getiriyor.

Bu sözleşmeyi yapan altı cevap herhangi bir endüstriye sığacak

Yukarıdaki bildirim bir mağazanın bildirimi olarak başladı: Bir şey satın alın, şimdi ödeme yapın, o dört kişiden biri gerçek bir iş paylaşmaz. Bir banka hareket parası kendi müşterilere teslim edilemez veya tüm faturalara bağlanamaz.

Bu yüzden bir işlemsel bağlantı altı soru daha cevap verir. Her bir varsayılan katı okumalara - hiçbir şey her zaman güvenli ve asla izin verilmez, çünkü bir yazarın soru olarak kabul etmediği şeyler değildir.

transaction_kind

purchase, booking, subscription, bill_payment, transfer, application, top_up, renewalDavranıştan ziyade Vocabulary: Müşterinizin okumasına karar verir. Bir tel transferini bir " sipariş" çağırın, iş hakkında konuştuğu gibi yardımcı sesi yapar ve bu gecikmeli suların miktarı yoktur. purchase.

decision_mode

immediate veya deferred. Select deferred Yazının altında, kredi değerlendirme, referanslar veya komiteye giden her şey için. OpsIQ sonra diyor ki Gönderilen teklif rather than OnaylandıAncak, bunu sormak için referansın üzerinde ve eller. Birinin başvurularını anlatması, bir insan ile otururken bir sohbet asistanının organize bir iş için yapabileceği en zararlı şeydir ve her perakende şekilli akış varsayılan davranışıdır. immediate.

payment_timing

on_confirmation, deposit_then_balance, invoice_later veya no_payment. Bu, OpsIQ 'ın bir ödeme sayfası açmasına karar verir Her şeydeAma bu yüzden, yemin edilemez payment_flow - Bu diyor ki kim Parayı alır, bu diyor Ya da ne zaman ve ne zamanDaha sonra faturada çalışın ve hiçbir şeyin teslim edilmesi için maliyeti olmayan uygulamalar, boş veya yanlış olan bir ağ geçidi listesine ulaşma yerine onaylayın.

reversibility

reversible veya irreversibleBir finansal bağlantının en önemli şey serbest bırakılabilir ve bir parsel geri gelebilir; tamamlanmış transfer yok - başka bir sonda para var ve tek çare geri dönmek için yabancı soruyor. irreversible Otomatik olarak kuvvetler otomatik olarak güçlenir cancellation_flow tom için none Ve kimlik doğrulamasını atmaktan herhangi bir operatör yasaklar, Başka bir deyişle, bu bildirim ne diyorsaİki alan aynı fikirde değildir, her zaman okunmaksızın ilk önce tekrarlanan iş zamanında çözmek için bir devlet değildir. reversible.

cancellation_flow

none, platform_only veya connector_cancel. iptal rolleri zaten onlara ulaşabilecek bir kuralla var olmadı ve iki yanlış tahminler ters yönde başarısız oldu: açık ve sohbet mesajı, herhangi bir ücret alıntısı ile ücretli bir rezervasyon iptal etti; tahmini kapalı ve iptal etmek isteyen bir müşteri telefona söylendi. connector_cancel Ayrıca, aynı zamanda gerektirir cancellation_quote ve order_cancel Bir kurtarma ile - OpsIQ maliyetinin ne olduğunu söylemeden önce asla iptal edilmez. Varsayılanler none.

fulfilment_presence

customer_present veya remote_delivery. Yalanılmamış bir e-posta adresi herhangi bir şeye mal olabilir. Otel konuk gelmesi gereken bir otel, bu yüzden bir davet ve oda hala orada; bir gönderilen parcel, geçici sunucu veya indirme bağlantı sadece bu adresin gücü üzerinde bırakır. Bu, bir operatörün "kap e-posta doğrulama" ayarının mevcut olduğu şeydir.Ve onlar tarafından seçilmeden ziyade sizin tarafınızdan ilan edilir - bu yüzden bir otelin nedeni, gemilerin mallarını teslim etmek için asla miras alınamaz. remote_delivery.

minimum_assurance ve disclosure (isteğe)

minimum_assurance talep etmenize izin vermenize izin verir Daha fazlası daha fazla OpsIQ 'dan daha fazla kimlik kanıtı, asla daha az değil - bir transfer için adım atması sözleşmeyi kullanıyor. Ayrıca bağlantınız için doğrulamayı atlatmak için bir operatörün yeteneğini ortadan kaldırır çünkü bir tüccarın kendi risk kararının bir operatörünün rahatlığıdır. disclosure Gösterilen kelime Daha önce daha önce daha önce Onay düğmesi, bir fiyat için, bir ücret veya soğutma hakkı sunmak zorundasınız; olmadan, organize işletmeler ürün adına zorunlu kelime gerekir.

notify_flow

platform_automatic, platform_triggered veya noneOpsIQ, kendi çekinizi asla çalıştırdığında, normalde e-postaların hiçbir zaman yangın yapmadığı her şeyi alır; ödeme siparişi ödediğini söylemek için platforma engel olmaz. platform_triggered gerektirmektedir. order_notify Bir kurtarma ile rol ve OpsIQ sadece ödeme okumasının ardından para kaydedildiğini soruyor. Declaring none OpsIQ-side onayı zorunlu kılar, çünkü aksi takdirde müşteri hiçbir şey duymamaktadır. none.

Aynı sözleşme, dokuz ilgili işletme

Bunların hiçbiri etrafta tasarlanmamıştır. Her biri, farklı bir endüstri için dürüstçe cevap veren sözleşmedir, OpsIQ bunlardan herhangi birini bilmiyor.

Bir sözleşme, dokuz endüstri
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
platformlara sağlanan ücretli olay

Bir yerel Mağaza ön ödemesi aktif olarak doğrulanır ve işlenir, OpsIQ yaylar payment.completed with order_id, payment_id/provider_ref, gatewayTamam, amount_minorISO currency, müşteri, hat öğeleri, kanal ve paid_atBir tüccar konektörü bu kanıtları takip etmelidir record_payment Geri oku; ev sahibi bir çekçi konektörü kendi yazara ücretli etkinliğini tüketiyor ve tekrar ödeme yazmıyor.

AI bir önerici değil, bir otorite kaynağı değildir

Model, ilan edilmiş bir ürün ve miktar seçebilir, ancak bir operasyon adı seçemez, çekout URL veya metinden devlet tüccarı oluşturabilir. Müşteri tam imzalanmış bir kart alır ve onay düğmesine basınmalıdır. Bu onay iş alanına bağlıdır, bağlayıcı, maddeye, alıntıya, alıntılara, paraya, iplike ve expiry'ye bağlıdır.

Sosyal müşteriler, bir e-posta olmadan aynı akışı tutar

WhatsAppPeygamber,Instagram, Telegram, LINE, SMS ve X müşteri kimlikleri olarak sağlayıcıya dayalı kanal hesabı kullanır. Öneri o kanal hesabına imzalanır ve onay hala aynı taze alıntı, stoklar, idempotency, ödeme ve kurtarma kontrolleri yoluyla çalışır. sosyal bir müşteri konuşmalarında tam zamanlı bir onay işlemi kullanır; “evet” gibi sıradan prose asla yetki sipariş etmez.

Sipariş tarihi tam bir kimlik bağlantısı izler, asla e-posta tahmini

Yerli siparişler bir opak kanal kimliği tarafından endekslenir, bu yüzden AI “tarafımdaki” cevap verebilir; bir e-posta veya sipariş numarası talep etmeden veya bağlantı noktası için iletişim kurmak için, kanalı kimlik ile iş alanı CRM/client kaydı ve uygulama yazara / sipariş kartınızı doğrudan bağlantıya sokmalıdır; hiçbir tarih bağlantılı değildir.

Paraload evrensel yapın: tip alanlar ve bir sunucuya ait kimlik

Core, WHMCS, otel, SaaS, mağaza, banka, ürün, rota veya satıcı şubesi içermektedir. parameters Müşteri formu ve AI slot şeması. Bir rezervasyon konektörü tarih ve konuk ilan edebilir; bir faturalama bağlayıcısı bir döngüyü söyleyebilir; gelecekteki bir kurumsal bağlantı kendi güvenli alanlarını ilan edebilir. OpsIQ, ancak toplanan değerleri yalnızca haritalanmış bağlantı eylemine gönderebilir.

Türlü alıntı eylemi
{
  "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"}]}
  ]
}

- Neden? clients_only, set customer_ordering.identity_parameter Bağlantının dış müşteri idini alan eylem parametresine asla gösterilemez. Bu alan hiçbir zaman bir müşteriye ve herhangi bir çağrılı değerin kaldırılmasına işaret edilmez; OpsIQ sadece doğrulanmış bir bağlantıdan gelen boşad. Guest checkout onu boş bırakır. Bir tür e-posta, bir giriş değil ve satın alma yetkisine sahip değildir.

Gruplanmış domainler: İmzalanan müşteri hesapları ve bağlantı yapılandırması gruptan yoksun portal çalışma alanına ait. Ancak, kimlik token, bu üyenin webhook sırrını kullanarak tam üye sitesi için imzalanmalıdır.OpsIQBu yüzeyi ilk önce ve sadece sonra ticaretle ve bağlantılı müşteriyi grup birincil aracılığıyla çözer. Üye siteyi ana anahtarla değiştirmeyin ve asla bir üye siteye birincil sırrı kopyalayın.

Canonical zarflar bağlantı geri dönmeli

Kataloğu
{
  "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"}
  }]}
}
Alıntı
{
  "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"
  }
}

Platform-checkout yanıtı geçerli kanonik alıntıyı tekrarlar ve HTTPS ekliyor checkout_url. Onaydaki alıntıyı yeniletir ve para birimini karşılaştırır, toplam ve istikrarlı bir seçim tam olarak. Bağlantı bu zarflara platform yanıtını verir; temel asla satıcı alanları veya tüccar URL'ı inşa etmez.

Yerli Mağazada mevcut bir operatör-yapım noktası yapın ve sohbet edin

Ödeme yeteneği yalnızca müşteriler önünde bir ağ geçidi koymayız. Enable the Payment skills alone does not put a gateway in front of customers. Yerli Mağaza ödeme ağ geçidi Blok InLock Builder. Açık bir versiyonlanmış sözleşme ekliyor, haritalar yaratılması ve aktif ödeme görünümü ve sağlayıcıya ev sahipliği yapan çek domainlere izin veriyor. Bağlantı kurulduktan sonra, etkinleştirilen ve Ticaret ayarları altında seçilen aynı ağ geçidi, müşteri-chat checkout ve özerk kontrol noktasında görünüyor.

Yerli Mağaza Gateway sözleşmeleri
{
  "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"]
    }
  }
}
Canonical checkout çıktı

Kontrol eylemi haritaları checkout_url Ve, sağlayıcının bir tane olduğunda, session_id. URL HTTPS olmalı, hiçbir bilgi içeriyor ve bir izin verilen ev sahibiyle eşleşmek gerekir.

Canonical status Çıktı

Durum eylemi taze bir sağlayıcı API görünüm ve haritalar gerçekleştirir paid Gerçek bir boolean olarak, amount_minor Tam olarak, currency Üç-letter ISO kodu olarak ve provider_ref. Bir geri dönüş URL, sorgu dizesi, müşteri ödeme yükü veya bağlantı destekli “konuyu teyit edilmiş” talimat asla ödeme gerçek değildir.

Seçmeli geri ödeme sözleşmesi sözleşmeleri

Ağ geçidi geri ödemeleri desteklerse, harita payment_refund Ve onun kurtarma eylemi. Reund oluşturma katı geri döndürür accepted ve completed booleans artı provider_refkurtarma bir sağlayıcı görünümü gerçekleştirir ve döndürür statusHer iki eylem olmadan, OpsIQ bağlantı geri ödemelerini reklamlamıyor.

Kim siparişi doğrular

Bağlantı asla bir şey yazmazOpsIQsipariş durumu.OpsIQGeri kalan miktarı ve para birimini tam olarak karşılaştırır ve sağlayıcı referansını kaydeder; ancak sonra temel sağlayıcıya açık geçiş yapar. Manual banka transferi, adı verilen bir acenteyi onaylayabilecek tek akış kalır.

Inws Builder, tick commerce, rolleri haritalayın ve yapılandırın Connected mağaza müşteri sipariş, Yerli Mağaza ödeme ağ geçidiAncak, ya da her iki sözleşmeyi gerçekten sağladığında sihirbaz bildirimi doğrular ve yazar commerce_roles.json. Yayıncılık hala normal pazar inceleme ve imza sürecini kullanır; bu sözleşme asla paket doğrulamayı atamaz veya yüklemez bir bağlantı yapar. Herhangi bir paketi elle birlikte herhangi bir paketi siparişle birleştirin php tools/verify_commerce_contracts.php.
💡
Ulaşımdır http Uzak bir API veya bridge Bir köprüde isimlendirilmiş bir işlem için (aşağıdaki NO-API deseni bakınız). Roller ulaşım-agnostic; runtime sadece bir köprüyü sürümletebilmeli.
Bağlayıcılar

Bir bağlantı kurmak için sohbet edin: Eylemler ve Tesir

Yukarıdaki ticaret sözleşmesi bir bağlantı paketi gerektirmez. Platformunuz kendi - özel bir arka ofis, iç API, bir sistem hiçbir şekilde bağlayıcı değildir – aynı ödeme çekirdeğiyle aynı satış makinelerine ulaşabilirsiniz; çünkü sadece eksik olan tek şey paketin üçüncü taraf kodu yoktur.

Nasıl birlikte uyuyor

Ticaret rolü için özel bir eylem inşa edersiniz – her biri sizin tarafınızda açık bir HTTPS uç noktası, altında tanımlanıyor AI & Otomasyon → Actions URL, auth Title ve parametrelerle. o zaman haritaların bu eylemlere rol oynadığını bir açıklama kurtarıyorsunuz. O andan itibaren mağazanız tam olarak bir bağlantı geri dönüş gibi görünür: AI alıntıları AI alıntılarından alıntılar sizin Alıntı eylemi, onay kartı verir, müşteri e-postalarını doğrular, sipariş çekirdeği aramaları sizin order action with an idempotency key, OpsIQ takes payment through the workspace gateways, and sizin Kayıt-ödeme eylemi kitapları bunu. Müşteri deneyimi hakkında hiçbir şey "kutom" diyor.

Açıklama : The deklarasyon

Bu JSON iş alanı ayarı olarak Kaydet commerce_custom_integration (Settings→Gelişmiş ayarlar veya REST ayarları aracılığıylaAPI) Aynı şekli bir paketin olduğu gibi. commerce_roles.json Ticaret hayırde, bununla action Özel eyleminizin boşluğunu isimlendirin:

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

Son olarak, ekleyin custom_commerce Bağlantılar, Ayarlar altında satmak için etkinleştirildi→Müşteri Sohbeti→Sohbet yoluyla satış. Kabul tekrar kontrol edilir every Talep ve mağazanızı sessizce saklamanın nedenleri ile reddediyor: modunuz haritaların hiçbir şeye ihtiyacı yoktur, bir kurtarma eylemi olmadan bir yazı (§15.7 - sonucun reddedilemeyeceği bir yazı), kurtarıldığınız veya devre dışı bırakılamayacağınızdan beri silinen bir eylem.

Her eylem ne yapmalı

Döndürmeyi geri döndürün

Yanıt {"success": true, "data": { ... }} - veya {"success": false, "error": "a sentence a customer may read"}. Sizin eyleminiz Cevap başarı yolu zarfta işaret etmeli.

Alıntı: Tüm toplam, küçük birimlerde

Return quote_id, product_name, quantity, unit_amount_minor, total_amount_minor, currency, selection, selection_summary, expires_at. Yukarıdaki "toplam" bölümündeki her şey fiilatim için geçerli olan tek rakamdır: vergiler, ücretler ve multipliers toplamınız INTO'ya girer, çünkü toplamınız imzalanmış, gösterilen ve ücretlendirilir.

Sipariş oluşturma: idempotency anahtarını onurlandırın

You receive you receive You a idempotency_key, İmzalanan total_minor ve currencyDoğrulanmış olan, customer_emailVe kendi alıntı parametreleri. Siparişle anahtara sahip olun; Eğer zaten bunun için bir sipariş yarattıysanız, ikinci bir tane yerine bu düzeni geri dönün. Parayı ifade edin - eğer sistem toplamı dışında sipariş fiyatları farklısa, tekrarlayarak, aşağı yukarı doğru geri dön. reference Platformunuz kabul eder.

Kurtarma: BİR yazı hakkında cevap

order_by_key idempotency anahtarını alır ve cevaplar {"found": true, "order": {...}} veya {"found": false}. found:false bir sözdür - OpsIQ, bunun gücü üzerine yazarak yeniden çalışabilir. Bir durum beslemesi veya son siparişler listesi bir yazı hakkında cevap değildir.

Kayıt ödeme: kendi yerleşim yolunuzu

Ağ geçidi işlemi idempotency anahtar artı sizin sipariş referansı olarak alın, OpsIQ ağ geçidi ile aktif olarak doğrulanmış miktar ve para birimine sahiptir. Mark the order paid through your platform's own logic - fire your own email, reduce your own sto. platform_notified: true Platformunuz müşteriyi e-postalsa.

Kart girişleri eylem parametrelerinizden gelir

QUOTE eylemine ( kimlik parametresini) ilan ettiğiniz herhangi bir parametre, AI'nın toplanan onay kartında müşterinin kendilerini dolduracağı gibi yapılır - bir alan, bir tarih, bir koltuk. Label them well; etiket müşterinin okudukları şeydir.

Tesirler: kendi satışlarınızı duymak

Paylaşılan olay otobüsünde iki olay yangın, bu yüzden webhooks ve otomasyonlarınız her sohbet satışının nerede yapıldığını duyuyor:

commerce.order.created

Şu anda, ödemeden önce tüccar tarafında sipariş toprakları – referans, bağlantı (veya custom_commerce), miktar, para, müşteri e-postası, iplik boş.

commerce.payment.confirmed

Tam olarak bir kez siparişe, ağ geçidi aktif olarak ödemeyi onaylarken. Aynı iddiayı tekrar makbuzları önlemek için sürüyor, bu yüzden webhookunuzu iki katına çıkaramaz.

Bir bağlantıya ne zaman mezun olun

Özel entegrasyon iş alanı yapılandırması: mağazanıza hizmet ediyor, çalışma alanınızda. Bütünleşmeyi dağıtmak istediğiniz an - diğer iş alanları, pazar, sürümleme, imza, ücretli taksiler – aynı eylemleri ve aynı bildirimi bir bağlantı olarak paketleyin.

Bağlayıcılar

NO API ( köprü modeli) olan bir platforma bağlanın.

Plenty of real platforms ship no REST API at all. A hotel CMS, an old billing system, a bespoke internal tool. You can still write a complete OpsIQ connector for one: the connector ships a single PHP file that the operator drops into their own public webroot, and that file IS the API. This page is the whole pattern, with the rules that make it safe to run and the reason behind each rule.

Bunun şekli

Normal bir bağlantı başka birinin API. Bir köprü konektörü kendi başına getiriyor: Aynı eylemler, aynı bağlam sağlayıcıları, aynı kimlik sözleşmesi, aynı paket düzeni.

1
Bir PHP dosyasını yazıyorsunuz

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
Operatör webrootlarına kopyalar

Platformun kendi indeksine. php. No platform kodu değiştirilmiş, hiçbir eklenti yüklü değildir, platform yükseltmeleri için hiçbir şey yoktur.

3
Bağlantı paneli onları dosyayı elletir

Ayarlarınız.json webhook_help. snippet_template. Bağlantı sayfası zaten yerini alan canlı ayarları ile kopyalanabilir bir dosya olarak verir, bu yüzden el-edit için hiçbir şey yoktur.

4
OpsIQ, sunucu-to-server

Müşteriniz GET isteklerini X-Opsiq-Bridge-Key başlığında paylaşılan anahtarla gönderir. temel URL ayar platformun kökdür.

Links Builder bunu şimdi sizin için üretebilir. "Platform'u hayır ile seçinAPI" profil (veya köprüye veri erişimi ayarla) ve köprü dosyasını, eşleşen panel ve onu okuyan eylemleri yayıyor - bir Laravel başvurusu için .env'i okuyor, çünkü onun .WordPresswp- yapılandırılmış.php okumak veya başka bir şey için salladığınız bilgilerle. Bridge modu düzeltmeleri kimlik doğrulamasını düzeltiyorOpsIQKöprü protokolü: Bağlantı güvenli şekilde üretir api_key etkinleştirildiği zaman, onu gönderir X-Opsiq-Bridge-KeyVe aynı tasarruf değerini aynı şekilde birbirine bağlar OPSIQ_BRIDGE_KEY Kopyalanabilir dosyada Hand-writer sadece platformunuzun hiçbiri olmadığı zaman veya üretilen köprünün kapsamadığı davranışlara ihtiyacınız olduğunda. el yazmalı bir köprü sihirbazdan güvenlidir: yalnızca kendi işaretini taşıyan bir köprü dosyasını yazmaktadır.
💡
Bu sayfada her şey PHP'de PHP'ye karşı gösterilirMySQLÇünkü bu referans uygulaması ve ambalaj boru hattının tamamen desteklediği tek kombinasyondur. Modelin kendisi dil-agnostic ve motor-aretikdir: Node, Python, Go, Ruby, .NET ve Java'daki kapı için "Diğer dillerde köprü" bakınız.PostgreSQL, SQLServer,SQLiteve Oracle, veMongoDBeşdeğer - Ambalaj kısıtlaması ile birlikte, bir non-PHP köprüsünün operatöre nasıl ulaştığına karar verir.

Güvenlik modeli ve her kuralın neden orada olduğu

Bu dosya, paylaşılan bir anahtarın arkasında halka açık bir webroot'da oturuyor. Bu tek gerçek aşağıda her kuralı kullanıyor. köprünüzü daha basit hale getirmek için bunlardan herhangi birini rahatlatmayın.

caller asla SQL

Bir WHERE koşulu değil, bir ORDER BY parçası değil, "sadece bu kez" ham sorgu parametresi değil. Bir masa, bir sütun ve değer; Dosyanız ifadeyi inşa eder. Şu anda bir caller katkıda bulunabilir SQL text, tek bir anahtar da eğlenceli veritabanı yürütme olur.

Masa ve sütun isimleri bilgi_schema'ya karşı doğrulanır

Identifiers parametreler olarak bağlanamaz, bu yüzden bunun yerine kontrol edilmek zorundalar. Bu veritabanı için gerçek masa ve sütun listesini okuyun ve bunu yapmamak için hiçbir şey reddetmezler. Bu şemanın gerçek bir nesnesi o zaman her tabloyu açığa çıkarma konusunda güvenli kılan bir soruya ulaşamazlar.

Her değer, bir eş parametredir

Bir aramanın içindeki değerler dahil olmak üzere istisnasız. Geçerli tanımlayıcılar artı sınır değerleri, yüzeyin toplam ve enjeksiyon yüzeyi nil yapan çifttir.

Okular evrenseldir, yazar izin listelenmiş

Bir sonraki bloka bakın. Bu, çoğu insanın atmasını istediği kuraldır.

Gizli sütunlar okumaya kırmızıya uyarılır ve yazmaya reddedilir

Köşeye maç NAME: parola, remember_token, sır, api_key, private_key , tuz, token. Tamamen yolda bir yer sahibi ile değeri değiştirin - bir ham şifre yazmak bir operasyon değildir, bu da bir ayaklı akıştır.

Deletler tek başına yapılır, birincil anahtar tarafından

Asla bir yığın silin, asla filtre tarafından silmeyin. Bir toplu taşıma veritabanının nasıl öldüğünüzdir. Eğer birisi gerçekten birine ihtiyaç duyarsa, bunu platformda yapabilirler.

Okular sıralanıyor

Limit parametreyi zor bir tavanla çizin. Bir runaway sorgu, veritabanını sohbet mesajı aracılığıyla boşaltamaz.

Anahtar ayarlandığından kadar başarısız kapalı

Yapılanmamış bir köprü, her şeye 403 cevap verir. yapılandırılmadan önce yardımcı olan bir köprü yabancıya faydalı olan bir Köprüdür.

Constant-time key Karşılaştırma, bir başlıkta anahtar

hash_equals, Never ==. anahtar X-Opsiq-Bridge-Key'de değil sorgu dizesi değil, bu yüzden erişim loglarından, proxy loglarından ve Referere başlıklarından uzak kalır.

GET sadece

Bir yöntem, bir şekil, bir vücutta kaçak için hiçbir şey. köprünün her şeyi doğrulama parametreleri ile GET olarak ifade edilebilir ve OpsIQ tek çağrıcıdır.

Evrensel okuyun, izin verilen yazar - ve neden

Bu, tartıştığı kuraldır, bu yüzden burada tam olarak düşünülmesidir. Yardımcının tüm platformu SEE'ye eşdeğer olması gerekir: Bu, faydalı kılan şeydir ve bir okuma başka bir şey yok edemez. Yazlar farklı değildir. Bu dosya hala bir masaya ulaşamazsa operatör hiçbir şekilde etkinleştirilemez.

⚠️
OpsIQ onay kartı AI'yı kapıları, anahtar değil. admin yıkıcı bir eyleme izin vermek yardımcı üzerinde kontrol değildir. köprü anahtarına sahip olan her kim için bir kontrol değildir ve bu iki farklı tehdittir.
Operatör-ışın knob, Botble köprüden
/* ── 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';

Aşağıdaki kontroldeki iki detay yanlış almak kolaydır. Masa adı zaten RESOLVED'ye gelir, yüklemenin masayı ekle taşırken, bir operatör izin listelenmemiş yazar çünkü her iki şekilde veya önceden belirlenmiş bir yük ile karşılaştırıldığında, hiçbir şey ve her yazı molasına izin verir. Ve reddedilme kendini açıklamalı, çünkü kişi onu okumak bir sohbet penceresinde bir geliştirici değil, bir yığın izi olan bir geliştirici değildir.

İzin listesi kontrol, market_connectors /botble/bridge/opsiq-botble-bridge. php
/** Tables a WRITE may touch. Empty = the built-in defaults. */
$writeAllowed = static function (string $table) use ($prefix): bool {
    $raw = trim((string)(defined('OPSIQ_WRITE_TABLES') ? OPSIQ_WRITE_TABLES : ''));
    if ($raw === '') $raw = 'ht_bookings,ht_booking_rooms,ht_rooms,ht_customers,customers';
    if (trim($raw) === '*') return true;                     // explicit opt-in to everything
    $bare = ($prefix !== '' && stripos($table, $prefix) === 0) ? substr($table, strlen($prefix)) : $table;
    foreach (explode(',', $raw) as $t) {
        $t = trim($t);
        if ($t === '') continue;
        if (strcasecmp($t, $table) === 0) return true;
        if (strcasecmp($t, $bare)  === 0) return true;
        if ($prefix !== '' && strcasecmp($prefix . $t, $table) === 0) return true;
    }
    return false;
};

/** One refusal, one explanation — used by every write op. */
$requireWritable = static function (string $table) use ($writeAllowed): void {
    if ($writeAllowed($table)) return;
    opsiq_bridge_out(['success' => false, 'error' =>
        'write_not_allowed: "' . $table . '" is not in this bridge\'s write allow-list. '
        . 'Reads are unrestricted. To permit writes here, add the table to OPSIQ_WRITE_TABLES '
        . 'in opsiq-botble-bridge.php (or set it to "*" to allow every table).'], 403);
};

The gate, in full

Bu sırayla, herhangi bir şey veriye dokunmadan önce dört çek. siparişi ve kontrolleri kopyalayın.

Dört kapı kontrolleri, sırayla
<?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. */

Bilgiye karşı tanımlayıcıları doğrulama_schema

Bu, “öğrenme güvenli bir şekilde herhangi bir masaya ulaşabilir” diye dönen parçadır. Aramacının masa adı gerçek şemaya karşı, eksik veya ekstra tablo ekine ve başka her şey için null geri döndürür.

Identifier validation and redaction, Botble köpründen fiilatim
/** 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;
};

Okunma ve bir yaz af, Tamam

Neye bağlı olduğunu ve doğrulananı unutmayın. Filtre sütunu gerçek sütun listesine karşı kontrol edilir ve sonra bir tanımlayıcı olarak arayılır; değeri sınırlıdır. Limit parlanır. Rows kırmızıacted on the way out. The update goes the primary key and any auth column, and puls update_at when the table has one.

Herhangi bir tabloyu okuyun - doğrulama tanımlayıcılar, sınır değerleri, kaplanan sıraları
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,
    ]]);
}
Bir satır yazın - izin listelenen masa, auth sütunları reddetti, birincil anahtar tarafından tek sıra
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)),
    ]]);
}

Şaşırtıcı şema farklılıkları

Platform versiyonları farklıdır. Köşeler hareket eder, yeniden adlandırılabilir veya eksik değildir. Bir şemanın bir yükleme üzerinde çalıştığını varsayar. Introspect ve adapte olun: Burada var olan sütunları sadece tablo ekine ekleyin ve referansın makul büyülerini deneyin.

Schema toleransı, Botble köprüden
/* 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));
💡
Köprünüzü sadece STRUCTURE'yi rapor eden bir af=diag verin - hangi tablolar çözüldü, ana masanın hangi sütunları var ve her dijital maske ile en yeni referansın SHAPE. Her şey gibi anahtar-anıyor ve "bakış on saniyelik bir cevapa destek bulamadı"

Üniforma hataları ve enumerasyon tuzağı

Her şey için bir şekil

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.

Esas ve hiçbir maç aynı olmalıdır

Bir göz yüzeyinde, herhangi bir hasta için ücretsiz müşteri listesi ihracat olan referanslar ve hiçbir şekilde eşleşmemesi gereken bir referans SAME cevabı üretmek zorundadır. Farklı cevaplar köprünüzü gerçek olan veyaacle'a döndürür.

Bir ziyaretçiye neden asla sızdırmayın

Köprü ile kesin olabilirOpsIQBir ziyaretçiye ulaşan şey, karar verilenOpsIQBir sabit reddedilmede.

Bağlantı panelindeki kopyalanabilir dosya

Operatör asla depolarınızı açmaz. Bağlantının panelini OpsIQ ve basın Kopyaı açın. Bu kopya ayarların geliyor.json, ve aynı program olmalıdır köprü/*. php.

ayarlar.json - bir köprü bağlantı için panel girişi
{
  "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.

Parçacık_bindings yenilenme hayatta kalır

Her oluşturulan gizli görevi açıkça ortaya koyar. senkronizasyon aracı, gönderilen köprüden panel kopyasını yeniden inşa eder ve sonra geri yükler OPSIQ_BRIDGE_KEY = {{setting:api_key}} Bu bağlayıcıdan. olmadan, bir yükseltme anahtarsız paketi dosyayı sadık bir şekilde kopyalayabilir ve operatörün dağıtılabilir anahtar yer sahibini sessizce kaldırabilirsiniz.© Builder bu bağlantıyı oluşturmak için otomatik olarak yaylar.

Diğer yer sahipleri, sunucunun yerine getirilir

Independently of that, {webhook_url}, {webhook_path}, {webhook_secret}, {site_key}, {base_url} and {slug} are filled in before the panel ever sees the snippet.

webhook_help bir nesne veya liste olabilir

Bir liste size bir panelde birkaç parça verir, e. g. bir köprü dosyası ve ayrı bir röle kancası.

🚫
Köprüyü el ile korumayın. köprü dosyası ve panel kopyası bir programın iki kopyasını oluşturuyor ve sürüklediler - bir köprü yükseltildi ve paneli kopyaları değildi, böylece eski köprünün kurduğu ve kopyalanan herkes her yeni yeteneği yitirdi.
İki kopya aynı anda tutun
# 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.

Köprü ne açığa çıkarmalıdır

Şekillenmiş operasyonlar ve evrensel bir veri yüzeyi, birlikte. şekillendirilmiş olanlar aslında soru insanlara cevap vermek için tidy geri dönüyor; evrensel olanları başka her şeyi kaplar, böylece asistan asla sıkılamıyor.

Şekillenmiş okumalar

İstatistikler, filtrelerle ana nesne listesi, ilgili satırlarla bir nesne, ne satıldığının katalogu, müşteri tarih ile arama. Bunlar AI'ya beş yerine iyi bir cevap verir.

ŞekildYazar

Bu iki veya üç devlet bu konuda değişir - durum ayarla, iptal. Kabul edilen değerlerin listelenmesine izin verin.

Tipd Ticaret

Bir satış platformu amaçlanmış katalog, alıntı, çekout / sipariş ve ödeme-evidence işlemleri için, sonra onları haritaya oturtun commerce_roles.json with transport: bridge. Asla bir ticaret evrensel kayıt için rol yazamaz. create/update yüzey.

Universal keşif

tablolar ( sıra sayısı) ve tarifler (columns, türleri, birincil anahtar, artı sütun başına okunabilir ve değerli bayraklar). Bu yardımcı tahmin etmediğiniz bir platformdur.

Evrensel okuma ve yazma

Soru, kayıt. get, rekor. create, record. update, rekoru. delete. Her biri yukarıda gösterildiği gibi doğrulandı.

Kimlik, anahtar kapıdan önce

Kimlik prototipleri ADMIN'S BROWSER tarafından çağrılmaktadır, aynıorigin, bu yüzden özel bir başlık gönderemezler. kimlik doğrulamaları platform oturumunun kendisidir. Onların anahtar kapının önünde tut, hepsini kayıt verilerinden uzak tutmalarını ve asla gizli bir kimlik sayfasına dönmelerini sağlayın.

Tanıklar

op=diag, structure only, masked.

Bridge Trade rolü harita haritası
{
  "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"
    }
  }
}
💡
Kanonik rol dizi ve otoriteyi kontrol eder; köprü işlemi platformun kendi tipi maaş yükü tutar. Bir otel varış, kalkış ve konuklara, WHMCS mevcut bir müşteri veya bağlantıya sahip bir işaret gerektirebilir ve bir SaaS platformu bu alanları asla zorlayamaz.
⚠️
record_payment Bir işaretli kısayol değil.Sadece sunucuya dayalı sağlayıcı kanıtlarını kabul edin: tam sipariş, tüccar, miktar, ISO para, tedarikçi referansı, taze doğrulanmış zamanlar ve idempotency anahtar. Persist it through the platform's ödeme/in billAPIDaha sonra bir yazaraatif sipariş veya fatura okuma-geri döndürür. Bilinmeyen bir sonuç herhangi bir yeniden denemeden önce iyileşmeyi kullanmalıdır.
💡
Bir okuma-sadece bağlantının hepsine izin vermemesi gerekmez. Platformunuz sadece soru cevap verirse, hiçbir yaz afları olmayan bir köprü ve tüm yazma riski ortadan kaldırır. Birinin onlara sorduğunda yazar ekleyin.

Bir köprüyü gemiden önce Checklist

Köprü, hiçbir anahtar seti ile her şeyi reddediyor

Test edin. Sürekli boşluğa ve her türlü af yanıtlarını doğrulayın 403.

Yanlış bir anahtar sürekli zaman reddedilir

hash_equals ve anahtar sadece başlıktan oku.

Yapılan masa adı reddedilir

Ve yanlış bir ön ekle gerçek bir masa adı hala çözülür.

Bir şifre sütunu asla okumada görünmez

Ve isimlerin bir açıklama ile reddedildiği bir yazı.

İzin listesi dışında bir masaya yaz reddedilir

Operatöre bunu nasıl genişleteceğinizi söyleyen mesajla.

Panel parçaları köprü dosyasını eşleştiriyor

php araçları /sync_connector_bridge_snippets. php bunu adıma rapor eder.

Bağlantıyı yeniden yüklemek yeterli değil

Paket gemilerinizi bir köprü dosyasına alırsa, bağlantıyı yükseltmek ALSO webroot'a bu dosyayı yeniden çalıştırmalıdır. De ki panel bedeninizde ve CHANGELOG’nızda her salıverin.

Bağlayıcılar

Platformun kendi çerçevesi bir köprüden atla

Sadece okur bir köprü SQL. Platformda CREATES şeylerin (bir sipariş, rezervasyon, ücretli bir fatura) platformun kendi uygulama katmanından geçilmesi ve bu tabakayı önbelleksizce kapatılması gereken her şey, canlı bir bütünleşmede zor yoldan öğrenilen her şeyi öğrenmiş olması gerektiğidir.

Veritabanında bir satır bir sipariş değildir

Raw INSERTs bir gölge kaydı yaratır

Sıradaki görünüyor, yönetici onu listeliyor ve hala platformun yarattığı bir kayıt değil: sadece bir posta servisi ortaya çıkarsa, hiçbir müşteri e-postası yok, çalışan müşteri odaklı bağlantı. Müşteri bunu bulamadıktan sonra hiç bir referans alıntı yapmıyor.

Platformun numarasını asla yeniden gözden geçirme

Bir referans formatının iki örneği, yeniden üretmek kolay görünüyor ve tekrar üreterek aynı gölge yazmalı bir seviyeyi geri döndürür: platform her biri rekorunuz yanlış ve hiçbir şey sizi uyarmaz. Prodüktör (reflection a non-statik birine ulaşır), ve gönderilenlere güvenmek yerine depolanan değeri geri okuyun.

Platform sütunları platform anlamlarını tutar

Bir platform sütununda herhangi bir şey saklamadan önce, ücretsiz bir slot gibi bir sütun yüklenebilir: referans entegrasyonunda, transaction_id Müşterinin e-postalı "konuşturucunuzu" bağlantılarını takip etmek için ortaya çıktı: orada sessizce her misafir bağlantısını sakladım.Kitapınızı bir köprüye ait bir masada tut: UNIQUE (iş, işbirliği, çalışma) idempotency_key) replay muhafızı, kısıtlama şu anki ikizi reddediyor ve kurtarma görünümü aynı tabloyu yazılıyor. BEFORE startTransaction: MySQL DDL açık bir işlem kapalı olarak taahhüt eder.

Olaylar, dinleyiciler ve çifte-email tuzağı

Etkinliğini göndermeden önce hizmetin kaynağını okuyun

Platform servisi zaten olayı yayınlarsanız, müşteriyi iki onay e-postasını gönderir ve iki faturayı dinlerseniz, hiçbir şey dinlemez. Hiçbir şeyi göndermeyin. Hatayı yükseltmeyin, kaynak hatlarını açın ve aslında ne yaptığını okuyun: bir isim tabanlı tahmin ve hatta kaynağın her ikisine de bu yanlış geldi.

PlayListeners() gerçeği gizler; TakeRawListener() bunu söyler

Laravel, kapanışlarda sınıf dinleyicileri sarsıyor, bu yüzden İzleyiciler() her şey için [email protected] bildiriyor. XListeners() gerçek sınıflara isim vermiyor. asla dinleyicilerin adını veremeyeceği bir olay gönder.

Queue "daha sonra" anlamına gelmez.

kuyruk=en (çok sayıda üretim yüklemeleri için varsayılan) köprü isteğinizde bir kuyrukta dinleyici çalıştırılır.Hazırlama bağlamı, her kayıt veya kayıt veya uygulama bağlamı: Her kayıt ya da URL Müşterinin inbox'taki boot yerlerinizde hata. Check configure('queue.default') herhangi bir şeyin nerede çalıştığını ve iş / çalışmalara bakmadan öncefailed_jobs Bir işçinin yer aldığı varsaymadan önce.

Güvenlik platformun kendi devletleriyle yeniden birleşme

Parasızca gönderilen bir hizmet tam olarak bir kez çağrılmalıdır. sürüklenmeyen işaret, platformun kendi rekor durumudur (yalnızca kayıt hala beklemeye devam ederken), onunla aynı fikirde olmayan paralel "sent" bayrağı değil.

Başsız çizme web booti değildir

Web boot kayıtlarının ne kayıt olduğunu kayıt edin

Template variables, module settings, filter hooks: platform service providers often register them only on a web request. On the reference integration the email handler substitutes only REGISTERED variables: every value was set correctly and the customer's confirmation still rendered with empty name, phone and link, no error anywhere, because registration lives in a runtime registry the headless boot never filled. Find the platform's registration call (for Botble: EmailHandler::addTemplateSettings with the module's email config) and make it in your boot, exactly as the platform's own provider does.

Pin EVERY URL kökü, sadece yönlendirici değil

Yakalanan istek noktaları köprü senaryonuzda, bu yüzden rota(), url() ve varlık() üretir site.com/ Cumhuriyet/opsiq-bridge.php/checkout /TOKEN: Bir müşteri bağlantısı aracılığıyla JSON endpoint. forceRootUrl (kondu).url“) jeneratörü düzeltin; STORAGE diskinin kendi kökü vardır, bu nedenle e-postalı logo dosyasystems.disks'e kadar kırılır.url Ayrıca ayarlandığında ( lazily ile çözülür, bu yüzden onu çizme çalışmalarında ayarlar ve sadece boş veya senaryo-relatif olduğunda: bir operatörün CDN URL Sizin için aşırılık değildir.

Daha önce el ele geçir

Platformun hizmetleri kendi bağlantılarından okuyor ve açık işlemlerinizi göreyemezler, önceden yapılan bir ödeme hizmeti tamamlanmaz, sessizce kaydı ödenmemiş ve hala olayları yangınlar, bu yüzden müşteri, grafikten önce e-postalmaktadır.

Dürüst kurallar

Hiçbir gölge geri çekilmez

Yerli yol ulaşılamazsa, herhangi bir para hareketi icat edilemez bir hatayla reddedin. Asla referans icat et, asla yarı-yaralı bir kayıt görünümü bitmemiş bir ödeme yapın. Yerel işlem başarısız olan doğrulanmış bir ödeme, uzlaşmaya gider needs_attention: Para gerçek, devlet dürüstçe "sağlanmış, henüz işlenmemiş".

Rapor gerçekleri, sizin bildiriminiz değil

"Hizmet koştu" ve “Müşteri söylendi” farklı gerçekler: referans entegrasyon, her alanda boş bir e-posta gönderdi, ancak ranflag onları ayrı olarak geri döndürdü (işlev tamamlandı, bildirim denedi), per-calle devam etti platform_notified Bu, güçlere güç verir OpsIQ Platform ne zaman süreç yapmadı ve asla teslimat iddia etmedi: bir inbox sunucudan gözlemlenemez.

Önlem, sonra yaz

Köprüde bir okuma-sadece yeteneklerin araştırılması: sınıf varlığı, yöntem imzaları, çağrı yapmak istediğiniz yöntemlerin kaynağı, ham dinleyiciler, kuyruk şoförü ve (eğer zararsız bir işlevi arayarak cevaplanabilir) canlı aramanın kendisi tarafından cevaplanmasıyla yanıtlanabilir. Kaynak yerleşik bir dosya kopyalamadan önce beş teoriye karşı yapılan bir e-posta ile öldü; Canlı platformda yanlış bir yazı yazın.

Bağlayıcılar

Diğer dillerde köprü ve diğer veritabanı

Köprü modeli PHP bir model değildir. What the Bridge pattern is not a PHP pattern. What OpsIQ Aramalar bir HTTP uç noktası, bu yüzden dosya Node, Python, Go, Ruby, .NET veya Java olabilir ve arkadaki mağaza herhangi biri olabilir SQL Motor veya motor MongoDB. PHP'nin şekli ambalaj hattıdır ve bu kısıtlama köprünün operatöre nasıl ulaştığına karar verir.İlk önce teslimat bölümünü okuyun: insanların sürprizleri olan kısım budur.

Hangi bağlantı aslında gerektirir

Bu bütün sözleşmedir. Bir dil olarak adlandırmaz.

Ulaştırma

HTTPS. Bir GET çağrı başına talep eder. Hiçbir vücut, başka bir yöntem yoktur.

Kimlik Doğrulama

Paylaşılan bir sır içinde X-Opsiq-Bridge-Key İstek başlığı, sürekli olarak karşılaştırıldı. Bir sorgu parametresi değil, bir kurabiye değil, Temel bir auth değil.

Parametreler

Sorgu dizesi. op Yüzeyin adı, do Operasyon adı, geri kalanlar bu işlemin argümanlarıdır.

Yanıt

JSON. {"success":true,"data":{...}} veya {"success":false,"error":"snake_case_reason"}. Content-Type application/json ve hiçbir caching.

Durum kodları

200 Başarıda. 403 Yapılanmamış veya yanlış anahtar, 404 bulunamadı, 405 yanlış yöntem, 400 Kötü tartışma, 501 Bu şemaya desteklenmedi.

Hepsi bu

Hiçbir çerçeve, hiçbir zaman, hiçbir OpsIQ kütüphane sizin tarafınızda hizmet edemezse, bir köprü olabilir.

Teslimat: Köprüde ne yaşayabilir ve neyin olmamalıdır

The signed package covers a fixed list of file extensions, and a file outside that list is left out of the ZIP. A bridge in a language the list does not cover therefore cannot ship inside the package — but it can no longer disappear on you either. Since 26 August 2026 a file in bridge/ Paketçinin düşmesi zor bir uygunluk başarısızlıktır, bu yüzden pakette köprünün kurulmasından ziyade geçmeyi reddeder.

Bir köprü / klasör nasıl zaman inşa edilir
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 ve JavaScript – tamamen destekledi

İmzalanan ZIP'deki dosya gemileri ve parçaları, panel kopyanızı ona teslim ederek tutar, ki bu ikisinden biri köprüde her dosyayı okur / sadece PHP’leri değil, o yüzden bir merdivenle yükseltilmiş bir köprüyü herhangi bir dilde de yapmaz.

Her şey – sadece panel aracılığıyla teslim

Panel parçaları, hangi dili tutarsa açık bir metindir, bu yüzden herhangi bir yığın için çalışır. Tüm programı webhook_help. snippet_template, file in fikstür_filename, and do not leave a copy in köprü / - uygunance will accept the package rather than pool. net_help that operator replica it from the package.

Paketde gerçekten başka bir dile ihtiyacınız varsa

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.

💡
Dosyayı İsim the file in webhook_help.snippet_filename Paket gemilerinizi birden fazla köprüden daha fazla paketletir. Bu, bir panel kopyasının hangi köprüye ait olduğunu bilir; olmadan, büyük bir çiftleme uygun bir uyarı olarak bildirilir ve bu parçalar kontrol edilmez.
⚠️
Söpücük çek noktası bir köprü dosyası ve paneli kopyası, bir programın iki kopyasının ve el-edit yerine yenidenjene ayrılmasıdır: php tools/sync_connector_bridge_snippets.php --applySonra paketi yeniden imzalayın.

Kapı, altı dilde

Her yerde aynı dört çek: anahtarla kapatılamaz, bir yöntem, başlıktan sürekli anahtar karşılaştırması, sonra bağlantı. tek gerçek tuzak kıyaslanır ve her dilde farklı bir tuzaktır.

⚠️
SHA- ile karşılaştırın256Anahtarların kendileri yerine iki anahtarın sindirilmesi. Her dilde doğru ve birkaç sabit zaman komparının ya da uzun bir yanlış maça attıkları gerçeği yan yanar - Node's zamanlamaSafeEqual, uzunlukta farklılaştığında bir Menajör ortaya çıkarır, bu da yanlış bir anahtarı ters döndürür.500Bunun yerine,403.
Node. js - kapı
// 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 – Kapı
# 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 ve Java - aynı karşılaştırma
// 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)));
}

Her veritabanı motorunda tanımlayıcıları doğrulama

Güvenlik mülkiyeti değişmez: bir masa veya sütun adı verilen çağrıcı, interpolated olmadan önce gerçek şemaya karşı kontrol edilmelidir ve her değerin bağlayıcı bir parametre olması gerekir. Sadece introspection sorgu, alıntılama karakteri ve paging işareti farklıdır.

MySQLVe veMariaDB

Tablolar: SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = ?. Köşeler: Aynısı information_schema.COLUMNS with AND TABLE_NAME = ?Gericicks ile ilgili bir alıntı, içerideki herhangi bir gerisi katle. Page with backticks, doubling any backtick inside. LIMIT n OFFSET m.

PostgreSQL

Aynı bilgi_schema görüşleri, düşük harf isimleri, WHERE table_schema = $1 (genellikle public) Çift alıntılarla ilgili bir söz, içinde iki alıntıyı da beraberinde getirir. Page with double quotation, doubling any double quotation inside. LIMIT n OFFSET mKatlanma kuralı izleyin: alıntılanmamış bir tanımlayıcı daha düşük durumda katlanır, bu yüzden bir isim çözdüğünde davaya karşı duyarsız.

SQL Server

Aynı BİLGİ_SCHEMA görüşleri. meydan paraları ile ilgili alıntılar, içerideki herhangi bir kapanış braketinin olması gerekir: Paging'in ORDER BY: ORDER BY [id] DESC OFFSET @o ROWS FETCH NEXT @n ROWS ONLY.

SQLite

Tablolar: SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'. Çözüler: SELECT name FROM pragma_table_info(?) - bu tablo değerli formu kullanın, çünkü çıplak PRAGMA table_info(x) Açıklama, sınırlı bir parametre alamaz ve araspolasyon davet edebilir, tam olarak çift alıntılarla Alıntıya çalıştığınız delik vardır. Page with double quotation. LIMIT n OFFSET m.

Oracle

Tablolar: SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = :ownersütunlar ALL_TAB_COLUMNSÇift alıntılarla Alıntı ve alıntılanmamış bir tanımlayıcının UPPER davasına katlandığını hatırlayın, aksinePostgreSQL. Page with OFFSET :o ROWS FETCH NEXT :n ROWS ONLY 12c ve daha sonra.

MongoDB

No SQL, bu yüzden tanımlayıcı interpolasyon ve sınır parametreleri yok - aynı amaç için farklı bir disiplin.

Motor başına gelen soru
-- 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;
💡
Resolve, then use the RESOLVED name. Never pass the caller's spelling through to the query even after checking it — look the real name up in the list you read from the schema and interpolate that. It costs nothing and it closes the gap between "this name matched something" and "this is the name I am about to run".

MongoDB: Aynı kurallar, olmadanSQL

Buna enjekte etmek için sorgu dizesi yoktur, bu yüzden insanlar hiçbir şey olmadığını varsayar: filtre belgesi. Passing caller-elied JSON doğrudan içine girin find() Bir caller gönderme izin {"$ne": null} veya {"$gt": ""} Bir değer beklediğiniz yerde ve sessizce her belgeyi seçin. Filtre kendiniz oluşturun.

MongoDB - koleksiyon izin liste, ölçeklendirmeli filtre, kırmızı tepki olarak projeksiyon
// 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();
Koleksiyon isimleri listeden geliyorCollections

Bu sizin bilginiz_schema. Caller'in ona karşı büyülediği ve çözülme ismini kullan.

Bir ölçekara her filtre değeri

Bir String() veya bir Number(), operatör enjeksiyonuna karşı tüm savunmadır. Bir değerin beklenen belge, bir stil alıntının NoSQL eşdeğeridir.

Projeksiyon kırmızı aksiyon kuralıdır

projeksiyondaki gizli biçimler, böylece daha sonra sonucu ortadan kaldırmak yerine sunucuyu asla terk etmediler.

Deletes, _id tarafından tek bir-document kalır

Bir çözülmemiş bir _id ile birini sil. Asla çoğunu silmeyin ve çağrıcıyı asla etkilemiş olmaz.

Yazlar izin verilen listelere izin verilir

SQL olarak aynı sebep: koleksiyonların bir yaz dokunabileceği ve geri kalanını açıklama ile reddetmesi.

Kimlik diğer dillerde uç noktası

Kimlik araştırması bir köprünün diğer yarısıdır ve HTTP de. İmza bloğu her dilde aynıdır: baz64url the payload, HMAC-SHA256 that string, join with a dot.

Bunu sıfırdan yazma. Ayarlar, Destek Portalı portal için dilde hazır bir rota taşır (bir kez, iki dakika token). Uzak Siteler, siteniz, kodlarınız, C. Recognise giriş-in müşterileri otomatik olarak sohbet sürümlerini dil başına taşırlar (bir saat sonra da eller ile aynı zamanda ayarlayın).
What to change when you reuse it

Bu parçalar bir PORTAL handoff token, bu kasıtlı olarak katı: jti ve tek_use taşır: Gerçek ve hayatlar120saniyeler çünkü bir yolculukURLBir köprü veya widget kimliği token, bunlardan hiçbiri taşır ve daha uzun bir süre boyunca dakikalar kullanır.

Aynısı ne kalır aynı kalır

Site_key, iat, exp ve üst düzey bir kimlik: Gerçek, artı bir yönetici veya müşteri bir id ve bir kullanıcı veya e-posta ile ilgili. aynı iddialar, aynı imza, aynı sır.

Her iki token şekilleri de doğru

Üç bölüm JWT imzalanmış HS256 çalışır ve bu yüzden iki bölüm tabanı64url ödeme yükü artı hex HMAC, PHP referansının yaydığı anlamına gelir. Dilinizin kütüphanelerinin doğal hale getirdiği her şeyi kullanın - JWt kütüphanesi genellikle dışındaki daha kısa bir yoldur.

Asla tarayıcıda bunu

Her dilde doğru. Müşterinin tarafını imzalayın, site her ziyaretçiye gizli göndermek anlamına gelir.

Choosing, honestly

Platform PHP'dir

PHP'deki köprüyü yazın. Paketteki gemiler, sürükleniyor ve platformun kimlik araştırması için canlı bir seans okumak için kendi çerçevesini kaldırabiliyor.

Platform Node

Bir . js köprü gemileri, işaretler ve tam olarak PHP gibi kontrol edilir. Hiçbir şey vazgeçilmez.

Platform Python, Ruby, Go, . NET veya Java

Panel parçaları aracılığıyla teslim olun ve panel vücutta bunu söyleyin; Dosyayı köprüde bırakma, uygunluk paketi reddedecektir. Bağlantı aksi takdirde tamamen normal: eylemler, bağlam sağlayıcıları, kimlik ve misafir bakışları tüm işleri aynı şekilde yapıyor çünkü hiçbiri HTTP çağrısını yanıtlamıyor.

Platformda ev sahibi olduğunuz bir işlem yapamazsınız

Sonra köprü modeli doğru bir araç değildir. Bir köprü kendi ev sahibi içinde bir platforma ulaşmak için mevcuttur. Sadece dışarıya ulaşabilirseniz, ortaya çıkan her şeye karşı sıradan bir API bağlantı yazabilirsiniz.

⚠️
Etrafında daha fazla kısıtlama planlama: Bir kimlik araştırması platformun giriş oturumunu okumak zorunda, bu genellikle platformunuzun kendi süreci içinde çalışmak veya en azından oturum mağazasına erişmekle ev sahipliğinde. Platformdan yazılmış bir köprüye hizmet edebilir ve hala af=admin_identity. Eğer bu sizin durumunuzdursa, dilinizde gemi ve kimlik panelinizdeki kimlik köprüsünü yanıtlayabilir.
Bağlayıcılar

Asistana hem de yarılara verin: eylemler ve bağlam

Bu, bir bağlantıdan eksik olan en yaygın şey "işler ama işe yaramaz" Eylemler AI DO'nun şeyleri görmelerine izin verir. Context bölümleri her ikisine de ihtiyaç duyar ve çoğu soru bir yöneticinin asla mükemmel eylemlerle bir bağlantıya cevap vermediğini ve hiçbir bağlamdan herhangi bir şey göre doğru bir şekilde rapor edemeyeceğini sorar.

İki yarı

Eylemler - AI’nın nasıl şeyler yaptığını

Eylemlerde kınandı.jsonveya kayıtActions() tarafından geri iade edilir. Model bir tane alır, parametrelerini doldurur ve doldururOpsIQBunu yürütmek. Eylemler fiiller içindir: Bu rezervasyonu iptal etmek, bu bileti açın, bu durumu değiştirin.

Metin bölümleri - AI’nın ne şeyleri bildiğini nasıl bilir

Model koşmadan önce ContextProvider tarafından bir araya getirildi. "Bu ay kaç sipariş var", “en yeni müşterilerim”, “Ne satıyoruz”, tüm bir bağlam görünümü ile çözüyoruz ve hiçbir zaman hiç bir eyleme dokunmayız.

⚠️
Kayıp bir sağlayıcının Symptom: Asistan cevaplarını "Bu bağlam bölümüne sağlanan hiçbir bağlantı" yüklemesi, etkinleştirilen ve bağlantı testini geçmemesi. Hiçbir şey giriş değildir, hiçbir hata değildir.

The universal section vocabulary

OpsIQ, jenerik adı ile bölümler için soruyor. İşiniz her birinin platformunuzda ne anlama geldiğine karar vermek ve cevap vermek. Otel rezervasyonu IS the hotel's order; a room IS what the hotel sells. Map, do not created.

sipariş / bekleme_orders

Bir işlem platformunuzda ne olursa olsun: siparişler, rezervasyonlar, işler, kargolar. bekleme_orders bitmemiş olanlara aynı liste filtrelenir.

istemciler

Müşteri roster.

products

Platform ne satıyor: ürünler, odalar, planlar, hizmetler.

Faturayı

Gelir ve para şeklinde toplamlar, artı eyalet tarafından sayılıyor.

Biletler, hizmetler, alanlar, sunucular, aktivite

Platformunuz gerçekten onlara sahip olduğunda bunları kullanın. Bir harita zorlamak - cevaplanmamış bir bölüm yanlış olduğundan daha iyidir.

Platformun başka bir şey var

Kendin. Bölümleri söyleyen bir sağlayıcı (İngilizce): ['licenses’, 'yöneticiler'] evrensel görünüme sahip olanlar var - bu yüzden platform özel aramalar hiçbir temel değişiklikle mevcut değildir.

Bir gün maliyeti olan hata

Bir bağlamdaki bir içerik sağlayıcısı arayüzü uygular. Kayıt türü kontrol eder, bu yüzden sadece LOOKS haklı olan bir sınıf atılır - hiçbir hatayla, herhangi bir yerde.

ContextProvider. php - sözleşme, Botble referans paketinden
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 '';
    }
}
Linkten kayıt edin

Implement ContextConnectorInterface ve sağlayıcılarınızı bağlamProviders() ile geri döndürün. Bağlantı sınıfı aynı zamanda ContextProvider Interface'i doğrudan uygulayabilir ve kendi olarak kayıtlı olabilir.

Düz metin dön, JSON

build(), bir okuyucu için yazılması gereken bir metin bloğu döndürür: bir başlık, sonra sıra başına bir çizgi.

Return " rather than throw

Kendi istisnalarınızı yakalayın. Atlayan bir sağlayıcı giriş ve atılır, ancak geri dönüşü “kömürdür.

Builder sizin için bölümler yazamaz (sadece senin için)

Oluşturulan ContextProvider. php gemileri bölümler(): dizi { geri dönüş []; ve sihirbazın bunu el ile doldurmuyor - ve ilk önce düzenlemelerinizi tekrarlattığını unutmayın.

⚠️
State the true TOTAL, not the number of rows you sent. A page is not a total. A provider that lists twenty rows without saying so gets the assistant confidently answering "you have 20 bookings" when the platform holds 669. One cheap COUNT and one explicit line — "TOTAL on file: 669 (this list shows the newest 20 only)" — is the whole fix, and a confidently wrong count is worse than no count.
Yanlış sayılamaz bir bölüm blok
$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);

Eylemlerinizi isimlendirin, böylece OpsIQ, yazılardan okuyabilirsiniz

OpsIQ, WORDS tarafından eylemde bir eylemi sınıflandırır ve kasıtlı olarak muhafazakardır: Tanıdığı her şey bir yazı olarak tedavi edilir ve onay kartı talep eder.

1
is_trafive or requires_confirmation kazanım

Eğer ya da ayarlandığında, eylem her zaman onay gerektirir. Onlar dürüstçe - bu yöneticinin onayı kartının hangi yüzeyleridir.

2
Bir yazı yazmak, boş bir yerde bir yaz kelimeyi yapar

add, create, open, update, edit, change, modify, delete, remove, destroy, cancel, refund, suspend, terminate, activate, approve, reject, send, mark, reset, capture, void, close, reopen, assign, revoke, grant, set, toggle, enable, disable, issue, generate, apply, charge, pay, provision, renew, upgrade, merge, move, transfer, escalate, flag, register, sync, push, import, run, trigger, start, stop, restart and a few more.

3
Sonra bir okuma kelimesi onu bir okuma yapar

Alın, liste, arama, bul, görüş, şov, getir, say, göz atın, tarif edin, ihracat, önizleme, test, ping, statü, özet, detay, son tarih, kontrol, log, stats, metrics, overview, gelir, arıza, rapor, analiz, bilanço, paket, anlayışlar, ifadeler, reçete.

4
Sonra HTTP yöntemi karar verir

GET, HEAD ve OPTIONS okur.

5
Aksi takdirde bir yazı

Tanımlanmamışlar gerekli olan onay anlamına gelir. Bu varsayılan niyettir.

⚠️
Yaz kelimeleri BEFORE'nin kelimelerlerini kontrol ediyor, bu yüzden get_and_sync_orders gibi karışık bir isim WRITE olarak sınıflandırılır. Bir fiil seçin, önce koymak ve temiz tutmak: liste_order, get_customer, arama_bookings, Cancel_bookling, set_order_status.

Sadece platform gerçekten bir tane varsa yerli_api’yi ilan eder

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.

Builder, veri erişim cevabınızdan karar verir

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.

El yazarlı paketler hala doğru almalıdır

Eğer kendinizi açık yazıyorsanız, tam olarak bir yerli_api veya platform_bridge. Conformance platformu_bridge'e kaçış kapağının bir köprü konektörünün olması beklendiği gibi davranır ve Builder, iddia edilen platformu_Titan’ı API bağlantıda reddettiğini reddeder.

Ai_api_reference. md dürüst ya da yol

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.

Yönetici beyninizi platformunuz hakkında öğretmek

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

Bu platform IS, verilerini nasıl şekillendirilir, nesnelerin ne denir ve yardımcı tahmin etmek aksi takdirde yardımcı bir meslektaşınız için yaz. platformu hiç görmemiş olan yetkili bir meslektaşı için yazın.

ai_api_reference.md

Çağrılı yüzey. Bir köprü için bu sizin afınız ve parametreleri ile sözcülüğünü yapmak, bir REST endpoint tablosu değil.

Bütçe

Tamamen kaba bir şekilde6,000karakterler konektör başına tuttu ve hakkında24,000Her etkinleştirilen bağlantıdaki tüm blok için karakterler. per-connector cap your file is truncated; truncator daha önce koncise olun.

Hassasiyet öder

Bu dosyalar evrensel masa aletlerinizi kullanarak yardımcı arasındaki fark ve yanlış bölümden cevap vermek, çünkü hiç kimse bu araçların var olmadığını söylemedi.

💡
Her iki dosya INSTALLED paketinde olmalı, sadece kaynak ağacınız değil. Bunlar sıradan paket dosyalarıdır, bu yüzden ZIP'de imza ile kaplıdırlar ve bir tane imzalamadan sonra düzenleme anlamına gelir - bu da mühüryü kırarır.
Bağlayıcılar

Bir bağlantı aracılığıyla kimlik: yönetici, müşteri, portal

Bir imza sözleşmesi üç yüzeye hizmet eder. Bağlantının işi, " platformda giriş yapan" bir token tokenle dönüşecektir.OpsIQDoğrulanabilir ve sonra doğrulanan konuyu sunmak içinOpsIQ“Çalış kimseyi asla gerçeklemiyor – platform bunu yapıyor ve imza bu iddiayı taşıyor.

Üç yüzey, bir işaretleyici

Yönetici - personeliniz, arkanızda

Bir yönetici konusu. Platform'un yönetim panelinin içindeki widget yükleri ve her personel üyesi kendi OpsIQ ajanıyla eşleştirilir. Tam yürüyüşe admin widget sayfasında.

Customer — a signed-in customer, in client chat

Bir müşteri konusu. Bu, bir giriş-in müşterisinin anonim bir görünüm yerine WHOLE hesabını almasına izin veren şeydir: her sipariş, tam detay ve izin verdiğiniz herhangi bir self servis eylemi.

Portal - destek portalına derin bir bağlantı

Aynı iddialar artı jti ve tek_use, with a120-İkinci yaşam, çünkü token bir ada seyahat ediyorURLVe bir kez geçirilmelidir. Bunu el kayıt etmeyin: Ayarlar, Destek Portal dili başına hazır bir parçaları taşır ve platform bu sunucuda çalışırken sizin için misler yapar.

Payload sözleşmesi

Bunlar, doğrulayıcıların kontrolü iddia ediyor. Burada hiçbir şey isteğe bağlı değil, başka yerlerde kısmi bir örnek önerebilir.

site_key

Top level. İsteknin site anahtarına eşit olmalıdır veya token reddedilir.

iat ve exp

Top level, unix saniye. exp gelecekte olmalı ve iat. A token gelecekteki bir dakikadan fazla reddedilir. Yaşamı kısa tut - saatlere kadar.

Gerçekleştirilmiş: gerçek

Top level, yanı sıra, platformunuzun gerçek bir insanın giriş yaptığını iddia ediyor.

platform platformu platform platformu

Top level. Kısa bir darbe kaynağının adını verir. Önerilen, ve bir konektörün kimlik sağlayıcısının kendi jetonlarını başka bir platformdan anlatmasını sağlar.

yönetici veya müşteri

Konuyu adlandırmak için bir nesne. Boş olmayan bir boşluğa ve bir kullanıcı veya e-postaya sahip olmak gerekir - bunlardaki per-admin access door maçları. Her ikinize de sahip olduğunuz zaman dahildir.

Minting, Botble köprüden fiilatim
$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);

İki Doğrulayıcı ve onların neden sebepleri

OpsIQ 'in iki token yanıpucu vardır ve onlar aynı değildi. Bu sizi bir öğleden sonra kurtarıyor, çünkü semptom neden gibi hiçbir şey görünmüyor.

admin widget'ın kendi verifier’ine sahip

opsiq/embed /admin_ajax. php, herhangi bir pozisyonda gerçekleştirilmiş bayrağı kabul eden yerel bir verilandırıcı taşır. Konuşma listesi, tarih ve tüm bunları takip etmeden, böylece iyi niyetlidirler.

Paylaşılan verilandırıcı sıkıdır

opsiq/ dahiller/müşteri_identity_token_verify.php sohbet akışı ve temel AJAX'ın arkasında otururAPI. Bu tarihsel olarak bayrağı TOP seviyesinde gerektiriyordu.

semptom

Tarih ve konuşma çalışmaları. Her sohbet "Yönetime giriş gerekli" yanıt verir, tam olarak bir seans otobüsü gibi okur ve değil: token en üst düzey bayrağı kaçırıyor.

Mevcut çekirdek ne yapar

Şimdi, konudaki üst düzeyde OR bayrağı kabul eder, bu yüzden sözleşme üniformadır. Yaşlı çekirdekler sadece en iyi seviyede okur. Emit the canonical form and your package works on every release.

Bu makine kontrol edildi. Herhangi bir dosya paketinizde, mizan kimlik jetleri sözleşmeye karşı statik olarak taranıyor ve platformun tam dosya ve çizgi ile uygun olmadığını reddedecektir: php araçları /verify_identity_jobs. php.

Müşteriler müşteri sohbetinde

İki şey doğru olması gerekir. Core doğrulanmış müşteriyi damgalamak zorundadır ve bağlantınız bunu sunmalıdır.

1
Köprüünüz veya uç noktanız bir müşteriyi token

Aynı işaretleyici, bir müşteri konusuyla. Müşteriyi platformun kendi oturumundan okuyun. Platformunuzun müşterileri yöneticilerden farklı bir bekçide, istediğiniz ve asla konu dışı düşmediğiniz korumayı oku - bu nasıl bir müşteriye bir yönetim token teslim edilecekti.

2
Core verifies and stamps it

Geçerli bir token, temel damgalar oturuma doğrulanan konuyu okur. sağlayıcınız kanıtlanmış bir kimlik okur; asla gerçekleştirmiyor.

3
KimlikProvider bunu sunuyor

detectMüşteri() geri döndürürOpsIQŞekil: Bu MUST uygulamaOpsIQ\Platform\IdentityProviderInterface veya kayıt sessizce atlar - bağlam sağlayıcısı olarak aynı tuzağ.

4
Müşteri tarafından yapılan işlemler bir müşteri_idid kabul eder

Ve OpsIQ, yürütmeden önce doğrulanmış kimlike kilitler. Model bunu tedarik edemez.

KimlikProvider. php - kanıtlanmış kimliği okuyun, bunu OpsIQ'ın şekline göre
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;
    }
}

Müşteri-skop eylemleri: iki kilit, her ikisi de gereklidir

Model, hangi verileri okursa asla seçmemelidir. OpsIQ bunu kendi tarafında uygular ve platformunuz da diğer tarafta da uygulamalıdır. One Lock is a bug away from a sızıntı; two locks are a contract.

Lock 1 — OpsIQ overwrites the identity parameters

Bir müşteri sohbet eylemi başlamadan önce, OpsIQ her kimlik şeklinde parametreyi bir dize ile değiştirir; e-posta, müşteri_id, müşteri / kullanıcı_id , kullanıcı tarafından önerilen e-maili alır.

Lock 2 – platformunuz her sorguyu yeniden çiziyor

Verdiğiniz boşluğa ve her okumanın WHERE hükümlerine eklediğinizi alın ve bu yüzeydeki her yazıya hiçbir zaman atıfta bulun. Birinin siparişini isteyen bir müşteri, başka birinin emrinden geri dönmemelidir.

Parametrelerinizi isimlendirin, böylece kilit 1 onları bulabilir

Müşteri_id'i arayın, değil mi yoksa yeniden. Bir parametre OpsIQ tanımaz, kilitleyemez bir parametredir.

⚠️
İmzalanan müşteri yüzeyinin OWN operasyonlarına, yöneticilerden ayrı olarak, SQL benzer görünüyor. Farklı kurallarla birlikte iki yüzey dürüst kalır; bir bayrak ile bir tane gün birisi yanlış bir şube düzenler.

Zero page Kablo: Bağlantılı Prodüksiyon

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.

ayarlar.json - Proproform
{
  "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."
}
Prodüksiyon tarayıcı tarafından çağrılmaktadır

Aynı-origin, bu yüzden özel bir başlık taşıyamıyor. onun kimlik doğrulama platformu oturumudur. Köprü anahtar kapısının AHEAD'ı koyun, kayıt verilerinden uzak tut ve girişli ziyaretçi için hiçbir şey geri dön.

Sabit bir şekli cevap verir

{"success":true,"authenticated":true,"admin":{...},"identity_token":"..."} — and {"success":false,"authenticated":false,"error":"..."} when nobody is signed in.

Sayfa kaynağında uzun ömürlü bir sır yok

Sadece imzalanmış, token.

Laravel için tam uç nokta uygulamaları,WordPress, WHMCS, Symfony ve düz PHP, artı zor-won Laravel özelleri ve sorun siparişi, bir müşteri konusu için aynı koddur: Okuduğunuz korumayı değiştirmek ve işaret ettiğiniz konu anahtarı değiştirin.

Bağlayıcılar

Yayın: klasörü düzenleme yayınlanmadığı

Bir öğleden sonra kaybetmenin en yaygın yolu, piyasa_connectors/'in altına bir bağlantı düzenlemek ve hiçbir şey değiştirmiyor. Yüklemeler o klasörü okumaz. Cidditlikle ZIP imzalar. Yayıncılık sizin değişikliklerinizi bu ZIP’e götüren sıradır.

Neden düzenleme hiçbir şey yapmadı

marketplace_connectors/<slug>/ is the SOURCE

İşte işte buradasınız. Bundan hiçbir şey yüklemez.

Katalog, imzalanmış bir ZIP tutar

ZIP'in imzayı ve paketlerini doğrulayan bir yükleme indir. ZIP’i yeniden inşa etmenize kadar her taksi eski paketi almaya devam eder.

TheLock Builder başka bir yerde yayınlar

It writes into /connectors/<slug>/ on this install. That is a local connector, not a marketplace release. The two paths do not overlap.

The release dizisi

1
Bump the version in TWO files

ayarlar.jsonve konektör_uzur.json. Conformance onları karşılaştırır ve eğer sürse başarısız olur, versiyon veya yetenek seti aynı fikirde değildir. oradayken bir CHANGELOG.md girişi ekleyin - gerekli bir dosyadır.

2
Köprü parçalarının yeniden tanımlanması

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
Her paketi yeniden imzalayın

php araçları /resign_all_connectors. php - imza dosyanın inceliklerini kapsar, bu yüzden ANY bunu geçersiz kılar. Sonuncu oturumda her dosya sonlanır.

4
İmza anahtarının ihracatını yapın, sonra tohum verin

Görücü her paketi ZIP inşa ettiği gibi gösterir ve anahtarın ayarların okuyamayacağı bir bağlamda çalışır - bu yüzden ortamda gelmelidir.

5
Köprü dosyasını yeniden çalıştırın, eğer bir tane gemide olursan

Bağlantıyı güncellemek paketi güncelliyor. Operanın webroot'da oturan kopyaya dokunmaz. Onlara, panelde ve değişimlogunda söyleyin.

Bütün salıverme, sırayla
# 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
⚠️
Neden ihracat isteğe bağlı değil: işaretçi, OPSIQ_CONNECTOR_SIGNING_KEY ilk ve konektör_signing_key ayarı ikinci olarak rapor edilir.Sadece aletler / teslimat_connector.php her iki ayarda bir şey çizmeler yoktur - hiçbir ortam değişkeni önemli değildir ve "No sign_signy_key setting second.The seeder run on the SaaS Bottrap and tools/sign_all_connectors.phpOpsIQVe anahtarını kendi başına bulabilir.

Aslında gemiler ne

Sadece imza kapakları

ZIP, işaretleyicinin kendi dosya listesinden inşa edilmiştir, bu yüzden paketinizde oturan bir sokak dosyası gönderilmez. Bu kasıtlıdır: müşteriler için sürmek için kullanılan imzalanmamış bir dosya.

Kapaklı uzantılar

php, json, js, css, md, txt, html, sh, svg, png, jpg, jpeg, gif, webp, ico, yml, yaml — recursively, including bridge/ and tests/. signature.json itself is excluded from the hashes and then added to the ZIP so installs can verify.

Başka bir şey bildirilen kadar bildirilir

Görüldüğü her dosyayı geride bıraktığını oku. Bu listeyi okuyun. Orada görünen bir dosya yanlış uzatma veya yanlış bir yer anlamına geliyor - sessiz bir başarı değil.

Herhangi bir kapalı dosyayı düzenleme, mühürlemeyi bozuyor

Bir Markdown dosyasını yeniden yükleyin. Bu paketi tekrarlayın.

Dağıtım edilebilir bir paketteki gerekli dosyaları

connector.php

Bir örnek vermek zorunda kalın.

settings.json

Manifest: slug, name, version, open_vers, uyumluluk, yetenekler, bağlayıcı_job_vers , ayarlar.

connector_contract.json

Makine hazırlanabilir sözleşme. onun aşağı, versiyonu ve kapasite seti ayarları ile aynı olmalıdır.json.

DÖRÜŞÜN, DEVELOPER. md, CHANGELOG. med, DE VELOME. m

Üçü varlığa ve minimum boyuta kontrol edilir. DEVELOPER. md'in gerçek içeriğe ihtiyacı vardır, bir ub değil.

ilan edilen yetenek için bir dosya

Her yetenek, beklediği dosyayı adlandırıyor - ContextProvider. php for context, IdentityProvidor. php For identity, GuestBakupProvidr. php için konuk_watchup, and so on – if the connection implements the material inline.

Bir haç gibi görünen hiçbir şey

Conformance, gizli şekilli değerler ve özel anahtarlar için üç Markdown dosyasını tarar ve bir hit üzerinde başarısız olur.

Bunu gemiden önce kontrol edin

Tam uygunluk paketi aynı bir yükleme işlemidir. Kanonik sözleşmeye karşı açıklığı kontrol eder, bu koşu zamanı ve açık yetenekleri kabul eder, her ilan edilen yetenek dosyasını ve yöntemlerine sahiptir, kimlik-token sözleşmesi her dakika boyunca, köprü-snippet maçına, misafir göz ardı eden hijyen, eylem benzersizliği ve onayı güvenliğine izin verir ve paket imzası.

Her serbest bırakılmasından dört önce her dört kişiyi çalıştırın
# 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
💡
Bir başarısızlık bekleniyor ve bir sorun değil: Paket imza kontrolü hala düzenleme yaparken bir uyarı rapor ediyor. Yeniden imzaladığınız anda açıklıyor. Diğer her başarısızlığın gerçek bir tanesi.
Bağlayıcılar

Ambalaj ve yaşam döngüsü referans

Bu, OpsIQ'ın keşfedebileceği bir bağlantı oluşturmak için kaynak düzeyinde sözleşmedir, yapılandırılabilir, doğrulanabilir, uygulayın, test edin ve dağıtın.

Geliştirici referans
Ambalaj paketiBir bağlantı paketinin gerekli bir bağlayıcı uygulaması ve açık olması gerekir, Seçmeli eylemler, tarifler, bilgi, varlıklar ve imza metadata.Ambalaj paketideveloperMANIFESTv1LIFECYCLEYönetişim Yönetilen YönetiÇALIŞMAKapsamLIVE ÇALIŞMASPACEconnector.phpLinks class / fabrikaGerekirsettings.jsonManifest ve ayarlarGerekiractions.jsonEylem tanımlarıİhtiyaç Duyulacaksignature.jsonPaket imza metadataSalı günü1DECLAREManifest ve yetenekleri2IMPLEMENTYaşam döngüsü ve sağlayıcıları3VALIDATETest, işaret, paket
Bir bağlantı paketinin gerekli bir bağlayıcı uygulaması ve açık olması gerekir, Seçmeli eylemler, tarifler, bilgi, varlıklar ve imza metadata.

Asgari paket paketi

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

Manifest sözleşme

settings.json Kullanımları Açık sürüm 1. Geçerliator bir slug, isim, sürüm, açık_vers, uyumluluk, açıklama ve yetenekleri bekliyor. Uyumluluk ilan eder. opsiq_min ve opsiq_max. Basın durumu bir tanesidir Üretim üretimi, beta, önizleme veya şablon şablonuKapasite olgunluğu seviyeleri L1-L6. Miraç paketleri uyarılarla normalleştirilebilir, ancak uyarılar olmadan yeni bir paket geçmelidir.

Core Link arayüzü arabirim arayüz

  • Kimlik ve kurulum: slug(), name(), description(), capabilities(), settingsSchema(), testConnection().
  • Yaşam döngüsü: onEnable() ve onDisable(). Yıkılamaz, imha edilemez olmalıdır; veri purge ayrı bir kasıtlı işlemdir.
  • Giriş/seç: handleWebhook(), poll(), backfill(). Poll, artan bir işle çalışır; geri yükleme ithalat tarihi ve tekrarlamak için güvenli olmalıdır.
  • Destek: pushReply() Platform cevap kabul nerede.
  • Eylemler: registerActions() Malzeme eklenebilir aksiyon sözleşmeleri.
  • Güvenlik: securityCapabilities(), syncBlockedIp(), removeBlockedIp(), testSecuritySync().

Özet tabanı ayrıca isteğe bağlı olarak geri çekilme, müşteri listesi, e-aksay keşif / alışveriş, aboneler, yönetici/müşteri algılaması, faturalama / metin / kimlik doğrulama sağlayıcıları, yanıt ekstraksiyonu, HTTP aramaları yeniden denemesi, JSON-path access, fuzzy sıralama ve paginasyon yardımcıları.

Yetenekler ve kimlik doğrulama

Desteklenen yetenek isimleri eylemleri, tetikleyiciler, bağlam, kimlik, satışlar, faturalama, inbound_ticket, outbound_reply, senkronizasyon_users, sync_departments, security_events, müşteri_import, güvenlik_native_block, promo_audience, prom_promo_rap, e-mailbox, yerli_api, ai_brain_aware ve ai / API Anahtar, ayıcı, temel, HMAC,OAuth 2Müşteri Bilgileri,OAuth 2Yazarizasyon kodu ve özel kimlik doğrulama şablonları.

Kayıt hayatı

  1. Discovery paketi yükler ve onun açıklarını doğrular.
  2. Yapı iş alanı başına depolanır; sırlar şifrelenir.
  3. Bağlantı testi, bağlantıya izin vermeden kimlikleri kanıtlamaktadır.
  4. Enable aramalar onEnable(), senkronizasyonlar eylem tanımları ve ilk dolumu başlayabilir.
  5. Kirlilik /webhook/subscriber execution her zaman iş alanı bağlamı taşır.
  6. Engelli aramalar onDisable() ve ithal edilen verileri silmeden aktiviteyi durdurur.
  7. Purge ayrı bir açık işlemdir.

Doğruluk kuralları

  • Her okumada iş alanı/ site anahtarını kullanın, yazma, önbellek anahtar, deduplication anahtarı ve webhook görünümü.
  • Geri yükleme yapın, webhook ingestion ve eylemleri idempotent. Platformun bir tane sağladığı yerde dış kimlik / keşif ID'sini kayıt edin.
  • Uzak sistemler için, kullanımlarını kullanın API; veritabanı masalarının hiçbir zaman mevcut olmadığını varsaymayın OpsIQ bağlantı.
  • Yeniden yapılandırılmış, müşteri güvenli hataları asla sırları ortaya çıkarmaz, ham sağlayıcı izler veya başka bir çalışma alanının varlığı.
  • Paketin gerçekte uyguladığı sadece yetenekleri ilan et. actions.json katalog, bağlantı kuruluna kadar bir eylem yapmaz, etkinleştirilir, yapılandırılır ve bağlantısı geçerlidir.

Test ve salıverme

PHP lint, açık geçerlilik, bağlantı testleri, aksiyon şema testleri, webhook imza / oyun testleri, çalışma alanı-solasyon testleri, geri dolum testleri ve başarısızlık/retry testleri. Bir pazar paketi daha sonra imzalanmalıdır ve doğrulanmış olmalıdır, kurulum / testleri ve gerçek serbest bırakılması durumudur.

Bağlayıcılar

Ambalajli tarifler

Ortak bağlantı kurulumları için adımlı tarifler.

Tarifler Tartlar Tarifleri Tarif Tariflerini Tarif Et Tarif
88|Seks|Bir Shopify ayar tarifi bir çek listesi olarak: uygulama oluşturmak, kapsama alanları, yapıştırma token ve test etmek, weboks etkinleştirin, bir test siparişi yerleştirin.88|Seks|ShopifyWebhook ile Shopify tarifiShopify adminde özel bir uygulama oluşturunGrant scopes: read_orders, reading_customers...Paste store domain + token, TestEnable Webhook senkronizasyonu (edits oto-roll sipariş)Test siparişi yerleştirin → 30s'da Satışta Görünüyor1STEP BY STEPKopyalama tarifleri2REAL PLATFORMSShopify · WHMCS - Stripe · GBP3AMAYTest düzeni, 30s
Her tarif, üstte takip ettiğiniz bir kontrol listesidir, burada, Shopify with real-time order webhooks, doğrulanmış bir test siparişi ile.

Reçete: Shopify gerçek zamanlı webhooklarla

Senaryo:
Goal: Connect Shopify Otomatik sipariş senkronizasyonu ve GDPR uyumluluk.
Ne yapmalı:

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.

Recipe: WHMCS entegrasyonu

Senaryo:
Goal: Connect WHMCS böylece AI müşterilere, hizmetlere, biletlere ve faturalara bakabilir.
Ne yapmalı:

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.

Recipe: Stripe ödemeleri

Senaryo:
Goal: Stripe ödemelerini takip edin ve AI'nın işlemlere bakmasına izin verin.
Ne yapmalı:

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 İş Profili

Senaryo:
Goal: İnceleme yönetimi, mesajları ve öngörüleri için GBP'yi bağlayın.
Ne yapmalı:

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.

Bağlayıcılar

CRM & Site Zekasını uzatın

OpsIQ subsystems are open for extension. A connector can plug a new capability into the CRM or Site Intelligence with no changes to OpsIQ core, via the platform capability registry (\OpsIQ\Platform\CapabilityRegistry). Declare the capability, implement its small method set, ship the connector, OpsIQ discovers it and wires it into the UI, the Customer 360 timeline and the install prompts.

CRM & SI genişleme
Platform yetenekleriSol besleme kapasitesi otobüslerinde bir bağlantı (CRM, Site Zekası, Analytics) CapabilityRegistry tarafından keşfedildi.Platform yetenekleriİşspaceSenin konektörünüzAçıklama yeteneklerin ilan ettiğiCRMTakvim · zenginleştirme · esign · ödemeler · posta kutusuSite ZekasıYerel_listing · Rank_dataAnalizWeb_analytics · rapor ve ingestCapabilityRegistryUI + zaman çizelgesi keşfeder ve telleri1DECLARECap tasks, temel düzenlemeler değil2PLUG INCRM · SI · Analytics otobüsleri3AUTO-WIREDUI, zaman çizelgesi, hızlı
Bir bağlantı yetenekleri (calendar, zenginleştirme, sıralama verileri, analiz...) ve OpsIQ otomatik-tels bunları CRM ve Site Zekasına dönüştürür, temel değişiklikler yoktur.

Declare yetenekleri

Declarative (kesin.json)

Add a <domain>_capabilities Dizi, hiçbir kod / pazarlama bağlantıları için en iyisi. Domainler: crm, site_intelligence.

Kod (bağlantı. php)

Uygula crmCapabilities() / siCapabilities() Aynı tanımlayıcıları geri döndürün.

Bir CRM takvim sağlayıcısı (kesin.json)

Senaryo:
Goal: CRM Programı-meeting panelinde bir takvim bağlayıcısı ortaya çıkar.
Ne yapmalı:

"crm_capabilities": [ { "type": "calendar", "label": "Calendar (Acme)", "actions": ["createEvent","listEvents","freeBusy"], "requires_auth": true } ]

Bir Site Zeka sağlayıcısı (kesin.json)

Senaryo:
Goal: Site Zekasına yerel listelenen verileri besleyin.
Ne yapmalı:

"site_intelligence_capabilities": [ { "type": "local_listing", "actions": ["listLocations","listReviews","getInsights"], "requires_auth": true } ]

Yetenek otobüsleri ve onların yöntemi yüzey

kra / takvim

createEvent($settings,$params) → {success,event_id,html_link,meet_link}; listEvents; freeBusy. \OpsIQ\CRM\CalendarBridge tarafından destekleniyor.

s / zenginleştirme

enrich($settings,$params) → {success,traits}. Driven by \OpsIQ\CRM\EnrichmentBridge (aynı zamanda bir sağlayıcı bağlandığında şirket oluşturma sırasında otomatik olarak çalışır).

s / esign

sendForSignature($settings,$params) → {success,envelope_id,sign_url}. \OpsIQ\CRM\EsignBridge tarafından desteklenmektedir.

Site_intelligence / yerel_listing

listLocations, listReviews, getInsightsGoogle Business Profile konektörü aracılığıyla gemiler.

Site_intelligence / Rank_data

keywordRanks($settings,$params) → {success,ranks}. \OpsIQ\SiteIntelligence\RankDataBridge tarafından yönetilmektedir.

Analitik / Web_analytics

report($settings,$params) (en/export) + ingest($settings,$events) (import) Driven by \OpsIQ\Analytics\WebAnalitiklerBridge. Ships: Google Analytics (GA4) konektör. Data API Raporlar için, ithalat için ölçüm protokolü. Analytics CRM + Site Zekası (domain) gibi konektörler için açıktır. analytics / analytics_capabilities).

Ödemeler / payment_provider

listPayments, customerPayments, createPaymentLink\OpsIQ'Payments\PaymentsBridge. CRM Time + bir anlaşmada ödeme bağlantısı gönderin. Ships: Stripe Payments konektörü. Domain payments / payments_capabilities.

posta kutusu / e-posta_sync

listMessages + sendMessage. Driven by \OpsIQ\Mailbox'ınMailboxBridge. Müşterinin e-postaları 360 Zaman çizelgesi + bir anlaşmadan e-posta gönderin. Ships: Gmail + Outlook/Microsoft 365 Bağlantılar. Domain mailbox / mailbox_capabilities.

Paylaşılan OAuth uygulama + ONE yönlendirme

Tüm Google konektörleri, \ ile ONE uygulamasını paylaşıyor OpsIQ\OAuth\SharedGoogleApp. Set google_oauth_client_id/_secret Bir kez ve Takvim, Analytics, Business Profile + Gmail tüm işler ( per-connector "(isteğenim)" alanları aşırı yönlendirilir. Ayrıca ONE yönlendirme URI'u paylaşıyorlar. <site>/connectors.php?oauth=callback (yüzde 30) Google'ın ortaya çıkardığı için API URIs'leri bir uygulamaya yönlendirmek için; OpsIQ İmzalanan kutuyu geri döndürür. OAuth state Nonce. Bir kez ve her Google konektörünün (günümüz + gelecek) başka bir Konsol kurulumu olmadan yazarlığını kayıt edin. Return that single URI once and every Google connector (present + future) authorizes with no further Console installation. Return SharedGoogleApp::resolve(...)’ s redirect_uri Senin sizden oauthParams()· Hiçbir zaman per-slug yönlendirmesini zorlayamayın. Microsoft konektörleri aynı şeyi \ ile yapar OpsIQ\OAuth\SharedMicrosoftApp (İngilizce)microsoft_oauth_*).

İthalat düğmeleri yetenek değiştiricidir

- Ne? İthalat (İslâm geri yükleme) ve İthalat müşterileri düğmeler, aslında onları uygulayan konektörler için SADECE gösteriyor, yansıma tarafından tespit edildi, bu yüzden ilan etmek için bir bayrak yok. Override backfill() veya backfillChunk() İthalat düğmesine kazanmak için; override listCustomers() (günümüz {email, ilk_name, ...} sayfalar) İthalat müşterileri kazanmak için. AbstractConnector Hiçbir-op ve düğme gizli kalır, bu yüzden UI asla bir bağlantı gerçekleştiremez.

otobüsler arasında AI

CRM ajanı sinyalleri ve kitapları toplantıları teklif eder (\OpsIQ\CRM'nin Yeniden TeklifProposer → TakvimBridge), ve otomatik zenginler yeni hesaplar, “AI terminalleri ile çalışır.

Müşteri-chat bileti (görüş)fetchTicket())

İki katmanlı, temel değişiklikler

Bir ziyaretçi müşteri sohbetinde bir bilet numarası referans aldığında ("T-000123'ın durumu nedir?”), OpsIQ iki tierste bunu çözer. Sınıf 1 Paylaşılan OpsIQ bilet mağazası, her bağlantı ile birlikte inbound_ticket Biletlerini orada aynalar, bu yüzden senkronize biletleri sadece bağlantı kodu ile sıfır olan ALL konektörler için çalışır. Sınıf 2 Asla aynaya girilmeyen OLD biletleri için canlı bir düşüş: temel çağrılar Bir OPLOW fetchTicket() Her etkinleştirilen konektör üzerinde bunu uygulayan. duck-typed (Kıyıtlı method_exists()gibi, contextProviders()/audienceCatalog()), böylece imzalanmış ConnectorInterface Bu, ihtiyaç duymamış ve bağlayıcılar (kendi başına biletler üreten e-posta / sohbet kaynakları) sadece bunu durduruyor.

⚠️
Sahibilik zorunlu ve uygulamanız için sizindir. fetchTicket() VERIFIED ziyaretçi kimliğini alır $ctx (client_id + client_emailAynı doğrulanmış kimlik müşteri AI kullanımlarını kullanır. Platform müşterisi bu kimliği ve sorgudan SADECE müşterinin biletlerini geri almak, sonra ayrıntılı kayıtta mülkiyet yeniden kontrol edin. null Herhangi bir öz, yanlış, veya hatada asla başka bir müşterinin verileri. Bir geri dönüş null “Bu bileti bulmak için güzel bir şekilde.”
connector.php, the fetchTicket() contract (reference: connectors/whmcs and connectors/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
    }
}

Platform nasıl kullanır onu

Keşif

CapabilityRegistry::providers($domain,$type) Oluşturulan/kanıt statüsüne sahip sağlayıcılar (filesystem-based; DB sadece etkinleştirilen bayrak için).

Seçici Seçme

CapabilityRegistry::active($domain,$type) Yüklü konektör ve ayarları ile ilk hazır sağlayıcı döndürür. Bridges bunu sertleştirici slugs yerine adlandırıyor.

Kurulum-iletişim

Bir özellik henüz bağlantılı olmayan bir şeye ihtiyaç duyarsa, UI tek tıkla Connect / Install hızlı gösterir, asla ölü bir kontrol.

Tam rehber

Gördün mü? connectors/PLATFORM_CONNECTORS.md (CRM + Site Zekası) ve connectors/CRM_CONNECTORS.md Paketde.

Bağlayıcılar

Müşteri hizmetleri aramaları ve geri ödemeleri (müşteri sohbet için bağlantınızı inşa)

İmzalanan müşteriler, müşteri AI'ya bağlantı bildirimlerini isteyebilirler: No OpsIQ temel değişiklikler, “benim emirlerim” ve "mükemmel destek biletimi yanıt" ve tüm bunlar otomatik olarak AI için dağıtılırsa.

Bir müşteri bir göz atın

Sizin için actions.jsonAncak bir okuma-sadece eylem müşteri tarafından TÜM THREE ile hatırlanabilir: "scope":"client", "requires_confirmation":false, "is_destructive":false. Use "scope":"both" Aynı görünüm aynı zamanda Yönetici AI'daki ekibiniz tarafından da çağrılmalıdır. Tam kelimedir admin, client, both ve system (system Ne AI'ya ulaşır - API ve webhook rotaları sadece). Başka bir şey doğruyu reddedilir: Paket geçerli değildir ve eylem yüklemez. writing Kapsam - Yazı Asistanı hizmet ediyor admin Eylem seti.

Kimlik kuralı (mandatory)

Standart setten kimlik parametrenizi belirleyin. Doğrulanmış sayısal idaya kilitlendi: client_id, clientid, customer_id, user_id, userid, account_idBu boşluğa bir dize olarak kilitlendi: client_identifier, customer_identifier, account_identifierDoğrulanmış e-postaya kilitlendi: email, client_email, customer_email, user_email. OpsIQ kilitler ve otomatik olarak imzalanmış müşteriden depolar; AI asla kimliği görmez veya seçmez (daha önce hiç sızıntımış, hiçbir zaman).

Yönetici kalmak için ne kalmalıdır - sadece

Bu kimlik tarafından kapsamınmayan her şey: getir-by-bare-id (order_id/ticket_id Yalnız), mağaza çapında listeler, ücretsiz metin aramalar. Bunlar herhangi bir platformda çapraz müşteri sızıntılarıdır. Onları tut "scope":"admin".

Sonuç şekillendirme (cevap-kandırma anahtarları)

Görünüşe göre, AI'ya ulaşmadan önce yapısal olarak kesilir: gizli biçim anahtarlar düşer, uzun dizeler ve listeler kapılır, boş alanlar yanıltıcıdır ve kilit kapaktan daha geniş bir harita onu tutar Cevap-belge anahtarları ilk önce, money (credit, balance, amount, total, due, paid), identity (email, *name, phone, company), state (status, active, expir*, renew*), dates, plan/product/domain/service/subscription/order/invoice/ticket fields, currency, counts and stats/summary/totalsAncak kalan herhangi bir koltuk diğer anahtarlara en küçük değerli-ilk. Pratik rehberlike gitmeden önce: bu standart kelimeyle alanlarınızı isimlendirin ve müşterinin soruyu çiğ 100-key platformundan ziyade cevaplayan alanları geri dönün; söz konusu alan, sol koltuklar için yarışıyor ve çok geniş yüklerden kırılabilir.

Paraunds · bağlantınızın ne sağladığı

İki ham operasyon, politika özgür: (1) kimlik ve işlem referansı tarafından filtrelenebilir bir ödeme-verification ( your API must AND the filtreler), e. g. whmcs_get_transactions(2) bir geri ödeme işlemi ((scope:"admin", requires_confirmation:true, is_destructive:trueAncak asla müşteri tarafından ortaya çıkmamıştır), e. g. whmcs_refund_order. İş, Ayarlardaki her iki anahtarı da alır → Müşteri Sohbeti; OpsIQ ödeme sunucunun tarafını yeniden düzenler, iş politikası kutusunu uygular (ortalama, yaş penceresi, aylık limit), kutu içindeki sorunlar ve diğer her şey için bir inceleme bileti sağlar.

No-code oluşturucu

Stok Builder'ın eylem editörü aynı kontrollere sahiptir: “Kimi kullanabilir”, hem de checkboxes’leri kapatıp standart bir kimlik parametresi adı kullanın.

Referans uygulamaları

"Müşteri Self-Service" girişleri connectors/whmcs/actions.json, woocommerce/actions.json, oscommerce/actions.json; tam sözleşme connectors/README.md §8.1–8.2 and ConnectorInterface::registerActions().

Bağlayıcılar

Konuk aramaları - ziyaretçileri bir rezervasyon, kargo veya siparişi (guest_lookup) takip edelim

Oteller, kuryeler ve birçok ticaret platformu referans tutan müşterilere hizmet eder ancak giriş yoktur: bir rezervasyon onayı ile misafir, takip numarası olan bir alıcı. The Hotels, kurants and many trade platformları servis müşterilerine hizmet vermektedir. guest_lookup Kapasite (Connector Contract, mode: üretilen) bağlantınızın müşteri sohbet AI'daki bu ziyaretçilere hizmet etmesine izin verir - hiçbir şeyOpsIQTemel değişiklikler, hiçbir platform sertleştirilmemektedir. Bağlantınız neyin entitlement ve WHICH alanlarının görünür olduğunu ilan eder;OpsIQAnahtarları, throttle ve üniformayı uygulayın.

Güven modeli

Referans + kanıt, asla kimlik doğrulama

Ziyaretçi kayıt referansını verir (örneğin, regex tarafından eşleştirilir) artı seçtiğiniz kanıta - normalde kayıtta e-posta. Eyleminiz, SERVERSIDE'nin referansla kaydına alınır; OpsIQ’un ürettiği sağlayıcı, ziyaretçinin girişine karşı kanıtı karşılaştırır ve doğrulanmış kimlik yaratılır: bir rekor sahibini kazanan kişinin izin verilen alanlara alır.

Üniforma inkar (kimya veya mele)

Temel ve kanıt-mismatch BİR aynı cevabı üretmiyor. AI açıkça bir referansın var olup olmadığını doğrulamamak için talimat vermemektedir. Deneyler sohbet başına sınırlı değildir + IP bağlantınıza girmeden önce temelle ilgili olarak yorumlanır.

Double opt-in, hem varsayılan

İş BOTH anahtarlarını sağlayana kadar hiçbir şey konuklara hizmet etmiyor: iş alanı çapındaki kontrol→Güvenlik Güvenliği→"Müşteri sohbetinde en büyük rekor görünümleri" (permission-gated AND her zaman şifre onaylandığında bile), ve bağlantınızın kendi kendine ait olduğunu) guest_lookup_enabled Ayarlama için ayarlar. Tek başına bir bağlantının misafir yüzeyi açmamasına veya etkinleştirin.

Özel misafir yüzeyi

Oluşturulan sağlayıcı kayıtları üzerinde kaydeder guest bağlam yüzeyi - yapısal olarak ayrı admin ve customer. Mevcut bağlamdaki sağlayıcılar anonim ziyaretçiler için asla danışmaz ve misafir sağlayıcı hiçbir zaman imzalanmışlara danışmıyor. ctx bu sohbet mesajı taşır, thread id and the guests's claimed (unverified) pre-chat e-postası bir kanıt adayı olarak yorumlanır - kimlik alanları yoktur.

Bunu Builders'ta kınayan

1
Getiri eyleminin tanımlanması

Actions aşamasında, referansı (örneğin, TEK kaydı geri dönen bir okuma eylemi ekleyin.) GET /bookings/{booking_number}) ve yanıt alanlarını aliaslarla haritalayın: durum, varış, oda_type, müşteri_email...

2
"Guest lookups"

Kapasite adımında, etkinleştirin guest_lookupÖzel bir panel ortaya çıkıyor: Getiri eylemi seçin, referans parametresi adı, referans kalıbı verin (örneğin regex vücudu gibi bir örnek verin) \bBK-[0-9]{4,10}\b2) Kaydın adı ("kitap") ve kanıtı seçin - kayıt e-posta (recommended) veya hiçbir şey (yalnızca kurye izleme için).

3
görünür alanları listeleyin

Tam olarak bir misafir görebilir. Her şey DROPPED - asla redacted. The Builder PII- şekilli alanları (email, telefon, adresi, ödeme ...) izin listesinde ve serbest bırakma paketinin yayınlanmasından önce aynı kuralı kontrol eder, böylece taksitli bir spekületeye sahip değildir.

4
Kaslish ve etkinleştirin

Builder yayıyor GuestLookupProvider.php - Kanonik sertleştirilmiş uygulama, her üretilen paket için aynı – ve ekler guest_lookup_enabled Bağlantı ayarlarınıza göz atın. İş iki anahtar ve sohbet AI, kayıt türünden sorduğunuz zaman görünüm sunmaya başlar.

Sözleşme kuralları

Durum- biçimli alanlar sadece

“Halk takip sayfasında bir kurye baskısı ne olurdu” düşünün: Durum, tarihler, oda veya hizmet kategorisi, say. İsimler, iletişim detayları, sokak adresleri, ödeme verileri ve ücretsiz metin notları anonim bir sohbette yer yoktur - Builder ve uygunluk her ikisini de reddeder.

AI, bloktan SADECE yanıt verir

Oluşturulan sağlayıcı, yalnızca listelenen alanlardan cevap vermek ve başka bir şey için bilet sunmak için çıktısını sona erdirir. Rekadet edilen sağlayıcı, tasarımla "tamada mevcut değildir" - tasarlayarak.

Takip edenler çalışmaya devam ediyorlar

Sağlayıcı aynı sohbetteki ziyaretçinin son mesajlarından referansları tekrar okur, bu yüzden "ve ne zaman kontrol ediliyor?" referansı yeniden açmadan çalışır. Maçın referans ve kanıt e-postası, o kadar takip edenler sadece aday değildir: her dönüş hala kayıt sunucunun tarafını geri döndürür ve tek bir alanı serbest bırakmadan önce kanıtı geri alır.

Hand-writer paketler

Bir pazar paketi kendi başına gemi olabilir GuestLookupProvider.php implementing ContextProviderInterface with surfaces(): ['guest']Oluşturulan şablonun sözleşmesini tam olarak takip edin - referans, kanıt-dönüşüm sunucusu-side, üniforma inkar, yalnızca çıktıya izin verin – ve ilanları guest_lookup in capabilities. Conformance konuk yüzeyini genişletir ve PII için izin listesini tarar.

💡
Konuk aramalar sohbet AI için sadece bağlamı okunur. eylemleri asla yapmazlar, kimlik yaratmaz ve müşteriyi yukarıda hizmet eden eylem yolunu açmazlar - bu yol hala bir platform-verilen imza-in müşterisi gerektirir.
Bağlayıcılar

Promosyon seyirci hedefleme (promo_audience)

Let the Promotion Studio target campaigns by LIVE client and billing state from YOUR platform: "has an unpaid invoice", "order pending", "subscription cancelled". Any connector (pre-installed, marketplace, or one you build yourself) joins by implementing two small methods. No OpsIQ core changes, no platform hardcoding: your connector appears as a platform in the studio Targeting tab with its own dropdown of facts, and several connectors can be enabled side by side.

Pros seyirci kitlesi
Promosyon seyirci hedeflemeDoğrulanmış bir kimlik, hedef kuralı kullanan gerçekleri üretmek için bir tarayıcı izleyicisi çağrısına geçti, başarısız bir notla.Promosyon seyirci hedeflemeİşspaceGirişDoğrulanmış kimlik doğrulamalı kimlik doğrulamaseyircilerLinkinizinGerçeklerunpaid_invoices = 2KURALücretsiz_in faturaları ≥ 1Kampanya gösteriler gösteriyorBaşarısızlar kapalı: bilinmeyen müşteri veya herhangi bir hata → kampanya gizli kalır.1TWO METHODSseyirciKatalog + Bayraklar2LIVE STATETamamlanmamış, bekleme, durum3FAIL-SAFEAsla yanlış kişiye göster
Bağlantı cevaplarınız, giriş ziyaretçisi için gerçeklerle yaşamak; stüdyo hedefleri onlar üzerinde ve bu yüzden bir fatura teklifi asla yanlış kişiye ulaşmaz.

Nasıl çalışır

1
Gerçeklerinizi kınayın

Implement seyirciKatalog() bağlantı sınıfında. Bir etiket döndürür ve platformunuzun anahtar listesi cevap verebilir. platformun adı altında stüdyodaki her önemli şovlar.

2
Bir müşteri için cevap

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
Bitti.

Bağlantıyı enable the Browser. The Promosyon Studio Targeting sekmesi, platformunuzu listeleyen bir "Client & billing" bölümü büyür; admins build rules like "un ücretli_in bills >= = 1“; her gerçek aynı zamanda kişiselleştirme değişkeni haline gelir {unpaid_invoices}.

Link. php, the complete promo_audience kontrat
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'],
    ];
}

Sözleşme kuralları

Reklamlar

Ekle 'promo_audience' Senin konektörün capabilities() Bu nedenle platform ve pazar listesi seyirciye göre başarısız (ayrıca keşif de yöntem varlığından çalışır, ancak bunun temiz sinyal olduğunu ilan eder). connectors/whmcs Bağlantı tam referans uygulamasıdır.

Anahtar adı

Altcase yılan_case, 2-60 chars, eşleştirme ^ [a-z0-9_]+$. types: number, text, bool. Undeclared keys geri döndülerFlags() hala kurallarda kullanılabilir, ancak destek verdiğiniz her şeyi söyleyebilirsiniz.

Kimlik doğrulandı

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.

Başarısızlık kapalı · her zaman

ANY hatası (API down, müşteri bulunamadı, zamanout) geri döndü []. Gerçek eksik olan bir kural kampanyayı göstermemelidir. Bir faturalı hedefli popup asla yanlış kişiye ulaşmamalıdır; OpsIQ bunu da kural maçerinde uygular.

Performans

izleyiciFlags(), sayfa görünümünde bir kez olarak adlandırılır ve SADECE yayınlanan kampanya aslında platformunuzun kurallarını kullandığında. Anonim ziyaretçiler sıfır çağrılara mal olur. 1-2 API aramalar; OpsIQ İstek içinde memoizeler.

Operatörler ücretsiz olarak sağlanan serbest ticaretçiler için

Yöneticiler anahtarlarınızı =, !=, >, >=, <, <=, içerir, ayarlanır, boştur, sadece değerler tedarik eder.

Kişiselleştirme jetonları

Kampanya metinlerinde her gerçek değişken olarak ikiye katlanır: {unpaid_invoices}, {client_status}, artı iç içe geçmişler. {first_name} ve {client_email} Değerler renklendirmeden önce temizlenir.

No-code market konektörleri

Otomatik gerçekler

Açıklama (JSON-only) marketplace connectors get promo_audience for FREE: if your connector declares customers/users, factures, orders or subscriptions resources, OpsIQ mevcut arama eylemlerinizden customer_status, unpaid_invoices, amount_due, pending_orders, active_subscriptions ve subscription_status'u çıkarır. Hiçbir kod yoktur.

Özel katalog (kesin.json)

Bir seyirci_capivity nesnesi · {"label": "My Platform", "keys": [{"key", “open_carts”, "label”: "Açık kartlar", 'tip': " sayı"}

Sağlayıcınızı test edin

1
Enable the connection

Bağlantı > Enable. Sonra herhangi bir kampanyanın Hedef sekmesini açın. Platformunuz "Client & billing (bağlayıcılar) altında görünmelidir.

2
Bir kural inşa edin

Add: Platformunuz · anahtar · >= · 1 ve "Logged-in müşterileri sadece" kurdu.

3
Her iki yöne denizi doğrulayın

Platforma kuralla oynayan bir müşteri olarak giriş yapın (popup göstermelidir) ve olmayan biri olarak (popta gizli kalmak gerekir). Logged-out ziyaretçileri asla giriş kurallarıyla eşleşmez.

Kendi kodundan bir kampanya ateş (kutom tetikleyicisi)

Neden?

İnşa edilen tetikleyicilerin ötesinde (ölüm, kaydırma, çıkış-intent, idle, tıklayın, sayfalara bakılmış, sohbet / bilet aktivitesi), sitenizdeki herhangi bir yerden veya bağlantı ön uçundan bir kampanya ateş edebilirsiniz, başarılı bir çek adımdan sonra, SPA rotanızda, vb.

Nasıl

Kampanyayı ayarlamak, kampanyanın tetiklediğini belirledi Özel Bir etkinlik adı ile (e. g. checkout_failed), sonra sayfanızdan küresel kanca çağırın:

Siteniz / bağlantı ön uç 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');
💡
Bir olayı asla hedefleme veya frekansı geçmiyor. Kampanyanın her kuralı (geo, seyirci, onay, kapaklar) daha önce sadece " ne zaman" yayınlıyor.
Tam nasıl kullanım kılavuzu (tasarım, bloklar, analizler, A/B, yayın) in-app Help Center'da yaşamıyor Engage → Promosyon StüdyoBuradaki yetenek, tarayıcılarda veya pazar_connectors / bağlantılarında otomatik olarak keşfedildi/ kayıt için bir şey yok. Gemi iki yöntem ve stüdyo geri kalanını yapıyor.
Bağlayıcılar

Anket bağlantı kapasitesi (Contract 2.2)

- Ne? survey Kapasite, herhangi bir platform tedariki doğrulanmış müşteri kimlik adaptörlerine, izleyicilere gerçeklere, güvenli değişkenlere ve alıcılara Survey Studio'ya bağımsızdır. promo_audience Ve anket, cevap, analiz veya e-posta teslimatının bir bağlayıcı mülkiyeti vermiyor.

💡
Uygulama durumu. Yazarlık tam ve kullanılabilir bugün: Tools Contract 2.2, SurveyConnectorInterface, özel Builder paneli, üretilen SurveyProvider.php, paket metadata ve tüm gemiyi izolasyona uygun. tüketim henüz tel değil: SurveyConnectorRegistry Uygulamalı ve test edilmez, ancak anket tükenme süresi henüz aramaz, bu nedenle sağlayıcı sağlığı şu anda devreye girer; yayınlanmamış bağlayıcı paketin gerçekleşmesini beklemeyin. Signed-token Survey Identity Gateway belgesi, hedefleme ve değişken entegrasyon, CRM Outreach materialization and the first sent provider mappings stay separate phases. Build against this contract now; waittime to start consuming it in a later release.

Sağlayıcı sorumlulukları

İzleyici kataloğu ve gerçekler

Tipik gerçekleri ilan et ve sadece sunucu tarafından doğrulanmış, çalışma alanına bağlı bir konu için değerleri çöz. Tipik gerçeğin içinde order_count, last_order_status, cancelled_order _count, customer_created_at, active_subscription_count ve past_due_invoice_count bulunur.

Değişken katalog ve değerler

Declare müşteri, hesap, sipariş, abonelik ve destek değişkenleri türü, hassasiyet ve izin verme bağlamı. Araştırma kopyası geri çekilmek ve çıkış-kon text kaçmak gerektirir.

Alıcı sayfalama

CRM Outreach için düzenli dış kimliklerle ilgili adaylar, bağlı sayfalar, determinist cursors ve onay ile ilişkili metadata. Survey herhangi bir gönderiden önce seçilmiş seyircileri donduruyor.

Kimlik Kimliği

Kimlik kabul etmek sadece anket kimlik Gateway'den sonra imza, expiry, amaç, bağlantı ve çalışma alanı doğrulama. Browser-elied email, ID, etiketler veya fatura gerçekleri asla yazar değildir.

Runtime Health

AnketConnectorRegistry, ayarları, yolları, ham kimlikleri veya istisna mesajları olmadan uyumlu ve mevcut olmayan sağlayıcıları rapor etmek için tasarlanmıştır ve bloke edici bir sağlayıcı asla kullanılmamıştır. Raporlama yüzeyi henüz admin UI'de ortaya çıkarmıyor: bugün bloke edilen bir sağlayıcı sadece inert.

Başarısız kurallar

Undeclared anahtarları, yanlış türleri, uzun değerler, konu yanlış eşleştirmeler, konektör zamanıouts ve bilinmeyen kimlikler reddedilir. Mevcut olmayan bir gerçekle eşleşmeme ihtiyacı olan hedefleme kuralı. Recipient sayfalar kaplanır ve denetim edilir. Hassas değerleri asla halka açık önizleme veya loglarda görünmezler.

Builder salıverme kapısı

Sözleşme 2.2 gemileri yetenek kayıt girişi, arayüz, anket haritalama paneli, üretilen SurveyProvider.php, yetenek versiyonu, OKME / geliştirme referansı ve uygun fikstürler. Ticaret, yardımtesk, SaaS köprü ve yerel PHP profilleri içerir; Standart API konektörleri opt in. The statik kapı bir Promosyon adı alan, masa veya kapasite arayan bir anket sağlayıcısı reddeder.

💡
Promosyontan kopya sadece ithal edilir: Builder bir kez uyumlu Promosyon haritalarını tercüme edebilir, tam bir ankete ait bir kopyasını ve kaydı kanıtlananı kurtarmalıdır. Deleting veya Promosyon haritasını değiştirmek Anket davranışını değiştirmemelidir.
Bağlayıcılar

Cevap: Geri bildirim yeteneği (Contract 2.2)

- Ne? reply_feedback Kapasite aynaları bir platformun kendi başına per-reply ratings into OpsIQ. Bir yıldız bir müşteri, bir personel yanıt verir içeride WHMCS“Müşteri alanı SAME cevabı üzerine topraklar OpsIQ admin thread, aynı çiple, ajan kredisi ile, geri bildirim sayfası girişi ve Team & Performance computation as a rating given on an OpsIQ Portal bileti. Bir depolama, bir çip, tek bir boru hattı; bağlantı sadece tercüme eder.

Bir yazı yolu

Tam olarak iki giriş yolu ve bir gerçek var. OpsIQ portal biletleri yerli olarak yazıyor. Platform bileti bağlantı yoluyla akıyor ve temel topraklar her olay aracılığıyla her olayı tarayıcıyla ve temel toprakların üzerinden toplanıyor ReplyFeedback::recordMirrored(): Aynı sütunlar, personel sadece kural, bir-per-reply son-wins semantics, çalışma alanı damgası ve Müşteri indeksleme portal yazma kullanımlarını indeksleyen bir bağlantı asla geri bildirim sıralarını yazar.

Conform (dört dosyalar, sonra tekrar imza)

1
connector_contract.json

Yetenekleri ekleyin. reply_feedback entry: Version 1.0, the ReplyFeedbackConnectorInterface, methods Cevapla geri döndüKatalog ve ReplyFeedgeri çekti, ima inbound_ticket.

2
settings.json

Yanıt_feedback to the properties list. Bu, konektör keşfinin okuduğu şeydir.

3
spec.json

Declare Cevap_feedback. modes (poll ve / veya webhook) ve platform derecelendirme ölçeğidir. Bu, uygun kapı okumasının ne olduğudur.

4
Yürütme sınıfı

arayüzü uygulayın, liste yanıt_feedback in skills(), sonra paketi tekrar gönderin.

Sağlayıcı sorumlulukları

Kataloğu

Declare modları, platformun kendi derecelendirme ölçeği ( yerlilere normalleşir) 1-5) ve herhangi bir reaksiyon jetonları. Kataloğu spec ile aynı fikirde olmalıdır.json.

Pull çeviri çevirisi

pullReplyFeedback returns canonical events: platform ticket id, platform reply id, rating, optional reaction/comment, submitted time and a stable event_id. It reads and translates. It never writes.

İmpotenci

event_id geri bildirim için stabildir, bu yüzden yeniden oyuna konulan bir olay hiçbir şey değildir ve yazıların üzerinde değişen bir derecelendirme (daha iyi kazanç sağlar).

Cursor disiplin

Sayfalar sınırlanmış ve deterministic; bir eğriler veya bu önceden bitmemiş bir yol penceresi olarak tarihlemez. Tarihsel geri yüklemeler asla dev çekmez.

Probe security

Hiçbir yapılandırma olmadan, fırlatma yerine boş bir tam sayfa geri dönün. Uygunluk koşucuları boş tartışmalarla birlikte döndürür.

Başarısız çözüm

Core, her olayı ayna işaretleyicisi tarafından yerel bir cevapla çözüyor (kahraman) zaten pullar (<slug>:<ticket>:reply:<reply>2) Çözülemez bir olay asla tahmin edilmez; geri bildirimler sadece personel yanıtlarına bağlanır; ve acente kredisi her zaman cevabın mevcut yazarından gelir. Puan hiçbir zaman yazarlığı değiştirmez. Bu yüzden yetenek gerektiren bir şey bu yüzden yeteneğin gerekli olan bir şeydir; inbound_ticket veya ticket_mirror.

İşletim sistemi: WHMCS

WHMCS mağazaları müşteri-area per-reply star ratings in tblticketreplies.rating. WHMCS Link, anket modu ile ilan eder 1-5 ölçek, gemiler bir ticket_reply_ratings Köprü dosyasında röle komutunu yapın ve her satırı boş olan bir olaya çevirir. whmcs:<ticket>:reply:<reply> Bilet aynasını zaten damgalar. Bağlantıyı yükseltmeden sonra, köprü dosyasını WHMCS sunucusuna geri kopyalayın, böylece yeni komut orada mevcuttur.

💡
arayüzü, olay şekilleri, normalleştirme kuralları ve uygun kontrol listesi ile tam geliştirici sözleşmesi: doc/contracts/TICKET_REPLY_FEEDBACK_CAPABILITY.md İçinde,OpsIQ Paket. Kabul: Platformun içindeki bir cevap, saatli anket için bekleyin ve aynı yanıt OpsIQ çipleri gösterir, geri bildirim sayfası onu listeler ve yeniden oynatılmış bir olay hiçbir şey değişmez.
Bağlayıcılar

Bilet birleştirme yeteneği (Contract 2.4)

- Ne? ticket_merge Kapasite, OpsIQ 'da her bağlantılı bilet platformu üzerinde bir birleşme yapar. The kept platform bileti, birleştirilmiş biletin açılış mesajı ile başlayarak, bir araya gelen platform biletinin yalnızca kapalı olması yerine.

Neden var

Bir birleşme içinde OpsIQ Birleştirilmiş biletlerin her mesajı kapalı bilete taşınır ve birleştirilmiş bileti kaldırır. Sözleşmeden önce 2.4 Bir konektör sadece duydu ticket.deleted Her birleştirilmiş bilet için. WHMCS Bu bileti kapattı ve sakladı WHMCS Bilet asla müşterinin ilk yazdığı şeyi almadı: konu [MERGED] gösterdi ve içerik eksikti.

Hangi temel gönderir

bilet. merged (en azından bir araya gelir)

ticket_id, ticket_number, konu ve external_ref KEPT biletinin; native_table (opsiq_tickets); site_keyKaynaklar, birleştirilmiş biletler ilk önce her biri ile ticket_id, ticket_number, konu, external_ref, client_name, client_email, created_at Ve mesajlar [{reply_id, author_type, author_name, created_atÂyet-i kerîm, merged_by; merged_at. Mesajlar, hareketten önce yakalanan müşteri tarafından yönlendirilen konuşmadır. İç notlar asla dahil edilmez.

bilet. deleted (perated ticket)

Yine de yangınlar, şimdi birlikte merged_into {ticket_id, ticket_number, external_ref. Core, bunu ilan eden bir bağlantıya teslim etmiyor ticket_mergeDiğer tüketiciler bir silmeden bir birleşme söyleyebilirler.

Çıkan webhooklar

Bilet. merged, teslim edilebilir bir olaydır. Bir SaaS webhook uç noktası da bilet almaya abonedir. deleted ayrıca bilet alır. mersted, bu yüzden 2.4 'dan önce inşa edilmiş bir entegrasyon.

Hangi bağlantınız yapar

Açıkla

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.

Merge yerli olarak ne zaman yapabileceğiniz

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.

Aksi takdirde özel bir not ekleyin

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.

Rapor ne bir araya gelmiyordu

Return {ok, mode, merged, noted, unmerged, error}. Every merged copy you could not merge goes in unmerged, and core applies your normal delete handling (close, or delete with mirror_deletes) to exactly those. Return mode unsupported only when the platform has no merge and no private note. A transport or auth failure is ok=false with the reason; it is recorded in Diagnostics.

Senin ayak seslerine yemin et

Diğer bilet ayna kapınızı kapatan aynı ayna ayarları.

platformunuzda başlayan Merges

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.

Shipped uygulamaları

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

POST /api/v2/tickets/{id}/merge.json Özel bir birleşme yorumları ile (rayın başına beş biletle), artı tutturulmuş bilet üzerinde özel bir yorum olarak transkript Zendesk Yakınlar, yorumlarını hareket etmeden biletleri birleştirdi.

OpsIQ SaaS köprü

POST /v1/tickets/{id}/merge with source_ids, which moves the portal replies and attachments; an internal reply carries the transcript for tickets that were never on the portal. A /manage merge merges the OpsIQ copies.

Bağlayıcı Oluşturucu

ticket_merge Türlenmiş değildir, asla kenetlenmedi: Oluşturulan bir paket, yarattığı platform biletiyle bağlantı biletini bağlandığında ilan eder (a ticket.created subscriber with link ticket on), handles ticket.deleted, veya ilan eder ticket_mirror. Bilet adımında, aşağıda Merges, pick the platform's merge action (map merge.target_remote_id, and merge.source_remote_ids or merge.source_remote_id) and a private note action (map note.remote_id and note.body). The generated mergeTickets() uses both. With neither, the Builder warns that a merged ticket's messages will not reach the platform.

💡
Full kontrat: doc/contracts/CONNECTOR_CONTRACT.mdBölüm Bileti kabul eder: OpsIQ 'da iki bilet birleştirir, sonra platformdaki kapalı bileti açın. Birleştirilmiş biletin ilk mesajı orada.
Bağlayıcılar

© market pazar pazarı

Market sizi keşfetmenize ve topluluk tarafından inşa edilen konektörleri yayınlamanıza izin verir.

Pazar Yeri
© market pazar pazarıKategorileri olan topluluk bağlantı kartlarının aramalı bir ızgara, düğmeler ve yıldız derecelendirmelerini yükleyin.© market pazar pazarıİşspaceArama konektörleri...TakvimPlanlamaKurulum★ 4.8HubSpotCRMKurulum★ 4.6MailchimpEmailKurulum★ 4.7QuickBooksMuhasebeKurulum★ 4.5DönüşSMSKurulum★ 4.9AnlamBelgelerKurulum★ 4.41DISCOVERTopluluk konektörleri2INSTALLBir tıklama3PUBLISHSign & send yours
topluluk bağlantılarına göz atın, bir tıklamaya veya işaret edin ve kendinizi, önceden yüklenen ve pazar tiersinizi her iki aramayı da yayınlayın.

Bağlantıları bulmak ve kurmak

1
Göze göz at

Bağlantılara gidin > Market. Arama adı, kategori veya platform.

2
İnceleme

Açıklamayı kontrol edin, desteklenen eylemler ve derecelendirmeler.

3
Kurulum

Click install. the connection package downloads and installs to market_connectors /.

4
Yapılandır

Inches, enter API information, and test.

Bir bağlantı yayınlayın

1
İnşa ve test

Tüm eylemlerin çalışmasını sağlayın.

2
Paket Paketi

Genrate profili.json, eylemler.json Bilgi.json, ve PHP dosyaları.

3
Giriş Yap

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
Gönder

Pazar teslimi üzerinden yükleme gözden geçirmek için.

İki konektör tiers

Bağlantılar / – gerçekte ne çalışır

Runtime keşif kökü. Buradaki her şey yaşıyor: OpsIQ ile gemideki konektörler, piyasadan yüklenen herhangi bir şey ve bu yüklemede yayınlanan tüm yükler.

Market_connectors / - paketler nerede yazarlanır

İlk parti pazar paketleri için SOURCE yayınları. Bu bir keşif kökü değil: paketlenmiş olana kadar burada hiçbir şey yaşamak, kataloga ve yüklüye tohumlanmış, hangi noktada bağlayıcılar / kopya arazileri var.

💡
Her iki yerde de bakın. Market_connectors / altında yazdığınız bir paket, çalışan kopyaları monte etmek / ve sadece bu kopya runtime keşfedildi.StripeBigCommerce, Magento2, PrestaShop, OpenCart, Amazon SES, Postmark ve Resend tüm pazar paketleridir: onu teşvik etmek için beklemeden önce bir tane yüklemek.
Geliştirici

API ve webhook inşaat

The API ve Webhook Yaratıcısı size özel API Son noktalar ve webhook dinleyiciler içeride. OpsIQ ham PHP yazmadan.

API oluşturucu
API ve webhook inşaatBir tetikleyici türü seçmek (yarası webhook, program, olay, manuel) bu yapılandırılabilir bir eyleme girer.API & webhook oluşturucuİşspaceTetikleyiciGiriş webhookDers (cron)OpsIQ olayElEylemGelecek alanları haritala →Bilet / bildirim / arama APIKaydet endpoint1TetikleyiciWebhook · program · olay · manuel2NO RAW PHPUI'de inşa edilmiş3AÇIKLAMAMap fields, sonra koşuştur
Çiğ PHP olmadan uç noktaları inşa edin: bir tetikleyici seçin (yaralı webhook, program, olay veya manuel), sonra bir eylem için haritalar.

Tetikleyiciler

Olay

Run when something happens in OpsIQ, or when an external system posts a matching event to your webhook URL. Type the event name, for example ticket.created.

Takvim

Olay adı olarak inşa edilen aralık olaylarından birini kullanın: cron. dakikalar, kroki. saatlik veya cron s. daily. The Actions and Interviews screen has düğmeleri for these, so you do not have to remember them.

Deyim

Bir yönetici AI'yı düz dilde sorduğunda çalıştırın. Örneğin müşteri bulmak için, maç gereken cümleyi ekleyin.

Giriş webhook

Dış bir sistem, HTTP POST'yi sizin için gönderir OpsIQ webhook URL Bir etkinlik adı ile. Herhangi bir olay yangınları için dinlemeyi tetikler.

Sadece bazen çalıştırın: koşullar

Bir olay tetikleyicisi koşulları taşıyabilir, bu yüzden sadece gelen veri maçlarında çalışır. Koşullar olmadan her seferinde etkinlik yangınları çalıştırır.

Alan

Olay verilerine bir yol. Örneğin müşteri. email.

Bütün veya herhangi birini eşle

Her kuralın maç olup olmadığını veya sadece bir tanesinin.

Text testleri

eşit değil, içermiyor, içerde değil, devam ediyor, bir tanesi değildir. Eşleme gözleri başkentlerden biri değildir.

Sayı testleri

Daha büyük, en azından, daha az metin olarak yazılmış numaralar hala doğru karşılaştırır.

Presence testleri

Şu anda eksik, boş değil.

Sadece acil biletler için on-call mühendisini sayfa

Senaryo:
Olay bileti. created, bir kuralla: önceliği acil olarak eşitler.
Ne yapmalı:

Eylem acil biletler için çalışır ve her şey için atlanır. sonunda gerekli filtreleme yoktur.

💡
Kurallardan ayrılırsanız, tetikleyici her eşleştirme olayı üzerinde çalışır ve bu durum var olduğu gibi aynı davranıştır.

Eylemler

Webhook gönder

HTTP POST'yi dış bir URL ile özel bir ödeme yüküyle gönderin.

Bilet oluşturun

Belirtilen bölüm, konu ve mesaj ile bir destek bileti oluşturun.

E-posta gönder

Özel bir şablonla e-posta gönderin.

Kayıt güncelle

Bir müşteriyi, bileti veya CRM kayıtlarını güncelleyin.

Run Link action

Bağlantı izni ve onay kuralları ile etkinleştirilen bir bağlantıdan kayıtlı bir eylem yürütür.

Koş. OpsIQ General. API aksiyon

Genel API katalog. Fields, kapsamı, izinler, onay, idempotency ve kuru destek canlı aksiyon sözleşmesinden gelir; kaydedilen iş alanı ve yönetici bağlamı içinde iş akışı yürütür.

Sağlayıcı-native API istek

Bir Bağlantı Yerlisi Kullanın API Oku veya Onaylandı Yerli API Sağlayıcı uç noktasının tedavi edilmiş bir eylemi olmadığı zaman harekete geçin. Credentials konektörün içinde kalır ve sadece göreceli sağlayıcı yolları kabul edilir.

Eylemler ve Tesirciler, /api/v1.php, OpenAPI ve Postman aynı ActionContractRegistry'yi kullanıyor, bu nedenle seçici bir eylem zaman belgelerinden uzaklaşamaz.
Geliştirici

Tesirler aşçıbook

Ortak otomasyonlar için hazır-to-use tetikleyici-action tarifler.

Nasıl çalışır
Tesirler aşçıbookBir reçete akışı: bir uptime. down webhook, üretim filtresini geçer, sonra fanlar acil bir bilet oluşturmak ve Slack'i bildirmek için dışarı çıkar.uptime.downWebhookEğer prodfilterAcil bilet oluşturunSlack #ops
Tesirler aşçıbook

Auto-create bileti izlemeden

Senaryo:
İzleme sistemi, sunucunun aşağı gittiğinde POST gönderir.
Ne yapmalı:

Trigger: Inbound webhook Condition: payload.status = "down" Action: Create ticket · Dept: Technical, Subject: "Server {{payload.hostname}} down", Priority: Urgent

Slack bildirim büyük emirlerin üzerine

Senaryo:
Slack mesajı her seferinde bir müşteri $100 üzerinde bir sipariş tutar.
Ne yapmalı:

Trigger: Event (order.completed) Condition: order.amount > 100 Action: Send webhook to Slack incoming webhook URL with order details

Haftalık sindir e-posta

Senaryo:
9am'ta her Pazartesi günü yönetime e-posta.
Ne yapmalı:

Trigger: Schedule (Monday 09:00) Action: Send email with last week's stats pulled from the REST API

Escalate stale biletleri

Senaryo:
Bir bilet 24 saatlerine cevap vermezse, takım liderliğine tayin edin.
Ne yapmalı:

Trigger: Schedule (every hour) Condition: ticket.status = "Open" AND ticket.last_reply_age > 86400 Action: Assign to team-lead, add internal note

Geliştirici

İlk eyleminizi Yapın

Bu yürüyüş, çizilebilir basit bir bağlantı eylemi yaratır.

Yapı eylemleri
Bir eylem inşa etmekBir eylem-tafinition formu: isim arama_order, bir GET isteği /orders/{id}, bir tür id parametresi ve bir geçiş 200 Test.Yeni aksiyonİşspaceYeni aksiyonAdılookup_orderİstek İsteGET/orders/{id}Paramid · dize200 · sipariş bulundu1DEFINEAd, yöntem, endpoint2PARAMSTipd girdileri3TESTCanlı 200 sonuç
Sıfırdan bir eylem oluşturun. Adı, yöntemi ve son noktayı ayarlar, tür params ilan eder ve canlı 200'a test edin.

İki tür eylem

Başlamadan önce, hangi birine ihtiyacınız olduğuna karar verin. Her ikisi de aynı ekranda yapılandırılır.

Dış bir API

Eylem, platformunuza HTTP isteği gönderir. OpsIQ'ın ulaşmak ve tarafınızda bir şeyler yapması gerektiğinde bunu seçin.

Bir konektör eylemi çalıştırın

Eylem zaten yüklenen bir bağlantı sunuyor. Bunu iş mevcut olduğunda seçin ve sadece onu tetiklemek istiyorsunuz. Bir listeden gelen konektör eylemi seçin, bu yüzden telin üstüne hiçbir şey yok.

İkinci seçenek, her şeyi tarayıcılarınızı yeniden nasıl tekrar inşa edebilirsiniz: bir bilet parçası okuyun, müşteriye bakın, ithalat temasları ve bu yüzden indirme işlemi yapın.
1
Eylem Planı

Örnek: "bakım_product", bir ürüne isim, geri fiyat, stok ve açıklama ile bakın.

2
Eylemlerde Tanımlayın.json

Eylem tanımı ekleyin:

eylemler.json - gerçek açık şekli
{
  "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" }
      ]
    }
  ]
}
⚠️
Three things that make an action fail to register at all. action_id is REQUIRED and must be 2 to 100 characters of lowercase letters, digits and underscores — an entry without one is rejected outright. The manifest is an object with an "actions" LIST, not a map keyed by action name. And response mapping is "returns" with DOTTED paths (data.id), not JSONPath ($.data.id) — there is no "response_mapping", "method", "endpoint" or "params" key anywhere in the registry.
3
Kuru-runlu test

Stok Builder'ın İnceleme adımında, basın Kuru çalışır. Paketinize karşı tam uygun kontrol listesini çalıştırır ve kimlik verdiğinizde gerçek bir bağlantı testi yapar. Örnek verileri kullanmıyor.

4
AI kullanımını doğrulayın

admin AI: "Ürün Widget Pro'na bak." AI eylemi bulmak ve yürütmek zorundadır.

⚠️
Eylemlere bir eylem eklemek.json, AJAX rotasını yaratmaz, bu yüzden tekrarjenize etmek için hiçbir şey yoktur. Seks eylemleri etkinleştirilirken OpsIQ 'e kaydedilir: bağlantı ve yeni aksiyon görünür.
Geliştirici

Geçen olay son noktaları

Inbound endpoints, başka bir sistemden imzalanmış JSON'ı kabul eder ve zaman çizelgesini, puanlamalarını ve iş akışlarını becerebilecek şekilde karmaşıklaşmış iletişim faaliyetlerine dönüşür.

Ürün ekran ekranı
Giriş Son NoktalarıHer inbound kaynağının kendi URL, sır, haritalama ve son aktivite sonucu vardır.Giriş Son NoktalarıİşspaceÖRÜŞÜNLER5ACCEPTED12.4kREJECTED18LIVE ÇALIŞMASPACEBilling platformuAbonelik olaylarıSağlıklıÜrün uygulamasıİşaret ve kullanım olaylarıSağlıklıOlay IDprovider_event_idDüzeltİmzaX-OpsIQ-Inbound-SignatureHMAC1CREATE SOURCEURL ve gizli2MAP PAYLOADE-posta, olay ve kimlik3AMAYHMAC daha sonra ingest
Her inbound kaynağının kendi URL, sır, haritalama ve son aktivite sonucu vardır.

Create one source per sending system. OpsIQ generates a URL/token and secret. Send JSON with Content-Type: application/json HMAC-SHA256 kullanarak tam çiğ vücudu işaret edin:

X-OpsIQ-Inbound-Signature: sha256=<hex hmac>

Map JSON yolları iletişim e-postası, olay adı ve opsiyonel etkinlik ID. Olay kimliği tercih edilen deduplication anahtarıdır. Kabul edilen aktivite iletişim süresine girer ve puanlamaları, segmentleri, yaşam döngüsü kurallarını ve iş akışlarını etkileyebilir.

İş verilerini parsing iş verileri olmadan geçersiz imzalar. Kontrollü bir penceredeki her iki tarafını da güncelleyerek bir sır atlayın; sırrı yayınlamayın.

Geliştirici

Outbound webhook işlemleri

Outbound webhook yönetimi abonelikleri, testleri endpoints ve asynchronous teslimat ve yeniden deneme sağlığını izler.

Ürün ekran ekranı
Çıkan webhooklarOutbound webhook sayfası HTTPS uç noktaları, olay abonelikleri, teslimat sağlığı ve bir tek tıkla imzalı test listeliyor.Çıkan webhooklarİşspaceENDPOINTS7SUCCESS99.2%RETRYING4LIVE ÇALIŞMASPACECRM aynasıİletişim.* ve anlaşma. *SağlıklıDestek otobüsleribilet.* ve sohbet. *SağlıklıData Depo*Yeniden denemeTest teslimatıKayıt edilen örnek maaşloadHazır.1SUBSCRIBEHTTPS URL ve olaylar2AUTHENTICATEHMAC imza3OBSERVETren trenleri ve yeniden rezervasyonları
Outbound webhook sayfası HTTPS uç noktaları, olay abonelikleri, teslimat sağlığı ve bir tek tıkla imzalı test listeliyor.

Full administratorler bir HTTPS uç noktası oluşturur, belirli olayları veya vahşi kart seçin, sırrı güvenli bir şekilde saklayın ve test gönderin. OpsIQ HMAC-SHA256 ile ham ödeme yüklerini işaret eder:

X-OpsIQ-Signature: sha256=<hex hmac>

İmzayı bozmadan veya hareket etmeden önce onaylayın. Teslimat, bir senkronizasyon ve otomatik olarak yaklaşık olarak geri alındıktan sonra tekrarlanır 1dakika,5dakikalar,30dakikalar,2Saatler ve saatler12Saatler saatler. Son derece raylı sistemi denetim durumu, yanıt kodu ve sayım denemesi için kullanın.

Alıcınız idempotent olmalıdır çünkü herhangi bir asenkron sistem sadece kalıcı kabulden sonra 2xx yanıt verebilir.

Geliştirici

Webhook'lar

Webhooks dış sistemlere bildirimde bulunalım OpsIQ Bir şey olduğunda (inbound) ve izin verin OpsIQ Bir şey içsel olduğunda dış sistemlere bildirim yapın (outbound).

Webhook'lar
Çıkan webhooklarOutbound webhooks ekranı: adı olan son nokta masa, abone olaylar, son teslimat durumu ve bir Send-test düğmesi.Çıkan webhooklarİşspaceSon noktalar+ Kaydet endpointADIMOLAYLARTeslimatSlack #sat-alertshttps://hooks.slack.com/…crm. deal. won, orderTest TestiCRM aynasıhttps://api.acme.com/hookİletişim.*, bilet. createdTest TestiZapierhttps://hooks.zapier.com/…chat.startedTest Testi1ENDPOINTSAd, olaylar, URL2SIGNEDHMAC + oto-retried3SEND TESTTeslimat siparişlerini doğrulayın
Gerçek outbound-webhooks ekranı: Her uç noktası onun olayları, son teslimat sağlığı ve bir tek tıklatma testi ile imzalanmış ve tekrar tekrarlanan.

Çıkan webhooklar

Sub Açıklama

Ayarlara gidin > Webhooks. Son bir nokta ekleyin URL ve almak için olayları seçin.

Olay

Belirli olaylara veya belirli olaylara abone olun ["*"] Her şey için. yüklemeniz için tam liste aşağıda ve webhooks.events.list Onu JSON olarak döndürür.

Yeniden deneme

Başarısız teslimatlar üst üste tekrar denemeden sonra. 15 ardı ardışık başarısızlıklardan sonra, son nokta otomatik olarak kabul edilebilirdir.

İmzalıyor

Her teslimat imzalanır. X-OpsIQ-Signature carries v2=<hex>Ve imzalı dize ise version.timestamp.delivery_id.body - yalnız vücut değil. Her zaman doğrulayın ve her zaman dizeyi tam olarak yeniden inşa edin. Aşağıdaki örnekleri görün.

SSR koruma

OpsIQ Özel /internal'e göndermeyecek IPs (127.x, 10.x, 172.16.x, 192.168.x, 169.254.169.254).

Async teslimat

Webhooks iş kuyruğu aracılığıyla teslim edilir, OpsIQ işlemleri engellemez.

Stabilit olay ID

Her olay, deduplication için yeniden yapılanmalarla aynı kalan eşsiz bir etkinlike sahiptir.

Her teslimatla ne gelir

X-OpsIQ-Event

Olay adı, örneğin ticket.created.

X-OpsIQ-Delivery

Teslimat id. Aynıları tekrarlayıcılar arasında kalır - bir kez görmezden gelmek için kullanın.

X-OpsIQ-Timestamp

Zaman imzalarken Unix saniyeleri. Yaklaşık beş dakikadan daha yaşlı bir şeyi geri alın.

X-OpsIQ-Signature

İmza, v2=<hex>. Split on the =Sol taraf versiyondur, sağ taraf karşılaştırdığınız değerdir.

X-OpsIQ-Signature-Version

Kullanım planı, şu anda v2Bunu sertçe söylemek yerine başlıktan okuyun ve kodunuz bir v3 eklenmezse çalışmayı tutar.

⚠️
İmzalanan dize, version.timestamp.delivery_id.bodyAncak, kendi başına ham vücut değil. Sadece vücudun tek en yaygın bir doğrulamanın başarısız olması nedenidir - her gerçek teslimat reddedilir ve uç nokta bozuluyor.

Bir teslimat için

PHP · bir 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 · bir OpsIQ webhook
const crypto = require("crypto");

// express.raw gives you the exact bytes OpsIQ signed. express.json() does not.
app.post("/opsiq-webhook", express.raw({ type: "application/json" }), (req, res) => {
  const raw      = req.body;                                  // Buffer
  const sig      = req.headers["x-opsiq-signature"]  || "";   // "v2=<hex>"
  const ts       = req.headers["x-opsiq-timestamp"]  || "";
  const delivery = req.headers["x-opsiq-delivery"]   || "";
  const secret   = process.env.OPSIQ_WEBHOOK_SECRET;

  // 1. Reject stale deliveries (replay protection).
  if (!ts || Math.abs(Date.now() / 1000 - Number(ts)) > 300) {
    return res.status(401).json({ error: "Stale delivery" });
  }

  // 2. Split "v2=<hex>" into its version and its value.
  const [version, received] = sig.split("=", 2);

  // 3. Rebuild what OpsIQ signed: version.timestamp.delivery_id.body
  const canonical = Buffer.concat([
    Buffer.from(`${version}.${ts}.${delivery}.`),
    raw,
  ]);
  const expected = crypto.createHmac("sha256", secret).update(canonical).digest("hex");

  // 4. Constant-time compare. Lengths must match first or timingSafeEqual throws.
  const a = Buffer.from(expected), b = Buffer.from(received || "");
  if (a.length !== b.length || !crypto.timingSafeEqual(a, b)) {
    return res.status(401).json({ error: "Invalid signature" });
  }

  // 5. Accept, and make the work idempotent on the delivery id.
  const event = JSON.parse(raw.toString("utf8"));
  res.json({ received: true });
});

Bu yüklemenin her olayı gönderebiliyor

Çalışan inşadan gelen Generated, bu yüzden her zaman yaptığınız sürümü karşılaştırır.

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 Bu aynı listeyi JSON olarak döndürür, böylece kodunuz asla zor kodlamak zorunda değildir.

Analitik Analiz analitik (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.

commerce (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.

bağlantı (6)

contact.conversion

Fired by OpsIQ.

contact.erased

Fired by OpsIQ.

contact.lifecycle_changed

Fired by OpsIQ.

contact.status_changed

Fired by OpsIQ.

contact.tag_added

Fired by OpsIQ.

opsiq.contact.upsert

Fired by OpsIQ.

conversation (5)

conversation.assigned

Fired when a conversation is assigned to an agent or unassigned. Payload: thread_id (required), site_key, assigned_admin_id, by_admin_id, occurred_at.

conversation.created

Fired when a new Client Chat conversation (thread) is opened. Payload: thread_id (required), site_key, channel, client_email, client_name, visitor_id, created_at.

conversation.message.created

Fired when a visible message is written to a conversation by the visitor, an agent, the AI or the system. Internal notes do not fire. Payload: thread_id (required), message_id (required), site_key, sender_type, admin_id, message, has_attachment, created_at.

conversation.rated

Fired when the visitor rates a conversation (1-5 stars). Payload: thread_id (required), site_key, stars, comment, trigger, admin_id, occurred_at.

conversation.resolved

Fired when an agent resolves a conversation and hands it back to the AI. Payload: thread_id (required), site_key, by_admin_id, occurred_at.

s (6)

crm.company.created

Fired when a CRM company/account is created. Payload: company_id (required), name.

crm.deal.created

Fired when a CRM deal/opportunity is created (by an order, the capture agent, or a human). Payload: deal_id (required), title, amount, currency, scope.

crm.deal.lost

Fired when a deal is moved to a Lost stage (closed-lost). Payload: deal_id (required), stage, amount.

crm.deal.stage_changed

Fired when a deal moves to a different pipeline stage. Payload: deal_id (required), stage, amount.

crm.deal.won

Fired when a deal is moved to a Won stage (closed-won). Payload: deal_id (required), stage, amount.

crm.task.created

Fired when a CRM task is created (incl. AI-suggested next-step / renewal tasks). Payload: task_id (required), title.

e-posta (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.

ödeme (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.

güvenlik güvenliği güvenlik güvenliği (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.

bilet bileti (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.

Webhooks'u yerel olarak nasıl test ediyorum?+

ngrok'ı yerel sunucunuzu açığa çıkarmak için kullanın. webhook son noktayı ngroK URL'a ayarlayın.

Eğer son noktam geçici olarak aşağıysa?+

OpsIQ, üst üste tekrarla yeniden birleşmektedir. Eğer son noktanız retry penceresi içinde geri dönerse, hiçbir olay kaybolur.

Geliştirici

API anahtarları

API Anahtarlar, isteklere gerçekleştirilebilir OpsIQ REST API Her anahtar, izinleri kapsamalıdır.

API anahtarları
API anahtarlarıAPI anahtar ekran: erişim seviyesi ve kapsamı cipsi ile ilgili bir sorun paneli, mevcut maskeli anahtarların bir listesini geri döndürerek.API anahtarlarıİşspaceBir anahtarErişimSadece okuyunKısıtlıKapsamcontacts.readtickets.readevents.writeSorun anahtarAnahtarlarınızZapier entegrasyonuopq_••••4f2aGeri alMobile uygulamasıopq_••••91c7Geri alAnalytics ihracatopq_••••2db0Geri al1SCOPEDSadece veya sınırlı2PER-ACTIONKesin kapsamı seçin3REVOCABLEHer zaman her zaman Rotate
Gerçek API anahtar ekran: bir kapsamı ele alın, sadece veya sınırlı anahtarı kesin kapsamlar ve her zaman herhangi bir anahtar geri döndürür.

Bir API anahtar oluşturmak

1
Ayarlara git > API Keys

API anahtar yönetime kadar.

2
Anahtarı Yap düğmesine tıklayın

Ona bir tanımlayıcı isim verin.

3
Listeleri seçin

Anahtarı sadece ihtiyaç duyduğuna verin. Kapsam, bölgeye çiftleri okumak ve yazmakta, bu yüzden bir raporlama entegrasyonu okunabilir ve başka hiçbir şey yoktur.

Mevcut kapsamı

İş yapan en dar seti seçin. admin Aşağıda her kapsamı satisfies, bu yüzden sadece geniş erişime ihtiyacınız olduğunda kullanın.

crm. read / crm

İletişim, şirketler, anlaşmalar, aktiviteler, segmentler, outreach, dönüşümler, yaşam döngüsü ve CRM webhooks.

Biletler. read / biletler. Yazar

Liste ve biletleri ve mesajlarını oku; cevap, güncelleme, açık ve toplu kuyruk işlemleri çalıştırın.

Konuşmalar. read / konuşmaları. write

Canlı sohbet ve mesaj tarihini okuyun; mesajları gönderin, atama ve değişim durumu gönderin.

kb. read / kb

Bilgi tabanı girişleri.

chat. read / sohbet. write

Kaydetd reply şablonları.

connectors.read

Hangi konektörler kuruldu, ne yapabilirler ve bilgilerini test edin.

automations.read

Eylemlerinizi görün, tetikleyiciler ve onların koşu tarihi.

departments.read

Bölümler routing için kullanılabilir.

notifications.read

Bir isim operatörü için bildirimler.

analytics.read

Rapor bölümleri, CSV ihracat ve planlanan rapor tanımları.

site_intelligence.read

İzleyicilenen siteleri ve SEO raporlarını izleyin.

files.read

Bağlar için linkleri imzalayın.

status.write

Durum sayfası bileşenleri ve olaylar.

writing

AI yazma yardımcıları: draft, summarise, çeviri, yeniden yaz, analiz.

admin

Herhangi bir dar kapsama ile ulaşılamayan küçük sayıda hassas eylem de dahil olmak üzere her şey: Bir temas ortadan kaldırmak, mahremiyet ayarlarını değiştirmek ve erişim logunu okumak.

💡
Meta. actions with your key to see exactly which actions it can run on your install. Bu her zaman bir listeden çalışmaktan daha güvenilirdir.

Erişim seviyeleri

Hepsi

Anahtar, kapsamının izin verdiği her şeyi çağırabilir.

Sadece okuyun

Her yazı reddedilir, ne olursa olsun, rapor etmek için en güvenli seçim, panolar ve hiçbir zaman verileri değiştirmemesi gereken her şey.

Kısıtlı

Anahtarın çağrısını tam eylemleri listeleyebilirsiniz. Başka bir şey reddedilir, hatta izin verilen bir kap dahilinde.

4
Anahtarı kopyalayın

Bir kez göster. "opq_" ile başlayın. Güvenli bir şekilde Mağazaya başlayın.

🚫
Asla Paylaşma API halka açık kodda anahtarlar, müşteri-side JavaScript, veya sürüm kontrolü. Çevre değişkenlerini kullanın.
Geliştirici

Web sitenizi bağlayın

The OpsIQ widget is a JavaScript snippet you add to your website for tracking, AI chat, ticket creation, and customer identification.

Nasıl çalışır
Web sitenizi bağlayınSoldaki tek satırlı bir senaryo etiketi ve sağda, köşede görünen OpsIQ sohbet balonu ile bir web sayfası.<!-- paste before </body> --><script src="https://cdn.opsiq.io/w.js" data-site="ws_8a2f" async></script>
Web sitenizi bağlayın

Temel yükleme

Temel widget parçaları
<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.

Yapılandırma özellikleri

data-site-key

Gerekli. Site anahtarınız Connected Sites'den.

data-mode

Seçmeli. "chat" (default), “tickets” veya "hem".

data-position

Seçmeli olarak "yüze sağ" (default) veya “düşük sol”.

data-color

Seçmeli. birincil renk hex kodu.

data-greeting

Seçmeli. ilk selam mesajı.

data-language

Seçmeli. UI dili: "en", "es", “fr”, "de", 'pt", ‘ar", vb.

data-identity-token

Seçmeli. Server-prodüklenmiş kimlik token.

SPA destek

Manual SPA rota takip
// 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 kuralları

CSP kuralları için
script-src 'self' https://your-opsiq-domain.com;
connect-src 'self' https://your-opsiq-domain.com;
frame-src https://your-opsiq-domain.com;
widget web sitenizi yavaşlatıyor mu?+

No. Under 15 KB gzipped, Sayfa içeriğinden sonra birsen yükler.

Görünümü özelleştirebilir miyim?+

birincil renk için veri rengi kullanın. CSS override seçenekleri için iletişim desteği.

Geliştirici

Widget paketleme tarifleri

Platforma özgü yükleme kılavuzları.

Nasıl çalışır
Widget paketleme tarifleriPlatform install cards for WordPress, Shopify and Google Tag Manager, each saying where to add the widget.WPWordPressEklentiyi yükleyin, girinSite anahtarınız, tasarruf edin.- Dükkan.ShopifyKöprüleri parçalara yapıştırıntema. liquid before /body.GTMEtiket YöneticisiÖzel HTML etiketi, tüm sayfalar.
Ambalajli tarifler

WordPress

Senaryo:
Bir WordPress sitesinin tüm sayfalarına ekleyin.
Ne yapmalı:

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

Senaryo:
Shopify mağazanıza ekleyin.
Ne yapmalı:

Online Store > Themes > Edit Code > Layout > theme.liquid. Paste before </body>. Save.

Reakt / Next. js

Senaryo:
Bir Reaktör veya Next. js uygulamasına ekleyin.
Ne yapmalı:

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

Senaryo:
WHMCS müşteri alanınıza ekleyin.
Ne yapmalı:

Kurulum > Genel Ayarlar > Diğer > Global Footer Content. Rosları yapıştırın veya şablon ayağınızı düzenleyin.

Google Tag Manager

Senaryo:
GTM üzerinden ekleyin.
Ne yapmalı:

Özel HTML etiketi oluşturun, parçalar. Tesir: Tüm Pages. Publish.

Geliştirici

Yönetici widget in your backend (bir sözleşme, herhangi bir platform)

Embed the OpsIQ Yönetici Asistanı - sohbet, kutu ve AI Writing – in your OWN platformun yönetim paneli içinde, bu yüzden takımınız asla araçları bırakmaz. ziyaretçi kimliği ve portalları gibi SSO, bu, uygulanan BİR genel sözleşmedir -15 Platformunuzun sunucu kodunun hatları - aynı model Zendesk, Intercom ve Discourse kullanımı için SSO. Bekleyecek bir per-platform eklenti yok: herhangi bir yığın hesaplayabilir HMAC Bugün bunu yapabilir.

Adım 1 - gömülü çizgi

Gönderici Uzak Siteler→Siteniz→Kodlar, yükleyici çizgisini kopyalayın ve yönetici panelinizin sayfalarına ekleyin (yakınlık dahil, düzen şablonu veya bir admin-sadece özel-JS kutusu):

Tek satır gömülü
<script async src="https://YOUR-OPSIQ/opsiq/embed/admin_widget.php?site_key=SITE_KEY&identity_token=TOKEN_FROM_STEP_2"></script>

Step 2 — tell OpsIQ who is logged in (server-signed)

Sadece uygulamanız hangi yöneticinin imzalandığını bilir - bu kısa bir gelecek değil, güvenlik modelidir. sunucunuz kendi oturumunuzdan itibaren kısa ömürlü bir şekilde imzalanmış ve ziyaretçi kimliğiyle aynı site webhook sırrıyla imzalanmıştır:

PHP · oturumunuzdan yönetici kimliğini işaret ediyor
<?php
$secret  = "opsiq_whsec_your_site_secret";   // Remote Sites → Codes
$payload = json_encode([
    "site_key"      => "SITE_KEY",
    "iat"           => time(),
    "exp"           => time() + 6 * 3600,
    "authenticated" => true,          // REQUIRED, top level — see note below
    "platform"      => "your-platform",
    "admin"    => [
        "id"            => (string)$admin->id,      // from YOUR session
        "name"          => $admin->name,
        "username"      => $admin->username,
        "email"         => $admin->email,
        "role"          => $admin->role,
        "authenticated" => true,
    ],
]);
$payload64 = rtrim(strtr(base64_encode($payload), "+/", "-_"), "=");
$identityToken = $payload64 . "." . hash_hmac("sha256", $payload64, $secret);
// Put $identityToken into the embed line (identity_token=…), or expose it as
// window.OpsIQAdminIdentityToken before the loader script.
Per-admin access, otomatik olarak

Platforma giriş yapan her yönetici bireysel olarak eşleştirilir:OpsIQ'Süresel erişim kapısı, token'ın kullanıcı adı + e-postasını tek başına çözüyorOpsIQAjan (Team page; brokerin "akran e-postaları" listesini platform e-postalar farklı olduğunda kullanın) ve bu ajanın çalışma alanı, bölüm ve kutu izinleri uygular. Yeni personel = ajanda ekleyin.OpsIQ; Hiçbir gömülü değişiklikler yok.

Roller birlikte yolculuk

Platformunuzun gönderdiği rol ne olursa olsun, platformunuzda gösterilir.OpsIQBağlanma için taraf; yetki her zaman ondan gelirOpsIQAjan kaydı, iddia edilen rolden asla.

Giriş kurabiyemizi neden okumaz?

Tarayıcılar asla yönetici kurabiyenizi başka bir kaynağa göndermez - hiçbir satıcı "sadece tespit" giriş çapraz bölge. Her ciddi ürün bu şekilde çözülür: sunucu vouches, imzalanır.

Kendi sitenizde paylaşılan bir mod

OpsIQ host orada imzalanmamış veya paylaşılan-login modunda yok: yükleyici, imzalanmış bir yöneticiye kadar saklı kalıyor. The token=... value in the code loader is a widget key that only define the site; it can never sign anyone in.

- Ne? authenticated Bayrak – onu TOP seviyesine koyun

Bu bayrak, bir insanın gerçekten giriş yaptığını iddia ediyor ve OpsIQ bunu yapmadan herhangi bir token reddediyor. Put "authenticated" => true beside site_key/iat/expAma sadece içeride değil admin nesne. Current OpsIQ bunu her pozisyonda kabul ediyor, ancak eski sürümler sadece üst düzeyi okuyor - ve başarısızlık aldatıcı: konuşma listesi, tarih ve her sohbet cevapları geri çevirmeyişıken tüm otantikleri iyileştirin "Yönetime ihtiyaç duyulan"Ancak bu oturumda bir seans gibi görünüyor ve değil. tam olarak bu bölünmüşü görürseniz, önce bu bayrağı kontrol edin.

Hediye hijyen

Sadece sunucuda oturum açın, asla tarayıcıJavaScript. Keep exp short (minutes to hours);OpsIQGeçerli ve gelecekteki jetonları reddediyor ve imza sizin site anahtarına token bağlar.

Referans uygulamaları

The WHMCS module does this automatically from the WHMCS admin session; the Botble Hotel connector's bridge file does it from the Laravel session (op=admin_identity). Both are just this contract in their platform's dialect — copy whichever reads closest to your stack.

Zero page Kablo (bağlantılı Prodüksiyon)

OpsIQ bağlantınız kimlik uç noktanızı kendi içinde depolarken admin_identity_probe_url Set, PLAIN yükleyici hattı tüm yönetici sayfalarınız ihtiyaç: widget tarayıcıdan gelen probu keşfeder, site anahtar + widget token ile arayın ve her yöneticisi otomatik olarak genişletebilir. data-identity-endpoint Ya da window.OpsIQAdminIdentityEndpoint.

💡
İmza sırrı sizin için dolu. Uzak Sitelerde, siteniz, kodlar, Seçenek 3, Personelinizde oturum açma, her örnek zaten bu siteyi kendi sırrı içeriyor, böylece kod geçmiş olarak çalışır: Bu sayfada örnekler kopya veya yapılandırma için bir şey yoktur. opsiq_whsec_YOUR_SITE_SECRET Onun yerinde her örnek görünüyor. 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.

Tamam kodu, platform by platform

Her örnek, yalnızca imzalanmış bir personel üyesi için Admin Chat etiketini yazdırır ve widget'ın yenilenmesini yanıtlar (örneğin, işaretin yenilemesini yanıtlar).?opsiq_identity_refresh=1&role=admin) with {"success":true,"identity_token":"…"} veya 401. Uzaktan Siteler, siteniz, kodlar, Seçenekler 3, Personelinizde imza, site anahtarınızla aynı kodu yazdırır ve içerideki gizli.

⚠️
admin token iki bölüm formu: baz64url (payload), bir dot, sonra hex HMAC-Bu baz64url metninin SHA256'sı JWT değil ve bir JWt reddedilir. admin nesnesinin boş ve e-postaya ihtiyacı var ve geniş olması gerekir 24 saatler.

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'de kimlik uç noktasının uygulanması (hard-won notları)

Platformunuz Laravel (Botble, Bagisto, özel uygulamalar) ve son noktanız, giriş yöneticisini okumak için çerçeveyi açan bir standal bir dosyadır, üç spesifik sizi saatlerce kurtaracak - her biri öğrenilmeden önce gerçek bir üretim başarısızlığı üretmiştir:

Bind the request BEFORE Bottrap

Servis sağlayıcılarınız çözümü çözebilir request Bottan boot sırasında. Laravel'in kendi yaşam döngüsü, yakalanan isteğin içinde ilk şeyi birbirine bağlar Kernel::handle() - Bu düzen ayna: $app->instance('request', Request::capture()) BEFORE $kernel->bootstrap()Ya da alsın "Target sınıfı [request] mevcut değil".

Oturum açma ön işareti HMAC-keyed

Modern Laravel, bir HMAC ile kurabiye değerlerinin ekleri (TY KEY) ile hesaplandı.CookieValuePrefix) - a flat sha1(name."v2") Asla onunla eşleşmeyebilirsiniz. Strip with CookieValuePrefix::validate($name, $decrypted, $keys)Bir yapısal geri dönüşle (40 hex kars + | pozisyonda40De ki: Bir seans daha uzun bir süre40Karlar (Sekişler)81= Prefix hala eklenmiştir) ve sadece bu yükleri yalnızca bir seans _token İçinde.

Giriş nerede yaşıyor

Auth pulu login_<guard>_<sha1(guard class)> - varsayılan web muhafızı için: 'login_web_' . sha1(Illuminate\Auth\SessionGuard::class). herhangi bir görüntüyü tara login_* Özel gardiyanlar için bir geri dönüş olarak sayısal anahtar.

Köprü gibi Debug

Gemi bir gemi debug=1 Başarısız ve STEP istisnası olarak adlandıran mod - kör bir yakalama-tüm canlı bir dağıtım mümkün olmayan. Botble köprü ( v1.0.7) referanstır: çekirdek /bind/bootstrap /decrypt /session /auth /

Laravel · tam kimlik uç noktası (copy, iki sabiti ayarlan)
<?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]);
}

Diğer çöplerdeki aynı uç noktası

Sadece "tari giriş" satır değişiklikleri - imza bloğu her yerde aynıdır. sunucuda oturum açma, asla JavaScript'de değil.

WordPress · WHMCS· Symfony · düz PHP – görünüm değiştirir, işaret tutar.
<?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]);

Ne zaman işe yaramıyor - bu sırayla teşhis

Widget asla ortaya çıkarmıyor, konsol diyor "İstemen yönetici kimliği gereklidir"

Son noktanız geri dönmedi identity_token. son noktayı açın URL doğrudan giriş-in admin tarayıcısında &debug=1 - Başarısız adımı göreceksiniz. Laravel'de bu neredeyse her zaman yukarıdaki istek veya kurabiye ek öğedir.

Tarih ve konuşma çalışmaları, ancak her sohbet dönüş diyor "Yönetime ihtiyaç duyulan"

Klasik bölünme. tokeniniz TOP-LEVEL eksik authenticated Bayrak – widget'ın kendi uç noktası token kabul eder, sohbet akışının arkasındaki paylaşılan yanlışlar bunu reddeder. Add the widget's own endpoint accept the token, the shared verifier behind the chat stream forget it. Add "authenticated" => true beside exp.

"admin not provisioned in OpsIQ" (HTTP 401)

Token doğrulandı, ancak adı + e-posta maçı hayır OpsIQ Ajans. agent in the agent in OpsIQ → Takım veya platform e-postasını bu ajanın maç-email listesine ekleyin, çünkü farklılıklarından farklı olduğunda OpsIQ e-posta.

Her 403s tarayıcıdan ama curl ile çalışır

Bir KURUMSAL Öngünüz, istek başlıklarınızdan birini reddeder. son noktanız cevap olmalıdır OPTIONS Ve istek kaynağı yankılayın veya sadece özel başlıklardan kaçının - widget'ın yalnızca kurabiyeye ihtiyacı var.

Dün çalış, bugün başarısız oldu

Kontrol et. exp: Jets tasarımla kısa ömürlüdür. widget re-probes otomatik olarak, bu genellikle son noktanın oturumu görmeyi bırakmasını sağlar - bir uygulama anahtar rotasyonu, bir seans-vida değişikliği veya kurabiye alanı değişimi.

💡
admin widget, kimlik çözinceye kadar saklı tutar ve her sohbet/inbox /data çağrısı maça karşı dolu sunucuya yöneliktir.OpsIQSayfanın iddia ettiği her şeyden bağımsız ajan. token UI'yi açar; izinler her zaman UI’den gelirOpsIQ.
Geliştirici

Ziyaretçi kimliği

Kimlik, bilinen müşterilere anonim ziyaretçileri bağlar. Tanımlandığında, OpsIQ bağlantıları tarama tarihi, sohbetler ve müşteri profiline biletler.

Nasıl çalışır
Ziyaretçi kimliğiBir akış: Sitenizde bir kullanıcı girişleri, imzalanmış bir kimlik sorunuyorsunuz ve OpsIQ seanslarını, sohbetlerini ve biletlerinizi tek bir profiline aktarıyorsunuz.Kullanıcı girişleriSitenizdeİmzalandı tokenID_token (HMAC)Bir Profilsessions+ sohbetler+ biletler
Ziyaretçi kimliği

Kimlik iki seviyesi ve her biri yeterli olduğunda

Sınıf 1 - anlanmamış bir ipucu

Ziyaretçinin bir düz ekranla olduğunu gösteren widget'a söyleJavaScriptobject.Bu, ziyaretçi girişinde e-posta ve müşteri id doldurur, bu yüzden panolarınız imzalanmış trafik ve seanslar katılır. Bu bir HINT: herhangi biri tarayıcılarında düzenleyebilir, böylece bunu tarayıcılarında değiştirebilir, böyleceOpsIQHiçbir zaman bunun gücü üzerinde hesap verileri yayınlamaz.

Seviye 2 - imzalanmış bir kimlik token

Sunucunuz webhook sırrı ile kısa ömürlü bir token işaret eder. OpsIQ imzayı doğrular ve sadece o zaman kişiyi kanıtlanmış bir müşteri olarak davranır. Bu, müşteri sohbetinde hesap yanıtları ve konektör aramalarında kilitlenen seviyedir. Bir yabancı için onu kullanın.

⚠️
Seviye Düzey Seviyesi1Ekran rahatlığıdır. Seviye2Kimlik doğrulamadır. Eğer bir soru sadece gerçek hesap sahibi için cevaplanabilirse, Seviyeye ihtiyacınız var2.
💡
Seviye yazmak zorunda değilsiniz 2 el: Uzak Siteler → Siteniz → Kodlar → C. Signed-in müşterileri imza kodu ve PHP için yeni eller üretir, WordPressLaravel, Node.jsPython, Django, .NET, Rails, Java ve Go WHMCS kanca ve kanca Botble Bağlantı köprü zaten müşterileri işaret ediyor. Kimlik, müşterinin kim olduğunu söylüyor; siparişleri veya rezervasyonları bir bağlantı aracılığıyla sohbete ulaşır (yalnızca platformda hiçbir köprü dosyasına sahip olmadığı zaman sadece platformun hiç kimse olmadığını söylüyor API).

Seviye 1 - imzalanmamış ipucu

Kullanıcıyı BEFORE the widget script veya arama tanımlayın() daha sonra uygulamanız kimin imzalandığını bilir; sayfanıza uymayan kullanın.

JavaScript · iki desteklenen form
<!-- 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.

Seviye 2 - sunucu tarafından belirlenen kimlik token

Tam olarak aynı token sözleşmesi yönetici widget olarak, bir admin customer Bunun yerine bir konu admin Bir tanesi bunu sunucunuzda oturum açın ve widget'a geçin. İki detay, yanlış olup olmadığına karar verir:

The HMAC covers the BASE64URL string, not the JSON

Giriş Yap $payload64Ama değil $payloadÇiğ JSON 'ı imzalamak doğru görünen bir token üretir ve her seferinde imza yanlış bir maçla reddedilir.

1. Bölüm 64url, unpadded

çeviri çevirisi +/ tom için -_ Ve şerit = padding. Plain base64 happens to survive today; base64url is the contract and is what every OpsIQ verifier and reference connector emits.

Gerçekleştirilmiş, TOP seviyesinde gider.

Beside site_key, iat ve exp. Gerçek bir insanın giriş yaptığını iddianız ve OpsIQ tokeni onsuz reddediyor.

müşteri. id zorunlu

Sadece bir e-posta imza olarak taşır ve sonra sessizce düşer. Her zaman bir id gönderin.

Fazla kısa süre tutun

Dakikalar saatlere kadar. token bir seans iddia, mağazaya bir haç değil.

PHP - bir müşteri kimliğini işaret eder (bu kesin kod doğrulanır)
<?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>';
🚫
Sadece sunucuda oturum açın. Tarayıcıda bir token minted JavaScript, siteyi her ziyaretçiye gizliyor demektir ki bu herhangi bir müşteriyi taklit etme yeteneğine sahip olur.

Aynı sözleşme, üç yüzey

Müşteri web sitenizde sohbet

Müşteri konusu, yukarıdaki widget. php. Covered'e identity_token olarak geçti. Seçmeli: Aroad ve bir bağlantı ile zaten müşterilerin kendisini (bir sipariş numarasıyla kanıt veya e-postalı kodla) önceden onaylayın. Uzak Siteler, Kodlar, C zaten sitenizde giriş yapan otomatik tanıma kodu oluşturur.

Yönetici arkanızda sohbet

admin konusu, opsiq/embed /admin_widget. php. Same signer, farklı konu anahtarı bakınız "Admin widget in your backend"

Destek portal derin bağlantıları

Daha katı bir değişken: aynı iddialar artı jti ve tek_use: gerçek, ve120-İkinci yaşam, çünkü token bir ada seyahat ediyorURLVe bir kez geçirilmelidir. Bunu el kayıt etmeyin. Ayarlar, Destek Portal sizin diliniz için hazır bir platforma sahiptir ve hesap alanınız bu sunucuda çalışırken sizin için platform mustakiler bunu size sunar.

Bir ziyaretçi kurabiyeleri açıklarsa?+

Tekrar tespit ettiklerine kadar anonim hale gelirler. OpsIQ, müşteri profiline yeni anonim kayıtları bir ipucu veya token geliyor.

Neden ziyaretçi girişi için doğru değil, hesap soruları için değil?+

Bu seviyedir.1/ Seviye Düzey2Bölünmemiş bir ipucu ziyaretçi girişini doldurur ve başka hiçbir şeye ihtiyaç duymaz. Hesap cevaplarının doğrulanmış bir imzaya ihtiyacı yoktur.

Geliştirici

Portal işareti-in: her platform için kod

Uygulamanıza doğrudan destek portalına imzalanmış olan bir müşteri gönderin, ikinci şifre olmadan imzalayın. Bu sayfa eloff'un nasıl çalıştığını açıklıyor, token her platform için kurulum ve tam bir rota. Ayarlar, Support Portal aynı kodu kendi portal adresinizle yazdırır ve iş alanı anahtarını doldurdu.

Nasıl çalışır

1
Müşteri tıklamaları Uygulamanızda Destek

Link noktaları sunucunuzda küçük bir rotada, örneğin /support-portal. Asla zaten bir token içeren bir bağlantıda: sayfa kaynağı, tarayıcı tarihi ve Refererhead aracılığıyla bir tote.

2
İmzalanan rota kontrolleri

Müşteriyi kendi oturumundan okuyor. Kayıtta imzalanmamış bir ziyaretçi ilk önce girişinize gönderilir ve daha sonra rotaya geri gelir.

3
Yol bir kere token işaret eder

Standart bir HS256 JWT bu çalışma alanının imza sırrı ile imzalanmış, sadece sunucunuzun elinde olduğu. 120 saniye sonra sona ermiş ve bir kez kullanılabilir.

4
Yol portala yönlendirilir

Portal sayfası için müşteri portaldan bir tane sorulduğunda geldi (opsiq_portal_return, sadece portal adresinizi kabul etti), aksi takdirde portal evi. yanıt Referrer-Policy: no-referrer ve Cache-Control: no -store.

5
portal müşteriyi işaret eder ve işaretler

İmza, iş alanı anahtarı, expiry ve bir kere boş zaman kimlik kontrol edilir. Müşteri e-posta ile bulunur veya mevcut talepleri onlara karşı eşleştirilir.

The token, iddia ederek

site_key

İş alanı anahtarınız. Başka bir çalışma alanı için yapılan bir token, doğru imzalandığında bile reddedilir.

iat / exp

Sorunlu ve geniş, saniyeler içinde. portal token hayat 120 saniyeleri: sadece bir yönlendirme hayatta kalmak zorundadır.

Gerçekleştirilmiş: gerçek

Uygulamanızın bu kişiyi gerçekten imzaladığı ifade. Gerekli, en üst düzeyde.

jti + single_use: gerçek

rastgele bir id ve tek zamanlı bayrak. Aynı bağlantı iki kez kullanılamaz.

platform platformu platform platformu

Müşterinin nereden geldiği için ücretsiz bir etiket (php, wordpress, whmcs...) müşterinin profilinde göstern.

müşteri. id ve müşteri. email

Her iki gerekli de, boşluk kendi müşteri kimliğinizdir; e-posta, portalın müşteriyi nasıl bulduğu ve isteklerini nasıl karşılaştırdığıdır.

müşteri. name / external_id

Seçmeli ekran adı ve boş OpsIQ mağazaları platformunuza karşı.

Kurulum

1
Yol kopyalayın

Ayarlar, Destek Portal, uygulamanızdan sorunsuz işaret-in; Aşağıdaki kod portal adresinize sahiptir ve bu platform için numaralandırılmış notlarla dolu çalışma alanı anahtar.

2
Gizli zaten kodda

Kopyalanan rota bu iş alanının imza sırrı içeriyor, bu yüzden geçmiş olarak çalışıyor. dosyayı tutmak için, ayarlayın OPSIQ_SITE_SECRET (veya çerçevenizin ayarı) yerine sunucuda: bu değer ilk olarak kullanılır. Asla bir sayfaya rota koymayın, JavaScriptBir mobil uygulama veya bir kamu havuzu: sırrı tutan herkes herhangi bir müşteri olarak işaret edebilir.

3
Destek düğmesine yolunuzu rotaya bağlayın

Örneğin https://your-app.com/support-portal.

4
Portalın Kayıtunu Uygulamanızda Kullanın

Portal Studio, Sign-in sayfası, web sitesinin girişini kullanın, Your login page URL: Aynı rotaya ayarlayın. portal ekliyor opsiq_portal_return Kendi ve rota, müşteriyi bu sayfaya geri getiriyor, imzalanıyor.

5
Seçmeli: her yerde işaret

Ayarlar, Destek Portal, her yerde oturum açın: uygulamanızın işareti-out URL, bu yüzden portaldan çıkmak da müşterinizi uygulamanızdan işaret eder.

6
Test Testi

Aynı ayarlar sayfasında portal tarafını tek başına kontrol etmek için imzalanmış bir test bağlantısı, sonra uygulamanıza imzalandığında rotanızı açın.

WHMCS Hiçbir koda ihtiyaç yok: WHMCS Uzak Sitelerden kanca zaten müşterilere portala işaret ediyor ve onların üzerinde bulundukları sayfaya geri getiriyor.
💡
İmza sırrı sizin için dolu. Ayarlarda Destek Portal, uygulamanızdan gelen sorunsuz işaret-in, her örnek zaten bu sitenin kendi sırrı içeriyor, böylece kod geçmiş olarak çalışır: Bu sayfada örnekler gösterilecek veya yapılandırılacak bir şey yoktur. opsiq_whsec_YOUR_SITE_SECRET Onun yerinde her örnek görünüyor. 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.

Tamam rotalar, 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)
}

Bir şey yanlış olduğunda

Portal açılır, ancak imzalanmış

Gizli veya çalışma alanı anahtarı bu iş alanına uymuyor, token 120 saniyeden daha eskidir ( sunucu saati kontrol), ya da aynı bağlantı iki kez açıldı. Bir imzalı bir test bağlantısı: eğer bu çalışırsa, toek’in iddialarını örnekle karşılaştırır.

Her zaman portal evinde topraklar

Geri dönüş adresi portal adresinizin içinde değildi, bu yüzden bunu platformda gösterilen Portal URL ile karşılıyordu.

Konuklar, girişinizin yerine bir hata alır

/login 'ı gerçek giriş sayfanızla değiştirin ve girişinizin verildiği adrese geri döndüğünü sağlayın.

Bazı müşteriler için çalışır sadece

Müşteri. email veya müşteri. id onlar için boş. Her ikisi de gereklidir.

Geliştirici

Müşteri sohbet: Giriş müşterilerini tanır

Seçmeli. Çoğu site buna gerek yok: Sitenizde zaten tanınan bir müşteri ile, tüm hesaplarıyla. WHMCS zaten kancası aracılığıyla yapar. Uzaktan Siteler, web siteniz, kodlarınız, C baskıları ve web sitenizizde doldurduğunuzda bunu ekleyin.

Nasıl çalışır

1
Sayfanız sohbet etiketini yazdırır

İmzalanan bir müşteri için, widget URL taşır veidentity_token=... sunucunuzda imzalanır; misafir için bu açık etiket. Sayfada hiçbir şey gizli değildir: sadece sona ermiş olan bir token.

2
Sohbet tokenleri doğruluyor

İmza, iş alanı anahtar ve geniş. Müşteri daha sonra her sohbet isteğinde bilinir ve bağlantınız kendi siparişleri, rezervasyonları veya faturaları hakkında cevap verebilir.

3
Saatin önünde sohbet yenilenir

Sayfayı çağırıyor mu?opsiq_identity_refresh=1&role=customer. kodunuz cevaplarınızı {"success": true"identity_token":"...}Müşteri imzalandığında veya 401 {"success":false"login_required": Gerçek} Değilken, yeni eller sayfanızın herhangi bir şey baskı yapmadan önce neden koşmalıdır.

portaldan nasıl farklı

Hayat boyu

Bir saat (exp = iat + 3600) Bunun yerine, 120 saniyeler, çünkü bir yönlendirme yerine her sohbet isteği sürüyor.

jti veya single_use

Aynı token, yenilemenin değiştirilmesine kadar her mesaj için kullanılır.

Her şey aynı başka her şeyi

site_key, iat, exp, otantik: gerçek, platform ve müşteri gerekli bir id ve e-posta ile aynı gizli, aynı imza.

💡
Kimlik, WHO'nun müşteri olduğunu söylüyor. siparişleri, rezervasyonları veya faturalar bir bağlantı aracılığıyla sohbete ulaşır: platformunuzun çağrılarını çağıran biri APIYa da, platformunuzun sahip olmadığı zaman APIBir bağlantı artı köprü dosyası (kücut inşaatçı bir tane yapar).
💡
İmza sırrı sizin için dolu. Uzak Sitelerde, siteniz, kodlar, C, her örnek zaten bu sitenin kendi sırrı içeriyor, bu yüzden kod geçmiş olarak çalışır: Bu sayfada örnekler göstermek için hiçbir şey yoktur. opsiq_whsec_YOUR_SITE_SECRET Onun yerinde her örnek görünüyor. 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.

Tamam kodu, 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>`)
}

Bir şey yanlış olduğunda

Sohbet, bir misafir olarak bir giriş müşterisine davranır

Etiket, identity_token olmadan basıldı (Gizli sunucuda eksik, bu yüzden kod kapalı değil), veya token'in çalışma alanı anahtarı ya da gizli maç yapmaz.

İlk başta Tanınır, sonra bir saat sonra misafir

Yeni eller ulaşmamıştır: herhangi bir çıktıdan önce koşmak gerekir, her sayfada sohbet ortaya çıkıyor.

Düz sohbet iki kez gösterir

Şablonunuzdan gelen düz sohbet etiketini çıkarın: Bu kod sohbetin kendisini baskılar.

Geliştirici

Plugins ve SDKs

OpsIQ sağlar. SDK ortak platformlar için paketler ve eklentiler.

Nasıl çalışır
Plugins ve SDKsDört paket: PHP SDK Hayır.SDK, WordPress Eklenti ve eklenti WHMCS modülü, her biri yükleme emri ile.PHPPHP SDKbesteci opsiq/sdkJS JNode. js SDKnpm i @opsiq/sdkWPWordPress eklentiOne-kup yükleme & bağlantıWHWHMCS modülüFatura için ekon + bilet röle
Eklentiler ve SDK' lar
PHP SDK

Kompucu paketi: nesil, aksiyon API yardımcıları, webhook imza doğrulama.

JavaScript SDK

Browser-side: izleme, kimlik, özel olaylar, sohbet kontrolü.

WordPress eklenti

Widget enjeksiyonu, WP kullanıcı seanslarından kimlik, WooCommerce senkronizasyon.

WHMCS modülü

Full integration: widget, bilet rölesi, kimlik, yönetici AI.

Shopify tema uzatma

Otomatik müşteri kimliği ile birlikte uygulama.

PHP SDK hızlı başlangıç

PHP SDK örneği
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);
Geliştirici

Anket API, olaylar ve bağlayıcısız otomasyon

Survey Studio aynı tipte Generali kullanmak için tasarlanmıştır. API, internal executor, event otobüs ve webhook işlemlerinin geri kalanı olarak OpsIQ. Bu, geliştiricilerin paketlenmiş bir bağlantı kurmadan sona ermesini sağlar.

⚠️
Uygulama durumu: canlı katalog şu anda sadece ortaya çıkıyor platform.get.survey.config ve platform.save.survey.config. The surveys.* ve feedback.* Aşağıdaki aileler onaylanmış hedef sözleşmedir ve geri dönmeli unknown_action Kayıtlı olana kadar.

Hedef eylem aileleri

Türler, şablonlar ve hızlı bir başlangıç

surveys.types.*, surveys.templates.* ve surveys.quick_launch.* Liste, önizleme, anlık ve tam başlangıçları doğrulayın.

Anketler ve versiyonları

surveys.create|get|list|update|archive|duplicate artı hayal edilebilir sürüm, geçerlilik ve eylemleri yayımlayın.

İşbirlikleri ve Hedefleri

surveys.deployments.*, surveys.links.*, surveys.audiences.*, surveys.triggers.* ve surveys.variables.*.

Outreach and response

surveys.invitations.*, surveys.campaigns.*, surveys.recipients.*, surveys.responses.*, ihracat, kırmızı aksiyon ve analiz.

Webhooks, ithalat ve geri bildirim

surveys.webhooks.*, surveys.imports.*, feedback.items.*, feedback.analytics.*, feedback.sources.* ve feedback.analysis.*.

Bağlantısız akış

1
Genel API ile oluşturup yayınla

Bir iş alanı-parlanmış anahtar ile yapılan eylemler. Kayıtlar izin, risk, onay, idempotency ve kuru-run davranışı açıklar.

2
İş etkinlik etkinliğiniz alın

Bir inbound webhook için imzalanmış bir olay gönderin, örneğin sipariş iptali veya gemide adım tamamlandı. Replay protection olayı ID'yi deşifre eder.

3
Map it in Actions & Tetikleyiciler

Choose an OpsIQ General API action such as issuing a Survey invitation or preparing a campaign, then map fields from the verified trigger payload.

4
Anket olaylarına abone olun

Belgelenmiş iş güvenli anketini gönderin. * yaşam döngüsü son noktanıza imza, filtre, retry, log ve yetkili yeniden oyunla giriş yapın.

Canonical event Target

Paylaşılan katalog, anket/deployment yayın durumunu, seyircileri ve kararları, davetleri, makyaj / başlangıç / parti / oyun / tamamen/alıcım, kampanya durumu ve teslimat başarısızlıklarını kapsayacak. Yüksek hacimli odaklanma, kaydırma ve soru zamanlaması fan-out için açıkça belgelenmediği sürece Survey Analytics depolamada kalır.

Bir bağlantı isteğe bağlı. Yeniden kullanılabilir platform keşfi, doğrulanmış kimlik, gerçekler, değişkenler ve alıcı enumerasyon ekliyor. General API artı Actions & Teyps /webhooks, paketlenmiş bir konektöre ihtiyaç duymayan geliştiriciler için tam entegrasyon yolu kalır.
Geliştirici

REST API

The OpsIQ REST API lets you programmatically access all platform features.

Nasıl çalışır
REST APIBir terminale bir POST'yi gösterir OpsIQ API Bir Bearer anahtarı ile, açık biletleri listelemek ve sayfayı JSON Cevap.$ curl -X POST https://your-domain.com/api/v1.php \-H "Authorization: Bearer opq_..."200 Tamam{ "data": [{ "id": 4192, "ticket_number": "T-4192","subject": "Card declined", "status": "open" },... more tickets ...], "page": 1, "per_page": 50, "has_more": true }
REST API

İste format

Anahtarı gönderin Authorization: Bearer opq_... veya X-OpsIQ-Key: opq_...Bir kimlik doğrulama başlığı kullanın, ikisi de değil.

API istek formatı
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"
}

Ortak eylemler

API aksiyon tabanlı: bir gönder action Vücutta isim. Her kayıtlı yönetici JSON operasyonu, bir eylem adı altında sabit bir işlemdir. POST {"action":"meta.actions"} (önemli, per-install listesi için gerekli olan anahtar değil, sözleşme talep etmek, risk metadata ve kapsamı. platform.routes.* Köprü sadece eski entegrasyonlar için kalır.

crm.contacts.list

Liste CRM kontakları (kapı haçlı haçlar) Params: q, durum, kaynak, etiket, puan, limit.

crm.contacts.upsert

Bir temas yeniden yaratmak (skop yazmak). Params: e-posta artı alanları, etiketler, notlar.

crm.deals.list

Liste CRM fırsatları (kapı haçlı. read) Params: durum, aşama_id, şirket_id , sahibi_admin_id ve pipeline_id; limit.

crm.activities.record

Bir temas için bir yaşam döngüsü / işletme aktivitesi kaydetmek (skop yazma). Params: e-posta veya iletişim_id, etkinlik, değer, para.

crm.conversions.record

Bir dönüşüm (skop yazma). Params: contact_id veya e-posta, dönüştürme_type, value, para.

crm.events.list

CRM etkinliği yayınını (kapı haçlı haç) Params: limit.

tickets.list

Liste biletleri (çap bileti. read) Params: sayfa, per_page, sort, order, statü, öncelik, bölüm_id, atan_admin_id , client_email, arama.

tickets.get

Bir bilet ve mesajları (kapı biletleri. read) Params: bilet_id veya bilet_num,_messages, messages_limit.

tickets.reply

Bir bilete bir cevap yazın (kampiyon bileti. yazma). Params: bilet_id veya bilet_num, body, author_type, yazar_name, internal.

tickets.update

Bir bilet güncelleyin (gazete bileti. yazma). Params: bilet_id veya bilet_sa, durum, öncelik, konu, bölüm_id, atan_admin_id.

tickets.open

Bir destek bileti açın (kapı biletleri. yazma). Params: müşteri_email, müşteri_name, konu, vücut, öncelik.

tickets.bulk

Bir toplu kuyruk operasyonu (gazete biletleri. yazma) Params: operasyon, ids.

conversations.list

Liste canlı sohbetleri (kapı konuşmaları. read) Params: sayfa, per_page, durum, atan_admin_id, müşteri_email, arama.

conversations.get

Bir konuşma ve mesajları (kapı konuşmaları. read) Params: sohbet_id veya thread_key,_messages içerir.

conversations.messages

Sayfalı mesaj tarihi (kapı konuşmaları. read) Params: konuşma_id, sayfa, per_ page,_internal.

conversations.send

Bir sohbete bir mesaj gönderin (konuş konuşmaları. yazma). Params: konuşma_id, message, sender_type, internal.

conversations.update

Assign, re-status veya bir konuşma (gazete konuşmaları. yazma) Params: sohbet_id, durum, atan_admin_id , konu.

Linkler. list / . get /

Hangi konektörler kurulu olduğunu görün, her birinin yapabileceği ve kimliklerinin çalışma (skop bağlantılarının hazırlandığını).

automations.actions.list

Eylem inşaatçınızın eylemleri (kapı otomasyonları. read) sürecektir.

automations.triggers.list

Hangi koşullarda (skop otomasyonları. read) ne ateş edecek ve hangi koşullar üzerinde (kapı otomasyonu. read).

automations.runs.list

Bir entegrasyon için uygulama tarihi (kapı otomasyonları. read) Params: durum, aksiyon_key.

departments.list

Bölümler bir bilete (kapı bölümleri. read) yollayabilirsin.

notifications.list

Bir operatör için bildirimler (kapı bildirimleri. read) Params: admin_id (gerekli), sadece değil.

analytics.export

Bir rapor bölümü CSV (skop analizi. read) Params: bölüm, preset, from, to. Call Analytics. bölümler. list for valid values.

Site_intelligence. sites. list / . reports. list

İzleyicilenen siteleri ve SEO raporları (kapı site_intelligence. read).

Ticaret. products. list / . get

Mağaza katalogunuz, sayfalı (kapı ticaret. read) filtreler: aktif, kategori, arama. .get Bir ürüne kendi varyantlarıyla geri döner.

Ticaret. orders. list / . get

Mağaza siparişleri (kapı ticaret. read): statü, ödeme_method, kanal, müşteri_email. Fetch bir tane tarafından order_id Ya da ORD- referansı, çizgi eşyalarla. Canlı ağ geçidi kontrolü asla geri dönmez.

commerce.refunds.list

Para iade talepleri ve devletleri (kapı ticaret. read).

commerce.quotes.create

Bir müşteri için bir öğe (skop ticareti. yazma). Kaynak store Ya da bir konektör yok. Hiçbir şey yaratın: sipariş, ödeme yok. Ticaret bölümünü görün.

Biletler.csat. list / . get /

Müşteri-satisfaction verileri (kapı biletleri. read) Puan, bilet, ajan veya dönem tarafından filtre; .metrics Aynı sayıları pano şovlarını döndürür.

conversations.ratings.list

Chat ziyaretçileriniz, yorumla, derecelendirmeye ve acenteye ne ilham verdi (skop konuşmaları).

knowledge.articles.list

Page through your help Center articles (skop kb. read).

knowledge.articles.get

Bir Yardım Merkezi yazısına id (skop kb. read) Params: makale_id.

webhooks.events.list

Her bir olay, ödeme yükü ile bir webhook uç noktasına abone olabilirsiniz. Her planda kullanılabilir, bu yüzden satın almadan önce ona karşı inşa edebilirsiniz.

files.get

Kısa ömürlü bir eklenti için indirme linki (kapı dosyaları. read) Params: referans, ttl.

security.check

Bir sorun olup olmadığını sorun IP veya e-posta burada bloke edilir ya da şüphelidir (gazete güvenliği.read).IP Güvenlik duvarı, bilet spam blok listesi ve önbellek güvenlik AI kararı. Params: ip e-posta.

security.report

Rapor, sisteminizi kötüye kullandı (gazete güvenliği. yazmak) Güvenlik AI tarafından hemen sınıflandırılmış bir güvenlik olayı olarak kaydedilir ve yöneticiler yüksek riskli kararlarda uyarılanırlar. Params: ip, e-posta, neden kaynak.

Güvenlik. blocklist. add / . list

spam kurallarının bilet boru hattı uygulanması (gazete güvenliği. yazma / güvenlik. read) Bilet sayfası "Block sender" kontrolü olarak aynı mağazayı yönetin. Params: kind (email, alan, ip), değer, neden, sons_hours.

💡
Meta. actions her zaman yazaraatiftir. Her bir ihtiyaç ile yüklemenizde mevcut olan her eylemi döndürür, bu yüzden bu listeyi asla tahmin etmek veya zor kodlamanız gerekmez.

Paging, filtreleme ve sıralama

Her liste eylemi aynı parametreleri kullanır, bu yüzden onları bir kez öğrenirsiniz.

Sayfa / per_page

Sayfa numarası başlangıçta 1, ve sayfa büyüklüğü. Varsayılan 50, maksimum 200 Limit ve dengeleme aynı zamanda onları tercih ederseniz kabul edilir.

b / sipariş

Alan, asc veya desc (default desk) ile bir araya gelmek için; her eylem sabit bir tür alanı kabul eder; başka hiçbir şey hatadan ziyade görmezden gelinir.

filters

Filtreleri bir nesne olarak gönderin veya üst düzey bir parametre olarak filtreyi geçin. Bilinmeyen filtreler görmezden gelinir.

Geri dönüş nedir

Maddeler, sayfa, per_page, sayı, toplam ve daha fazlası._more'a kadar sayfaları talep etmeyi devam edin.

Paged, filtrelenmiş, sıralamalı liste isteği
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
}

Hatalar

Her başarısızlık aynı şekli döndürür, istikrarlı bir şekilde code Sen dalabilirsin. İnsan hazırlanamaz bir şekilde maç yapmayın error Metin, hangi yeniden kelimelenebilir.

Hata yanıt
{
  "success": false,
  "code": "missing_scope",
  "error": "API key missing required scope. Needed one of: tickets.read, admin",
  "request_id": "req_8f2c1a9d4b7e"
}
eksik_api_key / geçersiz_apy_key

Anahtar gönderilmedi ya da anahtar yanlış veya sona erdi. HTTP 401.

missing_scope

Anahtar geçerli ancak bu eylemin ihtiyacı olan kapsamın eksikliği. HTTP 403.

sadece_okunabilir_anahtar / kısıtlı_işlem

Anahtar sadece okunur veya bu eylem onun izin listesinde değildir. HTTP 403.

unknown_action

Böyle bir eylem yok. Mevcut liste için meta. actions. HTTP 400.

eksik_parameter / geçersiz_parametre

Gerekli bir parametre yok, ya da değer kabul edilmez. HTTP 400.

not_found

Kayıt mevcut değildir, ya da iş alanında bu anahtarın görebileceği yoktur. HTTP 404.

plan_feature_locked

Planınız bu eylemin ait olduğu özelliği içermez. Vücut isimleri vücut adı feature, the plan_name Güç ve bir güç upgrade_urlYeniden deneme yardımcı olmayacaktır; plan HTTP 402 değiştirmek zorundadır.

license_required

Kurulum lisansı aktif değildir, bu yüzden geri yüklemeye kadar hiçbir eylem çalışmaz. HTTP 402.

selling_paused

Ticarete özel: mağaza kapalı satış yaptı, bu yüzden hiçbir şey alıntılanamaz veya sipariş edilemez. HTTP 400.

rate_limited

Bu anahtar için saat sınırı kullanılır. HTTP 429.

server_error

Bir şey bizim tarafımızda başarısız oldu. İstek_id, rapor etmeniz gerekiyorsa denemeyi tanımlar. HTTP 500.

Güvenli yenidenrries

Bir yazı yayınlandığında, iniş olup olmadığını söyleyemezsiniz. idempotency_key Ve aynı çağrının tekrarı, işi iki kez yapmak yerine orijinal sonucu döndürür.

Idempotent Write
{
  "action": "tickets.reply",
  "ticket_id": 4192,
  "body": "Thanks, that is now fixed.",
  "idempotency_key": "your-unique-id-for-this-attempt"
}
Ne kadar sürer

Bir anahtar için hatırlanır 24 Aynı eyleme karşı saatler ve API anahtar.

Geri döndüğünüz

Orijinal yanıt, artı idempotent_replay: gerçek bu yüzden tekrar bir oyun olduğunu söyleyebilirsiniz.

Başarısızlık yeniden denemelenebilir

Sadece başarılı yazar hatırlanır. Eğer bir çağrı başarısız olursa, tekrar aynı anahtarla gönderir, hangi istediğinizdir.

Okunanlar

Anahtarı görmezden gelir. Bir okumayı tekrarlamak zararsızdır.

Test, hiçbir şeyi değiştirmeden başka bir şey değiştirme

Ekle dry_run: true Herhangi bir yazıya göre anahtarınız, kapsamınız ve parametreler her şey oluşturulmadan veya değiştirilmeden önce çağrı durakları tamamen kontrol edilir.

Kuru koşmak: Güvenilirlik ve ödeme yüklerini güvenle doğrulayın
{
  "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."
}
Binayken kuru_run kullanın. Bir anahtarın doğru kapsamı olduğunu doğrulamanın en hızlı yoludur ve ödeme yükünüz doğru şekilde şekillendirilir, test verileri oluşturmadan sonra temizlemek zorundasınız.

Puan limitleri

Anahtar başına limit

Bir yapılandırılabilir saatli limit per API anahtar (default 1000 Saat başına talepler) Ayarlayın.API Anahtarlar.

Ne zaman aştığında

HTTP 429 with code rate_limited, artı bir Retry-Başlangıç size bir kaç saniye beklemek için nasıl olduğunu anlatıyor. Limit resets at the top of the next hour.

Nerede durduğunu bilmek

Her yanıt X-RateLimit-Limit, X- RateLim-Remaining ve X-KateLimi-Reset (a Unix timestamp) Dikkat etmeden önce devam edin ve yavaşlayın.

Sayma 429 ndan 401

A A A a A AA A A 429 Tekrar beklemek ve denemek demektir. A 401 Anahtarın kendisi yanlış veya süresiz olduğu anlamına gelir, bu yüzden yeniden deneme anahtarı düzeltinceye kadar yardımcı olmayacaktır.

Güvenlik önerileri

Bir IP 'dan tekrar başarısız girişimler ayrı olarak uçmaktadır. Geçerli anahtarlar bunu asla gezir.

En İyi Uygulama

Geri kalanlar düşük olduğunda ve Retry-Bir 429'dan sonra hemen yeniden deneme yerine.

Sürümler ve istikrar

Şimdiki sürüm

v1. Her yanıt X-OpsIQ-API-Version ve X-OpsIQ-API-Status, ne konuştuğunu onaylayabilirsiniz.

Nasıl uyarılacaksınız

Bir versiyon emekli olursa, cevaplar standart Deprecation ve Sunset başlıkları kazanır ve meta. actions raporları daprecated ve gün batıklığı bildirir. Check those in your monitoring and you will never be surprise.

Ne değişmeyecek

Mevcut eylem isimleri, parametreleri ve hata kodları. Yeni eylemler ve yeni opsiyonlar herhangi bir zamanda eklenebilir, bu yüzden onları başarısız etmekten ziyade tanımadığınız alanları görmezden gelirsiniz.

Tamam bir bütünleme, bitirmeye başlayın

Bu tüm döngüdür: iş bulmak, okumak, üzerinde hareket edin ve ne yaptığını doğrulayın.

API üzerinde tam bilet akışı
# 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}
💡
Yukarıdaki her şey konuşma için aynı şekilde çalışır: konuşmalar. list, konuşmaları. get, konuşmalar. send ve konuşmalar. update aynı modeli takip eder, parametreler ve cevap şekli.

Daha fazla çalışma örneği

Bunların her biri, bir parçadan ziyade gerçek bir entegrasyon parçasının tam ve yönetilebilir bir parçasıdır.

Sayfa her kayıt aracılığıyla, üç dilde

Kural her yerde aynıdır: bir sonraki sayfayı bir daha sormaya devam edin has_more Sahte. Hiç toplam tahmin et.

Python · her açık bilet üzerinden sayfa
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 · Sayfa her liderlik aracılığıyla
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 · her açık bilet üzerinden sayfa
<?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 her başarısızlığın üstesinden gel

Onkoloji codeAma asla kelimeyle ilgili errorBu sarmak tek bir işlevdeki tüm sözleşmedir.

Python · her hata kodunu doğru kullanan bir müşteri
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")

Saat içinde kötü bir tatmin puanı yanıtlayın

Düşük puanları okuyun, her biri için bir bilet açın ve asla aynı şeyi iki kez hareket etmeyin.

Mutsuz müşteriler üzerinde döngüyü kapatın
# 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.

Bir öğeye bir yazıp tüccarın cevabına bakın

Size ne toplayacağınızı söyleyen bir reddedilme
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 }
}
⚠️
Müşteriyi göster totals.total Tam olarak geri döndükçe, Sayı her zaman birim fiyatını çoğaltmıyor - bir otel üç gece boyunca tek bir oda getiriyor – bu yüzden tüccarın aslında ne sorumlu olacağını hesaplayabileceğiniz bir rakam.

Üretimde çalıştırmak için güvenli olan bir webhook alıcısı

Verify, de-duplicate, hızlı bir şekilde cevap verin, sonra işi yapın. Teslimler yeniden deneyin, bu yüzden aynı olay birden fazla gelebilir.

PHP · bir üretim şekli webhook alıcı
<?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

Planlar ve hak

Her eylem bir ürün özelliğine aittir ve planınız hangi özellikleri olduğuna karar verir. Eğer planınız bir özellik içermese, aksiyon cevapları cevap verir. 402 - Anahtarınız kontrol edildikten sonra, bu yüzden bir davetsiz çağrıcı planınız hakkında hiçbir şey öğrenmez ve her şeyden önce yaratılmış değildir, bu nedenle bloke edilen bir yazı asla yarı uygulamacı değildir.

Planlı bir eylem
{
  "success": false,
  "code": "plan_feature_locked",
  "feature": "commerce",
  "plan_locked": true,
  "plan_name": "Growth",
  "upgrade_url": "https://…",
  "request_id": "req_8f2c1a9d4b7e"
}
Bir izin probleminden nasıl ayrı anlatılır

A A A a A AA A A403KEY çok dar - doğru kapsamı ile yeniden yaz ve işe yarıyor.402ACCOUNT'nin özelliği olmadığı anlamına gelir - anahtarın kilidini açamaz, planın değişmesi gerekir.

Bir 402 yeniden denemeyin

Geçici değildir. Yüzeyi upgrade_url Kim geri dönme ve tekrar denemeye yerine hesabı sahibi olursa.

Yönetim kapsamı onu atmıyor

Kapsam, anahtar sorun delegesinin ne olduğunu ifade eder; plan hesabın satın alındığı şeyi ifade eder. Bir yönetici-skop anahtarı hala planın eksikleri için bir 402 alır.

Daha önce geminizi bul

- Ne? feature Her eylem ihtiyacı aşağıdaki ve içerideki eylem rehberinde yayınlanmaktadır. meta.actionAncak, üretimde keşfetmeden önce zamanınızı kontrol edebilirsiniz.

Bir anahtarın nerede olduğunu tam olarak görmek için en hızlı yol meta.me. Planı kuvvetle bildiriyor, her özellik taşır ve bu anahtarın her biri için neden çağıramayacağı her eylem.

meta. me – bu anahtar aslında ne yapabilir
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"
    }
  }
}
Meta. me ilk olarak bir entegrasyon iki taksi arasında farklı davranırken, “bu anahtar bunu yapamaz” tek bir istekte, yönetici açmadan cevap verir.

Bir fiyat teklif etmek

commerce.quotes.create Bir müşteri için bir öğe fiyatları hiçbir şey yaratmaz - sipariş, ödeme seansı yok - bu yüzden bir müşteri hala karar verirken arama güvenlidir.

Bir öğeye bir söz verir
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"}}
Satıcı toplam kazanır

Bir bağlantılı platform için, toplam o tüccardan geliyor ve burada asla yeniden hesaplanmamış. Sayı her zaman bir birim fiyatını çoğaltmaz - üç gece boyunca bir otel alıntısı - bu yüzden size verilen toplamı göster, hiç kimse çalışmadın.

Refusals size neyin eksik olduğunu anlatıyor

Eğer tüccar müşteriden daha fazlasına ihtiyaç duyarsa, elde edersiniz quote_refused Biriyle birlikte missing Liste, alanları toplamak için adlandırmak ve tüccarın göstermek için kendi kelime.

Sipariş etmek bir API call

Bir alıntı, müşterinin nerede olduğunu doğrulayın - sohbette imza kartı veya tüccarın kendi çekout – asla bu API aracılığıyla. Cevap bunu söylüyor ordering.

Satış bittiğinde duraklanır

Mağaza kapalı satıyorsa, cevap cevaplar selling_paused Fiyatlama yerine kimse satın alamaz.

Diğer uç noktaları

İhtiyacınız olan hemen her şey bir POST'dir /api/v1.phpBunlar istisnalar ve her birinin ne için olduğu.

/api/v1/openapi.php · /api/v1/postman.php · /api/docs/

Makine sözleşmesi ve insan referansı gerekli değildir, bu yüzden bir taneniz olmadan keşfedebilirsiniz.

/api/ai_stream.php

Canlı sohbet cevapları için sunucu-sent olaylar, üretildiği gibi. Bir akış, bir JSON eylem değil.

/api/writing.php

Eski AI-Yaz sonu noktası. Her şey aynı zamanda mevcut writing.* /api/v1.php, üzerinde eylemler, yeni çalışmanın gitmesi gereken yerdir.

/api/inbox_copilot.php

Tasarlamak, yeniden yazmak ve kendi yöneticinizde bulunan bir bilet için triage.

/api/v1/si/…

Site Zekası küçük bir REST API - siteler, taramalar, sorunlar, anahtar kelimeler, gelir – bir dağıtmadan sonra bir tarama başlatmak ve sonucu okumak isteyen CI boru hatları için.

/api/connectors.php?slug=&token=

Bağlantılı bir platform POST'ler kendi webhookslarını size verir. token, bağlantı etkinleştirdiğinizde minteddir.

/api/integrations/*.php

Bütünleştirme motoru: eylemleri çalıştırın ve doğrulayın ve en büyük satışlar, kimlik ve yolculuk olayları. API & Webhook oluşturucusu altında yayınlanan kendi anahtar türü kullanır.

💡
Bunların hepsi aynı plan kurallarına eylemleri olarak uyuyor. Planınızın da burada 402 cevabı içermiyor, aynı şekilde.

Her eylem, kapsamı ile ihtiyacı vardır

Bu liste çalışan katalogdan oluşturulur, bu yüzden her zaman üzerinde bulunduğunuz sürümle karşılaşır. meta.actions Aynı bilgiyi JSON olarak döndürür.

2420 named actions: 805 reads, 1615 writes and 69 scopes. Every registered administrator JSON operation has a stable named action. OpenAPI: /api/v1/openapi.php. Postman: /api/v1/postman.php. Contract quality: declared_dynamic: 606; explicit: 63; route_inferred: 1633; source_inferred: 118.

administration (25)

administration.2fa.disable

Write. Scope: administration.write, admin. Contract: route_inferred. Admin 2fa Disable

administration.2fa.enable

Write. Scope: administration.write, admin. Contract: route_inferred. Admin 2fa Enable

administration.2fa.recovery.regenerate

Write. Scope: administration.write, admin. Contract: route_inferred. Admin 2fa Recovery Regenerate

administration.2fa.setup

Read. Scope: administration.read, admin. Contract: route_inferred. Admin 2fa Setup

administration.2fa.status

Read. Scope: administration.read, admin. Contract: declared_dynamic. Admin 2fa Status

administration.ai.train.from.reply

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Ai Train From Reply

administration.brain.cancel

Write. Scope: administration.write, admin. Contract: declared_dynamic. Admin Brain Cancel

administration.brain.view

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Brain View

administration.chat.access.check

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Chat Access Check

administration.chat.create.ticket.on.behalf

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Chat Create Ticket On Behalf

administration.chat.draft.ticket.from.thread

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Chat Draft Ticket From Thread

administration.conv.delete

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv Delete

administration.conv.get

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv Get

administration.conv.list

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv List

administration.conv.new

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv New

administration.conv.save

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Conv Save

administration.notification.prefs.get

Read. Scope: administration.read, admin. Contract: declared_dynamic. Admin Notification Prefs Get

administration.notification.prefs.save

Write. Scope: administration.write, admin. Contract: declared_dynamic. Admin Notification Prefs Save

administration.notifications.list

Read. Scope: administration.read, admin. Contract: route_inferred. Admin Notifications List

administration.notifications.mark.all.read

Write. Scope: administration.write, admin. Contract: declared_dynamic. Admin Notifications Mark All Read

administration.notifications.mark.read

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Notifications Mark Read

administration.notifications.pulse

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Notifications Pulse

administration.online.list

Read. Scope: administration.read, admin. Contract: declared_dynamic. Admin Online List

administration.presence.ping

Write. Scope: administration.write, admin. Contract: declared_dynamic. Admin Presence Ping

administration.realtime.token

Write. Scope: administration.write, admin. Contract: route_inferred. Admin Realtime Token

Analitik Analiz analitik (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

sohbet (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

commerce (11)

commerce.analytics.snapshot

Read. Scope: commerce.read, analytics.read, admin. Contract: explicit. Read privacy-safe storefront analytics

commerce.orders.get

Read. Scope: commerce.read, admin. Contract: explicit. Get one Store order with its line items

commerce.orders.list

Read. Scope: commerce.read, admin. Contract: explicit. List Store orders in the bound workspace

commerce.pages.list

Read. Scope: commerce.read, admin. Contract: explicit. List storefront pages and promotional modals

commerce.products.get

Read. Scope: commerce.read, admin. Contract: explicit. Get one Store product with its variants Required fields: product_id.

commerce.products.list

Read. Scope: commerce.read, admin. Contract: explicit. List Store products in the bound workspace

commerce.quotes.create

Write. Scope: commerce.write, admin. Contract: explicit. Quote an item for a customer (creates nothing) Required fields: source, item_id. Retry-safe with idempotency_key.

commerce.readiness.get

Read. Scope: commerce.read, admin. Contract: explicit. Check demo readiness and merchant go-live readiness

commerce.refunds.list

Read. Scope: commerce.read, admin. Contract: explicit. List Store refund requests in the bound workspace

commerce.storefront.catalog.get

Read. Scope: commerce.read, admin. Contract: explicit. Discover Store themes, designs, blocks and promotional shells

commerce.storefront.get

Read. Scope: commerce.read, admin. Contract: explicit. Get the bound workspace storefront configuration

communications (21)

communications.auth.check

Read. Scope: admin. Contract: route_inferred. Email Auth Check

communications.campaign.delete

Write. Scope: communications.write, admin. Contract: route_inferred. Push Campaign Delete

communications.campaign.save

Write. Scope: communications.write, admin. Contract: route_inferred. Push Campaign Save

communications.campaign.send

Write. Scope: communications.write, admin. Contract: route_inferred. Push Campaign Send

communications.campaigns.list

Read. Scope: communications.read, admin. Contract: declared_dynamic. Push Campaigns List

communications.drafts.delete

Write. Scope: communications.write, admin. Contract: route_inferred. Email Drafts Delete

communications.drafts.list

Read. Scope: communications.read, admin. Contract: declared_dynamic. Email Drafts List

communications.drafts.save

Write. Scope: communications.write, admin. Contract: route_inferred. Email Drafts Save

communications.drafts.send

Write. Scope: communications.write, admin. Contract: route_inferred. Email Drafts Send

communications.mailboxes.delete

Write. Scope: communications.write, admin. Contract: route_inferred. Email Mailboxes Delete

communications.mailboxes.list

Read. Scope: communications.read, admin. Contract: route_inferred. Email Mailboxes List

communications.mailboxes.poll

Read. Scope: communications.read, admin. Contract: declared_dynamic. Email Mailboxes Poll

communications.mailboxes.save

Write. Scope: communications.write, admin. Contract: route_inferred. Email Mailboxes Save

communications.mailboxes.test

Read. Scope: communications.read, admin. Contract: declared_dynamic. Email Mailboxes Test

communications.pipe.regen.token

Write. Scope: communications.write, admin. Contract: declared_dynamic. Email Pipe Regen Token

communications.platform.list

Read. Scope: communications.read, admin. Contract: declared_dynamic. Email Platform List

communications.platform.send

Write. Scope: communications.write, admin. Contract: route_inferred. Email Platform Send

communications.settings.get

Read. Scope: communications.read, admin. Contract: declared_dynamic. Email Settings Get

communications.settings.save

Write. Scope: communications.write, admin. Contract: route_inferred. Email Settings Save

communications.settings.test

Read. Scope: communications.read, admin. Contract: route_inferred. Email Settings Test

communications.vapid.generate

Write. Scope: communications.write, admin. Contract: declared_dynamic. Push Vapid Generate

connector_builder (11)

connector_builder.export

Read. Scope: connector_builder.read, admin. Contract: explicit. Export a generated connector Required fields: slug.

connector_builder.generate

Write. Scope: connector_builder.write, admin. Contract: route_inferred. Generate a connector package Required fields: spec.

connector_builder.get

Read. Scope: connector_builder.read, admin. Contract: route_inferred. Load a Builder specification Required fields: slug.

connector_builder.import.curl

Write. Scope: connector_builder.write, admin. Contract: route_inferred. Import cURL into Connector Builder

connector_builder.import.openapi

Write. Scope: connector_builder.write, admin. Contract: route_inferred. Import OpenAPI into Connector Builder

connector_builder.import.postman

Write. Scope: connector_builder.write, admin. Contract: route_inferred. Import Postman into Connector Builder

connector_builder.list

Read. Scope: connector_builder.read, admin. Contract: declared_dynamic. List Builder connectors

connector_builder.profiles

Read. Scope: connector_builder.read, connectors.read, admin. Contract: source_inferred. List Connector Builder profiles and capability contracts

connector_builder.test

Write. Scope: connector_builder.write, admin. Contract: route_inferred. Run Builder conformance tests Required fields: slug.

connector_builder.update

Write. Scope: connector_builder.write, admin. Contract: route_inferred. Update a generated connector Required fields: slug, spec.

connector_builder.validate

Read. Scope: connector_builder.read, admin. Contract: route_inferred. Validate a Builder specification Required fields: spec.

connectors (51)

connectors.action

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Action

connectors.backfill

Write. Scope: connectors.write, admin. Contract: route_inferred. Start connector backfill Required fields: slug.

connectors.backfill.route.connectors.backfill

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Backfill

connectors.backfill.status

Read. Scope: connectors.read, admin. Contract: route_inferred. Read connector backfill status Required fields: slug.

connectors.backfill.status.route.connectors.backfill.status

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Backfill Status

connectors.builder.ai.actions

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Ai Actions

connectors.builder.ai.draft

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Ai Draft

connectors.builder.ai.handler

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Ai Handler

connectors.builder.ai.map

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Ai Map

connectors.builder.delete

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Delete

connectors.builder.dry.run

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Dry Run

connectors.builder.generate

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Generate

connectors.builder.import.curl

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Import Curl

connectors.builder.import.openapi

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Import Openapi

connectors.builder.import.postman

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Import Postman

connectors.builder.list

Read. Scope: connectors.read, admin. Contract: declared_dynamic. Connectors Builder List

connectors.builder.load

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Load

connectors.builder.marketplace.apply

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Marketplace Apply

connectors.builder.marketplace.link

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Marketplace Link

connectors.builder.marketplace.status

Read. Scope: connectors.read, admin. Contract: declared_dynamic. Connectors Builder Marketplace Status

connectors.builder.marketplace.submit

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Marketplace Submit

connectors.builder.schema

Read. Scope: connectors.read, admin. Contract: declared_dynamic. Connectors Builder Schema

connectors.builder.test

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Test

connectors.builder.test.action

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Test Action

connectors.builder.update

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Builder Update

connectors.builder.validate

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Builder Validate

connectors.contacts.import

Write. Scope: connectors.write, admin. Contract: route_inferred. Connector Contacts Import

connectors.contract

Read. Scope: connectors.read, connector_builder.read, admin. Contract: source_inferred. Read the canonical connector capability contract

connectors.customers.sync

Write. Scope: connectors.write, admin. Contract: route_inferred. Synchronize connector customers Required fields: slug.

connectors.disable

Write. Scope: connectors.write, admin. Contract: route_inferred. Disable a connector Required fields: slug.

connectors.disable.route.connectors.disable

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Disable

connectors.email.account.department

Read. Scope: connectors.read, admin. Contract: route_inferred. Connector Email Account Department

connectors.email.account.remove

Write. Scope: connectors.write, admin. Contract: route_inferred. Connector Email Account Remove

connectors.email.account.routing

Read. Scope: connectors.read, admin. Contract: route_inferred. Connector Email Account Routing

connectors.enable

Write. Scope: connectors.write, admin. Contract: route_inferred. Enable a connector Required fields: slug.

connectors.enable.route.connectors.enable

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Enable

connectors.get

Read. Scope: connectors.read, admin. Contract: source_inferred. Connectors Get

connectors.get.route.connectors.get

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Get

connectors.install

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Install

connectors.integrity.scan

Read. Scope: connectors.read, admin. Contract: declared_dynamic. Connector Integrity Scan

connectors.list

Read. Scope: connectors.read, admin. Contract: explicit. List installed connectors and capabilities

connectors.list.route.connectors.list

Read. Scope: connectors.read, admin. Contract: declared_dynamic. Connectors List

connectors.oauth.start

Write. Scope: connectors.write, admin. Contract: route_inferred. Connector Oauth Start

connectors.settings.get

Read. Scope: connectors.read, admin. Contract: route_inferred. Read connector settings Required fields: slug.

connectors.settings.save

Write. Scope: connectors.write, admin. Contract: route_inferred. Save connector settings Required fields: slug, settings.

connectors.shared.oauth.delete

Write. Scope: connectors.write, admin. Contract: route_inferred. Connector Shared Oauth Delete

connectors.sync.customers

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Sync Customers

connectors.test

Read. Scope: connectors.read, admin. Contract: source_inferred. Connectors Test

connectors.test.route.connectors.test

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Test

connectors.uninstall

Write. Scope: connectors.write, admin. Contract: route_inferred. Connectors Uninstall

connectors.workflow.recipes

Read. Scope: connectors.read, admin. Contract: route_inferred. Connectors Workflow Recipes

conversations (38)

conversations.ai.draft

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Ai Draft

conversations.ai.rewrite

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Ai Rewrite

conversations.archive

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Archive

conversations.assign

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Assign

conversations.assignees

Write. Scope: conversations.write, admin. Contract: declared_dynamic. Admin Client Chat Assignees

conversations.bulk

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Bulk

conversations.clear

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Clear

conversations.clear.all

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Clear All

conversations.customer.tickets

Write. Scope: conversations.write, admin. Contract: declared_dynamic. Admin Client Chat Customer Tickets

conversations.decline

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Decline

conversations.delete

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Delete

conversations.delete.last

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Delete Last

conversations.edit.last

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Edit Last

conversations.export

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Export

conversations.forget.visitor

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Forget Visitor

conversations.get

Read. Scope: conversations.read, admin. Contract: source_inferred. Conversations Get

conversations.history

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat History

conversations.list

Read. Scope: conversations.read, admin. Contract: source_inferred. Conversations List

conversations.messages

Read. Scope: conversations.read, admin. Contract: source_inferred. Conversations Messages

conversations.ratings.list

Read. Scope: conversations.read, admin. Contract: explicit. List rated Client Chat conversations

conversations.resolve

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Resolve

conversations.saved.replies

Write. Scope: conversations.write, admin. Contract: declared_dynamic. Admin Client Chat Saved Replies

conversations.saved.reply.add

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Add

conversations.saved.reply.ai.generate

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Ai Generate

conversations.saved.reply.delete

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Delete

conversations.saved.reply.save

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Saved Reply Save

conversations.send

Write. Scope: conversations.write, admin. Contract: source_inferred. Conversations Send Retry-safe with idempotency_key.

conversations.send.route.admin.client.chat.send

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Send

conversations.tags.set

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Tags Set

conversations.thread

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Thread

conversations.threads

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Threads

conversations.toggle

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Toggle

conversations.toggle.attachments

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Toggle Attachments

conversations.toggle.call.button

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Toggle Call Button

conversations.typing

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Typing

conversations.unarchive

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Unarchive

conversations.update

Write. Scope: conversations.write, admin. Contract: explicit. Update a conversation status, assignment or subject Retry-safe with idempotency_key.

conversations.upload

Write. Scope: conversations.write, admin. Contract: route_inferred. Admin Client Chat Upload

s (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.

müşteriler (44)

customers.analyze

Write. Scope: customers.write, journey.write, admin. Contract: route_inferred. Analyze a customer journey with AI Required fields: client_id.

customers.behaviour

Read. Scope: admin. Contract: route_inferred. Cdp Behaviour

customers.behaviour.analyze

Write. Scope: admin. Contract: route_inferred. Cdp Behaviour Analyze

customers.chat.embed.backfill

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Embed Backfill

customers.chat.embed.status

Read. Scope: customers.read, admin. Contract: declared_dynamic. Client Chat Embed Status

customers.chat.faq.ai.generate

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Ai Generate

customers.chat.faq.approve.all

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Approve All

customers.chat.faq.delete

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Delete

customers.chat.faq.delete.all

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Faq Delete All

customers.chat.faq.export

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Faq Export

customers.chat.faq.generate

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Generate

customers.chat.faq.import

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Import

customers.chat.faq.list

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq List

customers.chat.faq.save

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Save

customers.chat.faq.set.help

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Set Help

customers.chat.faq.set.help.all

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Set Help All

customers.chat.faq.status

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Faq Status

customers.chat.grant.upload

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Grant Upload

customers.chat.help.set.slug

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Help Set Slug

customers.chat.knowledge.crawl.step

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Crawl Step

customers.chat.knowledge.delete

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Delete

customers.chat.knowledge.delete.all

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Knowledge Delete All

customers.chat.knowledge.delete.duplicates

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Knowledge Delete Duplicates

customers.chat.knowledge.duplicates

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Knowledge Duplicates

customers.chat.knowledge.export.json

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Knowledge Export Json

customers.chat.knowledge.import.json

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Import Json

customers.chat.knowledge.preview

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Preview

customers.chat.knowledge.recrawl

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Recrawl

customers.chat.knowledge.test.url

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Knowledge Test Url

customers.chat.revoke.upload

Write. Scope: customers.write, admin. Contract: route_inferred. Client Chat Revoke Upload

customers.chat.upload.agent.avatar

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Upload Agent Avatar

customers.chat.upload.ai.avatar

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Upload Ai Avatar

customers.chat.upload.icon

Write. Scope: customers.write, admin. Contract: declared_dynamic. Client Chat Upload Icon

customers.client.analyze

Write. Scope: admin. Contract: route_inferred. Cdp Client Analyze

customers.client.delete

Write. Scope: admin. Contract: route_inferred. Cdp Client Delete

customers.client.export

Write. Scope: admin. Contract: route_inferred. Cdp Client Export

customers.client.journey

Read. Scope: admin. Contract: route_inferred. Cdp Client Journey

customers.client.prepare.outreach

Write. Scope: customers.write, admin. Contract: route_inferred. Cdp Client Prepare Outreach

customers.clients.list

Read. Scope: admin. Contract: route_inferred. Cdp Clients List

customers.detail

Read. Scope: customers.read, admin. Contract: route_inferred. Client Detail

customers.get

Read. Scope: customers.read, crm.read, admin. Contract: route_inferred. Get a customer profile Required fields: client_id.

customers.journey

Read. Scope: customers.read, journey.read, admin. Contract: route_inferred. Get a complete customer journey Required fields: client_id.

customers.list

Read. Scope: customers.read, crm.read, admin. Contract: route_inferred. List known customers

customers.outreach.prepare

Write. Scope: customers.write, crm.write, admin. Contract: route_inferred. Prepare CRM outreach for a customer Required fields: client_id.

departments (1)

departments.list

Read. Scope: departments.read, admin. Contract: source_inferred. Departments List

e-posta (2)

email.template.send

Write. Scope: email.write, admin. Contract: source_inferred. Send one governed workspace email template Required fields: template, to. Retry-safe with idempotency_key.

email.templates.list

Read. Scope: email.read, admin. Contract: source_inferred. List email templates available to this workspace

engagement (163)

engagement.ab.autowinner

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ab Autowinner

engagement.ab.bandit

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ab Bandit

engagement.address.get

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Survey Address Get

engagement.address.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Address Save

engagement.ai.agent

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Agent

engagement.ai.analyze

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Analyze

engagement.ai.compile.profile

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Compile Profile

engagement.ai.copy

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Copy

engagement.ai.critique

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Ai Critique

engagement.ai.decide

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Decide

engagement.ai.design

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Design

engagement.ai.edit

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Edit

engagement.ai.generate

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Generate

engagement.ai.ideas

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Ai Ideas

engagement.ai.image

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Image

engagement.ai.image.edit

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Image Edit

engagement.ai.localize

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Localize

engagement.ai.logo

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Logo

engagement.ai.media.jobs

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Ai Media Jobs

engagement.ai.narrative

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Ai Narrative

engagement.ai.responsive

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Ai Responsive

engagement.ai.variants

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Ai Variants

engagement.ai.video.start

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Video Start

engagement.ai.video.status

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Ai Video Status

engagement.approval.decide

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Approval Decide

engagement.approval.request

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Approval Request

engagement.approvals.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Approvals List

engagement.asset.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Asset Delete

engagement.asset.upload

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Asset Upload

engagement.assets.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Assets List

engagement.audience.materialize

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Audience Materialize

engagement.audience.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Audience Save

engagement.audience.test

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Audience Test

engagement.audit.export

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Audit Export

engagement.autoresponder.get

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Autoresponder Get

engagement.autoresponder.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Autoresponder Save

engagement.bank.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Bank Delete

engagement.bank.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Survey Bank List

engagement.bank.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Bank Save

engagement.bank.used

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Bank Used

engagement.blackouts.get

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Blackouts Get

engagement.blackouts.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Blackouts Save

engagement.brand.kit.bootstrap

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Brand Kit Bootstrap

engagement.brand.kit.font.upload

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Brand Kit Font Upload

engagement.brand.kit.get

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Brand Kit Get

engagement.brand.kit.get.route.survey.brand.kit.get

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Survey Brand Kit Get

engagement.brand.kit.save

Write. Scope: engagement.write, admin. Contract: declared_dynamic. Promo Brand Kit Save

engagement.brand.kit.save.route.survey.brand.kit.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Brand Kit Save

engagement.campaign.archive

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Archive

engagement.campaign.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Delete

engagement.campaign.duplicate

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign Duplicate

engagement.campaign.get

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign Get

engagement.campaign.launch

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Campaign Launch

engagement.campaign.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign List

engagement.campaign.pause

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign Pause

engagement.campaign.preview

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign Preview

engagement.campaign.publish

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Publish

engagement.campaign.rollback

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Rollback

engagement.campaign.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Save

engagement.campaign.save.route.survey.campaign.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Campaign Save

engagement.campaign.toggle

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Campaign Toggle

engagement.campaign.versions

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Campaign Versions

engagement.comment.add

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Comment Add

engagement.comments.add

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Comments Add

engagement.comments.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Comments Delete

engagement.comments.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Comments List

engagement.comments.list.route.survey.comments.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Comments List

engagement.comments.resolve

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Comments Resolve

engagement.connectors.catalog

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Connectors Catalog

engagement.coupon.providers

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Coupon Providers

engagement.coupons.clear

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Coupons Clear

engagement.coupons.stats

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Coupons Stats

engagement.coupons.upload

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Coupons Upload

engagement.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Announcement Delete

engagement.delete.route.tour.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Tour Delete

engagement.delivery.analytics

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Delivery Analytics

engagement.delivery.dashboard

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Delivery Dashboard

engagement.deployment.ab.promote

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Deployment Ab Promote

engagement.deployment.ab.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Deployment Ab Save

engagement.deployment.publish

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Deployment Publish

engagement.deployment.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Deployment Save

engagement.deployment.status

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Deployment Status

engagement.detail

Read. Scope: engagement.read, admin. Contract: route_inferred. Campaign Detail

engagement.digest.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Digest Save

engagement.feed.catalog

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Feed Catalog

engagement.feed.items

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Feed Items

engagement.geo.preview

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Geo Preview

engagement.idle.cron.set

Write. Scope: engagement.write, admin. Contract: route_inferred. Proactive Idle Cron Set

engagement.import.create

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Import Create

engagement.import.replay

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Import Replay

engagement.leads.export

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Leads Export

engagement.leads.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Leads List

engagement.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Announcements List

engagement.list.route.tours.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Tours List

engagement.module.set.ai.live

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Module Set Ai Live

engagement.module.set.custom.html

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Module Set Custom Html

engagement.module.set.enabled

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Module Set Enabled

engagement.module.status

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Promo Module Status

engagement.onsite.preview

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Onsite Preview

engagement.pause.all

Write. Scope: engagement.write, admin. Contract: declared_dynamic. Promo Pause All

engagement.presence

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Presence

engagement.preview.share

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Preview Share

engagement.push.draft

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Push Draft

engagement.recipients.issue

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Recipients Issue

engagement.recipients.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Recipients List

engagement.recipients.revoke

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Recipients Revoke

engagement.response.detail

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Response Detail

engagement.responses.browse

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Responses Browse

engagement.rule.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Proactive Rule Delete

engagement.rule.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Proactive Rule Save

engagement.rule.stats

Read. Scope: engagement.read, admin. Contract: route_inferred. Proactive Rule Stats

engagement.rule.test

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Rule Test

engagement.rule.toggle

Write. Scope: engagement.write, admin. Contract: route_inferred. Proactive Rule Toggle

engagement.rules.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Proactive Rules List

engagement.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Announcement Save

engagement.save.route.tour.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Tour Save

engagement.stats

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Stats

engagement.stats.route.tour.stats

Read. Scope: engagement.read, admin. Contract: route_inferred. Tour Stats

engagement.studio.a11y

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio A11y

engagement.studio.ai.generate

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Ai Generate

engagement.studio.ai.insights

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Ai Insights

engagement.studio.ai.target

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Ai Target

engagement.studio.archive

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Archive

engagement.studio.assets

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Survey Studio Assets

engagement.studio.create

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Create

engagement.studio.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Delete

engagement.studio.duplicate

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Duplicate

engagement.studio.event

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Studio Event

engagement.studio.get

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Studio Get

engagement.studio.governance

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Governance

engagement.studio.list

Read. Scope: engagement.read, admin. Contract: declared_dynamic. Survey Studio List

engagement.studio.preview

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Studio Preview

engagement.studio.preview.link

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Studio Preview Link

engagement.studio.publish

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Publish

engagement.studio.rename

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Rename

engagement.studio.revert

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Revert

engagement.studio.save.draft

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Save Draft

engagement.studio.save.targeting

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Save Targeting

engagement.studio.set.active

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Set Active

engagement.studio.set.status

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Set Status

engagement.studio.template.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Template Delete

engagement.studio.template.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Template Save

engagement.studio.tpl.preview

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Tpl Preview

engagement.studio.upload

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Upload

engagement.studio.webhook

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Studio Webhook

engagement.targeting.simulate

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Targeting Simulate

engagement.template.apply

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Template Apply

engagement.template.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Template List

engagement.template.save.custom

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Template Save Custom

engagement.toggle

Write. Scope: engagement.write, admin. Contract: route_inferred. Announcement Toggle

engagement.toggle.route.tour.toggle

Write. Scope: engagement.write, admin. Contract: route_inferred. Tour Toggle

engagement.trigger.set.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Trigger Set Save

engagement.variant.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Variant Delete

engagement.variant.list

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Variant List

engagement.variant.promote

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Variant Promote

engagement.variant.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Variant Save

engagement.version.compare

Read. Scope: engagement.read, admin. Contract: route_inferred. Survey Version Compare

engagement.version.get

Read. Scope: engagement.read, admin. Contract: route_inferred. Promo Version Get

engagement.version.label

Write. Scope: engagement.write, admin. Contract: route_inferred. Promo Version Label

engagement.webhook.delete

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Webhook Delete

engagement.webhook.replay

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Webhook Replay

engagement.webhook.run

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Webhook Run

engagement.webhook.save

Write. Scope: engagement.write, admin. Contract: route_inferred. Survey Webhook Save

feedback (8)

feedback.analytics

Read. Scope: feedback.read, admin. Contract: source_inferred. Feedback Analytics

feedback.detractors

Read. Scope: feedback.read, admin. Contract: source_inferred. Feedback Detractors

feedback.get

Read. Scope: feedback.read, admin. Contract: source_inferred. Feedback Get

feedback.ingest

Write. Scope: feedback.write, admin. Contract: explicit. Ingest a feedback record or external review

feedback.list

Read. Scope: feedback.read, admin. Contract: source_inferred. Feedback List

feedback.overview

Read. Scope: feedback.read, admin. Contract: source_inferred. Feedback Overview

feedback.sources.list

Read. Scope: feedback.read, admin. Contract: explicit. List Voice of Customer feedback sources

feedback.update

Write. Scope: feedback.write, admin. Contract: source_inferred. Feedback Update Retry-safe with idempotency_key.

files (1)

files.get

Read. Scope: files.read, admin. Contract: source_inferred. Files Get

hr (48)

hr.agent.incident.close

Write. Scope: hr.write, admin. Contract: route_inferred. Close an agent incident — the same act that lifts the suspension it caused Required fields: incident_uuid, resolution.

hr.agent.step

Write. Scope: hr.write, admin. Contract: route_inferred. Run one agent step: gate verdict, execution and outcome reported separately Required fields: run_uuid, agent_key, tool_key, jurisdiction, purpose.

hr.agent.step.status

Read. Scope: hr.read, admin. Contract: route_inferred. What actually happened at a step (permitted, executed, proven, failed, compensated) Required fields: run_uuid, seq.

hr.agent.takeover

Write. Scope: hr.write, admin. Contract: route_inferred. A human takes an agent run; no further agent steps are accepted Required fields: run_uuid.

hr.agent.tool.grant

Write. Scope: hr.write, admin. Contract: route_inferred. Grant an agent a tool for one jurisdiction and purpose, up to a risk ceiling Required fields: agent_key, tool_key, jurisdiction, max_risk, purpose.

hr.agent.tools

Read. Scope: hr.read, admin. Contract: declared_dynamic. List the registered typed tools an agent may use, and open agent incidents

hr.ai.corrections

Write. Scope: hr.write, admin. Contract: declared_dynamic. Bundle recent reviewer corrections into a dataset; it is pending privacy review and trains nothing

hr.ai.quality.overview

Read. Scope: hr.read, admin. Contract: declared_dynamic. The AI quality board: sampled defect rate, override pressure per workflow, coaching reception

hr.booking.slots_reconcile

Write. Scope: hr.write, admin. Contract: declared_dynamic. Release booking slots whose claim never became a booked meeting

hr.connectors.certify

Write. Scope: hr.write, admin. Contract: route_inferred. Certify an HR connector (scope sandbox|production; production demands provider-side proof under dual control) Required fields: connector_class, connector_key, scope, evidence, submitted_by.

hr.connectors.health

Read. Scope: hr.read, admin. Contract: route_inferred. One connector account's health: certification level and scope, last reconciliation verdict, failures and webhook backlog Required fields: account_uuid.

hr.decisions.appeals

Write. Scope: hr.write, admin. Contract: route_inferred. File an appeal against an AI decision on a person's behalf; it must be heard by an independent human Required fields: decision_uuid, subject_type, subject_id, grounds.

hr.decisions.explanation

Read. Scope: hr.read, admin. Contract: route_inferred. Plain-language explanation of one AI decision: what was looked at, which policy, and how to appeal Required fields: decision_uuid, audience.

hr.employee.provision

Write. Scope: hr.write, admin. Contract: route_inferred. Provision seatless employee access and send the invitation Required fields: person_uuid.

hr.employee.restore

Write. Scope: hr.write, admin. Contract: route_inferred. Lift an employee access suspension (written reason required) and provision again Required fields: person_uuid, reason.

hr.experience.metrics

Read. Scope: hr.read, admin. Contract: route_inferred. Measured persona experience metrics (self-service rate, decision cycle, coaching usefulness, quality) from live journeys

hr.global.readiness

Read. Scope: hr.read, admin. Contract: declared_dynamic. The whole launch picture: 15-gate leadership score, release readiness checks and jurisdiction coverage

hr.identity.facets

Read. Scope: hr.read, admin. Contract: route_inferred. List a person's identity facets and open conflicts Required fields: person_uuid.

hr.identity.link

Write. Scope: hr.write, admin. Contract: route_inferred. Link an identity facet to a person Required fields: person_uuid, facet_type, facet_key.

hr.interview.room.connect

Write. Scope: hr.write, admin. Contract: route_inferred. Connect the AI to interview media; refuses unless media really reaches the worker Required fields: media_uuid.

hr.interview.room.consent

Write. Scope: hr.write, admin. Contract: route_inferred. Record or withdraw consent for ONE interview purpose (recording, biometric_liveness, transcription) Required fields: media_uuid, purpose, state.

hr.interview.room.pause

Write. Scope: hr.write, admin. Contract: route_inferred. Pause a live interview Required fields: media_uuid.

hr.interview.room.provision

Write. Scope: hr.write, admin. Contract: route_inferred. Provision an interview room (a place to meet — NOT AI participation) Required fields: session_uuid, transport, accommodation_route.

hr.interview.room.state

Read. Scope: hr.read, admin. Contract: route_inferred. Read an interview room, including whether the AI is actually participating Required fields: media_uuid.

hr.interview.room.takeover

Write. Scope: hr.write, admin. Contract: route_inferred. A human takes the interview; the AI cannot speak in it again Required fields: media_uuid, reason.

hr.jurisdiction.capabilities

Read. Scope: hr.read, admin. Contract: route_inferred. What this product may do in one country, per feature, with the law behind each answer Required fields: code.

hr.jurisdiction.change.raise

Write. Scope: hr.write, admin. Contract: route_inferred. Report a change in the law; a high or critical one suspends every lane in that jurisdiction at once Required fields: pack_key, summary, severity.

hr.jurisdiction.coverage

Read. Scope: hr.read, admin. Contract: declared_dynamic. Computed coverage for every market: released pack, named counsel owner, cited sources, passing tests

hr.jurisdiction.explain

Read. Scope: hr.read, admin. Contract: route_inferred. Why an action about one person is allowed, reduced or blocked, with the rule and citation Required fields: person_uuid, feature.

hr.jurisdiction.pack.release

Write. Scope: hr.write, admin. Contract: route_inferred. Put a drafted policy pack into effect; refused without a named counsel owner and a cited law Required fields: release_uuid.

hr.learning.overview

Read. Scope: hr.read, admin. Contract: declared_dynamic. Read courses, paths and enrolments

hr.leave.overview

Read. Scope: hr.read, admin. Contract: declared_dynamic. Read leave types and requests

hr.lifecycle.lanes

Read. Scope: hr.read, admin. Contract: declared_dynamic. Every lifecycle lane with its mode, KPIs and whether a live tool path really exists behind it

hr.marketplace.overview

Read. Scope: hr.read, admin. Contract: declared_dynamic. Read HR connector accounts, conflicts and deliveries

hr.org.tree

Read. Scope: hr.read, admin. Contract: declared_dynamic. Read the organisation tree

hr.people.create

Write. Scope: hr.write, admin. Contract: route_inferred. Create an HR person Required fields: display_name.

hr.people.get

Read. Scope: hr.read, admin. Contract: route_inferred. Get one HR person Required fields: person_uuid.

hr.people.list

Read. Scope: hr.read, admin. Contract: declared_dynamic. List HR people

hr.people.update

Write. Scope: hr.write, admin. Contract: route_inferred. Update an HR person Required fields: person_uuid, display_name, primary_email.

hr.postings.list

Read. Scope: hr.read, admin. Contract: declared_dynamic. List job postings

hr.readiness.read

Read. Scope: hr.read, admin. Contract: declared_dynamic. Run the HR release readiness report

hr.release.verify

Write. Scope: hr.write, admin. Contract: declared_dynamic. Run the four HR release gates (schema, manifest, probe, readiness)

hr.requisitions.create

Write. Scope: hr.write, admin. Contract: route_inferred. Create a requisition Required fields: title, openings, justification.

hr.requisitions.list

Read. Scope: hr.read, admin. Contract: declared_dynamic. List requisitions

hr.thread.delete

Write. Scope: hr.write, admin. Contract: route_inferred. Delete a workforce conversation; refused while it is under legal hold Required fields: thread_uuid, reason.

hr.thread.legal_hold

Write. Scope: hr.write, admin. Contract: route_inferred. Place or lift a legal hold on a workforce conversation Required fields: thread_uuid, on, reason.

hr.thread.retention

Write. Scope: hr.write, admin. Contract: route_inferred. Set a conversation's retention class (standard|extended|permanent) Required fields: thread_uuid, retention_class.

hr.threads.retention_sweep

Write. Scope: hr.write, admin. Contract: declared_dynamic. Run the conversation retention sweep; legal holds are never swept

intent (6)

intent.clear

Write. Scope: intent.write, admin. Contract: declared_dynamic. Intent Clear

intent.funnel

Read. Scope: intent.read, analytics.read, admin. Contract: route_inferred. Read the intent funnel

intent.funnel.aggregate

Read. Scope: intent.read, admin. Contract: route_inferred. Intent Funnel Aggregate

intent.funnel.route.intent.funnel

Read. Scope: intent.read, admin. Contract: route_inferred. Intent Funnel

intent.summary

Read. Scope: intent.read, analytics.read, admin. Contract: route_inferred. Read intent summaries

intent.summary.route.intent.summary

Read. Scope: intent.read, admin. Contract: route_inferred. Intent Summary

kb (6)

kb.faq.delete

Write. Scope: kb.write, admin. Contract: source_inferred. Kb Faq Delete Retry-safe with idempotency_key.

kb.faq.generate

Write. Scope: kb.write, admin. Contract: source_inferred. Kb Faq Generate Retry-safe with idempotency_key.

kb.faq.import

Write. Scope: kb.write, admin. Contract: source_inferred. Kb Faq Import Retry-safe with idempotency_key.

kb.faq.list

Read. Scope: kb.read, read, admin. Contract: source_inferred. Kb Faq List

kb.faq.save

Write. Scope: kb.write, admin. Contract: source_inferred. Kb Faq Save Retry-safe with idempotency_key.

kb.faq.set_status

Write. Scope: kb.write, admin. Contract: source_inferred. Kb Faq Set Status Retry-safe with idempotency_key.

knowledge (78)

knowledge.analytics.get

Read. Scope: kb.read, admin. Contract: route_inferred. Help Analytics Get

knowledge.analytics.toggle

Write. Scope: kb.write, admin. Contract: route_inferred. Help Analytics Toggle

knowledge.article.ai.refine

Read. Scope: kb.read, admin. Contract: route_inferred. Help Article Ai Refine

knowledge.article.class.bulk

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Class Bulk

knowledge.article.delete

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Delete

knowledge.article.publish

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Publish

knowledge.article.save

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Save

knowledge.article.set.category

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Set Category

knowledge.article.set.public

Write. Scope: kb.write, admin. Contract: route_inferred. Help Article Set Public

knowledge.articles.ai.generate

Write. Scope: kb.write, admin. Contract: route_inferred. Help Articles Ai Generate

knowledge.articles.bulk.delete

Write. Scope: kb.write, admin. Contract: route_inferred. Help Articles Bulk Delete

knowledge.articles.count

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Articles Count

knowledge.articles.get

Read. Scope: kb.read, admin. Contract: explicit. Get one Help Center article Required fields: article_id.

knowledge.articles.ids

Write. Scope: kb.write, admin. Contract: route_inferred. Help Articles Ids

knowledge.articles.list

Read. Scope: kb.read, admin. Contract: route_inferred. Help Articles List

knowledge.articles.set.public.all

Write. Scope: kb.write, admin. Contract: route_inferred. Help Articles Set Public All

knowledge.categories.ai.merge

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Categories Ai Merge

knowledge.categories.bulk.delete

Write. Scope: kb.write, admin. Contract: route_inferred. Help Categories Bulk Delete

knowledge.categories.list

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Categories List

knowledge.categories.merge.dupes

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Categories Merge Dupes

knowledge.category.delete

Write. Scope: kb.write, admin. Contract: route_inferred. Help Category Delete

knowledge.category.get

Read. Scope: kb.read, admin. Contract: route_inferred. Help Category Get

knowledge.category.save

Write. Scope: kb.write, admin. Contract: route_inferred. Help Category Save

knowledge.center.article.image.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Article Image Upload

knowledge.center.favicon.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Favicon Upload

knowledge.center.hero.dark.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Hero Dark Upload

knowledge.center.hero.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Hero Upload

knowledge.center.logo.dark.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Logo Dark Upload

knowledge.center.logo.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Logo Upload

knowledge.center.og.image.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Og Image Upload

knowledge.center.settings.get

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Center Settings Get

knowledge.center.settings.save

Write. Scope: kb.write, admin. Contract: route_inferred. Help Center Settings Save

knowledge.center.subhero.dark.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Subhero Dark Upload

knowledge.center.subhero.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Subhero Upload

knowledge.center.translate.estimate

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Translate Estimate

knowledge.center.translate.run

Write. Scope: kb.write, admin. Contract: route_inferred. Help Center Translate Run

knowledge.center.translate.status

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Center Translate Status

knowledge.center.translate.stop

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Translate Stop

knowledge.center.widget.hero.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Widget Hero Upload

knowledge.center.widget.icon.upload

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Center Widget Icon Upload

knowledge.comments.deliver.notifications

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Comments Deliver Notifications

knowledge.comments.moderate

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Comments Moderate

knowledge.comments.moderation.list

Read. Scope: kb.read, admin. Contract: route_inferred. Kb Comments Moderation List

knowledge.import.batches

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Import Batches

knowledge.import.connectors

Write. Scope: kb.write, admin. Contract: declared_dynamic. Kb Import Connectors

knowledge.import.csv.preview

Read. Scope: kb.read, admin. Contract: route_inferred. Kb Import Csv Preview

knowledge.import.preview

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Import Preview

knowledge.import.resync

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Import Resync

knowledge.import.run

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Import Run

knowledge.import.undo

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Import Undo

knowledge.insights.generate

Write. Scope: kb.write, admin. Contract: route_inferred. Help Insights Generate

knowledge.insights.get

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Insights Get

knowledge.mark.reviewed

Write. Scope: kb.write, admin. Contract: declared_dynamic. Kb Mark Reviewed

knowledge.missed.dismiss

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Missed Dismiss

knowledge.missed.draft.article

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Missed Draft Article

knowledge.missed.list

Read. Scope: kb.read, admin. Contract: route_inferred. Kb Missed List

knowledge.missed.mark.published

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Missed Mark Published

knowledge.missed.refresh

Write. Scope: kb.write, admin. Contract: declared_dynamic. Kb Missed Refresh

knowledge.organize.descriptions

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Organize Descriptions

knowledge.organize.status

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Organize Status

knowledge.organize.step

Write. Scope: kb.write, admin. Contract: route_inferred. Help Organize Step

knowledge.publish

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Publish

knowledge.reformat.revert

Write. Scope: kb.write, admin. Contract: declared_dynamic. Help Reformat Revert

knowledge.reformat.status

Read. Scope: kb.read, admin. Contract: declared_dynamic. Help Reformat Status

knowledge.reformat.step

Write. Scope: kb.write, admin. Contract: route_inferred. Help Reformat Step

knowledge.review.queue

Read. Scope: kb.read, admin. Contract: declared_dynamic. Kb Review Queue

knowledge.search.gaps

Read. Scope: kb.read, admin. Contract: declared_dynamic. Kb Search Gaps

knowledge.set.featured

Write. Scope: kb.write, admin. Contract: route_inferred. Help Set Featured

knowledge.set.visibility

Write. Scope: kb.write, admin. Contract: declared_dynamic. Kb Set Visibility

knowledge.subdomain.allocate

Write. Scope: kb.write, admin. Contract: route_inferred. Help Subdomain Allocate

knowledge.subdomain.check

Read. Scope: kb.read, admin. Contract: route_inferred. Help Subdomain Check

knowledge.subdomain.release

Write. Scope: kb.write, admin. Contract: route_inferred. Help Subdomain Release

knowledge.taxonomy.organize

Write. Scope: kb.write, admin. Contract: declared_dynamic. Kb Taxonomy Organize

knowledge.taxonomy.status

Read. Scope: kb.read, admin. Contract: declared_dynamic. Kb Taxonomy Status

knowledge.taxonomy.step

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Taxonomy Step

knowledge.widget.categories

Read. Scope: kb.read, admin. Contract: route_inferred. Kb Widget Categories

knowledge.widget.publish

Write. Scope: kb.write, admin. Contract: route_inferred. Kb Widget Publish

knowledge.widget.targets

Read. Scope: kb.read, admin. Contract: route_inferred. Kb Widget Targets

leads (6)

leads.delete

Write. Scope: leads.write, crm.write, admin. Contract: route_inferred. Delete a lead Required fields: lead_id.

leads.delete.route.lead.delete

Write. Scope: leads.write, admin. Contract: route_inferred. Lead Delete

leads.list

Read. Scope: leads.read, crm.read, admin. Contract: route_inferred. List leads

leads.stats

Read. Scope: leads.read, analytics.read, admin. Contract: declared_dynamic. Get lead statistics

leads.stats.route.leads.stats

Read. Scope: leads.read, admin. Contract: declared_dynamic. Leads Stats

leads.update

Write. Scope: leads.write, crm.write, admin. Contract: route_inferred. Update a lead Required fields: lead_id, status.

meta (4)

meta.action

Read. Scope: none. Contract: explicit. Get one General API action contract Required fields: name.

meta.actions

Read. Scope: none. Contract: explicit. List the complete General API contract

meta.me

Read. Scope: none. Contract: explicit. Describe the authenticated API key and active workspace

meta.scopes

Read. Scope: none. Contract: explicit. List API scopes and the actions protected by each scope

notifications (1)

notifications.list

Read. Scope: notifications.read, admin. Contract: source_inferred. Notifications List

platform platformu platform platformu (926)

platform.add.announcement

Write. Scope: platform.write, admin. Contract: declared_dynamic. Add Announcement

platform.add.kb.article

Write. Scope: platform.write, admin. Contract: route_inferred. Add Kb Article

platform.add.todo.item

Write. Scope: platform.write, admin. Contract: route_inferred. Add Todo Item

platform.ai.action.lookup

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Action Lookup

platform.ai.anomaly.detect

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Anomaly Detect

platform.ai.brain.add

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain Add

platform.ai.brain.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain Delete

platform.ai.brain.edit

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain Edit

platform.ai.brain.list

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain List

platform.ai.brain.pin

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain Pin

platform.ai.brain.status

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Brain Status

platform.ai.chat

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Chat

platform.ai.confidence.stats

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Confidence Stats

platform.ai.context.lookup

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Context Lookup

platform.ai.daily.brief

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Daily Brief

platform.ai.daily.brief.check

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Daily Brief Check

platform.ai.daily.brief.dismiss

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Daily Brief Dismiss

platform.ai.daily.brief.fetch

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Daily Brief Fetch

platform.ai.eval.control.summary

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Eval Control Summary

platform.ai.eval.feedback.queue

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Eval Feedback Queue

platform.ai.eval.kb.gap.queue

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Eval Kb Gap Queue

platform.ai.eval.load

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Eval Load

platform.ai.eval.replay.history

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Eval Replay History

platform.ai.eval.run

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Eval Run

platform.ai.eval.save

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Eval Save

platform.ai.eval.score.answer

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Eval Score Answer

platform.ai.eval.simulate

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Eval Simulate

platform.ai.feedback.analysis

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Feedback Analysis

platform.ai.feedback.stats

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Feedback Stats

platform.ai.history.archive

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Archive

platform.ai.history.clear.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Clear All

platform.ai.history.delete

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Delete

platform.ai.history.export.csv

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Export Csv

platform.ai.history.get

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Get

platform.ai.history.list

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History List

platform.ai.history.stats

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai History Stats

platform.ai.insight.clear

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Insight Clear

platform.ai.insight.history

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Insight History

platform.ai.insight.report.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Insight Report Delete

platform.ai.insight.report.get

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Insight Report Get

platform.ai.instructions.compress

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Instructions Compress

platform.ai.instructions.connector.templates

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Instructions Connector Templates

platform.ai.instructions.example

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Instructions Example

platform.ai.instructions.load

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Instructions Load

platform.ai.instructions.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Instructions Preview

platform.ai.instructions.reset

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Instructions Reset

platform.ai.instructions.save

Write. Scope: platform.write, admin. Contract: declared_dynamic. Ai Instructions Save

platform.ai.page.insights

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Page Insights

platform.ai.popup.regen

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Popup Regen

platform.ai.quality.view

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Quality View

platform.ai.reasoning.chain.get

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Reasoning Chain Get

platform.ai.score.lead

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Score Lead

platform.ai.smart.alerts

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Smart Alerts

platform.ai.spoke

Read. Scope: platform.read, admin. Contract: route_inferred. Ai Spoke

platform.ai.triage.accuracy

Read. Scope: platform.read, admin. Contract: declared_dynamic. Ai Triage Accuracy

platform.ai.whmcs.chat

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Whmcs Chat

platform.ai.writing

Write. Scope: platform.write, admin. Contract: route_inferred. Ai Writing

platform.api.keys.catalog

Read. Scope: admin. Contract: declared_dynamic. Api Keys Catalog

platform.api.keys.create

Write. Scope: admin. Contract: route_inferred. Api Keys Create

platform.api.keys.delete

Write. Scope: admin. Contract: route_inferred. Api Keys Delete

platform.api.keys.list

Read. Scope: admin. Contract: declared_dynamic. Api Keys List

platform.api.keys.revoke

Write. Scope: admin. Contract: route_inferred. Api Keys Revoke

platform.api.keys.update

Write. Scope: admin. Contract: route_inferred. Api Keys Update

platform.audit.export

Read. Scope: admin. Contract: route_inferred. Audit Export

platform.blocked

Write. Scope: platform.write, admin. Contract: route_inferred. Blocked

platform.campaigns

Read. Scope: platform.read, admin. Contract: declared_dynamic. Campaigns

platform.chart.browsers

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Browsers

platform.chart.countries

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Countries

platform.chart.devices

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Devices

platform.chart.hourly

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Hourly

platform.chart.new.returning

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart New Returning

platform.chart.os

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Os

platform.chart.sources

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chart Sources

platform.chart.visitors

Read. Scope: platform.read, admin. Contract: route_inferred. Chart Visitors

platform.chatbot.flow.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Flow Delete

platform.chatbot.flow.get

Read. Scope: platform.read, admin. Contract: route_inferred. Chatbot Flow Get

platform.chatbot.flow.save

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Flow Save

platform.chatbot.flow.stats

Read. Scope: platform.read, admin. Contract: route_inferred. Chatbot Flow Stats

platform.chatbot.flow.test.advance

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Flow Test Advance

platform.chatbot.flow.test.start

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Flow Test Start

platform.chatbot.flow.toggle

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Flow Toggle

platform.chatbot.flows.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Chatbot Flows List

platform.chatbot.node.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Node Delete

platform.chatbot.node.save

Write. Scope: platform.write, admin. Contract: route_inferred. Chatbot Node Save

platform.chatbot.nodes.list

Read. Scope: platform.read, admin. Contract: route_inferred. Chatbot Nodes List

platform.clear.admin.chat.history

Write. Scope: platform.write, admin. Contract: declared_dynamic. Clear Admin Chat History

platform.command.center.view

Read. Scope: platform.read, admin. Contract: declared_dynamic. Command Center View

platform.commerce.actf.execute

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Actf Execute

platform.commerce.actf.policy.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Actf Policy Save

platform.commerce.actf.review

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Actf Review

platform.commerce.actf.simulate

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Actf Simulate

platform.commerce.analytics.report

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Analytics Report

platform.commerce.analytics.report.email

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Analytics Report Email

platform.commerce.autonomy.issue

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Autonomy Issue

platform.commerce.autonomy.status

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Autonomy Status

platform.commerce.collections.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Collections Delete

platform.commerce.collections.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Collections Save

platform.commerce.customer.block

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Customer Block

platform.commerce.customer.credit.add

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Customer Credit Add

platform.commerce.customer.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Customer Save

platform.commerce.customers.list

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Customers List

platform.commerce.digital.codes.import

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Digital Codes Import

platform.commerce.digital.config.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Digital Config Save

platform.commerce.digital.file.upload

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Digital File Upload

platform.commerce.fulfilment.transition

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Fulfilment Transition

platform.commerce.intelligence.economics.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Intelligence Economics Save

platform.commerce.intelligence.market.price.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Intelligence Market Price Save

platform.commerce.intelligence.market.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Intelligence Market Save

platform.commerce.kit.apply

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Kit Apply

platform.commerce.kit.preview

Read. Scope: commerce.read, admin. Contract: route_inferred. Commerce Kit Preview

platform.commerce.kits.list

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Kits List

platform.commerce.launch.readiness

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Launch Readiness

platform.commerce.menu.ai.build

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Menu Ai Build

platform.commerce.menus.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Menus Save

platform.commerce.merchandising.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Merchandising Save

platform.commerce.midmarket.operations

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Midmarket Operations

platform.commerce.onboarding.ai.draft

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Onboarding Ai Draft

platform.commerce.onboarding.apply

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Onboarding Apply

platform.commerce.option.sets.generate

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Option Sets Generate

platform.commerce.option.sets.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Option Sets Save

platform.commerce.option.templates

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Option Templates

platform.commerce.order.refundable

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Order Refundable

platform.commerce.order.ship

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Order Ship

platform.commerce.order.shipments

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Order Shipments

platform.commerce.orders.list

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Orders List

platform.commerce.orders.transition

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Orders Transition

platform.commerce.page.ai.draft

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Page Ai Draft

platform.commerce.page.ai.refine

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Page Ai Refine

platform.commerce.page.render

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Page Render

platform.commerce.pages.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Pages Delete

platform.commerce.pages.list

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Pages List

platform.commerce.pages.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Pages Save

platform.commerce.price.advice

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Price Advice

platform.commerce.products.ai.copy

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Products Ai Copy

platform.commerce.products.bulk

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Bulk

platform.commerce.products.catalog.meta

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Products Catalog Meta

platform.commerce.products.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Delete

platform.commerce.products.duplicate

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Duplicate

platform.commerce.products.export.csv

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Products Export Csv

platform.commerce.products.image.alt.ai

Read. Scope: commerce.read, admin. Contract: route_inferred. Commerce Products Image Alt Ai

platform.commerce.products.image.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Image Delete

platform.commerce.products.image.update

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Products Image Update

platform.commerce.products.image.upload

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Image Upload

platform.commerce.products.images.list

Read. Scope: commerce.read, admin. Contract: route_inferred. Commerce Products Images List

platform.commerce.products.images.reorder

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Products Images Reorder

platform.commerce.products.import.csv

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Products Import Csv

platform.commerce.products.list

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Products List

platform.commerce.products.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Products Save

platform.commerce.refunds.complete.manual

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Refunds Complete Manual

platform.commerce.refunds.request

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Refunds Request

platform.commerce.returns.transition

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Returns Transition

platform.commerce.size.charts.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Size Charts Delete

platform.commerce.size.charts.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Size Charts Save

platform.commerce.store.maturity

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Store Maturity

platform.commerce.storefront.brand.import

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Storefront Brand Import

platform.commerce.storefront.domain.remove

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Storefront Domain Remove

platform.commerce.storefront.domain.set

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Storefront Domain Set

platform.commerce.storefront.logo.upload

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Storefront Logo Upload

platform.commerce.storefront.page.ai.seo

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Storefront Page Ai Seo

platform.commerce.storefront.slug.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Storefront Slug Save

platform.commerce.supply.chain

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Supply Chain

platform.commerce.variants.delete

Write. Scope: commerce.write, admin. Contract: route_inferred. Commerce Variants Delete

platform.commerce.variants.save

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Variants Save

platform.commerce.wallet.topup.refund

Write. Scope: commerce.write, admin. Contract: declared_dynamic. Commerce Wallet Topup Refund

platform.commerce.wallet.topups.list

Read. Scope: commerce.read, admin. Contract: declared_dynamic. Commerce Wallet Topups List

platform.complete.todo.item

Write. Scope: platform.write, admin. Contract: route_inferred. Complete Todo Item

platform.consent.log.list

Read. Scope: platform.read, admin. Contract: route_inferred. Consent Log List

platform.countries

Read. Scope: platform.read, admin. Contract: declared_dynamic. Countries

platform.country.detail

Read. Scope: platform.read, admin. Contract: route_inferred. Country Detail

platform.custom.code.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Custom Code Approve

platform.custom.code.disable

Write. Scope: platform.write, admin. Contract: route_inferred. Custom Code Disable

platform.custom.code.reject

Write. Scope: platform.write, admin. Contract: route_inferred. Custom Code Reject

platform.custom.code.rollback

Write. Scope: platform.write, admin. Contract: route_inferred. Custom Code Rollback

platform.custom.code.status

Read. Scope: platform.read, admin. Contract: route_inferred. Custom Code Status

platform.delete.todo.item

Write. Scope: platform.write, admin. Contract: route_inferred. Delete Todo Item

platform.devices

Read. Scope: platform.read, admin. Contract: declared_dynamic. Devices

platform.diag.check.resolutions

Read. Scope: platform.read, admin. Contract: declared_dynamic. Diag Check Resolutions

platform.diag.dismiss

Write. Scope: platform.write, admin. Contract: route_inferred. Diag Dismiss

platform.diag.event.taxonomy

Read. Scope: platform.read, admin. Contract: declared_dynamic. Diag Event Taxonomy

platform.diag.identity.restitch

Write. Scope: admin. Contract: declared_dynamic. Diag Identity Restitch

platform.diag.recheck

Write. Scope: platform.write, admin. Contract: route_inferred. Diag Recheck

platform.diag.recheck.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Diag Recheck All

platform.diag.report

Write. Scope: platform.write, admin. Contract: route_inferred. Diag Report

platform.diag.unmute

Write. Scope: platform.write, admin. Contract: route_inferred. Diag Unmute

platform.dismiss.credit.alert

Write. Scope: admin. Contract: route_inferred. Dismiss Credit Alert

platform.domain.knowledge.ai.generate

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Knowledge Ai Generate

platform.domain.knowledge.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Knowledge Delete

platform.domain.knowledge.list

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Knowledge List

platform.domain.knowledge.save

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Knowledge Save

platform.domain.knowledge.toggle

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Knowledge Toggle

platform.domain.verify.add

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Verify Add

platform.domain.verify.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Domain Verify List

platform.domain.verify.recheck

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Verify Recheck

platform.domain.verify.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Domain Verify Remove

platform.dynamic.action.dispatch

Write. Scope: platform.write, admin. Contract: route_inferred. Dynamic Action Dispatch

platform.events.clear.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Events Clear All

platform.events.list

Read. Scope: platform.read, admin. Contract: route_inferred. Events List

platform.experiment.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Experiment Delete

platform.experiment.results

Read. Scope: platform.read, admin. Contract: route_inferred. Experiment Results

platform.experiment.save

Write. Scope: platform.write, admin. Contract: route_inferred. Experiment Save

platform.experiments.clear.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Experiments Clear All

platform.experiments.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Experiments List

platform.failed.logins.clear.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Failed Logins Clear All

platform.failed.logins.clear.history

Write. Scope: platform.write, admin. Contract: declared_dynamic. Failed Logins Clear History

platform.failed.logins.journey

Write. Scope: platform.write, admin. Contract: route_inferred. Failed Logins Journey

platform.failed.logins.list

Write. Scope: platform.write, admin. Contract: declared_dynamic. Failed Logins List

platform.failed.logins.unblock

Write. Scope: platform.write, admin. Contract: route_inferred. Failed Logins Unblock

platform.feedback.analysis.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Analysis Get

platform.feedback.analysis.run

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Analysis Run

platform.feedback.analytics.all

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics All

platform.feedback.analytics.detractors

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Detractors

platform.feedback.analytics.metrics

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Metrics

platform.feedback.analytics.overview

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Overview

platform.feedback.analytics.segments

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Segments

platform.feedback.analytics.sentiment

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Sentiment

platform.feedback.analytics.themes

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Themes

platform.feedback.analytics.trends

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Analytics Trends

platform.feedback.assignees.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Assignees List

platform.feedback.event.outbox.drain

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Event Outbox Drain

platform.feedback.exports.create

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Exports Create

platform.feedback.exports.get

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Exports Get

platform.feedback.external.review.ingest

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback External Review Ingest

platform.feedback.ingest.create

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Ingest Create

platform.feedback.items.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Assign

platform.feedback.items.evidence

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Items Evidence

platform.feedback.items.follow.up.complete

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Follow Up Complete

platform.feedback.items.follow.up.set

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Follow Up Set Required fields: bool.

platform.feedback.items.get

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Items Get

platform.feedback.items.list

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback Items List

platform.feedback.items.mark.read

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Mark Read

platform.feedback.items.notes.add

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Notes Add

platform.feedback.items.set.priority

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Set Priority

platform.feedback.items.set.status

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Set Status

platform.feedback.items.tags.add

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Tags Add

platform.feedback.items.tags.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Items Tags Remove

platform.feedback.list

Read. Scope: platform.read, admin. Contract: route_inferred. Feedback List

platform.feedback.reconciliation

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Reconciliation

platform.feedback.reports.delete

Write. Scope: platform.write, admin. Contract: declared_dynamic. Feedback Reports Delete

platform.feedback.reports.email

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Reports Email

platform.feedback.reports.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Reports Get

platform.feedback.reports.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Reports List

platform.feedback.satisfaction.advice.last

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Satisfaction Advice Last

platform.feedback.satisfaction.advise

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Satisfaction Advise

platform.feedback.satisfaction.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Satisfaction Overview

platform.feedback.sources.health

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Sources Health

platform.feedback.sources.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Feedback Sources List

platform.feedback.sources.rebuild

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Sources Rebuild

platform.feedback.sources.replay

Write. Scope: platform.write, admin. Contract: route_inferred. Feedback Sources Replay

platform.feedback.stats

Write. Scope: platform.write, admin. Contract: declared_dynamic. Feedback Stats

platform.fx.refresh.now

Write. Scope: platform.write, admin. Contract: declared_dynamic. Fx Refresh Now

platform.geoip.autodetect

Read. Scope: platform.read, admin. Contract: declared_dynamic. Geoip Autodetect

platform.get.admin.chat.history

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Admin Chat History

platform.get.ai.snapshot

Write. Scope: platform.write, admin. Contract: route_inferred. Get Ai Snapshot

platform.get.campaign.groups

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Campaign Groups

platform.get.client.chat.knowledge.overview

Write. Scope: platform.write, admin. Contract: declared_dynamic. Get Client Chat Knowledge Overview

platform.get.kb.categories

Read. Scope: platform.read, admin. Contract: route_inferred. Get Kb Categories

platform.get.live.health.snapshot

Read. Scope: platform.read, admin. Contract: route_inferred. Get Live Health Snapshot

platform.get.pwa.chat.prefs

Write. Scope: platform.write, admin. Contract: declared_dynamic. Get Pwa Chat Prefs

platform.get.servers

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Servers

platform.get.survey.config

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Survey Config

platform.get.ticket.options

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Ticket Options

platform.get.ticket.thread

Read. Scope: platform.read, admin. Contract: route_inferred. Get Ticket Thread

platform.get.todo.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Get Todo List

platform.get.widget.advanced

Read. Scope: platform.read, admin. Contract: route_inferred. Get Widget Advanced

platform.governance.summary

Read. Scope: platform.read, admin. Contract: route_inferred. Governance Summary

platform.groups.create

Write. Scope: platform.write, admin. Contract: route_inferred. Groups Create

platform.groups.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Groups Delete

platform.groups.list

Write. Scope: platform.write, admin. Contract: route_inferred. Groups List

platform.groups.rename

Write. Scope: platform.write, admin. Contract: route_inferred. Groups Rename

platform.groups.set.primary

Write. Scope: platform.write, admin. Contract: route_inferred. Groups Set Primary

platform.hc.preview.mint

Read. Scope: platform.read, admin. Contract: route_inferred. Hc Preview Mint

platform.hc.template.apply

Write. Scope: platform.write, admin. Contract: route_inferred. Hc Template Apply

platform.hc.template.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Hc Template Delete

platform.hc.template.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Hc Template Preview

platform.hc.template.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hc Template Save

platform.hc.templates.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hc Templates List

platform.hc.translation.review.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hc Translation Review Get

platform.hc.translation.review.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hc Translation Review List

platform.hc.translation.review.revert

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hc Translation Review Revert

platform.hc.translation.review.save

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hc Translation Review Save

platform.heatmap

Read. Scope: platform.read, admin. Contract: route_inferred. Heatmap

platform.hr.access.grant.manual

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Access Grant Manual

platform.hr.access.policy.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Access Policy List

platform.hr.access.policy.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Access Policy Set

platform.hr.access.request

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Access Request

platform.hr.access.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Access Revoke

platform.hr.accommodation.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Accommodation List

platform.hr.accommodation.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Accommodation Resolve

platform.hr.agent.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Assign

platform.hr.agent.compensation.retry

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Compensation Retry

platform.hr.agent.compensation.sweep

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Agent Compensation Sweep

platform.hr.agent.compensations

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Agent Compensations

platform.hr.agent.incident.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Incident Close

platform.hr.agent.register

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Register

platform.hr.agent.step

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Step

platform.hr.agent.step.status

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Agent Step Status

platform.hr.agent.tool.auth

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Tool Auth

platform.hr.agent.tool.grant

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Agent Tool Grant

platform.hr.agent.tools

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Agent Tools

platform.hr.ai.act.build

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Ai Act Build

platform.hr.ai.act.export

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Ai Act Export

platform.hr.ai.act.fria.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Ai Act Fria Record

platform.hr.ai.act.notice.publish

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Ai Act Notice Publish

platform.hr.ai.act.overseer.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Ai Act Overseer Assign

platform.hr.ai.act.overseer.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Ai Act Overseer Revoke

platform.hr.ai.act.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Ai Act Overview

platform.hr.ai.metering.export

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Ai Metering Export

platform.hr.ai.metering.overview

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Ai Metering Overview

platform.hr.ai.metering.settings.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Ai Metering Settings Save

platform.hr.ai.status

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Ai Status

platform.hr.analytics.ask

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Analytics Ask

platform.hr.analytics.snapshot

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Analytics Snapshot

platform.hr.app.move

Write. Scope: platform.write, admin. Contract: route_inferred. Hr App Move

platform.hr.appeal.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Appeal List

platform.hr.appeal.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Appeal Resolve

platform.hr.application.history

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Application History

platform.hr.application.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Application List

platform.hr.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Assign

platform.hr.auto.offer.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Auto Offer Run

platform.hr.autonomy.lane.demote

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Autonomy Lane Demote

platform.hr.autonomy.lane.install

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Autonomy Lane Install

platform.hr.autonomy.lane.promote

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Autonomy Lane Promote

platform.hr.autonomy.lane.review

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Autonomy Lane Review

platform.hr.autonomy.lane.shadow

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Autonomy Lane Shadow

platform.hr.autonomy.lanes

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Autonomy Lanes

platform.hr.autonomy.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Autonomy Overview

platform.hr.availability.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Availability Save

platform.hr.band.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Band Approve

platform.hr.band.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Band List

platform.hr.band.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Band Save

platform.hr.benchmarks.contribute.now

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Benchmarks Contribute Now

platform.hr.benchmarks.opt.in

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Benchmarks Opt In

platform.hr.benchmarks.opt.out

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Benchmarks Opt Out

platform.hr.benchmarks.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Benchmarks Overview

platform.hr.benefit.enroll

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Benefit Enroll

platform.hr.benefit.plan.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Benefit Plan Save

platform.hr.bias.audit.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Bias Audit List

platform.hr.bias.audit.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Bias Audit Run

platform.hr.booking.link.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Booking Link Save

platform.hr.booking.slots.reconcile

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Booking Slots Reconcile

platform.hr.breaker.reset

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Breaker Reset

platform.hr.broadcast.audience.options

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Broadcast Audience Options

platform.hr.broadcast.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Broadcast List

platform.hr.broadcast.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Broadcast Preview

platform.hr.broadcast.send

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Broadcast Send

platform.hr.budget.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Budget Set

platform.hr.calibration.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Calibration Close

platform.hr.calibration.move

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Calibration Move

platform.hr.calibration.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Calibration Open

platform.hr.capabilities.get

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Capabilities Get

platform.hr.capability.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Capability Set

platform.hr.capability.trail

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Capability Trail

platform.hr.cards.refresh

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Cards Refresh

platform.hr.case.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Assign

platform.hr.case.attachment.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Attachment Add

platform.hr.case.attachment.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Case Attachment List

platform.hr.case.categories

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Case Categories

platform.hr.case.event.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Event Add

platform.hr.case.get

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Case Get

platform.hr.case.grant.access

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Case Grant Access

platform.hr.case.intake.mailbox

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Intake Mailbox

platform.hr.case.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Case List

platform.hr.case.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Open

platform.hr.case.route

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Route

platform.hr.case.thread

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Thread

platform.hr.case.tighten

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Case Tighten

platform.hr.certification.define

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Certification Define

platform.hr.certification.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Certification List

platform.hr.certification.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Certification Record

platform.hr.certification.state

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Certification State

platform.hr.certification.types

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Certification Types

platform.hr.check.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Check List

platform.hr.check.manual.result

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Check Manual Result

platform.hr.check.order

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Check Order

platform.hr.check.requery

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Check Requery

platform.hr.check.void

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Check Void

platform.hr.checkin.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Checkin Record

platform.hr.coach.feedback

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Coach Feedback

platform.hr.coach.me

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Coach Me

platform.hr.coach.receive

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Coach Receive

platform.hr.comp.change.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Comp Change Approve

platform.hr.comp.change.request

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Comp Change Request

platform.hr.compliance.build

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Compliance Build

platform.hr.compliance.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Compliance List

platform.hr.connector.cert.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Connector Cert Revoke

platform.hr.connector.cert.submissions

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Connector Cert Submissions

platform.hr.connector.cert.submit

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Connector Cert Submit

platform.hr.connector.certify

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Connector Certify

platform.hr.connector.health

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Connector Health

platform.hr.connector.options

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Connector Options

platform.hr.connector.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Connector Revoke

platform.hr.contract.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Contract List

platform.hr.copilot.apply

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Copilot Apply

platform.hr.copilot.plan

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Copilot Plan

platform.hr.copilot.recipes

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Copilot Recipes

platform.hr.copilot.reject

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Copilot Reject

platform.hr.correction.dataset.build

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Correction Dataset Build

platform.hr.correction.datasets

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Correction Datasets

platform.hr.correction.privacy.review

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Correction Privacy Review

platform.hr.course.enroll

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Course Enroll

platform.hr.course.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Course Save

platform.hr.course.skills.tag

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Course Skills Tag

platform.hr.decision.appeal.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Decision Appeal Assign

platform.hr.decision.appeal.file

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Decision Appeal File

platform.hr.decision.appeal.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Decision Appeal Resolve

platform.hr.decision.appeals.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Decision Appeals List

platform.hr.decision.explanation

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Decision Explanation

platform.hr.decisions.recent

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Decisions Recent

platform.hr.directory.visibility.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Directory Visibility Get

platform.hr.directory.visibility.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Directory Visibility Set

platform.hr.discipline.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Discipline Decide

platform.hr.discipline.propose

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Discipline Propose

platform.hr.document.access.log

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Document Access Log

platform.hr.document.deletion.request

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Deletion Request

platform.hr.document.hold

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Hold

platform.hr.document.intake

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Intake

platform.hr.document.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Document List

platform.hr.document.requirement.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Requirement Add

platform.hr.document.requirement.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Requirement Remove

platform.hr.document.review.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Document Review Approve

platform.hr.document.reviews

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Document Reviews

platform.hr.dsr.list

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Dsr List

platform.hr.dsr.transition

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Dsr Transition

platform.hr.email.intake.log

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Email Intake Log

platform.hr.employee.access.events

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Employee Access Events

platform.hr.employee.provision

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Employee Provision

platform.hr.employee.restore

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Employee Restore

platform.hr.employee.suspend

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Employee Suspend

platform.hr.employment.activate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Employment Activate

platform.hr.employment.end

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Employment End

platform.hr.enterprise.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Enterprise Approve

platform.hr.equipment.delivered

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Equipment Delivered

platform.hr.equipment.request

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Equipment Request

platform.hr.equipment.returned

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Equipment Returned

platform.hr.escrow.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Escrow Resolve

platform.hr.evidence.a11y.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Evidence A11y Record

platform.hr.evidence.attest

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Evidence Attest

platform.hr.evidence.dr.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Evidence Dr Record

platform.hr.evidence.ledgers

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Evidence Ledgers

platform.hr.evidence.load.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Evidence Load Record

platform.hr.evidence.owner.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Evidence Owner Assign

platform.hr.expense.confirm

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Expense Confirm

platform.hr.expense.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Expense Decide

platform.hr.expense.handoff

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Expense Handoff

platform.hr.expense.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Expense Overview

platform.hr.expense.policy.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Expense Policy Save

platform.hr.experience.metrics

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Experience Metrics

platform.hr.expiry.run

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Expiry Run

platform.hr.fairness.cohort.define

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Fairness Cohort Define

platform.hr.fairness.cohorts

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Fairness Cohorts

platform.hr.fairness.evaluate

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Fairness Evaluate

platform.hr.faq.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Faq Delete

platform.hr.faq.draft

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Faq Draft

platform.hr.faq.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Faq List

platform.hr.faq.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Faq Save

platform.hr.faq.state

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Faq State

platform.hr.feedback.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Feedback List

platform.hr.feedback.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Feedback Record

platform.hr.flag.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Flag Set

platform.hr.flags.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Flags Get

platform.hr.frontline.overview

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Frontline Overview

platform.hr.gig.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Gig Decide

platform.hr.gig.post

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Gig Post

platform.hr.global.readiness

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Global Readiness

platform.hr.goal.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Goal Create

platform.hr.goal.draft

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Goal Draft

platform.hr.goal.update

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Goal Update

platform.hr.grievance.file

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Grievance File

platform.hr.grievance.outcome

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Grievance Outcome

platform.hr.headcount.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Headcount Approve

platform.hr.headcount.draft

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Headcount Draft

platform.hr.headcount.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Headcount List

platform.hr.hire

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Hire

platform.hr.hiring.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Hiring Decide

platform.hr.holiday.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Holiday Save

platform.hr.identity.admin.options

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Identity Admin Options

platform.hr.identity.conflict.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Identity Conflict Resolve

platform.hr.identity.coverage.plan

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Identity Coverage Plan

platform.hr.identity.facets

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Identity Facets

platform.hr.identity.history

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Identity History

platform.hr.identity.link

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Identity Link

platform.hr.identity.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Identity Revoke

platform.hr.identity.verification.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Identity Verification Record

platform.hr.incident.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Incident List

platform.hr.incident.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Incident Open

platform.hr.incident.step

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Incident Step

platform.hr.interview.recording.start

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Recording Start

platform.hr.interview.recording.upload

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Recording Upload

platform.hr.interview.review

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Review

platform.hr.interview.room.answer

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room Answer

platform.hr.interview.room.ask

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Ask

platform.hr.interview.room.connect

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Connect

platform.hr.interview.room.consent

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Consent

platform.hr.interview.room.end

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room End

platform.hr.interview.room.leave

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room Leave

platform.hr.interview.room.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Interview Room List

platform.hr.interview.room.observe

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room Observe

platform.hr.interview.room.pause

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Pause

platform.hr.interview.room.provision

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Provision

platform.hr.interview.room.reconnect

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room Reconnect

platform.hr.interview.room.resume

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room Resume

platform.hr.interview.room.state

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Interview Room State

platform.hr.interview.room.takeover

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Room Takeover

platform.hr.interview.schedule

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Schedule

platform.hr.interview.transcript.correct

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Interview Transcript Correct

platform.hr.investigation.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Investigation Close

platform.hr.investigation.finding

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Investigation Finding

platform.hr.investigation.hold

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Investigation Hold

platform.hr.investigation.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Investigation Open

platform.hr.investigation.triage

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Investigation Triage

platform.hr.iplan.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Iplan Approve

platform.hr.iplan.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Iplan Create

platform.hr.iplan.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Iplan List

platform.hr.iscore.human

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Iscore Human

platform.hr.iscore.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Iscore Run

platform.hr.isession.attach.meeting

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Isession Attach Meeting

platform.hr.isession.control

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Isession Control

platform.hr.isession.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Isession List

platform.hr.isession.liveness

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Isession Liveness

platform.hr.isession.schedule

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Isession Schedule

platform.hr.job.arch.analyse

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Job Arch Analyse

platform.hr.job.arch.apply

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Arch Apply

platform.hr.job.arch.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Arch Approve

platform.hr.job.arch.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Job Arch Overview

platform.hr.job.arch.propose

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Arch Propose

platform.hr.job.arch.reject

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Arch Reject

platform.hr.job.family.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Family Save

platform.hr.job.level.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Level Save

platform.hr.job.profile.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Profile Save

platform.hr.job.version.draft.ai

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Version Draft Ai

platform.hr.job.version.publish

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Version Publish

platform.hr.job.version.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Job Version Save

platform.hr.job.versions

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Job Versions

platform.hr.jurisdiction.capabilities

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Jurisdiction Capabilities

platform.hr.jurisdiction.case.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Case Run

platform.hr.jurisdiction.case.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Case Save

platform.hr.jurisdiction.change.assess

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Change Assess

platform.hr.jurisdiction.change.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Change Close

platform.hr.jurisdiction.change.raise

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Change Raise

platform.hr.jurisdiction.coverage

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Jurisdiction Coverage

platform.hr.jurisdiction.explain

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Jurisdiction Explain

platform.hr.jurisdiction.overlay.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Jurisdiction Overlay List

platform.hr.jurisdiction.overlay.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Overlay Save

platform.hr.jurisdiction.pack.draft

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Pack Draft

platform.hr.jurisdiction.pack.release

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Pack Release

platform.hr.jurisdiction.pack.withdraw

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Pack Withdraw

platform.hr.jurisdiction.release.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Jurisdiction Release List

platform.hr.jurisdiction.rule.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Rule Save

platform.hr.jurisdiction.source.declare

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Jurisdiction Source Declare

platform.hr.jurisdiction.transfer.declare

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Jurisdiction Transfer Declare

platform.hr.kill.flip

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Kill Flip

platform.hr.kill.toggle

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Kill Toggle

platform.hr.kiosk.register

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Kiosk Register

platform.hr.kiosk.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Kiosk Revoke

platform.hr.knowledge.pack.install

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Knowledge Pack Install

platform.hr.knowledge.pack.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Knowledge Pack Remove

platform.hr.knowledge.packs

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Knowledge Packs

platform.hr.leadership.score

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Leadership Score

platform.hr.learning.assign.mandatory

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Learning Assign Mandatory

platform.hr.learning.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Learning Overview

platform.hr.leave.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Leave Decide

platform.hr.leave.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Leave Overview

platform.hr.leave.policy.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Leave Policy Save

platform.hr.leave.type.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Leave Type Save

platform.hr.letter.issue

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Letter Issue

platform.hr.letter.kinds

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Letter Kinds

platform.hr.letter.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Letter Preview

platform.hr.listening.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Listening Close

platform.hr.listening.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Listening Overview

platform.hr.listening.run.due

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Listening Run Due

platform.hr.listening.schedule.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Listening Schedule Save

platform.hr.listening.schedule.state

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Listening Schedule State

platform.hr.loop.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Approve

platform.hr.loop.correct

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Correct

platform.hr.loop.evaluate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Evaluate

platform.hr.loop.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Loop Overview

platform.hr.loop.propose

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Propose

platform.hr.loop.release

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Release

platform.hr.loop.rollback

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Rollback

platform.hr.loop.snapshot

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Loop Snapshot

platform.hr.marketplace.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Marketplace Overview

platform.hr.meeting.book

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Meeting Book

platform.hr.meeting.cancel

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Meeting Cancel

platform.hr.meeting.propose

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Meeting Propose

platform.hr.meeting.reschedule

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Meeting Reschedule

platform.hr.meetings.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Meetings Overview

platform.hr.meetings.reconcile

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Meetings Reconcile

platform.hr.mentor.propose

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Mentor Propose

platform.hr.module.toggle

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Module Toggle

platform.hr.new.hire.checkin.state

Read. Scope: platform.read, admin. Contract: route_inferred. Hr New Hire Checkin State

platform.hr.offer.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Offer Approve

platform.hr.offer.draft

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Offer Draft

platform.hr.offer.esign.confirm

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Offer Esign Confirm

platform.hr.offer.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Offer List

platform.hr.offer.send

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Offer Send

platform.hr.offer.withdraw

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Offer Withdraw

platform.hr.onboarding.checkins.book

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Onboarding Checkins Book

platform.hr.onboarding.draft.tasks

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Draft Tasks

platform.hr.onboarding.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Onboarding Overview

platform.hr.onboarding.plan.buddy

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Plan Buddy

platform.hr.onboarding.plan.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Plan Close

platform.hr.onboarding.plan.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Plan Create

platform.hr.onboarding.task.block

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Task Block

platform.hr.onboarding.task.done

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Task Done

platform.hr.onboarding.task.skip

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Onboarding Task Skip

platform.hr.onboarding.task.unblock

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Task Unblock

platform.hr.onboarding.task.verify

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Task Verify

platform.hr.onboarding.template.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Onboarding Template Save

platform.hr.one.on.one.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr One On One List

platform.hr.one.on.one.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr One On One Record

platform.hr.opportunity.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Opportunity Decide

platform.hr.opportunity.post

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Opportunity Post

platform.hr.org.chart

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Org Chart

platform.hr.org.legal.entities

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Org Legal Entities

platform.hr.org.legal.entity.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Org Legal Entity Create

platform.hr.org.location.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Org Location Create

platform.hr.org.locations

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Org Locations

platform.hr.org.map.overview

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Org Map Overview

platform.hr.org.map.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Org Map Remove

platform.hr.org.map.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Org Map Save

platform.hr.org.tree

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Org Tree

platform.hr.org.unit.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Org Unit Create

platform.hr.org.unit.move

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Org Unit Move

platform.hr.override.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Override Record

platform.hr.overtime.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Overtime Decide

platform.hr.path.enroll

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Path Enroll

platform.hr.path.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Path Save

platform.hr.pay.equity.overview

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Pay Equity Overview

platform.hr.pay.gap.evaluate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pay Gap Evaluate

platform.hr.payroll.import

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Payroll Import

platform.hr.payroll.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Payroll Overview

platform.hr.payroll.provider.exceptions

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Payroll Provider Exceptions

platform.hr.payroll.reconcile

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Payroll Reconcile

platform.hr.payslips.issue

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Payslips Issue

platform.hr.people.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr People List

platform.hr.perf.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Perf Overview

platform.hr.person.create

Write. Scope: platform.write, admin. Contract: route_inferred. Create an HR person Required fields: display_name.

platform.hr.person.get

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Person Get

platform.hr.person.identifier.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Person Identifier Add

platform.hr.person.identifier.read

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Person Identifier Read

platform.hr.person.identifiers

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Person Identifiers

platform.hr.person.update

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Person Update

platform.hr.pilot.outcome.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pilot Outcome Record

platform.hr.pipeline

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Pipeline

platform.hr.policy.activate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Policy Activate

platform.hr.policy.compile

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Policy Compile

platform.hr.pool.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pool Create

platform.hr.pool.member.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pool Member Add

platform.hr.pool.member.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pool Member Remove

platform.hr.pool.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Pool Overview

platform.hr.portal.address

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Portal Address

platform.hr.portal.slug.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Portal Slug Save

platform.hr.position.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position Assign

platform.hr.position.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position Create

platform.hr.position.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Position Overview

platform.hr.position.profile.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position Profile Set

platform.hr.position.reports.to

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position Reports To

platform.hr.position.state

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position State

platform.hr.position.vacate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Position Vacate

platform.hr.posting.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Posting Close

platform.hr.posting.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Posting Create

platform.hr.posting.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Posting List

platform.hr.posting.publish

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Posting Publish

platform.hr.probation.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Probation Open

platform.hr.probation.review

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Probation Review

platform.hr.profile.address.format

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Profile Address Format

platform.hr.profile.address.write

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Address Write

platform.hr.profile.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Decide

platform.hr.profile.ownership.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Profile Ownership Get

platform.hr.profile.ownership.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Ownership Set

platform.hr.profile.pending

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Profile Pending

platform.hr.profile.photo.clear

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Photo Clear

platform.hr.profile.photo.set

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Photo Set

platform.hr.profile.reveal

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Reveal

platform.hr.profile.section.end

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Section End

platform.hr.profile.section.write

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Profile Section Write

platform.hr.profile.sections

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Profile Sections

platform.hr.pulse.close

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pulse Close

platform.hr.pulse.issue

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pulse Issue

platform.hr.pulse.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Pulse List

platform.hr.pulse.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Pulse Open

platform.hr.pulse.results

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Pulse Results

platform.hr.quality.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Quality Overview

platform.hr.quality.sample.draw

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Quality Sample Draw

platform.hr.quality.samples

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Quality Samples

platform.hr.quality.verdict

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Quality Verdict

platform.hr.queue.agent.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Queue Agent Add

platform.hr.queue.agent.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Queue Agent Remove

platform.hr.queue.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Queue Save

platform.hr.readiness.report

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Readiness Report

platform.hr.recognise

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Recognise

platform.hr.relations.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Relations Overview

platform.hr.release.gates

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Release Gates

platform.hr.release.verify

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Release Verify

platform.hr.req.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Req Create

platform.hr.req.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Req List

platform.hr.req.reject

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Req Reject

platform.hr.req.transition

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Req Transition

platform.hr.review.cycle.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Review Cycle Open

platform.hr.review.include

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Review Include

platform.hr.review.respond

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Review Respond

platform.hr.review.template.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Review Template Save

platform.hr.rubric.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Rubric Approve

platform.hr.rubric.create

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Rubric Create

platform.hr.rubric.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Rubric List

platform.hr.run.replay

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Run Replay

platform.hr.run.start

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Run Start

platform.hr.run.step

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Run Step

platform.hr.run.takeover

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Run Takeover

platform.hr.scenario.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Scenario Run

platform.hr.schedule.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Schedule Save

platform.hr.screening.correct

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Screening Correct

platform.hr.screening.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Screening List

platform.hr.screening.review

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Screening Review

platform.hr.screening.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Screening Run

platform.hr.screening.verify

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Screening Verify

platform.hr.security.assurance.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Security Assurance Record

platform.hr.service.item.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Service Item Save

platform.hr.servicedesk.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Servicedesk Overview

platform.hr.shadow.compare

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Shadow Compare

platform.hr.shift.add

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Shift Add

platform.hr.shift.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Shift Assign

platform.hr.signature.cancel

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Signature Cancel

platform.hr.signature.confirm

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Signature Confirm

platform.hr.signature.list

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Signature List

platform.hr.signature.request

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Signature Request

platform.hr.signin.design.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Signin Design Get

platform.hr.signin.design.save

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Signin Design Save

platform.hr.skill.challenge.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Skill Challenge Resolve

platform.hr.skills.infer.sweep

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Skills Infer Sweep

platform.hr.skills.infer.text

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Skills Infer Text

platform.hr.skills.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Skills Overview

platform.hr.skills.taxonomy.adopt

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Skills Taxonomy Adopt

platform.hr.status

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Status

platform.hr.succession.nominate

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Succession Nominate

platform.hr.succession.open

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Succession Open

platform.hr.succession.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Succession Overview

platform.hr.swap.approve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Swap Approve

platform.hr.swap.decline

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Swap Decline

platform.hr.sync.conflict.resolve

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Sync Conflict Resolve

platform.hr.talent.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Talent Overview

platform.hr.thread.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Delete

platform.hr.thread.dm

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Dm

platform.hr.thread.legal.hold

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Legal Hold

platform.hr.thread.outreach

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Outreach

platform.hr.thread.post

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Post

platform.hr.thread.read

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Thread Read

platform.hr.thread.retention

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Thread Retention

platform.hr.thread.search

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Thread Search

platform.hr.threads.inbox

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Threads Inbox

platform.hr.threads.retention.sweep

Write. Scope: platform.write, admin. Contract: declared_dynamic. Hr Threads Retention Sweep

platform.hr.time.decide

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Time Decide

platform.hr.time.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Time Overview

platform.hr.title.history

Read. Scope: platform.read, admin. Contract: route_inferred. Hr Title History

platform.hr.title.record

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Title Record

platform.hr.training.requirement.save

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Training Requirement Save

platform.hr.truth.register

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Truth Register

platform.hr.turnover.run

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Turnover Run

platform.hr.verifier.verdict

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Verifier Verdict

platform.hr.wb.grant

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Wb Grant

platform.hr.wb.identity

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Wb Identity

platform.hr.wb.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Wb List

platform.hr.wb.read

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Wb Read

platform.hr.wb.state

Write. Scope: platform.write, admin. Contract: route_inferred. Hr Wb State

platform.hr.workforce.dashboard

Read. Scope: platform.read, admin. Contract: declared_dynamic. Hr Workforce Dashboard

platform.inbound.activity.feed

Write. Scope: platform.write, admin. Contract: route_inferred. Inbound Activity Feed

platform.inbound.endpoints.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Inbound Endpoints Delete

platform.inbound.endpoints.list

Write. Scope: admin. Contract: route_inferred. Inbound Endpoints List

platform.inbound.endpoints.save

Write. Scope: platform.write, admin. Contract: route_inferred. Inbound Endpoints Save

platform.inbound.endpoints.test

Write. Scope: platform.write, admin. Contract: route_inferred. Inbound Endpoints Test

platform.interrupted

Read. Scope: platform.read, admin. Contract: declared_dynamic. Interrupted

platform.ip.classify

Read. Scope: platform.read, admin. Contract: route_inferred. Ip Classify

platform.js.errors.clear.all

Write. Scope: platform.write, admin. Contract: declared_dynamic. Js Errors Clear All

platform.js.errors.list

Read. Scope: platform.read, admin. Contract: route_inferred. Js Errors List

platform.js.issue.assign

Write. Scope: platform.write, admin. Contract: route_inferred. Js Issue Assign

platform.js.issue.update

Write. Scope: platform.write, admin. Contract: route_inferred. Js Issue Update

platform.js.sourcemap.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Js Sourcemap Delete

platform.js.sourcemap.upload

Write. Scope: platform.write, admin. Contract: route_inferred. Js Sourcemap Upload

platform.js.sourcemaps.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Js Sourcemaps List

platform.leads

Read. Scope: platform.read, admin. Contract: route_inferred. Leads

platform.license.delete

Write. Scope: admin. Contract: declared_dynamic. License Delete

platform.license.diagnostics

Read. Scope: platform.read, admin. Contract: declared_dynamic. License Diagnostics

platform.license.force.check

Read. Scope: platform.read, admin. Contract: declared_dynamic. License Force Check

platform.license.preflight

Read. Scope: platform.read, admin. Contract: declared_dynamic. License Preflight

platform.license.save

Write. Scope: admin. Contract: route_inferred. License Save

platform.license.status

Read. Scope: platform.read, admin. Contract: declared_dynamic. License Status

platform.license.verify.now

Write. Scope: platform.write, admin. Contract: declared_dynamic. License Verify Now

platform.lifecycle.evaluate

Read. Scope: platform.read, admin. Contract: route_inferred. Lifecycle Evaluate

platform.lifecycle.rule.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Lifecycle Rule Delete

platform.lifecycle.rule.list

Read. Scope: platform.read, admin. Contract: route_inferred. Lifecycle Rule List

platform.lifecycle.rule.save

Write. Scope: platform.write, admin. Contract: route_inferred. Lifecycle Rule Save

platform.list.assignable.sites

Read. Scope: platform.read, admin. Contract: declared_dynamic. List Assignable Sites

platform.list.network.issues

Read. Scope: platform.read, admin. Contract: declared_dynamic. List Network Issues

platform.lookup.client.full

Read. Scope: platform.read, admin. Contract: route_inferred. Lookup Client Full

platform.mark.feedback.read

Write. Scope: platform.write, admin. Contract: route_inferred. Mark Feedback Read

platform.marketplace.local.install

Write. Scope: platform.write, admin. Contract: route_inferred. Marketplace Local Install

platform.marketplace.local.uninstall

Write. Scope: platform.write, admin. Contract: route_inferred. Marketplace Local Uninstall

platform.marketplace.session.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Marketplace Session Get

platform.marketplace.session.set

Write. Scope: platform.write, admin. Contract: route_inferred. Marketplace Session Set

platform.media.ready

Read. Scope: platform.read, admin. Contract: route_inferred. Media Ready

platform.message.contact.locale

Write. Scope: platform.write, admin. Contract: route_inferred. Message Contact Locale

platform.message.outbound.convert

Write. Scope: platform.write, admin. Contract: route_inferred. Message Outbound Convert

platform.message.translate

Write. Scope: platform.write, admin. Contract: route_inferred. Message Translate

platform.message.translation.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Message Translation Delete

platform.message.translation.save

Write. Scope: platform.write, admin. Contract: route_inferred. Message Translation Save

platform.meta.channels.disconnect

Write. Scope: platform.write, admin. Contract: declared_dynamic. Meta Channels Disconnect

platform.meta.channels.switch.page

Write. Scope: platform.write, admin. Contract: route_inferred. Meta Channels Switch Page

platform.observe

Read. Scope: platform.read, admin. Contract: declared_dynamic. Observe

platform.onboarding.action

Read. Scope: platform.read, admin. Contract: declared_dynamic. Onboarding Action

platform.onboarding.readiness

Read. Scope: platform.read, admin. Contract: declared_dynamic. Onboarding Readiness

platform.open.network.issue

Read. Scope: platform.read, admin. Contract: declared_dynamic. Open Network Issue

platform.open.ticket

Read. Scope: platform.read, admin. Contract: route_inferred. Open Ticket

platform.operator.text.translate

Write. Scope: platform.write, admin. Contract: route_inferred. Operator Text Translate

platform.opsiq.backup.export

Read. Scope: platform.read, admin. Contract: declared_dynamic. Download a full backup in one request (retired)

platform.opsiq.backup.import

Write. Scope: platform.write, admin. Contract: route_inferred. Opsiq Backup Import

platform.opsiq.backup.import.start

Write. Scope: platform.write, admin. Contract: route_inferred. Opsiq Backup Import Start

platform.opsiq.backup.job.start

Write. Scope: platform.write, admin. Contract: route_inferred. Opsiq Backup Job Start

platform.opsiq.backup.job.status

Write. Scope: platform.write, admin. Contract: route_inferred. Opsiq Backup Job Status

platform.outreach.campaign.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Campaign Delete

platform.outreach.campaign.list

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Campaign List

platform.outreach.campaign.save

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Campaign Save

platform.outreach.campaign.send

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Campaign Send

platform.outreach.compose.send

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Compose Send

platform.outreach.draft.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Draft Delete

platform.outreach.draft.list

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Draft List

platform.outreach.draft.save

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Draft Save

platform.outreach.messages.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Messages Delete

platform.outreach.replies.list

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Replies List

platform.outreach.reply.ai

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Reply Ai

platform.outreach.reply.mark

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Reply Mark

platform.outreach.reply.pref

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Reply Pref

platform.outreach.reply.send

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Reply Send

platform.outreach.reply.thread

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Reply Thread

platform.outreach.send.detail

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Send Detail

platform.outreach.send.retry

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Send Retry

platform.outreach.sends.list

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Sends List

platform.outreach.template.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Template Delete

platform.outreach.template.list

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Template List

platform.outreach.template.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Outreach Template Preview

platform.outreach.template.save

Write. Scope: platform.write, admin. Contract: route_inferred. Outreach Template Save

platform.overview

Read. Scope: platform.read, admin. Contract: declared_dynamic. Overview

platform.overview.hub.view

Read. Scope: platform.read, admin. Contract: route_inferred. Overview Hub View

platform.overview.intelligence.graph

Read. Scope: platform.read, admin. Contract: declared_dynamic. Overview Intelligence Graph

platform.pages

Read. Scope: platform.read, admin. Contract: route_inferred. Pages

platform.paths.data

Read. Scope: platform.read, admin. Contract: route_inferred. Paths Data

platform.pause

Read. Scope: platform.read, admin. Contract: declared_dynamic. Pause

platform.profile.change.password

Write. Scope: platform.write, admin. Contract: declared_dynamic. Profile Change Password

platform.profile.get

Read. Scope: platform.read, admin. Contract: route_inferred. Profile Get

platform.profile.reward.claim

Write. Scope: platform.write, admin. Contract: route_inferred. Profile Reward Claim

platform.profile.reward.claim.cancel

Write. Scope: platform.write, admin. Contract: route_inferred. Profile Reward Claim Cancel

platform.profile.save

Write. Scope: platform.write, admin. Contract: declared_dynamic. Profile Save

platform.profile.session.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Profile Session Revoke

platform.profile.sessions.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Profile Sessions List

platform.profile.sessions.revoke.others

Write. Scope: platform.write, admin. Contract: declared_dynamic. Profile Sessions Revoke Others

platform.profile.team.dispute.file

Write. Scope: platform.write, admin. Contract: route_inferred. Profile Team Dispute File

platform.purge

Write. Scope: admin. Contract: route_inferred. Purge

platform.purge.all

Write. Scope: admin. Contract: route_inferred. Purge All

platform.realtime

Read. Scope: platform.read, admin. Contract: route_inferred. Realtime

platform.realtime.test

Write. Scope: platform.write, admin. Contract: route_inferred. Realtime Test

platform.resume

Read. Scope: platform.read, admin. Contract: declared_dynamic. Resume

platform.retention.data

Read. Scope: platform.read, admin. Contract: route_inferred. Retention Data

platform.routes.list

Read. Scope: admin. Contract: source_inferred. List every registered OpsIQ operation

platform.routes.read

Read. Scope: admin. Contract: explicit. Execute a registered read operation Required fields: route.

platform.routes.write

Write. Scope: admin. Contract: explicit. Execute a registered write operation Required fields: route, idempotency_key. Retry-safe with idempotency_key.

platform.run.ai.analysis

Write. Scope: platform.write, admin. Contract: route_inferred. Run Ai Analysis

platform.save.admin.chat.history

Write. Scope: platform.write, admin. Contract: route_inferred. Save Admin Chat History

platform.save.pwa.chat.prefs

Write. Scope: platform.write, admin. Contract: declared_dynamic. Save Pwa Chat Prefs

platform.save.survey.config

Write. Scope: platform.write, admin. Contract: route_inferred. Save Survey Config

platform.save.widget.advanced

Write. Scope: platform.write, admin. Contract: declared_dynamic. Save Widget Advanced

platform.scim.token.issue

Read. Scope: platform.read, admin. Contract: route_inferred. Scim Token Issue

platform.scim.token.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Scim Token List

platform.scim.token.revoke

Write. Scope: platform.write, admin. Contract: route_inferred. Scim Token Revoke

platform.segment.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Segment Delete

platform.segment.list

Read. Scope: platform.read, admin. Contract: route_inferred. Segment List

platform.segment.members

Read. Scope: platform.read, admin. Contract: route_inferred. Segment Members

platform.segment.preview

Read. Scope: platform.read, admin. Contract: route_inferred. Segment Preview

platform.segment.save

Write. Scope: platform.write, admin. Contract: route_inferred. Segment Save

platform.segment.suggestion.accept

Write. Scope: platform.write, admin. Contract: route_inferred. Segment Suggestion Accept

platform.segment.suggestion.dismiss

Write. Scope: platform.write, admin. Contract: route_inferred. Segment Suggestion Dismiss

platform.segment.suggestion.list

Read. Scope: platform.read, admin. Contract: route_inferred. Segment Suggestion List

platform.send.campaign

Write. Scope: platform.write, admin. Contract: route_inferred. Send Campaign

platform.send.client.email

Write. Scope: platform.write, admin. Contract: route_inferred. Send Client Email

platform.send.ticket.reply

Write. Scope: platform.write, admin. Contract: route_inferred. Send Ticket Reply

platform.service.studio.get

Read. Scope: platform.read, admin. Contract: declared_dynamic. Service Studio Get

platform.set.active.site

Write. Scope: platform.write, admin. Contract: route_inferred. Set Active Site

platform.silence

Read. Scope: platform.read, admin. Contract: declared_dynamic. Silence

platform.site.set.group

Write. Scope: platform.write, admin. Contract: route_inferred. Site Set Group

platform.sites.add

Write. Scope: platform.write, admin. Contract: route_inferred. Sites Add

platform.sites.edit

Write. Scope: platform.write, admin. Contract: route_inferred. Sites Edit

platform.sites.list

Write. Scope: platform.write, admin. Contract: route_inferred. Sites List

platform.sites.picker

Write. Scope: platform.write, admin. Contract: route_inferred. Sites Picker

platform.sites.regenerate.secret

Write. Scope: platform.write, admin. Contract: route_inferred. Sites Regenerate Secret

platform.sites.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Sites Remove

platform.stats

Read. Scope: platform.read, admin. Contract: declared_dynamic. Stats

platform.stepup.verify

Write. Scope: platform.write, admin. Contract: declared_dynamic. Stepup Verify

platform.submit.agent.ai.feedback

Write. Scope: platform.write, admin. Contract: route_inferred. Submit Agent Ai Feedback

platform.submit.triage.feedback

Write. Scope: platform.write, admin. Contract: route_inferred. Submit Triage Feedback

platform.takeover

Read. Scope: platform.read, admin. Contract: declared_dynamic. Takeover

platform.terminate

Read. Scope: platform.read, admin. Contract: route_inferred. Terminate

platform.test.geoip

Read. Scope: platform.read, admin. Contract: route_inferred. Test Geoip

platform.top.pages

Read. Scope: platform.read, admin. Contract: route_inferred. Top Pages

platform.train.client.chat.knowledge

Write. Scope: platform.write, admin. Contract: route_inferred. Train Client Chat Knowledge

platform.triggers

Read. Scope: platform.read, admin. Contract: declared_dynamic. Triggers

platform.trust.evidence.report

Write. Scope: platform.write, admin. Contract: declared_dynamic. Trust Evidence Report

platform.turn.pool.add

Write. Scope: platform.write, admin. Contract: route_inferred. Turn Pool Add

platform.turn.pool.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Turn Pool List

platform.turn.pool.pick.test

Write. Scope: platform.write, admin. Contract: route_inferred. Turn Pool Pick Test

platform.turn.pool.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Turn Pool Remove

platform.turn.pool.update

Write. Scope: platform.write, admin. Contract: route_inferred. Turn Pool Update

platform.update.lead.status

Write. Scope: platform.write, admin. Contract: route_inferred. Update Lead Status

platform.wa.embedded.signup.exchange

Write. Scope: platform.write, admin. Contract: route_inferred. Wa Embedded Signup Exchange

platform.warehouse.export.run

Read. Scope: platform.read, admin. Contract: declared_dynamic. Warehouse Export Run

platform.warehouse.exports.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Warehouse Exports List

platform.webhook.deliveries.list

Read. Scope: platform.read, admin. Contract: route_inferred. Webhook Deliveries List

platform.webhook.endpoint.delete

Write. Scope: platform.write, admin. Contract: route_inferred. Webhook Endpoint Delete

platform.webhook.endpoint.list

Read. Scope: platform.read, admin. Contract: declared_dynamic. Webhook Endpoint List

platform.webhook.endpoint.save

Write. Scope: platform.write, admin. Contract: route_inferred. Webhook Endpoint Save

platform.webhook.endpoint.test

Write. Scope: platform.write, admin. Contract: route_inferred. Webhook Endpoint Test

platform.webhook.redeliver

Write. Scope: platform.write, admin. Contract: route_inferred. Webhook Redeliver

platform.weekly.digest.view

Read. Scope: platform.read, admin. Contract: route_inferred. Weekly Digest View

platform.whmcs.op.dispatch

Read. Scope: platform.read, admin. Contract: declared_dynamic. Whmcs Op Dispatch

platform.workspace.custom.domain.remove

Write. Scope: platform.write, admin. Contract: route_inferred. Workspace Custom Domain Remove

platform.workspace.custom.domain.set

Write. Scope: platform.write, admin. Contract: route_inferred. Workspace Custom Domain Set

platform.writing.json.knowledge.clear

Write. Scope: platform.write, admin. Contract: declared_dynamic. Writing Json Knowledge Clear

platform.writing.json.knowledge.count

Read. Scope: platform.read, admin. Contract: declared_dynamic. Writing Json Knowledge Count

platform.writing.json.knowledge.import

Write. Scope: platform.write, admin. Contract: route_inferred. Writing Json Knowledge Import

portal_studio (169)

portal_studio.accessibility.evidence.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Accessibility Evidence Save

portal_studio.add

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Domain Add

portal_studio.allocate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Subdomain Allocate

portal_studio.analytics.breakdown

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Analytics Breakdown

portal_studio.analytics.load

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Analytics Load

portal_studio.apply.kit

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Apply Kit

portal_studio.apply.theme

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Apply Theme

portal_studio.approval

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Design Approval

portal_studio.approve

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Approve

portal_studio.ask

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Ask

portal_studio.audience.delete

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Audience Delete

portal_studio.audience.explain

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Audience Explain

portal_studio.audience.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Audience List

portal_studio.audience.preview

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Audience Preview

portal_studio.audience.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Audience Save

portal_studio.brand.generate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Brand Generate

portal_studio.brand.import

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Brand Import

portal_studio.cancel.schedule

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Design Cancel Schedule

portal_studio.certify

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Certify

portal_studio.check

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Host Check

portal_studio.check.route.portal.subdomain.check

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Subdomain Check

portal_studio.comment.add

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Comment Add

portal_studio.comment.resolve

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Comment Resolve

portal_studio.component.package.inspect

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Component Package Inspect

portal_studio.component.package.install

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Component Package Install

portal_studio.component.validate

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Component Validate

portal_studio.config

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Handoff Config

portal_studio.data.resolve

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Data Resolve

portal_studio.delete.theme

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Delete Theme

portal_studio.developer.contract

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Developer Contract

portal_studio.discovery.preview

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Studio Discovery Preview

portal_studio.discovery.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Discovery Save

portal_studio.document.load

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Load

portal_studio.document.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Save

portal_studio.experiment.control

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Experiment Control

portal_studio.experiment.results

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Experiment Results

portal_studio.experiment.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Experiment Save

portal_studio.experiments.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Experiments List

portal_studio.form.archive

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Form Archive

portal_studio.form.catalog

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Form Catalog

portal_studio.form.create

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Create

portal_studio.form.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Delete

portal_studio.form.duplicate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Duplicate

portal_studio.form.evaluate

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Studio Form Evaluate

portal_studio.form.group.apply

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Group Apply

portal_studio.form.group.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Group Delete

portal_studio.form.group.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Group Save

portal_studio.form.publish

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Publish

portal_studio.form.restore

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Form Restore

portal_studio.form.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Save

portal_studio.form.template

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Template

portal_studio.form.test

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Studio Form Test

portal_studio.form.version.restore

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Form Version Restore

portal_studio.history

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Design History

portal_studio.identity.discover

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Identity Discover

portal_studio.identity.load

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Identity Load

portal_studio.identity.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Identity Save

portal_studio.integration.activate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Activate

portal_studio.integration.install

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Install

portal_studio.integration.kill.switch

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Kill Switch

portal_studio.integration.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Integration List

portal_studio.integration.policy

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Integration Policy

portal_studio.integration.policy.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Integration Policy Save

portal_studio.integration.preflight

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Preflight

portal_studio.integration.revise

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Revise

portal_studio.integration.rollback

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Rollback

portal_studio.integration.transition

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Integration Transition

portal_studio.journey.archive

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Archive

portal_studio.journey.catalog

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Journey Catalog

portal_studio.journey.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Delete

portal_studio.journey.duplicate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Duplicate

portal_studio.journey.evaluate

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Studio Journey Evaluate

portal_studio.journey.instantiate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Instantiate

portal_studio.journey.restore

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Restore

portal_studio.journey.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Journey Save

portal_studio.kb.category.delete

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Kb Category Delete

portal_studio.kb.category.reorder

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Kb Category Reorder

portal_studio.kb.category.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Kb Category Save

portal_studio.kb.governance

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Kb Governance

portal_studio.kb.governance.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Kb Governance Save

portal_studio.kb.languages

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Kb Languages

portal_studio.kb.languages.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Kb Languages Save

portal_studio.kb.parity

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Kb Parity

portal_studio.kb.search.tuning

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Kb Search Tuning

portal_studio.kb.search.tuning.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Kb Search Tuning Save

portal_studio.kb.tree

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Kb Tree

portal_studio.knowledge.summary

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Knowledge Summary

portal_studio.list

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Domain List

portal_studio.load

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Analytics Load

portal_studio.load.route.portal.design.load

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Design Load

portal_studio.load.route.portal.form.load

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Form Load

portal_studio.lock

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Lock

portal_studio.migration.apply

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Apply

portal_studio.migration.approve

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Approve

portal_studio.migration.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Migration List

portal_studio.migration.reconcile

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Reconcile

portal_studio.migration.report

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Migration Report

portal_studio.migration.rollback

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Rollback

portal_studio.migration.rollout

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Rollout

portal_studio.migration.start

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Migration Start

portal_studio.node.add

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Node Add

portal_studio.node.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Node Delete

portal_studio.node.duplicate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Node Duplicate

portal_studio.node.move

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Node Move

portal_studio.node.update

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Node Update

portal_studio.operations.control

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Operations Control

portal_studio.operations.feed

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Operations Feed

portal_studio.operations.record

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Operations Record

portal_studio.operations.summary

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Operations Summary

portal_studio.org.context

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Org Context

portal_studio.org.member.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Org Member Save

portal_studio.org.members

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Org Members

portal_studio.org.requests

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Org Requests

portal_studio.page.archive

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Archive

portal_studio.page.create

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Create

portal_studio.page.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Delete

portal_studio.page.duplicate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Duplicate

portal_studio.page.restore

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Restore

portal_studio.page.update

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Page Update

portal_studio.parity.accept

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Parity Accept

portal_studio.parity.capture

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Parity Capture

portal_studio.parity.compare

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Parity Compare

portal_studio.parity.create

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Parity Create

portal_studio.parity.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Parity List

portal_studio.personalization.delete

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Personalization Delete

portal_studio.personalization.list

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Personalization List

portal_studio.personalization.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Personalization Save

portal_studio.presence

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Presence

portal_studio.preview

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Preview

portal_studio.preview.catalog

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Preview Catalog

portal_studio.publish

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Publish

portal_studio.quality

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Quality

portal_studio.redirect.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Redirect Delete

portal_studio.redirect.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Redirect Save

portal_studio.release.diff

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Release Diff

portal_studio.release.evidence

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Design Release Evidence

portal_studio.release.history

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Release History

portal_studio.release.publish

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Publish

portal_studio.release.rollback

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Rollback

portal_studio.release.schedule

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Schedule

portal_studio.remove

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Domain Remove

portal_studio.request.changes

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Request Changes

portal_studio.restore.field

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Restore Field

portal_studio.restore.published

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Restore Published

portal_studio.revert

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Design Revert

portal_studio.review

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Review

portal_studio.review.link

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Review Link

portal_studio.rollback

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Rollback

portal_studio.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Save

portal_studio.save.route.portal.form.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Form Save

portal_studio.save.theme

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Save Theme

portal_studio.saved.section.delete

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Saved Section Delete

portal_studio.saved.section.instantiate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Saved Section Instantiate

portal_studio.saved.section.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Saved Section Save

portal_studio.schedule

Read. Scope: portal_studio.read, admin. Contract: route_inferred. Portal Design Schedule

portal_studio.schedule.cancel

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Schedule Cancel

portal_studio.scim.config

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Scim Config

portal_studio.service.archive

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Archive

portal_studio.service.catalog

Read. Scope: portal_studio.read, admin. Contract: declared_dynamic. Portal Studio Service Catalog

portal_studio.service.duplicate

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Duplicate

portal_studio.service.reorder

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Reorder

portal_studio.service.restore

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Restore

portal_studio.service.save

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Save

portal_studio.service.template

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Studio Service Template

portal_studio.sign.in.flow.save

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Sign In Flow Save

portal_studio.signin.methods

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Design Signin Methods

portal_studio.test.link

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Handoff Test Link

portal_studio.unlock

Write. Scope: portal_studio.write, admin. Contract: declared_dynamic. Portal Studio Unlock

portal_studio.upload

Write. Scope: portal_studio.write, admin. Contract: route_inferred. Portal Image Upload

sales (14)

sales.ai.insight

Write. Scope: sales.write, admin. Contract: route_inferred. Sales Ai Insight

sales.analyze

Write. Scope: sales.write, analytics.write, admin. Contract: route_inferred. Analyze sales with AI

sales.chart

Write. Scope: sales.write, admin. Contract: route_inferred. Sales Chart

sales.compare

Read. Scope: sales.read, analytics.read, admin. Contract: route_inferred. Compare sales periods

sales.compare.route.sales.compare

Read. Scope: sales.read, admin. Contract: route_inferred. Sales Compare

sales.goal.delete

Write. Scope: sales.write, admin. Contract: route_inferred. Conversion Goal Delete

sales.goal.list

Read. Scope: sales.read, admin. Contract: route_inferred. Conversion Goal List

sales.goal.save

Write. Scope: sales.write, admin. Contract: route_inferred. Conversion Goal Save

sales.list

Read. Scope: sales.read, analytics.read, admin. Contract: route_inferred. List sales and conversions

sales.list.route.conversion.list

Read. Scope: sales.read, admin. Contract: route_inferred. Conversion List

sales.record

Write. Scope: sales.write, admin. Contract: route_inferred. Conversion Record

sales.stats

Read. Scope: sales.read, analytics.read, admin. Contract: declared_dynamic. Read sales statistics

sales.stats.route.sales.stats

Read. Scope: sales.read, admin. Contract: declared_dynamic. Sales Stats

sales.table

Read. Scope: sales.read, admin. Contract: route_inferred. Sales Table

güvenlik güvenliği güvenlik güvenliği (21)

security.ai.analyze

Write. Scope: security.write, admin. Contract: route_inferred. Security Ai Analyze

security.ai.ask

Write. Scope: security.write, admin. Contract: route_inferred. Security Ai Ask

security.ai.briefs

Read. Scope: security.read, admin. Contract: declared_dynamic. Security Ai Briefs

security.ai.chain.explain

Read. Scope: security.read, admin. Contract: route_inferred. Security Ai Chain Explain

security.ai.incident.action

Write. Scope: security.write, admin. Contract: route_inferred. Security Ai Incident Action

security.ai.incidents

Read. Scope: security.read, admin. Contract: route_inferred. Security Ai Incidents

security.ai.js.triage

Read. Scope: security.read, admin. Contract: route_inferred. Security Ai Js Triage

security.ai.policies

Read. Scope: security.read, admin. Contract: declared_dynamic. Security Ai Policies

security.ai.policy.action

Write. Scope: security.write, admin. Contract: route_inferred. Security Ai Policy Action

security.ai.verdicts

Read. Scope: security.read, admin. Contract: route_inferred. Security Ai Verdicts

security.blocklist.add

Write. Scope: security.write, admin. Contract: source_inferred. Add a spam rule (email, domain or IP) to the ticket blocklist Required fields: kind, value. Retry-safe with idempotency_key.

security.blocklist.list

Read. Scope: security.read, admin. Contract: explicit. List the current ticket spam rules

security.chain.reanchor

Write. Scope: security.write, admin. Contract: declared_dynamic. Security Chain Reanchor

security.check

Read. Scope: security.read, admin. Contract: source_inferred. Check an IP or email against the platform blocklists and Security AI verdicts

security.ip

Write. Scope: security.write, admin. Contract: route_inferred. Block Ip

security.ip.route.unblock.ip

Write. Scope: security.write, admin. Contract: route_inferred. Unblock Ip

security.list

Write. Scope: security.write, admin. Contract: route_inferred. Access Log List

security.overview.chains

Read. Scope: security.read, admin. Contract: declared_dynamic. Security Overview Chains

security.overview.data

Read. Scope: security.read, admin. Contract: declared_dynamic. Security Overview Data

security.report

Write. Scope: security.write, admin. Contract: source_inferred. Report abuse a connector observed (spam, login attack, scan, fraud) Retry-safe with idempotency_key.

security.visitor

Write. Scope: security.write, admin. Contract: route_inferred. Block Visitor

sessions (5)

sessions.detail

Read. Scope: sessions.read, admin. Contract: route_inferred. Session Detail

sessions.get

Read. Scope: sessions.read, analytics.read, admin. Contract: route_inferred. Get a session journey Required fields: session_id.

sessions.list

Read. Scope: sessions.read, analytics.read, admin. Contract: route_inferred. List sessions

sessions.merged

Read. Scope: sessions.read, admin. Contract: route_inferred. Sessions Merged

sessions.table

Read. Scope: sessions.read, admin. Contract: route_inferred. Sessions Table

settings (11)

settings.ai.eval.watchtower.config

Write. Scope: settings.write, admin. Contract: declared_dynamic. Ai Eval Watchtower Config

settings.get.client.chat.settings

Read. Scope: settings.read, admin. Contract: route_inferred. Get Client Chat Settings

settings.get.settings

Read. Scope: settings.read, admin. Contract: route_inferred. Get Settings

settings.opsiq.branding.clear

Write. Scope: admin. Contract: route_inferred. Opsiq Branding Clear

settings.opsiq.branding.upload

Write. Scope: admin. Contract: route_inferred. Opsiq Branding Upload

settings.privacy.settings.get

Read. Scope: settings.read, admin. Contract: declared_dynamic. Privacy Settings Get

settings.privacy.settings.save

Write. Scope: settings.write, admin. Contract: route_inferred. Privacy Settings Save

settings.save.ai.settings

Write. Scope: settings.write, admin. Contract: route_inferred. Save Ai Settings

settings.save.chat.widget.settings

Write. Scope: settings.write, admin. Contract: declared_dynamic. Save Chat Widget Settings

settings.save.client.chat.settings

Write. Scope: settings.write, admin. Contract: route_inferred. Save Client Chat Settings

settings.save.settings

Write. Scope: settings.write, admin. Contract: route_inferred. Save Settings

site_intelligence (221)

site_intelligence.action.audit.chain

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Action Audit Chain

site_intelligence.action.execute

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Action Execute

site_intelligence.action.preview

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Action Preview

site_intelligence.action.token

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Action Token

site_intelligence.agent.auto.bg

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Auto Bg

site_intelligence.agent.auto.bg.stop

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Auto Bg Stop

site_intelligence.agent.auto.step

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Auto Step

site_intelligence.agent.chat

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Chat

site_intelligence.agent.conn.delete

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Conn Delete

site_intelligence.agent.conn.get

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Conn Get

site_intelligence.agent.conn.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Conn Save

site_intelligence.agent.conn.test

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Conn Test

site_intelligence.agent.coverage

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Coverage

site_intelligence.agent.events

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Events

site_intelligence.agent.hosted.apply

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Apply

site_intelligence.agent.hosted.finalize

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Finalize

site_intelligence.agent.hosted.live.set

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Live Set

site_intelligence.agent.hosted.preview

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Preview

site_intelligence.agent.hosted.rollback

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Rollback

site_intelligence.agent.hosted.start

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Start

site_intelligence.agent.hosted.verify

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Hosted Verify

site_intelligence.agent.run.delete

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Delete

site_intelligence.agent.run.finalize

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Finalize

site_intelligence.agent.run.rollback

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Rollback

site_intelligence.agent.run.start

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Start

site_intelligence.agent.run.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Status

site_intelligence.agent.run.verify

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Run Verify

site_intelligence.agent.runs.list

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Runs List

site_intelligence.agent.set.mode

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Set Mode

site_intelligence.agent.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Status

site_intelligence.agent.step.apply

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Step Apply

site_intelligence.agent.step.skip

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Step Skip

site_intelligence.agent.turn.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Agent Turn Status

site_intelligence.ai.activity

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Ai Activity

site_intelligence.ai.alert.enrich

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Alert Enrich

site_intelligence.ai.alerts

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Alerts

site_intelligence.ai.analyst

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Analyst

site_intelligence.ai.analyst.ask

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Analyst Ask

site_intelligence.ai.analyst.email

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Analyst Email

site_intelligence.ai.analyst.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Analyst Run

site_intelligence.ai.badges

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Badges

site_intelligence.ai.badges.portfolio

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Ai Badges Portfolio

site_intelligence.ai.badges.preview

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Badges Preview

site_intelligence.ai.bl.plan

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Bl Plan

site_intelligence.ai.bl.plan.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Bl Plan Run

site_intelligence.ai.brief

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Brief

site_intelligence.ai.brief.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Brief Run

site_intelligence.ai.comp.analyse

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Comp Analyse

site_intelligence.ai.comp.analyse.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Comp Analyse Run

site_intelligence.ai.content.get

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Content Get

site_intelligence.ai.content.list

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Content List

site_intelligence.ai.content.publish

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Content Publish

site_intelligence.ai.content.write

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Content Write

site_intelligence.ai.daily.digest

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Daily Digest

site_intelligence.ai.discover

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Discover

site_intelligence.ai.fix.apply

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Apply

site_intelligence.ai.fix.apply.bulk

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Apply Bulk

site_intelligence.ai.fix.dismiss

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Dismiss

site_intelligence.ai.fix.dismiss.bulk

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Dismiss Bulk

site_intelligence.ai.fix.generate

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Generate

site_intelligence.ai.fix.generate.all

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix Generate All

site_intelligence.ai.fix.list

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Fix List

site_intelligence.ai.kw.coach

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Kw Coach

site_intelligence.ai.kw.coach.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Kw Coach Run

site_intelligence.ai.overview

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Overview

site_intelligence.ai.page.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Page Audit

site_intelligence.ai.page.audit.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Page Audit Run

site_intelligence.ai.portfolio

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Ai Portfolio

site_intelligence.ai.portfolio.history

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Ai Portfolio History

site_intelligence.ai.portfolio.run

Write. Scope: site_intelligence.write, admin. Contract: declared_dynamic. Si Ai Portfolio Run

site_intelligence.ai.probe

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Probe

site_intelligence.ai.prompt.add

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Prompt Add

site_intelligence.ai.prompt.history

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Prompt History

site_intelligence.ai.prompt.remove

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Prompt Remove

site_intelligence.ai.prompts

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Prompts

site_intelligence.ai.readiness

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Readiness

site_intelligence.ai.ready

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ai Ready

site_intelligence.alert.resolve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Alert Resolve

site_intelligence.alerts

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Alerts

site_intelligence.alerts.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. List Site Intelligence alerts

site_intelligence.alerts.resolve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Resolve a Site Intelligence alert Required fields: alert_id.

site_intelligence.analyze

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Analyze

site_intelligence.ask

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ask

site_intelligence.audit.hint

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Audit Hint

site_intelligence.backlink.disavow

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Backlink Disavow

site_intelligence.backlinks

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Backlinks

site_intelligence.backlinks.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. List backlinks

site_intelligence.backlinks.refresh

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Backlinks Refresh

site_intelligence.billing.overview

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Billing Overview

site_intelligence.brand.get

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Brand Get

site_intelligence.brand.radar

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Brand Radar

site_intelligence.brand.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Brand Save

site_intelligence.cannibalisation

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Cannibalisation

site_intelligence.compare

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Compare

site_intelligence.competitor.add

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Competitor Add

site_intelligence.competitor.refresh

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Competitor Refresh

site_intelligence.competitor.remove

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Competitor Remove

site_intelligence.competitors

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Competitors

site_intelligence.competitors.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. List competitors

site_intelligence.content.brief

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Content Brief

site_intelligence.content.decay

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Content Decay

site_intelligence.content.draft

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Content Draft

site_intelligence.crawl.budget

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Crawl Budget

site_intelligence.crawl.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Crawl List

site_intelligence.crawl.status

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Crawl Status

site_intelligence.crawls.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. List Site Intelligence crawls

site_intelligence.crawls.status

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Get crawl status

site_intelligence.dashboard

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Read the Site Intelligence dashboard

site_intelligence.dashboard.route.si.dashboard

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Dashboard

site_intelligence.dashboard.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Dashboard Save

site_intelligence.diag.backfill

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Backfill

site_intelligence.diag.compare

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Compare

site_intelligence.diag.portfolio

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Diag Portfolio

site_intelligence.diag.recs.regen

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Recs Regen

site_intelligence.diag.thresholds

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds

site_intelligence.diag.thresholds.eval

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds Eval

site_intelligence.diag.thresholds.history

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds History

site_intelligence.diag.thresholds.profile

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds Profile

site_intelligence.diag.thresholds.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diag Thresholds Save

site_intelligence.diagnostics

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Diagnostics

site_intelligence.exec.report

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Exec Report

site_intelligence.export

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Export

site_intelligence.ga4.connect

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 Connect

site_intelligence.ga4.list.properties

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 List Properties

site_intelligence.ga4.map

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 Map

site_intelligence.ga4.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 Status

site_intelligence.ga4.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Ga4 Sync

site_intelligence.gbp

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp

site_intelligence.gbp.draft.approve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Draft Approve

site_intelligence.gbp.draft.dismiss

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Draft Dismiss

site_intelligence.gbp.draft.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Draft Sync

site_intelligence.gbp.drafts

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Drafts

site_intelligence.gbp.locations

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Gbp Locations

site_intelligence.gbp.map

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Map

site_intelligence.gbp.post.draft

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Post Draft

site_intelligence.gbp.post.publish

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Post Publish

site_intelligence.gbp.qa

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Qa

site_intelligence.gbp.qa.approve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Qa Approve

site_intelligence.gbp.qa.dismiss

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Qa Dismiss

site_intelligence.gbp.qa.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Qa Sync

site_intelligence.gbp.site.prefs

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Site Prefs

site_intelligence.gbp.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gbp Sync

site_intelligence.google.truth.schedule.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Google Truth Schedule Save

site_intelligence.growth

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Growth

site_intelligence.gsc.connect

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Connect

site_intelligence.gsc.list.properties

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc List Properties

site_intelligence.gsc.map

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Map

site_intelligence.gsc.opportunities

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Opportunities

site_intelligence.gsc.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Status

site_intelligence.gsc.sync

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Gsc Sync

site_intelligence.image.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Image Audit

site_intelligence.internal.links

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Internal Links

site_intelligence.issue.history

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Issue History

site_intelligence.issues

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Issues

site_intelligence.issues.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. List Site Intelligence issues

site_intelligence.keyword.add

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Keyword Add

site_intelligence.keyword.remove

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Keyword Remove

site_intelligence.keyword.research

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Keyword Research

site_intelligence.keywords

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Keywords

site_intelligence.keywords.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. List tracked keywords

site_intelligence.local

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Local

site_intelligence.local.grid

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Local Grid

site_intelligence.local.grid.scan

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Local Grid Scan

site_intelligence.log.ingest

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Log Ingest

site_intelligence.log.summary

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Log Summary

site_intelligence.metadata.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Metadata Audit

site_intelligence.overview

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Overview

site_intelligence.page

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Page

site_intelligence.page.experience

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Page Experience

site_intelligence.page.optimize

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Page Optimize

site_intelligence.pages

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. Si Pages

site_intelligence.pages.list

Read. Scope: site_intelligence.read, admin. Contract: route_inferred. List Site Intelligence pages

site_intelligence.pagespeed.bridge.status

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Pagespeed Bridge Status

site_intelligence.portfolio.export

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Portfolio Export

site_intelligence.provider.health

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Provider Health

site_intelligence.rank.check

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Rank Check

site_intelligence.rec.action

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Rec Action

site_intelligence.recommendations

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Recommendations

site_intelligence.redirect.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Redirect Audit

site_intelligence.report

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Report

site_intelligence.report.generate

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Report Generate

site_intelligence.reports

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Reports

site_intelligence.reports.list

Read. Scope: site_intelligence.read, admin. Contract: source_inferred. Site Intelligence Reports List

site_intelligence.reset.google.oauth

Write. Scope: site_intelligence.write, admin. Contract: declared_dynamic. Si Reset Google Oauth

site_intelligence.revenue

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Revenue

site_intelligence.revenue.portfolio

Read. Scope: site_intelligence.read, admin. Contract: declared_dynamic. Si Revenue Portfolio

site_intelligence.save.shared.google.oauth

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Save Shared Google Oauth

site_intelligence.scan.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Start a Site Intelligence analysis

site_intelligence.schedule.delete

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schedule Delete

site_intelligence.schedule.run.now

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schedule Run Now

site_intelligence.schedule.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schedule Save

site_intelligence.schedules.list

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schedules List

site_intelligence.schema.audit

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Schema Audit

site_intelligence.server.engineer

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Server Engineer

site_intelligence.settings.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Settings Save

site_intelligence.sites.list

Read. Scope: site_intelligence.read, admin. Contract: explicit. List Site Intelligence monitored sites

site_intelligence.speed

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed

site_intelligence.speed.progress

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed Progress

site_intelligence.speed.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed Run

site_intelligence.speed.v2

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2

site_intelligence.speed.v2.build.task

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2 Build Task

site_intelligence.speed.v2.collect

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2 Collect

site_intelligence.speed.v2.read

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2 Read

site_intelligence.speed.v2.run

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Speed V2 Run

site_intelligence.start.crawl

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Start Crawl

site_intelligence.task.approve

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Approve

site_intelligence.task.assign

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Assign

site_intelligence.task.bulk.apply

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Bulk Apply

site_intelligence.task.bulk.assign

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Bulk Assign

site_intelligence.task.bulk.deadline

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Bulk Deadline

site_intelligence.task.bulk.dismiss

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Bulk Dismiss

site_intelligence.task.deadline

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Deadline

site_intelligence.task.note

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Note

site_intelligence.task.proof

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Proof

site_intelligence.task.reject

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Reject

site_intelligence.task.review

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Task Review

site_intelligence.topical.map

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Topical Map

site_intelligence.webhook.delete

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Webhook Delete

site_intelligence.webhook.save

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Webhook Save

site_intelligence.webhooks.list

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Webhooks List

site_intelligence.workflow

Write. Scope: site_intelligence.write, admin. Contract: route_inferred. Si Workflow

Durum durumu (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.

anket (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.

takım takımı ekibi (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

Bilet biletleri bilet bileti (77)

tickets.ai.summary

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Ai Summary

tickets.analytics

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Analytics

tickets.approval.decide

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Approval Decide

tickets.approval.request

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Approval Request

tickets.approvals.pending

Read. Scope: tickets.read, admin. Contract: declared_dynamic. Ticket Approvals Pending

tickets.assignment.rule.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Assignment Rule Delete

tickets.assignment.rule.list

Read. Scope: tickets.read, admin. Contract: declared_dynamic. Ticket Assignment Rule List

tickets.assignment.rule.save

Write. Scope: tickets.write, admin. Contract: declared_dynamic. Ticket Assignment Rule Save

tickets.assignment_rules.delete

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Assignment Rules Delete Retry-safe with idempotency_key.

tickets.assignment_rules.save

Write. Scope: tickets.write, admin. Contract: explicit. Create or update a ticket assignment rule Required fields: name. Retry-safe with idempotency_key.

tickets.bulk

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Bulk Retry-safe with idempotency_key.

tickets.bulk.route.tickets.bulk

Write. Scope: tickets.write, admin. Contract: route_inferred. Tickets Bulk

tickets.calendar.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Sla Calendar Delete

tickets.calendar.save

Write. Scope: tickets.write, admin. Contract: declared_dynamic. Sla Calendar Save

tickets.claim

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Claim

tickets.csat.get

Read. Scope: tickets.read, admin. Contract: explicit. Get the CSAT response for one ticket Required fields: ticket_id.

tickets.csat.list

Read. Scope: tickets.read, admin. Contract: explicit. List ticket CSAT responses in the bound workspace

tickets.csat.metrics

Read. Scope: tickets.read, admin. Contract: explicit. CSAT metrics for a period (the tickets dashboard numbers)

tickets.embed.load

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Embed Load

tickets.embed.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Embed Save

tickets.embed.secret

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Embed Secret

tickets.field.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Field Save

tickets.follower.add

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Follower Add

tickets.follower.remove

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Follower Remove

tickets.get

Read. Scope: tickets.read, admin. Contract: source_inferred. Tickets Get

tickets.kb.deflection

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Kb Deflection

tickets.kb.draft

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Kb Draft

tickets.kb.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Kb Save

tickets.kb.version.restore

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Kb Version Restore

tickets.kb.versions

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Kb Versions

tickets.link.add

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Link Add

tickets.link.remove

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Link Remove

tickets.list

Read. Scope: tickets.read, admin. Contract: source_inferred. Tickets List

tickets.open

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Open Retry-safe with idempotency_key.

tickets.open_guest

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Open Guest Retry-safe with idempotency_key.

tickets.ops.summary

Read. Scope: tickets.read, admin. Contract: declared_dynamic. Ticket Ops Summary

tickets.policy.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Sla Policy Delete

tickets.policy.save

Write. Scope: tickets.write, admin. Contract: declared_dynamic. Sla Policy Save

tickets.presence.leave

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Presence Leave

tickets.presence.ping

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Presence Ping

tickets.quick.replies

Write. Scope: tickets.write, admin. Contract: declared_dynamic. Ticket Quick Replies

tickets.quick.reply.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Quick Reply Save

tickets.relations.get

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Relations Get

tickets.reply

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Reply Retry-safe with idempotency_key.

tickets.reply.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Delete

tickets.reply.edit

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Edit

tickets.reply.outbound.convert

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Outbound Convert

tickets.reply.translate

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Translate

tickets.reply.translation.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Translation Delete

tickets.reply.translation.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Reply Translation Save

tickets.rule.compose

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Rule Compose

tickets.side.ai.draft

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Side Ai Draft

tickets.side.assign.department

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Side Assign Department

tickets.side.create

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Side Create

tickets.side.list

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Side List

tickets.side.mention

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Side Mention

tickets.side.recipients

Read. Scope: tickets.read, admin. Contract: declared_dynamic. Ticket Side Recipients

tickets.side.reply

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Side Reply

tickets.sla.delete

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Sla Delete Retry-safe with idempotency_key.

tickets.sla.save

Write. Scope: tickets.write, admin. Contract: explicit. Create or update an SLA policy Required fields: name. Retry-safe with idempotency_key.

tickets.split

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Split

tickets.split.candidates

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Split Candidates

tickets.tag.add

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Tag Add

tickets.tag.list

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Tag List

tickets.tag.remove

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Tag Remove

tickets.tags.add

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Tags Add Retry-safe with idempotency_key.

tickets.tags.list

Read. Scope: tickets.read, admin. Contract: source_inferred. Tickets Tags List

tickets.tags.remove

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Tags Remove Retry-safe with idempotency_key.

tickets.update

Write. Scope: tickets.write, admin. Contract: source_inferred. Update a ticket status, priority, subject, department or assignment Retry-safe with idempotency_key.

tickets.view.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket View Delete

tickets.view.list

Read. Scope: tickets.read, admin. Contract: declared_dynamic. Ticket View List

tickets.view.save

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket View Save

tickets.views.delete

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Views Delete Retry-safe with idempotency_key.

tickets.views.save

Write. Scope: tickets.write, admin. Contract: source_inferred. Tickets Views Save Retry-safe with idempotency_key.

tickets.worklog.add

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Worklog Add

tickets.worklog.delete

Write. Scope: tickets.write, admin. Contract: route_inferred. Ticket Worklog Delete

tickets.worklog.list

Read. Scope: tickets.read, admin. Contract: route_inferred. Ticket Worklog List

todos (1)

todos.add

Write. Scope: todos.write, admin. Contract: source_inferred. Todos Add Retry-safe with idempotency_key.

visitors (3)

visitors.block

Write. Scope: visitors.write, security.write, admin. Contract: route_inferred. Block a visitor Required fields: visitor_id.

visitors.list

Read. Scope: visitors.read, analytics.read, admin. Contract: route_inferred. List visitors

visitors.table

Read. Scope: visitors.read, admin. Contract: route_inferred. Visitors Table

webhooks (1)

webhooks.events.list

Read. Scope: webhooks.read, crm.read, admin. Contract: explicit. List outbound webhook events and their payloads

writing (6)

writing.analyze

Write. Scope: writing. Contract: source_inferred. Writing Analyze Retry-safe with idempotency_key.

writing.compose

Write. Scope: writing. Contract: source_inferred. Writing Compose Retry-safe with idempotency_key.

writing.reply

Write. Scope: writing. Contract: source_inferred. Writing Reply Retry-safe with idempotency_key.

writing.rewrite

Write. Scope: writing. Contract: source_inferred. Writing Rewrite Retry-safe with idempotency_key.

writing.summarize

Write. Scope: writing. Contract: source_inferred. Writing Summarize Retry-safe with idempotency_key.

writing.translate

Write. Scope: writing. Contract: source_inferred. Writing Translate Retry-safe with idempotency_key.

OpenAPI ve Postman mevcut mu?+

Evet. Oluşturulan OpenAPI 3.0 Belge şu anda /api/v1/openapi.php, Oluşturulan Postman koleksiyonunda /api/v1/postman.php, Ve insan hazırlanabilir geliştirici docs are at /api/docs/.

Bir çalışma alanından daha fazla nasıl çalışırım?+

Bir çalışma alanı seçmek için istek gövdesinde site_key gönderin. Bir iş alanı için verilen bir anahtar buna kilitlenir; yönetim bağlamı ile ilgili bir çalışma alanı, görmesine izin verilir ve herhangi biri için reddedilir.

Hangi eylemler sadece bir anahtar çağrı olabilir?+

Bir okuma olarak işaretlenen herhangi bir eylem, sadece okumak için anahtardaki izinler modu ayarla ve her yazı okumayı reddetti_sadece_key, bu yüzden raporlama entegrasyonu yanlış bir şey değiştiremez.

Neden yöneticide görebildiğim bir şey için tam olarak değil miydim?+

Anahtar bir çalışma alanı için kapsamın. Diğer iş uzaylarında Records, izin hatasından ziyade değil, bu yüzden API başka bir şeyin olup olmadığını asla doğrulamıyor.

Geliştirici

Güvenlik API

Her bağlantı ve entegrasyon için bir güvenlik sözleşmesi: Soru OpsIQ Ne bilir bir şey hakkında IP veya gönderici, ve kendi sisteminizin kötüye kullanılmasını besleyin.

OpsIQ Zaten kendini savunmaktadır: IP Güvenlik blokları saldırganlar, bilet boru hatları spam ve güvenlik AI sınıfları suçluları sınıflandırır ve blok kurallarını önerir. API Bu zekayı diğer sistemlere açın. Bir fatura platformu, bir müşteri portalı veya özel bir uygulama güvenmeden önce ziyaretçiyi kontrol edebilir ve tüm yüklemenin her yüzeyden öğrendiğini rapor edin.

Ne yapabileceğiniz

Güvenmeden önce kontrol edin

Güvenlik. check, güvenlik durumu ile cevap verir, herhangi bir spam kuralı gönderileyiciyi eşleştirir ve IP için önbellekli AI kararı. One call, one konsoled opinion.

Ne gördüğünü rapor

Güvenlik.report, bir güvenlik olayı olarak gözlem kaydeder, Güvenlik AI'nın güvenlik durumunu sınıflandırması vardır.IPHemen hemen, ve kararın yüksek riskli geldiği zaman yöneticileri uyarır. Tekrarlanan raporlar kümeye tam olarak saldırılar gibi, aynı zamanda saldırıya uğratılırOpsIQDoğrudan görür.

Paylaş spam kuralları

security. blocklist. add ve security. bloklist. list, Ticarette kullanılan aynı spam kurallarını okur ve yazar, böylece bir sistemde engellenen gönderici her yerde de engellenir.

Bir bağlantıdan gelen kötüye raporlama
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"
}

Kapsam ve güvenlik

security.read

Güvenlik için gerekli. check and security. blocklist. list. Güvenli bir raporlama entegrasyonu vermek için.

security.write

Güvenlik için gerekli. report ve güvenlik. blocklist. Add. Give it only to systems you want feed rules and reports in.

Sessiz bir şekilde yok edilen hiçbir şey sessiz

Bir bloklisted gönderici hala Spam'da araziler, biletin okuyabileceği ve restore edildiği yerde.

Platform kendini koruyor

Sunucunun kendi kendine ait IP adresler asla engellenemez, blok listelenebilir veya bu konuda rapor edilebilir API Bu yüzden yanlış bir entegrasyon platformu aşağı alamaz.

💡
Entegrelerin altında bir anahtar yok, sonra API Keys ve ona ihtiyaç duyduğu güvenlik kapsamını verin. Her eylem için tam istek sözleşmesi meta. actions and the OpenAPI belgesindedir.
Mevcut konektörlerim bunu otomatik olarak kullanıyor mu?+

Outbound senkronizasyon zaten otomatikdir: Birini bloklarken IP Bağlantılı platformlar bağlantı güvenlik senkronizasyonu aracılığıyla anlatılır. Güvenlik API Bu dört eylemde bağlantı veya özel kodunuzu güvenlik kapsamını taşıyan bir anahtarla işaretleyin.

spam kuralları nerede yaşıyor?+

Bir mağaza. Bilet sayfası Block gönderileyici kontrolü, spam AI Ayarlar ve bu API tüm işleri aynı blok listeye karşı yapıyor, bu yüzden tam olarak bir yer var.

Geliştirici

API

Sunucunuzdan veya web sitenizden gelen özel etkinlikler, analiz için OpsIQ'a gönderin, deneylere, CRM tetikler ve webhook koşulları.

Nasıl çalışır
APIA track(), dönüşüm hedeflerini, segmentleri ve tetikleyicileri besleyen OpsIQ'a özel bir demo_kitaplı bir olay gönderme çağrısı.OpsIQ. track("demo_booked", {Değer: 0, plan: "pro"});Dönüşüm hedefleriSegmentlerTesir ve webhooksTarayıcı (OpsIQ. track) veya sunucunun yanı sıra POST /v1/events
API

Tarayıcının tarafındaki olaylar

Tarayıcı olayı takip
window.OpsIQ = window.OpsIQ || [];
window.OpsIQ.push(["track", "button_clicked", {
  button: "signup",
  page: "/pricing",
  variant: "green"
}]);

Server-side etkinlikleri

Server-side, aksiyon faaliyetleri ve eylem aracılığıyla bir temasa dönüşümler API. Use crm.activities.record Yaşam döngüsü / işletme aktivitesi ve crm.conversions.record Dönüşümler için. Yok events.send Eylem; Inbound CRM etkinliği alıcı yaşamlarda /v1/inbound.php?t=<token> Olayları iten üçüncü taraf sistemler için.

Server-side aktivitesi (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"
}

Naming Kongre

Nokta işareti

"Öyle" değil "tahkemsiz".

Geçmiş zaman

"amaton. kupun" değil "button. click".

Belirli bir şekilde olun

"pricing. plan_s selected" değil "user_action".

Geliştirici

Nasıl veriler OpsIQ aracılığıyla akışlar

Veri akışını anlamak, entegrasyonlara yardımcı olur ve performansı optimize eder.

Nasıl çalışır
Veriler nasıl akışlarVeriler, widget'dan akışlar ve beacon into the widget and beakon into OpsIQ Temel (CDP, kimlik grafiği, AI beyni, analitik, CRM) sonra webhooks ve REST ile dışarı çıktı. API.WidgetVe beaconOpsIQ temelCDP · kimlik grafiğiArtırılmış beyinAnaliz · CRMWebhooks dışarıREST API
Veri akış

Giriş veri akış

1
Widget sinyali

The JavaScript widget page views, clicks, ve chat messages to gönderir /beacon.php.

2
Olay ingestion

Site_key, event type, müşteri ve özelliklerle afetlerde depolanan olaylar.

3
Oturum

Oturum inşaatçı grupları oturumlara (köpek) bakar.

4
Kimlik Çözümü

Tanımlandığında, anonim kayıtlar müşteri profili ile bağlantılıdır.

5
© senkronizasyon

Bağlantılar, dış platformlardan veri çeker ve bağlantı önbelleğinde depolanır.

6
AI bağlamı

AI, ziyaretçi tarihinin, müşteri profili, bağlantı verileri, KB ve hızlı bir şekilde birleştirir.

Dışarıya veri akışı

1
Olay yangınları

İç olay yangınları (ticket. created, chat. message, order. completed).

2
İş kuyruğu

Olay async iş kuyruğuna yerleştirilir.

3
Webhook sent

Dispatcher işaretleri ve tüm abone uç noktalarına gönderir.

4
Başarısızlık Üzerine Yeniden Düşünme

Başarısız teslimatlar üstel geri çekilme ile tekrar denendi.

Ayarlar

Referanslar

Ayarlar bir iş alanı için kontrol merkezidir. Aşağıdaki her şey, bulunduğunuz çalışma alanına uygulanır, bu nedenle bir hesap farklı kimlikler, sohbet davranışları ve saklama kuralları ile birkaç marka çalıştırabilir.

Bir ayar bulmak

Ayarlarda yaklaşık altı yüz bireysel kontrol vardır, dört menü altında bir araya getirilen on 11 sekmeye yayılmıştır. Onlara göz atmak beklemiyorsunuz.

Arama ayarları (Ctrl + K)

Basın Ctrl + K veya Cmd + K bir Mac üzerinde, Ayarlar sayfasında herhangi bir yerde. Tipi açık kelimeler ve basın doğrudan kontrole atlamak için girin. Arama küçük tiplere tolere eder ve ilgili kelimeleri anlar, bu yüzden zamanlamacı Cron bulur ve gizlilik takip kontrollerinizi gösterir. sadece rolünüzü ayarlar.

Workspace ve Plan

Genel ve Licence.

AI ve Müşteri Desteği

Admin AI Asistan, Müşteri Sohbeti, OpsIQ Yazma ve Destek Portal.

Veri ve Yönetim

Takip ve Gizlilik, İzinler ve Güvenlik.

Sistem Sistemi

Cron Build (kendi kendine ev sahipliği yaptı) ve Danger Zone.

Kaydediyor

Her sekme kendi Save düğmesi ile kendi başına tasarruf eder. Müşteri Sohbet ve OpsIQ Yazma ekranını ekrana taşırken kaydedilir; sekmesini değiştirmeden önce tasarruf edin; değişiklikler etrafta gerçekleşmiyor.

Derin bağlantılar

Aktif sekme sayfaya yazılır, bu yüzden bir sekme bir meslektaşına işaret edebilir veya gönderilebilir.

Genel: İş Kimlik

Sayfadaki en önemli kart. AI bu değerleri her cevap, rapor ve günlük kısa olarak okur.

İş Adı

AI raporlarında kullanılır, günlük kısalar ve müşteri odaklı kelime. web sitenizi ayağınızı eşleştirin.

İş Endüstrisi

Tailors AI analizi, puanlama, kısa ve anket presets. Web hosting, e-ticaret, SaaS, emlak, ajans, danışmanlık, sağlık, eğitim, finans veya genel iş seçin.

Sistem Dili

Kendilerini seçmemiş olan herkese gösterilen dil. Her ajan onu profilinde aşırılayabilir.

Tarayıcı dili kullanın

Ziyaretçinin kendi dilindeki işaret sayfasını gösterin. Birisi orada bir dil seçerse, onların seçim kazanır ve bu asla aşırılık yapmaz.

Sistem Zaman Bölgesi

Tüm sistem çalışır: tarihler, raporlar, planlar ve arka plan kroki. Operasyonlarınızı zaman bölgenizi kullanın, müşterileriniz değil.

General: GeoIP ve Takip

GeoIP2 Veritabanı Yolu

GeoLite2-City. mmdb. Auto-detects on first load across cPanel, JPG, DirectAdmin, Cloudways, Docker ve düz Linux veya Windows ekleyin. Add GeoLita2-ASN. mmdB aynı klasörde ziyaretçi internet sağlayıcısı için.

Coğrafi Kaynak Modu

GeoLite2 sadece, GeoLit2 birbiriyle Cloudflare Geri dönüş, ya da Cloudflare Sadece.Cloudflare modlar siteden proxied olmasını gerektirir Cloudflare Ancak ziyaretçi konumu başlıkları şehir ve bölge detayı için etkinleştirildi.

Oturum Saati (s)

Bir ziyaretçi oturumundan önce etkinlik sona erer. Varsayılan 14400, bu dört saattir.

Live Reno Interval (s)

Nasıl sıklıkla Canlı Feed yenilenir. Varsayılan 30 saniyeler.

Aktif Threshold (min)

Bir ziyaretçi son sayfa yüklerinden sonra ne kadar uzun bir ziyaretçi yaşıyor. Varsayılan 2 dakikalar. Bu, seans uzunluğu değil Canlı Feed damlasıdır.

Data Retention (gün)

Bu yaş geçmiş ve üretilen kayıtları toplayın: analitik, sohbet, biletler, geri bildirim, işlemler, AI telemetri, entegrasyon logları ve CRM aktivitesi. 0 her şeyi sonsuza dek tutar. Ayarlar, yazarlı içerik ve onay makbuzlar asla kaldırılmıyor.

Bir sohbet silindiğinde

Nasıl silinmiş bir konuşma rekorta kalır: Tam kayıt, konuşma olmadan kayıt veya puan sadece. Deleting her zaman inbox and the Visitor date. Scheduled keep and forget ziyaretçi always delete in full regardless without the conversation, or the score only. Deleting always holds the chat from the inbox ve ziyaretçi tarihi. Scheduleed keep and unutun.

Bot trafik trafiği

Ziyaretçiler olarak taranır. Leave out; ziyaretçi sayıları ve her raporu şişiriyor.

Geri bildirim anket popup etkinleştirdi

Site çapında geri bildirimler widget'ı ziyaretçilere gösterin. Müşteri Sohbeti altında sohbet anketlerinden ayrı, Destek Akışı.

Genel: AI Özellikler

Her AI yüzeyi için Master anahtarları. Tüm varsayılan çalışma alanı başına tasarruf etmek ve kurtarmak.

AI Triage Biletleri Üzerine

Her bileti kategori, öncelik ve duygu ile sınıflandırır ve biletin üst kısmında bir iplik özeti yazar.

AI Triage hover özeti

Bir aracıtipte triage etiketleri ve özeti bir karttipinde, bir ajan bilet listesinde bir sıraya ulaştığında gösterir. AI Triage'ı gerektirir.

Geçenler Copilot (kompozisyon)

Taslak AI cevabı ekleyin, Isınmacı, Kısaer, Bilet yanıt kutusu altında daha resmi ve özürlü düğmeler. hiçbir şey ajan olmadan gönderilemez.

Sor-OpsIQ Pilot

Sayfada yüzen copilot her yönetici sayfasında. Hangi müşteri, fatura veya bilet açık olduğunu bilin.

Sabah kısa

Her gün ilk açıkta, copilot acil biletler sunar, overdue yanıtlar ve sohbetleri bekliyor. Pazarlar bir hafta içinde gözden geçirir.

Genel: Para, markalaşma, yedekleme

OpsIQ temel para birimi

Tüm para toplam yönetici bu paraya ekran için dönüştürülür. Lines kendi kaynak paralarını depolar; bunu tarayıcı başına ayarlar.

Auto-sync FX oranları

Ücretsiz bir kamu beslemesinden her altı saat boyunca, API anahtar ile genişletebilirsiniz. Beslemeyi aşırıya çıkaran manuel oranları ekleyebilirsiniz. Otomatik olarak, el olmadan para birimleri sınırsızdır.

Enable Ticaret ve Billing özellikleri

Gemiler kapalı. Bunu Sales ve Dönüşüm sayfalarını ortaya çıkarır, pano geliri kartları ve Live Intelligence Feed. kapatarak her fiyat yüzeyi gizlidir ve Satış sayfası menüden ayrılır.

Ticaret Kelimesi

OpsIQ your wording: if you do yenileme, the word fornewing, what you sell, and what customers are called.

Marka ve Logolar

İki yükleme, ışık arka planlarından biri (admin sidebar) ve karanlık için bir tane (sign-in page). PNG, JPG, WebP veya SVG 3 MB.

Site Zeka Agent, özel SSH hedeflerine izin

Auto-Implement SEO ajanı, SSH. Özel, döngü ve rezerve edilen adresler anti-SSRF ölçüleri olarak varsayılan olarak bloke edilir. Sadece yerel bir sunucuya ulaşmak için ev sahipliği yapan yüklemelere olanak sağlar.

OpsIQ Yedekleme / Geri Yükleme

Her ayar ve OpsIQ- ait masa artı yüklü dosyalar. geri yükleme yedekleri OpsIQ Sadece yapılandırma ve kayıt; müşterilere, faturalara, biletlere, hizmetlere, alanlara, siparişlere veya işlemlere asla dokunmaz.

⚠️
Tehlike Bölgesinde herhangi bir şey kullanmadan önce bir yedekleme alın. Backup General'te yaşar ve tehlike bölgesinde yaşayan silü eylemleri, ilk önce ihraç edilmemiş olan silin düğmesine ulaşmak kolay.
Ayarlar

Ayarlar: Güvenlik

Yönetici işareti için koruma, personel hesaplarınız ve veri OpsIQ topları. destek portalı için müşteri işareti ayrı yapılandırılır.

Giriş koruması

Google reCAPTCHA

Botları durdurun ve yönetici işareti üzerinde şaşırtıcı şeyler. v3 (görünmez, puanlanmış) veya v2 (checkbox), v3 puan eşiği ayarlayın ve siteyi ve gizli anahtarlar tedarik edin. Bu aynı anahtarları destek portal istek formu tarafından yeniden kullanılabilir.

Başarısız-Login Auto-Lockout

Bir penceredeki bir dizi başarısızlıktan sonra bir adres, birkaç saat boyunca. Kilit sayfa mesajını özelleştirebilirsiniz ve küçük bir bekleme ekran dikkati gösterebilirsiniz.

Giriş Harding

Şifre politikası, bilinen ihlallerde bulunan şifrelerin reddedilmesi, per-account kilitout karşı güvenlikli şeylere karşı kilitlenme, her yönetim için zorunlu iki faktör, tehlikeli eylemlerden önce şifre re-entry ve yeni taksi işareti uyarıları.

Tek İşaret-On (OIDC)

Personel işaret-in kimlik sağlayıcınız aracılığıyla. sorunsal URL, müşteri kimliği ve müşteri sırrı. Auto-provision domains, bir per line, kullanıcılar otomatik olarak ilk oturumda oluşturun.

Tek İşaret-On (SAML 2.0)

Konuşan sağlayıcılar için SAML. OpsIQ ACS yanıt verir URL ve SP varlık ID; IdP varlığını tedarik edin, işaret-in URL, Seçmeli işaret-out URL ve X.509 İmza sertifikası. E-posta ve isim özellikleri yalnızca standart olmayan özellikler isimleri için gereklidir.

SCIM Sağlama

Directory-driven creation, update and deactivation of OpsIQ accounts. OpsIQ supplies the SCIM base URL; you generate labelled tokens here so one can be revoked without breaking the rest.

Tehditler, bloke ve koleksiyon

Outbound Egress Allow-liste

Bu çalışma alanı konektörlerine dış ev sahipliği yapan mahkumlar, General'deki SSH hedef kontrolüne geri dönebilir.

Tehdit ve Auto-Block

Bir ziyaretçiyi tehdit puanlarının eşiğinizi geçtiğinde engeller. 0 bunu devre dışı bırakır. Güvenlik Genel bakış sayfasını bir numara seçmeden önce bir hafta boyunca izleyin.

Blok Sayfa Mesajı

Yasaklanan bir ziyaretçi mesajı, düz metin veya kendi özel HTML blok ekranı gibi görür.

Core Web Vitals gerçek ziyaretçilerden

LCP, INP ve CLS'yi gerçek seanslardan ölçüler.

Batched, retry-güvenli olay teslimat

Tarayıcıda özel etkinlikler sıralanır ve yeniden kurularak, fakir mobil bağlantıların kaybını azaltır.

Signed Track Beacons

Gerçek bir widget, geri dönüş kriptografik token taşır, böylece takip verileri reddedilebilir. Varsayılan olarak; öncelikle nasıl gömülmediğini değiştirir, bu yüzden test edin.

Güvenlik Uyarıları

Varsayılan olarak. Tespit ve kesintiye uğramak, bu kart size söylenip dediğinizi kontrol eder ve AI’nın ne kadar yardımcı olduğunu sağlar.

Enable güvenlik uyarıları

Bu kart için Usta geçişi.

Başarısız-login dalga eşi

Kısa bir süre içinde kaç başarısız işaret-ins, üzerinde uyarıya değer bir dalga olarak sayılıyor.

IP şöhret zeka

Halk istismar beslemelerinde görünen ziyaretçiler için bir tehdit puan ekleyin.

Site Saati

Saat ve TLS expiry kontrolleri, bir sertifikanın bitmeden önce uyarılar.

AI security analisti ve AI olayı kısa sürede

Şüpheli bir aktiviteye açıklanabilir bir karar ekleyin ve gruplar ilgili saldırıların olayları yayınlayandan ziyade tek okunabilir bir olay haline getirilmesini sağlar.

Politika otopilot

Kendi başına hareket eder, bir olayın önerdiği veya uygulanan bir kurala ne öğrendiğini döndürür. Tekliflerini gözden geçirdik ve onlarla aynı fikirde olana kadar bırakın.

Günlük güvenlik sindirme ve Haftalık duruş danışmanı

Güvenlik Genel Bakış sayfasında günlük bir recap ve haftalık sert kontrol listesi neyin korunduğunu ve hala açık olduğunu gösteriyor.

Auto-expire stale önerileri

Önerilen bir blok kuralı, asla uzlaşma yerine kendi başına hareket etmediğiniz için sona ermiş olduğunuza karar verdi.

DOM Oturumu Yeniden Oynat

Enable DOM seansı yeniden oynatılabilir

Kayıtlar oyun geri çekilme için oturumlar. Yeniden oyun kütüphanesi asla yüklenmediğinde, bu yüzden onu terk etmek için hiçbir maliyet yoktur. Kayıtlar örneklenmiş ve mahremiyete maruz kalır ve Analytics altında Oturum Replay sayfasında gözlemlenirler.

Örnek oranı, max yakalama, tutma

Oturumların rekorlanması için ne payı, tek bir kayıt kaçabilir ve kaç gün kayıtları tutulur.

⚠️
Oturum tekrar kayıtlarınızı gerçek insanları sitenizi kullanarak kaydeder. Örnek oranı ve saklamayı hala sorunuza cevap verecek kadar düşük tut ve gizliliğinizde açıklayın.
Ayarlar

Ayarlar: Takip ve Gizlilik

Ne OpsIQ toplanabilir ve her tür rekor hayatta kalır.

Dışarı çıkarmalar

Excluded IPs ve CIDR Ranges

Adresler asla takip edilmedi, bir satır, tam adres veya CIDR aralıkları. kendi ekibinizi analitikinizden uzak tutmanın en temiz yolu, çünkü bu adresi sadece imzalanmış yöneticilerden ziyade kapsar.

Dışarı Çıkan URL Yollar

Sayfa kalıpları asla takip edilmedi, bir per line, vahşi kartpostalları bir asteriskle. Örneğin /admin/* ziyaretçi girişinden tüm arka ofisi tutar.

Veri Saklama Politikası

Per-subsystem auto-purge günlerde. Genel olarak ve Tehlike Bölgesi'nden ayrı.

AI etkileşimi logları

Güven telemetri kısa bir sorgu ve yanıt önbellek tutuyor. Varsayılan 90 günler. Bu, en müşteri metnini tutar, bu yüzden gizliliği sıkılaştırdığında ilk kez kısaltır.

AI kullanım olayları

Per-call token maliyet raporlaması için sayılıyor. Varsayılan 90 günler sadece mesaj içeriği değil.

Action denetim iz izi

Tamper-evident eylemi ve güvenlik log. Varsayılan 365 günlerini tut; bu sizin kanıt izinizdir.

Tanıklar

Sistem sağlık kayıtları. Varsayılan olarak 30 günler.

Cevapsız sorular

AI'nın cevap veremeyeceği sorular kümesleri. Varsayılan 90 günlerini kullanarak, AI’nın süresinden önce kaçırdığı sorular üzerinde çalışabilirsiniz.

Watchdogs ve ihracat

Meomaly Uyarıları

Son analine karşı dün günlük karşılaştırma, bir metrik eşiğinizden daha fazla hareket ettiğinde uyarı. Varsayılan olarak 35 % Off by default.

Depo İhracı

Gece seansları, ziyaretçileri, sayfa görüşleri ve ilgili masalar kendi BI yığınınız için, seçtiğiniz bir formatta varsayılan olarak tutulan.

Ayarlar

Ayarlar: Admin AI Asistan

Personelinizin yönetici içinde kullandığı yüzücü yardımcı, canlı olarak müşterilere erişim, faturalara, biletlere, sunuculara ve cron loglarına erişerek. Müşteri Sohbeti altındaki bir farklı asistan.

OpsIQ AI Widget'i etkinleştir

Her yönetici sayfasında yardımcı düğmesine bas. Off bunu herkes için gizler.

Layout ve davranış

Köşe konum, panel genişliği (320 to 600 px), max yükseklik (400 to 900 px), köşe yarıçapı (0to 24), yazı tipi büyüklüğü ve panelin arkasındaki mat cam bulanıklığı.

Hızlı Chips Göster

Başlık altında bir tıkma kısayol düğmeleri. Çoğu personel için en hızlı yol.

Model Bilgisini Göster

Modelin cevap verdiği görüntüler ve ne kadar süre aldı. Faydalı, ayar maliyeti olduğunda, günlük kullanım için gürültü.

Per-admin access kapısı

Sadece, kullanıcı adı ve e-posta ile her iki maça bir OpsIQ ajanı bu çalışma alanına atanan imzacıyı gösterir. Sahipleri her zaman geçerler. Check my access butonunu kendi takımınızı kilitlemeden önce kullanın.

İnsan

Ekran adı, başlık etiketi ve panel açıldığında gösterilen özel bir karşılama mesajı.

Akıllı Hızlı-Etki Chips

Etiketi ve her kısayol için hızlı bir şekilde analiz edin, kendinizi ekleyin veya varsayılanlara sıfırlama. etiket personel ne gördüğünü, ani AI'nın aldığı şey.

Renkler ve şekil

Chip şekli (pill, yuvarlaklanmış, kare), çip renkleri, kart teması ve fırlatma şekli (round, squircle, meydan) canlı bir önizleme ile.

Konuşma Memory

Asistan tarayıcı seanslarında her insan tarihini hatırlar, 120 mesajlarına kadar kendi veritabanınızda depolanır. taze başlamak için onu temizleyin.

Ayarlar

Ayarlar: Müşteri Sohbetleri

Sohbet widget müşterilerinizi kullanır ve en büyük ayarlar alanı. Altı alt-tabs, usta geçişle ve sekmenin üst kısmından tasarruf edin.

Yeni bir yükleme için alttablar aracılığıyla çalışın: Kimlik ve Kopya, Görünüm, Davranış, Destek Akışı, Bilgi Eğitimi. Gelişmiş altyapıdır ve bekleyebilir.

Kimlik ve Kopyalama

Marka Kimlikleri

Widget adı, tagline, AI adı, sistem ve idle farklar için kullanılan isim ve ajan isimleri nasıl görünür. Agent Name Source gerçek isimler arasında karar verir, özel bir isim veya takım etiketi.

Sohbet İçi Tercih

İki selam, tüm ziyaretçiler için ve biri tespit edilen ziyaretçiler için. Bir soru bir açıklamadan daha fazla konuşmaya başlar.

Popup Teaser

Sohbetin açılmasından önce yüzücü mesaj, kendi adı, font büyüklüğü ve renklerle. AI, kaç tane üretileceğini kontrollerle, ziyaret başına kaç gösteri gösterebileceğini ve aralarındaki boşlukları yazabilirsiniz.

Sorular ve Handoff

Tam senaryo: bir isim ve e-posta, onaylar, mevcut bir insan istemeleri, bilet oluşturulamaz veya iptal edilemez, eloff bekleyen iki düzine bireysel çizgi.

Durum ve Idle Uyarılar

Üç müşteri tarafından yönlendirilen mesaj: ajan sohbete yakın, ziyaretçi sessiz kaldı ve acente AI'ya geri döndü. Çözülmüş veya triaged gibi içsel kelimelerden kaçının.

Kompucu ve Önerileri

Giriş yeri sahibi, konuşma-insan düğme etiketi ve önerilen açılış soruları. Üç iyi öneri bir makale sayfasından daha fazla bilet tutar.

Launcher, Icon ve Avatarlar

Launcher ikon, açık, başlatıcı büyüklüğü ve insan ajanı ve AI için görüntüler.

Görünümü

Tema ve Cam

Tema modu, premium renkli preset, bulanık yoğunluk ve opakity, artı animasyonlar için okçuluklar, separator hatları, durumu saklayın, mesajı kutu kartı gizleyin ve bir başlangıçla başlayın; bir kerede onlarca renk ayarlar.

Ana Renkler

Atlım, başlık, panele, linklere, düğmelere, sistem farklara ve besteciye yardımcı olur, her biri bir başlangıç ve son renkli gradyanlara karşı. Bir kullanım varsayılan cam seçeneği bunları görmezden gelir ve şeffaf bitirmeyi tutar.

Panel, Bubbles ve Chips

Panel, sınır, metin, giriş alanı ve her balon türü (visitor, AI, ajan, tipleme, sistem) artı öneri çipleri ve onların hover eyaletlerini kapsayan otuz seçici. Sadece tam marka eşleştirme için bunları açın ve balon metnine karşı kontrol edin.

Düzenleme ve Şekil

Panel genişliği ve yüksekliği, köşe yarıçapı, font büyüklüğü, ekran pozisyonu, fırlatma şekli, balon tarzı ve avatarların şovunu test edin. bir telefondaki genişlik test edin

Davranış Davranışları

AI cevapları otomatik olarak otomatik olarak yanıt verir

AI yanıtları için Master switch. Off, her mesaj bir insan için bekler anlamına gelir.

İnsan takip-upları ve doğal çift metin

Bir ziyaretçi sessiz gittiğinde nazik bir takip ve bir kişi bir kişiyi göndermenin yolu kısa bir ikinci mesaj gönderirdi. Sessizlik başına max takip eden ilk gecikme, daha sonra çok basit, varlık penceresi ve maksimum dizi pencere.

Typewriter yanıtları ve hızı cevap

Cevaplar kelimeyle yazılır ve yardımcı cevaplarını ne kadar hızlı, milisans'te önceden veya en az ve maksimum gecikme ile döndürür. Küçük bir gecikme anında yanıtdan daha fazla insan olarak okur.

Canlı çeviri

Her ajan okur ve kendi dilinde yazar, ziyaretçi onların okuduğunda.

El, ajan idleden sonra AI'ya geri döndü

AI'dan önce ajanın dakikaları sohbete devam eder.

Otomatik olarak sohbet

İkinciler, widget'ın kendisini açmasından önce.0Hiçbir zaman açılmaz. Mobilde Intrusive; içeri girin0Test edilmedikçe.

Smarter Cevaplar

Tek geçişli cevaplar için ön planlama, düşünme derinliği, ajan yanıtları için opsiyonel ayrı bir model, ziyaretçilere mantık göstermesi, hatalı imlalara tolerans, uzun konuşma hafızası, asistanı sadece işinize sınırlamak, fiyatlar ziyaretçinin para birimi ve bağlantıların nasıl göründüğü. Sadece işiniz hakkında konuşun neredeyse herkes için açık olmalıdır.

Maliyet Tasarrufu Maliyet Tasarruf Maliyeti

Bilgi aramayı hi ve teşekkürler gibi selamlar için takip edin ve jetler, gerçek sorularda cevap kalitesini değiştirmeden en uzun cevabı kaplar.

Diller

Hangi diller widget destekler ve bir ziyaretçi için birini nasıl seçer.

Müşteri Hesap Cevapları

İmzalanan bir müşteri kendi hesabından cevap verir, isteğe bağlı olarak canlı görünüyordu ve sadece tüm durumlarda ücretsiz olarak yük-needilmiş fark edilebilir maliyet azalttı.

Geri Ödemeler

Asistanın ayrıntılı ve bir kişiye el koyduğu geri ödeme talepleri yardımcı oldu. Bir iadeyi asla tamamlamadı.

Konuşma ve Widget

Geçmiş konuşmaları devam edin, bağlantılı sitelerinizde bir sohbet devam et, sürükleyilebilir pencere, bir e-posta için konukları sormak ve ekibinizin bir bilete sohbet etmesine izin vermek.

Widget Özellikler

Emoji seçici bir hamur modu ile eks, AI görüntü anlayışı, doğrusal ikonlar, mikrofon, konuşma-agent düğme, ziyaretçi sesler, ek önizleme, ses arama düğmesi ve oturum izolasyonu sağlayan AI imajı anlayış, bir ziyaretçinin hata ekranını salmasına ve faydalı bir cevap almasına izin veren şeydir.

Admin Inbox, Bildirimler ve Hoşgeldiniz Popup

Ziyaretçi popup'u hoş karşıladı, artı ajanlarınız uyarıyor: inbox sesler, masaüstü bildirimleri, fısıldar sesler, özel fısıtların ve kutu anket aralığı.

Akış Destek

İnsan Eloff

Bir kişi için nasıl istekler verilir, bir ajan cevap vermek zorundadır, geri çekilme AI'ya sohbet edebilir ve AI özgeçmişleri zamanında sona erdiğinde yapılandırın. Bunu insan için seyahat eden veya ziyaretçi için bir insan için sadece bekleyecek kadar yapılandırın .

Çalışma Saatleri

Açılış saatleri, zaman bölgesi ve kapalı saatler mesajı. Bu saatler dışında AI bir insan sunmayacaktır. OpsIQ Writing altında bilet iş saatlerinde ayrı bir program.

AI'nın kapalı olduğu zaman Replies when the AI is off

Yeni bir mesaja ilk cevap, biri zaten sıralandığında ve tekrarlamadan ne kadar uzun süre önce yanıt verdi.

Çevrimiçi Form

Sohbet yerine bir iletişim formu gösterir.

Bilet Bakma ve Bölüm Bildirimleri

AI bilet farkındalığı, bu yüzden bir ziyaretçi bir bilet numarasının gerçek durumunu alır ve AI'nın hangi bölümlerine yol açabileceğini gösterir. Bir yerleşik panel her bölüm için gerçek alıcıları gösterir, aynı şekilde ayarlamaz, böylece bir müşteri hiç kimsenin uyarısını yapmadığınızı görebilirsiniz.

sohbette Merkez Yardım

Ziyaretçiler sohbet etmeden yayınlanan makalelere göz atalım. Giriş noktasının nerede göründüğünü, alt bar etiketi ve ikon olduğunu ve tam yardım merkezine bir bağlantı sunacağınızı seçin. In default.

Konuşma Rating

Star derecelendirmesi, bir ajan sohbete kapandığında veya bir inaktivite periyodundan sonra ayarladı. Bir ya da iki tetikleyici seçin, hepsi değil.

Konuşma sonrası anketler

Ziyaretçi sohbete kapandığında kısa bir anket, sorunızla, gecikme, zamanlama kuralı ve ziyaret başına bir kap. Ziyaretçiler ayrıca e-posta gönderebilir veya transkript indirebilirler; Üç şey cevaplanamaz.

Konuşmadan Sonraki E-posta Anketi

Konuşma sona erdikten sonra e-posta ile takip edilen bir anket, ziyaretçinin sohbet ettiği dilde, gecikme, konu, intro, soru, her iki düğme etiketi ve teşekkür hattı.

Geri bildirim

Her AI cevabında göz ardı edilir ve başlanır, kaliteli panjurları besler.

Konuşma Archive

Günlerden sonra, oto-resolve birkaç dakika sessizlikten sonra ve günlerin ardından arşivlenen konuşmaları sil. Üçüncü bir yer tutma, Genel ve İzleme ile birlikte ayarlanır.

Bilgi Eğitimi

Asistan aslında ne bilir. Müşteri Sohbetinde başka bir şey çok önemli değil.

Web Sitesi Bilgi Eğitimi

Sitenizi çizin, böylece asistan ondan cevap verebilir. 10 başlangıç bağlantılarına kadar bir sayfa limiti, bir bağlantı derinliği ve dışlanmış klasörler. tek URL tam taramadan önce test edilebilir. Exclude checkout, hesap ve admin yollar.

Gömülülar

API anahtar ve sayfaları anahtar kelime maçlarından ziyade arama edilebilir bir anlam haline getiren model.

AI Bilgi OrganizecisiName

Bir tık ve AI her SSS'yi okur ve kategoriye ayırıyor.

SSS, Doğrulanmış Yanıtlar

Soru ve cevap çiftleri en yüksek öncelikli kaynak olarak tedavi etti, her biri bir statü, ağırlık ve kategori. Aramaable, JSON'dan ithal edilebilir ve AI onları işinizden bir açıklamaktan yazabiliyor. Asistan yanlış bir şey aldığında, bir SSS yazın: bu yüzden kesintiler hemen yazılır.

Gelişmiş

Performans ve Limitler

Kirlilik aralığı, mesaj oranı sınırı ve pencere, maksimum ek boyut, pencere başına yük girişimleri ve dosya uzantıları izin verilir. uzatma listesi güvenlik kontrolüdir; sıkı tut.

Gerçek Zaman Teslimatı

Ankete yerine anlık mesaj ve durum teslimi, Pusher, Ably veya Firebase aracılığıyla, bir düşüş anket aralığı ile. Polling çoğu site için iyi.

Bildirimleri

Pusher Beams veya OneSignal aracılığıyla ajanlar için cihaz uyarıları, bir aygıt ilgi ile.

Web İtme (VAPID)

Browser, kendi ürettiği anahtarlarınızı üçüncü taraf sağlayıcı ile kullanmaya itiyor. Burada, Tehlike Bölgesinde değil.

Ses, Video ve Ekran Paylaş

TURN kimlikleri bu yüzden kısıtlayıcı ağlarla bağlantı kurar, kullanarak Cloudflare veya Twilio kimlikleri ya da kendi TURN URL, kullanıcı adı ve şifreli.

Geçen Mesajlar İş Akışını Göster

Ajan iş alanı ayarları ziyaretçi ayarları yerine: ilk soru SLA dakikalar içinde kurtarıldı kuyruk görüşlerini, klavye kısayollarını ve komut paletini kurtardı, in-conversation search, and müşteri biletleri in the testingor.

Kanalları Ağlayan

WhatsApp, SMS, Facebook Messenger, Instagram, Telgraf, X doğrudan mesajlar ve LINE, her biri kendi AI oto-reply geçişiyle artı kanallarında AI eylemleri için bir politika geçişi, cevap debounce ve WhatsApp yeniden-engagement şablonu. web sohbet olarak aynı anda her kanalda her kanal toprakları.

Arama güncelleştirmelerinin alt kısmında bir Canlı Widget Preview, düzenlemediğiniz gibi. Web sitenizi bir değişiklik kontrol etmek için yeniden yükleme yerine kullanın.
Ayarlar

Ayarlar: Şablonlar

Her e-postaOpsIQGönder, ve hepsini çerçeveleyen bir tasarım. Herhangi bir mesajın kelimesini analiz edin ve kendi şablonlarınızı herhangi bir şey için yazOpsIQZaten göndermez.

Bir tasarım, birçok mesaj

- Ne? global e-posta şablonu Anahtar: logonuz, başlık, kart, tipografi ve ayaklama, boş bir orta ile. her mesaj OpsIQ gönderir o ortaya eklenir. Edit the turnper once and every email changes together - the ticket reply, the Store makbuzlar, the password reset, and anything you write yourself.

Bu sarmalayıcı olmadan OpsIQ 'dan bir e-posta göndermenin yolu yoktur. Her mesajda tek noktada uygulanır, bu nedenle eklenmiş bir mesaj bunu kaçıramaz.

Bir mesaj taslağını

1
Açık Ayarlar, sonra Şablonlar

Mesajlar, ne olduklarıyla gruplanır: bilet ve portal, Mağaza, işaret-in ve hesap güvenliği, rezervasyonlar, konuşmalar ve bildirimler, raporlar, PeopleOS mektupları ve kendi.

2
Press Edit, istediğiniz kişi üzerinde

Konuyu, bir HTML bakışı ile zengin metin editörü elde edebilirsiniz ve alıcının aldığı gibi bitmiş e-postanın tam olarak bir önizlemesi - sarmalayıcı dahil.

3
Değişken cipsi kullanın

Editörün üzerindeki çipler, değişim gerçeklerdir: bir bilet numarası, sipariş referansı, rezervasyon süresi. Bir tane cursor nerede olduğunu bırakmak için tıklayın.

4
Kaydet

Sadece bu mesaj yazılır. Boş bir alan bırakın ve inşa edilmiş sözü tutar; sıradaki hap size hangi devletin olduğunu söyler.

💡
E-posta gönderildiğinde kullanımdığınız bir değişken kaldırıldı ve bu yüzden oturmakta olan çizgidir. Bu nedenle telefon numarası ile rezervasyon asla "Phone:" göndermez.

Kendi şablonunuzu yazın

Bunu bir mesaj için kullanınOpsIQDaha şimdiden göndermez: bir teslimat bildirimi, yenilenme hatırlatması, hoş bir paket, bir lisans anahtarı. Her şeyi inşa edilmiş bir mesaj alır - editör, önbellek, plan kuralları ve global tasarımınız – ve kendi sisteminiz bunu kendi sisteminiz aracılığıyla gönderirAPI.

1
Press Add şablon ekle

Düğme, Şablonların sayfasında ve yine "kendi şablonlarınız" yanında oturur.

2
Adı it Name it Name It

Adı, sisteminizin size gönderdiği referans haline gelir - örneğin x_custom_delivery_booked. Daha sonra değiştirilemez çünkü bir şey zaten gönderilebilir.

3
Ne olduğunu söyle ve ne zaman gönderildiğinde

Bu iki çizgi, bir yıl sonra Şablonlar sayfasında okuduğunuz şeydir. Otuz saniye değerindedir.

4
Değişim değiştiren parçalar listesi

Örneğin, kontamine: isim, takip_link. Her biri bir {{variable}} konuya veya mesajına düşebilir ve sisteminiz bunu zamanında doldurur.

5
Konuyu ve mesajı yazın

Düz cümleler iyi - çizgi molaları sadece MESSAGE yazılır; logo, başlık ve ayaklı global şablondan gelir.

6
Oluşturun, sonra açıklayın

Tam editör ve canlı bir önizleme ile "kendi şablonlarınız" altında görünür, her yerleşik mesaj gibi.

⚠️
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.

Kendi şablonunuzu gönderin

Ürün API. caller alıcıyı ve değişkenleri tedarik eder - asla tasarım değil, bu yüzden bir entegrasyon iş alanınızda markasız posta gönderebilir veya müşterilerinize ne söylediğinizi sessizce değiştirebilir.

şablonlarınızı ve değişkenlerinizi her biri alır
POST /api/v1.php
Authorization: Bearer YOUR_API_KEY

{ "action": "email.templates.list", "mine": true }
Gönder
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"
  }
}
💡
Değişken isimler API çağrısında zorlanmış para birimine gider. e-templates. list eller onları tam olarak geçtiğiniz şekilde geri dönerler.

Şablonlar ve planlarınız

Hizmetiniz olmayan bir mesajın

Bir "Hatırlamalar" bağlantısı ve editör ile listelenir - bu yüzden OpsIQ 'in ne göndereceğini görebilirsiniz ve neyin kilidini açar.

Kendi şablonlarınız

Hizmet bir şablonunu oluşturun, ya da her planda bırakın. Bu hizmet olmadan çalışma alanı listelenmiş ama düzenleyemezsiniz veya gönderemez.

Sign-in, güvenlik, bildirimler ve e-posta testi

Asla planlanmamış. Bir şifrenin kelimelerini kendi yöneticilerinizi sıfırlamayı düzeltemedik, yanlış bir kilit olurdu.

Soru Sorular

Tasarımı sadece bir mesaj için değiştirebilir miyim?+

Hayır ve kasıtlı olarak. Tasarım sarmalayıcıdır ve paylaşılır, bu her e-postayı farkediyor ki, per-message kelimesi, gerçek panel ve mesajı eklediğiniz herhangi bir düğmedir.

Hazırlığa basınsam ne olur?+

Sıfır sadece küresel şablonda görünür ve editörde yerleşik tasarımla olan şeyi değiştirir. Basın Kaydetinceye kadar hiçbir şey yazılır, bu yüzden zihninizi değiştirmek için dialogu kapatabilirsiniz.

Şablonlarımdan birini yanlışlıkla sildim.+

Removing tam olarak bu nedenle iki tıklama alır - ilk kolları bunu söyler ve size ne çalışmayı durduracağını söyler. Zaten gittiyse, aynı adı ve aynı referans geri gelir; sadece kelime yeniden kopyalanmalıdır.

Bir bağlantı veya eklemek kendi şablonlarını getirebilir mi?+

Evet. Bir paket gemileri bir posta_templates.json kendi dizininde ve mesajları aynı editör, önizleme, sarma ve plan kapısı ile "De Developmenter şablonları" altında görünüyor. kelime düzenleme düzenlemeleri iş alanınıza ait ve paketi güncel hayatta kalır.

Ayarlar

Ayarlar: OpsIQ Writing

Biletler yazılı olarak cevap verdi: otomatik yanıtlar, yerel bilet sistemi, escalation, iş saatleri, routing ve müşteri odaklı e-postalar.

Otomatik cevap

Show OpsIQ Writing düğmeleri

Yöneticideki ajanlarınız için yazı yardımcı düğmeleri ekleyin.

Enable bilet otomatik olarak

Queues yeni biletler ve cevaplar ve onları bir gecikmeden sonra yanıtlar. Bir hafta boyunca iptal ve inceleme taslakları ile başlayın. Reunds, Cancels and access changes should always reach a person.

Auto-reply Bölüm

Hangi bölümler otomatik olarak cevap verebilir. Listelenen herhangi bir şey, güvenli varsayılan olan bir insan için bırakılır.

Cevap gecikme programı ( dakikalar)

Otomatik cevap göndermeden önce ne kadar bekleyeceğiniz. Bir anlık yanıt bir robot olarak okur; birkaç dakika hızlı bir ekip olarak okunur.

Max AI, bölüm tarafından bilet başına cevaplar

Örneğin Billing 1 Destek ve Destek 3. Bir kap kafa karıştırılmış bir iplik olmadan döngü oluşturabilir.

Cevap: Uzun, statü ve kimlik

Maksimum yazma Jets, bir cevaptan sonra ve bir escalasyondan sonra bilet durumu ve hangi yönetici otomatik yanıtların atıldığını açıkça ifade edebilir. Bu yüzden personel AI yanıtlarını insanlarından söyleyebilir.

Yerli bilet operasyonları işlemleri

Yerli Bilet Sistemi

Bilet sistemi, dış bir yardım olmadan yüklemeler için OpsIQ'a inşa edildi.

Pipe inbound email into native ticket

Gelen e-postayı biletlere dönüştürür. OpsIQ En son nokta malzemeleri URL, auth token, senaryo yolu ve PHP ikilisi. bu uç noktaya yayınlayabilen her şey bilet oluşturabilir, böylece token sırrı tut.

Çok geri dönüş yanıtları ve gecikme ve debounce

AI konuşmaya devam ettikçe cevap veriyorsa ve sessiz bir pencere bekleyebiliyorsa, üç hızlı mesaj yanıt olarak kabul edilir. Sessiz pencere otomatik yanıtlar yapmak için en iyi tek ayardır.

Halk desteği portalı

Bir müşteri-yüzlü sayfa, herkesin bir bilet yükseltebileceği ve takip edebileceği bir sayfa, opsiyonel bir karşılama hattıyla. adresi ve görünümü Destek Portal sekmesinde yapılandırılır.

Bilet numarası format

Birçok rastgele mektup, üretilen bilet numaralarında nasıl görünür.

E-posta müşterileri kendi dilinde

Bilet e-postaları müşteri dilini takip eder. Personel e-mail asla dil değiştirmez: bildirim, bölüm uyarıları, kısalar ve planlanan raporlar sisteminizde kalır.

Bilgi ve Onaylar

Yeni biletler üzerinde sabit bir kabul, artı bir onay mesajları, bir bilet açıldığında geri bildirim kapalı olduğunda ve her biri canlı bir önizleme ile. Ayrıca, biletinizin arkasındaki bağlantı da var.

AI spam tarama

Bilinmeyen göndericilerden gelen ekranlar ve kendi başına spam'dan şüpheli hareket edebilir. Kararını izleyene kadar otomatik hareketi bırakın.

Auto-close idle biletleri

Bir dizi sessiz gün sonra bir bilet kapatın. müşterinin kapanış mesajında yeniden nasıl tekrarlanacağına söyleyin.

İş saatleri (SLA takvimi)

Timezone, ilk başta ve karar zamanlayıcıları için günler ve tatilleri kapattı. Müşteri Sohbeti altındaki Çalışma Saatlerinden ayrı bir program.

Auto-assign yeni biletler

Otomatik atama, sadece online olan ajanlar için, müşteri becerileri ve beceri temelli routing için bir maç duyarlılığı.

Tekrarlanan biletleri Önerir

Bir müşteri zaten sahip oldukları birine yakın bir bilet açtığında, ayarlanabilir bir maç duyarlılığı ile.

Kapanış sonrası memnuniyet anketi

E-postalar bir gün kapanıştan sonra bir anket. Sonuçlar CSAT sayfasında görünür.

Bölüm e-posta ile onaylama

Yeni bir bilet geldiğinde bölüm e-postalar. Recipients bu bölümün üyeleridir, bölüm posta kutusu adresi değil, ki bu gelen adres bileti var.

AI ne okuyabiliyor

AI müşteri verileri erişim

Bir usta geçiş artı bireysel okuma-sadece müşteri profili özeti için izinler, faturalar, işlemler, kredi dengesi, ürünler ve hizmetler, alanlar, bağlantılı sunucular ve üst düzey bir hesap genel bakış. Profil özet ile başlayın ve kategoriler ekleyin onlara ihtiyaç duyar.

Escalasyon ve bilgi

Enable AI bileti escalation

Cevap vermeden önce daha iyi bir oturma bölümüne bilet atabilirsiniz. İzin verilen bölümler, kontrol gecikmesini seçin ve kendi escalation notunuzu yazabilirsiniz. Ekstranızın neden taşındığını görebilirsiniz.

Bilgi ayarları

Müşteri dilini hangi cevaplar kullanıyorsa, taramalı bağlantılar ve SSS'ler çizip AI görüntü ve görüntü okursa PDF Bağlar, bilgi cevap modu, ithal edilmiş olsun JSON Bilgi kullanılır ve kaynak bağlantıları görünebilir. Taramalı bağlantılar ve SSS'ler üzerinde olmalıdır veya AI tahmin edilmektedir.

Otomatik olarak insan cevabından sonra

Personel cevap verirken, AI bu bileti cevaplamayı durdurur. Abrasız kendi ajanınız üzerinde konuşabilir.

Bilet ve e-posta talimatları

Her cevap için ton ve içerik şekillendirmek, yüklenebilir bir çalışma örneği ile belirli olun. AI'nın asla yapmadığı şey hakkında özel olun.

Import JSON bilgi

Yükleme veya yazma asistanı için JSON bilgi dosyasını yapıştırın.

Düğme

Müşteriye yönelik düğme için tam bir tasarımcı: görüntü stili, boyut, etiket, simge, şekil, minimum genişlik, birincil ve ikincil renklerle arka plan stili; gradient açısı, sınır, köşe yarıçapı, gölge, tipografi, doldurma, boşluk animasyonu, hareketli hareket ve renkler, ve odak halkası, kontrollerin kapsamadığı her şey için özel CSS kutusu.

Ayarlar

Ayarlar: Destek Portal

İnsanların biletleri yükseltip takip ettiği müşteri odaklı site ve yardım makalelerinizi okuyun. Bu sekmeye nasıl ulaşıldığını ve müşterilerin imzalandığını kontrol eder; görsel tasarımı Destek Portal Stüdyosu'nda yapılır.

Portal Stüdyosu veya gömülü Bilet Portalı: Hangisini istiyorum?

Bunlar iki farklı ürün ve insanlar sürekli onları karıştırıyor. Farklı problemleri çözer ve birlikte koşmaları normaldir.

Destek Portal Stüdyosu: Müşterilerinize gönderdiğiniz bir yer

Stüdyo bir tasarım tasarlıyor OpsIQ sizin için ev sahipliği yapan tam destek sitesi. Kendi web adresi ya da kendi alanınız var ve tüm self-servis deneyimi taşıyor: arama ile makaleler, istek formu, bilet tarihi, müşteri işareti-in ve yardımcı olun. Bir şablon seçin, Theme, Layout, Knowledge, Footer, Brand, Ticket, Asistan, Form and CSS, o zaman yayınlayın.

Bunu ne zaman kullanın Her müşteriyi her bir markalı hedefle işaretleyebileceğiniz ve kendi web sitenizdeki bir destek alanı inşa etmeyi veya sürdürmenizi istersiniz.

Gömülü Bilet Portalı: Kendi sitenizde biletler

Bu, yerdekiler Sadece kendi web sitenizin bir sayfasındaki bilet deneyimiMüşteriler, sayfalarınızı terk etmeden istekleri desteklemek için açık ve cevap verir ve kendi başlığınız, navigasyon ve tasarım tam olarak oldukları gibi kalır. Set the setting, view and access rules in the widget operator, önizleme sonucu, sonra parçaları sayfanıza yapıştırın.

Bunu ne zaman kullanın Zaten kendi tasarımıyla bir web sitesi veya uygulamanız var ve müşteriyi farklı bir adrese teslim etmek yerine içeride olmasını istiyorsunuz.

Kısa versiyon

Stüdyo inşa ediyor Müşterilerinize gönderdiğin bir yer. The embed getiriyor Biletler Müşterilerinizin zaten nerede olduğuBirçok işletme hem de bilet öğesini hesap alanında, makale ve arama ile tam self servis destinasyonunu tutarken kopyaları barındırmak için işletiyor.

Adres ve erişim

Access mod

Portal, imzalanmış müşterilere açık veya sınırlandırılırsa. Açık portallar daha fazla bilet ve spam alır.

Layout seçenekleri

portal ve yardım merkezi bir kahramanı paylaşmalı veya iki tane kullanıp hangi navigasyon ve ayak basıcı her iki yüzeyde görünür, ve navigasyon bölümü etiketi.

Portal adresi

Adres müşterileri kullanır. Bir isim ve OpsIQ, ortaya çıkan portalı gösterir ve yardım merkezi adreslerini değiştirir. Bunu daha sonra gönderilen bağlantıları bozar.

Kendi domain Domaininiz

Portalı kendi sahip olduğunuz bir alandan servis edin, destek gibi. yourdomain. com.

Gömülü Bilet Portalı

Yukarıdaki tablonun üzerindeki damla-in widget'ı anahtarlar ve her ikiniz de düzeni, görünüşünü ve erişim kurallarını seçtiğiniz yer inşa eden gömülü inşaatçıyı açar. Bu, Portal Stüdyosu değil: Studio tasarımları ev sahipliği yapan portal, bu da kendi sitenizin içinde biletleri koyar.

Müşteriler nasıl imzalanır

Bunlar müşterilerinizin işaret seçenekleridir. Personel işareti-in, Ayarlar, Güvenlik altında yapılandırılır.

Sign-in yöntemleri

Hangi seçenekler işaret sayfasında görünür.© ve e-posta işareti otomatik olarak çalışır.

Sosyal işaret-in

Tüketici hesabı sağlayıcıları, her biri bir müşteri kimliğine ve sırrına ihtiyaç duyar, bu sağlayıcıyla kayıt olmak için OpsIQ tarafından sağlanan yönlendirme adresi ile.

Tek işaret-on (OIDC)

Müşteri işareti-in bir kimlik sağlayıcı aracılığıyla, soruncı URL, müşteri kimliği, gizli ve isteğe bağlı olarak e-posta domain listesine izin verdi.

Müşteri SAML 2.0

The SAML eşit. OpsIQ ACS cevabını sağlar.URLve SP varlık ID'si; siz IdP varlık, giriş ve çıkış ID'sini sağlarsınız URLs, X 509 Sertifika ve seçmeli özellikler adları.SAML Giriş yöntemleri bölümünde bunu etkinleştirin, aksi takdirde görünmeyecektir.

Uygulamanızın içinde

Bir müşteri, tekrar imzalanmadan portaldaki uygulama topraklarınıza zaten imza attı. OpsIQ İmzalanması gizli, portal URL Ve çalışma alanı anahtarı, diliniz için tam bir rota (PHP, Laravel, WordPress, WHMCS, Node.jsFlask, Django, .NET, Rails, Java, Go ve kendi kendine ev sahipliği yaptı OpsIQ serverın kendisi), step-by-step kurulum notları ve imzalanmış bir test bağlantısı için jeneratör kullanın. herhangi bir kodu yazmadan önce jeneratörü kullanın.

Yol nasıl çalışır?

Müşteriniz rotada puan veren bir Destek bağlantısına tıklamanız. Yol, uygulamanızda imzalanmış müşteri bulur (a guest giriş ve geri gönderilir), sunucunuzdan gizli okur, iki dakika içinde sona eren bir zaman token işaretler ve portala geçiş yapın ve takmaz ve takmak için anahtarlamaz veya sızıntı yapmaz.

portalın kendi oturumu düğmeye basıyor

Portal Stüdyosu, Sign-in sayfası, web sitesinin girişini kullanın ve giriş sayfanızı belirleyin URL Aynı rotaya. portal ekliyor opsiq_portal_return (Müşterinin sayfasındaydı); rota sadece portal adresinizin içinde olduğu ve müşteriyi oraya getirdiğinde, imzaladığı zaman onurlandırıyor.

WHMCS

Hiçbir şey yazmak için: WHMCS Uzak Sitelerden kanca zaten müşterileri portala işaret ediyor ve geri dönüş adresini ele geçiriyor. giriş sayfanızı ayarlayın URL Senin için WHMCS müşteri alanı giriş.

Her yerde her yere imza atın

portaldan çıkmak da müşteriyi uygulamanızdan işaret eder.

Alınması ve korunması

Form alanları

Bu yapılandırılmış alanlar istek formu topları. Her ekstra alan teslimleri kaybeder, bu yüzden sadece triage'ye ihtiyacınız olan şey için sorun.

Spam ve kötüye kullanımı

Bir balpot ve oran her zaman kamu formunu kısıtlayabilir. Üstte, tek bloklanmış alanlarınızı ekleyebilirsiniz ve Google reCAPTCHA veya Cloudflare +380638588488 depolamak için bir CAPTCAV ekleyin. yenidenCAPTCX, güvenlik; Ultrasonik anahtarlar buraya girdi.

Portal analitik

Son otuz gün boyunca portal aktivitesinin sadece özeti.

Ayarlar

Ayarlar: İzinler, Licence, Cron ve Danger Zone

Sistem grubu, artı hangi Ayarlar sekmesini kimin görebileceğine karar veren takım erişim kontrolleri.

Takım Access and Permissions

Per-admin izni

Her yönetici, sohbetleri ekran erişimle kapsayan açık bir izin seti alır ve hangi Ayarlar düzenleyebilirler ve departmanları. Full Administrator rolü olan herkes her zaman bir kişinin gördüğü sekmeye karar verir, bu yüzden en dar setlere çalışın.

Lisans

Mevcut lisansınızı, size ve statüsünün ne olduğunu gösterin.

Cron Build

Kendi kendine ev sahipliği yapan taksiler yalnızca. OpsIQ bulut sizin için çalışan ve sekme gizlidir. Bir kroki seti her planlanan görevi yönlendirir: bilet otomatik olarak, escalation routing, exchange-rate refresh, postabox anket ve konektör senkronizasyonu.

1
Hattı kopyalayın

sekme, sunucunuz için tam bir crontab hattını zaten seçilmiş doğru PHP ikili ile göstermektedir.

2
Bunu crontab'a ekleyin

Run crontab - PHP'yi çalışan ve tek çizgiyi yapıştıran kullanıcı olarak. cPanel, Cron Jobs aracını yerine kullanır.

3
Kontrol Et

Bir dakika içinde kalp atışları ışık tut. Hemen beklemek yerine test etmek için şimdi Run kullanın.

Kalp paneli son işi gösteriyor, süresi ve hem oto-repli kuyruk hem de e-posta ve konektör anketi için işlendi. Son çalıştırıldığında manuel web düğmesine gerçek bir sunucu cron yerine geldiğinde uyarılıyor.

Tehlike Bölgesi

Tüm Takip Verileri

Wipes her OpsIQ toplanan veya üretilen. Onay cümlesini tam olarak içeren ve türün ne tür bir şekilde çizebilirsiniz. Ayarlar ve site yapılandırması, bloke adresler, ekibiniz yazdı (bilgi tabanı, SSS, çeviriler, portal tasarımları, eylem tanımları) ve onay makbulları tüm korunmuştur.

Purge Data Daha Yaşlı

Aynı süpürücü, daha eski rekorlarla sınırlı 30, 60, 90 veya 180 Günler ya da bir yıl boyunca otomatik olarak yuvarlanma tutma, bunun yerine genel ve izlemedeki saklama değerlerini kullanır ve planlanan görevin bunu yapmasına izin verir.

🚫
Ayarlardan bir yedek açın, Genel olarak Tehlike Bölgesinde herhangi bir şey kullanmadan önce. Bu eylemler geri alınamaz.
Ayarlar

Ekibinizi yönetin

Takım üyeleri ve hangilere erişebilecekleri kontrol etmek için rol atamak.

Takım Ekibi
Takım & BölümTakım ekranı: temasla yöneticilerin bir masa, rol badge (Owner, Full Admin, Agent) ve her biri erişime sahip olabilir.Takım & BölümİşspaceTakım & Bölüm+ Save admin kullanıcıİLETİŞİMROLİBÖLÜMLERAO[email protected]Ada OwusuSahibiHepsiKM[email protected]Kojo MensahTam YöneticiHepsiRT[email protected]Rita TettehAjan.HesaplamaSB[email protected]Ajan.Destek Desteği Destek Desteği Destek Desteği1TEAMYöneticiler davet et ve yönet2ROLESSahibi · Full Admin · Agent3SCOPEDBölümler arası erişim
Gerçek takım ekranı: iletişimleri, rolü ve ulaşabildikleri bölümlerle her yönetici, ajanlar kapsamını, sahiplerini tam olarak.

Roller

Sahibi

Lisans, fatura ve tehlike bölgesi dahil olmak üzere tam erişim. Kurulum başına bir tane.

Tam Yönetici

Lisans ve tehlike alanı dışında tam erişim. Yöneticileri yönetebilir.

Ajan.

Bölümler atanması için Sınırlı. Biletler, sohbetler ve sadece analizler.

Takım üyelerini davet etmek

1
Takıma Git

Yanbar'da Team'e kadar.

2
Davet Et'e tıkla

Takım üyesinin e-postasına girin.

3
Set rol

Sahibi seçin, Full Admin veya Agent.

4
Assign Bölüm

Ajans için, erişilebilir bölümler seçin.

5
Davet gönder

Kurulum bağlantı ile bir e-posta alırlar.

Ayarlar

Takım performansı

Destek ekibiniz nasıl yapılır. Access is by permission, not by role göre değil: görüş izni sayfayı açar, yönetilen izin hedefleri hedefler, QA ve meslektaşınız okumalar ve ödül-financials izni, Ödüllere ek olarak verilen bir takım liderlik tam yönetici olmadan bunlardan herhangi birine verilebilir.

Takım performansı
Takım performansıTakım performans ekranı: ajanlar bir kompozit puan bar, CSAT ve sıra başına bir Pay düğmesi ile bir ödül dengesi tarafından sıralandı.Takım performansıİşspaceTakım performansıAjan.PuanCSATDEĞERLENDİRMERTRita Tetteh4.8$42ÖdeSBSam Boateng.4.5$28ÖdeKMKojo Mensah4.2$15ÖdeAOAda Owusu4.9$51Öde1SCOREDKompozit performans2CSAT & LOADDeğerlendirmeler + ses3REWARDSPay agent dengeleri
Gerçek takım performans ekranı: her ajan hacim ve CSAT üzerine attı, sıra başına ödeme yapabileceğiniz bir ödül dengesi ile.

Sayfa nasıl organize edilir

Takım Performansı beş sekmedir. Her bir farklı soru cevap verir ve genellikle size ihtiyaç duydukları acil şekilde sipariş edilirler.

01 Komutanlığı merkezi

Canlı kuyruk durumu, hedeflerinize karşı müşteri sonuçları, kapasitenin nasıl harcandığını ve kanıt-adjust per-teammate indeksine ihtiyaç duyuyor.

02 Teammates

Liderboard, tanıma (en gelişmiş ve çizgiler), arayışlar ve sıralamayı kim görebilecek olan opt-in kontrolü.

03 Quality

Puancards, kaydedilen değerlendirmeler, şans eseri inceleme sözleşmesi, yorumlayıcı sürüklenme ve kanıtlar anlaşmazlıkları.

04 Ödülleri

Hediye değeri, ödeme iddiaları ve yönetilen dönem tahsisi: finanse edilen bir tavanı yazar, önizlemeyi gözden geçirin.

05 History

İş alanı zamanla nasıl taşındı: bir grafikle trend ölçümleri ve bir 28-day kapsama ısımap aslında çalışırken gösterir. Her kart kendini yeterince tarihe kadar gizler.

Notlanmamış sıfır değildir

Yeterli miktarda ele alınmadan bir takım arkadaşı - veya kanıt taşıyan boyutların, yapılandırılmış ağırlığın yarısından daha azını eklediği – puanları ve grubu boş olduğu gibi gösterilir ve onların arızası gizlidir. Bu kasıtlıdır: sıfırın altında birini sessiz bir hafta boyunca bir sıralama olarak oluşturmaz.

İki kanıt eşi farklı işler yapar ve onları ayrı tutmaya değer. Asgari eleman, birinin puanını etkilemediğine karar verir: ödüle ve uygunluk ödülüne karar verebilir. Bu nedenle bir takım arkadaşı tamamen puanlanabilir ve hala bu süre için uygun olabilir, çünkü çok az müşteri bunları değerlendirmiştir.

💡
Her rakam, gördüğünüz çalışma alanına ve seçtiğiniz zaman aralığına bağlıdır. İki ayrı iş alanında çalışan bir takım arkadaşı her birinde bağımsız bir rekora sahiptir. İki istisnada bir site grubu bir iş alanıdır, bu yüzden üye domainleri birlikte ölçülmektedir; ve tüm yerler kasıtlı olarak her seferinde önlemler alır.

Performans indeksi

Beş boyutta bir kompozit, her biri meslektaşlarına karşı belirlediğiniz bir hedefe karşı ölçtü, sonra arkadaki kanıtlar incelendiğinde ortaya çekildi. Sesleme rakam 70'a doğru ilerler, bu yüzden ince bir mükemmel puan geri çekilir ve ince bir zavallı skor alınır. Dörtün arkasındaki kanıtlar sabit değildir.

Kalite kalitesi

Onaylanan geri bildirimden müşteri memnuniyeti QA puan kartı sonuçları tarafından mevcut olanların ve yönetildiği.

Sorumluluk

P50 ve P90 yüzde zaman önce, hedeflerinize karşı.

Karar

Zaman ve tek dokunuşlu karar oranı.

SLA

SLA'ya karşı yapılandırdığınız, artı risk altında ve ihlal edilen sayılara karşı.

Stewardship

Yeniden açın ve transfer oranları - geri gelen iş.

💡
Kilolar yapılandırılabilir ve görecelidir; toplam 100. Eksik kanıtlar sadece indeksi daha düşük, asla yükseltemez - tam yapılandırılmış ağırlık denominatorda kalır.

Kapasite ve verimli zaman süresi

Occupancy, üretken zaman, üretken saat başına çözüldü ve pencerenin online payı. Utilisation is olarak bildirilmiyor: bir denominator olarak saatlerce planlanan saatlere ihtiyaç var, OpsIQ has no roster or changing source, and a replaced denomiator would be a opinion sign.

⚠️
Sadece rapor edin. Occupancy zaman harcandığını söylüyor, ne kadar iyi harcandı ve asla ödeme yapmamış bir takımda veya boyutlar. Hiçbir işsiz kanıtla birlikte hiçbir zaman sıfır olarak okumaz.

Kalite güvencesi

Bir puan kartı, rubric incelemeleyicileri gerçek konuşmaları karşılamaktadır. Sadece yayınlanan bir sürüm bir değerlendirme alabilir ve yeni bir versiyon asla nasıl atıldığını yeniden yazamaz. Bir konuşma hakkında yorum kanıtlanır, bir kişi üzerinde karar vermez.

Reviewer sözleşmesi

Reported as a chance-corrected statistic (Cohen's and Fleiss' kappa), not a raw agreement percentage. Two reviewers who pass everything agree 100% of the time while carrying no information.

Reepli

Bir inceleme puanı aynı konuşmadaki meslektaşlarından sistematik olarak daha zor veya yumuşak puanlar olsun - panelin geri kalanına karşı bir karşılaştırma, zamanla bir eğilim değil. Bir etkileşimin birden fazla kez gözden geçirilmesi gerekiyor.

Anlaşmazlıklar

Bir takım arkadaşı, onlar hakkında kaydedilen resmi olarak ihtilaf kanıtlarını kaydetmiştir. Açık bir anlaşmazlık blokları çözümüne kadar sonlaşmayı ödüllendirir.

Kendini-mükemmel

Refüzyon. Bir takım arkadaşı kendi değerlendirmelerini sunamaz.

⚠️
AI-graded değerlendirmeler, bir kalibrasyonu yayımlanmış olana kadar ödeme yapamaz. modelin insan incelemeleriyle yeterince yakından kabul ettiğini gösteriyor, minimum örneke karşı kappa tarafından ölçüldüğü anlamına gelir. Açık bir kapı, modelin sayılacağı kadar insanlarla aynı fikirde olduğunu anlamaz - modeli asla doğru değil.

Tanımlama

Yalnız sıralama başarısızlık modları belgelendi: metrik oyun, yandı ve sonuncusu olan herkesin kamu şafağı.

En gelişmiş çoğu

Bir takım arkadaşının kendi önceki kayıtlarına karşı ölçüldü, asla meslektaşlarına karşı değil, küçük bir denominatör bir kazanamaz.

Streaks

Sabit dönemler sabit, ilan edilen bir barla buluşuyor - ortalama derecelendirme, hacim, puan sayımı ve negatif beslenme oranı, tüm mutlak rakamlar. Herkes aynı anda bir çizgi tutabilir, bu yüzden sıra oluşturmaz ve olağanüstü bir ay sahip olan bir meslektaşınızı kıramaz.

Opt-in sıralaması

Varsayılan olarak. Bir takım arkadaşı her zaman kendi indekslerini görür; meslektaşlarının çalışma alanı kararı olup olmadığını görürler. Yüzde grup mutlak pozisyonlar yerine yayınlanabilir.

💡
Asla para dokunmuyorum. Bir çizgi bir ödeme veya mola veremez ve çoğu geliştirilmiş ödül kategorisi değildir.

Quests

Ekip, sabit bir ilan bara karşı her birine karşı ölçümde çalışır - böylece herkes aynı dönemde aynı arayışı açıklayabilir.

Kapsam ve kasinans

Bireysel veya ekip; bir-off, tekrarlanabilir ya da açık pencere ile mevsim.

Criteria

Konuşmalar ele alındı, notlar aktif günler, ortalama derece derecelendirme veya olumsuz geri bildirim oranı. Tüm mutlak - değer hangi meslektaşların yaptığına bağlı değildir.

Kalite koruma

Bir hacim hedefi ile herhangi bir arayışta gerekli. Kaliteli, onu tamamlamak yerine görevi yerine zeminin altına düşerken sayıyı vurun ve tamamlanmamış olarak gösterilir.

Tekrar limitleri tekrarlamak

Bir per- period cap, en yavaş kriter tarafından yönlendirildi, artı tekrar sayılabilecek bir serinleme.

Takım Görevleri

Kalıcı bağlantıyı yer imlerinize ekleyin, bu yüzden bir takım arayışı lider olamaz.

Koçluk seansları

Antrenörlük seansı bir rekor, bir sohbet değil. Bir antrenöre sahip, bir takım arkadaşı koç olmak, planlanan bir zaman, konuşma puanlarını kabul etti ve daha sonra yazılmış bir özet. Gerçek sohbetler, biletler ve QA değerlendirmeleri kanıt olarak gerçekleştirilir, bu yüzden konuşma aslında hatırlanan bir izlenimden ziyade iş için sabitlenir.

Konuşma noktaları

Oturumdan önce bir anlaşma yapıldı, bu yüzden takım arkadaşı sürprize girmiyor.

Pinned kanıtlandı

Oturuma eklenen biletler ve QA değerlendirmeleri bir referans - bir tür ve bir id – bir kopya değil, bu yüzden canlı kayıtta her zaman puan alır. OpsIQ bunu kabul etmeden önce boşluğa doğrulayamaz.

Eylem öğeleri

Bir sahibi ve bir tarihle her biri, geçmiş bir eşyanın sonlandığı gibi gösterilir - türetilen bir devlet değil, birinin ayarlanması gereken bir durum.

Özel not

Antrenörün kendi notu. Takım arkadaşı onu asla okuyamadı - bir ajan olarak değil, bir yönetici olarak değil sahibi olarak değil. Bu kontrol her başka izninden önce çalışır ve aşırılık yapamaz.

Kim bir seans görebilir

Antrenör, takım arkadaşı ve yönetilen ekip performansı izni olan herkes aynı bölümde diğer takım arkadaşları da dahil olmak üzere başka bir şey değil.

Denetim Denetimi

Her yarat, güncelleştirme, pin, unpin ve tamamlanma, hangi değişikliklerle kaydedilir.

💡
Antrenörlük, puanlamadan ve paradan kasıtlı olarak ayrıdır. Bir seans herkesin indeksini değiştirmez, bir ödül kapısına gitmez ve liderboard'da görünmezler.

Ödüller ve ödüller

Kayıt edilen aktivite, ayarladığınız nakit değeri ile Jetonlara dönüşür. Bir ödeme yolu kasıtlı olarak yavaştır ve her adım kaydedilir.

1
token değerini ayarlayın

Kaç tane jeton ne kadar paraya eşit ve her aktiviteye değer.

2
Desteklenen tavanı yazar

Kapalı bir takvim dönemi için, tam bir yönetici ödeme yapabileceğiniz maksimum jetonları belirtir. ayarlar formunu kurtarmak bütçeye yazar değildir ve zaten yetkili olan bir tavanı değiştiremez.

3
Gözden Geçirin

Recipients, rezerv ve herkesin makul olması nedeni. Açık kanıtlar bu adımı engeller.

4
Finalise

Ayrılma, arkadaki kanıtlarla kalıcı olarak kaydedilir. Hiçbir şey tamamlanmamış ve tekrar çıkarılmamış bir dönemdir. Verilenlerden biri ilk önce tersine çevrilmelidir: OpsIQ her cüzdana karşı bir giriş yazar ve hiçbir zaman orijinali silemez, bu yüzden öncü hala ne olduğunu gösterir ve o zaman serbest bırakılırsa geri döner.

⚠️
Eligability doğrulanmış müşteri geri bildirim gerektirir. AI kaliteli puanlar bu kararı tamamlayabilir, ancak hiçbir zaman değiştiremez ve Unmarkd olarak gösterilen bir takım arkadaşı uygun değildir. Her katkıda bulunan 25% dönemlerinin beklenen payının üzerinde kaplanır, bu yüzden çok yüksek hacimli ay tüm bütçeyi absorbe edemez.
💡
Hesap sahibi ödüllerde veya token ödüllerinde hiçbir rol almaz, çünkü hiçbir şekilde finanse edilen tavanı ve her tahsisi yazarlar ve kendilerini ödediğini onaylamaları için yukarıda kimse yoktur. onların çalışmaları ölçülmüş ve başka biri gibi tahtada sıralanmıştır.

Herkes varsayılan olarak rol alır, takım yol açar ve ortak sahipleri dahil edilir. Birini bırakmak için onları Team & Departments'ta açın ve ödüllerde yer alan Takes bölümünü geri yükleyin ve gösterilen; onlar bu noktadan bir aday olmayı bırakırlar ve hiçbir şey sonlanmamış değildir.

⚠️
Kimse kendileri için para onaylamıyor. Çünkü bir kısmını alabilir insanlar da ödemelerini onaylayabilecekler, OpsIQ kendi cüzdanına ödeme veya kredi reddeder, kendi iddianızı ödediğiniz bir dönemi öder ve bir diğer tam yönetici ya da sahibi bunu yapmalıdır.

Kim görebilir ve ne yapabilir

View team performans

Gemi, canlı devlet, çalışma alanı için kapasite ve kalite genel bakış.

Takım performansını Yönetin

Hedefler ve puanlama, ihracat, QA puancards ve değerlendirmeler, koçluk, arayışlar ve meslek sahibi verileri yönetici tarih ve ödül tarihi gibi ödüllendiren okur-yazarlık verileri taşıyan okumalar.

View team finansals ödüllendiriyor

Dengeler, nakit değerleri, iddia notları ve ödeme referansları - performans kanıtlarından ayrı çünkü bu pararoll-adjacent.

Full administrator sadece

Her para mutasyonu: bir ödül ödeme veya iddiayı reddetme, bütçeyi yazar, sonlandırır ya da bir tahsisi geri döndürür ve token-to-cash oranını ayarlayamaz. Bunlar izin vererek delegelenebilir.

Kullanımı oldukça iyi

Performans indeksi yönetim kanıtı, otomatik bir iş kararı değil. Üzerinde hareket etmeden önce bir numaranın arkasındaki kaynak konuşmaları açın ve karmaşıklık, programlar, bırakın ve erişilebilirlik ihtiyaçları. tek zor hafta sürekli bir model gibi görünüyor.

Ayarlar

Siteleriniz (iş alanları)

Siteler (iş alanları) birden fazla web sitesini bir OpsIQ kurulumundan yönetmenize izin verir. Her biri kendi izleme, AI, konektörleri ve takım erişimine sahiptir.

Siteler
SitelerinizSite ekranı: bir çalışma alanı listesi, türü, bağlayıcısı, durumu kötüge ve Open düğmesine ek olarak.SitelerinizİşspaceSiteleriniz+ Yeni site ekleyinSshop.acme.come-ticaret · Shopify konektörAktifHhost.acme.comHosting · WHMCS konektörAktifBblog.acme.comİçerik · hiçbir bağlantıKurulum1MULTI-SITESite başına bir iş alanı2ISOLATEDVeriler asla karıştırmıyor3PER-SITEKendi ayarları ve konektörleri
Gerçek Siteler ekranı: Her site kendi izole çalışma alanı (kendi domaini, konektör ve ayarlar), bir listeden eklendi ve açıldı.

Bir site oluşturmak

1
Bağlanmış Sitelere Git

Bağlanan Sitelere Navigate.

2
Yeni bir site ekleyin

Adı girin, alan ve açıklama.

3
Site anahtarını kopyalayın

Her site, widget parçaları için eşsiz bir anahtar alır.

4
Bağımsız olarak yapılandırın

Her site kendi AI, konektörleri ve ayarları vardır.

Kaç tane sitem olabilir?+

Lisans planınıza bağlı olarak. lisans bilgilerinizi kontrol edin.

Ayarlar

Lisans ve plan

OpsIQ lisans kontrolleriniz özellikleri, site sınırları ve AI kredi dengesi.

Lisans
Lisans MerkeziOpsIQ Lisans Merkezi: Plan, Aktif bir statü kötü, maskeli lisans anahtarı, bir AI-credit metre ve bir Force-remote-check düğmesine.Lisans MerkeziİşspaceOpsIQ Lisans MerkeziPlanİşDurum durumuAktifAnahtarOPSIQ-••••-••••-2F9CAI kredi kredileri$68 solForce uzaktan check1PLAN & STATUSAktif, bir bakışta2KEYHMAC-cached yerel olarak3CREDITSAI dengesi ve sınırları
Gerçek Lisans Merkezi: Planınız ve aktif durumunuz, maskeli anahtar, AI-credit bakiyeniz ve bir tıklama kuvveti yeniden birleştirin.
Lisans anahtar anahtarı

Ayarlara girin > Lisans. OpsIQ lisans sunucusuna karşı geçerlidir.

Lisans Kalp / Geçerlilik

OpsIQ Normalde gerekli olduğunda imzalanmış yerel lisans önbelleklerini ve yenilemelerini okur. Acil bir sonuca ihtiyacınız olduğunda Force uzaktan check kullanın; Tanılar tanımlanıyor DNS, HTTPS veya sunucu-zaman sorunları.

Plan

Özelliklerin kullanılabilirliği ve sınırları belirlemektedir.

Site limiti

İş alanlarının maksimum sayısı.

AI kredi kredileri

Yönetilen AI kullanıyorsanız, kredi bakiyeniz burada gösterilir.

Açıklama

Hizmet kesintisinden kaçınmak için sona ermeden önce yeni.

Lisansım sona erdiğinde ne olur?+

Takip, biletler ve CRM devam ediyor. AI yenilenmeye kadar duraklıyor. Data korunmuştur.

Ayarlar

Profil, şifre ve iki faktör doğrulama

Her yönetici kendi kimliklerini, çalışma tercihlerini, şifresini ve iki faktör doğrulamasını koruyabilir.

Ürün ekran ekranı
ProfilimProfil sayfası kişisel ayrıntıları, dil/zaman bölgesi, avatar /signature, şifre ve iki faktörlü kimlikleri ayırır.ProfilimİşspaceGERÇEKTamamTIMEZONEAvrupa / Athens2FAEtkinleştirildiLIVE ÇALIŞMASPACEAd ve e-postaKişisel kimlik kimliğiDüzenleDil ve Zaman BölgesiTarihler ve arayüzDüzenleAvatar ve imzaReplies and team varlıkDüzenleŞifre ve 2FAHesap koruma korumasıGüvenli1UPDATE PROFILEKimlik ve yerel2SECURE LOGINŞifre ve 2FA3SAVEBu yöneticiye başvurun
Profil sayfası kişisel ayrıntıları, dil/zaman bölgesi, avatar /signature, şifre ve iki faktörlü kimlikleri ayırır.

Profil ayarları imzalanmış yöneticiye ait ve iş alanı markasını değiştirmez. eşsiz bir şifre kullanın ve iki faktörlü kimlik doğrulama etkinleştirin. Bir e-posta veya kimlik doğrulama ayarı yeniden doğrulama veya taze bir işaret için gerektirebilir.

Ayarlar

Bildirim tercihleri

Operasyonel olayların üründe veya e-posta yoluyla bir yöneticiye ulaştığını bildirim tercihleri kontrol edin.

Ürün ekran ekranı
Bildirim tercihleriBildirim sayfası, per-event in-app ve e-posta seçenekleri artı son bir bildirim listesi sağlar.Bildirim tercihleriİşspaceIN-APPOndaEMAILSeçiciUNREAD4LIVE ÇALIŞMASPACEBilet siparişi verilen biletUygulama içinde ve e-postaOndaMüşteri cevap verdiUygulama içindeOndaSLA risk riskiUygulama içinde ve e-postaOndaAI onayUygulama içinde ve e-postaOnda1CHOOSE EVENTSSadece kullanışlı sinyaller2CHOOSE CHANNELIn-app veya e-posta3REVIEWSon Yazılar
Bildirim sayfası, per-event in-app ve e-posta seçenekleri artı son bir bildirim listesi sağlar.

Tercihler kapak bileti atama, müşteri yanıtlar, SLA uyarıları, sohbet elioff ve AI onay olayları. Acil operasyonel sinyalleri bir yere etkinleştirin; e-postanın mutlaka in- bildiriminden vazgeçmeyeceğini unutmayın.

Ayarlar

Güvenlik genel bakış

Güvenlik Genel Bakış blokları, giriş saldırıları, tehdit seansları, güvenlik eğilimleri ve etkinlik bütünlüğü değerlendirme için ilk ekrandır.

Ürün ekran ekranı
Güvenlik genel bakışGüvenlik Genel bakış mevcut risk kartlarını birleştirir, bir 14-day trendi, saldırgan liste, etkinlik besleme ve bütünlük durumu.Güvenlik genel bakışİşspaceACTIVE BLOCKS18FAILED LOGINS42HIGH THREAT3LIVE ÇALIŞMASPACEOtomatik engellendi7-gün toplamı ve kaynağıEğriSon saldırganlarIP, ülke ve nedenİncelemeGüvenlik olaylarıRisk ve eylem sonucuBesleHash-chain bütünlükTamper-evident olay zinciriGeçerli1READ HEADLINEŞimdiki maruziyet2OPEN EVIDENCESaldırıcılar ve olaylar3HAREKETBlok, araştırma, ihracat
Güvenlik Genel bakış mevcut risk kartlarını birleştirir, bir 14-day trendi, saldırgan liste, etkinlik besleme ve bütünlük durumu.

triage için başlık kartlarını kullanın, sonra ilgili Denetimi açın, Başarısız Girişler, Bloked IPs veya JavaScript Kayıt seviyesindeki çalışma için hata sayfası.The Errors page for record- level work. The 14-gün trend tek bir aksandan daha kullanışlıdır. Yüksek performanslı seanslar ziyaretçiye karşı araştırılmalıdır, kalıcı bir blok uygulanmadan önce istek ve kimlik doğrulama kanıtları.

Ayarlar

Tamper-evident denetim log

Hangi şeyi yapan denetim günlük kayıtları, hangi nesneye ne risk seviyesinde ve başarılı olup olmadığını.

Ürün ekran ekranı
Faaliyet denetimleriDenetim sayfası, eylem, aktör, risk, hedef ve sonuçla arama edilebilir tamper-evident aktivitesini sağlar.Faaliyet denetimleriİşspaceOLAYLAR18.2kHIGH RISK21INTEGRITYGeçerliLIVE ÇALIŞMASPACELinks etkinleştirdi[email protected] · ShopifyBaşarıAPI anahtar geri döndü[email protected] · anahtar anahtarı 19BaşarıAyarlar değişti[email protected] · AIBaşarıİzin inkar etti[email protected] · ihracatBloked1FILTEREylem, risk ve aktör2INSPECTHedef ve sonuç3EXPORTCSV veya JSON
Denetim sayfası, eylem, aktör, risk, hedef ve sonuçla arama edilebilir tamper-evident aktivitesini sağlar.

Eylem, risk ve aktör tarafından filtre; ihracat CSV veya JSON Bir soruşturma için. hash zinciri eksik veya değişmiş denetim sıralarını tespit etmeye yardımcı olur, ancak korumalı yedekleri ve sınırlı veritabanı erişimini değiştirmez. Denetim ihracatını hassas olarak değerlendirebilir çünkü kullanıcıları, kayıtları ve güvenlik eylemlerini tanımlayabilirler.

Operasyon operasyonları

Tanıklar

Tanılar subsystem düz İngilizce sağlık sonuçlarına kontrol eder ve bir sonraki eylemleri yönlendirir.

Ürün ekran ekranı
TanıklarTanık gruplar, bilgisayarları, interneti, bilgileri, CRM otomasyonlarını, lisans ve depolama için kontrol eder.TanıklarİşspaceSAYLIĞI13WARNING2BAŞARISIZ1LIVE ÇALIŞMASPACEWidgetBeacon ve sohbet uç noktalarıSağlıklıArka görevleriCron Kalp Geçin GeçtiUyarıEmailOutbound test başarısız olduBaşarısızlıkBağlayıcılarKayıt ve etkinlik alımıSağlıklı1REFRESHMevcut kontrolleri yürüt2OPEN WARNINGKanıtları Oku3FIX AND RETESTKurtarmayı Onaylayın
Tanık gruplar, bilgisayarları, interneti, bilgileri, CRM otomasyonlarını, lisans ve depolama için kontrol eder.

Sayfa Site Hızını, sıralama / anahtar kelime/gerilink/yerel verileri, AI ve eylem ağ geçidini, biletleri, taramacı / saldırganları, entegrasyon / satın alma alımlarını, arka plan görevlerini, CRM otomasyonlarını, lisansı, widget ve ilgili ürün hizmetlerini kasıtlı olarak rapor eder.

Bir değişiklikten sonra, etkilenen alt sistemi sağlıklı döndürür. Yeşil tanı sayfası gereklidir ancak başlatmak için yeterli değildir; Pre-start checklist'i de tamamlamak.

Ayarlar

Güvenlik ve erişim

OpsIQ Yöneticinizi, verilerini ve verilerinizi korumak için birden fazla güvenlik katmanı içerir. API Erişim.

Nasıl çalışır
Güvenlik ve erişimBir güvenlik kalkanı etkinleştirilen kontroller: iki faktör, OIDC SSO, SCIM 2.0 OAuth2 PKCE, CSRF/CSP, IP Güvenlik duvarı, hız sınırları ve bir sırlar.İki faktör (TOTP)OIDC SSOSCIM 2.0OAuth2 PKCEÖSSF + CSPIP FirewallPuan limitleriSırlar
Güvenlik Güvenliği Güvenlik Güvenliği

Güvenlik özellikleri

Admin doğrulama

Seçmeli 2FA ile e-posta /password.

Giriş Kilitout

Çok sayıda başarısız denemeden sonra geçici kilit.

IP bloke

Block IPs veya CIDR, takip edilen sitelerden erişim sağlar.

Tehdit puanlaması

Davranış temelli tehdit puanları. Yüksek-taat ziyaretçileri otoblo olabilir.

HTTPS Uygulama

Tüm bağlantılar için gerekli. HTTP HTTPS'ye yönlendirmektedir.

HSTS başlıkları

Strict-Transport-Security, aşağılama ataklarını önler.

KSSF koruma koruması

Tüm yönetim formları ÖSSF jetleri içerir.

XSS koruma koruması

Tüm kullanıcı girişi kaçtı. CSP başlıkları senaryo yürütmesini kısıtlar.

SSR koruma

Outbound webhooks blok özel /internal IP adreslerini engeller.

Önerilen kurulum

1
2FA'yı etkinleştir

Tüm yönetici hesapları için.

2
Güçlü şifreler

Asgar 12 karakterleri, karışık.

3
İnceleme hesapları

Eski takım üyeleri için erişimin kaldırılması.

4
Monitor başarısız girişler

şüpheli desenler için haftalık kontrol edin.

5
Güncellenme Keep update

Güvenlik yamaları için hemen güncellemeleri uygulayın.

Ayarlar

Roller ve izinler

Rol tabanlı Access Control, her takımın üyesinin ne yapabileceğini kontrol etmenize olanak tanır.

Roller ve izinler
Roller ve izinlerBir rol-apabilite matrisi: Sahibinin her şeyi vardır; Tam Admin fatura ve tehlike bölgesi eksik; Ajan sadece kaplanmış biletlere sahiptir.Roller ve izinlerİşspaceKÜÇÜSLERİHesaplamaTehlikeBILETELERSahibiTam YöneticiAjan.scoped13 ROLESSahibi · Full Admin · Agent2GRANULARPer- page + per-department3DEFAULT-DENYUnutulmuş rotalar bloke edildi
Bir bakışta rol matrisi: Sahibi her şeyi alır, Tam Admin her şey ama fatura ve tehlike bölgesi, Ajan sadece onların kapsamı biletleri.

Varsayılan roller

Sahibi

Lisans, tehlike bölgesi ve yükleme yönetimi dahil her şey.

Tam Yönetici

Lisans ve tehlike alanı dışında her şey takımı yönetebilir.

Ajan.

Tanımlanmış biletlere ve sohbetlerine yanıt verin, analitikleri görün. No settings, team veya güvenlik erişimi.

Özel roller yaratabilir miyim?+

Şu anda üç yerleşik rol artı bölüm ataması granular kontrolü veriyor.

Ayarlar

IPs engellendi

IP adreslerinizi takip ettiğiniz sitelerinize erişmekten alıkoyun.

IPs engellendi
IPs engellendibloke edilen-IPs Ekran: bir blok-an-IP/CIDR her giriş, tarih, neden ve Unblock düğmesine sahip bir Blocked Addresses masasının yanında oluşturur.IPs engellendiİşspaceBir IP / CIDR203.0.113.0/24Sebep (isteğe)Blok BlockBloked adresler203.0.113.9Jun 12 · brute güçBloku Aç45.12.0.0/16Jun 10 · spamBloku Aç102.89.6.2Jun 9 · kötüyeBloku Aç1BLOKIP veya CIDR aralığı2LISTKim ve ne zaman, neden3UNBLOCKBir tıklama
Gerçek Bloklanmış IPs Ekran: tek bir blok IPYa da CIDR aralığı ve listeyi yönetin, her biri tarihi, nedeni ve bir tıkış engeli.

Nasıl bloklanır

1
Güvenlik'e git > Bloked IPs

2
Bir IP veya CIDR aralığı ekleyin

Örnek: 203.0.113.42 veya 203.0.113.0/24

3
Bir sebep ekleyin

Doküman neden: spam, istismar, kazınıyor, vs.

Yasal kullanıcıları etkileyecek mi?+

Eğer müşteriler bir şirket paylaşıyorsa IP veya VPN, bunu bloke et IP Herkesin üzerinde tutun. dar bloklar kullanın.

Ayarlar

Başarısız girişler

Tüm başarısız giriş, OpsIQ yöneticisinize çalışır.

Başarısız girişler
Başarısız girişlerBaşarısız-logins ekranı: başarısızlık sayarları ile hesap /IPs masası, son deneme süresi ve sıra başına bir Blok düğmesi.Başarısız girişlerİşspaceBaşarısız giriş girişimleriHesap IPBAŞARISIZSonAÇIKLAMA[email protected] · 41.62.10.472 dakika önceBlok Block[email protected] · 102.89.6.2318 dakika önceBlok BlockBilinmeyen · 45.12.9.71226m önceBlok Block[email protected] · 88.21.4.921h önceBlok Block1WATCHBaşarısız giriş girişimleri2COUNTSHesabı / IP3HAREKETBloktan satır
Gerçek Başarısız Girişler Ekran: Her hesap /IP başarısızlık say ve son denemesi ile, sıradan doğru bir şekilde brute-force kaynağı bloklayın.

Her giriş ne gösterir

Tarih / Zaman

Deney gerçekleştiğinde.

Email

E-posta adresi kullanılır.

IP adresi

Deneyin kaynağı.

Ülke

Coğrafi konum.

Sebep Nedeni

Yanlış şifre, kilitlenme veya bulunamadı.

Uyarı işaretleri

Birçok deneme, aynı e-posta

Şifre tahmin etmek. 2FA'nın etkinleştirilmesini sağlayın.

Birçok deneme, farklı e-posta

Otomatik saldırı. Kaynak IP.

Olağandışı ülkeler

Ekibiniz yerel ise, yabancı girişimler muhtemelen saldırıdır.

Ayarlar

AI security analisti

Güvenlik sayfalarında bir opt-in analist katmanı: kararlar, olay kısaları, günlük bir sindirme, haftalık bir duruş kontrolü, Güvenlik ve 0-token blok politikaları. ziyaretçi isteği yolunda asla çalışmaz.

Her Güvenlik sayfası ne olduğunu kaydeder, ancak hala yargı alır. AI güvenlik analisti kararın yerinde olduğunu ve o zaman sıfırdan gelen herhangi bir şeyi harcamak için inşa edilir: Beacon veya login yolunda asla oturmaz, deterministic kurallar hiçbir şekilde açık davaları AI çağrısıyla çözülür, kararlar önbelleklenir ve analistin en iyi çıkışı sonsuza kadar sıfır jet özelliklerine sahip olacaktır. Ayarlar → SecurityTüm varsayılan olarak.

Ne ekliyor

Verdict cips + Açık

Bloked IPs Ve Başarısız Girişler sıraları, güven puanıyla bir iyilik / şüpheli / düşmanlı bir çip gösteriyor. Sebebini açıklayın, kullanılan gerçekler ve tek tıkla Blok / salı eylemleri. 24h, bu yüzden yeniden görüş IPücretsizdir.

Bu kısalar

İlgili olaylar bir olaya karışır (login dalgası, URL tarama, otomatik blok patlama) ve bir sonraki adıma yol açtı. Hedef saldırılar aynı olayın içine katladı.

Günlük özet

Günde bir yenidenkap: Dün üslupuna karşı, bloklara, olaylara ve yapılacak tek şey. Sessiz günler sıfır jetonlarda bütün tercihleri gönderir.

Haftalık duruş kontrolü

Pazartesi sert bir kontrol listesi (2FA boşlukları, gerçek saldırı hacmine karşı kilit eşik, uyarılar kapat) bir ciddiyetle, çabayla ve öğe başına kesin düzeltme.

Güvenlik Yardımı Sor

Güvenlik durumuna ilişkin bir soru kutusu, canlı güvenlik durumunuzdan gelen cevaplara genel olarak bakmaktadır. Deep server soruları tahmin edilenden ziyade yönetici mühendisi sohbetine teslim edilir.

Politika önerileri + otomatik pilot

Analist, Approve / İzin kartları olarak beton blok kurallarını önerir; canlı bir hit sayacı ile sıfır jetonlara uygulanan kuralları onaylar. Seçmeli otopilot yalnızca en güvenli kurallar otomatik olarak onaylamaktadır.

Ayarlar

AI security analist (güven_ai_tili)

Master switch. Enables Decision chips, Explain ve Ask Security. Sadece belirsiz IPs modele ulaşır, bir çağrıya yığılır.

Bu kısalar (güven_ai_incidents)

Kombinasyonlar olaylara dönüşür ve her yeni hikayeyi yazar. Mevcut saat güvenlik krokisinde Runs.

Günlük sindirme (güven_ai_digest)

Bir güvenlik zil ve Genel Bakış günü bir gün yeniden dir. Sessiz günler hiçbir şeye mal olmaz.

Haftalık duruş kontrolü (güven_ai_posture)

Pazartesi, kontrol listesini genel olarak sertleştirin. The checklist is full deterministic.

Politika otopilot (güven_ai_autopilot)

Analistin en güvenli önerilerini gözlemsiz olarak etkinleştirmesine izin verir: sadece geri çevrilebilir zaman sınırlı bloklar, tek IPs veya daha geniş olmayan aralıklarla. /24, hiç paylaşılmayan/geçici/özel, sınırlı 10 Her zaman denetlenmiş ve geri alınabilir.

💡
Her çağrı, AI Config'deki aylık cap ile güvenlik_ai’yi → Maliyet Muhafızları (default 300k jetleri) etiketlenirse, geçici okumalara göre sıralanır. Bloking, kilitler ve uyarılar asla bu bütçeye bağlı değildir.
Operasyon operasyonları

Cron ve otomasyon

OpsIQ, e-posta anketini yürütmek için bir ürün programı kullanır, bilet otomasyonu, analitik rulolar, tutma, AI kuyrukları, CRM çalışması, raporlar ve bağlantı işleri.

Ürün ekran ekranı
Cron ve otomasyonBir ürün kroki girişi kalp atışını sağlar; OpsIQ iç işlerin hangi sonucu olduğuna karar verir.Cron ve otomasyonserver sunucusuOARTBEATHer dakika her dakikaRUNNERcron/all.phpHEALTHAyarlarLIVE ÇALIŞMASPACEBirleşik ürün koşucusuopsiq/cron/all.phpGerekirBilet ve e-posta kuyruklarıKısa planlanan çalışmaAktifAnalytics ve saklamaİçsel makencePlanlanmışLinks aboneBelirlenen cron olaylarıKapsam1INSTALL ONE LINEÜrün programı her dakikayı çalıştırın2CHECK CRON SETUPKuantum Kalpleri Onayladı3USE DIAGNOSTICSGeç veya başarısız iş için yatırım yapmak
Bir ürün kroki girişi kalp atışını sağlar; OpsIQ iç işlerin hangi sonucu olduğuna karar verir.

Gerekli ürün cron girişi

Bu tek çizgiyi aynı sunucu ve PHP ortamı için, OpsIQ çalışan:

OpsIQ ürün crontab girişi
* * * * * php /path/to/opsiq/opsiq/cron/all.php >> /tmp/opsiq-cron.log 2>&1

Değişimi Değiştirin /path/to/opsiq Kurulum kökü ile. ev sahibi bir tane gerektirdiğinde tam PHP CLI yolunu kullanın, örneğin /usr/bin/php8.4.

Üst düzey seviyesini kullanmayın /cron.php Ürün çalışması için. Bu depoda koşucunun bu el kitabı dışında ayrı ürün servisine ait olduğunu. OpsIQ ürün koşucusudur opsiq/cron/all.php.

Birleştirilmiş programcı hangi sürücülerin

Bilet ve AI kuyrukları

Otomatik enerjiler, escalations, onaylar ve diğer kuyruklı ürün çalışması nedeniyle süreçler.

Geçen e-posta

Anketler, anketin seçilen satın alma yöntemi olduğu yapılandırılmış posta kutuları.

Analytics ve seanslar

Topluluklar seansları ve yenilenmeler, nedeniyle olduklarında planlanan agresyonlar.

CRM ve bağlılık

Runs puanlama, yaşam döngüsü, iş akışı, kampanya ve önerilen-report görevleri etkinleştirilir.

Yenidenleme ve bakım

Temizlenme, arşiv, expiry ve bütünlük çalışmaları nedeniyle performanslar.

Bağlayıcılar

Dispatches konektör cron aboneleri ve sadece yüklenmesi, etkinleştirilen ve yapılandırılan bağlantılar için anket yapın.

Cron' u doğrula

  1. Ayarlar - Cron Build Ürün koşucusunun varlığını onaylayın.
  2. Kullan Şimdi Run Bir kez, yöneticiyi onaylayın ve kalp atışlarını güncellemesini doğrulayın.
  3. Kontrol et. Tanıklar Geç bir kalp atışı için PHP, veritabanı veya dosya-path problemi.
  4. İnceleme /tmp/opsiq-cron.log veya bir manuel çalıştırıldığında seçtiğiniz günlük yol başarısız olur.

Bağlantı eller kısa tutun, idempotent ve çalışma alanı-skobu. Batch uzun senkronizasyonlar ve bir sonraki run güvenle devam edebilir.

🚫
Ürün cron durduğunda, zaman temelli OpsIQ iş durup hatta sıradan yönetici sayfaları hala yüklenebilir.
Operasyon operasyonları

Hosted deployment operasyonları işlemleri

Ev sahibi bir OpsIQ dağıtım, ev operatörü sunucu tabakasını yönetirken aynı ürün ekranlarını ve iş akışlarını kullanır. Ticari işaret-up, planlar, faturalama ve hesap-portal prosedürleri bu el kitabının dışındadır.

Ürün ekran ekranı
Konuk dağıtımıAltyapıyı koruyan evlenmiş operasyon değişiklikleri; müşterilerin OpsIQ'i nasıl kullandıklarını değiştirmez.Konuk dağıtımıİşspacePRODUCT UIAynı OpsIQINFRASTRUCTUREOperatör-managedWORKSPACE DATAYalnız.LIVE ÇALIŞMASPACEUygulama süresiPHP, web sunucusu ve veritabanıYönetişim Yönetilen YönetiÜrün cronhosting operatörü tarafından programlanmışKontrol EtBackups and UpdateSağlayıcı politikası ve kanıtlarİncelemeOpsIQ ayarlarıSiteler, AI, takım ve konektörlerEkibin1OPERATE OPSIQ NORMALLYAynı ürün navigasyonunu kullanın2VERIFY SERVICE HEALTHTanıklar ve statü kanıtları3KNOW RESPONSIBILITYhosting işlerinden ayrı ürün ayarları
Altyapıyı koruyan evlenmiş operasyon değişiklikleri; müşterilerin OpsIQ'i nasıl kullandıklarını değiştirmez.

hosting operatörü normalde ne yönetir

  • Web sunucusu, PHP runtime, veritabanı servisi, TLS ve depolama.
  • birleşik ürün cron ve sunucu seviyesindeki logları.
  • Uygulama güncelleştirmeleri, altyapı izleme ve ev sahipliği sözleşmesi tarafından belirlenen yedekleme süreci.

Ne bir OpsIQ yöneticisi hala yönetiyor

  • Web siteleri ve widget kurulumu, AI ayarları, bilgi, posta kutuları ve müşteri destekli akışlar.
  • Takım erişimi, bölümler, güvenlik kontrolleri, API anahtarları, konektörler, otomasyonlar ve veri toplama ayarları.
  • Tanılar aracılığıyla ürün doğrulama, denetim logu, bağlayıcı testleri ve gerçek son kontroller.

Operasyonel kontroller

Yönetilen bir hizmetin her ürün entegrasyonunun sağlıklı olduğunu varsaymayın. Ev sahibi operatörle son yedekleme kanıtlarını ve saklama politikasını onaylayın ve kullanın OpsIQ Değişikliklerden sonra teşhisler DNS e-posta, AI sağlayıcıları, web siteleri veya konektörler.

Bu bölüm, ürün işlemleri yalnızca. Ticari dağıtım, abonelikler, fatura ve müşteri hesabı yönetimi OpsIQ handbook dışında kalıyor.

Operasyon operasyonları

Kendi kendine bağlı OpsIQ

Kendi kendine ev sahipliği yaptı OpsIQ Kurulum kontrol ettiğiniz altyapı üzerinde çalışır. runtime, database, veritabanından sorumlusunuz, TLS, ürün cron, yedeklemeler, güncellemeler ve izleme.

Ürün ekran ekranı
Kendi kendine bağlıKendi kendine bağlı altyapı kontrolü verir ve ekibinizi her işletme bağımlılığından sorumlu kılar.Kendi kendine bağlıserver sunucusuPHP8.4+DATABASEMySQL 5.7+SCHEDULERHer dakika her dakikaLIVE ÇALIŞMASPACERuntime uzantılarıs pdo_mysql, mbstring, jsonGerekirEk uzantılarxml, açılırsl, zip, intl, gdGerekirVeritabanı Alternatif veritabanı alternatifMariaDB 10.3+ InnoDB ileDesteklenen destekUlaştırmaHTTPS ve outbound sağlayıcı erişimKontrol Et1PREPARE THE SERVERUygulama zamanı gereksinimlerini karşıla2INSTALL AND CONFIGUREÖzel bir veritabanı ve HTTPS kullanın3ADD PRODUCT CRONRun opsiq/cron /all. php
Kendi kendine bağlı altyapı kontrolü verir ve ekibinizi her işletme bağımlılığından sorumlu kılar.

Minimum yazılım sözleşmesi sözleşme

PHP

PHP 8.4 or newer. Required extensions: curl, pdo_mysql, mbstring, json, xml, openssl, zip, intl and gd.

Veritabanı Veri Tabanı

MySQL 5.7+ veya MariaDB 10.3+ InnoDB kullanarak. Özel bir veritabanı oluşturun ve en az onaylı uygulama kullanıcısı olun.

Web sunucusu

Apache veya Nginx, OpsIQ ön kontrolörü, statik varlıklar ve gerekli yeniden yazlar için yapılandırıldı.

HTTPS

Yönetim seansları için gerekli, widget trafiği, API anahtarları, webhooks ve sağlayıcı aramalar.

Dışarıya erişim

DNS ve HTTPS AI'ya erişim, e-posta, bağlantı ve lisans uç noktaları aslında etkinleştirebileceğiniz.

Dosya erişimi

Web ve CLI kullanıcıları, başvuru dosyalarını okuyabilmeli ve yalnızca belgelenmiş iş zaman / kızak konumlarına yazılmalıdır.

Cron

OpsIQ ürün programı her dakika aynı uygulama yapılandırması ve veritabanı erişim ile web süreci olarak çalıştırın.

Kurulum sırasını

  1. Hedeflenmiş belge köküne geri yükleme ve tedarik edilen dizi yapısını korumak.
  2. Veritabanı ve uygulama kullanıcı oluşturun, sonra veritabanına girin, kanonik URL ve lisans ayarları.
  3. Yüklemek / akışını çalıştırın ve ilk sahibi hesabı yaratın.
  4. Enable HTTPS ve yönlendirmeleri doğrulayın, kurabiyeler ve halk widget/API yolları.
  5. Bütünleşik OpsIQ ürün cron ekleyin:
Kendi kendine evlenmiş ürün cron
* * * * * php /path/to/opsiq/opsiq/cron/all.php >> /tmp/opsiq-cron.log 2>&1
  1. Açık Ayarlar - Cron Kurulum ve Tanılar; programcıyı bir kez çalıştırın ve her başarısız bağımlılığı çöz.
  2. Üretim verileri eklemeden önce yedekleme, geri yükleme testi, günlük tutma ve güncelleme prosedürleri.

Güvenli bir şekilde

  1. Yayın notlarını okuyun ve dosyaları değiştirmeden önce gerekli PHP / genişleticileri kontrol edin.
  2. Veritabanı ve uygulama / yapılandırma dosyalarına geri dönün, sonra yedekin bir test yerinde restore edilebilir olduğunu kanıtlayın.
  3. Yeni dosyaları yüklemeye veya çalıştırmadan işe alın.
  4. Verilen göç/preflight sürecini çalıştırın ve giriş, widget takip etmek, biletleri, e-postayı, AI'yı izlemek ve cron'ı doğrulayın.
  5. Belgelenen geri dönüş penceresi için mevcut önceki sürüm ve veritabanı yedeklemesini tut.
🚫
The repository üst düzey /cron.php Değil, OpsIQ Ürün programır. Point ürün otomasyonu sadece at opsiq/cron/all.php.
⚠️
. schema_cache.json rutin bakım olarak silmeyin. Sadece ürün talimatlarının bir şema-cache yeniden gerektirdiği zaman çıkarın.
Operasyon operasyonları

Prodüksiyon kılavuzu

Üretimde OpsIQ koşmak için liste ve en iyi uygulamalar.

Prodüksiyon kılavuzu
Prodüksiyon kılavuzuBir go-can kontrol listesi: özel alan ve SSL, AI eğitimli, konektörler ve cron, yedekler ve saklama ve takım rolleri.Go-Live checklistİşspaceÖnce canlıÖzel domain + SSL yapılandırılmışAI, içeriklerinizde eğitilmişS· kaçak koşuşturucu test edildiBackups planlanan · tutma setleriTakım rolleri tayin edildi ve incelendi1GO-LIVEPre-start checklist2AMAYDomain · SSL · yedekler3CONFIDENTYeşiller Olduğunda Gemi
Bir go-can kontrol listesi bu kadar eksik değildir: alan + SSL, eğitimli AI, test konektörleri ve kroki, yedekler ve saklama ve takım rolleri.

Daha önce canlı yaşamak

HTTPS yapılandırılmış

SSL yüklü, HTTP yönlendirmeleri, HSTS etkinleştirildi.

Cron koşuştur

Tanık sayfa ile onaylayın.

AI test edilmiş bir yapay zeka test edildi

Bir müşteri olarak sohbet edin. Doğruyu ve ton'u doğrulayın.

Widget kuruldu

Tüm web sitelerinde. Canlı Feed ile onaylayın.

Backup yapılandırılmış

Otomatik günlük veritabanı ve dosya yedekleri.

Hata Girişi

PHP hatası log etkinleştirildi ve takip etti.

Team davetli

Tüm üyeler doğru rollerle hesaplıdır.

Bilgi tabanı kalabalık

En az 5-10 makaleler.

Günlük: Check pan, açık bilet kuyruğu, spot-check AI konuşmaları.

Haftalık: AI Insights, Güncelleme KB, takım performansını kontrol edin, inceleme güvenliği.

Aylık: Analiz eğilimleri, denetim bağlantıları, AI eğitimi güncellemek, yedekleri doğrulamak.

Operasyon operasyonları

Pre-start checklist

Kaynak kapılarını çalıştırın ve ilk üretim başlatmadan önce gerçek ürün kontrollerini tamamlayın. Mevcut bir komut ortamınızda geçtiğine dair kanıt değildir.

Ürün ekran ekranı
Yayın doğrulamasıSerbestleşme görüşü, yürümeleri için gerekli kapıları gösterir; onlar da geçmiş olarak ön plana çıkarmıyor.Yayın doğrulamasıserver sunucusuRUNTIMEPHP 8.4SOURCE GATESYerel olarak çalıştırOUTCOMEKanıt tabanlıLIVE ÇALIŞMASPACEGerekli uzantılarOdadan önce kontrol edinKapıPHP sözlüğü süpürücü süptürTüm proje PHP dosyalarıKapıAI değerlendirme ve PHPUnitBağlanmalar mevcut olduğunda Run when dependencies are presentKapıStatik ve tarayıcı kontrolleriyapılandırıldığında Run when configuredKapı1RUN THE CHECKSGerçek çıktıyı yakalayın2FIX EVERY REQUIRED FAILUREKanıtları varsayımlarla değiştirmeyin3TEST THE PRODUCTGerçek kullanıcı yolculuklarını doğrulayın
Serbestleşme görüşü, yürümeleri için gerekli kapıları gösterir; onlar da geçmiş olarak ön plana çıkarmıyor.

Kaynak ve salıverme kapıları

Depozitoyu yükleme kökünden kontrol eder ve serbest kayıt kaydı ile tam çıktılarını tutar.

İlk Preflight kapısı
php tools/preflight.php
Genişletilmiş serbest bırakma kapısı
php tools/release_gate.php

Preflight PHP 8.4 runtime ve gerekli uzantıları kontrol eder, bir PHP sözlüğü süpürücükü çalışır ve PHPUnit paketini çalıştırır ve bu araçlar yüklü olduğunda PHPStan/Node checks çalışır. genişletilmiş kapı duman, temiz yükleme /schema ve tarayıcılar da çevreleri yapılandırılırken uç-to-end çekler içerir.

Bir atlanan çek bir geçiş değildir. Neden kullanılamaz, eksik bağımlılığı yüklemek veya serbest bırakmadan önce doğru CI /staging ortamında çalıştırmak.

Ürün kontrolleri

1. Authentication and role

Her amaçlanan rol olarak oturum açın; izin verilen sayfaları/actionları doğrulayın.

2. Widget ve takip

Özel bir tarayıcıda gerçek bir site gönderin; Beacon trafiği, Canlı Feed, ziyaretçi ve oturum kayıtlarını doğrulayın.

3. Chat ve AI

Temsilci soruları sorun; bilgi zeminini, güvenliği, escalation ve AI tarihini doğrulayın.

4. Biletleri

Oluşturun, cevap verin, tırmanın, yakın ve her etkinleştirilen alım yolu ile yeniden açın.

5. E-posta

Test outbound teslimat ve her bir kablo posta kutusu veya webhook yolu yapılandırıldı.

6. CRM ve analitik

kontrollü bir iletişim/deal /convers ve doğru panjurlar, eğlenceler, puanlama ve raporlar oluşturun.

7. ches

Bağlantı testleri, bir okuma, güvenli bir yazı /kuru koşmak ve her etkinleştirilen bağlantı için webhook/polling yolları.

8. API ve webhooks

Dar kapsamı, oran sınırları, idempotent yenidenrries, imzalar ve tekrarlama.

9. Cron

Ortak ürün programı çalıştırın ve Cron Build/Diagnostics'teki tüm gerekli kalpleri doğrulayın.

10 Güvenlik.

2FA, CSRF /session kontrollerini, denetim girişleri, anahtar geri çağırma ve çalışma alanı izolasyonunu onaylayın.

11. Yedekleme ve geri yükleme

Mevcut bir yedeklemeyi ayrı bir test ortamına geri yükleyin ve verileri ve yapılandırmayı doğrulayın.

12. Gözlemlenebilirlik ve geri dönme

Kayıtları / talepleri onaylayın, istek kimliklerini korur ve geri dönüş prosedürü kanıtlayın.

⚠️
Sadece gerekli her kapı ve iş-kahkahracı yolculuğundan sonra, kesin salıverme ve çevre için mevcut kanıtlar vardır.
Geliştirici

Web Push on üçüncü taraf sitelerde

Browser push bildirimleri (ayrıca dahil)OpsIQ Push Campaigns) SAME ORIGIN'den sayfa olarak servis edilen bir hizmet çalışanına ihtiyaç duyar.The Push CampaignS"OpsIQ widget yüklerinizi sizden OpsIQ Dağıtım, böylece üçüncü taraf bir site kayıt olamaz OpsIQ's işçisi doğrudan. Sitenin kendi domaini üzerinde küçük bir dosya orada itmelerini sağlamak için. Kampanyalar BOTH destekli yöntemlerle teslim edilir.

Nasıl çalışır
Web itBir OS tarzı iki teslimat yönteminin üzerinde bildirimde bulunur: yerleşik VAPID ve Pusher Beams.MağazanızAracınız bugün · 10% 'ı bekliyorşimdiYapılı -in (VAPID)Üçüncü parti yokHost One fileİtme IşıklarıHesabınızı kullanınİşçi Ev sahibine ev sahipliği yaptı
Web it

Neden bu gerekli

Tarayıcılar sadece bir sayfa kendi kökeninden hizmet çalışanı kaydetmesine izin verir. widget Yükler sizin için çapraz-origin OpsIQ Dağıtım, bu yüzden bir müşteri sitesinde çalışanı taksitle yükleyemezseniz, o sitenin kökenine ev sahipliği yapana kadar, widget sessizce atlar (hayır hatası, abonelik yok). Aşağıdaki iki seçeneğiniz var;OpsIQ Push Campaigns her ikisinden de yayınlar.

Seçenek A · Kendi kendine ev sahipliği Web Push (VAPID, üçüncü parti)

1. İşçiyi OpsIQ dağıtımından indirin: https://YOUR-OPSIQ/opsiq/opsiq-push-sw.js

2. Onu senin için Web kök Bu yüzden erişilebilir https://yoursite.com/opsiq-push-sw.js. The widget Bu yolu otomatik olarak ele alalım Sayfanın kendi kökeninde ve kayıtlarında, hiç bir parça değişikliği gerekli değildir. (Bu dar bir kapsamı kullanır, bu yüzden zaten çalıştırdığınız bir hizmet çalışanı asla değiştirmez.)

Seçmeli: Eğer standart olmayan bir yolda ev sahibi olmalısınız, widget'ı işaretle Daha önce daha önce daha önce Köprüler sadece aynıorigin olduğunda kabul edilir:

Seçmeli · sadece dosya web kökünde değilse
<script>window.OpsIQ=window.OpsIQ||{};window.OpsIQ.pushSwUrl="/custom/opsiq-push-sw.js";</script>

3. OpsIQ, VAPID anahtarlarını (Sesmeler → Müşteri Sohbeti AI → Gelişmiş → Web Push) Bu widget daha sonra bildirim izni için ziyaretçileri sorar ve abonelere abone olur.

Bir CDN /Cloudflare arkasında? emin olun /opsiq-push-sw.js HTTP geri döndürür 200 (Eğer olsaydı önbelleği becerin 404 Yüklemeden önce; bir önbellek 404 Blok kaydı bloke edecektir).

Seçenek B · Pusher Beams (managed sağlayıcı)

1. OpsIQ ayarları iter sağlayıcıyı ayarlamak için İtme Işıkları Ve Kirişlerinizi girin Örnek ID ve Gizli Anahtar.

2. Sitedeki Beams hizmet çalışanının kaynağında ev sahibi /service-worker.js. Kopya https://YOUR-OPSIQ/opsiq/pusher-beams-service-worker.jsBu çizgiyi mevcut kök işçinize ya da bir araya getirin:

Beams işçisi, https://yoursite.com/service-worker.js
importScripts("https://js.pusher.com/beams/service-worker.js");

3. Bu. The widget auto-loads the Beams SDK and subscribes each ziyaretçi to the per-site interest opsiq-site-<your-site-key>. Başka bir kabloya ihtiyaç duyulmadı.

Kampanyalar nasıl sağlanır

Push Campaigns Tarafından yayımlanır Her ikisi de her ikisine de her ikisini de Bir kerede yöntemler: Kendi kendine ev sahipliği yapan VAPID çalışanı, şifreli Web Push'u alır ve abone ziyaretçiler Beams tarafından yayımlanırlar. Her ziyaretçiye abone olduğu kadar ulaştınız, böylece başka yerlerde aynıorigin VAPIB çalıştırabilirsiniz ve diğerlerinde de çapraz-origin KirD'yi çalıştırabilirsiniz.

HTTPS gereklidir Servis işçileri ve Web Push (yerelhost test için muaftır) admin sohbet kutusu zaten operatör uyarıları için aynı Beams ilgi mekanizması kullanır.

Operasyon operasyonları

Sorun Giderme

Ortak konular ve onları nasıl düzeltin.

Genel

Blank sayfası+

PHP hatası loglarını kontrol edin. Causes: eski PHP (need 8.4+), eksik uzatma, DB bağlantısı başarısız oldu, yanlış dosya izinleri.

Dashboard sıfırlar gösteriyor+

Check: widget yüklü mi? Cron çalışıyor mu? Date aralığı doğru? IP dışlanmış mı?

- Evet.

AI yanıt vermiyor+

Check: sağlayıcı yapılandırıldı mı? API anahtar geçerli (se test bağlantısı)? Bütçe tükenmiş mi? Workspace AI configure doğru mu?

AI yanlış cevaplar verir+

Check: Bugüne kadar bilgi tabanı? Prompt net mi?© aramalar doğru verileri geri döndürür? AI History'de bir konuşma.

AI yavaş+

Bağımlı: sağlayıcı API hız, bağlam büyüklüğü (large KB = daha fazla jet = yavaş), ağ gecikmesi. Daha hızlı bir model deneyin.

İzleme

Widget eksik+

Check: Sayfa kaynağında senaryo? konsolda JS hataları? CSP bloke ediyor mu?

Bilinmeyen ülke+

GeoIP yapılandırılmadı. Cloudflare (otomatik) veya MaxMind GeoLite2 veritabanı kullanın.

Bilet biletleri Bilet Biletleri Bilet

E-postalar bilet oluşturmaz+

Check: posta kutusu bağlantılı mı? Cron çalışıyor? App şifre değişti? IMAP ayarları doğru mu?

Auto-reply çalışmıyor+

Check: etkinleştirildi mi? Bölüm izin verdi? AI yapılandırılmış mı? Cron koşmaya başladı?

Bağlayıcılar

Bağlantı başarısız oldu+

Check: Bilgileri doğru mu? Key süresiz mi? API sunucudan erişilebilir mi? Base URL Doğru mu?

Bağlanmış ama veri yok+

Check: API anahtar kapsamı? Webhook senkronizasyonu etkinleştirdi mi? Cron çalışır mı?

Performans

Yavaş sayfalar+

Check: veritabanı performansı (SHOW PROCESSLIST), PHP hafıza (asla toklanmak) 1GB), opcache etkinleştirin, tutma süresini azaltın.

Operasyon operasyonları

Widget'ı giriş ziyaret etmiyor

Bu odaklanmış kontrolyi, widget yüklerinin yanlış veya Live Feed boş kaldığı zaman kullanın.

Ne zaman, ne zaman widget'ı kayıt değildirSite anahtarını doğrulayın, sayfayı özel bir tarayıcıya yükleyin, tarayıcınız Ağı /Konsole panellerini bloke etmek veya widget talepleri için kontrol edin, İçerik-Güvenlik-Policy ve ad blokerler, siteyi onaylayın OpsIQ, ve açık Teşhisler. görünür bir sohbet balonu kendisi tarafından kabul edilmedi.

Referans

Parlak

OpsIQ boyunca kullanılan terimler için tanımlar.

Eylem

AI bir bağlantı veya platform aracılığıyla yapılabilir.

Ajan.

Sınırlı erişim veya bir AI ajanı olan bir ekip üyesi.

BYOK

Kendi Anahtarını getir, kendi AI API anahtarınızı sağlarsınız.

Connector

OpsIQ ile dış bir platform bütünleştirin.

CSAT

Müşteri Memnuniyet puanı.

Anlaşma anlaşması

CRM'de bir gelir fırsatı.

Bölüm

Kaybetmek ve erişim kontrolü için bir bilet kategorisi.

Ağırlaştırma

Bir bilet farklı bir bölüme veya AI'dan insana kadar hareket edin.

GeoIP

Ziyaretçi konumu, IP adresinden tespit.

Handoff

AI'dan insana bir konuşma aktarmak.

Kimlik token

Bir web sitesi ziyaretçisi tanımlamak için oturum açın.

Bilgi tabanı

AI’nın soruları cevaplaması için kullandığı makaleler.

Kurşun

Satın alma niyetini gösteren bir ziyaretçi.

Lead puan puanı

0-100 dönüşüm olasılığını gösteren sayı.

Yaşam döngüsü

Bir müşteri nerede: Başlayın, Prospect, Müşteri, Riskte Churned.

Yönetilen AI

AI, OpsIQ planınızın bir parçası olarak sağlanır.

Boru Hattı

Görsel anlaşma aşamaları kurulu.

RBAC

Rol tabanlı Access Control.

Oturum Sean

Bir süre içinde bir dizi sayfa görüş.

Site anahtar

Bir takip edilen web sitesi için eşsiz tanımlayıcı.

SLA

Servis Seviyesi Anlaşması, hedef yanıt süreleri.

Hediyelik

AI metni birimi. Kabaly 4 karakterler = 1 token.

Güven Katmanı

Güvenlik sistemi AI özerkliğini kontrol eder.

Webhook

HTTP olay bildirimleri için geri çağrır.

Widget

JavaScript kodu web sitenizde gömülüdür.

İş Alanı

Kendi izleme, AI, konektörleri ve ekibi ile bir site. Aynı şekilde "yer" olarak.

Referans

Daha fazla yardım alın

Bu belge sorunuza cevap vermezse:

AI Yöneticisi

Yöneticide "Ask OpsIQ" tıklayın. Bu belgeye ve platform verilerinize erişim sağlamaktadır.

Destek biletleri

Eklenen şey, ne oldu, beklediğiniz ve herhangi bir hata mesajı.

Email

Lisans anahtar ve sorun açıklaması ile e-posta desteği.

Etkili destek talepleri için ipuçları

Sayfayı ekleyin

Hangi yönetici sayfası (URL veya isim).

ayarı ekleyin

Exact ayar adı ve mevcut değeri.

Hatayı ekleyin

Kodlarla Exact hatası mesajı.

Adımları ekleyin

Ne yaptın, adım atarak.

Beklenmiş vs gerçek

Ne olması gerektiği gibi ne olmalıdır.

💡
İstekinizin daha spesifik olması, cevabın daha hızlı yapılması gerekir. "İş yapmaz" soruşturma gerektirir. "Insing Save on AI configure does error code 502" doğrudan bir cevap alır.