Developers
Cliedesk hooks and filters
Generated by npm run docs:hooks from the PHPDoc in cliedesk/src. Do not edit by hand.
Rules: filters that touch permissions may only narrow; hooks never receive secrets; hooks fire for every actor
(people, rules, API, CLI); heavy listeners should queue a job. With WP_DEBUG on, Settings → Health → Hooks
lists the callbacks attached to each hook.
73 actions, 187 filters.
cliedesk_2fa_adapter (filter)
The 2FA plugin Cliedesk can ask (null = none).
string|null $foundAdapter name.
Fired in: src/Modules/Security/TwoFactor.php
cliedesk_2fa_static_checks (filter)
Static 2FA checks [class, method] called with the user id (plugin classes are looked up by name: none of them is a dependency).
Fired in: src/Modules/Security/TwoFactor.php
cliedesk_account_verification_sender (filter)
Sender of the account verification email. WordPress and WooCommerce have none; a plugin that verifies account emails returns a callable fn( WP_User $user ): true|WP_Error that sends its email again.
callable|null $senderSender.
Fired in: src/Modules/Commerce/Account/AccountActions.php
cliedesk_action_executed (action)
Fires after an Action committed.
string $nameAction name.Actor $actorActor.array $inputInput.array<mixed> $dataResult data.
Fired in: src/Actions/ActionRegistry.php
cliedesk_action_gate (filter)
Gate an Action run (Pro: AI autonomy, approvals, capability ceilings). Return an ActionError to stop.
ActionError|null $errorNull to continue.Action $actionAction.Actor $actorActor.
Fired in: src/Actions/ActionRegistry.php
cliedesk_action_result (filter)
Adjust an Action’s result for the actor (PII masking for people without cliedesk_view_pii).
array<mixed> $dataResult data.Action $actionAction.Actor $actorActor.
Fired in: src/Actions/ActionRegistry.php
cliedesk_admin_bar_alert (filter)
A short alert about the open conversations assigned to a person, shown as a dot with this text for screen readers (Pro: “an SLA target is at risk”); ‘’ for none. Do not read tables the background install creates before Plugin::installed().
string $alertAlert text.int $userUser.
Fired in: src/Modules/Inbox/AdminBar.php
cliedesk_agent_schedules (filter)
The schedules of an agent’s working hours (open while any is open); Free: the default schedule.
int $userUser.
Fired in: src/Modules/Sla/Schedules.php
cliedesk_agent_status (filter)
A user’s status as the API shows it (Pro: custom status, label, end time, automatic flag, channels).
int $userUser.
Fired in: src/Modules/Team/AgentStatuses.php
cliedesk_agent_status_changed (action)
An agent’s status changed: routing, automation and Pro listen.
int $userUser.AgentStatus $statusNew status.
Fired in: src/Modules/Team/AgentStatuses.php
cliedesk_agent_understands (filter)
Whether an agent reads a language without translation.
bool $understandsFrom the profile.int $userAgent.string $languageLanguage.
Fired in: src/Modules/Team/Profiles.php
cliedesk_app_allowed_handles (filter)
Extra script/style handles kept on app routes.
string[] $handlesHandles.
Fired in: src/App/Shell.php
cliedesk_app_enqueue (action)
Enqueue Pro (or extension) bundles after the app (handles must start with cliedesk).
string $pathApp path.
Fired in: src/App/Assets.php
cliedesk_app_manifest (filter)
The agent app’s web manifest: name, colours, icons.
Fired in: src/App/Pwa.php
cliedesk_app_replace_csp (filter)
Whether the /desk page replaces other Content-Security-Policy headers with its own (return false to keep them).
bool $replaceReplace.
Fired in: src/App/Shell.php
cliedesk_app_shell (action)
Fires when an app response is being prepared.
string $pathApp path.
Fired in: src/App/Shell.php
cliedesk_app_slug (filter)
Last-chance override of the app slug (agency setups). Must pass the slug format.
string $slugSlug.
Fired in: src/App/Urls.php
cliedesk_app_worker (filter)
More service worker code (Web Push for agents).
string $codeJavaScript.
Fired in: src/App/Pwa.php
cliedesk_article_changed (action)
An article’s content or visibility changed.
int $postPost id.
Fired in: src/Modules/Knowledge/Articles.php
cliedesk_article_feedback_negative (action)
A reader said an article did not help: rules, owner tasks.
int $postArticle.string $reasonReason key or ‘’.
Fired in: src/Modules/Knowledge/Feedback.php
cliedesk_article_listable (filter)
Visibility levels the current visitor may see in lists and search. Cliedesk Pro adds logged_in for signed-in visitors.
string[] $outLevels.
Fired in: src/Modules/Knowledge/Articles.php
cliedesk_article_visibilities (filter)
Visibility levels of help articles, from the least to the most strict. Cliedesk Pro adds unlisted (link: opens by its link, never listed) and logged_in (sign_in: customers sign in to read it). A stored level missing from this list counts as internal.
Fired in: src/Modules/Knowledge/Articles.php
cliedesk_ask_block_html (filter)
The Ask block’s HTML: Cliedesk Pro renders it; Free renders nothing for customers.
string $htmlHTML (‘’ without Pro).
Fired in: src/Modules/Knowledge/Authoring.php
cliedesk_automation_actions (filter)
Actions rules may run: name => [label, conversation id input key, fixed input, customer-visible].
Fired in: src/Modules/Automation/Catalog.php
cliedesk_automation_contact_actions (filter)
Actions contact rules may run: name => [label, contact id input key, fixed input, customer-visible].
Fired in: src/Modules/Automation/Catalog.php
cliedesk_automation_default_recipes (filter)
First-run default recipes (keys). Pro adds the inactivity ladder.
string[] $keysRecipe keys.
Fired in: src/Modules/Automation/Recipes.php
cliedesk_automation_event_name (filter)
Trigger event name for other timeline events (null: none).
string|null $nameEvent name.string $typeTimeline type.
Fired in: src/Modules/Automation/Catalog.php
cliedesk_automation_recipes (filter)
Recipes: key => [name, description, rules [[name, definition]]]. Pro adds recipes with its steps.
Fired in: src/Modules/Automation/Recipes.php
cliedesk_automation_run_failed (action)
A rule run failed.
int $runRun id.string $errorMessage.
Fired in: src/Modules/Automation/Engine.php
cliedesk_automation_subscribed (filter)
Whether a live workflow subscribes to an automation event (the automation module answers).
bool $subscribedSubscribed.string $nameEvent name.
Fired in: src/Actions/ActionContext.php
cliedesk_automation_triggers (filter)
Automation triggers: event name => [label, group]. Modules and Pro add theirs (Pro: time, schedule, WordPress hook and widget script triggers).
Fired in: src/Modules/Automation/Catalog.php
cliedesk_boot_data (filter)
Extend the boot payload. Never add secrets: the result is re-validated and refused when it contains credential-like values.
Fired in: src/App/Boot.php
cliedesk_brand_identity (filter)
Identity values of a product before they are formatted (Pro: the product’s overrides).
array $baseIdentity values (snake_case keys) and overridden (the field names a product overrides).array $productProduct row.
Fired in: src/Modules/Workspace/Brands.php
cliedesk_browser_storage (filter)
What Cliedesk keeps in the visitor’s browser, for cookie-policy plugins. Cliedesk sets no cookies of its own; signed-in customers use the WordPress login cookies.
Fired in: src/Modules/Widget/CustomerSessions.php
cliedesk_bulk_job_purging (action)
A bulk job is about to be deleted (handlers remove result files).
Fired in: src/Infrastructure/Bulk/BulkJobs.php
cliedesk_card_attributes (filter)
Built-in card attributes (extensions add theirs, e.g. Woo lifetime value or LMS courses).
string $contextcontact | organization.
Fired in: src/Modules/Crm/CardLayout.php
cliedesk_checklist_verify (filter)
Whether a verifiable checklist fact holds for a conversation (e.g. woo_refund_exists).
bool $holdsHolds.string $verify_keyVerification key.
Fired in: src/Modules/Conversations/Checklists.php
cliedesk_collision_pause (filter)
Whether this user’s sends pause when something new arrived while composing.
bool $pauseWorkspace default.int $user_idUser.
Fired in: src/Modules/Conversations/ConversationActions.php
cliedesk_commerce_step_actions (filter)
Commerce Actions that macros and rules may run as steps: name => label. Pro adds refund, cancel, reship, coupon and subscription actions; their guardrails and approvals still apply when they run.
Fired in: src/Modules/Commerce/Library/CommerceActions.php
cliedesk_contact_block_changed (action)
A contact was blocked or unblocked: the blocked list keeps who, when and why.
int $contactContact.bool $blockedBlocked.int|null $userWho.
Fired in: src/Modules/Contacts/ContactActions.php
cliedesk_contact_chat_available (filter)
Is chat offered now (business hours, agents online, closures, the widget’s audience)?
bool $availableAvailable.int|null $productProduct whose hours apply (its help center or the block’s product), or null.
Fired in: src/Modules/Knowledge/Authoring.php
cliedesk_contact_condition (filter)
Compile a contact condition from an extension (Woo metrics, WordPress meta, Pro). Return an SQL fragment over contacts ct built only from escaped values, or null when the field is not yours.
string|null $sqlSQL.Actor $actorActor.
Fired in: src/Modules/Crm/ContactFilter.php
cliedesk_contact_created (action)
A contact was created (user policy, duplicate checks).
int $idContact.string $sourceinbound | manual.
Fired in: src/Modules/Contacts/Contacts.php
cliedesk_contact_erased (action)
A person’s data was erased (webhooks send contact.erased, Pro erases AI data).
int[] $contactsContacts.string $whatconversations | contact.bool $deleteDelete mode.
Fired in: src/Modules/Security/Privacy.php
cliedesk_contact_external_notes (filter)
Read-only notes about a contact from other plugins (notes customers left on their WooCommerce orders). Each: source, id, title, text, date.
int $contactContact id.Actor $actorViewer.
Fired in: src/Modules/Contacts/NoteActions.php
cliedesk_contact_is_presales (filter)
Whether a contact is pre-sales (shows the qualification block). Commerce modules return false for buyers.
bool $presalesDefault: guests (no WordPress account).
Fired in: src/Modules/Crm/Qualification.php
cliedesk_contact_profile (filter)
Extra profile sections (Woo LTV and orders, subscriptions, memberships, courses, device, UTM). Each section: {key, label, items: [{label, value}]}. A section whose key matches a card attribute added through cliedesk_card_attributes is shown on the customer card for that attribute.
Actor $aViewer.
Fired in: src/Modules/Crm/ProfileActions.php
cliedesk_contact_value (filter)
A customer’s value (e.g. lifetime spend from a commerce integration) for feature-request demand.
float|null $valueValue, or null when unknown.int $contactContact id.
Fired in: src/Modules/Inbox/FeatureRequests.php
cliedesk_conversation_assigned (action)
A conversation got a new assignee (notifications).
Actor $actorWho assigned.
Fired in: src/Modules/Conversations/Conversations.php
cliedesk_conversation_created (action)
A conversation was created (inside its transaction): modules add what belongs to it from the start, e.g. inherited tags.
Actor $actorActor.
Fired in: src/Modules/Conversations/Conversations.php
cliedesk_conversation_form (action)
A new conversation’s type form values: the Fields module checks and saves them; an ActionError rolls the create back.
Actor $aActor.
Fired in: src/Modules/Conversations/ConversationActions.php
cliedesk_conversation_purging (action)
A conversation is about to be deleted for good (attachments, Pro data and other modules clean up).
Fired in: src/Modules/Conversations/Conversations.php
cliedesk_conversation_scope (filter)
Conversation scope of a user: all, teams, mine_unassigned, mine or participant. The team module answers from the user’s roles and per-user override.
string $scopeScope.int $user_idUser.
Fired in: src/Modules/Conversations/ConversationScope.php
cliedesk_conversation_screen (filter)
Screen a new inbound conversation before it is created. Return null to let it in unchanged, or {action, reason, detail, set} where action is quarantine, drop (refuse it), group (add the message to conversation into) or sort (set only: queueId, teamId, priority, productId, tagIds, fields).
Fired in: src/Modules/Conversations/Conversations.php
cliedesk_conversation_sorted (action)
Arrival rules sorted a new conversation: modules apply what they own (tags, fields).
Actor $actorActor.
Fired in: src/Modules/Conversations/Conversations.php
cliedesk_conversation_type_changed (action)
The type of a conversation changed (checklists attach, SLA re-evaluates).
Actor $actorActor.
Fired in: src/Modules/Conversations/Types.php
cliedesk_conversation_type_created (action)
A conversation type (request form) was added.
int $idType.string $nameName.
Fired in: src/Modules/Conversations/Types.php
cliedesk_csat_attribution (filter)
Who a survey answer counts for: {primary, users, ai}.
int $episodeEpisode.
Fired in: src/Modules/Csat/Surveys.php
cliedesk_csat_exclude (filter)
Whether an eligible episode is excluded from CSAT (tags, segments, brands, contacts…).
string|null $reasonReason, or null to keep it.int $episodeEpisode.
Fired in: src/Modules/Csat/Surveys.php
cliedesk_csat_for_conversation (filter)
CSAT for this conversation from its channel (channel matrix): true, false, or null for the product’s setting.
bool|null $onOn.int $conversationConversation.
Fired in: src/Modules/Csat/Surveys.php
cliedesk_csp_sources (filter)
Extra CSP sources per directive (connect-src, img-src, frame-src, script-src, form-action, media-src).
Fired in: src/App/Shell.php
cliedesk_customer_alias (filter)
A customer-facing name and picture for a person in a product’s conversations (Pro: per brand).
array|null $aliasName and avatar (picture URL), null for the person’s own alias.int $userUser.int|null $productProduct of the conversation.
Fired in: src/Modules/Conversations/Assistant.php
cliedesk_customer_notice (filter)
Deliver a customer notice on the contact’s preferred channel (browser push in Free, WhatsApp or SMS with Pro). Return true when delivered; email is the fallback.
bool $sentDelivered already.string $textNotice.
Fired in: src/Modules/Email/StatusNotices.php
cliedesk_customer_sessions_ended (action)
All widget and portal sessions of a customer were ended, e.g. so an add-on can end its own.
int $contactContact.
Fired in: src/Modules/Widget/CustomerSessions.php
cliedesk_customer_timeline_types (filter)
Event namespaces shown in the customer timeline.
string[] $namespacesNamespaces (a type matches “ns” exactly or starts with “ns.”).
Fired in: src/Modules/Crm/CustomerEvents.php
cliedesk_dash_request (action)
Fires for each /desk page request of a signed-in user with access (auth.dash_login).
int $user_idUser.
Fired in: src/App/AppRouter.php
cliedesk_deactivate (action)
Fires on deactivation before rewrite rules are flushed.
Fired in: src/Core/Installer.php
cliedesk_default_post_send (filter)
The workspace’s default choice of the send button when no team sets one.
string $defaultsend | resolve | wait | snooze.
Fired in: src/Modules/Composer/Drafts.php
cliedesk_dns_lookup (filter)
Answer a DNS lookup instead of dns_get_record() (tests; hosts with their own resolver).
string[]|null|false $recordsFalse to do the real lookup.string $nameName.string $typeTXT | MX.
Fired in: src/Modules/Email/Deliverability.php
cliedesk_duplicate_candidates (filter)
More duplicate candidates for a contact (Woo order email, Pro AI fuzzy matching).
array $rowContact row.
Fired in: src/Modules/Contacts/Duplicates.php
cliedesk_email_before_send (filter)
The email as it leaves, after the suppression check (not in redirect mode). Pro adds the hidden archive copy. Changes are not stored with the row.
OutboundMessage $messageMessage.
Fired in: src/Modules/Email/Outbox.php
cliedesk_email_from_email (filter)
The sender address of the test email: the sender address in the email settings, like replies.
string $emailEmail.
Fired in: src/Modules/Email/EmailActions.php
cliedesk_email_settled (action)
An outbox row was sent, failed, held or cancelled.
Fired in: src/Modules/Email/Outbox.php
cliedesk_email_template (filter)
A customer email wrapped in its brand layout: change the HTML or the text part.
int|null $brandBrand.
Fired in: src/Modules/Email/EmailLayouts.php
cliedesk_enrich_conversation (action)
Enrich a conversation before any rule runs: Pro writes AI triage values here.
int $conversationConversation.string $textText read.bool $createdNew conversation.
Fired in: src/Modules/Fields/Enrichment.php
cliedesk_entity_record (filter)
Link an entity value to its record: return the value to store instead (e.g. a record reference {source, id} for a record field), or null to store the text.
mixed $recordNull.string $entityEntity key.string $valueValue found.int $conversationConversation.
Fired in: src/Modules/Fields/Entities.php
cliedesk_event_{type} (action)
After an event is committed, one action per event type: dots and other signs become underscores (cliedesk_event_conversation_status_changed).
int $idEvent id.array<string, mixed> $rowEvent row.
Fired in: src/Infrastructure/EventRecorder.php
cliedesk_event_recorded (action)
Fires after an event is committed (webhooks, notifications, Pro listeners).
int $idEvent id.string $typeEvent type.
Fired in: src/Infrastructure/EventRecorder.php
cliedesk_event_written (action)
An event was written, inside the change’s transaction (automation outbox). Listeners do DB work only.
int $idEvent id.string $typeEvent type.
Fired in: src/Infrastructure/EventRecorder.php
cliedesk_field_mode (filter)
What a person may do with a field (Pro: hidden or read-only per role or team). Never called for system and rule actors, people who manage settings, or fields Free already hides from the person; an unknown answer counts as edit.
string $modeedit | readonly | hidden.Actor $actorActor.
Fired in: src/Modules/Fields/FieldAccess.php
cliedesk_field_option_tags (action)
Option tags to add and remove on an entity.
EntityType $scopeEntity type.int $entityEntity id.int[] $addTag ids to add.int[] $removeTag ids to remove.int|null $userWho changed the field.
Fired in: src/Modules/Fields/Fields.php
cliedesk_field_references (filter)
References to a field (rules, views, forms, macros).
int $idField id.
Fired in: src/Modules/Fields/Fields.php
cliedesk_field_settings_schema (filter)
Extra field settings an extension stores in settings (Pro: access, hidden and read-only per role or team): name => JSON schema. Free’s own settings cannot be replaced. Added before the fields module registers its Actions.
Fired in: src/Modules/Fields/FieldActions.php
cliedesk_field_values_changed (action)
Field values changed (inside the caller’s change). The computed priority follows urgency and sentiment.
EntityType $scopeScope.int $entity_idEntity.int $sourceSource.
Fired in: src/Modules/Fields/Fields.php
cliedesk_fields_changed (action)
Field definitions changed (record sources built from them refresh).
Fired in: src/Modules/Fields/Fields.php
cliedesk_file_can_download (filter)
Whether a signed-in user may download a private file (attachments add conversation access checks).
bool $allowedAllowed.int $userUser.
Fired in: src/Infrastructure/Files/FileLinks.php
cliedesk_file_contents (filter)
The bytes of a stored file whose local copy is gone (kept by another storage). Null when unknown.
string|null $contentsBytes.
Fired in: src/Infrastructure/Files/PrivateFiles.php
cliedesk_file_deleted (action)
A file was deleted (its local copy removed and its row marked deleted). Other storage removes its copy.
Fired in: src/Infrastructure/Files/PrivateFiles.php
cliedesk_file_quarantined (action)
A file was quarantined.
int $idAttachment.string $signatureMalware name.
Fired in: src/Modules/Conversations/MessageFiles.php
cliedesk_file_stored (action)
A file’s bytes were written to the private directory (a new file, or a file rewritten in place such as a redacted text file). Other storage may copy it.
Fired in: src/Infrastructure/Files/PrivateFiles.php
cliedesk_file_stream (filter)
Serve a file from other storage after the signature and access checks: return true once the answer (the file, a redirect to a short-lived link or an error) was sent. False lets Cliedesk stream its local copy.
bool $handledWhether the answer was sent.string|null $pathLocal path.
Fired in: src/Infrastructure/Files/FileLinks.php
cliedesk_focus_next (filter)
The conversation number an agent in focus mode opens next, or null (Pro: Get next).
int|null $numberConversation number.\Cliedesk\Actions\Actor $actorAgent.
Fired in: src/Modules/Inbox/InboxModule.php
cliedesk_freemail_domains (filter)
Free-mail domains that never map to an organization.
string[] $domainsDomains.
Fired in: src/Modules/Contacts/Organizations.php
cliedesk_help_category_ids (filter)
Categories this page may show (Pro: a product’s help center), null for all.
int[]|null $idsCategory ids.
Fired in: src/Modules/Knowledge/HelpCenter.php
cliedesk_help_center_open (filter)
Whether the current visitor may use the help center. Free: always; Cliedesk Pro answers it for a private help center (signed-in visitors, some roles or a shared password).
bool $openOpen.
Fired in: src/Modules/Knowledge/HelpCenter.php
cliedesk_help_center_public (filter)
Whether the help center is open to everyone, guests and search engines included. Free: always; false makes every help-center page noindex and leaves it out of the sitemap (Cliedesk Pro).
bool $publicPublic.
Fired in: src/Modules/Knowledge/HelpCenter.php
cliedesk_help_page_product (filter)
The product of the help-center page or article being shown (Pro), null for none.
int|null $productProduct.
Fired in: src/Modules/Knowledge/Authoring.php
cliedesk_help_product_categories (filter)
Help-center categories a product’s search covers (Pro); null for every category.
int[]|null $categoriesCategory ids.int $productProduct.
Fired in: src/Modules/Knowledge/KnowledgeModule.php
cliedesk_help_search_action (filter)
Where the help-center search goes (Pro: a product’s help center searches itself).
string $urlHelp-center home.
Fired in: src/Modules/Knowledge/HelpCenter.php
cliedesk_help_suggestions (filter)
Article suggestions for what a customer types, best first: articles of matching URL rules, then keyword matches. Not called when the text has a suppress word. A filter may rank them again, add others or return none (to suppress); only published articles the visitor may read are kept, at most 3. Each item keeps the extra keys the filter adds; Free sets its title and address.
array[] $itemsSuggestions (id, title, url).string $textThe typed text.string $pageThe page address.int[] $rulesArticle ids of the URL rules that match the page.
Fired in: src/Modules/Knowledge/KnowledgeModule.php
cliedesk_help_template_markup (filter)
Block markup of a help-center template (Site Editor changes to block templates still win).
string $markupBlock markup.string $kindhome | category | article.
Fired in: src/Modules/Knowledge/HelpCenter.php
cliedesk_identity_added (action)
An identity was added to a contact (organization domain mapping).
int $contact_idContact.IdentityType $typeType.string $normNormalised value.
Fired in: src/Modules/Contacts/Contacts.php
cliedesk_inbox_items (filter)
List items of the inbox and search results (Pro: the SLA state and next due time for the badge). Items and conversation rows have the same keys.
Fired in: src/Modules/Inbox/Inbox.php
cliedesk_inbox_sorts (filter)
More list sorts: key => [direction ASC|DESC, columns of conversations ending with id, read from a lane index]. Built-in keys cannot be replaced. Added before the inbox module registers (its Actions list the sorts).
Fired in: src/Modules/Inbox/Keyset.php
cliedesk_is_uploaded_file (filter)
Accept a file path as an upload (tests only).
bool $isWhether it is an upload.string $tmpPath.
Fired in: src/Modules/Requests/RequestApi.php
cliedesk_kb_seo_plugin_active (filter)
Whether an SEO plugin outputs help-center meta (Cliedesk then outputs none).
bool $activeDetected.
Fired in: src/Modules/Knowledge/Seo.php
cliedesk_knowledge_search_results (filter)
Results of a help article search, best first: the public help search (surface help) and the agents’ knowledge.search Action (surface agent). A filter may rank them again or add hits of the same shape; it must keep to what the searcher may read (the levels in the context).
array[] $foundHits (id, source, ref, title, url, excerpt, visibility, …).string $queryThe search words.array $contextsurface (help or agent), audience (customer or agent), levels (visibility levels the searcher may read), product (id or null), lang, limit, actor (agent surface only).
Fired in: src/Modules/Knowledge/HelpCenter.php, src/Modules/Knowledge/KnowledgeModule.php
cliedesk_knowledge_search_sources (filter)
Index sources a keyword search covers (WooCommerce adds product).
string $audienceagent (knowledge panel) or customer (help search).
Fired in: src/Modules/Knowledge/KnowledgeModule.php
cliedesk_language_coverage (filter)
Content missing a language, per surface (help center articles, email templates, widget texts …).
string $codeLanguage code.
Fired in: src/Modules/Workspace/Languages.php
cliedesk_lockdown_changed (action)
Lockdown changed: pause or resume webhooks, Public API writes, AI autonomy and the widget.
bool $onOn.
Fired in: src/Modules/Security/Lockdown.php
cliedesk_login_protection (filter)
Whether a plugin limits failed logins and enforces password strength.
bool $foundFound.
Fired in: src/Modules/Security/Score.php
cliedesk_login_protection_classes (filter)
Class names of login-protection plugins to look for.
string[] $classesClass names.
Fired in: src/Modules/Security/Score.php
cliedesk_macro_step (filter)
The Action of an extension’s macro step type (see cliedesk_macro_step_types): [action name, input] or null.
int $conversationConversation.Actor $actorAgent.
Fired in: src/Modules/Macros/Runner.php
cliedesk_macro_step_types (filter)
Extra macro step types (lower snake case), e.g. Pro’s “Send a CSAT survey”.
string[] $typesTypes.
Fired in: src/Modules/Conversations/ConversationActions.php
cliedesk_malware_scan (filter)
Scan with another engine: return {status, signature} to skip ClamAV, or null.
string $contentBytes.
Fired in: src/Infrastructure/Files/MalwareScanner.php
cliedesk_marketing_consent (filter)
Marketing consent known to other plugins (read-only in the helpdesk).
string $emailPrimary email.
Fired in: src/Modules/Crm/Preferences.php
cliedesk_mentioned (action)
People were mentioned in a note (each once per message). The notification centre delivers it.
int[] $usersRecipients.Actor $actorAuthor.
Fired in: src/Modules/Composer/Mentions.php
cliedesk_message_added (action)
A message was written (inside the transaction). The composer turns @mentions into participants.
Actor $actorAuthor.
Fired in: src/Modules/Conversations/Conversations.php
cliedesk_message_adding (action)
A message is about to be written (inside the transaction). Throw an ActionError to refuse it (blocked links).
Actor $actorActor.
Fired in: src/Modules/Conversations/Conversations.php
cliedesk_message_file_content (filter)
The content of a message attachment just before it is stored privately: Cliedesk redacts personal data in text files (txt, csv, log, …) by the “redact” PII rules. Return the bytes to store.
string $contentBytes.string $nameFile name.string $mimeSniffed MIME type.
Fired in: src/Modules/Conversations/MessageFiles.php
cliedesk_message_files (action)
Files uploaded for this message (MessageFiles binds them; an unknown id rolls the message back).
int $messageMessage id.int[] $idsAttachment ids.
Fired in: src/Modules/Conversations/ConversationActions.php
cliedesk_message_items (filter)
API messages of a page (message files add their attachments).
Fired in: src/Modules/Conversations/Conversations.php
cliedesk_message_queued (action)
A reply left the undo window or its schedule and is queued for delivery (the outbound transport, picks it up).
Fired in: src/Modules/Conversations/Conversations.php
cliedesk_message_store (filter)
A message’s body and meta just before they are stored: Cliedesk redacts card numbers and other PII here, Cliedesk adds the spam score of customer messages. Return the same keys.
Fired in: src/Modules/Conversations/Conversations.php
cliedesk_message_withdrawn (action)
A held reply was taken back; the composer puts its text back into the author’s draft.
string $reasonReason.
Fired in: src/Modules/Conversations/Conversations.php
cliedesk_modules_registered (action)
Fires after all modules are registered.
string[] $activeIds of active modules.
Fired in: src/Core/ModuleRegistry.php
cliedesk_my_status (filter)
My status for the header menu (Pro: the custom statuses I may pick, Away reasons, idle minutes, channels).
int $userUser.
Fired in: src/Modules/Team/StatusActions.php
cliedesk_note_body (filter)
The text of a stored note as people read it (the reverse of cliedesk_note_store).
string $bodyStored text.
Fired in: src/Modules/Contacts/Notes.php
cliedesk_note_store (filter)
The text of a note as it is stored (for example encrypted and bound to the note). cliedesk_note_body turns it back on read.
string $bodyClean text.int $noteNote id.
Fired in: src/Modules/Contacts/Notes.php
cliedesk_notice_promotional (filter)
Whether a transactional notice’s text is promotional; promotional notices are rejected.
bool $hitBuilt-in verdict.string $textSubject and text.
Fired in: src/Modules/Commerce/Woo/OrderNotices.php
cliedesk_notices_showing (filter)
The service notices showing now on a surface (NTC): rows from the Notices module, plus any a plugin adds.
string $surfacewidget, portal or app.int|null $productProduct, or null for all.
Fired in: src/Modules/Portal/PortalApi.php, src/Modules/Widget/WidgetApi.php
cliedesk_notification_content (filter)
The content of a notification before it is stored and emailed. Return an empty array to send nothing.
string $kindKind.int $userRecipient.
Fired in: src/Modules/Notifications/Notifications.php
cliedesk_notification_created (action)
An in-app notification was stored (Web Push to the person’s devices).
int $idNotification.int $userUser.string $kindKind.
Fired in: src/Modules/Notifications/Notifications.php
cliedesk_notification_email_reply (filter)
The reply address and hint of a notification email (Pro: the agent answers the email and the answer goes to the conversation). Free: none, the agent answers in Cliedesk.
\WP_User $personRecipient.
Fired in: src/Modules/Notifications/Notifications.php
cliedesk_notify (action)
Notify a user (delivers in-app, push and email notifications).
int $userUser.string $typeNotification type.
Fired in: src/Modules/Conversations/Conversations.php, src/Modules/Conversations/ParticipantActions.php, src/Modules/Crm/CrmModule.php, src/Modules/Crm/OwnerAlerts.php, src/Modules/Fields/RiskSignals.php, src/Modules/Knowledge/Editorial.php
cliedesk_order_help_topics (filter)
Topics customers pick when they ask for help with an order.
Fired in: src/Modules/Commerce/Woo/PortalOrders.php
cliedesk_order_issue_scenarios (filter)
Issue scenarios customers can report on an order in the portal.
Fired in: src/Modules/Commerce/Woo/PortalOrders.php
cliedesk_order_tracking (filter)
The tracking of an order for tokens and notices: number, url (http/https) and eta (text). Tracking plugins answer here.
\WC_Order $orderOrder.
Fired in: src/Modules/Commerce/Woo/OrderTokens.php
cliedesk_org_health (filter)
Organization page figures; the CSAT module fills csat (0–100) and commerce fills revenue ({total, currency, orders}).
int $orgOrganization.Actor $actorViewer.
Fired in: src/Modules/Crm/OrgHealth.php
cliedesk_organization_list_where (filter)
More conditions on the organization list (alias o), e.g. Cliedesk hides organizations of a deactivated B2B plugin.
string[] $whereSQL conditions.
Fired in: src/Modules/Contacts/Organizations.php
cliedesk_organization_saved (action)
An organization was created or changed (committed).
int $idOrganization.
Fired in: src/Modules/Contacts/Organizations.php
cliedesk_organization_sources (filter)
Organization sources: key => {label, active, companies}. companies returns a list of {id, name, users (WordPress user ids)}.
Fired in: src/Modules/Contacts/OrgSources.php
cliedesk_page_viewed (action)
A known customer viewed a page (owner alerts for watched pages).
int $contactContact.string $urlPage address.
Fired in: src/Modules/Widget/Visitors.php
cliedesk_panel_adaptive (filter)
Whether an adaptive mode (Pro) picks and expands cards by itself.
bool $adaptiveAdaptive.
Fired in: src/Modules/Inbox/ContextRules.php
cliedesk_pii_redact (filter)
Text about to be stored that may hold personal data: Cliedesk applies the “redact” PII rules (card numbers keep their last 4 digits). Here: a new conversation’s subject.
string $textText.string $whereWhat it is: subject, field, email_subject.
Fired in: src/Modules/Conversations/Conversations.php, src/Modules/Requests/Intake.php
cliedesk_policy_can (filter)
Narrow a capability decision. May only return false for an allowed decision; a true return for a denied decision is ignored.
bool $allowedDecision.Actor $actorActor.string $capabilityCapability.
Fired in: src/Actions/Policy.php
cliedesk_policy_flushed (action)
Roles, teams or grants changed: per-request caches built from them must be rebuilt.
Fired in: src/Actions/Policy.php
cliedesk_poll_after (filter)
Seconds the client should wait before the next poll.
int $secondsSeconds.
Fired in: src/Rest/RestServer.php
cliedesk_portal_config (filter)
The portal page’s script configuration (WooCommerce adds the order hub as orders).
string $productProduct slug the portal is limited to (‘’ = all).
Fired in: src/Modules/Portal/PortalModule.php
cliedesk_priority_inputs (filter)
More priority inputs: customer value, order risk, Pro’s SLA proximity … as [points, reason].
int $conversationConversation.
Fired in: src/Modules/Fields/PriorityScore.php
cliedesk_pro_state (filter)
Pro reports its state here (installed, active, compatible, licensed, status, …). Frozen contract.
Fired in: src/Extension/ProState.php
cliedesk_processing_records (filter)
Rows of the record of processing (modules and Pro add their data).
Fired in: src/Modules/Security/Compliance.php
cliedesk_product_brand (filter)
The brand a product uses (Pro): the default brand unless an extension knows better.
int|null $idDefault brand id.int|null $brand_idThe product’s brand_id column (set by Pro).
Fired in: src/Modules/Workspace/Brands.php
cliedesk_product_created (action)
A product was created (Pro: “copy settings from” another product).
int $idProduct.
Fired in: src/Modules/Workspace/Actions/ProductCreate.php
cliedesk_product_detail (filter)
The full form of a product (Pro adds its per-product setups: brand overrides, help scope, schedule).
Fired in: src/Modules/Workspace/Products.php
cliedesk_product_input (filter)
Columns, settings and field errors from the input keys an extension added (Pro’s per-product setups).
array $parsedSo far: columns, settings and errors (field => message).array $inputValidated input.
Fired in: src/Modules/Workspace/ProductFields.php
cliedesk_product_merge_tables (filter)
Add tables with a product_id that must follow a product merge (e.g. Pro access records). Each entry: short table name => [‘pk’ => columns, ‘unique’ => other columns of a unique key with product_id].
Fired in: src/Modules/Workspace/ProductMerge.php
cliedesk_product_properties (filter)
Product input properties (Pro: brand, identity overrides, help scope, schedule, copy settings). Read while the product Actions register, so an extension adds it before Free’s modules register.
string $modecreate | update.
Fired in: src/Modules/Workspace/ProductFields.php
cliedesk_protected_attribute_blocked (action)
An unsigned attempt to change a protected attribute was ignored.
string $keyField key.EntityType $scopeScope.int $entity_idEntity.
Fired in: src/Modules/Fields/Fields.php
cliedesk_push_hide_content (filter)
Whether a push notification hides the message text (the person’s own choice by default).
bool $hideHide.int $userUser.
Fired in: src/Modules/Notifications/Push.php
cliedesk_queue_concurrency (filter)
Concurrency per queue (Cliedesk-enforced, shared by Free and Pro jobs).
int $capSlots.string $queueQueue.
Fired in: src/Infrastructure/Jobs/Jobs.php
cliedesk_queue_orders (filter)
Queue orders: order => list sort (a key of Keyset::sorts()); the first one is the default. Added before the inbox module registers (the queue Actions list them).
Fired in: src/Modules/Inbox/Queues.php
cliedesk_reassign_open_conversations (filter)
Move a leaving agent’s open conversations (the conversations module does it).
int $movedMoved so far.int $userLeaving agent.Actor $aWho deactivates.
Fired in: src/Modules/Team/PeopleActions.php
cliedesk_reconcile (action)
Fires every 5 minutes in the reconciler (modules recover expired leases here).
Fired in: src/Infrastructure/Jobs/CoreJobs.php
cliedesk_record_exists (filter)
Whether a record of a record source exists (record sources answer).
bool $existsExists.string $sourceSource key, e.g. woo_order.int $idRecord id.
Fired in: src/Modules/Fields/Fields.php
cliedesk_record_linked (action)
A record was linked: timelines, automations and the AI context can react.
string $entityEntity key.int $idEntity id.string $sourceSource key.string $recordRecord id.Actor $actorActor.
Fired in: src/Modules/Commerce/Woo/OrderNotices.php, src/Modules/Crm/RecordLinks.php
cliedesk_record_unlinked (action)
A record (order, licence…) was unlinked from a contact, organization or conversation.
string $entitycontact, organization or conversation.int $entity_idEntity id.string $sourceRecord source key.string $record_idRecord id.Actor $actorActor.
Fired in: src/Modules/Crm/RecordLinks.php
cliedesk_register_capabilities (filter)
Register capabilities (Pro registers its AI group, “Answer approvals” and “Preview permissions” here). Each entry: capability => {area, label, description, protected}. Existing entries cannot be replaced.
Fired in: src/Modules/Team/Capabilities.php
cliedesk_register_cli (action)
Register more wp cliedesk commands (modules, Pro).
Fired in: src/Cli/Commands.php
cliedesk_register_core_services (action)
Fires after the core services are registered (Free internals; not part of the extension API).
Container $cContainer.
Fired in: src/Core/Plugin.php
cliedesk_register_email_providers (action)
Register more email providers (Pro, third parties).
EmailProviderRegistry $registryRegistry.
Fired in: src/Modules/Email/EmailModule.php
cliedesk_register_health_checks (action)
Register more Setup Health checks.
Health $healthHealth registry.
Fired in: src/Core/Plugin.php
cliedesk_register_modules (action)
Register modules (extension API, frozen across majors). Pro boots its modules here.
ModuleRegistry $registryModule registry.
Fired in: src/Core/Plugin.php
cliedesk_register_record_sources (action)
Register record sources here with cliedesk_register_record_source().
Fired in: src/Modules/Crm/CrmModule.php
cliedesk_register_routes (action)
Register more internal routes through the RouteRegistry (never register_rest_route directly).
RouteRegistry $routesRegistry.
Fired in: src/Rest/RestServer.php
cliedesk_related_articles (filter)
Related articles of an article, best first: manual picks, then the same categories, then shared keywords. A filter may rank them again or add others; only published articles the visitor may read are kept (never the article itself), at most the limit.
int[] $idsArticle ids.int $postThe article.int $limitMost shown.
Fired in: src/Modules/Knowledge/Discovery.php
cliedesk_reopen_same_episode (filter)
Whether a reopen continues the current episode instead of starting a new one.
bool $sameContinue the current episode (default false: a new episode).Actor $actorWho reopens it.string $reasonmanual, customer_reply, first_reply, snooze_end or reminder.
Fired in: src/Modules/Conversations/Conversations.php
cliedesk_reply_channels (filter)
The channels a reply to this conversation can use (Pro messaging channels add theirs) and the ones whose messaging window has closed (e.g. WhatsApp after 24 hours: only an approved template may go out there).
Fired in: src/Modules/Conversations/ConversationActions.php
cliedesk_reply_email_body (filter)
Body of a reply email before the layout (a portal link; secure-link mode sends only the link). Return history => false to leave out the quoted history and files => false to send no files.
Fired in: src/Modules/Email/ReplyMailer.php
cliedesk_reply_email_parts (filter)
How a reply (or, with a null message, a notice) email goes out: sender address, sending connection (null: the product’s or workspace default), copies, the reply-above line and a hint under notices. Pro answers it while a mailbox receives the customers’ answers.
Fired in: src/Modules/Email/ReplyMailer.php
cliedesk_reply_message (filter)
An agent’s reply or note before it is saved and sent.
Actor $aActor.
Fired in: src/Modules/Conversations/ConversationActions.php
cliedesk_reply_promise (filter)
The reply promise of an open conversation (Pro: the due time of its running reply clock).
int $conversationConversation id.
Fired in: src/Modules/Sla/Promise.php
cliedesk_reply_promise_estimate (filter)
The reply promise for a new conversation of a product (Pro: from the catch-all SLA policy).
int $productProduct id.
Fired in: src/Modules/Sla/Promise.php
cliedesk_reply_requires_review (filter)
Whether the actor must save the reply as a draft for review instead of sending it (team draft mode).
bool $blockedBlocked.Actor $actorActor.
Fired in: src/Modules/Conversations/ConversationActions.php
cliedesk_report_breakdown (filter)
The rows of a split (Pro: the period before and the change, a topic’s group, values corrected by people).
string $byDimension.Actor $aActor.
Fired in: src/Modules/Reports/Reports.php
cliedesk_report_dimension (filter)
How to split by a dimension Free does not know (Pro: agent, team, queue, tags, fields). Return null or {join: SQL JOIN on the conversations c (‘’ for none), key: SQL group key, replies (optional): the key replies count for, labels (optional): fn( array $keys ): array<string, string>}. May throw an ActionError (400).
string $byDimension.
Fired in: src/Modules/Reports/Reports.php
cliedesk_report_dimensions (filter)
More splits, key => label (Pro: agent, team, queue, tag, message_tag, field:topic …). A key starting with field: also allows every other field:<key>. Each needs an answer of cliedesk_report_dimension.
Fired in: src/Modules/Reports/Reports.php
cliedesk_report_filters (filter)
More report input every report Action takes (Pro: compare, the period before). Read while the report Actions are built.
Fired in: src/Modules/Reports/ReportsModule.php
cliedesk_report_overview (filter)
The overview of a period (Pro: the period before and the targets).
Actor $aActor.
Fired in: src/Modules/Reports/Reports.php
cliedesk_request_created (action)
A request was created from the form (WooCommerce links the order the customer picked, when it is theirs).
\WP_REST_Request $requestThe form request.int $contactRequester contact.
Fired in: src/Modules/Requests/RequestApi.php
cliedesk_request_submitting (action)
A request is about to be created (the portal refuses guests unless anyone may send requests). Throw an ActionError to refuse it.
string $sourceWhere the form is (portal, widget, page).
Fired in: src/Modules/Requests/RequestApi.php
cliedesk_reroute (action)
The chat continues by email; routing runs again with the email queue rules.
int $idConversation.string $reasonchat_unanswered or chat_ended.
Fired in: src/Modules/Conversations/Conversations.php, src/Modules/Widget/ChatHandover.php
cliedesk_resolve_blockers (filter)
Reasons a conversation cannot be resolved (required fields, blocking checklists). The same check runs for agents, rules, the AI agent and the API, so every actor gets the same error.
Fired in: src/Modules/Conversations/Conversations.php, src/Modules/Conversations/TypeActions.php
cliedesk_rest_gate (filter)
Access gate for internal requests after authentication (security §4.4: lockdown, session limits, 2FA, new-location check). Return an ActionError to refuse the request.
ActionError|null $gateNull to continue.int $user_idUser.\WP_REST_Request $requestRequest.
Fired in: src/Rest/RestServer.php
cliedesk_rich_choice (action)
A customer chose an option of a rich message.
string $labelOption.int $messageCustomer message.int $conversationConversation.
Fired in: src/Modules/Conversations/RichMessages.php
cliedesk_rich_order_card (filter)
An order card of a rich message: fill title, text (status, total, date) and url for an order of the conversation’s customer, or return null to leave the card out (unknown order or another customer’s).
int $orderOrder id.
Fired in: src/Modules/Conversations/RichMessages.php
cliedesk_role_defaults (filter)
Extra default capabilities of the default roles (e.g. Pro’s “Answer approvals” for Supervisors and Collaborators): role key => capabilities. Only unprotected catalogue capabilities are kept.
Fired in: src/Modules/Team/Roles.php
cliedesk_role_reset (action)
A default role was reset to its defaults (Pro resets the role’s conversation scope).
string $keyRole key.
Fired in: src/Modules/Team/Actions/RoleReset.php
cliedesk_role_view (filter)
A role as the API shows it (Pro: its conversation scope, and whether it can be edited or deleted).
Fired in: src/Modules/Team/Services.php
cliedesk_routing_excluded (filter)
Agents who may not get this conversation (Pro: agents who do not take its channel).
int[] $excludedUsers.
Fired in: src/Modules/Inbox/Router.php
cliedesk_routing_handover (filter)
Whether a module hands the chosen agent the conversation another way (Pro: a chat offer the agent accepts). Return true when handled; routing then assigns nothing.
bool $handledHandled.int $agentChosen agent.
Fired in: src/Modules/Inbox/Router.php
cliedesk_routing_held (filter)
Whether routing leaves this unassigned conversation alone for now (Pro: a chat offer is waiting for an answer).
bool $heldHeld.
Fired in: src/Modules/Inbox/Router.php
cliedesk_routing_pick (filter)
An agent chosen before round robin (Pro: the customer’s last agent), or null.
Fired in: src/Modules/Inbox/Router.php
cliedesk_routing_queue (filter)
The queue of a conversation that is routed (new, or routed again), before an agent is picked. Pro: queue entry rules move the conversation and explain it. Return the (moved) conversation row.
Fired in: src/Modules/Inbox/Router.php
cliedesk_rule_warnings (filter)
Warnings for a rule: [{kind, message, ruleIds}]. Pro adds loops, flip-flops and conditions that never match.
int $idRule id (0 for a new one).string $nameRule name.
Fired in: src/Modules/Automation/RuleChecks.php
cliedesk_safe_mode_park (filter)
Whether an outbound job waits while staging safe mode is on. Email returns false when a test address is set: the email goes there instead.
bool $parkPark the job.string $hookJob hook.
Fired in: src/Infrastructure/Jobs/Jobs.php
cliedesk_saved_reply_files (filter)
Files of the applied saved replies (copied onto the message when it is written).
int[] $idsSaved replies.
Fired in: src/Modules/Macros/MacroActions.php
cliedesk_saved_reply_references (filter)
References to a saved reply that must be confirmed before it is deleted.
int $idSaved reply.
Fired in: src/Modules/Macros/SavedReplies.php
cliedesk_saved_reply_token (filter)
Value of a plugin token (null when unknown or empty).
string|null $valueValue.string $nameToken name.Actor $actorAgent.
Fired in: src/Modules/Macros/Renderer.php
cliedesk_saved_reply_tokens (filter)
Tokens plugins add to the saved reply autocomplete (e.g. order.number).
string[] $tokensToken names without braces.
Fired in: src/Modules/Macros/Renderer.php
cliedesk_schedule_changed (action)
A schedule’s hours or holidays changed.
int $scheduleSchedule id.
Fired in: src/Modules/Sla/Holidays.php, src/Modules/Sla/Schedules.php
cliedesk_schedule_for_conversation (filter)
The schedule a conversation follows instead of the default one (Pro: the one set on the conversation, its queue’s, team’s, channel’s, else its product’s). Return a schedules row or null.
Fired in: src/Modules/Sla/Schedules.php
cliedesk_schedules_changed (action)
Business hours, holidays or closures changed (SLA timers are recomputed).
Fired in: src/Modules/Sla/Closure.php
cliedesk_secret_usage (filter)
Where a stored credential is used, e.g. an add-on’s connection. Text only; never the value.
list<string> $usesUses.string $nameCredential name.
Fired in: src/Modules/Security/Credentials.php
cliedesk_segment_entered (action)
A contact entered a segment.
int $contactContact.int $segmentSegment.
Fired in: src/Modules/Crm/Segments.php
cliedesk_segment_left (action)
A contact left a segment.
int $contactContact.int $segmentSegment.
Fired in: src/Modules/Crm/Segments.php
cliedesk_setting_{…} (filter)
Filter a setting’s effective value. The result is validated against the setting schema.
mixed $valueEffective value.int|null $product_idProduct.int|null $brand_idBrand.
Fired in: src/Core/Settings/Settings.php
cliedesk_setting_layers (filter)
Layers a setting can be set on: workspace always; brand and product when an extension supports them.
string[] $layersDeclared layers.string $idSetting idmodule.key.
Fired in: src/Core/Settings/Settings.php
cliedesk_settings_saved (action)
Fires after module settings are saved.
string $moduleModule.
Fired in: src/Core/Settings/Settings.php
cliedesk_setup_checklist (filter)
The setup checklist on the admin home: [key, label, done, path] per step (Pro: connect a support mailbox instead of the test email).
Fired in: src/Modules/Core/AdminHome.php
cliedesk_shipment_adapters (filter)
Shipment-tracking adapters: add one for another tracking plugin. Each implements Cliedesk\Modules\Commerce\Woo\Tracking\TrackingAdapter and reads only data stored on the order.
Fired in: src/Modules/Commerce/Woo/Tracking/Shipments.php
cliedesk_shortcut_defaults (filter)
The team’s default keyboard shortcut map; each person’s own remapping goes on top.
int $userUser.
Fired in: src/Modules/Team/Prefs.php
cliedesk_site_product (filter)
Product of a site or embedding origin (Pro).
int|null $productProduct id, null for the first product.string $hostHost or URL.
Fired in: src/Modules/Workspace/Products.php
cliedesk_spam_feedback (action)
Spam feedback for the spam filter (Pro learns from corrections).
bool $spamTrue for “Spam”, false for “Not spam”.Actor $actorWho decided.
Fired in: src/Modules/Conversations/Conversations.php
cliedesk_spam_score (filter)
A message’s spam score. Pro’s classifier and add-ons may change it.
Fired in: src/Modules/Security/SpamScore.php
cliedesk_ssrf_allow (filter)
Narrow the SSRF guard: return false to block a validated target. Cannot allow a blocked target.
bool $allowWhether the request may proceed.string $hostHost.array $ipsResolved addresses.
Fired in: src/Infrastructure/Http/UrlGuard.php
cliedesk_status_input (filter)
The status change to make (Pro: a custom status sets its base status, key and end time; Away may need a reason). Throw an ActionError to refuse.
int $userUser.
Fired in: src/Modules/Team/StatusActions.php
cliedesk_status_properties (filter)
Input of status.set (Pro: a custom status and channel groups). Added before the team module registers.
Fired in: src/Modules/Team/StatusActions.php
cliedesk_strict_mode_switches (filter)
Extra strict-mode switches (Pro: AI masking, compliant AI providers only, read-access log, field encryption).
bool $activeWhether strict mode is on.
Fired in: src/Modules/Security/StrictMode.php
cliedesk_subprocessors (filter)
Services this site sends support data to (each enabled integration, email or AI provider adds itself).
Fired in: src/Modules/Security/Compliance.php
cliedesk_sudo_active (filter)
Whether recent authentication is satisfied (SSO plugins can confirm their own re-login).
bool $activeActive.int $userUser.
Fired in: src/Modules/Security/Sessions.php
cliedesk_survey_response (action)
A survey response was recorded or changed.
bool $changedThe customer changed an earlier answer.
Fired in: src/Modules/Csat/Surveys.php
cliedesk_survey_texts (filter)
The question, scale and reasons a survey response shows (Cliedesk Pro: “How was this reply?” for a reply rating, the question in the conversation’s language).
Fired in: src/Modules/Csat/CsatApi.php
cliedesk_system_emails (filter)
System emails listed in Settings > Email > System emails (Pro adds the acknowledgement of incoming email). Read when the email Actions are built.
Fired in: src/Modules/Email/SystemEmails.php
cliedesk_system_views (filter)
System views, in sidebar order (Pro: At risk and Breached after Needs reply, which then sorts by the next SLA breach): key => [title, conditions, sort]. Keys are [a-z_]; Free’s views cannot be removed.
Fired in: src/Modules/Inbox/Views.php
cliedesk_tag_references (filter)
References to a tag held by other modules (rules, macros, views), shown before a delete.
int $tagTag id.
Fired in: src/Modules/Conversations/Tags.php
cliedesk_tags_merged (action)
Tags were merged: modules re-point their own references (rules, macros, views) from the sources to the target.
int[] $sourcesSource tag ids.int $targetTarget tag id.int $mergeMerge id.
Fired in: src/Modules/Conversations/Tags.php
cliedesk_tags_unmerged (action)
A tag merge was undone: modules point their references back to the sources.
int[] $sourcesSource tag ids.int $targetTarget tag id.int $mergeMerge id.
Fired in: src/Modules/Conversations/Tags.php
cliedesk_timeline_items (filter)
Timeline items for a viewer (e.g. Cliedesk hides ratings from agents).
Actor $aViewer.
Fired in: src/Modules/Conversations/ConversationActions.php
cliedesk_today_groups (filter)
More groups of a person’s day (Pro: SLA deadlines due today, approvals waiting for them): key => {count, items} (items: id, number, subject, dueAt, lastAt). An item without a conversation number may carry an app path to open instead. Label each group with cliedesk_today_labels.
int $userUser.
Fired in: src/Modules/Notifications/Today.php
cliedesk_today_labels (filter)
Labels of the groups, in display order (Pro adds its groups here).
Fired in: src/Modules/Notifications/Today.php
cliedesk_topic_preset (filter)
The topic preset a new install starts with.
string $presetwoocommerce, vendor, membership or services.
Fired in: src/Modules/Fields/TopicPresets.php
cliedesk_track_event (action)
Record a customer event for a contact id, WordPress user or email address.
int|\WP_User|string $whoContact id, user or email.string $typeEvent type, e.g. order.paid.
Fired in: src/Modules/Commerce/Woo/OrderCustomerEvents.php
cliedesk_trigger_errors (filter)
Field errors for the options of a trigger that a module or Pro adds (path => message, e.g. definition.trigger.options.duration).
Fired in: src/Modules/Automation/TriggerOptions.php
cliedesk_trigger_matches (filter)
Whether an event matches the options of a trigger that a module or Pro adds.
bool $matchesMatches (default true).string $nameTrigger.
Fired in: src/Modules/Automation/TriggerOptions.php
cliedesk_trigger_options (filter)
Normalized options of a trigger that a module or Pro adds (none by default).
string $eventTrigger.
Fired in: src/Modules/Automation/TriggerOptions.php
cliedesk_usage_report (filter)
The health and usage numbers (Settings → Health → Usage). Pro adds its incoming mailboxes.
Fired in: src/Core/Health/Usage.php
cliedesk_user_has_2fa (filter)
Whether the user has 2FA configured (null = unknown).
bool|null $hasAnswer so far.int $userUser.
Fired in: src/Modules/Security/TwoFactor.php
cliedesk_user_two_factor (filter)
Whether the user has two-factor authentication on (answered by the 2FA feature); null = unknown.
bool|null $onOn.int $userUser.
Fired in: src/Modules/Team/Agents.php
cliedesk_view_as_target (filter)
The person a “View as” token previews for this signed-in actor, or null when it is not valid.
int|null $targetTarget user.string $tokenToken from the X-Cliedesk-View-As header.Actor $actorSigned-in actor.
Fired in: src/Rest/RestServer.php
cliedesk_view_condition (filter)
Compile a view condition no core leaf handles (e.g. segment from the CRM module). Return an SQL fragment over conversations c, built only from escaped values, or null for unknown conditions.
string|null $sqlSQL fragment.Actor $actorViewer.
Fired in: src/Modules/Inbox/ViewCompiler.php
cliedesk_view_vocabulary (filter)
The view vocabulary (conditions, columns, sorts); modules add theirs (e.g. CRM: contact, organization, segment, record; Pro: SLA state and next SLA due, the SLA column).
Actor $actorPerson.
Fired in: src/Modules/Inbox/ViewVocabulary.php
cliedesk_web_page_html (filter)
The HTML of a web page read as knowledge, before its main text is taken. A filter may return the page as a browser builds it (for pages whose text is built by JavaScript); an empty result keeps the page as sent.
string $htmlThe page as the server sent it.string $urlIts address.
Fired in: src/Modules/Knowledge/WebSources.php
cliedesk_widget_checkout_step (filter)
The WooCommerce checkout step of this page.
string $stepcheckout, thank_you or empty.
Fired in: src/Modules/Widget/WidgetModule.php
cliedesk_widget_config (filter)
The widget configuration sent to the visitor’s browser. Never add secrets: it is public.
int $productProduct id.string $localeLocale.
Fired in: src/Modules/Widget/WidgetModule.php
cliedesk_widget_identity (filter)
Proof of the signed-in user for the widget session (empty for guests).
string $identityProof.int $productProduct.
Fired in: src/Modules/Widget/WidgetModule.php
cliedesk_widget_messages (filter)
The answer of a widget poll (the visitor’s own conversation): messages after the widget’s last id and the conversation’s live state. A filter may add keys the widget reads, such as freeText true when the widget hides its text field for a button question (asks) and free text is allowed again; Free sends none. Keep it free when asks is false: every open chat polls every few seconds. The items, the open state and the email flag stay Free’s.
int $conversationConversation id.int|null $productProduct of the conversation.bool $asksThe widget hides its text field for a button question.
Fired in: src/Modules/Widget/WidgetApi.php
cliedesk_widget_run_workflow (filter)
Cliedesk.runWorkflow( id ) from the widget: return true when a workflow started (Pro’s widget script trigger; nobody answers in Free).
bool|null $startedStarted (null: nobody handled it).int $workflowWorkflow id.int $conversationThe visitor’s open conversation.
Fired in: src/Modules/Widget/WidgetApi.php
cliedesk_workflow_delete (filter)
Keep a rule instead of deleting it for good (Pro moves it to the trash). Return true when handled.
bool $handledHandled.
Fired in: src/Modules/Automation/Workflows.php
cliedesk_workflow_step_types (filter)
Step types besides “action” (wait, branch, AI, approval …) that a module registers; Free has none.
string[] $typesStep types.
Fired in: src/Modules/Automation/WorkflowActions.php