# Connected users Source: https://docs.xpressbot.org/platform/connected-users The **Connected Platform Users** page is designed for **real-time monitoring** of users who are currently active on the platform. This feature is primarily intended for **administrative and support purposes**. Screencapture Stage Skyfree In Connected Users 2026 04 23 18 34 57 Edit ## Purpose of this page This page allows platform owners or admins to: * see which users are currently online * monitor user activity in real time * identify which page a user is currently viewing * track session duration * quickly detect inactive or idle users ## Summary cards At the top of the page, key metrics are displayed: * **Total Platform Users** – total users in the platform * **Online Now** – number of users currently active * **Offline** – users not currently active * **Avg Session** – average session duration of users ## Live controls * **Refresh Now** – manually refresh user activity * **Auto-refresh (5s)** – automatically updates the data every 5 seconds * **Last Updated** – shows the last refresh timestamp ## User activity table This section lists all platform users along with their real-time status. ### Columns shown * **Status** – indicates whether the user is online or offline * **User** – user name * **Email** – registered email address * **Role** – role such as Owner, Admin, or Team * **Current Page** – the page the user is currently viewing * **Active For** – how long the user has been active in the current session ## Key functionality ### Real-time monitoring Admins can instantly see: * who is currently online * what they are doing * where they are navigating inside the platform ### Page tracking The **Current Page** field helps identify: * which feature the user is using * whether the user is stuck or inactive * how users interact with different parts of the system ### Session tracking The **Active For** field shows: * how long the user has been active * session engagement duration ## Use cases This page is mainly used for: * live support monitoring * troubleshooting user issues in real time * understanding user behavior * checking if a user is currently active before assisting * monitoring team activity within the platform ## Important note This page is **read-only monitoring**: * no direct user actions (like delete or block) are performed here * it is intended only for visibility and tracking Screencapture Stage Skyfree In Connected Users 2026 04 23 18 34 57 Edit Screencapture Stage Skyfree In Connected Users 2026 04 23 18 34 57 Edit # Gateway Source: https://docs.xpressbot.org/platform/gateway The **Gateway Settings** page allows platform owners to configure and manage payment providers used for processing transactions across the platform. This is where you connect your payment gateways and control how payments are handled for subscriptions and add-ons. This page acts as the integration layer between your platform and external payment systems. Screencapture Stage Skyfree In Gateway 2026 04 23 18 52 29 Edit *** ## Payment Provider Configuration You can configure one or more payment providers based on your business requirements. The platform supports multiple gateways, allowing you to choose how payments are processed and giving flexibility in handling different payment flows. Currently supported providers include standard one-time and subscription-based payment gateways, with additional providers planned for future support. This ensures that the platform can adapt to different regions and payment preferences. *** ## Multiple Gateway Support The platform allows you to configure multiple payment gateways at the same time. This gives you the flexibility to: * use different providers for different use cases * support multiple payment methods * switch between providers if needed This is especially useful for scaling your platform across different markets or handling diverse customer requirements. *** ## Environment Management You can manage how your payment gateway operates by switching between different environments. This allows you to safely test payment flows before going live and ensures that real transactions are only processed when the system is properly configured. *** ## Transaction Integration All configured gateways are directly connected to the platform’s transaction system. Once a gateway is set up, it is used for processing payments related to subscriptions, plans, and add-ons. This ensures that all payment activities are tracked and reflected in the Transactions and Subscriptions sections of the platform. *** ## Security and Credentials Each payment provider requires secure credentials to establish a connection. These credentials are used to authenticate requests and ensure that transactions are processed securely. It is important to configure these correctly to enable successful payment processing and maintain system reliability. *** ## Webhook Integration The platform supports webhook integration to receive real-time updates from payment providers. This ensures that payment statuses such as successful, pending, or failed are automatically updated within the system without manual intervention. # Notifications Source: https://docs.xpressbot.org/platform/notifications The **Notifications** page allows platform owners and administrators to send announcements and push notifications to users across the platform. It serves as the central place for managing communication, ensuring that important updates, alerts, or messages can be delivered directly to users. This feature supports sending notifications across multiple platforms, including web, Android, and iOS. Screencapture Stage Skyfree In Notifications 2026 04 23 18 55 35 Edit *** ## What You Can Do The Notifications page enables you to: * Create and send notifications to users * Target specific groups such as all users, admins, or team members * Manage notification drafts and sent messages * Monitor notification activity and delivery history * Track how many notifications have been sent *** ## Notification Creation You can create notifications by defining a title and message, and selecting the audience you want to target. This allows you to send platform-wide announcements or restrict communication to specific user groups based on your requirements. This flexibility makes it suitable for both general updates and targeted communication. *** ## Audience Targeting Notifications can be sent to different segments of users. You can choose whether to send messages to all users or limit them to specific roles such as administrators or team members. This ensures that the right message reaches the right audience without unnecessary noise. *** ## Push Notification Support The platform supports push notifications across multiple environments, including web and mobile applications. This ensures that users receive real-time updates regardless of the device they are using. To enable this functionality, push notification services must be properly configured within the platform. *** ## Firebase Integration Requirement Push notifications rely on Firebase configuration. To send notifications successfully, Firebase must be enabled and properly set up in the platform settings. Without this configuration, notifications will not be delivered to user devices. *** ## Notification Tracking The page provides visibility into notification activity, allowing you to monitor how many messages have been sent and their current status. This helps in understanding communication reach and ensuring that important messages are delivered. *** ## Draft and Status Management Notifications can exist in different states such as draft or sent. This allows you to prepare messages in advance, review them, and publish them when needed. This is useful for scheduling announcements or coordinating communication with platform updates. *** ## Why This Page Matters The Notifications page is essential for maintaining communication between the platform and its users. It ensures that important information can be shared quickly and effectively across all supported devices. *** ## Summary The **Notifications** page acts as the communication hub of the platform, allowing you to send targeted messages, manage announcements, and deliver real-time updates to users across web and mobile environments. # Platform Source: https://docs.xpressbot.org/platform/platform Platform is the administrative area for Whitelabel users, billing, settings, notifications, and operational controls. These pages affect the broader app environment rather than a single day-to-day operator workflow. ## What belongs in Platform Use **Platform** when you need to manage: * platform users and access * active sessions and connected users * platform billing and subscriptions * transactions and payment gateway setup * support tickets, notifications, and SEO controls This section is intended for admins who manage the environment, not just one conversation queue. ## Main pages in this section * [Platform Users](/docs/platform-users) * [Connected Users](/docs/connected-users) * [Platform Settings](/docs/platform-settings) * [Support Tickets](/docs/support-tickets) * [Platform Plans](/docs/platform-plans) * [Platform Subscriptions](/docs/platform-subscriptions) * [Platform Transactions](/docs/platform-transactions) * [Payment Gateway](/docs/gateway) * [Notifications](/docs/notifications) * [SEO Management](/docs/seo-management) ## Recommended operating flow ### User and access control Start with platform users and connected-user visibility when you need to control who can enter or operate the environment. ### Billing and payment control Use plans, subscriptions, transactions, and gateway settings together when reviewing commercial behavior on the platform. ### Operational maintenance Support tickets, notifications, and SEO management should be reviewed regularly as part of platform administration, not only when an issue appears. ## Governance guidance * Limit platform access to trusted admins. * Treat changes in billing, gateway, and settings as controlled actions. * Review transaction and subscription history before making commercial adjustments. * Keep notifications and SEO settings maintained because they affect broader platform behavior. ## Related docs * [Workspace](/docs/workspace) * [Channels](/docs/channels) # Platform plans Source: https://docs.xpressbot.org/platform/platform-plans # Subscription Plan ## Overview The **Subscription Plan** page is where platform owners define and manage how their SaaS is packaged and monetized. It provides full control over creating subscription plans, organizing pricing structures, and managing how these plans are offered to end users. This page acts as the foundation for controlling access, scaling offerings, and aligning pricing with business goals. ## Plan Creation This section allows you to create new subscription plans based on your business requirements. You can define different tiers to suit various types of users, whether they are basic users, growing teams, or enterprise customers. Plans can be structured in a way that reflects your product positioning and target audience. Screencapture Stage Skyfree In Platform Plans 2026 04 23 18 39 00 Edit ## Pricing Configuration The platform supports flexible pricing models, allowing you to define how users are billed. You can configure different billing cycles and adjust pricing as needed over time. This makes it easier to experiment with pricing strategies, offer promotions, or adapt to market changes without impacting the overall system. ## Plan Visibility and Positioning Plans can be controlled in terms of how they are presented to users. You can choose to show or hide plans depending on availability, and also highlight certain plans as featured to guide user decisions. This helps in promoting preferred plans and improving conversion by drawing attention to specific offerings. Image ## Add-on Management In addition to base subscription plans, the platform supports add-ons that can be attached to user subscriptions. These allow users to extend their plan with additional capabilities or capacity without needing to upgrade entirely. This provides flexibility in pricing and helps accommodate different user needs. Image ## Plan Lifecycle Management The page also supports ongoing management of plans, including updating, modifying, or removing them as your platform evolves. This ensures that your pricing and packaging can grow alongside your product, without requiring technical intervention. ## Summary Overall, the **Subscription Plan** page serves as the core control center for defining how your platform is sold, structured, and scaled. It enables you to manage plans, pricing, visibility, and extensions in a way that aligns with both user needs and business strategy. # Platform subscriptions Source: https://docs.xpressbot.org/platform/platform-subscriptions The **Master Subscriptions** page serves as the centralized dashboard for monitoring and managing all user subscriptions across the platform. It provides a unified view of how users are subscribed to plans and add-ons, along with their current subscription state and lifecycle details. This page is primarily used by platform administrators to track subscription activity, understand plan distribution, and maintain visibility over billing and access across all users. Screencapture Stage Skyfree In Platform Subscriptions 2026 04 23 18 47 30 Edit *** ## What You Can Do The Master Subscriptions page allows you to: * View all user subscriptions in one place * Monitor which plans users are currently subscribed to * Track billing cycles and subscription durations * Identify active, expired, or inactive subscriptions * Review both base plans and add-on subscriptions * Search and filter subscriptions for quick access * Export subscription data for reporting or analysis *** ## Subscription Insights This page gives you a clear understanding of how your platform is being used from a subscription perspective. You can quickly identify: * Which plans are most commonly used * How many users are currently active * How many subscriptions have expired * The overall distribution of subscription types This helps in making informed business decisions around pricing, plan optimization, and user engagement. *** ## Billing and Lifecycle Tracking Each subscription includes details about its billing cycle and duration. This allows you to track: * When a subscription starts * When it is expected to end * Whether it follows a recurring cycle or a fixed period This visibility helps ensure smooth subscription management and supports renewal planning or follow-ups. *** ## Plan and Add-on Visibility The page provides a combined view of both subscription plans and add-ons. This makes it easy to understand how users are extending their subscriptions beyond the base offering and how additional services are being utilized. *** ## Search and Filtering To handle large volumes of data efficiently, the page includes search and filtering capabilities. This allows you to quickly locate specific users or subscriptions and focus on relevant data without manual effort. *** *** # Platform transactions Source: https://docs.xpressbot.org/platform/platform-transactions The **Transactions** page provides a complete view of all payment-related activities across the platform. It acts as the financial tracking layer, allowing platform owners to monitor payments, verify transaction records, and maintain transparency in billing operations. This page is primarily used to track how users are being billed and to validate payments processed through integrated payment gateways. Screencapture Stage Skyfree In Platform Transactions 2026 04 23 18 50 35 Edit *** ## What You Can Do The Transactions page allows you to: * View all payment transactions across the platform * Track payments linked to subscription plans and add-ons * Access transaction identifiers generated by payment gateways * Monitor the status of each transaction * Search and filter transactions for quick lookup * Export transaction data for reporting or reconciliation *** ## Payment Tracking Each transaction recorded on this page is linked to an actual payment processed through your configured payment gateway. This ensures that every entry reflects a real billing event, making it reliable for financial tracking and auditing purposes. You can use this page to verify whether a payment has been successfully completed and ensure that it aligns with the corresponding subscription or plan. *** ## Transaction Status Monitoring The page allows you to monitor the state of each transaction, helping you quickly identify whether a payment has been completed, is pending, or has failed. This visibility is useful for resolving billing issues and ensuring users have the correct access based on their payment status. *** ## Gateway Reference and Validation Each transaction includes a unique identifier generated by the payment gateway. This can be used for cross-referencing payments directly with the gateway provider, making it easier to investigate discrepancies or confirm payment details during support or audits. *** ## Search and Filtering To efficiently manage large volumes of transaction data, the page includes search and filtering capabilities. This allows you to locate specific transactions based on user or context, helping reduce manual effort and improve operational efficiency. # Platform users Source: https://docs.xpressbot.org/platform/platform-users # Platform Users The **Platform Users** page is designed for **white-label platform owners** to manage the users created under their platform workspace. It gives a quick overview of platform usage, user status, connected channels, and support/admin actions. Platformusers ## Purpose of this page This page helps a white-label owner: * monitor how many users are on the platform * check how many accounts are active, inactive, or pending * view how many channels are connected across the platform * review WhatsApp, Webchat, and Instagram channel counts * manage each platform user from one place * access support actions such as impersonation, plan assignment, blocking, or deletion ## Summary cards At the top of the page, summary cards provide a quick snapshot of the platform: * **Total Users** – total number of users created under this platform * **Active** – users whose accounts are currently active * **Inactive** – users whose accounts are disabled or blocked * **Pending** – users who are created but not yet fully activated * **WABA (WhatsApp)** – total WhatsApp channels connected by users in this platform * **Webchat** – total webchat channels connected by users in this platform * **Instagram** – total Instagram channels connected by users in this platform * **Total Channels** – total number of connected channels across all supported channel types ## Search and filtering A search bar is provided to quickly find a user by: * username * email address Actions available in this section: * **Search** – applies the entered keyword * **Clear** – resets the search input ## User listing table The main table shows all users created under the platform workspace. ### Columns shown * **No** – serial number * **Contact** – username and email address of the user * **Phone** – registered phone number * **Channels** – channel count breakdown, such as: * WhatsApp * Webchat * Instagram * Total connected channels * **Role** – user role such as Owner or Admin * **Status** – current status of the user account * **Last Login** – most recent login date * **Actions** – available management actions for that user ## What platform owners can do from this page Each listed user includes several action icons that allow the platform owner to manage that account. ### 1. View user details Clicking the **eye icon** opens the individual user details view. This helps the platform owner review account-level information such as: * number of connected channels * number of team members * number of contacts * number of templates * number of campaigns * subscription details This is useful when checking account usage, verifying setup, or reviewing the customer’s current plan and resources. ### 2. Impersonate user Clicking the **impersonate/login-as-user icon** allows the platform owner to log in as that user. Screencapture Stage Skyfree In Channels 2026 04 23 18 30 42 Edit This is mainly used for: * support and troubleshooting * checking user-facing issues directly * validating settings or permissions * assisting the customer without needing their password ## Important note Impersonation should be used carefully, mainly for support or admin assistance. ### 3. Assign plan or add-ons manually Clicking the **crown icon** allows the platform owner to manually assign: Image * a user plan * add-ons This is useful for: * manual upgrades * custom plan assignment * white-label billing adjustments * support-led setup changes ### 4. Block or disable user The **block icon** can be used to disable or block the user account. This can be useful when: * an account should no longer access the platform * a subscription is overdue * access needs to be temporarily restricted * an account is under review ### 5. Delete user The **delete icon** allows the platform owner to remove the user completely. Deleteuser This action is generally used when: * the account is no longer needed * the customer has left the platform * test or duplicate accounts need to be removed Because this is a destructive action, it should be handled carefully. ## Status management The platform owner can also manage the user’s status from this page. This helps control whether a user account is: * active * inactive * blocked * pending This is useful for platform-level administration and subscription control. ## Why this page matters The Platform Users page acts as the main control center for white-label platform owners. Instead of opening each user separately, the owner can quickly: * understand platform usage * monitor channel distribution * check account activity * support customers directly * assign plans and add-ons manually * block or remove accounts when required ## Typical use cases A white-label platform owner would use this page to: * review how many customer accounts are active * monitor total channels connected across the platform * search for a specific customer by username or email * open a customer’s account details and review usage * impersonate a user for support * manually assign a plan or add-on * block a customer account * delete an account when needed * review the user history and entries in one place ## Suggested short description **Platform Users** lets white-label owners monitor and manage all user accounts in their platform, including activity status, connected channels, subscription details, impersonation for support, plan assignment, blocking, and deletion. # Seo management Source: https://docs.xpressbot.org/platform/seo-management The **SEO Management** page allows platform owners to configure search engine optimization settings for different pages within the platform. It provides a centralized way to manage how your application appears in search engines and when shared across external platforms. SEO settings are applied based on route paths, giving you full control over individual pages. Image *** ## What You Can Do The SEO Management page enables you to: * Define SEO settings for specific routes * Control how pages appear in search engine results * Manage metadata for better discoverability * Optimize link previews for social sharing * Maintain consistent SEO structure across the platform *** ## Route-Based SEO Configuration SEO settings are configured based on route paths, allowing you to assign specific metadata to each page. This ensures that every important page in your platform can have its own optimized title, description, and indexing behavior. This approach gives flexibility to tailor SEO strategies at a granular level. *** ## Metadata Management You can define key metadata elements that influence how your pages are interpreted by search engines. This helps improve visibility, relevance, and ranking in search results. Proper metadata configuration ensures that users see accurate and meaningful information when your pages appear online. *** ## Social Sharing Optimization The platform supports optimization for link previews across social platforms. When users share your links, the configured settings help control how the content is displayed, improving engagement and presentation. *** ## Indexing Control You have control over how search engines interact with your pages. This allows you to decide which pages should be indexed and which should remain hidden, helping you manage visibility effectively. *** ## Centralized SEO Control All SEO configurations are managed from a single place, making it easy to maintain consistency across your application. This reduces the need for manual changes at the code level and simplifies ongoing SEO management. *** ## Why This Page Matters The SEO Management page is essential for improving your platform’s online presence. It ensures that your pages are properly optimized for search engines and social platforms, helping drive traffic and improve discoverability. *** ## Summary The **SEO Management** page provides a flexible and centralized way to manage SEO settings across your platform, allowing you to optimize individual pages and improve visibility in search and social environments. # App settings Source: https://docs.xpressbot.org/platform/settings/app-settings # App Settings ## Overview The **App Settings** page is used to configure the mobile application details for Android and iOS. This section is mainly used when you want to generate and publish a branded mobile app for your platform. The platform mobile app is built using **Capacitor**, which allows the web application to run inside native Android and iOS apps while still supporting native mobile features. *** ## What You Can Configure From this page, you can manage the basic mobile app identity, including the app name, app version, package identifiers, brand colors, app store links, icons, splash screen, and platform-specific configuration files. These settings help prepare the mobile app for building, testing, and publishing. *** ## Android and iOS App Setup To generate mobile apps, you need to create Android and iOS app entries in Firebase. Firebase provides configuration files that connect your mobile app with services such as notifications and authentication. For Android, Firebase provides a `google-services.json` file. For iOS, Firebase provides a `GoogleService-Info.plist` file. These files must be uploaded in the App Settings page so the generated app can communicate correctly with Firebase services. Image *** ## App Identity The app name, version, Android package ID, and iOS bundle ID define how your application is identified on mobile devices and app stores. These values should be planned carefully because package IDs and bundle IDs are important when publishing to the Play Store or App Store. *** ## Branding You can upload the app icon and splash screen to customize how the app appears when installed and opened by users. Brand colors can also be configured so the mobile app matches your platform identity. *** ## Store Links The App Store URL and Play Store URL can be added once your apps are published. These links can be used inside the platform wherever users need to download or access the mobile apps. *** ## Android Signing Android signing is usually not required during basic configuration if you are publishing through the Play Store using the default Play App Signing flow. Google Play can manage the final app signing process. If you are using custom signing or advanced Play Store workflows, Android signing settings may be handled separately during the build or publishing process. Image *** ## iOS Build Requirement For iOS, the app must be built using Apple’s required build and signing process. You may need an Apple Developer account, proper iOS certificates, provisioning profiles, and the required bundle configuration before publishing to the App Store. Image *** ## Why Capacitor Is Used Capacitor is used to convert the platform into a native mobile app experience while still keeping the main application logic connected to the web platform. This approach allows the app to support native mobile capabilities while reducing the need to maintain completely separate Android and iOS codebases. *** ## Summary The **App Settings** page prepares your platform for mobile app generation. By configuring Firebase app files, app identity, branding, store links, and platform-specific settings, you can build Android and iOS apps for your white-label platform. # Billing credits Source: https://docs.xpressbot.org/platform/settings/billing-credits The **Billing & Credits** page provides a complete view of your platform’s credit usage and purchase history. It allows platform owners to track available credits, monitor consumption, and understand how credits are being utilized across the system. This page acts as the usage and balance layer for your platform’s credit-based operations. Image *** ## What You Can Do The Billing & Credits page allows you to: * View your current credit balance * Track total credits purchased * Monitor credit expiration timelines * Review recent credit-related transactions * Understand how credits are being consumed *** ## Credit Balance Tracking This section shows the total credits currently available on your platform. It reflects the remaining balance after consumption and helps you ensure that sufficient credits are available for ongoing operations. Maintaining an adequate balance is important to avoid interruptions in platform functionality. *** ## Credit Purchases You can track how many credits have been purchased over time. This provides visibility into your platform’s usage scale and helps you plan future credit requirements based on historical consumption. *** ## Credit Expiry Credits are associated with an expiration timeline. This page allows you to monitor when your credits will expire, helping you manage usage effectively and avoid unused credits being lost. *** ## Credit Consumption Logic Credits are consumed based on webhook activity within the platform. Every time the system receives webhook data, a credit is deducted. This means that platform usage directly correlates with incoming webhook events, making credit consumption predictable and tied to real system activity. *** ## Transaction History The page includes a record of recent transactions related to credits, such as purchases or setup-related entries. This helps maintain transparency and provides a reference for all credit-related activities. *** # Domain setup Source: https://docs.xpressbot.org/platform/settings/domain-setup Use this tab to configure the main platform domain experience for tenants, branded links, and DNS-dependent features. Screencapture One Xpressbot Org Platform Settings 2026 04 23 19 07 03 Edit ## What you manage here * primary platform domain values * custom domain onboarding prerequisites * DNS verification and propagation checks * routing readiness before customer-facing launch ## Best practices * Confirm DNS records before saving production changes. * Recheck SSL and propagation after each update. * Keep a rollback plan for domain cutovers. ## Related docs * [Platform Settings](/platform/platform-settings) * [Billing & Credits](/platform/settings/billing-credits) # Email settings Source: https://docs.xpressbot.org/platform/settings/email-settings # Email Settings ## Overview The **Email Settings** page is used to configure how your platform sends outgoing emails. Instead of traditional SMTP-based email delivery, the platform uses modern **email APIs** for better reliability, scalability, and deliverability. This page allows you to connect an email service provider and define the sender details used across the platform. Image *** ## Important Note The platform does **not support SMTP-based email configuration**. Only API-based email providers are supported. This ensures: * better email delivery rates * improved performance * reduced configuration complexity * compatibility with modern email infrastructure *** ## Supported Providers You can choose from multiple popular email API providers such as: * SendGrid * Mailgun * Brevo (Sendinblue) * Postmark * AWS SES * Zepto You can select any one provider based on your preference and configure it using the API key provided by that service. Image *** ## Why API-Based Email Using API-based email services is recommended because it provides: * faster email delivery * better tracking and analytics * improved spam handling * higher reliability compared to SMTP This approach ensures that your platform emails reach users consistently. *** ## What Emails Are Sent The configured email provider is used for all system-generated emails, including: * user registration and OTP verification emails * subscription confirmation emails * subscription expiry and reminder emails * transaction-related emails * system notifications and alerts All these emails depend on proper configuration of this page. *** ## Configuration Requirement To enable email functionality, you must: * select an email provider * add the API key from your provider * define sender details such as name and email Once configured, the platform will use these settings for all outgoing emails. *** ## What Happens If Not Configured If email settings are not configured: * OTP emails will not be delivered * users may not be able to complete registration * subscription and transaction emails will fail * system notifications will not reach users This can directly impact platform usability and user experience. # Email templates Source: https://docs.xpressbot.org/platform/settings/email-templates Email Templates provides a place to review or preview reusable email content used by the platform for system communication. ## What you manage here * template structure and preview * consistency of transactional messaging * readiness of system email content > **Important**\ > Email templates cannot be modified from this section.\ > This page is intended only to preview how system emails are sent to users. ## Best practices * Keep subject lines and body copy versioned. * Test template rendering before sending at scale. * Review copy whenever workflow logic changes. ## Related docs * [SMTP](/platform/settings/smtp) * [Notifications](/platform/notifications) # Facebook oauth Source: https://docs.xpressbot.org/platform/settings/facebook-oauth The **Facebook OAuth Integration** page is used to connect Facebook Pages to the platform for inbox, engagement, and automation use cases. This setup allows businesses to manage Facebook conversations and Page interactions from one shared workspace. *** ## Why This Integration Is Required Many Messenger and Page engagement workflows depend on a connected Facebook Page. Facebook OAuth is required to: * authenticate the business owner * list and select available Facebook Pages * subscribe pages for webhook events * enable Page-level messaging, comments, posts, and insights Without approved Facebook permissions, Page connection and related inbox/automation features will not work in production. *** ## Required OAuth Scopes These are the scopes the platform requests when a user connects a Facebook Page: * `pages_show_list` * `pages_manage_metadata` * `pages_messaging` * `pages_read_engagement` * `pages_read_user_content` * `pages_manage_engagement` * `pages_manage_posts` * `read_insights` * `business_management` * `public_profile` Request only these scopes (and any additional ones your deployment actually uses). Extra unused permissions increase Meta review risk. *** ## Review Submission Pack ### 1) App Use-Case Description Use this when Meta asks: "Please provide a detailed description of how your app uses the permission or feature requested, how it adds value for a person using your app, and why it's necessary for app functionality." #### Overall Description > Our platform is a customer communication and automation system used by businesses to manage Facebook Page interactions from a unified team inbox. Facebook OAuth is used so a business user can securely connect their own Facebook Page, authorize required permissions, and enable messaging, engagement, publishing, and insights workflows. > > Each requested permission maps to a visible feature in our product, such as selecting a Page, reading engagement and user content, managing comments, subscribing webhook events, sending replies, publishing posts, and viewing insights. These permissions are necessary for app functionality and are only used after explicit user consent. ### 2) Scope-by-Scope Justification #### pages\_show\_list > Required to display Facebook Pages the authenticated user manages, so they can select which Page to connect to our platform. #### pages\_manage\_metadata > Required to subscribe and maintain Page webhook metadata so message and engagement events are delivered reliably to our platform. #### pages\_messaging > Required to send and receive Facebook Page messages through the platform inbox and automation rules. #### pages\_read\_engagement > Required to read Page engagement context (such as comments and interactions) used for inbox visibility, moderation, and engagement workflows. #### pages\_read\_user\_content > Required to read user-generated content on the Page (for example comment text and related content) so agents and automations can respond accurately. #### pages\_manage\_engagement > Required to manage Page engagement actions such as moderating or responding to comments from the platform. #### pages\_manage\_posts > Required for businesses that use our platform to create, publish, or schedule Page posts and related workflows. #### read\_insights > Required to retrieve Page insights so users can analyze performance and engagement inside the platform. #### business\_management > Required to access business assets and complete account/page linkage securely during connection. #### public\_profile > Required to display basic account identity for secure session and connection confirmation. ### 3) Screen Recording Checklist Meta may ask for a recording that proves each permission is used exactly as described. #### What to Record 1. Show your platform URL and sign in. 2. Open Platform Settings -> Facebook OAuth (or channel connection settings). 3. Start Facebook connection flow and show OAuth consent. 4. Select a Page and confirm successful connection. 5. Demonstrate feature usage tied to requested permissions: * show page list selection (`pages_show_list`) * show messaging action (`pages_messaging`) * show engagement or comment visibility (`pages_read_engagement`, `pages_read_user_content`) * show comment moderation/reply (`pages_manage_engagement`) * show event/webhook readiness (`pages_manage_metadata`) * show publish action (`pages_manage_posts`) * show insights screen (`read_insights`) 6. Show final connected state in your platform. #### Video Quality Checklist * Use one continuous recording (recommended 4-10 minutes). * Include captions or voice-over explaining each permission usage. * Mask secrets and personal information. * Use production-like UI, not mock screens. ### 4) Upload Instructions 1. Upload video to Google Drive (Anyone with link can view) or unlisted YouTube. 2. Open Meta App Dashboard -> App Review -> Permissions and Features. 3. Open each permission request and provide: * permission description * reviewer test steps * video link * test account credentials if requested 4. Verify privacy policy URL, terms URL, and domain are live before submitting. ### 5) Pre-Submission Checklist * Permissions requested in Meta exactly match the Required OAuth Scopes list above. * Page connection and webhook flow are working before review submission. * Video shows one real action per requested permission. * Privacy policy, terms, and domain verification are complete. * Reviewer steps and test credentials are included when required. *** ## Important Notes * Keep requested scopes minimal and feature-matched. * Mismatch between requested permissions and recorded flow is a common rejection reason. * If a scope is not used in your current product flow, remove it before submission. # Firebase Source: https://docs.xpressbot.org/platform/settings/firebase # Firebase Settings ## Overview The **Firebase Settings** page is used to connect your platform with Firebase services. Firebase is required for features such as authentication, push notifications, and mobile/web notification delivery. Once Firebase is configured, the platform can send push notifications to users across supported environments such as web, Android, and iOS. *** ## When Firebase Is Required Firebase configuration is required if you want to use platform features such as push notifications, app notifications, Firebase authentication, or device-based notification delivery. For example, if you want to send notifications from the **Notifications** page, Firebase must be configured first. Without Firebase setup, notifications may be created inside the platform, but they will not be delivered to user devices. *** ## Step 1: Create a Firebase Project Go to the [Firebase Console](https://console.firebase.google.com/) and create a new project for your platform. After creating the project, open **Project Settings** from the Firebase dashboard. This is where you will find most of the values required for your platform configuration. Image *** ## Step 2: Add a Web App in Firebase Inside your Firebase project, add a new **Web App**. Image Firebase will generate a configuration object for the web app. From this configuration, copy the required values into the platform’s Firebase Settings page. Image Image *** ## Step 3: Generate Firebase Admin Credentials You will usually need values such as: * API Key * Auth Domain * Project ID * Storage Bucket * Messaging Sender ID * App ID * Measurement ID These values connect the frontend application with your Firebase project. **Firebase Console → Project Settings → General** Console Firebase Google *** ## Step 4: Generate Firebase Admin Credentials For backend operations, the platform also needs Firebase Admin credentials. To generate these credentials, go to: **Firebase Console → Project Settings → Service Accounts** Then click **Generate New Private Key** and download the JSON file. Firebase’s official documentation states that this JSON file contains the private key and service account information required by the Admin SDK. From the **downloaded JSON file**, copy the required values into the platform, such as: * Client Email * Private Key * Key Pair / Service Account JSON details Keep this file secure. Do not share it publicly or upload it to public repositories. Image *** ## Step 5: Configure Cloud Messaging Firebase Cloud Messaging is required for push notification delivery. To configure web push notifications, open: **Firebase Console → Project Settings → Cloud Messaging** From there, configure or generate the required Web Push certificates / VAPID key. Firebase uses VAPID keys to authorize web push notification requests. This setup allows the platform to register user devices and send push notifications correctly. Screencapture *** ## Step 6: Enter the Values in the Platform After collecting the Firebase web configuration and admin credentials, open the platform’s **Firebase Settings** page and enter the values into the matching fields. Once saved, the platform will use these credentials for authentication-related services and notification delivery. Screencapture *** ## Step 7: Sync Providers The **Sync Providers** option is used to connect and synchronize authentication providers from your Firebase project with the platform. In Firebase, you can enable different authentication methods such as Google, Facebook, Email/Password, or other supported providers. Once these providers are configured inside Firebase, the platform needs to be aware of them so they can be used for user login and authentication. Image When you click **Sync Providers**, the platform fetches the list of enabled authentication providers from your Firebase configuration and updates them internally. This ensures that any login methods configured in Firebase are automatically available within the application. For example, if you enable Google Login or Facebook Login in Firebase Authentication, syncing providers will make those login options usable inside your platform without additional manual setup. This process helps keep your authentication system aligned with Firebase and ensures that all enabled login methods are properly integrated and ready for use. *** ## Important Notes Firebase credentials should be handled carefully because they connect your platform to external notification and authentication services. The private key should always be stored securely. If it is exposed, generate a new private key from Firebase and replace the old one in the platform settings. *** # Footer socials Source: https://docs.xpressbot.org/platform/settings/footer-socials The **Footer Social Links** page allows you to add and manage social media links that appear in the footer section of your landing page. These links help users connect with your brand across different platforms. This feature is part of your white-label customization and enhances your platform’s credibility and accessibility. Image *** ## What You Can Do Using this page, you can: * add social media profile links * update or remove existing links * control which platforms are displayed * manage how users access your external channels The configured links will automatically appear in the footer of your landing page. *** ## Supported Platforms You can add links for commonly used platforms such as: * Twitter / X * Facebook * LinkedIn * and other supported social platforms Each link is displayed with its respective icon in the footer. *** ## Link Configuration To add a social link, you need to: * select the platform type * provide the correct URL to your profile or page Once saved, the link will be visible in the footer section of your website. *** ## Visibility and Limit You can configure multiple social links, but typically a limited number of links are displayed to maintain a clean and structured footer layout. Only active and configured links will be shown to users. Image *** ## Use Cases Footer social links are useful for: * promoting your social media presence * building brand trust and engagement * allowing users to follow or contact you externally * linking to company updates, announcements, or content *** ## Related docs * [App Settings](/platform/settings/app-settings) * [SEO Management](/platform/seo-management) # General settings Source: https://docs.xpressbot.org/platform/settings/general-settings The **General Settings** page is where platform owners configure the core identity and foundational behavior of their application. It allows you to define how your platform appears to users, how it is branded, and how certain global behaviors are controlled. This page acts as the central place for managing your white-label configuration. Screencapture Stage Skyfree In Platform Settings 2026 04 23 19 14 54 Edit *** ## What You Can Do The General Settings page allows you to: * Define your application or website name * Configure branding elements such as logos and icons * Set platform-level details like country and currency * Manage support-related contact information * Control landing page behavior * Configure integrations and external identifiers *** ## Branding and Identity This section allows you to define how your platform is visually presented. You can set your application name, tagline, and upload branding assets such as logos and icons. These elements are reflected across the platform, ensuring a consistent brand experience for your users. Image *** ## Platform Configuration You can configure essential platform-level details such as regional settings, currency preferences, and support contact information. These settings help tailor the platform to your business requirements and user base. Image *** ## Integration Settings The page also allows you to configure integration-related details such as analytics tools or external identifiers. This makes it possible to connect your platform with third-party services and track usage or performance as needed. *** ## Widget and External Usage If you are using widgets or embedding parts of your platform externally, you can define the required identifiers and configurations here. This ensures that embedded components function correctly across different environments. Image *** ## Landing Page Control You have the flexibility to control whether your platform includes a landing page. If you are hosting your application on a main domain, a landing page can be enabled for public access. If the platform is hosted on a subdomain or used internally, the landing page can be disabled. This allows you to adapt the platform experience based on how it is deployed. *** ## Why This Page Matters The General Settings page is essential for establishing your platform’s identity and behavior. It ensures that your application is properly branded, configured, and aligned with your business needs from a global perspective. *** ## Summary The **General Settings** page serves as the foundation of your platform configuration, allowing you to manage branding, integrations, and core behavior in a single place. # Google oauth Source: https://docs.xpressbot.org/platform/settings/google-oauth The **Google API Integration** page allows you to connect your platform with Google services using OAuth authentication. This enables users to securely link their Google accounts and use features such as Google Sheets, Calendar, and Contacts within the platform. This integration is essential for automation, data synchronization, and workflow enhancements. *** ## What This Is Used For Once configured, users can connect their Google accounts to enable: * **Google Sheets** → read/write data for automation and syncing * **Google Contacts** → import and sync contacts into the platform * **Google Calendar** → create and manage events via automation * **User Profile Access** → fetch basic user information These integrations help extend platform capabilities and enable real-time workflows. *** ## Required OAuth Scopes These are the scopes the platform requests when a user connects Google: * [https://www.googleapis.com/auth/spreadsheets](https://www.googleapis.com/auth/spreadsheets)\ → Read and write Google Sheets * [https://www.googleapis.com/auth/contacts](https://www.googleapis.com/auth/contacts)\ → Read and write Google Contacts * [https://www.googleapis.com/auth/calendar](https://www.googleapis.com/auth/calendar)\ → Read and write Google Calendar * [https://www.googleapis.com/auth/userinfo.email](https://www.googleapis.com/auth/userinfo.email)\ → Access user email * [https://www.googleapis.com/auth/userinfo.profile](https://www.googleapis.com/auth/userinfo.profile)\ → Access user profile information Add these scopes under OAuth consent screen → Data Access. Do not re-list them inside the configuration steps below. *** ## How to Configure Google OAuth ### Step 1: Go to Google Cloud Console Open: [https://console.cloud.google.com/](https://console.cloud.google.com/) ### Step 2: Create or Select a Project * Create a new project OR Select an existing project Image ### Step 3: Enable Required APIs Go to **APIs & Services → Library** and enable: Image * Google Sheets API * Google Calendar API * Google People API (for contacts) * Google Maps API (for Inbox) * Google Translate API (for Inbox) Image ### Step 4: Complete OAuth Consent Setup and Verification After creating your project, you must fully configure the OAuth consent screen in the Google Cloud Console. Go to **APIs & Services → OAuth consent screen** Image Ensure that all required sections are completed, including: Image * Branding (application name, logo, support email) Image * Audience (internal or external users) Image * Clients (OAuth client configuration) - ***Refer Step 5*** * Data Access (add the scopes from **Required OAuth Scopes**) * Settings (general app configuration) Once all sections are properly configured, proceed to the **Verification Center** and submit your application for verification if required. Verification is mandatory when using sensitive scopes such as Google Sheets, Contacts, or Calendar. Until verification is approved, access may be limited to test users only. *** ### Step 5: Create OAuth Credentials Go to **APIs & Services → Credentials** * Click **Create Credentials → OAuth Client ID** * Select: * **Web Application** Image * **Add Redirect URI** Add the redirect URL from your platform: [https://your-domain.com/api/auth/google/callback](https://your-domain.com/api/auth/google/callback) (Use the exact URL shown in your platform settings) Screencapture Console Cloud Google Auth Clients 534192499054 Hmqmfdkc9qabqvrmt8kv8dpd8f991qs9 Apps Googleusercontent Com 2026 04 23 21 13 33 Edit *** ### Step 6: Copy Credentials After creating credentials, copy: * **Client ID** * **Client Secret** * **API Key** (from credentials section) *** ### Step 7: Configure in Platform Go to **Google API Integration** page and: * Paste API Key * Paste Client ID * Paste Client Secret * Enable Google OAuth * Save settings Image *** ## Testing the Integration After saving: * Click **Test** (if available) * Try connecting a Google account * Verify that Sheets, Contacts, and Calendar access works correctly *** ## Review Submission Pack ### 1) App Use-Case Description (Copy-Paste) Use this text when Google asks: "Please provide a detailed description of how your app uses the permission or feature requested, how it adds value for a person using your app, and why it's necessary for app functionality." #### Overall Description > Our platform is a business communication and automation system used by companies to manage contacts, conversations, workflows, and scheduling from one dashboard. Google OAuth is used so a signed-in user can securely connect their own Google account and authorize only the data access required for enabled features. > > We use the requested scopes to support three user-facing capabilities: > > 1. Google Sheets sync for importing/exporting business data and automation records, > 2. Google Contacts sync for keeping customer/contact records updated, > 3. Google Calendar integration for creating and updating events from workflow actions. > > These permissions are necessary because the features directly read or write user-owned Google resources after explicit user consent. Without these scopes, the connected features cannot function. ### 2) Scope-by-Scope Justification (Copy-Paste) #### [https://www.googleapis.com/auth/spreadsheets](https://www.googleapis.com/auth/spreadsheets) > We use this scope to read and update Google Sheets selected by the user so they can sync platform data (such as contacts or workflow outputs) with spreadsheets they already use. This is required for sheet-based automation and reporting. #### [https://www.googleapis.com/auth/contacts](https://www.googleapis.com/auth/contacts) > We use this scope to import and sync contact records between the user's Google Contacts and our platform contact library. This allows users to manage communication records in one place and keep data consistent. #### [https://www.googleapis.com/auth/calendar](https://www.googleapis.com/auth/calendar) > We use this scope to create and update Google Calendar events triggered by user actions and automation flows (for example reminders or booking follow-ups). It is necessary for calendar-based workflow execution. #### [https://www.googleapis.com/auth/userinfo.email](https://www.googleapis.com/auth/userinfo.email) > We use this scope to identify which Google account is being connected and map it to the correct platform user/workspace for secure authorization and account linking. #### [https://www.googleapis.com/auth/userinfo.profile](https://www.googleapis.com/auth/userinfo.profile) > We use this scope to display basic profile identity during account linking and to reduce user errors when multiple Google accounts are available. ### 3) Screen Recording Checklist Google may ask for a video proving that sensitive scopes are used exactly as described. #### What to Record 1. Show your platform URL and login. 2. Open Platform Settings -> Google OAuth. 3. Show configured Client ID and redirect URL domain (mask secrets). 4. Click Connect Google and complete OAuth consent. 5. Show successful account connection in UI. 6. Demonstrate one action per requested sensitive scope: * Sheets: import/export/sync with a Google Sheet. * Contacts: import/sync a Google contact. * Calendar: create or update an event from the platform. 7. Show the result in both places (platform + Google product) to prove write/read behavior. #### Recording Quality Checklist * Keep video between 3-8 minutes. * Use a real test account and real UI flow (not slides). * Add voice-over or captions explaining each step. * Mask API keys, client secrets, personal data. * Do not skip from login directly to final state; show the full consent and usage flow. ### 4) Upload Instructions 1. Upload the video as "Anyone with the link can view" (Google Drive or unlisted YouTube). 2. Open Google Cloud Console -> OAuth consent screen -> Verification Center. 3. Paste the video link in the verification evidence field. 4. In "Scope justification", paste the overall description plus scope-by-scope text above. 5. Submit and keep test account credentials ready if Google requests additional review access. ### 5) Pre-Submission Checklist * OAuth consent screen fields are complete (branding, audience, scopes, support email). * Requested scopes exactly match the Required OAuth Scopes list above. * Redirect URI exactly matches your platform callback URL. * Video link is publicly viewable to reviewers. * Test user credentials are ready for reviewer follow-up. *** ## Verification (Important) If your app is in production and uses sensitive scopes (like Contacts or Sheets), Google may require **OAuth verification**. You may need to: * submit your app for verification * provide a demo video * explain how data is used * verify domain ownership Until verified, your app may be limited to test users. *** ## Security Notes * Keep your **Client Secret secure** * Never expose credentials in frontend code * Use HTTPS for all redirect URLs * Restrict API usage where possible *** # Instagram oauth Source: https://docs.xpressbot.org/platform/settings/instagram-oauth The **Instagram OAuth Integration** page is used to configure Instagram Business login and permissions for your platform. This allows users to connect their Instagram Business accounts to the platform and use Instagram-related automation and messaging features. This setup is required before users can connect Instagram accounts from the Channels page. *** ## Why This Is Required Instagram integration requires Meta OAuth authentication. The platform needs approved Meta permissions to securely connect user Instagram accounts, access business profile data, receive messages, manage comments, and support publishing or insights features where enabled. Without this configuration, users will not be able to connect Instagram accounts to the platform. *** ## What This Enables Once configured and approved, Instagram OAuth can support features such as Instagram account connection, message automation, comment management, content publishing, and insights access depending on the permissions approved by Meta. The connected Instagram account can then be used inside the platform for communication, automation, and customer engagement workflows. *** ## Required OAuth Scopes These are the scopes the platform requests when a user connects Instagram: * `instagram_business_basic` * `instagram_business_manage_messages` * `instagram_business_manage_comments` * `instagram_business_content_publish` * `instagram_business_manage_insights` Only request permissions that your platform actually uses. Requesting unnecessary permissions may increase the chance of rejection during Meta review. *** ## How to Configure Instagram OAuth ### Step 1: Create or Open Meta App Go to Meta for Developers and create a new app or open your existing platform app. Use a business app type if your platform is used for business messaging, automation, or customer engagement. ### Step 2: Add Instagram Product Inside the Meta App dashboard, add the required Instagram product or configure Instagram Business Login based on the available Meta setup flow. This connects your app with Instagram Business authentication. ### Step 3: Configure Webhook Callback URL Copy the Webhook Callback URL from your platform and add it inside the Meta webhook configuration. This URL is used to receive Instagram-related webhook events such as messages, comments, or other supported updates. Screencapture Developers Facebook Apps 904116067703748 Instagram Business API Setup 2026 04 23 21 46 07 Edit ### Step 4: Set up Instagram business login Meta may require additional URLs for compliance and data handling. Add the following URLs from your platform where required: * Deauthorize Callback URL * Data Deletion Request URL * OAuth redirect URIs These URLs help Meta and users manage account disconnection and data deletion requests. Image Image ### Step 5: Complete app review Go to App Review and request the permissions listed in **Required OAuth Scopes**. For each permission, provide a clear explanation of why the platform needs it and show the exact feature in your screencast video. Use the Review Submission Pack below. *** ## Meta Verification Requirement Instagram OAuth permissions require Meta App Review before they can be used in production. Your app must clearly show how the permissions are used inside your platform. Meta may ask for: * valid business details * privacy policy URL * terms of service URL * app domain verification * clear use-case explanation * screencast video showing the feature flow * test login credentials, if required Until the app is approved, Instagram login may work only for test users or app roles. *** ## Review Submission Pack ### 1) App Use-Case Description (Copy-Paste) Use this text when Meta asks: "Please provide a detailed description of how your app uses the permission or feature requested, how it adds value for a person using your app, and why it's necessary for app functionality." #### Overall Description > Our platform is a business messaging and automation product that helps companies manage Instagram conversations, post engagement, and publishing workflows from a shared team inbox. We request Instagram Business permissions so authenticated business users can connect their own Instagram account, manage interactions, and run approved automation in one place. > > Each requested permission is tied to a visible user action in the platform (connect account, reply to messages, manage comments, publish approved content, and view insights). These permissions are required for core product behavior and are only used after user consent. ### 2) Scope-by-Scope Justification (Copy-Paste) #### instagram\_business\_basic > Required to connect and identify the Instagram Business account selected by the user and show basic account information in the platform. #### instagram\_business\_manage\_messages > Required to receive and send Instagram direct messages from the platform inbox and automation flows. #### instagram\_business\_manage\_comments > Required to read, manage, and respond to comments and to trigger comment-based workflows requested by the business user. #### instagram\_business\_content\_publish > Required when users choose to publish approved posts from the platform to Instagram. #### instagram\_business\_manage\_insights > Required to retrieve account/content insights so users can analyze engagement and optimize campaign performance. ### 3) Screen Recording Checklist Record one continuous flow (recommended 4-10 minutes): 1. Show your platform domain and login. 2. Open Platform Settings -> Instagram OAuth and show app is configured (mask secrets). 3. Go to Channels/Connection page and click Connect Instagram. 4. Complete Meta OAuth and grant requested permissions. 5. Show connected Instagram account appears in your platform. 6. Demonstrate each requested permission with an actual action: * messages: receive/reply from inbox * comments: view/respond to a post comment * content publish: publish or schedule a test post (if requested) * insights: open analytics/insights screen 7. End by showing success state and where the user can disconnect access. ### 4) Upload Instructions 1. Upload video to Google Drive (Anyone with link can view) or unlisted YouTube. 2. In Meta App Dashboard, open App Review -> Permissions and Features. 3. Open each requested permission and paste: * use case description (from section above) * exact test steps reviewer should follow * video URL * test credentials (if Meta asks) 4. Ensure your app domain, privacy policy, and terms URLs are valid and publicly accessible before submission. ### 5) Pre-Submission Checklist * App is in Live mode or fully ready for review testing. * Privacy policy, terms URL, and app domain are reachable. * Requested scopes exactly match the Required OAuth Scopes list above. * Video demonstrates each requested scope with real UI actions. * Reviewer steps and (if requested) test credentials are added for every permission request. *** ## Common Recommendations Make sure your app name, logo, privacy policy, terms URL, and domain are consistent across Meta and your platform. Use a real business use case in your review explanation. Avoid vague descriptions such as “for testing” or “for integration”. Request only the permissions that are actually used in your platform. Ensure your platform has a working Instagram feature before submitting for review. *** ## After Saving Settings After saving Instagram OAuth settings in the platform, go to the **Channels** page and click **Connect Instagram**. The popup login flow will use the saved Instagram OAuth configuration. *** ## Important Notes > ⚠️ **Important** Instagram OAuth will not work in production until the required Meta permissions are approved. > > If permissions are missing, login may complete but features such as messages, comments, or insights may not work. # Menu manager Source: https://docs.xpressbot.org/platform/settings/menu-manager # Menu Manager ## Overview The **Menu Manager** allows you to create and manage navigation menus that appear on your platform’s landing page header. It gives you full control over how links, pages, and resources are organized and presented to users. This feature is especially useful for structuring your white-label website navigation. Image *** ## What You Can Do Using the Menu Manager, you can: * create new navigation menu items * organize menus into categories * control the order of menu display * link internal or external pages * customize menu labels and icons This helps you build a clear and structured navigation experience for your users. *** ## Menu Structure Menus are typically grouped into primary categories such as: * Resources * Solutions You can assign each menu item to a category, allowing you to organize related links under a common section in the header navigation. *** ## Menu Customization Each menu item can be customized with: * a title (display name) * a URL path (internal or external link) * an icon for better visual representation * a description (optional) This allows you to design navigation that matches your platform’s branding and usability. Image *** ## Ordering and Visibility You can define the order of menu items to control how they appear in the navigation bar. Lower order values typically appear first. Menu items can also be enabled or disabled, giving you flexibility to show or hide links without deleting them. *** ## Use Cases Menu Manager can be used to: * add links to your blog or documentation * link to external websites or resources * create navigation for contact pages or support pages * organize product or feature pages * build structured landing page menus *** ## Why This Page Matters Navigation plays a key role in user experience. The Menu Manager ensures that users can easily access important pages and resources from your landing page. *** ## Summary The **Menu Manager** helps you create and organize navigation menus for your platform, allowing you to structure links, categorize items, and control how users navigate your website. # Platform version Source: https://docs.xpressbot.org/platform/settings/platform-version Use Platform Version to review application version details and verify what release state is currently deployed. Image ## What you can do here * check current platform version information * verify release visibility for support and operations * confirm deployment state before troubleshooting ## Best practices * Include version details in support escalations. * Confirm version after major deployments. * Compare environment versions before diagnosing differences. ## Related docs * [Platform](/platform/platform) * [Platform Settings](/platform/platform-settings) # Pricing iframe Source: https://docs.xpressbot.org/platform/settings/pricing-iframe The iFrame tab controls embedded pricing or plan presentation that can be shown in external surfaces or white-label experiences. ## Typical uses * embed pricing on external sites * present plan details inside hosted portals * keep plan messaging aligned with platform offers ## Embed Code ```html theme={null}
``` # Recaptcha Source: https://docs.xpressbot.org/platform/settings/recaptcha # reCAPTCHA Configuration ## Overview The **reCAPTCHA Configuration** page allows you to protect your platform’s authentication flows from spam and automated bot attacks. It integrates Google reCAPTCHA into your login, signup, and password reset pages. This helps ensure that only real users can interact with your platform. Screencapture Stage Skyfree In Platform Settings 2026 04 23 20 40 39 Edit *** ## What You Can Do Using this page, you can: * enable or disable reCAPTCHA protection * choose the reCAPTCHA version (v2 or v3) * configure public and private keys * apply protection to specific pages * enable strict validation for stronger security *** ## reCAPTCHA Versions The platform supports two versions of Google reCAPTCHA: * **v2 (Checkbox)** → users manually verify (“I’m not a robot”) * **v3 (Invisible)** → background scoring without user interaction You can choose the version based on your preferred user experience and security level. *** ## How to Create Google reCAPTCHA Keys Follow these steps to generate your reCAPTCHA credentials: Image ### Step 1: Open Google reCAPTCHA Console Go to: [https://www.google.com/recaptcha/admin](https://www.google.com/recaptcha/admin) ### Step 2: Register a New Site * enter a label (your project or domain name) * select reCAPTCHA type: * v2 (Checkbox) OR * v3 (Score-based) * add your domain (e.g., yourdomain.com) * accept terms and submit ### Step 3: Copy Keys After registration, Google will provide: * **Site Key (Public Key)** * **Secret Key (Private Key)** These keys are required to connect reCAPTCHA with your platform. *** ## How to Configure in Platform Once you have the keys: 1. Go to **reCAPTCHA Settings** in your platform 2. Enable reCAPTCHA 3. Select the version (v2 or v3) 4. Paste: * Site Key → in **Site Key (Public)** * Secret Key → in **Secret Key (Private)** 5. Enable **Strict Mode** if needed 6. Choose where to apply: * Login page * Signup page * Reset password page 7. Click **Save Settings** *** ## Strict Mode Strict Mode increases security by requiring a higher confidence score when using reCAPTCHA v3. This helps block more bots but may occasionally challenge real users. Use this if your platform experiences high spam activity. *** ## Where It Applies You can selectively apply reCAPTCHA protection to: * Login Page * Signup Page * Reset Password Page This gives flexibility in balancing security and user experience. *** ## What Happens If Not Configured If reCAPTCHA is not configured: * your platform may be vulnerable to bot signups * spam registrations may increase * abuse of login or reset flows may occur *** ## Why This Page Matters reCAPTCHA is a critical security layer that protects your platform from automated abuse. It ensures that only genuine users interact with authentication flows. *** ## Summary The **reCAPTCHA Configuration** page allows you to integrate Google reCAPTCHA into your platform, enabling protection against bots and ensuring secure user authentication processes. # Storage Source: https://docs.xpressbot.org/platform/settings/storage # Storage Settings ## Overview The **Storage Settings** page is used to configure external file storage for your platform. This is where you connect your application to a storage provider so that all media files such as images, videos, and documents are stored securely and persistently. The platform uses object storage (such as [DigitalOcean Spaces](https://cloud.digitalocean.com/)) to handle all file uploads and media generated within the system. Image *** ## Why Storage Configuration Is Required Storage configuration is mandatory for proper platform operation. Without an external storage setup, media files generated within the platform will not be permanently stored. This includes files such as: * Images sent or received through messaging channels * Videos and media shared within conversations * Files uploaded by users or generated by the system If storage is not configured, these files may be lost during platform updates, deployments, or system resets. *** ## Default Storage Approach The platform is designed to work with cloud-based object storage providers. By default, a cost-effective solution such as DigitalOcean Spaces can be used, which provides reliable storage with predictable pricing. This allows you to store and serve media efficiently without managing your own infrastructure. *** ## How Storage Works Once configured, all media files are automatically uploaded to the connected storage provider. The platform then retrieves and serves these files when needed, ensuring that all user interactions involving media remain intact. This setup ensures: * persistent file storage * reliable media access * scalability as your usage grows *** ## Configuration Requirements To configure storage for your platform, you need to set up a **DigitalOcean Spaces** bucket and generate the required credentials. Follow the steps below: *** ### Step 1: Create a Storage Space Go to DigitalOcean and create a new Space (bucket). While creating the space: * choose a region (this becomes part of your endpoint URL) * give a unique name to your space * optionally enable CDN during creation ### Step 2: Create Access Keys To allow your platform to connect to the storage, you need to generate access credentials: * go to **API → Spaces Keys** * click **Generate New Key** * copy the **Access Key** and **Secret Key** 📘 Guide: [https://docs.digitalocean.com/products/spaces/how-to/manage-access/](https://docs.digitalocean.com/products/spaces/how-to/manage-access/) ### Step 3: Configure Access Permissions You can control who can access your files by setting bucket permissions. By default, access is restricted, and permissions can be configured to allow public or private access depending on your use case. 📘 Guide: [https://docs.digitalocean.com/products/spaces/how-to/manage-access/](https://docs.digitalocean.com/products/spaces/how-to/manage-access/) ### Step 4: Enable CDN (Recommended) To improve performance and file delivery speed, enable CDN for your Space. * go to your Space → **Settings tab** * find **CDN section** * click **Enable CDN** Once enabled, your files will be served through a CDN endpoint like: `..cdn.digitaloceanspaces.com` A CDN (Content Delivery Network) URL can be configured to improve performance. This ensures that files are delivered quickly to users regardless of their location, improving overall application speed and user experience. 📘 Guide: [https://docs.digitalocean.com/products/spaces/how-to/enable-cdn/](https://docs.digitalocean.com/products/spaces/how-to/enable-cdn/) ### Step 5: Copy Values to Platform After setup, copy the following values into your platform: * Space Name (Bucket Name) * Endpoint URL * CDN URL * Region * Access Key * Secret Key These values connect your platform with DigitalOcean storage. ## Video Guide Watch this step-by-step guide to set up DigitalOcean Spaces: [![Watch Video](https://img.youtube.com/vi/1okZqOl0Ltc/0.jpg)](https://youtu.be/1okZqOl0Ltc) # Tax settings Source: https://docs.xpressbot.org/platform/settings/tax-settings # Tax Settings ## Overview The **Tax Settings** page allows platform admin's to configure tax details that will be applied to transactions, subscriptions, and invoices generated within the platform. It provides a centralized way to define how taxes are calculated, displayed, and included in billing. This ensures that your platform remains compliant with regional tax requirements. Image *** ## What You Can Do The Tax Settings page enables you to: * Define the type of tax applicable to your business * Add your tax registration details * Configure the tax percentage to be applied * Control how tax information is displayed to users * Verify tax registration (where supported) *** ## Tax Type Configuration You can select the appropriate tax type based on your region. Different countries use different tax systems such as GST, VAT, or Sales Tax. The platform allows you to configure the correct tax type to match your local compliance requirements. This ensures that all billing and invoices follow the correct tax structure. *** ## Tax Registration Details If your business is registered for tax, you can add your tax registration number. This number will be associated with your platform and used in billing and invoice generation. For supported regions, tax registration numbers (such as GST) can also be verified directly within the platform. *** ## Tax Percentage You can define the tax percentage that should be applied to transactions. This percentage is automatically calculated and added to user billing wherever applicable. This allows consistent and accurate tax calculation across all payments. *** ## Tax Display and Usage The platform allows you to control how tax information is presented to users. The configured tax name and details are reflected in invoices, receipts, and billing summaries. This ensures transparency and clarity for end users regarding tax charges. *** ## Invoice Integration Once configured, tax details are automatically included in generated invoices. This includes the tax type, registration number, and calculated tax amount. This helps ensure that all invoices are compliant and properly structured for financial and legal purposes. *** # Trial settings Source: https://docs.xpressbot.org/platform/settings/trial-settings Use Trial Settings to define how trial access works for new workspaces, users, or signups across the platform. Image ## What you manage here * trial duration * trial eligibility rules * conversion-related defaults * operational limits during evaluation periods ## Best practices * Keep trial rules simple and transparent. * Align trial length with onboarding goals. * Review trial-to-paid conversion regularly. ## Related docs * [Platform Plans](/platform/platform-plans) * [Billing & Credits](/platform/settings/billing-credits) # Webhook integration Source: https://docs.xpressbot.org/platform/settings/webhook-integration The **Webhook Integration** page allows you to send real-time platform events and user data to external systems using webhook URLs. This enables automation, integrations, and custom workflows outside the platform. Whenever specific events occur in the platform, the system sends a structured payload to the configured webhook endpoint. Image *** ## Purpose The primary purpose of webhook integration is to **forward platform events and user data** to external services so that you can trigger automated actions such as messaging, notifications, or custom processing. This is commonly used for: * automation workflows * third-party integrations * sending WhatsApp templates * syncing user activity with external systems *** ## How It Works For each supported event, you can define a webhook URL. When that event occurs, the platform sends an HTTP request (typically a POST request) to the configured URL with event data. Each request contains: * event type * timestamp * user details (such as name, email, phone number) * event-specific data *** ## Supported Events You can configure webhooks for various platform activities, including: * user signup * signup OTP generation * password reset requests * password reset completion * contact export completion * WhatsApp account updates * subscription expiring notifications * subscription expired events * delayed subscription expiry tracking * support ticket events These events cover both user lifecycle and platform activity tracking. *** ## Use Cases Webhook integration is mainly used for: * triggering WhatsApp template messages * sending alerts or notifications to external systems * syncing user data with CRMs or automation tools * tracking user lifecycle events * building custom automation flows Image *** ## Automation Use Case (Recommended) A common use case is connecting webhook events with automation systems to send WhatsApp messages. For example: * user signup → send welcome message * subscription expiring → send reminder message * ticket created → notify support team This allows you to build powerful communication workflows without manual intervention. Screencapture One Xpressbot Org Automation Builder 8c3f70d1 88e9 44f8 8a5c 3fc760085e20 2026 04 23 20 48 44 Edit *** ## Configuration To use webhooks: 1. Enter your external webhook URL for each event 2. Save the configuration 3. Optionally send a sample payload to test the integration Make sure your endpoint is ready to accept POST requests and process JSON data. *** ## Important Notes * If no webhook URL is configured, the event will not be sent externally * Ensure your endpoint is secure and can handle incoming requests * Validate incoming data on your server before processing * Avoid exposing sensitive endpoints publicly without protection *** ## Why This Page Matters Webhook Integration is a key feature for extending platform capabilities. It allows you to connect your platform with external tools and automate workflows based on real-time events. *** ## Summary The **Webhook Integration** page enables real-time event-based communication between your platform and external systems, allowing you to automate actions such as WhatsApp messaging, notifications, and data synchronization. # Whatsapp config Source: https://docs.xpressbot.org/platform/settings/whatsapp-config The platform supports **Meta Embedded Signup**, which allows users to directly connect their WhatsApp Business accounts through a guided onboarding flow without leaving your application. This simplifies onboarding and removes the need for manual Meta Business configuration. *** ## What is Embedded Signup Embedded Signup is a Meta-provided flow that enables users to: * connect their WhatsApp Business account * grant required permissions * complete onboarding within your platform This flow is powered by Meta (Facebook) and requires proper app configuration and approval. *** ## Why Embedded Signup is Used Embedded Signup helps: * reduce onboarding friction for users * automate WhatsApp Business API connection * eliminate manual Meta setup steps * improve conversion for new users *** ## Configuration Requirements Before using Embedded Signup, you must: * create a Meta App in the Meta Developer Console * enable WhatsApp Business Platform API * configure App ID and App Secret * generate configuration IDs (with and without catalog) * set up webhook verification *** ## Required OAuth Scopes These are the scopes the platform expects for WhatsApp OAuth / Embedded Signup: * `whatsapp_business_management` * `whatsapp_business_messaging` * `business_management` * `catalog_management` (required only when using catalog / commerce features) Use the **with catalog** configuration ID when `catalog_management` is included, and the **without catalog** configuration ID when it is not. *** ## Meta App Verification (Mandatory) To use Embedded Signup in production, your Meta app must be verified. Verification ensures: * your app is trusted by Meta * permissions are approved * users can connect their accounts without restrictions *** ## How to Configure WhatsApp OAuth ### Step 1: Create Meta App 1. Go to: [https://developers.facebook.com/](https://developers.facebook.com/) 2. Click **My Apps → Create App** Image 3. Enter: * App Name * Contact Email Image 4. Select Use Case as **Connect with customers through WhatsApp** Image 5. Select your verified Business Manager Image ### Step 2: Add Your Product 1. Inside your app dashboard homepage, scroll below to see 2. Click **Add Product** 3. Select **WhatsApp**, **Facebook Login for Business, Instagram, Messenger.** 4. Complete the basic setup Image ### Step 3: Configure App Basics Go to **App Settings → Basic** Make sure to add: * App Name and Logo * Privacy Policy URL * Terms of Service URL * App Domain (your platform domain) Then go to: **Business Settings → Security Center** Image ### Step 4: Configure Embedded Signup 1. Go to **Facebook Login for Business → Configuration** 2. Click **Create configuration** Image Image Image Image Image 3. Create and save both configuration IDs (select scopes from **Required OAuth Scopes**): * Configuration ID (with catalog) Image * Configuration ID (without catalog) Image 4. Copy the below and add these values to your platform settings WhatsApp OAuth: * App ID * App Secret * Configuration ID Image 5. Go to **WhatsApp → Configuration** and add the webhook URL provided from the platform to receive all incoming WhatsApp messages. Make sure the required events are selected. Image Image ### Step 5: Request Permissions (IMPORTANT) Go to: **App Review → Permissions and Features** Request Advanced access for the scopes listed in **Required OAuth Scopes**. Image ### Step 6: Complete App Review Sections Go to: **App Review → Settings** Complete all sections: * Branding * Audience * Clients * Data Access * Verification All sections must be completed before submission. ### Step 7: Submit for Review 1. Go to **App Review** 2. Submit requested permissions 3. Wait for Meta approval *** ## Review Submission Pack ### 1) App Use-Case Description (Copy-Paste) Use this when Meta asks: "Please provide a detailed description of how your app uses the permission or feature requested, how it adds value for a person using your app, and why it's necessary for app functionality." #### Overall Description > Our platform helps businesses onboard to WhatsApp Business API, manage customer conversations, and run messaging workflows from a centralized dashboard. We use Meta Embedded Signup so a business can connect its own WhatsApp assets directly inside our platform with explicit user consent. > > The requested permissions are necessary to complete onboarding, configure business assets, enable messaging, and optionally support catalog commerce features. Without these permissions, users cannot complete account connection or use WhatsApp messaging features in our app. ### 2) Scope-by-Scope Justification (Copy-Paste) Use the below explanations when Meta asks for justification: #### business\_management > Our platform allows businesses to connect and manage their WhatsApp Business accounts. This permission is required to access business-level assets and enable account linking via embedded signup. #### whatsapp\_business\_management > This permission is required to manage WhatsApp Business account settings, phone numbers, and configurations after the user connects their account through our platform. #### whatsapp\_business\_messaging > Our platform enables users to send and receive WhatsApp messages, including automated notifications, campaigns, and customer conversations. This permission is essential for message delivery and communication workflows. #### catalog\_management > This permission is used for businesses that utilize product catalogs. It allows syncing and managing catalog items for use in WhatsApp commerce features such as product messages and interactive flows. ### 3) Screen Recording Checklist Record one complete reviewer journey (recommended 5-12 minutes): 1. Show your platform login and open Platform Settings -> WhatsApp OAuth. 2. Show app configured (mask App Secret and tokens). 3. Start Embedded Signup from platform UI. 4. Complete Meta flow and grant requested permissions. 5. Show WhatsApp account connected in the platform. 6. Send a test message from platform and show delivery/status. 7. Receive a reply and show it appears in inbox/webhook-driven view. 8. If requesting `catalog_management`, show a catalog-related action. ### 4) Upload Instructions 1. Upload video to Drive (public link for reviewers) or unlisted YouTube. 2. Go to Meta App Dashboard -> App Review -> Permissions and Features. 3. For each permission, paste: * permission-specific justification * reviewer test steps * video URL 4. Submit with test business credentials if requested by Meta reviewer. ### 5) Pre-Submission Checklist * App review sections (Branding, Audience, Clients, Data Access, Verification) are completed. * Requested permissions match the Required OAuth Scopes list above. * Embedded Signup works end-to-end in your test account. * Video shows permission grant plus send/receive proof. * Secrets are masked and reviewer credentials are prepared. *** ## Important Notes * App must be in **Live Mode** before production use * Missing permissions = rejection * Incomplete video = rejection * Business verification is mandatory > ⚠️ **Need Help?**\ > Meta verification can be complex and time-consuming.\ > If you need assistance, you can contact our support team.\ > We provide verification setup as an add-on service. *** ## Twilio TURN Configuration (WhatsApp Calling) To enable WhatsApp calling functionality in the platform, a TURN (Traversal Using Relays around NAT) server is required. TURN ensures stable voice connectivity, especially in restricted or NAT-based network environments. We recommend using **Twilio TURN services** for reliable performance. ## Why TURN is Required WhatsApp calling relies on WebRTC technology, which may fail in certain network conditions such as: * firewalls blocking direct connections * strict NAT environments * corporate or restricted networks TURN acts as a relay server to ensure calls are successfully connected even in these scenarios. ## How It Works * Twilio provides TURN credentials (temporary or generated) * These credentials are used by the platform to establish call connections * The TURN server relays audio data between users when direct connection fails ### Step 1: Create Twilio Account 1. Go to: [https://www.twilio.com/](https://www.twilio.com/) 2. Sign up or log in to your account 3. Navigate to **Twilio Console Dashboard** 4. Copy the following: **Account SID & Auth Token,** these will be used to authenticate TURN requests. 5. Add the following details in your platform settings: **Twilio Account SID mTwilio Auth Token** 6. Once added:Click **Test TURN** 7. The platform will automatically generate: * TURN URL * TURN Username * TURN Credential Image *** ## Meta Webhook Relay Meta Webhook Relay allows you to forward incoming WhatsApp (Meta) webhook events to another external endpoint without modifying your primary webhook configuration. This is useful when you want to duplicate or redirect webhook data to additional systems such as automation tools, CRMs, or custom APIs. ## What this does * receives webhook events from Meta (WhatsApp Cloud API) * forwards the **raw payload** to a secondary webhook URL * preserves original request structure and headers * enables parallel processing of webhook events ## Typical Use Cases * send WhatsApp events to external automation platforms * integrate with third-party CRMs or analytics systems * duplicate webhook data for logging or monitoring * trigger workflows outside the main platform ## How It Works 1. Meta sends webhook events to your primary webhook 2. The platform captures the event 3. If relay is enabled, the same payload is forwarded to your configured URL 4. The target system receives the webhook as a standard POST request ## Configuration Fields * **Forward URL**\ The external endpoint where webhook events will be sent * **Verify Token**\ Used only for webhook verification (not for forwarded events) * **Relay Toggle**\ Enables or disables webhook forwarding * **Relay Scope**\ Choose what to forward: * Messages * Status updates * Account updates ## Important Notes > ⚠️ **Credit Consumption Warning** Each forwarded webhook event will consume platform credits. * Every incoming event = **1 credit used (for forwarding)** * High message volume can increase credit usage significantly * Monitor usage if relay is enabled in production ## Best Practices * Enable relay only when required * Filter relay scope to avoid unnecessary events * Use a reliable external webhook endpoint * Monitor success/failure logs regularly ## Testing You can validate your setup using: * **Test Verification** → checks webhook validation flow * **Send Meta-Style Sample** → sends a sample payload to your endpoint ## When to Use Use Meta Webhook Relay when: * you need multi-system integrations * you want to extend platform functionality externally * you are building advanced automation pipelines ## Support > ⚠️ If webhook forwarding is not working, verify your endpoint response and ensure it accepts POST requests properly. # Support tickets Source: https://docs.xpressbot.org/platform/support-tickets # Support Tickets ## Overview The **Support Tickets** page provides a built-in support system within the platform, eliminating the need for any external ticketing tool. It allows platform owners and teams to manage user queries, track issues, and respond to support requests directly from within the system. This acts as a complete support portal integrated into your platform. Screencapture Stage Skyfree In Support Tickets 2026 04 23 18 57 47 Edit *** ## What You Can Do The Support Tickets page allows you to: * View all support requests raised by users * Track ticket status and progress * Respond to user queries directly * Manage and organize support conversations * Monitor ticket activity across the platform *** ## Built-in Support System The platform comes with a fully functional ticketing system out of the box. Users can raise support requests, and those tickets will automatically appear here for handling. This removes the need to integrate or maintain a separate support portal, simplifying operations and reducing overhead. *** ## Ticket Management Each ticket represents a user request or issue and can be managed through its lifecycle. You can review incoming tickets, update their status, and respond accordingly, ensuring smooth communication between your team and your users. This helps maintain a structured approach to handling support queries. *** ## Real-time Communication Support interactions happen directly within the platform. When a ticket is updated or replied to, the system ensures that communication flows seamlessly between the user and the support team. This improves response time and keeps all interactions centralized. Image *** ## Automated Notifications The platform automatically handles communication for ticket updates. When a reply is sent, the user receives an email notification from the system, ensuring they stay informed without requiring manual follow-ups. *** ## Webhook Integration The support system is integrated with webhook capabilities, allowing you to trigger external workflows when ticket events occur. This can be used to send notifications through other channels such as WhatsApp or to integrate with external systems. *** ## Why This Page Matters The Support Tickets page provides a complete, ready-to-use support infrastructure within your platform. It ensures that user queries are handled efficiently, communication is streamlined, and support operations are fully centralized. *** ## Summary The **Support Tickets** page acts as an integrated support portal, enabling you to manage user queries, respond to issues, and automate communication without relying on external ticketing systems. # Account Source: https://docs.xpressbot.org/workspace/account Account is where an individual user reviews and maintains their account-level information. ## What you can do * Review personal account details. * Check subscription or profile-related account information. * Keep your own workspace information current. ## Best practice * Update account details before billing or support changes so ownership and contact history stay correct. # Analytics Source: https://docs.xpressbot.org/workspace/analytics The Analytics page provides a unified view of messaging performance across all channels. It helps track delivery, engagement, and automation effectiveness in real time. Image ## Overview Analytics is organized into multiple sections: * Overview * Messages * Campaigns * Automations Each section focuses on a different part of the communication lifecycle. *** ## Overview Tab The Overview tab gives a high-level summary of overall performance. ### Key Metrics * **Total Messages** — Total volume of messages processed * **Delivery Rate** — Percentage of successfully delivered messages * **Read Rate** — Percentage of messages opened by users * **Reply Rate** — Percentage of messages that received responses * **Failure Rate** — Percentage of messages that failed ### Insights * Quickly understand system health * Identify delivery or engagement issues * Monitor overall messaging trends *** ## Message Analytics Focuses on message-level performance. ### What it shows * Sent vs Delivered vs Read vs Failed trends * Time-based message activity * Delivery behavior across channels ### Use cases * Identify drop-offs in delivery * Monitor read and engagement trends * Debug messaging issues Image *** ## Campaign Analytics Tracks performance of broadcast campaigns. ### Key insights * Campaign reach * Delivery success * Engagement (reads, replies) * Audience performance ### Use cases * Measure campaign effectiveness * Compare campaign performance * Optimize targeting and messaging Image *** ## Automation Analytics Provides insights into automation workflows. ### What it tracks * Flow execution volume * User interaction within flows * Drop-off points * Completion rates ### Use cases * Identify weak points in automation flows * Improve chatbot performance * Optimize sequences and journeys Image *** ## Charts and Trends The analytics section includes time-based charts showing: * Message volume over time * Delivery vs failure trends * Engagement patterns These help visualize performance and detect anomalies quickly. *** ## Summary Panel Provides quick aggregated data such as: * Active campaigns * Total campaigns * Unique contacts * Total recipients *** ## Best Practices * Monitor delivery and failure rates regularly * Use campaign analytics to improve targeting * Analyze automation drop-offs to refine flows * Compare trends over different time ranges *** ## Related Docs * [Dashboard](/docs/dashboard) * [Inbox](/docs/inbox) * [Campaigns](/docs/campaigns) * [Automations](/docs/automations) # Api Source: https://docs.xpressbot.org/workspace/api The Workspace API lets you manage contacts, labels, custom fields, WhatsApp messaging, and automations programmatically. ## Authentication All requests require an API key. You can generate one from **Workspace → Account → API Keys**. Pass the key in of these ways: | Method | Example | | ------------ | -------------------------------- | | Header | `X-API-Key: your_key` | | Bearer token | `Authorization: Bearer your_key` | | Query string | `?apiKey=your_key` | | Request body | `{ "apiKey": "your_key" }` | ## Base URL ```text theme={null} /api/workspace/v1/ ``` ## Request format Every endpoint accepts **both GET and POST**. Parameters can be passed as URL query strings or as a JSON body — they work identically. *** ## Channels ### List Channels Returns all channels accessible to your API key. **Endpoint:** `GET/POST /channels/list` **Parameters:** none **Response:** ```json theme={null} { "success": true, "data": [ { "id": "ch_xxx", "name": "My WhatsApp", "phoneNumberId": "1234", "isActive": true } ], "message": "Found 1 channel(s)" } ``` *** ## Contacts ### Create or Update a Contact Creates a new contact or updates an existing one matched by `phoneNumber`. **Endpoint:** `GET/POST /contacts/manage` | Parameter | Required | Description | | ------------------- | -------- | ------------------------------------------------ | | `phoneNumber` | ✅ | Contact's phone number (e.g. `+1234567890`) | | `channelId` | | Channel ID — auto-selected if you only have one | | `name` | | Display name | | `email` | | Email address | | `profilePictureUrl` | | Profile picture URL | | `customFieldsData` | | JSON object or comma-separated `key:value` pairs | | `labelNames` | | Comma-separated label names or JSON array | **Example:** ```http theme={null} POST /api/workspace/v1/contacts/manage X-API-Key: your_key Content-Type: application/json { "phoneNumber": "+1234567890", "name": "Jane Doe", "labelNames": "vip,lead", "customFieldsData": { "plan": "pro", "source": "website" } } ``` *** ### List Contacts Returns a paginated list of contacts for a channel. **Endpoint:** `GET/POST /contacts/list` | Parameter | Required | Description | | ----------- | -------- | -------------------------------------------- | | `channelId` | | Auto-selected if only one channel | | `page` | | Page number (default: `1`) | | `limit` | | Results per page (default: `50`, max: `200`) | | `search` | | Search by name or phone number | **Response:** ```json theme={null} { "success": true, "data": [...], "pagination": { "page": 1, "limit": 50, "total": 120, "pages": 3 } } ``` *** ## Custom Fields ### Create or Update a Custom Field Creates a new custom field definition or updates an existing one matched by `name`. **Endpoint:** `GET/POST /custom-fields/manage` | Parameter | Required | Description | | ------------ | -------- | --------------------------------------------------------------------------------------------- | | `name` | ✅ | Field name / label | | `channelId` | | Auto-selected if only one channel | | `type` | | `text` \| `number` \| `email` \| `phone` \| `date` \| `label` \| `dropdown` (default: `text`) | | `isRequired` | | `true` or `false` (default: `false`) | | `options` | | JSON array of options for `dropdown` type | *** ### List Custom Fields Returns all custom field definitions for a channel. **Endpoint:** `GET/POST /custom-fields/list` | Parameter | Required | Description | | ----------- | -------- | --------------------------------- | | `channelId` | | Auto-selected if only one channel | *** ## Labels ### Create or Update a Label Creates a new label or updates an existing one matched by `name`. **Endpoint:** `GET/POST /labels/manage` | Parameter | Required | Description | | -------------- | -------- | --------------------------------- | | `name` | ✅ | Label name | | `channelId` | | Auto-selected if only one channel | | `description` | | Description text | | `color` | | Hex color (e.g. `#FF5733`) | | `displayOrder` | | Sort order integer | *** ### List Labels Returns all labels for a channel. **Endpoint:** `GET/POST /labels/list` | Parameter | Required | Description | | ----------- | -------- | --------------------------------- | | `channelId` | | Auto-selected if only one channel | *** ## WhatsApp ### List Templates Returns all approved WhatsApp templates for a channel. **Endpoint:** `GET/POST /whatsapp/templates/list` | Parameter | Required | Description | | ----------- | -------- | --------------------------------- | | `channelId` | | Auto-selected if only one channel | *** ### Send a Template Sends an approved WhatsApp template message to a phone number. The language code is automatically resolved from the stored template if not provided. **Endpoint:** `GET/POST /whatsapp/templates/send` | Parameter | Required | Description | | ------------------- | -------- | ------------------------------------------------------- | | `to` | ✅ | Recipient phone number | | `templateName` | ✅ | Exact template name | | `channelId` | | Auto-selected if only one channel | | `languageCode` | | Language code (default: auto-resolved or `en`) | | `variables` | | Comma-separated body variables: `variables=Hello,World` | | `body1`, `body2`, … | | Body variables by index (alternative to `variables`) | | `header` | | Header text variable | | `image` | | Header image URL | | `video` | | Header video URL | | `document` | | Header document URL | | `mediaUrl` | | Generic media URL (use with `mediaType`) | | `mediaType` | | `image` \| `video` \| `document` | | `apiReference` | | Custom reference ID for tracking | **Example:** ```http theme={null} POST /api/workspace/v1/whatsapp/templates/send X-API-Key: your_key { "to": "+1234567890", "templateName": "order_confirmation", "variables": "John,ORD-1234,29.99" } ``` *** ### Send a Message Sends a regular WhatsApp message (text or media) within a 24-hour session window. **Endpoint:** `GET/POST /whatsapp/message/send` | Parameter | Required | Description | | -------------- | ----------- | ----------------------------------------------------------------------- | | `to` | ✅ | Recipient phone number | | `type` | | `text` \| `image` \| `video` \| `document` \| `audio` (default: `text`) | | `body` | ✅ for text | Message text | | `url` | ✅ for media | Media URL | | `caption` | | Caption for media messages | | `filename` | | Filename for document messages | | `channelId` | | Auto-selected if only one channel | | `apiReference` | | Custom reference ID for tracking | *** ### Get Message Status Returns the delivery status of a sent WhatsApp message by its WAMID. **Endpoint:** `GET/POST /whatsapp/message/status` | Parameter | Required | Description | | --------- | -------- | ---------------------------------------------- | | `wamid` | ✅ | WhatsApp message ID (e.g. `wamid.HBgM...AA==`) | **Response fields:** `status`, `direction`, `type`, `content`, `timestamp`, `deliveredAt`, `readAt`, `error` *** ## Automations ### List Automations Returns all automations for a channel. **Endpoint:** `GET/POST /automations/list` | Parameter | Required | Description | | ----------- | -------- | --------------------------------- | | `channelId` | | Auto-selected if only one channel | *** ### Trigger an Automation Manually triggers an automation for a contact. Creates the contact and conversation automatically if they don't exist. **Endpoint:** `GET/POST /automations/trigger` | Parameter | Required | Description | | ---------------- | ----------- | ---------------------------------- | | `phoneNumber` | ✅ | Contact's phone number | | `automationId` | ✅ (or name) | Automation ID | | `automationName` | ✅ (or ID) | Automation name (case-insensitive) | | `channelId` | | Auto-selected if only one channel | **Response:** ```json theme={null} { "success": true, "data": { "executionId": "exec_xxx", "automationId": "auto_xxx", "automationName": "Welcome Flow", "contactId": "contact_xxx", "conversationId": "conv_xxx", "status": "triggered" } } ``` *** ## Error responses All errors return a consistent shape: ```json theme={null} { "success": false, "error": "Short error reason", "message": "Human-readable detail" } ``` | Status | Meaning | | ------ | ---------------------------------- | | `400` | Missing or invalid parameters | | `401` | Missing or invalid API key | | `403` | Access denied (e.g. wrong channel) | | `404` | Resource not found | | `500` | Server error | # Contact → Pipeline Source: https://docs.xpressbot.org/workspace/automation/contact-pipeline Automatically create or update Pipeline records from Contact data in your automation workflows. # Contact → Pipeline Turns Contact information into Pipeline progress. Use the **Contact → Pipeline** action to take data already stored on the contact — name, phone, labels, custom fields, source — and create or update a record in the right pipeline and stage in a single automation run. Contact and Pipeline are **Automation concepts**, not standalone pages. You configure the Contact → Pipeline action inside the Automation builder as a step of a workflow. ## What each part does ### Contact **Contact** is the source. It is the customer record that triggered the automation — either an existing contact or one created during the flow. A Contact carries the data your workflow can use: * **Identity** — name, phone number, email * **Labels** — segments such as `Hot Lead`, `VIP`, `Support` * **Custom fields** — values collected via ask nodes, WhatsApp Flows, or imports (e.g., `city`, `requirement`, `budget`, `priority`) * **Source & assignment** — channel source, assigned teammate, status * **Trigger context** — the [Event](/workspace/events/overview) that started the run (e.g., Flow submitted, inbound message) The workflow does not need to ask for this data again — it is already available as variables in the builder. ### Pipeline The **Pipeline** action creates or updates a record in the chosen Pipeline and places it in the specified stage. It takes: * **Pipeline** — which pipeline to update (e.g., *Leads*, *Sales*, *Support*) * **Stage** — which stage to place the record in (e.g., *New*, *Qualified*) * **Field mapping** — which Contact fields to store on the pipeline record (e.g., Title = `{{contact.name}}`, City = `{{contact.customFields.city}}`) * **Identity binding** — which contact the pipeline record belongs to (usually the triggering contact: "current contact") After the action runs, the record appears in the selected stage, history is recorded (who/what moved it and when), and any stage-change Events are logged. ### How they connect ``` Incoming customer information (message, ask-node answer, WhatsApp Flow, webhook, import, custom field update) ↓ Contact — data is stored on the contact record (labels, custom fields) ↓ Pipeline action — create/update record in target pipeline & stage using contact fields ↓ Updated pipeline record — visible in Pipelines, with history and context ``` The Contact provides the **data**; the Pipeline action performs the **business move**. Keep them as sequential steps in the same workflow — collect or confirm contact data first, then map it into the pipeline. ## When to use Contact → Pipeline * **Lead qualification:** when a contact has `city` and `requirement` filled, create a record in `Leads → Qualified` with those fields mapped. * **Support triage:** when a contact is labeled `Urgent`, move it into `Support → In Progress` and map `issue_type` and `priority`. * **Booking follow-up:** after collecting `preferred time` on the contact, push into `Bookings → Pending Confirmation`. * **Campaign follow-up:** when a contact clicks or replies, move them from `Leads → New` to `Leads → Contacted` without asking for data again. If you only need to update a contact field without tracking stage progress, you don't need a Pipeline — use a field update. Use Pipeline when you need to see **where** the contact is in your process. ## How to use Contact → Pipeline Go to **Workspace → Automation**. Either create a new workflow (**Create a Workflow**) or open an existing one. Confirm you are in the correct channel context (see [Channels](/workspace/channels)) before editing. Choose the Event that should start this flow — e.g., *Contact created*, *Custom field updated*, *Inbound message*, *WhatsApp Flow submitted*, or *Webhook received*. The trigger determines which Contact data will be available. See [Select a Trigger](/workspace/automation/select-a-trigger). If the workflow collects data, place those steps **before** the Pipeline action: * An **Ask** node that writes to a custom field (e.g., ask for `city`) * A **WhatsApp Flow** that maps to custom fields * A **Condition** that checks a label or field value * Import or API updates that set fields The Pipeline action can only map fields that already exist on the contact at that point in the flow. Add an action and select **Pipeline** (sometimes shown as *Create Pipeline Record*, *Update Pipeline*, or *Move to Pipeline*). Configure: * **Pipeline** — select the destination pipeline (e.g., *Leads*). * **Stage** — select the stage to place the record in (e.g., *New* or *Qualified*). * **Contact binding** — confirm the record is linked to the triggering contact (usually automatic: "current contact"). * **Field mapping** — map Contact fields to pipeline fields. Examples: * Title = `{{contact.name}}` or `{{contact.name}} - {{contact.customFields.requirement}}` * Phone = `{{contact.phoneNumber}}` * City = `{{contact.customFields.city}}` * Labels = `{{contact.labels}}` * Source = `{{contact.source}}` Map only fields that matter for this pipeline stage. Too many fields make the pipeline card hard to scan. If the Pipeline move should only happen sometimes, add a condition before the Pipeline step: * *If `requirement` is not empty → run Pipeline action* * *If `contact.labels` contains `Hot` → move to `Leads → Hot` else `Leads → New`* Keep conditions close to the action they guard so the workflow stays readable. Review the full chain: Trigger → (contact data steps) → Pipeline. Confirm field mappings reference exactly the right Contact variables. Use a controlled run: trigger the automation with a real phone number and realistic Contact data, then open **Pipelines** and verify the record was created in the expected stage with the correct mapped values. Also check the contact's **Events** history to confirm the stage-change Event was recorded. Only then mark the flow active — see [Manage Live Flows](/workspace/automation/manage-live-flows). ## Example **Goal:** when a customer submits a WhatsApp Flow with city and requirement, create a Pipeline record in `Leads → Qualified`. | Step | Configuration | | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Trigger | WhatsApp Flow submitted (Flow: *Lead Intake*) | | Contact data | Flow maps `city` and `requirement` into custom fields on the contact | | Pipeline action | Pipeline = *Leads*, Stage = *Qualified*, Title = `{{contact.name}}`, City = `{{contact.customFields.city}}`, Requirement = `{{contact.customFields.requirement}}` | After submission, the contact shows a new card in **Pipelines → Leads → Qualified**. A teammate can then add a [Note](/workspace/inbox/notes) — *"Discussed pricing. Follow up next week."* — and move the card forward as the deal progresses. Another example — label-based routing: ``` Trigger: Label added = Hot → Pipeline action: Pipeline = Sales, Stage = Priority, map name + phone + source ``` ## Information passed from Contact into Pipeline * **Contact identity** — name, phone, email * **Custom fields** — any text, dropdown, or label fields stored on the contact * **Labels and source** — useful for segmentation inside the pipeline * **Assignment and status** — who owns the contact, whether blocked/active * **Trigger context** — conversation ID, Flow ID, or automation run ID is retained for history where exposed, so the pipeline record links back to the originating interaction ## Limitations and prerequisites * **Pipeline must exist first.** Create the target pipeline and its stages in **Pipelines** before referencing them in Automation. The builder can only select existing pipelines/stages. * **Contact must exist.** Most triggers implicitly create or identify the contact. If your flow tries to map a contact before it is identified, the fields will be empty. * **Field availability matters.** Map only fields that are already set at that point in the flow. If you map an ask-node custom field before that ask node runs, the value will be empty — keep steps ordered. * **One Pipeline action per intended move.** To update multiple Pipelines, add separate Pipeline steps (one per pipeline). * **Empty values are passed as empty.** If a custom field is empty, the pipeline field will be empty — guard optional fields with a condition if needed. * **Permissions apply.** Teammates need *Manage Automations* (and often *Manage Pipelines* / *Manage Contacts*) to create or edit this chain. See [Team](/workspace/team). * **Channel scope.** Automations are channel-scoped — a workflow built under a WhatsApp channel won't fire for a Web Chat event unless configured for that channel. ## Troubleshooting | Symptom | Check | | ---------------------------------- | ------------------------------------------------------------------------------------------------------------- | | Pipeline record not created | Was the trigger Event actually recorded? Check **Events** history. Did the workflow run at all? | | Record in wrong stage | Is the Pipeline stage mapping pointing to the intended stage name? Stage names are exact. | | Mapped field is empty | Is the Contact field set at that point in the flow? Check execution logs / test run variables and step order. | | Record appears under wrong contact | Is the Pipeline step bound to "current contact" vs a static contact? Confirm identity binding. | | Labels not appearing in pipeline | Are labels set on the contact **before** the Pipeline step? Move label actions earlier in the flow. | ## Related docs * [Pipelines Overview](/workspace/pipelines/overview) * [Automation Overview](/workspace/automation/overview) * [Select a Trigger](/workspace/automation/select-a-trigger) * [Create a Workflow](/workspace/automation/create-a-workflow) * [Manage Live Flows](/workspace/automation/manage-live-flows) * [Event Studio](/workspace/events/overview) * [Contacts](/workspace/contacts/overview) * [Contacts – Custom Fields](/workspace/contacts/custom-fields) * [Inbox – Notes](/workspace/inbox/notes) # Create a Workflow Source: https://docs.xpressbot.org/workspace/automation/create-a-workflow Build a focused automation — choose the channel, trigger, and logic that should run after the Event fires. # Create a Workflow A workflow is a repeatable path for a specific job — handling welcome messages, qualifying leads, routing chats, or keeping [Pipelines](/workspace/pipelines/overview) up to date. Build one clear workflow per job so each flow is easy to test and maintain. ## When to create a workflow * The same inbound questions are consuming team time * Leads need consistent, structured qualification * Conversations must be routed to the right owner or queue * Follow-ups and field updates should happen the same way every time * You need to move records through [Pipelines](/workspace/pipelines/overview) automatically via [Contact → Pipeline](/workspace/automation/contact-pipeline) ## How to create a workflow Go to **Workspace → Automation**. Click **Create** or **New Workflow**. Select the channel this workflow belongs to — WhatsApp, Instagram, or Web Chat. Channel choice controls which triggers and actions are available. Confirm in [Channels](/workspace/channels) if you work across multiple channels. Pick the starting [Event](/workspace/events/overview) (see [Select a Trigger](/workspace/automation/select-a-trigger)), then build the logic: ask nodes, conditions, message steps, field updates, and where needed, **Contact → Pipeline** to update Pipelines. Check variable names (especially Contact fields mapped into Pipeline fields), test with a real contact, and verify the result in [Inbox](/workspace/inbox/overview), [Event Studio](/workspace/events/overview), and [Pipelines](/workspace/pipelines/overview). Keep the flow short. If you find yourself adding many branches for different jobs, split them into separate workflows — each one is then easier to understand and to pause without affecting the others. ## Good practice * Name workflows so any admin understands them at a glance: `WA - Lead Intake → Qualified (Contact → Pipeline)` beats `Test flow 3`. * Test on the correct channel with realistic data before marking the flow active. See [Manage Live Flows](/workspace/automation/manage-live-flows). ## Related docs * [Automation Overview](/workspace/automation/overview) * [Select a Trigger](/workspace/automation/select-a-trigger) * [Contact → Pipeline](/workspace/automation/contact-pipeline) * [Manage Live Flows](/workspace/automation/manage-live-flows) * [Event Studio](/workspace/events/overview) * [Pipelines](/workspace/pipelines/overview) # Manage Live Flows Source: https://docs.xpressbot.org/workspace/automation/manage-live-flows Control which automations are active in production — review status, pause outdated flows, and keep only tested workflows live. # Manage Live Flows Live automations affect real customer conversations. This page is how you confirm what's actually running, pause what's outdated, and keep production clean. ## What you can do * Review all workflows for the current channel and workspace * Check status at a glance — **Active**, **Paused**, or **Inactive** * Pause a flow that is misfiring or no longer relevant * Archive or delete flows that are unsafe to keep * Verify recent execution counts and last-run time before making changes ## How to manage flows Go to **Workspace → Automation**. The list shows every workflow for the active channel. Look for status badges and last-run metadata. If a flow misbehaved, open its run history and check the trigger [Event](/workspace/events/overview) that started it. If a campaign ended, routing changed, or logic is under review, set the flow to **Paused** so it stops firing immediately without losing the configuration. Active means *this is safe for customers right now*. Reserve Active for flows that have been tested with real data — see [Create a Workflow](/workspace/automation/create-a-workflow). ## When this matters * A workflow is triggering on the wrong [Event](/workspace/automation/select-a-trigger) * A campaign period has ended but its automation is still active * Routing or [Pipeline](/workspace/pipelines/overview) stages have changed * Multiple admins need to agree on what's live before a launch or rollout ## Good practice * Treat Active flows like production deploys — review weekly and assign an owner to each flow. * Pair pauses with a [Note](/workspace/inbox/notes) or internal comment explaining *why* it was paused and what replaces it. * After any [Contact → Pipeline](/workspace/automation/contact-pipeline) change, verify that Pipeline records still land in the correct stage. ## Related docs * [Automation Overview](/workspace/automation/overview) * [Create a Workflow](/workspace/automation/create-a-workflow) * [Select a Trigger](/workspace/automation/select-a-trigger) * [Contact → Pipeline](/workspace/automation/contact-pipeline) * [Event Studio](/workspace/events/overview) * [Review](/workspace/review/overview) — flag workflows found during quality review # Automation Source: https://docs.xpressbot.org/workspace/automation/overview Build repeatable workflows for routing, follow-ups, and channel actions — from trigger to Pipeline update. # Automation Automation turns repetitive conversations into reliable workflows. Define what should happen when activity occurs — from first replies and routing to data capture and Pipeline moves — and let the system handle the routine while your team focuses on the exceptions. Use **Automation** to: * Build flows for WhatsApp, Instagram, and Web Chat * Choose the [Event that starts the workflow](/workspace/automation/select-a-trigger) — new conversation, inbound message, webhook, and more * Take data from [Contacts](/workspace/contacts/overview) and move it into [Pipelines](/workspace/pipelines/overview) via [Contact → Pipeline](/workspace/automation/contact-pipeline) * Control whether flows are active, paused, or inactive * Reuse templates for consistent responses Treat automations as production systems. A small, tested flow that does one job well is safer than a large flow that tries to own the entire customer journey. ## How automation is structured ### Channel-aware flows Automations are tied to a channel type. The same workspace can run different logic for WhatsApp, Instagram, and Web Chat because the channel determines what triggers and actions are available and which conversations the flow will touch. Always confirm the active channel in [Channels](/workspace/channels) before building or activating a workflow. ### Trigger-driven execution Every flow starts with a trigger — an [Event](/workspace/events/overview) that tells the workflow when to run. Common triggers include: * Inbound messages * New conversations * No-match responses (when the reply doesn't match expected inputs) * Webhook-driven Events * Instagram-specific interaction Events See [Select a Trigger](/workspace/automation/select-a-trigger) for choosing the right one. ### Builder, templates, and actions The Automation builder supports: * **Flow logic** — questions (ask nodes), conditions, and branches * **Actions** — send a message, update a custom field, add a label, move a **Pipeline** record, assign a conversation, and map **Contact** data * **Templates** — reusable message content for approved or high-volume replies. See [Use Templates](/workspace/automation/use-templates). Use [Contact → Pipeline](/workspace/automation/contact-pipeline) to take fields already stored on the contact and create or update a Pipeline record in one chain. Build a focused automation from trigger to action. Map contact data into pipelines automatically. Understand the Events that can trigger workflows. Track where contacts move as workflows run. ## Recommended workflow Decide what the automation must do before you open the builder. Examples: qualify leads, route support tickets, send first responses, recover missed interactions. Match the trigger to the real starting Event. A wrong trigger causes duplicate runs or missed executions. Keep each flow narrow. One clear job per automation keeps testing and ownership simple. Run controlled tests with realistic data and verify the outcome in [Inbox](/workspace/inbox/overview), [Event Studio](/workspace/events/overview), and [Pipelines](/workspace/pipelines/overview) before marking the flow active. ## Good operating habits * **Name clearly.** Include channel, trigger, and purpose — e.g., `WA - Lead Intake → Qualified (Contact→Pipeline)`. * **Keep production flows active only when tested.** Pause new or changed flows until a control run is verified. * **Monitor execution counts and last-run behavior.** If volume spikes or drops, check triggers first. * **Remove outdated flows.** Don't leave ambiguous paused flows — archive or delete them so the active list stays trustworthy. * **Pair with human context.** For sensitive handoffs, have the automation add a [Note](/workspace/inbox/notes) explaining what was automated. ## In this section * [Create a Workflow](/workspace/automation/create-a-workflow) * [Select a Trigger](/workspace/automation/select-a-trigger) * [Contact → Pipeline](/workspace/automation/contact-pipeline) * [Manage Live Flows](/workspace/automation/manage-live-flows) * [Use Templates in Automation](/workspace/automation/use-templates) ## Related docs * [Event Studio](/workspace/events/overview) — the activity that starts automations * [Inbox](/workspace/inbox/overview) — where live conversations happen * [Pipelines](/workspace/pipelines/overview) — where business progress is tracked * [Notes](/workspace/inbox/notes) — internal context that survives handoffs * [Review](/workspace/review/overview) — quality-checking automation outcomes * [Contacts – Custom Fields](/workspace/contacts/custom-fields) — data collected and updated by workflows # Select a Trigger Source: https://docs.xpressbot.org/workspace/automation/select-a-trigger Choose the Event that starts your workflow — and avoid duplicate or missed runs. # Select a Trigger The trigger decides **when** a workflow runs. It listens for a specific [Event](/workspace/events/overview) and starts the automation only when that Event occurs. If a workflow is firing at the wrong time or not at all, the trigger is the first thing to check. ## What a trigger does * Identifies the starting Event — e.g., *Inbound message*, *New conversation*, *Webhook received* * Scopes the run to the correct channel and contact * Makes downstream data available (the message text, contact fields, or webhook payload that triggered the run) A good trigger matches the real business moment. A poor trigger causes duplicate runs, missed conversations, or logic that fires in the wrong place. ## Common triggers | Trigger | Fires when... | Typical use | | ------------------------------------ | --------------------------------------------- | -------------------------------------------- | | **Inbound message** | Any new message arrives in the conversation | Auto-replies, keyword routing, lead capture | | **New conversation** | A conversation is created for a contact | Welcome flows, initial assignment | | **No-match / fallback** | Customer reply doesn't match expected options | Help or re-prompt logic | | **Webhook Event** | Your external system sends a webhook | Syncing outside data into Inbox or Pipelines | | **Instagram / WhatsApp interaction** | A channel-specific interaction occurs | Channel-specific journeys | The exact trigger list depends on channel and workspace configuration. Only triggers available for the selected channel appear in the builder. ## How to choose the right trigger What should the automation achieve? Example: *Qualify leads and create a Pipeline record in Leads → Qualified.* What real activity marks the start? A Flow submission, a keyword message, or a webhook — not a later step in the process. Select the trigger whose Event aligns exactly with that moment. When in doubt, prefer the most specific trigger — *Flow submitted* over generic *Inbound message*. ## Tips * **One trigger per workflow.** Don't try to start the same flow from multiple unrelated Events — create focused flows instead. * **Prefer Events that carry data.** A trigger that includes the payload you need (e.g., Flow outputs for [Contact → Pipeline](/workspace/automation/contact-pipeline)) saves extra lookups. * **Scope by channel.** A trigger built under WhatsApp won't fire for Web Chat unless the workflow is configured for that channel. Confirm in [Channels](/workspace/channels). ## Related docs * [Automation Overview](/workspace/automation/overview) * [Create a Workflow](/workspace/automation/create-a-workflow) * [Contact → Pipeline](/workspace/automation/contact-pipeline) * [Event Studio](/workspace/events/overview) * [Manage Live Flows](/workspace/automation/manage-live-flows) # Use Templates Source: https://docs.xpressbot.org/workspace/automation/use-templates Reuse approved message content inside automations for consistent, predictable replies. # Use Templates in Automation Templates keep automated messages predictable. Instead of typing free-form replies inside each workflow, you reuse approved content so every related flow sends the same vetted message. ## What you can do * Insert a prepared template into any message step of a workflow * Keep first responses, follow-ups, and confirmations consistent across channels * Reduce manual editing — update the template once, reuse it everywhere ## How to use a template Go to **Workspace → Automation** and open the workflow you are building. Insert a message or reply step at the point where the customer should receive a structured response. Choose from approved [WhatsApp templates](/workspace/whatsapp/templates) or other channel-specific templates available in your workspace. Preview variable substitution (e.g., customer name, field values) and confirm the message matches the workflow's purpose before marking the flow active. ## When to use templates * The same welcome or first response is sent repeatedly * A standard follow-up should always look the same * Multiple admins need the same response format * Compliance or brand review requires approved wording ## Good practice * Keep one template per distinct job — don't reuse a generic template across unrelated flows. * Name templates so their use is obvious in the builder. * If a template is paired with a [Contact → Pipeline](/workspace/automation/contact-pipeline) action, verify that the message and the pipeline update tell the same story. ## Related docs * [Automation Overview](/workspace/automation/overview) * [Create a Workflow](/workspace/automation/create-a-workflow) * [Contact → Pipeline](/workspace/automation/contact-pipeline) * [WhatsApp Templates](/workspace/whatsapp/templates) * [Message Logs](/workspace/whatsapp/message-logs) — verify delivery after activation # Channels Source: https://docs.xpressbot.org/workspace/channels Channels is the page used to connect communication channels, review the current active channel, and switch the working context for the rest of the app. Use **Channels** when you need to: * connect a new supported channel * check which channel is currently active * switch the working channel before operating in Inbox, Dashboard, Campaigns, or Analytics * remove channels that are no longer in use This page matters because the active channel controls what data and conversations the user sees in the rest of the workspace. Many areas of the app are channel-based. That means: * Dashboard loads stats for the active channel * Inbox loads conversations for the active channel * campaigns and analytics use the active channel context If the wrong channel is selected, the user will still see data, but it may belong to the wrong number, brand, or integration. ## Active channel area The top working area of the page shows the currently active channel and gives the user a starting point for channel actions. ### What users do here * confirm which channel is currently in use * decide whether they need to continue in the same context * switch before doing any channel-sensitive work This is the first thing a user should check when the app appears to be showing the wrong data. Image ## Channel cards The channel cards are the entry points for supported channel types. ### Current supported channel groups Depending on setup, permissions, and plan limits, users may see channel options such as: * **WhatsApp** * **Web Chat** * **Google** * **Instagram** Other channel types may appear as unavailable, coming soon, or limited depending on the environment. Image ### What users can do from these cards Each card is used to open the setup or management flow for that channel type. This is where the user connects or reviews the integration that powers communication on that channel. ## How to use the page ### Step 1. Confirm the active channel Before going anywhere else in the app, check which channel is active. ### Step 2. Open the required channel type If the needed channel is not yet connected, open the matching card and complete the setup flow. ### Step 3. Switch before doing channel-based work If the user is about to: * reply in Inbox * check Dashboard * launch campaigns * review analytics they should first confirm that the correct channel is active. ### Step 4. Clean up carefully Unused channels should only be removed after confirming they are no longer required by the team or any active workflow. ## Features available on this page * active channel review * channel switching * supported channel setup flows * channel status visibility * channel removal for cleanup * plan-aware and permission-aware channel actions Image ## Best way to use Channels Channels works best as: * the first stop after login when multiple channels exist * the setup page for new communication channels * the correction point when Dashboard or Inbox appears to be showing the wrong data ## Related docs * [Dashboard](/docs/dashboard) * [Inbox](/docs/inbox) * [WhatsApp](/docs/whatsapp) * [Instagram](/docs/instagram) * [Web Chat](/docs/web-chat) # Custom fields Source: https://docs.xpressbot.org/workspace/contacts/custom-fields Custom Fields let you store additional contact information beyond the default contact details. They are useful for collecting and reusing customer data across contacts, automations, WhatsApp flows, and ask nodes. Image ## Overview Custom Fields can be used to: * Store customer details collected from conversations * Capture answers from automation ask nodes * Save data submitted through WhatsApp flows * Segment contacts based on stored values * Personalize future messages and campaigns ## Field Library The Field Library shows all custom fields created in the workspace. Each field includes: * **Field Name** — The name used to identify the stored value * **Field Type** — The type of value stored, such as text, dropdown, or label * **Required Field** — Whether the field is required during contact creation * **Date** — When the field was created * **Actions** — Edit or delete the field ## Common Use Cases ### Automation Ask Nodes When an automation asks a user for information, the answer can be saved into a custom field. Example: * Ask for company name * Ask for city * Ask for requirement * Ask for preferred time * Save the response to the contact profile This allows the data to be reused later in the conversation or in future campaigns. ### WhatsApp Flows Data collected from WhatsApp flows can be mapped and stored in custom fields. This is useful for forms such as: * Lead forms * Booking forms * Customer inquiry forms * Feedback forms * Support request forms ### Contact Segmentation Custom fields help filter and group contacts based on stored information. Examples: * City * Company * Customer type * Interest * Lead source ## Field Types Custom fields may support different field types depending on setup. Common field types include: * **Text** — Stores free text values * **Dropdown** — Stores selected options * **Label** — Stores label-based values ## Actions Users can: * Add new custom fields * Search existing fields * Edit field details * Delete unused fields * Mark fields as required or optional ## Recommended Workflow 1. Create required custom fields before building automations or flows 2. Use ask nodes or WhatsApp flows to collect customer data 3. Store responses in the correct custom fields 4. Use saved values for segmentation, personalization, and follow-up ## Best Practices * Create fields with clear names * Avoid duplicate fields with similar meaning * Use dropdown fields when values should stay consistent * Use text fields for open-ended answers * Review unused fields regularly * Do not delete fields that are used in active automations or flows ## Related Docs * [Contacts](/docs/contacts) * [Automations](/docs/automations) * [WhatsApp Flows](/docs/whatsapp/flow) * [Campaigns](/docs/campaigns) # Labels Source: https://docs.xpressbot.org/workspace/contacts/labels Labels help organize and segment contacts into meaningful groups for campaigns, automation, and targeting. Image *** ## Overview The Labels page allows you to: * Create and manage labels * View all labels in one place * Track how many contacts belong to each label * Organize contacts into targeted segments *** ## Label Library This section displays all created labels. Each label includes: * **Label Name** — Identifier for the segment * **Description** — Optional details about the label * **Contacts Count** — Number of contacts assigned * **Created Date** — When the label was created Use this view to manage and maintain your segmentation structure. *** ## Create Label Create a new label to organize your contacts. ### Fields * **Label Name** — Required field for identifying the label * **Description** — Optional notes about the label ### Actions * **Create** — Save the label * **Cancel** — Close without saving *** ## What Labels Are Used For Labels are commonly used for: * Campaign targeting * Customer segmentation * Workflow automation * Grouping users by behavior or category *** ## Recommended Workflow 1. Create labels based on your use case 2. Assign labels to contacts 3. Use labels in filters, campaigns, and automations 4. Regularly review and clean unused labels *** ## Best Practices * Keep label names simple and consistent * Avoid creating duplicate or similar labels * Use labels for segmentation, not temporary tagging * Periodically review label usage *** ## Related Docs * [Contacts](/docs/contacts) * [Campaigns](/docs/campaigns) * [Automations](/docs/automations) * [Inbox](/docs/inbox) # Contacts Source: https://docs.xpressbot.org/workspace/contacts/overview Manage your contact database — add, organize, and act on customer records across every channel. # Contacts Contacts is where every customer record lives. It gives you a single view of users across WhatsApp, Instagram, Web Chat, and other connected channels — with status, labels, activity, and the actions you can take. Use Contacts when you need a structured database rather than scattered conversation threads. Image *** ## Key Metrics * **Total Contacts** — All contacts stored in the system * **Active Contacts** — Contacts available for messaging * **Blocked Contacts** — Contacts restricted from receiving messages These metrics provide a quick snapshot of your contact base. Image *** ## What You Can Do * View all contacts in one place * Add new contacts manually * Search contacts by name or phone * Manage contact status * Export or import contact data ## Contact Table The main table displays detailed information for each contact. ### Fields * **Contact** — Name and phone number * **Labels** — Tags used for segmentation * **Source** — Channel or origin of contact * **Assigned To** — Responsible team member * **Status** — Active or unsubscribed * **Created At** — When the contact was added ## Why Use Contacts Instead of managing users inside conversations: * Maintain a structured contact database * Segment users effectively * Assign ownership clearly * Enable better targeting for campaigns *** ## Recommended Workflow 1. Add or import contacts 2. Assign labels for segmentation 3. Assign contacts to team members 4. Use filters to manage groups 5. Use contacts in campaigns or automations *** ## Best Practices * Keep contact data clean and updated * Use labels consistently * Avoid duplicate contacts * Regularly review inactive or unsubscribed users * Use import/export for bulk updates *** ## How Contacts connect to other features * **[Inbox](/workspace/inbox/overview)** — conversations are the chat thread for a contact; [Notes](/workspace/inbox/notes) add human context to that thread. * **[Event Studio](/workspace/events/overview)** — every meaningful action on a contact is recorded as an Event, visible in history and usable as automation triggers. * **[Pipelines](/workspace/pipelines/overview)** — contacts move through pipeline stages to track business progress. * **[Labels](/workspace/contacts/labels)** and **[Custom Fields](/workspace/contacts/custom-fields)** — structured data that automations and [Contact → Pipeline](/workspace/automation/contact-pipeline) can read and write. ## Related docs * [Inbox](/workspace/inbox/overview) * [Event Studio](/workspace/events/overview) * [Pipelines](/workspace/pipelines/overview) * [Labels](/workspace/contacts/labels) * [Custom Fields](/workspace/contacts/custom-fields) * [Channels](/workspace/channels) * [Automation](/workspace/automation/overview) # Pipelines Source: https://docs.xpressbot.org/workspace/contacts/pipelines Track contacts and deals as they move through your process — organize stages, move records, and connect automation. # Pipelines Pipelines turn conversations and contacts into trackable progress. Instead of remembering who is where in your process, you move each record through defined stages and always know what to do next. Know what happened. Every meaningful action is recorded as an Event. Keep human context. Add internal notes right where work happens. Track business progress. Move contacts and deals stage by stage. Automate the movement. Update pipelines automatically from triggers. ## What Pipelines are A **Pipeline** is a set of ordered **stages** that represent your process. Each record (typically a contact or deal) sits in one stage at a time and moves forward as work progresses. **Common examples:** | Pipeline | Stages | | ------------------ | ---------------------------------------------------------------- | | Lead qualification | New → Contacted → Qualified → Converted | | Sales | Lead → Proposal Sent → Negotiation → Won / Lost | | Support | Open → In Progress → Waiting on Customer → Resolved | | Onboarding | Application Received → Documents Pending → Verification → Active | You choose the stages that match your real operation — Pipelines are not a fixed sales tool; they model whatever flow your team follows. ## Why Pipelines matter Without Pipelines, progress lives in memory, spreadsheets, or scattered notes. With Pipelines: * Everyone sees where each contact stands at a glance * Handoffs are clearer (stage tells the next owner what is expected) * Automations can move records automatically instead of relying on manual updates * Reporting becomes reliable — you can count how many records are in each stage and where they stall Pipelines track **business state**, not conversation content. Messages live in [Inbox](/workspace/inbox/overview); Pipelines answer "where are we in the process?" ## Where to find Pipelines If you work across multiple channels, confirm the active channel in **Workspace → Channels**. Pipelines are scoped to the workspace/channel where they were created. Go to **Workspace → Pipelines** in the sidebar. You'll see all pipelines for the current workspace, the stages in each pipeline, and the records currently in each stage. Click any record to see its contact details, conversation link, current stage, history of stage changes, and any [Event Studio](/workspace/events/overview) or [Notes](/workspace/inbox/notes) associated with it. If Pipelines does not appear in your sidebar, your workspace may use a different label (such as **Boards**, **Deals**, or **Stages**) or the feature may be permission-gated. Check **Team → Permissions** or ask a workspace admin. ## How Pipelines work ### Stages Stages are ordered columns or lists. A record belongs to exactly one stage at a time. Common stage settings include: * **Name and order** — e.g., `New`, `Qualified`, `Proposal`, `Won` — the order defines the forward path. * **Color or label** — visual aid for scanning (where supported). * **Entry rules** — some workspaces restrict who can move records or require certain fields to be filled. ### Records A Pipeline record is typically linked to a **contact** (and optionally a conversation or deal). It carries: * **Contact identity** — name, phone, labels, custom fields * **Current stage** — where the record sits now * **History** — when it entered each stage and who or what moved it (manual or automation) * **Context** — related Events, Notes, and assignment ### Moving records * **Manually** — drag a card to a new stage or use the **Move to stage** action inside the record. Useful for ad-hoc updates. * **Via automation** — use the **Pipeline** action inside an Automation to map Contact fields into the pipeline. See [Contact → Pipeline](/workspace/automation/contact-pipeline). Moving a record is a business decision. Automations that move Pipeline stages should be tested with real data before going live. See [Manage Live Flows](/workspace/automation/manage-live-flows). ## Pipelines and automation Pipelines become most powerful when automations keep them up to date: * **Event triggers it:** a new inbound message, a field update, or a webhook creates an [Event](/workspace/events/overview). * **Contact provides the data:** custom fields, labels, and identity already stored on the contact (e.g., `city`, `requirement`) are available for mapping. * **Pipeline action moves the record:** automation creates or updates the record in the correct pipeline and stage using the mapped Contact fields, and records the change as history. Example flow: ``` Incoming customer info (Events / ask node / WhatsApp Flow) → Contact fields updated (name, requirement, city) → Pipeline action: create/update record in "Leads" → stage "Qualified" with mapped Contact data → Team sees the new card in Pipelines and follows up ``` Read the full step-by-step in [Contact → Pipeline](/workspace/automation/contact-pipeline). ## Good operating habits * **Match stages to your real process, not an ideal one.** If your team consistently skips a stage, remove it — the pipeline should reflect how work actually moves. * **Keep one Pipeline per distinct process.** Don't mix sales and support in the same Pipeline; create separate Pipelines so reporting stays meaningful. * **Require minimal fields per stage.** If `Qualified` requires a phone and requirement, enforce that at the stage transition (via automation or manual checklist) rather than relying on memory. * **Review stage distribution weekly.** Many records stuck in one stage usually signals a bottleneck in the process, not a tooling issue. * **Pair stage changes with Notes where a human judgment happened.** Event says *moved to Qualified*; Note explains *why* — "Customer confirmed budget and timeline." ## Pipelines vs Events vs Notes vs Conversations | Feature | Purpose | Typical question | | ----------------- | ------------------------------ | ----------------------------- | | **Events** | Records meaningful activity | What happened and when? | | **Notes** | Stores internal human context | What should the team know? | | **Pipelines** | Tracks business/process stage | Where is this in our process? | | **Conversations** | Handles customer communication | What did we say? | Use all four together — they complement each other. ## Related docs * [Contact → Pipeline](/workspace/automation/contact-pipeline) — automating pipeline updates from contact data * [Automation Overview](/workspace/automation/overview) — building workflows that move pipeline records * [Select a Trigger](/workspace/automation/select-a-trigger) — choosing the Event that starts the workflow * [Event Studio](/workspace/events/overview) — what triggers pipeline changes * [Notes](/workspace/inbox/notes) — adding handoff context when you move a record * [Contacts](/workspace/contacts/overview) — the contact behind each pipeline record * [Inbox](/workspace/inbox/overview) — where conversations happen # Dashboard Source: https://docs.xpressbot.org/workspace/dashboard The Dashboard provides a real-time overview of your workspace activity. It is designed to give quick visibility into messaging performance, system usage, and recent actions — all in one place. Screencapture Stage Skyfree In Dashboard 2026 04 23 13 04 09 Edit ## Overview The page is structured into three main sections: * Metric Cards (Top Summary) * Message Analytics * Recent Activities All data shown is specific to the selected channel or workspace context. *** ## Metric Cards The top section displays a grid of summary cards. Each card represents a key metric. Image ### Available Metrics | Metric | Description | | -------------------- | ------------------------------------------ | | Total Messages | Total number of messages sent and received | | Today’s Messages | Messages processed today | | Read Messages | Messages that have been opened/read | | Failed Messages | Messages that failed delivery | | Total Contacts | Number of contacts available | | Total Labels | Labels created for segmentation | | Total Custom Fields | Custom fields configured | | Total Automations | Automation workflows created | | Total Campaigns | Campaigns executed | | Total Templates | Message templates available | | Total WhatsApp Flows | Interactive WhatsApp flows | | Total Tickets | Support or conversation tickets | These metrics provide a quick snapshot of system usage and performance. *** ## Message Analytics This section shows message trends over time using a line chart. Image ### Features * Visual trend of message activity * Tracks: * Sent messages * Read messages * Failed messages * Time range filters: * Today * 7 Days * 30 Days ### Usage Use this section to: * Identify peak messaging periods * Monitor delivery performance * Track engagement trends *** ## Recent Activities Displays a timeline of the latest actions performed in the workspace. Image ### Includes * User actions (login, updates, creation) * System events * Timestamp for each activity This helps in tracking changes and monitoring team activity. *** ## Behavior Notes * All metrics are dynamically updated based on the active workspace or channel. * Data refreshes automatically based on system activity. * Analytics reflect historical trends based on selected filters. *** ## Summary The Dashboard acts as a central monitoring layer, allowing users to: * Track messaging performance * Monitor system usage * Review recent activity * Quickly assess overall platform health *** # Event Studio Source: https://docs.xpressbot.org/workspace/events/overview Create and manage Events that capture real activity — then use them to trigger automations and update Pipelines. # Event Studio Event Studio is where you define what counts as an Event. Every meaningful action — a message arriving, a contact field changing, an automation firing — can be captured as an Event, inspected with full context, and used to trigger the right follow-up. Define and track meaningful activity. Know what happened and when. Turn Studio Events into actions. Start workflows automatically. ## Overview Think of Event Studio as the workspace's memory. Unlike a chat message (customer-facing) or a Note (human comment), an Event is a system-level fact created in Studio that is searchable, filterable, and usable in automation. Use Event Studio when you need to: * Decide which activities should create an Event (and which should stay as plain logs) * See what happened, to whom, and with what context — with contact and conversation linked * Trigger automations and [Contact → Pipeline](/workspace/automation/contact-pipeline) moves directly from Events Event Studio defines the **what** and **when**. [Automations](/workspace/automation/overview) define the **what next**. ## What you can create in Event Studio An Event in Studio is a structured record: **something happened, to whom, when, and with what context.** Studio lets you work with Event types such as: * Inbound message received (WhatsApp, Instagram, Web Chat) * Outbound message sent / delivered / read / failed * New conversation started or resolved / archived * Contact created, updated, or assigned * Custom field value collected (e.g., `city = Mumbai` via an ask node or WhatsApp Flow) * Label added or removed * Automation started, completed, or paused * Support ticket created or status changed * Webhook received from an external system You choose which of these become first-class Events in your workspace. Not every tiny interaction needs to be an Event — Studio should record activity that matters to tracking, reporting, or triggering the next step. ## How Event Studio connects ``` Customer or system activity → Event Studio (Event defined & recorded) → Event data & context → Automation or business action ``` Event Studio is a standalone Studio for defining and recording activity. It is **not** where you manage internal human context or business stages: * For internal human context, use [Notes](/workspace/inbox/notes) inside [Inbox](/workspace/inbox/overview) — e.g., *"Customer prefers evening callbacks."* * For business progress and stage tracking, use [Pipelines](/workspace/pipelines/overview) — e.g., `Lead → Qualified → Won` * For the actual chat with the customer, use [Conversations in Inbox](/workspace/inbox/conversation-view) Within Studio itself: * Every Event is associated with a **contact** (and often a conversation), so you can open a contact and see its Studio event history in chronological order. * Studio Events are the most common [automation triggers](/workspace/automation/select-a-trigger). When a matching Event occurs, the automation runs. * A Studio Event can also trigger a pipeline move via [Contact → Pipeline](/workspace/automation/contact-pipeline) — Studio records the activity, Pipelines track the business outcome separately. ## Where to find Event Studio Choose the correct channel context from **Workspace → Channels** if your workspace uses multiple channels. Event Studio is scoped to the active workspace/channel. Navigate to **Workspace → Event Studio** in the sidebar (labeled **Events** in some workspaces). If you don't see it, your workspace may surface events through the Contact profile or Conversation timeline instead — check the **Activity** or **History** tab inside a contact or conversation. Use search and filters to narrow by contact, event type, time range, or source. The fastest way to see Events for one person is to open the contact in **Contacts** or open the conversation in **Inbox** — SkyFree shows that contact's recent Studio Events alongside messages and Notes. ## What you can do in Event Studio ### View event history See a reverse-chronological list of Studio Events for the workspace or for a single contact. Each entry shows when it happened and what triggered it. ### Inspect event details Open an Event to review: * **Timestamp** — when the activity occurred (workspace timezone) * **Contact** — who the Event is about (name, phone, contact ID) * **Source** — where it came from (e.g., `whatsapp`, `web-chat`, `automation`, `api`, `webhook`, `system`) * **Event type / name** — a short identifier such as `message.received` or `contact.updated` * **Properties / context** — structured data carried by the Event (e.g., message text snippet, field name and new value, automation name, campaign ID) * **Related records** — links to the conversation, automation run, or pipeline record if applicable The exact fields you see depend on the Event type. A `message.received` Event carries different properties than a `contact.label_added` Event. ### Filter and search Typical Studio filters include: * **Event type** — e.g., messages, contact updates, automation events * **Source / channel** — WhatsApp, Instagram, Web Chat, API * **Contact** — phone number, name, or contact ID * **Date range** — Today, 7 days, 30 days, or custom range * **Automation or pipeline** — filter to Events tied to a specific workflow Use filters before searching on large workspaces — it's much faster than scanning the full history. ### Use Studio Events in automation Studio Events are the primary way to start automations without manual action: 1. Create or edit an automation in **Automation → Create a Workflow**. 2. Choose an Event Studio trigger such as *Inbound message*, *New conversation*, or *Webhook event*. 3. Build the downstream logic (reply, assign, update field, run [Contact → Pipeline](/workspace/automation/contact-pipeline)). 4. Publish and monitor execution — each run is itself traceable as Studio Events. Learn more in [Select a Trigger](/workspace/automation/select-a-trigger) and [Create a Workflow](/workspace/automation/create-a-workflow). ## Event lifecycle in Studio ```mermaid theme={null} flowchart LR A[Customer or system activity] --> B[Event Studio records Event] B --> C[Event data & context stored] C --> D{Automation or manual action?} D -->|Matched trigger| E[Automation runs] D -->|No trigger| F[Visible in history for review] E --> G[Message, field update, or Pipeline move] ``` 1. **Activity happens** — a customer sends a message, a field is updated, or a system job completes. 2. **Studio records an Event** with timestamp, contact, source, and properties based on your Studio definition. 3. **Context is stored** so the Event is searchable and can be inspected later. 4. **Something acts on it** — either an automation whose trigger matches the Studio Event, or a teammate reviewing history and taking manual action (reply, add Note, move Pipeline stage). If no automation matches, the Event still remains in Studio history for reporting and debugging. ## When to use Event Studio Use Event Studio when you need a reliable, filterable trace of activity that can drive automation: * You need to know *what happened, to whom, and when* — e.g., `message.received` at 17:02 from +91… with campaign ID → **Event Studio** * You need to trigger a workflow automatically when that activity occurs → configure a Studio Event as an [automation trigger](/workspace/automation/select-a-trigger) For other jobs, use the dedicated feature instead of Studio: * Leave internal handoff context for the next shift — *"Customer asked to be called after 5 PM."* → [Notes](/workspace/inbox/notes) * Track where a contact is in your sales or support process → move from `New` → `Qualified` → [Pipelines](/workspace/pipelines/overview) * Talk to the customer directly → [Conversations in Inbox](/workspace/inbox/conversation-view) ## Best practices in Event Studio * **Name and classify Studio Events consistently.** If your workspace creates custom Events via API or webhooks, use a stable naming pattern (e.g., `payment.completed`, `demo.booked`) so triggers don't miss them. * **Filter before you search.** On busy workspaces, start with event type + date range, then add the contact filter. * **Pair Studio Events with a Pipeline or Note where a human needs context.** A Studio Event says *what* happened; a Note explains *what to do about it*. * **Test Studio Event-triggered automations with real data.** Send a controlled test message and confirm the Studio Event appears before marking the automation live. See [Manage Live Flows](/workspace/automation/manage-live-flows). * **Use Studio for debugging.** If an automation didn't fire, check Studio first whether the expected Event was recorded at all — the trigger is usually the first place to look. ## Related docs * [Inbox Overview](/workspace/inbox/overview) — where Studio Events appear alongside messages and Notes * [Contacts](/workspace/contacts/overview) — contact-level activity and associations * [Automation Overview](/workspace/automation/overview) — how Studio Events turn into workflows * [Select a Trigger](/workspace/automation/select-a-trigger) — choosing the Studio Event that starts a workflow * [Contact → Pipeline](/workspace/automation/contact-pipeline) — use Studio Event data to build values and move pipelines * [Pipelines](/workspace/pipelines/overview) — track business progress * [Notes](/workspace/inbox/notes) — internal human context # File manager Source: https://docs.xpressbot.org/workspace/file-manager The File Manager provides a centralized view of all files shared across conversations and channels. It allows users to quickly access, track, and download files without searching through the Inbox. Image *** ## Overview All files sent or received through connected channels (such as WhatsApp, Instagram, or Web Chat) are automatically collected here. This eliminates the need to manually search conversations to find attachments. *** ## Key Metrics * **Total Files** — Total number of files across the active channel * **Received Files** — Files received from contacts * **Sent Files** — Files sent by your team These metrics provide a quick snapshot of file activity. *** ## What You Can Do * View all files in one place * Open files directly * Download files instantly * Filter files by type or direction * Search files by sender, phone, or message *** ## File Categories Files are automatically grouped by type: * Images * Videos * Voice * PDF * Sheets * Others This helps users quickly locate specific file types. *** ## Filters and Controls ### Available filters * **Direction** — Sent or Received * **Category** — File type grouping * **Date Range** — Filter by time period * **Search** — Find files using keywords Using filters reduces time spent locating files. *** ## Why Use File Manager Instead of: * Opening multiple conversations * Scrolling through message history * Searching manually in Inbox You can: * Access all files in one place * Quickly open or download * Track file activity across channels *** ## Recommended Workflow 1. Open File Manager 2. Apply filters (type, date, direction) 3. Search if needed 4. Open or download the required file *** ## Best Practices * Use File Manager instead of Inbox for file lookup * Apply filters before searching * Regularly review sent vs received files * Use categories to quickly narrow results *** ## Related Docs * [Inbox](/docs/inbox) * [Channels](/docs/channels) * [Contacts](/docs/contacts) # Conversation View Source: https://docs.xpressbot.org/workspace/inbox/conversation-view Read, manage, and reply inside the active chat — with full context from messages, Notes, Events, and Pipeline state. # Conversation View The Conversation View is the operator's workspace for a single conversation. Read the full history, check who the contact is, and reply — without losing the context around the chat. Conversation View ## Message timeline The center of the screen shows the complete history for this contact and conversation. **Use it to:** * Read prior messages before replying * See how the customer phrased their request * Distinguish manual replies from automated ones * Check timestamps and delivery status * Spot internal [Notes](/workspace/inbox/notes) and system [Event Studio](/workspace/events/overview) inline with messages The timeline is the source of truth. A quick scan of the last 3–4 entries plus the most recent Note prevents duplicate or out-of-context replies. Reviewing the timeline prevents: * Duplicate replies when another teammate already answered * Out-of-context responses that miss the customer's intent * Missed details that were already collected via custom fields or Flows ## Conversation header The top bar shows identity and controls for the active conversation. Conversation header **What you see:** * Contact name and phone number * Channel (e.g., WhatsApp) * Labels and status (e.g., Active, Unsubscribed) * Current [Pipeline](/workspace/pipelines/overview) stage, where linked **What you can do:** * Reassign the conversation to another teammate * Pause or resume automation for this conversation * Open contact details for [Custom Fields](/workspace/contacts/custom-fields) and labels * Start quick actions such as call or menu options, where available ## Timeline actions Actions are available directly on messages without leaving the view. Message actions * **Translate** a customer message * **React** to a message * Open **quick actions** and reply tools depending on channel These keep common tasks one click away so operators stay in the flow. ## Reply composer The input area at the bottom is where you send replies. Reply composer **You can:** * Type and send text replies * Attach files or media (images, video, documents, voice) * Share location * Insert approved templates * Trigger follow-up logic (where automation and template actions are exposed) Composer tools Composer helpers Read the last messages, the most recent Notes, and the current Pipeline stage before you type. Check that the conversation is assigned to you — or assign it now — so ownership stays clear. Write a concise, accurate reply. Attach media or insert a template only when it matches the customer's intent. ## Notes and Events in the timeline * **[Notes](/workspace/inbox/notes)** appear inline as internal entries — e.g., *"Customer requested callback after 5 PM"* — visible only to your team, never to the customer. * **[Event Studio](/workspace/events/overview)** (such as automation runs or field updates) may surface as system entries with timestamps and source, giving you the trace of what triggered the current state. Both are invaluable during handoffs and later [Review](/workspace/review/overview). ## System messages Some entries are generated automatically: * Automation replies and welcome messages * System notifications (e.g., "Sent by automation" or status changes) They are visually distinct from human replies so operators can quickly distinguish automated from manual behavior. ## Load more history For long-running threads, use **Load more messages** to fetch older history. Useful when a returning contact references a past issue. ## Related docs * [Inbox Overview](/workspace/inbox/overview) * [Notes](/workspace/inbox/notes) — add internal context before or after replying * [Event Studio](/workspace/events/overview) — understand the activity trace behind the conversation * [Pipelines](/workspace/pipelines/overview) — see the business stage for this contact * [Review](/workspace/review/overview) — how completed conversations are quality-checked * [Contacts](/workspace/contacts/overview) * [Conversation List](/workspace/inbox/conversations-list) * [Conversation Controls](/workspace/inbox/conversations-controls) # Conversation Controls Source: https://docs.xpressbot.org/workspace/inbox/conversations-controls Filter and manage conversations at queue level — assign, archive, and keep the workload organized. # Conversation Controls Tools for managing the queue without opening every conversation. Use them to keep assignment and status accurate at a glance. Inbox controls | Control | What it does | | -------------------------- | ------------------------------------------------------------------------------------------------ | | **View all conversations** | Shows the full list for the active channel. | | **Assign conversation** | Give ownership to a teammate. Clear ownership prevents duplicate replies. | | **Unassigned filter** | Shows conversations with no owner — use it to pick up new or missed queries. | | **Open conversations** | Active threads that need attention. Your primary working queue. | | **Resolved / Closed** | Completed conversations. Useful for [Review](/workspace/review/overview) or confirming outcomes. | | **Archive** | Move conversations out of the active queue without deleting history. | | **Block contact** | Prevent a contact from sending further messages. Use sparingly and per policy. | | **Remove assignment** | Clear the owner so the conversation returns to the unassigned pool. | ## Why this matters These controls keep queue management fast and workload organized — less manual filtering, faster response, and clearer ownership for the next shift. Pair assignment changes with a [Note](/workspace/inbox/notes) — e.g., *"Customer asked to be called after 5 PM"* — so the next owner has context immediately. ## Related docs * [Inbox Overview](/workspace/inbox/overview) * [Conversation List](/workspace/inbox/conversations-list) * [Conversation View](/workspace/inbox/conversation-view) * [Notes](/workspace/inbox/notes) * [Review](/workspace/review/overview) # Conversation List Source: https://docs.xpressbot.org/workspace/inbox/conversations-list Scan and prioritize your working queue — view all conversations, spot what needs attention, and switch instantly. # Conversation List The left panel is your working queue. It shows every conversation for the active channel so you can triage quickly. Conversation list ## What you can do ### View all conversations One list across connected channels. You get a complete picture of incoming and ongoing interactions without switching screens. ### Identify what needs attention Unread badges, timestamps, and last-message previews highlight which conversations are new or recently active, so urgent messages don't get buried. ### Prioritize Choose which conversation to handle next based on recency, status, or importance. Critical queries get picked up first. ### Switch instantly Move between conversations without leaving Inbox. Open a thread, reply, then jump to the next — with [Notes](/workspace/inbox/notes) and [Event Studio](/workspace/events/overview) preserved in each thread's history. ## Why it matters The conversation list is the entry point for all Inbox work. It reduces searching, prevents opening the wrong thread, and keeps your workflow focused. ## Related docs * [Inbox Overview](/workspace/inbox/overview) * [Conversation Controls](/workspace/inbox/conversations-controls) * [Conversation View](/workspace/inbox/conversation-view) * [Notes](/workspace/inbox/notes) # Notes Source: https://docs.xpressbot.org/workspace/inbox/notes Add internal context to conversations — create notes, reminders, and alerts that only your team can see. # Notes Notes keep internal context attached to a conversation. Use them to share handoff details, track follow-ups, and leave reminders without sending anything to the customer. Notes are internal-only. Customers never see them. They appear inline in the conversation timeline for your team. Add Note in Conversation View ## What Notes are A Note is a short internal entry pinned to a conversation. It lives alongside messages but is visually distinct so your team can spot context quickly. Use Notes when you need to: * Hand off a conversation with context — *"Customer requested a callback after 5 PM."* * Record what was agreed — *"Discussed pricing for Pro plan. Follow up next week with proposal."* * Flag something for later — *"Waiting for finance to confirm refund. Check back tomorrow."* Notes are tied to the **conversation and the contact**. Anyone on your team who opens that conversation sees the same notes, so context survives assignment changes. ## Where Notes appear * **Inside Conversation View** — notes show in the message timeline with an icon and author name. * **In the conversation preview** — the Inbox list can surface that a note was added (so teammates know context exists before opening). * **In assignment and handoff flows** — when you reassign a conversation, add a note first so the next owner has the full story. Notes do **not** appear in: * The customer's WhatsApp, Instagram, or Web Chat thread * Campaign or template previews * Contact exports (unless your workspace explicitly includes internal notes) ## Who can see Notes * **All team members** with Inbox access in that workspace and channel can view notes. * **Customers cannot** see notes under any circumstance. * Permissions follow your [Team](/workspace/team) settings — if a teammate can open the conversation, they can read its notes. ## How to add a Note Go to **Workspace → Inbox** and select the conversation you want to annotate. Make sure the correct channel is active at the top of the page. In **Conversation View**, click **Add Note** (above or beside the reply composer, depending on your layout). Pick the type that matches your intent — see types below. Enter a focused note and save. It appears instantly in the timeline for your team. Reminder scheduling ## Note types SkyFree provides five note types. Choose the lightest type that gets the job done. | Type | When to use it | Visibility | Typical example | | ----------------- | ---------------------- | -------------------------------- | ------------------------------------------------------------------------- | | **Internal Note** | Private team comment | Team only | "Customer is comparing us with competitor X. Highlight SSO on next call." | | **Follow-up** | Task that needs action | Team only, flagged for action | "Needs callback tomorrow morning — phone was busy." | | **Set Reminder** | Time-based nudge | Team only, triggers notification | "Remind me on 28 Aug, 5:00 PM to check refund status." | | **Warning** | High-priority alert | Team only, highlighted | "Sensitive account — do not promise discounts without manager approval." | | **Info** | Low-priority reference | Team only | "Customer prefers Hindi for support replies." | ### Internal Note The default type for handoffs and context sharing. Use it when you just need to leave a comment for the next person. ### Follow-up Marks the conversation as needing action. Pair it with assignment so ownership is clear — e.g., assign to Priya and leave a Follow-up note describing what to do. ### Set Reminder Creates a timed alert on the conversation. When you select this type you configure: * **Date** — when the reminder should fire * **Time** — exact time for the alert At the scheduled time SkyFree shows a pop-up and sound notification to the assignee or team, so nothing slips through. Use Reminders instead of leaving a Follow-up note with a date in the text. Reminders are searchable and actually notify you. ### Warning For issues that need attention before any other action — escalations, compliance flags, or blocked-request cases. Use sparingly; if everything is a warning, nothing is. ### Info Lightweight reference that doesn't require action. Good for preferences, account notes, or background that helps personalize future replies. ## Editing and lifecycle * Notes are **appended** to the conversation timeline and remain with the conversation history. * Treat notes as an audit trail — write them so a teammate reading next week still understands the context. * If you need to correct a note, add a follow-up note clarifying the update (e.g., "Correction: callback is 6 PM, not 5 PM") rather than relying on memory. If your workspace restricts editing or deleting notes, the timeline is intentionally append-only to preserve a clear handoff history. ## Notes vs Events vs Pipelines New users often confuse these. Here's the short version: | Feature | Purpose | Who creates it | Customer sees it? | | ----------------- | --------------------------------------------------------------------------- | -------------------- | ------------------------------------- | | **Events** | Records meaningful activity (message sent, automation fired, field updated) | System or automation | No — used for tracking and automation | | **Notes** | Stores internal human context | A teammate | No | | **Pipelines** | Tracks business stage (lead → qualified → won) | Team or automation | No | | **Conversations** | Handles customer communication | Customer + team | Yes | * **Use Notes** when a human needs to leave context. * **Use Events** when the system needs to remember that something happened. * **Use Pipelines** when you need to move a contact or deal through stages. Learn more in [Event Studio](/workspace/events/overview) and [Pipelines](/workspace/pipelines/overview). ## Best practices * **Add a note before every handoff.** Even one line — *"Tried to call, no answer. Customer asked to try again after 6 PM"* — saves the next person from asking the customer to repeat themselves. * **Keep notes focused.** One idea per note. Two short notes are easier to scan than one long paragraph. * **Pair notes with action.** If a note describes a task, also set a Reminder or a Follow-up and make sure the conversation is assigned. * **Reserve Warnings for real urgency.** If Warnings are rare, your team will actually notice them. * **Review notes before replying.** Check the last 2–3 notes at the top of the timeline before you send a response. ## Related docs * [Inbox Overview](/workspace/inbox/overview) * [Conversation View](/workspace/inbox/conversation-view) * [Conversation List & Controls](/workspace/inbox/conversations-list) * [Contacts](/workspace/contacts/overview) * [Event Studio](/workspace/events/overview) * [Pipelines](/workspace/pipelines/overview) # Inbox Source: https://docs.xpressbot.org/workspace/inbox/overview Handle every conversation in one place — assign, reply, and track context across WhatsApp, Instagram, and Web Chat. # Inbox The Inbox is where live work happens. All channels feed into one queue so your team can see what's incoming, pick up the right conversations, and reply with full context. Inbox workspace ## At a glance * **One queue for every channel** — WhatsApp, Instagram, and Web Chat conversations appear together so nothing is missed. * **Clear ownership** — assign each conversation to one teammate to avoid duplicate replies. * **Full context in the thread** — messages, system actions, [Event Studio](/workspace/events/overview), and internal [Notes](/workspace/inbox/notes) appear together. * **Fast reply tools** — templates, media, and quick actions are available without leaving the conversation. ## How Inbox is organized Inbox is built around four areas that work as a single workflow: | Area | What it does | | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | | **Conversation list** | Your working queue. Scan unread, recent, and assigned conversations. See [Conversation List](/workspace/inbox/conversations-list). | | **Filters and search** | Narrow the queue by assignment, status, label, or keyword. See [Conversation Controls](/workspace/inbox/conversations-controls). | | **Active conversation view** | Read history, check contact details, and review Events and Notes. See [Conversation View](/workspace/inbox/conversation-view). | | **Reply composer** | Send messages, attach files, and use templates. | Together they keep you in one screen from triage to resolution. Read history, check context, and reply. Leave internal context that only your team sees. See the activity trace behind each conversation. Quality-check completed work after the fact. ## Good habits * **Filter first on busy queues.** Start with *Unassigned* or *Open* before scanning — you'll find urgent conversations faster. * **Read before you type.** Check the last 2–3 messages plus any Notes and recent Events before replying. * **Keep one owner per conversation.** If you pick it up, assign it. If you hand it off, add a [Note](/workspace/inbox/notes) — *"Customer requested callback after 5 PM."* * **Use templates deliberately.** Choose the template that matches the intent; don't send a generic reply that misses the question. * **Organize with labels.** Use [Labels](/workspace/contacts/labels) and [Custom Fields](/workspace/contacts/custom-fields) so campaigns and automations can act on the same segmentation you see in Inbox. ## Why Inbox matters Without a single Inbox, conversations are scattered, ownership is unclear, and follow-ups get lost. With Inbox, your team gets centralized communication, faster response times, and a shared view of what happened and what to do next — with [Pipelines](/workspace/pipelines/overview) tracking business progress in parallel. ## Related docs * [Conversation View](/workspace/inbox/conversation-view) * [Conversation List](/workspace/inbox/conversations-list) * [Conversation Controls](/workspace/inbox/conversations-controls) * [Notes](/workspace/inbox/notes) * [Event Studio](/workspace/events/overview) * [Pipelines](/workspace/pipelines/overview) * [Review](/workspace/review/overview) * [Contacts](/workspace/contacts/overview) * [Automation](/workspace/automation/overview) * [Channels](/workspace/channels) # Instagram insights Source: https://docs.xpressbot.org/workspace/instagram/instagram-insights Instagram Insights gives you performance visibility for your connected Instagram activity. ## What you can review * Engagement and activity trends. * Response and interaction volume. * Channel-level performance over time. ## Best practice * Compare Insights data with campaign or support activity so performance changes have context. # Instagram publishing Source: https://docs.xpressbot.org/workspace/instagram/instagram-publishing Instagram Publishing is used for creating and managing publish actions tied to your Instagram integration. ## What you can do * Prepare publishing content. * Schedule or manage publishing tasks. * Review publishing workflow status. ## Best practice * Verify permissions and connected assets before relying on scheduled publishing. # Instagram user interaction Source: https://docs.xpressbot.org/workspace/instagram/instagram-user-interaction User Interaction focuses on conversations and engagement actions that come from Instagram. ## What you can do * Review Instagram conversation activity. * Track customer engagement flows. * Manage follow-up handling for Instagram-origin traffic. ## Best practice * Align Instagram handling rules with your main Inbox workflows so replies stay consistent. # Overview Source: https://docs.xpressbot.org/workspace/instagram/overview Instagram brings together the Instagram-specific tools used to monitor activity, manage user interactions, and handle publishing workflows for connected Instagram channels. ## What this section covers Use **Instagram** for three main jobs: * review performance and activity in Insights * manage channel-specific user interaction flows * work with publishing operations where applicable This section should be treated as the Instagram operating layer, not just a reporting view. ## Main pages in this section * [Insights](/docs/instagram-insights) * [User Interaction](/docs/instagram-user-interaction) * [Publishing](/docs/instagram-publishing) ## Recommended workflow ### 1. Start with performance visibility Use Insights to understand what is happening on the connected Instagram channel before you make operational changes. ### 2. Review user interaction behavior User Interaction is where teams should look when they need to understand how people are entering the conversation flow, responding, or interacting with Instagram-driven messaging. ### 3. Use publishing deliberately Publishing belongs in a planned workflow. It should support brand activity, not create disconnected content operations outside the rest of the workspace. ## Good operating habits * Keep Instagram work tied to the correct channel. * Review interaction patterns before changing automation or response logic. * Use publishing and interaction workflows together when managing response quality. * Keep troubleshooting separate from content planning so issues are easier to isolate. ## Related docs * [Channels](/docs/channels) * [Inbox](/docs/inbox) * [Automation](/docs/automation) # Support Source: https://docs.xpressbot.org/workspace/support The Support section allows users to raise and track issues through tickets. It is designed to ensure problems are reported clearly and resolved efficiently. Image *** ## Create New Ticket Users can submit a new support request using the ticket form. ### Fields * **Title**\ A short summary of the issue. * **Description**\ Detailed explanation of the problem.\ Screenshots or additional context can be added. * **AI Rewrite (optional)**\ Helps refine or improve the description for clarity. * **Priority**\ Defines the urgency of the issue: * Low * Medium * High *** ## How to Create a Ticket 1. Click **Create Ticket** 2. Enter a clear title 3. Provide a detailed description 4. Set the appropriate priority 5. Submit the ticket *** ## Best Practices * Keep the title short and specific * Include steps to reproduce the issue * Attach screenshots when possible * Set priority based on urgency, not importance * Avoid vague descriptions *** ## What Happens Next * The ticket is submitted to the support team * It is reviewed and prioritized * Updates may be shared based on progress * The issue is resolved and closed *** ## Related Docs * [Inbox](/docs/inbox) * [Team Management](/docs/team-management) * [Channels](/docs/channels) # Team Source: https://docs.xpressbot.org/workspace/team Team Management is used to control users, roles, and access permissions across the platform. It ensures the right people have access to the right features. ## Team Members The Team Members tab shows all users added to the workspace. ### What users can do * View all team members * Check role and status * See last active time * Add new members * Edit or remove existing members ### Key fields * **Member** — Name and email * **Role** — Assigned role (e.g., Team, Admin) * **Status** — Active or inactive * **Last Active** — Most recent activity timestamp *** ## Add / Manage Members Users can add new members and assign roles. Image ### Actions available * Add member (based on plan limits) * Edit user details * Update permissions * Remove access > Member limits may depend on the subscription plan. *** ## Permissions Permissions define what each team member can access and control. ### Available permission groups * General Settings * Manage Settings * Manage Inbox * Manage Contacts * Manage Campaigns * Manage Automations * Manage Templates * Manage Labels * Manage File Manager * Manage Web Chat * Manage Google * Manage Instagram * Manage Catalogs * Manage Team * Manage Tickets Support * View Analytics Each permission can be enabled or disabled based on the role. Image *** ## How Permissions Work * Permissions are assigned per user * Each toggle controls access to a specific module * Disabled permissions restrict visibility and actions *** ## Activity Logs The Activity Logs tab tracks actions performed by team members. ### What it helps with * Monitor user activity * Track changes and updates * Maintain accountability *** ## Recommended Workflow 1. Add team members based on roles 2. Assign only required permissions 3. Review permissions periodically 4. Monitor activity logs for usage and changes *** ## Best Practices * Follow least-access principle (only give needed permissions) * Avoid giving full access to all users * Review inactive users regularly * Keep ownership clear for critical workflows *** ## Related Docs * [Inbox](/docs/inbox) * [Channels](/docs/channels) * [Analytics](/docs/analytics) * [Automations](/docs/automations) # Transactions Source: https://docs.xpressbot.org/workspace/transactions Transactions shows the billing activity that belongs to the current workspace user context. Image ## What you can do * Review payment history. * Check successful, pending, or failed transaction records. * Use the page for invoice and payment confirmation follow-up. ## Best practice * Match transaction dates with plan or credit activity when investigating billing questions. # Overview Source: https://docs.xpressbot.org/workspace/web-chat/overview Web Chat is the website messaging section. It covers the widget experience shown to visitors, the way operators monitor live website conversations, and the knowledge-base content that supports self-service inside the chat flow. ## What this section includes The Web Chat section is organized around: * the chat widget builder * live monitoring * knowledge base setup These tools work together. The widget controls the customer-facing experience, monitoring helps operators manage live activity, and the knowledge base supports faster answers inside the chat journey. ## Main pages in this section * [Chat Widget](/docs/widget-builder) * [Live Monitoring](/docs/widget-builder-monitoring) * [Knowledge Base](/docs/widget-builder-kb) ## Recommended workflow ### 1. Configure the widget Set the widget identity, brand presentation, layout, and behavior so the chat experience matches the site where it will appear. ### 2. Publish the install code Once the widget is configured, use the generated installation code on the website where chat should appear. ### 3. Monitor live usage Use monitoring to observe live visitor activity and confirm the widget is working as expected in production. ### 4. Maintain knowledge content If the widget uses a help or self-service layer, keep the knowledge content current so users can find useful answers quickly. ## Good operating habits * Keep the configured domain and widget install target aligned. * Test the widget on the live site after every major configuration change. * Review live monitoring after release to catch issues early. * Keep knowledge-base content short, current, and operationally useful. ## Related docs * [Channels](/docs/channels) * [Inbox](/docs/inbox) * [Widget Builder](/docs/widget-builder) # Widget builder Source: https://docs.xpressbot.org/workspace/web-chat/widget-builder Build and customize web chat widgets for your website with drag-and-drop builder. ## Overview Widget Builder allows you to: * Create custom chat widgets * Customize appearance * Configure behavior * Deploy to websites * Track performance ## Getting Started 1. Navigate to **Widget Builder** 2. Click **Create Widget** 3. Choose starting template 4. Customize appearance 5. Configure behavior 6. Deploy to website ## Design Customization ### Color Theme 1. Open widget settings 2. Click **Colors** 3. Customize: * Primary color * Secondary color * Text color * Background 4. Apply theme ### Font & Typography 1. Go to **Fonts** 2. Choose font family 3. Set sizes 4. Adjust line height 5. Save styles ### Widget Size 1. Open **Dimensions** 2. Set: * Width (px or %) * Height * Position (bottom-right, etc) 3. Preview on device sizes ## Behavior Configuration ### Welcome Message 1. Click **Welcome** 2. Enter greeting text 3. Add emoji or image 4. Set auto-show delay 5. Save ### Operating Hours 1. Go to **Hours** 2. Set business hours 3. Add offline message 4. Enable auto-reply 5. Save ### Notifications 1. Click **Notifications** 2. Enable sound alerts 3. Set notification text 4. Configure desktop alerts 5. Save ## Advanced Features ### Custom Fields Collect information from visitors: 1. Click **Forms** 2. Add custom fields 3. Set required fields 4. Add validation 5. Save ### Automated Messages 1. Go to **Automations** 2. Create triggers 3. Set messages 4. Configure delays 5. Activate ### Routing 1. Click **Routing** 2. Set department/team 3. Configure queue 4. Set SLAs 5. Save ## Integration ### Get Installation Code 1. Click **Deploy** 2. Copy script tag 3. Add to website HTML 4. Before `` tag 5. Publish ### Supported Platforms * Websites (HTML/CSS/JS) * WordPress * Shopify * Webflow * Custom CMS ## Testing ### Preview Widget 1. Click **Preview** 2. Test on desktop 3. Test on mobile 4. Test on tablet 5. Verify all features ### Send Test Message 1. Open preview 2. Send test message 3. Verify in dashboard 4. Check notifications 5. Confirm delivery ## Analytics ### Widget Performance 1. Navigate to **Analytics** 2. View: * Impressions (views) * Conversations started * Average response time * Satisfaction rating 3. Export data ## Best Practices * Match brand colors * Keep welcome message short * Test on all devices * Monitor satisfaction ratings * Update messages regularly * A/B test designs * Track conversion metrics # Widget builder kb Source: https://docs.xpressbot.org/workspace/web-chat/widget-builder-kb Knowledge Base is used to manage the content that supports website chat and automated answers. ## What you can do * Add knowledge sources used by the web chat experience. * Organize information for faster automated retrieval. * Maintain clear content for support and sales questions. ## Best practice * Write short, direct, product-specific answers. * Review outdated entries regularly. # Widget builder monitoring Source: https://docs.xpressbot.org/workspace/web-chat/widget-builder-monitoring Live Monitoring gives a real-time view of website chat activity connected through your widget setup. ## What you can do * Monitor active chat activity. * Watch incoming traffic and interaction volume. * Spot live issues during campaigns or peak traffic windows. ## Best practice * Keep this page open during launches, seasonal spikes, or major support events # Campaigns Source: https://docs.xpressbot.org/workspace/whatsapp/campaigns Create and manage large-scale campaigns to reach your entire audience at once. ## Create a Campaign 1. Go to **WhatsApp** → **Campaigns** 2. Click **New Campaign** 3. Select campaign type: * **Text Message**: Simple text broadcasts * **Template Message**: Use pre-approved templates * **Media Campaign**: Images, videos, or documents 4. Enter campaign name and description 5. Select target audience or segments ## Audience Selection ### Broadcast to Everyone * Send to all contacts in your database * Message all subscribers ### Segment by: * **Tags**: Target contacts with specific tags * **Labels**: Send to specific labels * **Last Activity**: Recent/inactive contacts * **Custom Filters**: Create custom audience segments * **Uploaded List**: Import CSV with phone numbers ## Schedule Campaign 1. Choose delivery time: * **Send Now**: Immediate delivery * **Schedule**: Pick date and time * **Recurring**: Daily, weekly, or monthly 2. Set timezone for recipients 3. Review schedule summary ## Template Selection 1. Choose from approved WhatsApp templates 2. Add dynamic parameters if needed 3. Preview message rendering 4. Confirm template details ## Preview & Launch 1. Review campaign details: * Recipient count * Message preview * Delivery schedule 2. Click **Launch Campaign** 3. Monitor campaign analytics in real-time ## Campaign Analytics Track performance metrics: * **Delivered**: Number of messages delivered * **Read**: Number of messages read * **Replies**: Customer responses * **Failed**: Undelivered messages * **CTR**: Click-through rate (if using CTAs) ## Best Practices * Use templates for better deliverability * Schedule campaigns during business hours * Test with small segment first * Personalize messages with dynamic content * Monitor unsubscribe rates * Avoid sending too frequently # Catalog Source: https://docs.xpressbot.org/workspace/whatsapp/catalog Catalog is used to configure the commerce-side experience for a WhatsApp channel. ## What you can do * Configure storefront settings and custom domains. * Manage checkout, shipping, tax, payment, and business details. * Control catalog-facing content like support and legal pages. ## Best practice * Finalize product and checkout settings before attaching a public domain. * Verify domain DNS and SSL after any domain change. # Flow Source: https://docs.xpressbot.org/workspace/whatsapp/flow WhatsApp Flows lets you design structured interactive journeys for capture, routing, and guided actions. ## What you can do * Build step-based conversation experiences. * Collect inputs in a guided sequence. * Reuse flows in campaigns, automations, or support entry points. ## Best practice * Keep flows short and goal-oriented. * Review user drop-off points regularly. # Message logs Source: https://docs.xpressbot.org/workspace/whatsapp/message-logs Access complete message history and detailed logs for all conversations. ## Overview Message Logs provide: * Complete message history * Detailed delivery status * Recipient information * Timestamp tracking * Error details * Export capabilities ## View Message Logs 1. Navigate to **Message Logs** 2. See all messages with: * Timestamp * Recipient * Channel * Status * Content preview 3. Click message for details ## Filter Messages ### By Status * **Sent**: Delivered to platform * **Delivered**: Reached recipient * **Read**: Customer opened * **Failed**: Delivery issue * **Pending**: In queue ### By Channel * WhatsApp * Telegram * Instagram * Web Chat * Email * SMS ### By Date Range * Today * Yesterday * This week * This month * Custom range ## Search Messages ### Quick Search 1. Click search bar 2. Enter: * Contact name or number * Message content * Date 3. Results appear instantly ## Message Details View complete message info: * Sender and recipient * Exact timestamp * Delivery status * Read status * File attachments * Full content * API response (if API sent) ## Export Logs ### Download as CSV 1. Select messages or date range 2. Click **Export** 3. Choose **CSV** 4. Download file 5. Open in spreadsheet ### Download as PDF 1. Select messages 2. Click **Export** 3. Choose **PDF** 4. Download formatted report ## Troubleshoot Failed Messages ### Find Failed Messages 1. Filter by status: **Failed** 2. View error details 3. Check error reason 4. Retry sending (if available) ### Common Error Reasons * **Invalid number**: Phone number format issue * **No internet**: Network error * **API error**: API service issue * **Rate limit**: Too many requests * **Blocked**: Contact blocked you * **Service issue**: Provider outage ## Archive Messages Keep logs organized: 1. Select old messages 2. Click **Archive** 3. View archived logs separately 4. Restore if needed ## Retention Policy Message logs retained: * **Active messages**: Unlimited * **Archive**: 2 years * **Auto-delete**: Never (unless manually deleted) ## API Integration If using API: * See API request logs * View request/response * Debug API issues * Monitor rate limits ## Best Practices * Regularly archive old logs * Monitor failed message rates * Review error patterns * Use logs for compliance * Export periodic reports * Track message trends # Overview Source: https://docs.xpressbot.org/workspace/whatsapp/overview WhatsApp groups the tools used to manage WhatsApp operations across outbound communication, catalog-linked messaging, structured templates, flow experiences, and delivery review. ## What this section includes The WhatsApp area connects the main working pages for: * campaigns * templates * catalog * WhatsApp flows * message logs It also now includes troubleshooting pages for: * [Template Related Issues](/docs/whatsapp-template-issues) * [Message Related Issues](/docs/whatsapp-message-issues) * [WhatsApp Errors](/docs/whatsapp-errors) ## Navigation inside this section * [Campaigns](/docs/campaigns) * [Templates](/docs/templates) * [Catalog](/docs/catalog) * [WhatsApp Flows](/docs/flow) * [Message Logs](/docs/message-logs) * [Issues and Errors](/docs/whatsapp-issues) ## How teams usually use WhatsApp in the app ### Templates first Templates are the structured messages used for approved outbound communication. If your outbound workflow depends on templated messaging, this is usually the first dependency to validate. ### Campaigns for outreach Once templates are ready and audiences are prepared, campaigns are used to send outbound communication at scale. ### Catalog and flows for richer journeys Catalog and flow tools support more guided or product-linked WhatsApp experiences. Use them when the conversation needs more than plain back-and-forth messaging. ### Message logs for verification Message Logs is where teams confirm delivery behavior, review failures, and validate whether a send event actually moved through the channel as expected. ## Recommended operating flow 1. Confirm the active channel is the correct WhatsApp channel. 2. Prepare or validate templates. 3. Build campaign or flow logic if the use case needs it. 4. Send in a controlled way. 5. Review Message Logs and troubleshoot failures quickly. ## When to use the troubleshooting pages Use the troubleshooting docs when: * a template is not behaving as expected * messages are not sending or delivering correctly * the channel returns operational or provider-side errors Those pages should be the first place your operators go before escalating the issue. ## Related docs * [Channels](/docs/channels) * [Inbox](/docs/inbox) * [Campaigns](/docs/campaigns) * [Templates](/docs/templates) * [Catalog](/docs/catalog) * [WhatsApp Flows](/docs/flow) * [Message Logs](/docs/message-logs) # Templates Source: https://docs.xpressbot.org/workspace/whatsapp/templates Create, manage, and use pre-approved WhatsApp message templates for consistent communications. ## Getting Started WhatsApp templates allow you to: * Create pre-approved message templates * Use dynamic variables for personalization * Maintain brand consistency * Improve delivery rates * Track template performance ## Create Template ### Template Structure A template consists of: * **Header** (optional): Image, video, or document * **Body**: Main message text (up to 1024 characters) * **Footer** (optional): Additional text (up to 60 characters) * **Buttons** (optional): Quick reply buttons or CTA buttons ### Create New Template 1. Go to **Templates** 2. Click **Create Template** 3. Fill in template details: * Name: Unique template identifier * Category: Select category (Marketing, OTP, etc.) * Header: Optional media * Body: Message content with variables * Footer: Optional footer text * Buttons: Add action buttons 4. Review preview 5. Click **Submit for Approval** ### Template Variables Use variables for dynamic content: ``` Hi {{name}}, your order {{order_id}} is ready! ``` Variables reference contact custom fields: * `{{name}}` - Contact name * `{{email}}` - Contact email * `{{company}}` - Company name * Or any custom field ## Template Categories Choose appropriate category: * **Marketing**: Promotions and campaigns * **OTP**: One-time passwords and verification * **Transactional**: Order confirmations, receipts * **Notification**: Updates and alerts * **Account Updates**: Password resets, account changes ## Approval Process 1. Submit template 2. WhatsApp reviews (usually 24 hours) 3. Status changes to: * **Approved**: Ready to use * **Rejected**: Update and resubmit * **Pending**: Under review ## Manage Templates ### View Templates 1. Go to **Templates** 2. See all templates with status 3. Filter by status or category ### Edit Template 1. Find template 2. For **Pending** templates: Can edit and resubmit 3. For **Approved** templates: Create new version 4. For **Rejected** templates: Edit and resubmit ### Delete Template 1. Open template 2. Click **Delete** 3. Confirm action ## Use Templates in Campaigns 1. Create campaign 2. Select **Use Template** 3. Choose approved template 4. Map variables to fields 5. Send ## Template Performance Monitor template metrics: 1. Go to **Analytics** → **Templates** 2. View: * Usage count * Delivery rate * Read rate * Reply rate ## Best Practices * Keep templates concise * Test before campaigns * Categorize appropriately * Update based on performance * Respect rate limits * Include clear call-to-action * Avoid promotional language in OTP # Whatsapp errors Source: https://docs.xpressbot.org/workspace/whatsapp/whatsapp-errors WhatsApp Errors is the troubleshooting reference for platform and Meta-side WhatsApp failures. ## Common error areas * Authentication or token issues. * Template restriction errors. * Rate-limit or throughput issues. * Invalid recipient or unsupported destination errors. * Media fetch or upload failures. ## Best practice * Check the exact error code and message logs together. * Confirm whether the problem is channel-specific or system-wide. * Re-test after credential refresh or reconnection before escalating. # Whatsapp message issues Source: https://docs.xpressbot.org/workspace/whatsapp/whatsapp-message-issues This page covers common WhatsApp message delivery and rendering problems. ## Common issues * Message sent but not delivered. * Delivered but not read. * Template messages failing while session messages work. * Media messages failing because of file format or size. * Wrong recipient or unsupported phone-number formatting. ## What to check * Review message logs first. * Confirm the channel is active and connected. * Check whether the message used a template or session path. * Verify phone number formatting and media constraints. # Whatsapp template issues Source: https://docs.xpressbot.org/workspace/whatsapp/whatsapp-template-issues This page explains the common problems that happen with WhatsApp templates. ## Common issues * Template not approved yet. * Template rejected by Meta review. * Wrong variable count or variable formatting. * Category or language mismatch. * Template synced in Meta but not visible in the app yet. ## What to check * Confirm the template status in Meta and in the app. * Check placeholders and variable ordering. * Re-sync templates if approval was recent. * Verify the channel is the correct one before debugging.